Alan Skorkin
skorks.com · Personal blog · on HN since 2008
Alan Skorkin, a software developer, writes about programming practice, Ruby, bash, URLs, and the culture of software development.
What HN saysHN commenters recommend it as follow-up reading, mainly the post on why developers rarely use state machines and the one on bash shortcuts.
73HN people shared it
13linked it in comments
141stories submitted
2.2Kstory points
5 months agolast shared
2008people per year2026
Most-shared posts
- 1Why Developers Never Use State Machines9 people · 431 points · first shared 2011 · 161 comments on HN
- 2Bash Shortcuts For Maximum Productivity7 people · 190 points · first shared 2009 · 56 comments on HN
- 3The Difference Between A Developer, A Programmer And A Computer Scientist6 people · 114 points · first shared 2010 · 26 comments on HN
- 4What Every Developer Should Know About URLs4 people · 130 points · first shared 2010 · 27 comments on HN
- 5Software Development And The Sunk Cost Fallacy4 people · 23 points · first shared 2010 · 4 comments on HN
- 6How A Ruby Case Statement Works And What You Can Do With It4 people · 4 points · first shared 2009 · discussion on HN
- 7On The Value Of Fundamentals In Software Development3 people · 19 points · first shared 2010 · 4 comments on HN
- 8Does Software Development Have A Culture Of Rewarding Failure?3 people · 12 points · first shared 2009 · 2 comments on HN
- 9Ruby Procs And Lambdas (And The Difference Between Them)3 people · 11 points · first shared 2010 · 2 comments on HN
- 10Did your boss thank you for coding yourself to death?2 people · 143 points · first shared 2010 · 118 comments on HN
- 1199 Out Of 100 Programmers Can’t Program – I Call BS2 people · 132 points · first shared 2010 · 161 comments on HN
- 12The Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear?2 people · 84 points · first shared 2011 · 29 comments on HN
- 13Closures – A Simple Explanation (Using Ruby)2 people · 61 points · first shared 2010 · 30 comments on HN
- 14The Myth of the Underachieving Genius2 people · 46 points · first shared 2010 · 34 comments on HN
- 15How To Be A Real Elite Programmer And Make Sure Everybody Knows It2 people · 19 points · first shared 2010 · 7 comments on HN
What HN people wrote when they linked it
3pt14159 · 2017-07-30
Fantastic bit of research and write-up.
SSRF is going to be the major story for the next couple years. I've seen them all over the place and they are much harder to block since they exploit multiple protocols and the properties of URLs have many arcane rules that aren't known to most programmers.
Reading this a while back really opened my eyes to how complicated it was, even if I'd already learned (the hard way) most of it:
http://www.skorks.com/2010/05/what-every-developer-should-know-about-u…
0xmohit · 2016-09-13
Another good read:
Bash Shortcuts For Maximum Productivity [0]
[0] http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/
punnerud · 2016-05-16
[Follow up read] Why developers never use state machine:
http://www.skorks.com/2011/09/why-developers-never-use-state-machines/
coldnebo · 2014-12-06
The core problem is definitely the support of custom types. I agree, if you refuse custom types everything gets a lot simpler.
Here's a very simple example of marshaling comparing Marshal dump and load in Ruby using YAML, vs. custom JSON marshalers: http://www.skorks.com/2010/04/serializing-and-deserializing-objects-wi…
Note that the post shows a tree structure in YAML because Marshall gives it to you for free (synonymous with Java serialize behavior). But the post punts on implementing the same tree in JSON, probably because it's messy and complicated.
Nothing about that looks simple to me. For example, the JSON class label "A" has to be interpreted by something to actually instantiate an A Object. YAML is a bit better-- it at least defines that there is a Ruby class instance being marshaled -- but it doesn't help you if that class doesn't exist the same on client and server.
Pretty soon this leads to madness in production systems where the server evolves "A" (v2) among a sea of separately evolving clients "A" (v1, v1.1, v1.2). Then versioned class annotations get introduced, followed by attempts to differentiate between serializable and non-serializable fields, deep and shallow serialization, etc. etc. Pretty soon, your JSON marshaling isn't so simple anymore.
braythwayt · 2018-02-26
> they go to the same dusty corner where so many other CS
> topics that are never used in practice lie already.
https://www.skorks.com/2011/09/why-developers-never-use-state-machines…
ics · 2013-08-20
There's an older (but still interesting) post about case in Ruby here[1] and another here[2] with some extra insight into the MRI implementation. Having learned Ruby before most of the other stuff I play with these days, I always second-guess myself when using a switch/case construct in my code.
[1] http://www.skorks.com/2009/08/how-a-ruby-case-statement-works-and-what…
[2] http://www.daniellesucher.com/2013/07/ruby-case-versus-if/
wolfhumble · 2013-02-02
I have been looking for apps that teaches keyboard training geared towards computer programming, and this looks like a good start. Congratulations!
Would be cool to have a few tests where you can train typical bash and vim commands and see the ideal finger placement. Extra credits for emulating things in e.g. bash like: ctrl+a and alt+u etc. For command shortcut inspiration see for example: http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/
Anyway: Good job! :-)
vlandham · 2012-10-23
Very similar list here:
http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/
which includes some other nice shortcuts - like ctrl + xx
eaurouge · 2012-04-05
What's missing in the other comments is that you can't call private methods with an explicit receiver, for example my_object.private_meth or even self.private_meth. On the other hand, public and protected methods can be called on self.
See this blog post for more info:
http://www.skorks.com/2010/04/ruby-access-control-are-private-and-prot…
cassiozen · 2011-09-12
Two interesting beginner posts: http://www.skorks.com/2011/09/why-developers-never-use-state-machines/
http://www.shopify.com/technology/3383012-why-developers-should-be-for…
And a more dense and complete beginner friendly article: http://ai-depot.com/FiniteStateMachines/
GFischer · 2010-07-26
This article by Alan Skorkin tried to differentiate between the Computer Scientist (Engineer in your case?), the Programmer and the Developer:
http://www.skorks.com/2010/03/the-difference-between-a-developer-a-pro…
I agree that there isn't a standardized definition.
xtacy · 2010-05-23
An interesting application of skip lists: http://www.skorks.com/2010/03/faster-list-intersection-using-skip-poin…
But I can't see why the same cannot be done using trees. :-/
St-Clock · 2011-08-18
"What you fail to realize" <- ?
First, I believe there is a cultural difference between Canada and the US. In Canada, a Master's degree is typically not a professional degree and you usually cannot buy a M.Sc. Typically, half of the credits come from courses and the other half (often even more) comes from your thesis. I don't know about the situation in the UK, the author's country of origin.
Second, I TAed and taught programming, algorithms, and software architecture courses for undergrads, Master's and Ph.D. students so I'm well aware of the advantages and limitations of higher education. I saw students in an advanced architecture course who did not know what a thread was or who had never written a single SQL query. Well, they learned it in my course.
The graduate students that I described aren't rare. At least 75% of the Master's and Ph.D. students in the SE lab and PL lab at my university match that description. Maybe they would have a hard time building a web application in a day, but I think they have demonstrated that they can learn pretty complicated things and that they will learn how to solve your particular technical problems.
I felt the article was really about "degree snobbery", meaning that the author promoted snubbing people with degrees. I understand the frustration of people without degree who need to prove every time that they don't need one. But I don't believe that having a systematic negative bias on candidates with a degree is wise either. Honestly,…