[0] https://www.youtube.com/watch?v=5qfIgCiYlfY&index=6&list=PLB...
1,132 karma · joined January 2, 2012
[0] https://www.youtube.com/watch?v=5qfIgCiYlfY&index=6&list=PLB...
Maybe we'll someday see the browser dethroned after all...
Or maybe they can, judging by the last MBP release. Hopefully they turn it around.
For other uses, [0].
[0] http://blog.sigfpe.com/2008/12/mother-of-all-monads.html?m=1
Couple of years ago I made Atea [0], a text-based note taking/TODO/time tracking app for MacOS. Since it stores everything in plain text files, synchronisation can be offloaded to Dropbox etc.
There's no sorting, attachments end everything else Collate offers, but I still use if for tracking time and managing projects.
The novelty has yet to wear off, there's really so much to learn.
However, I agree with the general sentiment of the responses here: if there's no passion, one can not really be good (at whatever, not only programming.)
Anyway, the author later says he just enjoys writing low-level C++ code, however unpractical this may be. In which case I don't really see the point of defending his choice.
Now of course everybody makes mistakes, but if you deliberately choose C when there are better options available then you should pay out of pocket for your buffer overflows and 0-day exploits.
Top-down doesn't mean that you have to model the universe first before getting to model your problem :)
ref <- newIORef 0
writeIORef ref 1
y <- readIORef ref
print y
> 1There you go, mutation in Haskell.
It's probably hard to see the benefits without having tried it first.
This [0] is one of the bigger Clojure projects I've done (around 2.5kloc), also without spec/schema, and I really didn't dare refactor much, even when having a clear understanding of how things could be done better. It was just too much work.
With types I'd go through 10 design iterations before settling for something I'm satisfied it, and even halfway through the project changing things radically isn't a problem (I've worked on a 50+ kloc Haskell backend service, and changing core data structures used pervasively throughout the codebase was a 10min job, literally.)
This seems to be a widespread sentiment.
In practice, I've found that prototyping anything remotely complex without types is so painful that I'd rather settle for an inferior design than trying to come up with the best possible abstraction.
In Haskell, I come up with a coherent skeleton without having to implement mundane details, hit a wall in the design space because of some case I didn't think of, come up with a better idea and then go back to the code and refactor with confidence. The type system always guarantees that my prototype is coherent as a whole. And I can do that dozens of times.
In Clojure, even with spec, I'd have to implement all my functions fully before being even able to test the design as a whole (sure, testing individual functions works fine in the REPL.) And after hitting a wall, having to reimplement everything every time is just too much work.
You can't tell from the type signature alone if a pure function uses ST though, so I'd say that counts as pure :)
For fragments of code where search is not needed this is just such a superior experience. I dream of some day being able to do the same in a code editor with i.e. diagrams in comments or graphical annotations right there in the code.
The same applies to writing code. Being able to visualize hard-to-describe concepts on a piece of paper makes the overall algorithm as well as early design mistakes and edge cases much more obvious.
When I'm writing just text (todo lists, product ideas, whatever) and being able to easily edit, archive or search through the text a normal editor is a much better choice, but I'm not gonna ditch paper anytime soon.
> I switch to the browser and sure enough, the whole thing works perfectly.
This is the general workflow in a typed language as well (i.e. PureScript, Elm) - you write some code and then fix the type errors in the editor - only that instead of running a couple REPL queries and just assuming that your app works, you really do have some hard guarantees in all edge cases, like no crashes, no type mismatches, logical coherency.
Most of the time this then means that the "app works".
The App Store has millions of apps. Who created those apps, if not pro users? Without the App Store, who would buy iPhones, iPads and iPods?
If Apple shit on the pro users they shit on themselves.