Windows History: DOS vs NT sourcecode heritage

As a software developer, I’m fascinated by computer and IT history. I grew up with 8 bit home computers like the Sinclair ZX Spectrum, and developed my first applications in Sinclair BASIC which most likely kickstarted my interest in software development.

I find it interesting when developers have very little interest or knowledge in even recent history of the tools and platforms that they work with every day. For example, statements like “I’m glad Windows 10 no longer has any dependence on MS-DOS like Windows 8 did”, or “Microsoft completely developed Windows 10 from scratch, you know”, – neither statements which could be further from the truth.

Up until Windows XP, Windows was developed as two parallel code lines, the MS-DOS based code line, Windows 1.x through 3.x, 95, 98, and ME, (95, 98 and ME aimed at home consumers) and the Windows NT code line for enterprise users. After Windows ME, Windows XP was developed based on the NT kernel from Windows 2000, with some features taken from ME and it’s MS-DOS code line.

There’s a great history of the parallel code lines in this article on the History of Microsoft Windows on Wikipedia, and clearly illustrated in this diagram:

(From https://en.wikipedia.org/wiki/Timeline_of_Microsoft_Windows, shared under Creative Commons Attribution-Share Alike 3.0 Unported license).

Windows ME was the last release of the MS-DOS based Windows code line, and Windows 10 is the next release in the Windows NT code line, which as you can see from the timeline above, shares it’s heritage with 8, 7 and Vista before it.

Running gpsd on a Raspberry Pi 3 over UART

Adafruit have a great tutorial for connecting and setting up their GPS Shield on the Pi. To connect it direct to the tx/tx GPIO pins on the Pi (instead of USB), there’s some additional steps covered here. Since the Pi 3 uses it’s hardware serial with the onboard Bluetooth, there’s additional steps covered that are Pi 3 specific.

After following those steps however, runnning cgps would run for a second and quit, with ‘No Fix’. What’s odd was that doing a ‘cat /dev/ttyS0′ would show the GPS NMEA messages being received, so I could tell the GPS board was up and receiving, but something else was not right.

Instead of starting gpsd as a daemon, running it form the commandline with additional debugging options gave some additional clues:

pi@raspberrypi:~ $ sudo gpsd /dev/ttyS0 -n -N -D3 -F /var/run/gpsd.sock

gpsd:INFO: launching (Version 3.11)

gpsd:ERROR: can’t bind to IPv4 port gpsd, Address already in use

gpsd:ERROR: maybe gpsd is already running!

gpsd:ERROR: can’t bind to IPv6 port gpsd, Address already in use

gpsd:ERROR: maybe gpsd is already running!

gpsd:INFO: command sockets creation failed, netlib errors -1, -1

This thread has others with the same issue. There are some suggestions towards the end of the thread to edit /lib/systemd/system/gpsd.socket and change some values, but the one recommendation that worked for me was to use this to start the service:

sudo service gpsd start

and then running cgps connected to the gpsd daemon, and everything is good!

Oracle have something to announce re. Java EE 8 at JavaOne this year?

Oracle have been quiet on the Java EE front since around November 2015 according to public minutes from recent JCP Executive Committee meetings,  which has led to the forming of the Java EE Guardians group forming to rally community awareness and promote the future of Java EE.

This story on The Register just popped up in my feed this evening, with an interesting quote from ‘Oracle spokesman’ Mike Moeller, stating:

“Oracle is committed to Java and has a very well defined proposal for the next version of the Java EE specification – Java EE 8 – that will support developers as they seek to build new applications that are designed using micro-services on large-scale distributed computing and container-based environments on the Cloud … Oracle is working closely with key partners in the Java community to finalize the proposal and will share the full details with the broader Java community at JavaOne in September.”

So there you go. Given that there is already an EE8 JSR in flight (JSR 366) encompassing many other JSRs that were planned to be included in EE8, this statement sounds suspiciously like Oracle has “something else” planned for EE8 that is not the EE8 JSR (“a very well defined proposal for the next version of the Java EE specification”).

In a thread on the Java EE Guardians Google Group, seems like no-one over there has any other insight into this news at this point.

Interestingly, microservices, large-scale distributed computing and containers… this is all very much on target for where EE needs to be heading.

If this is all Oracle is willing (or able) to share at this point, then it will definitely be interesting to hear what they have to share at this year’s JavaOne conference.