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.
What HN saysHN commenters recommend his Edulinq series for learning by reimplementing LINQ, and cite his posts on C# async and programming difficulty.
44HN people shared it
12linked it in comments
61stories submitted
461story points
12 years agolast shared
2008people per year2026
Most-shared posts
- 1OMG Ponies (Aka Humanity: Epic Fail)4 people · 127 points · first shared 2009 · 27 comments on HN
- 2The joys of date/time arithmetic3 people · 7 points · first shared 2010 · discussion on HN
- 3Where do you benefit from dynamic typing?3 people · 4 points · first shared 2009 · discussion on HN
- 4Google asks Jon Skeet to give up his Microsoft MVP award2 people · 26 points · first shared 2009 · 15 comments on HN
- 5Programming is hard2 people · 14 points · first shared 2009 · 3 comments on HN
- 6Writing the perfect question2 people · 7 points · first shared 2010 · discussion on HN
- 7How to hand-craft your own presentation slides.2 people · 2 points · first shared 2010 · discussion on HN
- 8Initial thoughts on C# 5's async support2 people · 1 points · first shared 2010 · discussion on HN
- 9Jon skeet2 people · first shared 2011
- 10C# 6: First reactions1 people · 117 points · first shared 2014 · 65 comments on HN
- 11The future of "C# in Depth"1 people · 35 points · first shared 2012 · 3 comments on HN
- 12Type initialization changes in .NET 4.01 people · 21 points · first shared 2010 · discussion on HN
- 13Free eBook - Data Structures and Algorithms: Annotated Reference with Examples1 people · 9 points · first shared 2008 · discussion on HN
- 14Just how spiky is your traffic?1 people · 8 points · first shared 2009 · discussion on HN
- 15Diagnosing weird problems - a Stack Overflow case study1 people · 7 points · first shared 2012 · discussion on HN
What HN people wrote when they linked it
Xdes · 2014-03-03
One of the best ways of understanding something is to implement it yourself.
To that end Jon Skeet has already documented how to do it in his Edulinq series[0][1].
[0] Link to series: http://msmvps.com/blogs/jon_skeet/archive/tags/Edulinq/default.aspx
[1] Download of series (found in link): https://code.google.com/p/edulinq/downloads/list
hasslblad · 2011-10-18
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.
gtani · 2011-06-22
(I don't follow C# 5 but inability to generate tail calls in C# seems to be a significant issue:
http://fsharpnews.blogspot.com/2010/12/performance-related-features-in…
(comments)
http://msmvps.com/blogs/jon_skeet/archive/2010/10/29/initial-thoughts-…
kenjackson · 2011-01-08
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-ha…
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.
snprbob86 · 2013-06-29
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-g…
estebank · 2013-05-30
Jon Skeet's "The joys of date/time arithmetic"
http://msmvps.com/blogs/jon_skeet/archive/2010/12/01/the-joys-of-date-…
His talk in London Dev Days 2009, also goes into problems you can have with dates and timezones (including Argentina's 2009 last minute time zone change back into not using daylight saving time).
http://vimeo.com/7516539
bxbb · 2013-04-12
for a longer, funnier, and mind-blowing explanation from Jon Skeet about time:
http://msmvps.com/blogs/jon_skeet/archive/2009/11/02/omg-ponies-aka-hu…
stuartd · 2011-11-17
See also http://msmvps.com/blogs/jon_skeet/archive/2011/11/11/eduasync-part-15-… for COMEFROM in C#
euroclydon · 2010-08-10
I just looked this up on Jon Skeet's website, and apparently he doesn't know either. Here is a lively thread where he posed the question to his readers:
http://msmvps.com/blogs/jon_skeet/archive/2009/11/17/where-do-you-bene…
dahjelle · 2011-11-30
> 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-hu…
noblethrasher · 2011-05-16
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).
pbhjpbhj · 2010-06-28
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.