After over 5 years using DotNetBlogEngine I thought it was time to move on to something different. I was interested in a modern code-base that could run on linux. After a bit of searching around I settled on Hugo. I was initially tempted by Ghost, but wanted to try out life in the Go ecosystem for a little while, so Hugo fit the bill. Migrating Content Migrating my content was fairly straight-forward. »
.NET’s tracing infrastructure isn’t perfect, but it gives you access to some ‘internal’ things that it is otherwise hard to get access to (like network and WCF tracing). Sometimes the things you want to trace are sensitive in nature, and probably shouldn’t be left lying around on the file system, even on your servers. Additionally you don’t want to set up a centralised, secure, logging system, and don’t want the overhead of more network traffic for every trace write (which can be pretty verbose sometimes). »
This blog had been extremely quiet for several months while twitter has become my ‘go to’ vehicle for quick rants. Or so I thought, until I received 2 notices from AWS (my blog is hosted on an EC2 instance) saying that my instance had been reported for abusing the terms of service. The worst part about receiving news like this is the immediate reaction is to drop everything and dive in to investigate, however often other things supervene, and so after quickly cycling through ‘shock and denial’ and ‘pain and guilt’ I decided to turn off the instance to prevent further ‘damage’ arising from its misuse, and to fix it up at a later date. »
A beginning is the time for taking the most delicate care that the balances are correct, and so it is also with the beginning of one’s stint on a software project. Here is a list of questions that, I have found, it is good to have answers too within the first week or so of starting on a software project. Sometimes the answers to one will make it obvious that a related question does not apply, and sometimes just by asking these questions you can begin to add value by uncovering things that need further consideration. »
Since 2007 every April (April 1st to be exact) I’ve received an email letting me know I’ve been recognized by Microsoft as a Microsoft Valued Professional (MVP) in client application development, primarily for my contribution to the Windows Presentation Foundation (WPF) community. It came as no surprise, but with a small amount of sadness, when I received no such email this year. I say “no surprise” because it has been about 2 years since I’ve done anything significant with WPF (and, as one of my colleagues said, it’s been a bit longer than that since Microsoft did anything with it, unless you count abandonment as “a thing”). »
It’s new year’s eve, so naturally I’m at home by myself drinking Veuve Clicquot and thinking about software development. I was interested to read about the new research language announced by Joe Duffy, which he dubbed ‘C# for systems programming’ but which I’m calling M#. This resulted in a lot of comments, both on Joe’s blog and speculation around the web. Rather than focus on the technical aspects of the language, which is ill-suited to one who has ingested a bottle of Veuve Clicquot, I’d rather focus on the organisational politics surrounding the announcement of M#, and the future of Midori.
But first, a bit of history. Midori is a skunk-works operating system project that grew out of MSR’s Singularity operating system/tools project. It is managed code all the way, with the goal of being highly dependable and verifiable. It was made up of a small, but star-studded team. Joe Duffy, who wrote the original prototype of plinq in a week-end, Chris Brumme, the VM guru MS hired from Oracle back in the day for a signing bonus of $1M and a Porsche 911, who knew everything about the CLR and then ‘went dark’ about 9 years ago. WPF Maestro Daniel Lehenbauer, and quite a few others. Midori existed outside the normal Microsoft divisional structure, but was instead run by Eric Rudder who reported directly to Steve Ballmer.
Lets also consider what Midori was setting out to achieve – replacing windows – something the folks on the Windows team are somewhat enamoured with.
From Mary-Jo’s Article:
Myerson's OS group is going to be determining which parts of Midori have a place in Microsoft's future operating-systems plans.
I suspect the conversation would be discussing the relative merits of suffocation with a pillow, or stabbing with a knife. I could be wrong here – Terry Myerson’s past in Windows Phone, which uses .NET heavily for its programming model, might make him more sympathetic to managed code, but I wouldn’t count on it.
Happy New Year»
http://visualping.io/ – I wanted to use this to check for the availability of the nexus 5, but due to the location google things the site is coming from the devices section doesn’t show up. Still, a cool idea.
http://tympanus.net/codrops/category/playground/ – a collection of cool HTML5 demos. Animating check-boxes, slide-down combo boxes, sidebar effects etc.
CLink – makes windows command-line better. Command-line probably doesn’t require a screen-shot.
HTML5 Admin Template – built on boot-strap, very slick-looking.
Exception Breaker – toggle on/off ‘break on all exceptions’ in VS quickly.
LiceCAP – weird name, cool utility for doing screen recordings as animated GIFs on Windows or Mac.»
By any measure SharePoint is a big success – it is used by 100+ million users around the world, and generated (in 2009) over $1.3 billion in revenue for Microsoft (while they were still letting on how much money it was bringing in). 78% of fortune 500 companies use SharePoint, and the platform adds about 20,000 new users to its ranks every day. Ask anyone who’s had to develop or support SharePoint and they’ll tell you it isn’t without its shortcomings. »
or Why Sigmund Freud is right, and Scott Hanselman is wrong.
The prodigious Scott Hanselman recently wrote a blog post responding to a question posed to him – are we really developers anymore, or just good googlers? While Scott touched on a number of things in his response, including the imposter syndrome that affects many people, myself included from time-to-time, one thing he said really struck me as wrong. Wrong enough to bring me out of 4-month-long blogging hiatus. This is what Scott said:
Third, try programming for a day without Googling. Then two days, maybe a week. See how it feels. Remember that there was a time we programmed without copying our work.
While I guess _trying_ something and reflecting on how it went can be a good course of action, it is not always the case “try cutting your wrists and sitting in a warm bath for a few minutes, a few hours. How does it feel?”. Before we head down this road of no googling lets think our strategy through a little. Are we going to start war-dialling the internet and hope that we come across something relevant? Are we going to hit the books instead? If so, are we going to read the book cover-to-cover, or look things up in the index? Isn’t looking something up in the index of a book just a horribly antiquated version of performing a very limited google search? Or are we going to ignore ‘prior art’ altogether? Imagine the following hypothetical conversation between us, and the owner of the small software consulting firm we work for:
Owner: Thanks for coming in at short notice. I’ve just gotten a call for $CLIENT you’ve been out on-site working for. I know you’ve got a great relationship with them, and you’ve done a lot of great work there, but they gave me a call earlier today, and said the standard of your work has been suffering a lot in the last two weeks. They said you’ve only delivered a fraction of what you’d both planned on. Is everything OK?
Us: OK? Everything is great! I decided two weeks ago instead of looking things up on the internet I was going to do everything from first principles. I spent most of the week writing a concurrent dictionary in C# using a lot of the data structures and concurrency theory they taught me at college. It’s been hard, and there are a few bugs, but I think in a few more weeks it will be ready to add to the project.
Owner: I see. I haven’t been too ‘hands on’ for a while, but isn’t there a ConcurrentDictionary they added in .NET Framework 4.0?
Us: You might be right.
Owner: So….just so I’m clear on this – you spent two weeks re-implementing something that was already in the .NET framework, because you unilaterally decided that building things from first principles, rather than searching for existing information on a problem was somehow “better”.
We’re all ultimately accountable to someone for how we spend our time - other founders in a start-up, team-mates and managers if we’re white-collar slaves working for “The Man”, our clients if we’re freelancers or maybe just ourselves . I think wilfully ignoring all the world’s information that has been organized, and made universally accessible and useful, so you can feel better about your prowess as a programmer is crazy.
Freud, who knew a thing or two about crazy, in his 1930 “Civilization and its discontents” hit the nail on the head:
“Man has, as it were, become a kind of prosthetic God. When he puts on all his auxiliary organs he is truly magnificent; but those organs have not grown on to him and they still give him much trouble at times.”
The Internet and the google index are the magnificent auxiliary prosthetic organ that gives us programming super-powers, in much the same way that the atomic bomb is the prosthetic organ that gives humanity the god-like power to destroy the planet. All the same arguments you can make about not using google you can make about every other advancement – intellisense, syntax highlighting, IDEs, high-level languages, integrated circuits, electricity, the steam engine, mathematics, iron, agriculture, language. It is natural that the organs have not grown onto us perfectly yet, and that we, to quote Freud again “do not feel happy in his God-like character”.
 - A self-employed person, with no dependents, working on a project for themselves with no deadlines, which is a vanishingly small % of working programmers.»