What’s a hobbyist programmer?

New to Visual Studio 2005 is the Express Editions which “ include lightweight, easy-to-use, easy-to-learn tools for hobbyists, enthusiasts, and novices who want to build dynamic Windows applications and Web sites.” In conjunction with Beta 2, they also launched a new website, Coding4Fun. Is it just me or are the people depicted on the websites for Express Editions and Coding4Fun unlike any other programmer, you’ve ever met? Especially Coding4Fun guy: it looks like he has some issues. The VB guy looks confused. Haha. Perfect

They’re selling these as simplified tools for hobbyists and beginners, and that’s fine. That’s a laudable goal. But I can’t figure out why they removed VS add-ins in the Express products. Did they think it would confuse new developers to have add-ins? Is that what the market research is saying? One menu item in the Tools menu is going to deter budding hackers from coding “dynamic Windows applications and Web sites?” When I started with the Beta 1 of C# Express, I was excited about it: a cheap IDE that does just what I want. Then they got rid of add-ins!? WTF?!?! Why?

Here’s what google says a hobbyist is: a person who pursues an activity in their spare time for pleasure. It says nothing of skill level. So why reduce the tool set for the hobbyist? Does the Gus The Hobbyist developer profile specify that he’s a beginner confused by a menu item? What about Isaac the Open-Source-Project Weekend Warrior? 

Did you click the link for Coding4Fun? In case you didn’t, they have a link to an article about starting your own game with DirectX. For hobbyists. Amateurs. Who do it for fun. That’s a bit like an amateur photographer getting a low-end professional camera without a tripod, then explaining to her about setting up those light parachutes for backlighting. If we added this request to the Product Feedback Center, will they listen?

Windows Socket Version 2 API error code documentation

[Update: Looks Mike, future PM of System.Net and all ’round genius, cleared things up in the comments. Thanks, Mike. He gets 20 jasonkemp.ca points! Save those up and you may get a toaster. Or a beer since I know you and you live in Victoria. Incidently, before I checked for comments to this post, I opened up MSDN help, typed in “socket“ without quotes and no filter, and found the error codes in a few links. Who knew? 🙂 Now we just have to correct that documentation UdpClient.]

So I’m trying to play with UdpClient from the System.Net.Sockets namespace in good ol’ .NET 1.1.

I’m using the code from the Receive() example in MSDN Help. Almost exactly. Only in my version, the fucking thing always throws a SocketException. Luckily the SocketExpection has an ErrorCode property so that I can “refer to the Windows Socket Version 2 API error code documentation in MSDN for a detailed description of the error.” And yet, I still don’t know what’s going wrong because as far as my local MSDN Library, MSDN for the Internet, and Google are concerned there is no such fucking Windows Socket Version 2 API error code documentation. (In fact, if Google is worth its salt, this post will begin coming up when that string is searched.) All I can use to debug is the stack trace. And it’s not my code that’s being difficult so break points won’t work. Could it be XP SP2? Don’t know; ’cause I can’t for the life of me find that info on MSDN either. I know it’s not Windows Firewall because I tried this code with the Firewall turned off. I haven’t used the excellent Reflector on this either, but I don’t see how that’ll help right now. And I know how to use Google, in case you were wondering! Sometimes Microsoft really pisses me off.

     1:         [STAThread]
     2:         static void Main(string[] args)
     3:         {
     4:             UdpClient udpClient = new UdpClient();
     5:  
     6:             IPEndPoint endPoint = new IPEndPoint(IPAddress.Any,  0);
     7:             try
     8:             {
     9:                 byte[] received = udpClient.Receive( ref endPoint );
    10:  
    11:                 string recvMessage = Encoding.ASCII.GetString(received);
    12:  
    13:                 Console.WriteLine("recvMessage = {0}", recvMessage);
    14:             }
    15:             catch ( SocketException e)
    16:             {
    17:                 Console.WriteLine(e);
    18:             }
    19:             catch( Exception e )
    20:             {
    21:                 Console.Out.WriteLine("e = {0}", e);
    22:             }
    23:  
    24:             Console.ReadLine();
    25:         }

It always throws an exception on line 9. Can anyone tell me why this is failing? 10 jasonkemp.ca points, and my eternal gratitude, to anyone who can. 10 jasonkemp.ca points to anyone can point to good Winsock 2 API documenation also.