Blogs

New functional language - C#

If you're not firmly embedded in the Microsoft world, it would be easy to miss some important developments in the past few years. In particular, many of the best minds in programming language design now work for Microsoft Research, and it's starting to show. Let's take a quick look at C# 3.0 (included in the .Net 3.5 SDK and Visual Studio 2008). This is a language that has rapidly evolved from being near-equivalent to Java, to being near-equivalent to an object-functional language I used to work with called Nice. It's got lexical scoping, a convenient syntax for anonymous functions, type inference, and so on. Read on for examples!

RESTful Web Services

I just finished RESTful Web Services, and I have to recommend it. It's a very clear explanation of what REST is, and how to think of your application in RESTful terms. Since REST was in my list of "gee, that might be important, but don't have time right now to track down all the implications from lots of different blogs with subtly different interpretations," I definitely appreciate the clarity of this book. It's given me ideas as well, always a good sign. One small problem was that there were a number of grammatical errors, the most distracting being the resolute avoidance of the subjunctive.

Spam

People are actually creating user accounts now just to post spam, so I've changed the settings. All posts now have to be approved by me before they show up on the front page. Sorry for the inconvenience. At some point when I have more time I'll try to get some kind of "prove you're not a bot" logic set up. I'll try to check daily for new posts in the meantime...

Type-level programming in Haskell

If you've ever wondered at some of the seemingly arcane things you can do with the Haskell type system, take a look at the latest copy of The Monad Reader. There's an article in there called Type Level Instant Insanity that's the clearest introduction I've seen yet to leveraging the Haskell type checker for compile-time programs. Excellent work.

Architects: If you can't code, don't apply for senior dev jobs

There seem to be several different understandings of the job title "Architect". The company I work for sees this as a position that involves coding, research, management of developers, and setting of technical direction. Others apparently treat this as a pure management or management/analyst title. Okay, fine, to each their own.

However, if you are a non-coding architect, please don't tell your recruiter you're interested in senior developer positions. We require all our developers to pass a written coding test, and several times now I've seen people give answers like "I've been working as a system architect for several years now and am not really a hands-on developer anymore". "Senior Developer" is clearly a coding position, so what good is a non-coding analyst/manager for this job?

Hiatus

Sorry for the long pause, things have been awfully busy lately. Unfortunately, I returned to find my comment approval queue bursting with spam, far too much to deal with manually. As a result, I've summarily deleted all pending comments and turned off anonymous commenting altogether. My apologies to any legitimate reader who is inconvenienced by this. Comments are still turned on for registered users.

Three cheers for Sandcastle Help File Builder

Sandcastle Help File Builder provides a GUI front end to the Microsoft Sandcastle documentation generator tool. As Scott Hanselman has reported, NDoc, the former de facto standard source code documentation generator for .Net has been defunct for some time. I finally downloaded Sandcastle, Microsoft's attempt to fill the void left by NDoc, today, and was not at all happy with the amount of time I spent tweaking the scripts, which involve running 10+ separate command line tools, all of whose command line parameters or other details have changed since the instructions were written.

Scripting FreeMind

FreeMind supports scripting in Groovy. It's cool, though definitely a new-new feature without much in the way of help. You'll need to download the FreeMind source to figure out what you can do, the example scripts on the wiki give a flavor but don't answer enough questions, and the javadocs on the site are for the old version, not for the current beta version.

Below is a script to total all the values in child nodes. For example if your nodes all have an attribute called "price", you simply install this script in an attribute called "script" on the root node (or any node for that matter), hit Alt-F8 to run the script, and if you've defined a "price-total" attribute on the node with the script, "price-total" will be filled in with the actual total of all the price attributes. This is my first real code in Groovy, so please pardon any gaffes. I defined a few helper functions, since the attributes API is a bit cranky to work with:

SSL Alternatives

I'd like to set up some kind of secure communication link between this server (or one like it) and my browser. For various (good, interesting) reasons, my hosting provider doesn't provide SSL for member sites, so SSL isn't an option. Does anyone else have this problem? I imagine there must be others who can't or won't use SSL, but still want secure communication. I've already started working on a JavaScript & Haskell solution in my head, but I wanted to see if anyone else has already solved the problem before I go too much farther.

FreeMind

FreeMind is a simple, elegant productivity tool - it basically allows you to quickly generate a "mind map" document. This is essentially a pleasantly laid out tree structure that packs a lot of information into a little bit of space. You can decorate the nodes with icons that have meaning for you, and also add a hyperlink to the node. Keyboard shortcuts are excellent, and clearly these folks went to a lot of trouble to keep the tool simple and easy to use. Really pleasant to work with. I'm starting to organize my task lists and so on with it, and that's going well.