HNHacker News
TopNewBestAskShowJobs

paxcoder

411 karma · joined September 29, 2011

I remain banned for not giving up discussing religion. Your ability to judge some of my contributions may be hindered, depending on your "showdead" setting. Beware of this unspoken policy if you're weighing contributing to this site.
submissionscomments
paxcoder··on Cross platform GUIs and Nim macros
I wasn't talking generally but I'm interested to hear about any purported benefits of conflated responsibilities.
paxcoder··on Cross platform GUIs and Nim macros
Where do you see behavior mixing with presentation in wxnim's GenUI? The only thing that the macro is used for, besides saying what to draw and how, is to define events that the elements emit.
paxcoder··on I'm making 30 VR projects in 30 days to learn
I don't see the patch, do you?
paxcoder··on Unconventional way of learning a new programming language
That's not it, see my reply to adamnemecek.
paxcoder··on Unconventional way of learning a new programming language
NOTE: I've started with 2nd person (to match the article, be more personal and appeal to the reader's conscience), so I'll be sticking with "you" instead of "the contributor".

If you're unfamiliar with programming language idioms, it is likely that your (ultimate, approved) contribution may not be be worth the time and the effort that has been put into guiding you to it. The help may instead have been given to you in hopes that it will pay off with your future contributions. If your only or main motivation is to learn a programming language, there's a greater chance that there won't be any.

Contributing out of sheer sense of obligation is hard. Even worse, it may so happen that you realize that you don't even like the language. Not only is the the time invested in teaching you the project a waste for the project, but the teaching you the language was not beneficial for other projects written in the same language. To stay interested in a project, you should be certain of your interest in some thing intrinsic to the project.

At least be very frank and clear about your intentions.

paxcoder··on I'm making 30 VR projects in 30 days to learn
What's holding the camera in the day 2 project?
paxcoder··on Unconventional way of learning a new programming language
TL;DR: Contribute to "open source"

>[code review feedback] is like getting a free-of-cost personal guidance about how to write good code

It's not free for the reviewer who's trying to safeguard project quality. If they're investing in you, it's likely under the assumption that you'll contribute back. If you don't, then you're just crowdsourcing and then running off with the ill-gained knowledge, possibly having had a negative impact on the project.

paxcoder··on The Mumps Programming Language
Clever. By "built-in" I didn't mean just "available" as through an API to a third party library (which is a full blown DBMS in your first suggestion), I meant "integrated" as common types are (and lightweight)
paxcoder··on Chromium: Add support for Animated PNG
So Firefox, Safari and now Chrome. Provided image hosting sites start accepting APNG this may finally mean the end of GIF. Why now though?
paxcoder··on Why companies don't do GPL enforcement
>get [people] to come around gently

That's GPL enforcement.

This is mostly how FSF, SFLC et al do it and they win battles. Recently they're actually waging a legal one against VMWare but I don't see the company deterred from contributing as much as they did before. Would be nice if they contributed more.

I don't think we should care about proprietary makers' feelings here. What hurts free software more is FUD and villification of copyleft.

paxcoder··on πfs – A data-free filesystem
I don't think any forum would allow you to post the location index simply because it would take too much space to store it.
paxcoder··on The Mumps Programming Language
>After a year of M, JS was comparatively touchingly beautiful

That's all the convincing I'd ever need. Though having a built-in optionally-persistent B-tree-based store sounds interesting.

paxcoder··on VMware joins Linux Foundation: what about the GPL?
I asked why anyone would think that vmklinux (the linux derivative) and vmkernel were independent.

Please refer to the quote from the license I've provided, and belorn's thought experiment here.

paxcoder··on VMware joins Linux Foundation: what about the GPL?
I didn't study the busybox connection, but why would anyone think vmkernel and vmklinux could be "reasonably considered independent and separate works in themselves" especially considering the source from the sfconservancy site linked to in the article?
paxcoder··on Writing good code: how to reduce the cognitive load of your code
If anything, NULL's opacity is another argument for doing the comparison. NULL is guaranteed not to equal any pointer to an object/function, and the result of the comparison will be an int 0 or 1.
paxcoder··on Writing good code: how to reduce the cognitive load of your code
To paraphrase the comment above that line, they say its purpose is to avoid accidental assignment. That's not an issue with "not equals" though, but that may just be their point.

As for whether it's more readable, I'm skeptical: It may save you going through some of the condition, but I believe getting used to it would make you more likely to overlook parts of the condition. Plus, the way it reads is the opposite of how you'd say what it does in English.

F̶i̶n̶a̶l̶l̶y̶,̶ ̶o̶b̶s̶c̶u̶r̶e̶ ̶a̶r̶c̶h̶i̶t̶e̶c̶t̶u̶r̶e̶s̶ ̶m̶a̶y̶ ̶d̶e̶f̶i̶n̶e̶ ̶a̶ ̶n̶o̶n̶-̶z̶e̶r̶o̶ ̶N̶U̶L̶L̶ (see to3m's reply). Using NULL makes it easier to find null pointer checks and conveys semantics (pointer vs integer).

paxcoder··on Is naming things really that hard?
My eyes would glaze over those self-documenting names were it not for your comment(!)
paxcoder··on NASA's Software Catalog
Obligatory: NOSA is not a free software license.

Details at https://www.gnu.org/licenses/license-list.html#NASA

paxcoder··on FIQL: The Feed Item Query Language (2007)
Their question had an emphasis on "just", not on "sounds".
paxcoder··on I miss Delphi
I'm all for building tools to explore CS. However I believe the question they responded to expected a replacement for what I understand to be a very "pragmatic" development environment.
paxcoder··on I miss Delphi
The world is big; you can find a few people doing whichever thing, even if weird. But unlike free software developers, companies are still mostly local (as opposed to remote). That's why I'm guessing you're indulging your intellect with these projects rather than building tools to support commercial software development. To be specific, I'd have a hard time imagining a "difficult problem" for which Forth would be the solution. As for Lisp, I realize Clojure is pretty successful, but my best guess for the reason is the JVM.
paxcoder··on Programmers are confessing their sins to protest a broken job interview process
>build me X

Pay me

paxcoder··on I miss Delphi
Don't know how to put this... The tech/tools you enumerate give me the impression that your problems are not directly related to (commercial) software development.
paxcoder··on A cartoon intro to WebAssembly
Surely they're not chasing native just for games
paxcoder··on A cartoon intro to WebAssembly
>Some applications of WebAssembly may be held up until [direct access to DOM] is resolved."

I don't know what number crunching web applications the vendors are thinking of. I want wasm for client-side web programming without JS.

paxcoder··on ParTcl – a micro Tcl implementation
>In other words, even if we agree that static typing has a positive effect on some metric (like number of bugs) it's not going to move the discussion forward.

I believe it would. Agreeing on the objective would allow us to understand the situation-dependent trade-offs, and help us to agree to disagree on subjective.

>> Conversely, it is not a matter of opinion that dynamic languages allow patterns that static typing does not (eg. duck typing[sic]).

>Not a very good example, actually there are static type systems which use structural typing to allow for type-safe duck typing. Examples are Opa with its Power Rows, OCaml with its polymorphic variants and others.

As you've said, it's still static typing, whether the types are explicit or not. Duck typing allows things to learn to quack at runtime, structural typing doesn't enable that.

>in the worst case you can write an intepreter

If you create a dynamic language, then you're using a dynamic language. Please no more Turing equivalence.

>Given that, per the paper above, we have no hard data on how exactly static typing (much less on a dynamic typing techniques...) affects the metric we're interested in, the answer to the question is - again - a matter of personal opinion.

I'm sure there is some hard data somewhere. But I like strong indications as well to decide what may be worth investigating.

>> These are objective arguments we can discuss, and weigh against each other. There are even studies that we can throw in here.

>I'm sorry, but I'd like to trouble you to provide such papers; as you can see above my quick search returned somewhat different results.

I thought I could humor you relatively easily, but my results matched yours - conclusive research on the general question seems elusive (see eg https://danluu.com/empirical-pl/). I cede the point, I'll try to pay more attention from now on.

>The trend of "mainstream" moving to static typing is visible, but it's important to note that the same trend was observed more than once in programming history already. In all the previous cases it reversed (to dynamic typing) after ten to fifteen years.

"Reversal" here seems to imply a return to a default. On the contrary, I can't say definitely that there was a time when dynamic languages ruled the mainstream.

>Your original thesis was that static typing is an overall win over dynamic typing. I already managed to convince you that this is not the case: you admit that there are techniques hard to pull off in a statically typed language. To me, that's enough.

I'm afraid my stance remained the same: I consider any advantages of dynamic languages not worthy the disadvantages. For example, the technique of duck typing counts as one of the things I said I avoided in the hybrid language I use even though it can't do structural typing. What did change is my assumption that my stance is anywhere close to being scientifically proven.

>[My MUD with dynamically reloadable objects is] just an anecdote, but it's an example of a project where dynamic, dynamically typed language is a clear win over a static, statically typed one.

Yay, a use-case! Please provide some concrete examples. Since your case is pretty niche I hope we'll be able to generalize it to say, eg. "Reloading systems is bad, availability is good", and then contrast how what happens behind the scenes to facilitate that in a dynamic language differs from what happens when you use modules or services (other than ease of use, which is a valid argument itself). Thanks.

P.S. I realized I've mangled that medium. I really hope you won't insist I read the whole thing though. It sounds too subjective from what I've read.

paxcoder··on Learning from Terminals to Design the Future of User Interfaces
I like snappy as much as the next guy. But then I switch to another UI and find myself delighting in animations (the very ones the author deprecates). Animation disguise loading times or make them more bearable. They're useful for conveying semantics of actions and relationships. If you choose animations thoughtfully and time them well or make them opt-out, there shouldn be no problem.

I'd also like to address "big fonts": I grew up with UIs from the turn of the millenium and back then I thought professional software had to show a lot of things on the screen and have extensive menus. But I also noticed I could burn a CD much more easily using a free wizard-like version of the burning program than the paid full version. Thanks to mobile, at the price of shortening applications to apps, the world got easier, friendlier, cleaner UIs. While we previously thought that reducing the font size on our websites made them look cooler, now we saw that using big fonts we could make text look good while actually being radable.

So let us not go back to terminals maybe. Let us use the right (visual) tool for the right job.

paxcoder··on ParTcl – a micro Tcl implementation
I recognize that we can have different goals, and you may value flexibility over safety. However, it is not a matter of opinion whether software safety (and therefor availability) benefits from checks performed before run-time. Conversely, it is not a matter of opinion that dynamic languages allow patterns that static typing does not (eg. duck typing[sic]). These are objective arguments we can discuss, and weigh against each other. There are even studies that we can throw in here.

>> Nowadays I see no notable arguments for dynamically typed programming languages. >A quick Google brought up an article from Dec 2016: https://medium.com/javascript-scene/you-might-not-need-types....

I glanced over it the other day and wasn't very interested. I wanted to give it a more thorough look before I replied to you, but it seems it got pulled. looks meaningfully

>What about Elixir and Clojure?

I see your Erlang dialect Elixir with Elm (arguably a dialect of ML). The Lisp Clojure is itself a bit older dialect of Lisp, so maybe Scala for that? I think Lisp and Erlang are mostly about the paradigm and concepts, not about being dynamic, what do you say? Talking about the JVM, I'll raise you a Kotlin. Also noteworthy is that Groovy got static type checking with v2. As for the CLR, I must say I don't know that much have changed since F# (a dialect of ML). Basically, you've had a nice pair of cards, but they make your hand. What I'm trying to reiterate is that there seems to be a definite trend towards types.

>Turing-complete[ness]

:/

>Racket contracts [...] providing the safety guarantees in [dynamic and static] worlds.

You didn't explain what they were, so I'll assume they're runtime guards. That means they're as useful as explicit runtime checks, but don't provide safety a static type checker would provide.

> Dialyzer is a static type checker, which only rejects programs it knows for sure will result in error. Traditional type systems require the programmer to supply the proof that the code is correct and will refuse to type check without one.

So weak (algebraic data) type inference? That's better than no checking. Now as far as weak vs strong typing goes, I'll agree to disagree about type coercion here. My default is maximum safety, but I won't claim that there are absolutely no domains where explicit conversions are a "pain" without much advantage. The suspicion that there might be some was the reason for my original challenge. I really wish someone would think that through and try and convince me.

>I mentioned Forth and Assembly because these are the only languages I know of (TCL may also qualify) which are truly unityped. I suppose you'd like dynamic typing more after working with something which lacks any kind of types.

I've worked with multiple assembly languages. An assembly programmer might use your "correct programs" argument and say: "Run-time checks are a pain; I don't want to check if quacking is an option, I know something clever will happen if you just jump; don't crash my program, it's correct!". I think this a valid argument only if the check overhead is prohibitively great. But what's prohibitive about compile-time checking? Time before you can run? You can reduce that with, say, incremental compilation. Don't allow certain bug types(pun) to go unnoticed and crash your program instead. It may not be as bad as what assembly would do, but it's still catastrophic.

>the most accurate auto-complete you've ever seen: at any point, you know exactly which classes have which methods.

I have that even when the program's not running :P

>Well, in any case, you shouldn't wait to "get convinced" by someone. You should try to learn the dynamic typing side of things on your own and use it for a while. It will make you a better programmer overall, even if you get back to static typing later.

I don't know why you assume my ignorance. I've used dynamically typed languages, I've studied the concepts, it's even possible I've seen the very Smalltalk talk you were thinking about before. I choose to avoid the dynamic capabilities of my otherwise statically typed language that I use at work. I'm still open to the possibility that there's gold buried somewhere, but I am not going dig just because you imply there is. People claim a lot of things are revolutionary which aren't. Give me an example why you say something's good, convince me it's worth my time. I do the same.

My invitation to provide arguments, or a domain for dynamic languages still stands.

EDIT: (Do not read this if you are kilbertp) Shh, I'm actually watching a video on the Dialyzer now

paxcoder··on ParTcl – a micro Tcl implementation
I mean no offense to people who like dynamic typing. However, dynamic typing itself may just deserve to be dissed. But I'm not sure. So tell me if I'm wrong.

I probably shouldn't have used the word bubble, sorry. See my response to klibertp for hopefully some justification.

paxcoder··on ParTcl – a micro Tcl implementation
The popularity of dynamic typing, I think, was at its peak around 2010, mostly due to the purported rediscovery of the "good parts" of the only client-side language for the web, the unprecedented acceptance of Python by academia, and the popularity of Ruby on r..the web (but PHP as well). Around the time that asm.js started being discussed, however, the trend was reversed: Though it may have made the benefits of static typing obvious, need for speed wasn't what replaced the likes of CoffeeScript with the likes of TypeScript. As web applications became more complex, the old Large Systems called for safety guarantees. Industrial languages never even considered losing their types, while improving considerably by adopting functional concepts. Nowadays I see no notable arguments for dynamically typed programming languages. With the exception Fowler's 2005 testing argument being reiterated, static typing is no longer being challenged. The new kids: Go, Rust, Swift - they all indicate that the errors will not be left to the runtime (or the unit test). It seems to me that the advocacy has been reduced to voicing personal preferences. I may still provoke the bold claim of there being "severe failure of static typing", but without any arguments, the default today is going to be to discount the claim, on account of the probability that it has merits that outweigh type safety alone.

I have only used a JS live environment (the browser console) but I hope you have in mind something that my static language's debugger cannot do. I assume the next two languages are about reflection - I've done some. Finally, I'm unfamiliar with the Erlang's static analysis tool and I don't know Racket's contracts, but I'd like you to tell me how they differ and why you think they're better than my own.

← PreviousPage 3 of 10Next →