Category Archives: BOOL

Are the kids alright?

I know in the labour market of today, suggesting someone pick up programming from scratch is akin to suggesting someone dedicate their life to being a cooper. Sure, in very specific places, that is a very sought after skill that will earn you a good living, but compared to its heyday the labour market has shrunk considerably.

Getting into the biz

How do people get into this business? As with I suspect most things, there has to be a lot of initial positive reinforcement. Like – you do not get to be a great athlete without several thousands of hours of effort rain or shine, whether you enjoy it or not – but the reason some people with “talent” end up succeeding is that they have enough early success to catch the “bug” and stick at it when things inevitably get difficult and sacrifices have to be made.

I think the same applies here, but beyond e-sports and streamer fame, it has always been more of an internal motivation, the feeling of “I’m a genius!” when you acquire new knowledge and see things working. It used to help to have literally nothing else going on in life that was more rewarding, because just like that fleeting sensation of understanding the very fibre of the universe, there is also the catastrophic feeling of being a fraud and the worst person in the world once you stumble upon something beyond your understanding, so if you had anything else to occupy yourself with, the temptation to just chuck it in must be incredibly strong.

Until recently – software development was seen as a fairly secure career choice, so people has a financial motivator to get into it – but still, anecdotally it seems people many times got into software development by accident. Had to edit a web page, and discovered javascript and PHP – or , had to do programming as part of some lab at university and quite enjoyed it et c. Some were trying to become real engineers but had to settle for software development, some were actuaries in insurance and ended up programming python for a living.

I worry that as the economic prospects of getting into the industry as a junior developer is eaten up by AI budgets, we will see a drop-off of those that accidentally end up in software development and we will be left with only the ones with what we could kindly call a “calling”, or what I would say “has no other marketable skills” like back in my day.

Dwindling power of coercion

Microsoft of course is the enemy of any right thinking 1337 h4xx0r, but there has been quite a while where if you wanted a Good Job, learning .NET and working for a large corporation on a Lenovo Thinkpad was the IT equivalent of working at a factory in the 1960s. Not super joyous but, a Good Job. You learned .NET 4.5 and you pretended to like it. WCF, BizTalk and all. The economic power was unrelenting.

Then the crazy web 2.0 happened and the cool kids were using Ruby on Rails. If you wanted to start using ruby, it was super easy. It was like back in my day, but instead of typing ABC80 basic – see below- they used the read evaluate print loop in ruby. Super friendly way of feeling like a genius and gradually increase the level of difficulty.

Meanwhile legacy Java and C# were very verbose, you had to explain things like static, class, void, include, static not to mention braces and semicolons et c to people before they could create a loop of a bad word filling the terminal.

People would rather still learn PHP or Ruby, because they saw no value in those old stodgy languages.

Oracle were too busy being in court suing people to notice, but on the JVM there were other attempts at creating some things less verbose – Scala and eventually Kotlin happened.

Eventually Microsoft noticed what was going on, and as the cool kids jumped ship from Ruby onto NodeJS, Microsoft were determined to not miss the boat this time, so they threw away the .NET Framework, or “threw away” – as much as Microsoft have ever broken with legacy, but still fairly backward compatible, and started from scratch with .NET Core and a renewed focus on performance and lowered barriers to entry.

The pressure really came as data science folks rediscovered Python. It too has super low barrier to entry, except there is a pipeline to data science, and Microsoft really failed to break into that market due to the continuous mismanagent of F#, except they attacked it form the Azure side and get the money that way – depite people writing python.

Their new ASP.NET Core web stack stole borrowed concepts like minimal API from Sinatra and Nancy, and they introduced top level statements to allow people to immediately get the satisfaction of creating a script that loops and emits rude words using only two lines of code

But still, the canonical way of writing this code was to install Visual Studio and create a New Project – Console App, and when you save that to disk you have a whole bunch of extra nonsense there (a csproj file, a bunch of editor metadata stuff that you do not want to have to explain to a n00b et cetera), which is not beginner friendly enough.

This past Wednesday, Microsoft introduced .NET 10 and Visual Studio 2026. In it, they have introduced file based apps, where you can write one file that can reference NuGet packages or other C# projects, import namespaces and declare build-time variables inline. It seems like an evolution of scriptcs, but slightly more complete. You can now give people a link to the SDK installer and then give them this to put in a file called file.cs:

Then, like in most programming tutorials out there you can tell them to do sudo chmod +x file.cs if they are running a unix like OS. In that case, the final step is ./file.cs and your rude word will fill the screen…

If you are safely on Windows, or if you don’t feel comfortable with chmod, you can just type dotnet file.cs and see the screen fill with creativity.

Conclusion

Is the bar low enough?

Well, if they are competing with PHP, yes, you can give half a page length’s instruction and get people going with C#, which is roughly what it takes to get going with any other language on Linux or Mac and definitely easier than setting up PHP. The difficulty with C# and with Python as well is that they are old. Googling will give you C# constructs from ages ago that may not translate well to a file based project world. Googling for help with Python will give you a mix of python 2 and python 3, and with python it is really hard to know what is a pip thing and what is an elaborate hoax due to the naming standards. The conclusion is therefore, dotnet is now in the same ballpark as the other ones in terms of complexity, but it depends on what resources remain available. Python has a whole gigantic world out there of “how to get started from 0”, whilst C# has a legacy of really bad code from the ASP.NET WebForms days. Microsoft have historically been excellent at providing documentation, so we shall see if their MVP/RD network flood the market with intro pages.

At the same time, Microsoft is going through yet another upheaval with Windows 10 going out of support and Microsoft tightening the noose around needing to have a Microsoft Account to run Windows 11, and at the same time Steam have released the Steam Console running Windows software on Linux, meaning people will have less forced exposure to Windows even to game, whilst Google own the school market. Microsoft will still have corporate environments that are locked to Windows for a while longer, but they are far from the situation they used to be in.

I don’t know if C# is now easy enough to adopt that people that are curious about learning programming would install it over anything else on their mac or linux box.

High or low bar, should people even learn to code?

Yes, some people are going to have to learn programming in the future. AGI is not happening, and new models can only train on what is out there. Today’s generative AI can do loads of things, but in order to develop the necessary skills to leverage it responsibly, you need to be familiar with all the baggage underneath or else you risk releasing software that is incredibly insecure or that will destroy customer data. Like Bjarne Stoustrup said “C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off” – this can apply to AI generated code as well.

Windows Azure Websites: -1

You should have by now – but if you haven’t – do try Windows Azure Websites. It is almost as usable as AppHarbor. Just register and start setting up your websites. For small blogs and wikis you can get away with internal storage and spend no money at all. No need for hosting ever again.

If you, as you should be, are writing your own web apps, you can connect your Bitbucket free private repo, or indeed your almost free GitHub private repo, or indeed a public repo directly to an azure website, so that you get CI whenever a commit is made in that repo. You can differentiate on branches so that the master branch triggers deploys to “production” and the staging branch, for instance, triggers deploys to the staging site. The possibilities are if not endless pretty huge.

The thing is, it works, although I’ve manage to upset the system by trying to do naughty things with weird Silverlight apps, but if auto deploy doesn’t work, manual deployment from Visual Studio still does. Even if auto deploy does work –  having CD from Git to the test site and VS -> Publish to your production site may not be such a bad idea, if you want to find a middle ground. Of course you are free to spend money if you like, but it is not necessary.

www.windowsazure.com

Windows Phone 6.1

I managed to lose my employer’s Nokia N82 and as punishment by my boss he stuck me with an HTC Touch Cruise Windows Phone Classic 6.1 phone that nobody had wanted to use since 2008. I have tweeted about my findings with the hashtag #punishmentphone.

In short, the experience has been mixed. Synchronization with Google Apps works like a charm with e-mail, contacts and calendar and the messaging function is quite OK in the way e-mail works and the SMS part has conversations just like the iPhone. Sadly, though, the Windows Mobile general feel remains with very bad tactile feedback from the touch interface and a borderline unusable virtual keyboard and having a Windows interace on a phone means that user stories like “Create new SMS” or “Make a phone call” be at least a few clicks too far away for comfort. Oh, and another pet peeve: When the phone boots, it throws the SIM-card PIN-code dialog at me first, but that gets hidden by the WinMo desktop and I have to go in to the comm manager and disable the phone and reenable it to get the PIN dialog to a place where I can actually punch the numbers in. WinMo has improved since before, though as the phone has only died on me once so far for no reason, which is vastly better than a QTek S100 I wrestled with years before.

Windows Virtual PC Beta: -1

While test driving Windows 7 RC I suddenly needed to run a virtual machine to avoid dual booting to access a few key applications that could not survive the combination of an x64 platform and Windows 7. Either one on its own would have been fine but the combination was lethal. Killing two birds with one stone I felt the time was right to test drive the Windows Virtual PC beta and Virtual Windows XP. The first day I managed to completely ruin my XP virtual machine and had to start over. This was the start of a healthy dose of stupidity tax in combination with a rather opaque interface to the virtual machines which still only dented the superb first impression slightly.

The product

The user interface is a custom Explorer folder, supposedly containing actions for creating and managing virtual machines. Not so in my case, despite reinstalling twice, I only have a fancy icon in the toolbar and that’s it. No actions avaiable. This doesn’t hamper proceedings much, though as I can still double click a virtual machine file (*.vmcx) to start it. How do I create a virtual machine, though? Google tells me that to create a new virtual machine I type vmcwizard.exe in the start menu search field and press enter. Google is right. Once created, you configure the machine by right clicking the file in the explorer and clicking Settings. Here you get a properties box that has more in common with Windows Server 2008 and Hyper-V than with Virtual PC, which is of course great.

The integration features make the VM able to talk to USB devices on the physical computer aside for the usual disk, printer, clipboard and sound integration also available. In order to run old (or just badly made 32-bit only) applications virtually you look at the Auto-Publish tab and enable that feature. This means that application shortcuts under the All Users Start Menu end up published in the host-OS Start Menu under All Programs –> Windows Virtual PC –> [Virtual Machine Name]. Any notification icons displayed in the virtual machine while it is running in application mode will also be forwarded to the host OS notification area. To enable this, you may be wise to store credentials for a user account on the VM that has proper authorization to run the programs installed. This way the integration becomes seamless.

Virtual Windows XP is thus just a preconfigured Windows XP SP3 image with auto-publish checked. Nothing magical that you couldn’t make yourself provided you had a spare license for Windows XP, obviously.

The user experience while working with Windows Virtual PC is excellent compared to old Virtual PC 2007, because it feels just like Hyper-V for 2008 even though Hyper-V has superior performance to Windows Virtual PC, allegedly.

Problems? Oh yes. The virtual Windows XP wants to update itself through Windows Update. After it does, the virtual machine is Initializing, only showing a progressbar that suddenly starts over. After X number of iterations, I found, on non-Microsoft parts the Internet again, the shortcut Shift+Esc which shows the console instead of the progress bar. Lo and behold: Windows XP was BSOD:ing so the VM was rebooting continously! Not surprising since it’s XP, but it still is annoying since I’ll have to recreate my VM again which is boring. A utility which salvaged VM:s killed by Windows Update would be a nice-to-have trinket.

Also, integration just stops working in a few cases, and there is no way of forcing it on without tens of thousands of reboots which may or may not have the desired effect. No indication from either guest OS, host OS or VM player what the problem is. These things are extremely frustrating and could so easily be avoided.

An aside

I have a few design guidelines for Working Software, note that these are completely diametrically opposed to guidelines for security and stability, but this is for those of us who need to actually work for a living:

  • Never check for preconditions before you try something*
  • Never use locks. Don’t have shared write access to global resources, dummy.
  • Unless you risk actually destroying something valuable**, never mind errors, just continue.
  • Incorporate DDoS code to punish non-responsive servers. This is the only way.
  • Automatically kill processes locking the file you need. Those processes are never vital, statistics say***,

*90% of the case your check will be overly pessimistic, especially if you check version numbers. They are always a bad idea
** This is the case in less than 0,1% of production code. Mostly you get corrupt data which is, again, important in only a small percentage of the cases. Like I wrote initially, this is not for the people looking for correct or secure software, only software that delivers.
*** This claim is completely bogus. I mean the percentages above were complete fabrications as well, but this one tops them all.

IIS Security

While working on a project today I got a bit frustrated. Instead of having one security setting per node in the conceptual tree that a web server in effect is, thus allowing people to actually configure authorizations to the allow the least possible and still run the applications, there are six hundred and fifty nine separate places to configure access usually meaning that in the initial phase people run everything as Enterprise Administrators, from the web site identity down to the least possible scriptlet just to get something up on the screen when you test the app on your own box.  If you insist that ‘but we need to make the websites impossible to configure, otherwise there is no security’, at least provide me with a big fat ‘Make it so’ button that allows me to ensure that, say, an AD group that should be allowed to look at a web site, by me having pressed the Patrick Stewart-button while the group was selected, they would actually be able to see the web content without any error 500.x/ 403.x because a .config file had the wrong permission sets way back somewhere. I love low permission worker process identities, but please configure them automagically through the admin tools. The problem is other people and viruses messing with the websites, Making them impossible to configure isn’t exactly helping people to lower security settings. Just don’t leave the server open  for attacks in the first place so that other people than me get to configure my server and you’ll see that security will be just fine.

OF course, once I calmed down I realized there are ways of dealing with the frustration, especially with IIS7.0 and I should at least share this link.

Basic IIS7 troubleshooting

3 Customer Support: -1

Due to my recent foray into the beta OS lifestyle I had the displeasure of finding out that the 3 Connect Huawei 220 Turbo 3G connection software provided by the telco that goes by the long-winded name of 3, does not in fact install post upgrade. Or, it installs, but does not execute.

I placed a call to the customer support hotline and after explaining to the 1st line support that yes, Windows 7 is newer than Vista, he would consult with a colleague and get back to me. I waited patiently for the inevitable “Dude, you’re running a beta OS, can you say: NOT SUPPORTED?”, but instead, imagine my surprise, the guy comes back on the line saying “I talked to our technicians and they are aware that regrettably, the software does not work on Windows 7 yet, but we are working to solve the problem presently”. Practical difference for me? None. Except you feel a lot better when people give the impression of caring. This bumps 3 tech support from 0 to –1.

Of course, I would not be this magnanimous and benevolent if had been kept from using the wireless broadband entirely. A windows dialup connectiion could access the modem and create a connection, so in the end I could make do just fine without the 3Connect software

Quick Answers –1 or 0

So you want to know what is hot or not? You want to know what to think on a variety of subjects but you cannot really be bothered with getting to know the issues first hand? Search no further:

Windows 7: –1

A solid, dependable operating system despite being a beta. Sure, some websites look upon your HTTP_USER_AGENT suspiciously, thinking that NT6.1 is no an OS they can support, but that is an issue that can be remedied in Firefox among others through simply spoofing the USER_AGENT-string. Problem free upgrades and installs are reported, stuff just keeps on working. Uneventful and boring, just as you want them. Lots of small details that gets you hooked right away strictly because of the improvements to the user experience, the improved keyboard shortcuts, the new structure in the control panel, the way dialup and VPN-connections are activated and deactivated from the taskbar, the new taskbar in general.