E
Enfranchised Mind
enfranchisedmind.com · Group blog · on HN since 2007
Programming blog on functional languages, static typing, concurrency and open source, with opinionated takes on Scala, Clojure and STM.
What HN saysCommenters debate its posts on STM versus message passing and on open source responsibility, and cite its writing on programmers and history.
36HN people shared it
13linked it in comments
44stories submitted
810story points
15 years agolast shared
2007people per year2026
Most-shared posts
- 1What is a functional programming language?4 people · 120 points · first shared 2009 · 33 comments on HN
- 2Scala is Not a Functional Programming Language3 people · 40 points · first shared 2009 · 8 comments on HN
- 3The problem with STM: your languages still suck3 people · 15 points · first shared 2009 · 2 comments on HN
- 4Dear User of My Open Source Project2 people · 70 points · first shared 2009 · 45 comments on HN
- 5Clojure won't win the battle but may win the war2 people · 65 points · first shared 2010 · 46 comments on HN
- 6Problems with Hash Tables2 people · 32 points · first shared 2010 · 30 comments on HN
- 7Programming Languages are PC OSs circa 19862 people · 23 points · first shared 2008 · 10 comments on HN
- 87 Actually Useful Things You Didn’t Know Static Typing Could Do2 people · 23 points · first shared 2008 · 3 comments on HN
- 9A defense of the GPL2 people · 10 points · first shared 2010 · 3 comments on HN
- 10Postgres for the win2 people · 9 points · first shared 2007 · 3 comments on HN
- 11Programming Doesn’t Suck Or At Least, It Shouldn’t2 people · 6 points · first shared 2009 · 1 comments on HN
- 12Problems with Hash Tables2 people · 4 points · first shared 2008 · discussion on HN
- 13Apple is just Microsoft with better marketing1 people · 147 points · first shared 2010 · 132 comments on HN
- 14Apollo 11 Dismembered1 people · 73 points · first shared 2009 · 49 comments on HN
- 151024 by 20121 people · 34 points · first shared 2009 · 4 comments on HN
What HN people wrote when they linked it
Hoff · 2011-08-23
STM and locks have some interesting clean-up and (as is cited in the article) you really need for it not to crash and not to deadlock or go all priority-inverted on you.
Message-passing, on the other hand, doesn't need particular locking and crashes are (somewhat) simpler to deal with.
(And most any scheme I've encountered can deadlock, and will usually choose the most inopportune moment to demonstrate this capability.)
There's an older blog post here http://enfranchisedmind.com/blog/posts/thoughts-on-parallelism/ that's worth a read.
earl · 2010-06-09
I read the article differently than most of you. I think Zed is still grumpy that contributing a big piece (if not irreplaceable, but unarguably useful) of the rails stack didn't lead to more recognition and, more importantly, the type of recognition that's useful when it's time to pay the rent. Hence his rails is a ghetto post -- I read it as something like, "This rails shit has worked out well for DHH but a bunch of other people have contributed and we haven't gotten shit. This sucks."
This post is an elaboration -- having written a bunch of big projects that are freely available for anyone who wants to to review the code, Zed still has to answer the usual weeder questions. It's kind of insulting, frankly. And from his perspective, his contributions to open source and the community at large haven't done that much for him.
I think this is part of a general problem in programming that a blog author I follow pointed out and another poster in this thread mentioned: open source has worked out well for eg Larry Wall or Linus or DHH, etc. But there are a lot of people that contribute -- maybe not as main authors, but who eg make sure all your rails db gems work with new revs of the databases and contribute lots of little pieces -- but who don't get enough out of it to financially justify the contribution. See the creator of Clojure essentially begging for donations on his website in order to continue development. Sometimes, it comes down to the simple fact that open…
nickb · 2007-03-18
Our Ruby on Rails app uses PostgreSQL (for now but that will change). We started off with MySQL but after growing quickly, we were forced to look into partitioning of the data. PostgreSQL was made to be easy for advanced stuff like that. We tried to do it with MySQL and failed because we're not MySQL experts and we managed to get it working with Postgres. Postgres has better documentation than MySQL so that might be the factor if you don't have a DBA you can readily ask for help. Here's a write-up by someone who went through similar process:
http://enfranchisedmind.com/blog/archive/2006/11/04/166
Also, if you use Postgres on multi-CPU machines, it's faster than MySQL. But, make sure you read this:
http://www.suite101.com/article.cfm/oracle/115560
(comparison of Oracle/MySQL/PostgreSQL)
One last word of advice if you end up using PostgreSQL, learn and use this:
http://pgreplicator.sourceforge.net/
Finally, we are moving back to MySQL because we found a really fast replacement for the MyISAM storage engine (a lot faster than Postgres) and our part-time DBA knows MySQL and this new storage engine a lot better than Postgres. We are also moving to VPS architecture and Postgres' performance advantage over MySQL on a VPS doesn't really exist.
In the end, go with what your staff/friends know and what your hosting place recommends. If they have an optimized DB stack and provide some kind of a support for it, stick with that DB because you can always go to them for help!
shadowsun7 · 2012-03-01
"Those who don't understand UNIX are doomed to reinvent it, poorly."
--Henry Spencer
Which can then be turned into:
"Programmers who do not understand history are doomed to reimplement it - poorly"
- http://enfranchisedmind.com/blog/posts/what-good-is-a-cs-degree/
I thought both of them were good sayings to keep in mind, while reading the above post.
zacharyvoase · 2011-02-16
I find it repulsive that poor diligence on the part of a programmer can be blamed on some ‘community leader’ setting a bad example. As a programmer, all code that goes into your project is your responsibility. When things go well you’re the only one who gets paid, therefore when they go wrong you’re the only one who should get the blame.
See also: http://enfranchisedmind.com/blog/posts/fyi-my-open-source-users/
sandGorgon · 2011-01-06
scala != functional programming
http://enfranchisedmind.com/blog/posts/scala-not-functional/
It does have functional programming constructs though
Clojure is a much better candidate for FP on the JVM.
chc · 2010-11-09
This is sort of a "when all you have is a hammer…" situation. You don't need binary trees, but only in the same sense most of these data structures can stand in for one or more of the others. Binary trees can actually be better than hash tables in many cases where hash tables are used in mainstream scripting languages simply due to language support. An informative post on the subject: http://enfranchisedmind.com/blog/posts/problems-with-hash-tables/
silentbicycle · 2010-01-31
FWIW, RobertFischer's blog is http://enfranchisedmind.com/blog/
arohner · 2009-04-30
if anything saves imperative programming it will be transactional memory, which is exremely hard. hardware TM and code written for TM are in a chicken-and-egg situation. the answer is hybrid hardware/software TM and the sun guys are way ahead on this too.
What's interesting is STM is only hard in imperative languages. It's relatively straightforward in Clojure and Haskell. See http://enfranchisedmind.com/blog/posts/the-problem-with-stm-your-langu…
arebop · 2009-02-26
Maybe I was unusually naive, and probably everyone's more informed these days, but the thing I'd add is that tech companies are very different from other companies for CS majors.
I supposed in my innocence that there were the overtly-sexy apps and the unsexy but still challenging apps* . I haven't had the opportunity to work for a real tech company yet, but my impression is that programming in IT is essentially a different career compared to programming in a software company.
*It's not just a matter of nasty-little-problems. It's also a question of cultural values. More on this at http://enfranchisedmind.com/blog/2009/02/22/programming-doesnt-suck-or…
sanj · 2008-02-04
I've always been a fan of PostgreSQL. The one bit that appealed to me was its erstwhile ability to 'shard', or partition data across tables.
http://enfranchisedmind.com/blog/2006/11/04/postgres-for-the-win/
Any comments?
gtani · 2011-01-06
http://enfranchisedmind.com/blog/posts/what-is-a-functional-programmin…
Note: NOT written by same guy who did "Scala not Functional".
Everybody has a different definition of FP in mind with these, uh, parameters:
- "no hidden side effects"; clearly demarcated IO functions, database calls.
- curry, partial function application; lexical closures
- TCO
- 1st class, higher-order functions
- Immutable / persistent collections / data structures
Altho most people agree that these are orthogonal to the definition of FP, (but nice to have:
- type inference (ML's is variously referred to as Damas-Milner or Hindley-Milner) or static typing
- lazy eval
- pattern matching
- green/lightweight threads with message passing OR STM/MVCC
- monads,arrows, functors, CPS
http://stackoverflow.com/questions/485418/distinctive-traits-of-the-fu…
http://stackoverflow.com/questions/1112773/what-are-the-core-concepts-…