Invest in your skills development

Software development is an industry still in it’s infancy. Technologies are continually evolving, and trend come and go. What’s hot today can quickly get replace by something new tomorrow.

It’s foolish to think that you can learn one thing and then be done with your learning and continue in your software development career for the next couple of decades without learning anything new. The past decades have already shown that what’s the hot in-demand tech skill now is likely to be in demand several years from now. That said, there have been programming languages that have stood the test of time: COBOL. C, and Java are some examples.

In order to stay relevant, it’s important that you spend time to keep your skills up to date. Make a commitment to learn something new (a new language, a new framework) every several months. As you gain more experience you’ll start to make better decisions on new trends that you think will stay around for longer, or those which seem like they’re likely to disappear within a few years.

Bottom line: expect and and plan to keep your tech skills up to date.

UTM frontend for QEMU on M1 MacBook Pro: Creating a VM and installing Windows 98

tldr; I couldn’t get the boot floppies to recognize the cdrom iso when using QEMU was configured with UTM, but runing QEMU from the shell with the same floppy and cdrom iso imaged worked completely fine. The following config steps maybe useful if you’re running into the same issues, but if you’ve managed to get a Windows 98 working under UTM leave a comment and let me know!

I previously played around with the UTM frontend for QEMU on my M1 MacBook Pro, and thought I’d give installing Windows 98 a go.

Using UTM 4.01 beta, from the first menu I selected the Windows option:

On the next page I configured the Windows 98 iso and disabled the UEFI boot option:

Next I configured the VM with i386 emulation, 256MB, and a 1GB disk::

Next I added a removable disk, type floppy, and attached a Windows 98 floppy disk boot image:

Booting. up, not matter what option I use, it wouldn’t boot from the floppy disk image:

I’m not sure if this is an issue with this 4.0.1 beta, but I tried multiple .img floppy images, and none of them would boot.

Next I tried 4.0.0 beta and had the same issue. A quick search on the UTM project’s github site didn’t find any similar issues. After testing different options, I found that the default option in the VM setup menus to add a boot iso apparently assumes that iso is actually bootable, and then if it’s not it doesn’t even seem to try booting from the floppy, and strangely reports the error “Boot failed: could not read the boot disk”

What I found did work was to avoid using the Windows option on the first page of dialogs, and use the Custom/Other option instead. On the next page you can again configure the boot iso, but since the Windows 98 iso I have is not bootable and we need to use a boot floppy, check the ‘Skip ISO boot’ option instead. We’ll add a floppy for the boot disk, a cdrom iso, and then we can correctly boot:

Now booting up we get the install menu from the boot floppy:

This disk image is currently unformatted, so we get the messages about formatting it with fdisk first before continuing:

From the fdisk menu select option 1 to create a DOS Primary partition:

Now we’re prompted to restart:

After rebooting, the VM attempts to boot from c: but it’s still blank at this point, this was the same issue during the Windows 95 install too. Press Esc when prompted to get the boot menu and select the floppy:

After rebooting now we’re got issues where it can’t see the cdrom dirive and the MSCDEX driver is unable to load a driver:

At this point, I obviously don’t have the right drivers to read from the cdrom iso image, but remembering it worked ok with the Windows 95 boot disk, I booted from that floppy images and selected the NEC driver which worked before:

… well that didn’t work either, it still can’t load the drivers for the cdrom iso. At this point I abandoned the boot floppy and cdrom iso and tried a bootable iso (the Second Edition OEM Full is a bootable cd, from https://winworldpc.com/product/windows-98/98-second-edition )

At the point where is tries to load MSCDEX, it also fails. At this point I’m thinking UTM is setting some option for the cdrom drive that is not supported by MSCDEX, which is weird because I know I’ve installed Windows 98 just using qemu-system-i386 before with these same boot disks and isos and it worked fine.

If anyone has exact steps and options to get the Windows 98 installer to see a cdrom iso with UTM, let me know, because at this point I cut my losses and went back to just using qemu from the cli instead.

It takes time to learn your first programming language

New developers frequently post online questions like “how long does it take to learn JavaScript” or “how long to become proficient with Java”. The thing is, everyone is different, we all learn differently, we all learn at different rates. Don’t pay any attention to whether some other developer learned language xyz in 1 week or whatever time they say.

Rather than focus on fixed time goals, it’s important that learning to develop software is an ongoing and continuous activity. You don’t ‘finish’ learning how to code, there is always something new to learn because the industry is still evolving, or tools, libraries and frameworks are always evolving. Trends also change. What’s the hot new frontend framework today may be replaced with something completely new 6 months from now.

It’s impossible to give a precise answer to ‘how long will it take me to learn language xyz’. Instead of thinking about a finite journey, you need to accept that a career in software development is a career of continuous and endless learning, and to keep your skills relevant and up to date you need to commit time and effort to your skills development.

Getting started in software development: the majority of software development is not web development

Frontend dev gets a lot of traffic in software development online communities where new developers are just getting started. That’s understandable, since if you have a computer with a web browser, you only need a text editor of some kind and you’ve got all you need to start writing and running code. It’s arguably the most accessible area of software development to get started with.

The fact is though that the majority of software development is not web dev, and most is not even backend apis to support frontend apps either. If you think about the electronic devices that fill our lives nowadays, our phones, tablets, watches, laptops, even household appliances like clothes washers, microwave ovens, all these devices run software. Modern cars have multiple systems that are comprised of millions of lines code. And this is not even thinking about the business systems that are behind the curtain and invisible to most people, financial and accounting systems, payroll processing, all quietly running 24/7

There is no golden rule that says you should start your career by learning frontend dev first and then moving into other areas. Pursue what is interesting to you. Over their careers some developers may move back and forth between roles, some may only ever work on backemd dev and never write a line of HTML Find what interests you and go for it!