Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    J

    Jon Skeet

    msmvps.com · Personal blog · on HN since 2008

    Jon Skeet, a well-known C# developer, writes about C# features, date/time handling, dynamic typing, and why programming is hard.

    Visit blogHN submissions
    ProgrammingLanguages & Compilers
    What HN says

    HN commenters recommend his Edulinq series for learning by reimplementing LINQ, and cite his posts on C# async and programming difficulty.

    Stats for nerds
    44HN people shared it
    61linked in comments
    461story points
    Mar 2014last shared
    2010people per year2014

    Top posts on HN

    1. 1
      OMG Ponies (Aka Humanity: Epic Fail)
      4 people · 127 points · first shared 2009 · 27 comments on HN
    2. 2
      C# 6: First reactions
      1 person · 117 points · first shared 2014 · 65 comments on HN
    3. 3
      The future of "C# in Depth"
      1 person · 35 points · first shared 2012 · 3 comments on HN
    4. 4
      Google asks Jon Skeet to give up his Microsoft MVP award
      2 people · 26 points · first shared 2009 · 15 comments on HN
    5. 5
      Type initialization changes in .NET 4.0
      1 person · 21 points · first shared 2010 · Discussion on HN
    6. 6
      Programming is hard
      2 people · 14 points · first shared 2009 · 3 comments on HN
    7. 7
      Free eBook - Data Structures and Algorithms: Annotated Reference with Examples
      1 person · 9 points · first shared 2008 · Discussion on HN
    8. 8
      Just how spiky is your traffic?
      1 person · 8 points · first shared 2009 · Discussion on HN
    9. 9
      The joys of date/time arithmetic
      3 people · 7 points · first shared 2010 · Discussion on HN
    10. 10
      Writing the perfect question
      2 people · 7 points · first shared 2010 · Discussion on HN

    What HN people wrote when they linked it

    • dahjelleNov 2011

      > They either want a full system, or just a product.

      While I think this is true at the moment, it seems that there is an interesting question behind that, as well. Why don't more people want to create their own software? I do think the author has an implicit point: because, frankly, creating software stinks. Jon Skeet's talk [1] demonstrates this admirably. I spend a shockingly large part of my time working around bugs and leaky abstractions in other software rather than implementing my own ideas.

      I don't know if it is possible to design a system with a solid enough abstraction that these problems don't exist. I do know that HyperCard came unusually close, as I know several folks who made HyperCard stacks who wouldn't imagine creating software in any typical fashion.

      I hold out hope that such a useful system could be created again, one that gives people enough flexibility to create software solutions of their own (perhaps within a genre of software) and that is able to combat the currently-accurate stigma of programming being "hard".

      [1] http://msmvps.com/blogs/jon_skeet/archive/2009/11/02/omg-ponies-aka-humanity-epic-fail.aspx

    • noblethrasherMay 2011

      C# is the lingua franca of .NET so you would be best off studying that first. It's still a simple language, especially if you know C++. I recommend "Pro Visual C++ 2005 for C# Developers" (it maps C# concepts to C++ but you can go the other way), "The C# Programming Language 4th Edition (with annotations)" and "C# in Depth". Then, of course, just solving problems with the language.

      Next you want to get the latest edition of "CLR via C#" to get a very in depth look at how the CLR works.

      Once you're comfortable with C# and the CLR, you can pretty much figure out how the major frameworks must work. For instance, you can understand about 90% of ASP.NET just by learning two classes and two simple interfaces.

      Some other good online resources are:

      http://stackoverflow.com/questions/9033/hidden-features-of-c

      http://stackoverflow.com/users/88656/eric-lippert

      http://stackoverflow.com/users/22656/jon-skeet

      https://msmvps.com/blogs/jon_skeet/

      http://blogs.msdn.com/b/ericlippert/

      Oh, if you really want to accelerate your C# learning, try writing code without using `if`, `while`, `for`, `switch` and `goto` (obviously).

    • pbhjpbhjJun 2010

      There are two standard rebuttals.

      One is that the thickness of the vessels wall (hands-breadth) is not taken into account in the establishment of 3 as the value being used for pi despite this being mentioned right there in the text, this apparently gives a value of 3.1414 for pi.

      The other is that 1 Kings 7:23 reference uses a special rendering of the term line (Hebrew numbers are expressed using letters) such that the ratio of line to ordinary line and the rendering in the text give the actual value as:

      3 * 111/106

      This gives Pi accurate to 0.00026%.

      This all seems quite ex-post-facto but Hebrew has a strong tradition of numerology and this "special" variant of the word line is used only 3 times and always referring to circular objects.

      ---

      Example references: (short) http://msmvps.com/blogs/coad/archive/2010/05/14/pi-in-the-bible.aspx, (longer) http://www.bibleprobe.com/pi.htm, (several refs) http://www.math.ubc.ca/~israel/bpi/bpi.html, (with alternate based on "hands-breadth") http://ldolphin.org/pi/index.html though I'm not sure on the original source.

    • snprbob86Jun 2013

      The IoC threads work by converting park-able functions into Single-Static Assignment (SSA) form [1] and then compiled to a state machine. Essentially, each time a function is "parked", it returns a value indicating where to resume from. These little state machine functions are basically big switch statements that you don't need to write by hand. This design is inspired by C#'s async compilation strategy. See the EduAsync Series [2] on John Skeet's blog, and the compilation post [3] in particular. Once you have these little state machines, you just need some external code to turn the crank.

      [1]: http://en.wikipedia.org/wiki/Static_single_assignment_form

      [2]: http://msmvps.com/blogs/jon_skeet/archive/tags/Eduasync/default.aspx

      [3]: http://msmvps.com/blogs/jon_skeet/archive/2011/05/20/eduasync-part-7-generated-code-from-a-simple-async-method.aspx

    • kenjacksonJan 2011

      Programming is hard, period. Knuth has noted that its so difficult for him that when he is programming he can't teach courses, and he's among the best programmers in history.

      Jon Skeet wrote a blog on the topic: http://msmvps.com/blogs/jon_skeet/archive/2009/01/29/programming-is-hard.aspx

      Jon Skeet is right. Programming is hard, except the most trivial tasks. And anything that is not trivial is probably broken. But we're OK with things being a little broken, and we've made users bend to our will sufficiently now that we have pushed much of the cognitive load to the users.

    • hasslbladOct 2011

      I agree with this. At first glance the problems he presents are simple, then you realise all the design decisions they've made and the pros and cons of each approach they were aware of when writing C#.

      On a footnote I also recommend Jon Skeet: Coding Blog - http://msmvps.com/blogs/jon_skeet/
      He's known in the .Net community. He's the guy behind Tony the Pony. He's a Google staffer who has written some C# books. He goes into great depth about C# stuff.

    Related

    Joe Duffybluebytesoftware.com26 people

    Volatile is Evil

    Joe Duffy
    Personal · last shared 2013
    jwzjwz.org880 people

    Watch a VC use my name to sell a con

    jwz
    Personal · last shared 2026
    Graham Jenkinsdarkcoding.net44 people

    Facebook’s code quality problem (2015)

    Graham Jenkins
    Personal · last shared 2025
    Rachel Krollrachelbythebay.com493 people

    fork() can fail

    Rachel Kroll
    Personal · last shared 2026
    Jason Moironjmoiron.net36 people

    Go Performance Tales

    Jason Moiron
    Personal · last shared 2026
    Scattered Thoughtsscattered-thoughts.net186 people

    Against SQL

    Scattered Thoughts
    Personal · last shared 2026
    Mike Hadlowmikehadlow.blogspot.com112 people

    Are Your Programmers Working Hard, Or Are They Lazy?

    Mike Hadlow
    Personal · last shared 2026
    Havoc Penningtonblog.ometer.com44 people

    Professional Corner-Cutting (2016)

    Havoc Pennington
    Personal · last shared 2026