Java 8 Optional

My shop is considering development paths and frameworks.

One Framework path I am evaluating is a homegrown library, small and specific in nature, built on top of Google Guava.

Here is a quick GitHub writeup explaining the issue around null, and how the Guava framework developers avoid it:

Reading my DZone blogs today the top article was this very topic, demonstrating the use (in code) of ‘Optional’, which has made it’s way into the Java 8 VM.

And beware of those NULLs!



Modern Software Engineer

Here is another fun blog I read, but it was kinda long:

Are You a Modern Software Engineer?

The author develops a picture of different developer types and presents a highway analogy for the number of lanes a developer career can travel.

One case presented is the “Full-Stack” Deep and Broad knowledge developer.  In my many years experience thus far, this person doesn’t fully exist.  They are usually deep on one end (say the back end) and shallow on the other (the front end for instance.)  They can function as an expert in one area and get by in another.

It is a good read and I highly recommend it.  Then put yourself in the matrix and ask yourself where you land.

Microsoft Windows, Clean Coders Nightmare?

Microsoft? I can hardly ask Microsoft “who?”, because they are still a major standards setter in various ways: Office Application, User Interface, MSDN C#, C++. Then there is the X-Box, possibly the best gaming console out there, with a refresh coming probably by the end of the year – or at least by early 2014. They are truly a leader. And a leader with what most will agree are good products.

But then there’s windows. *sigh*
I like windows. Really. It has a lot of nice features. And with the Aero interface, it is really slick. I’ve worked in it for years. I can manipulate system settings, dealing with services, Environment variables, DOS/Command line. I am quite functional/productive in that environment. But it is fat. And unsecure. Add virus software and it requires at least a Core i5 processor to move it with any reasonable speed. Then there are articles/blogs like the one below that remind me of its weaknesses. The pull quote below speaks to the underlying quality of the product I am installing:

Anonymous MSFT developer admits Linux is faster than Windows
There’s also little incentive to create changes in the first place. On linux-kernel, if you improve the performance of directory traversal by a consistent 5 percent, you’re praised and thanked. Here, if you do that and you’re not on the object manager team, then even if you do get your code past the Ob owners and into the tree, your own management doesn’t care. [ … ] Incremental improvements just annoy people and are, at best, neutral for your career.

Improvements are not noticed or cared about by management, and mostly annoy people and are at best, neutral for your career.

The above statement is not unique to Microsoft, and in any other shop is not earth shattering to any major degree. Frankly, I’ve worked in shops like that. This would even explain why windows is so fat to install. {Do we recall when the Macinstosh OSX footprint actually shrunk a few versions ago?}

The problem is Windows is Microsoft’s flagship product. One would think there would be better care taken with the flagship name. If Windows stumbles, the Microsoft boat is not just rocked, but threatened with a good-sized leak in the hull. And there is a difference between the quality of code going into an internally used application at a financial institution (say your banking web interface of mobile app, or a CMS at a mortgage company) versus your operating system. This dictates the day-to-day user experience.

There is something to be said striking a good balance between cleaning up existing junk and pushing forward requested new features. Ask Bob Martin, the original Clean coder ( and If this MSFT anonymous blogger is accurate, Windows gets the knocks it rightly deserves. {I do not discount the possibility this blogger had a moment of being disgruntled and decided to write about his feelings, globally.}

Often, this is a cultural thing – established by the company founder. I trust Bill Gates never cared about the holistic beauty of his software. His attitude, starting with QDOS (Quick and Dirty Operating System) up to Windows 3.1 (A lousy, but popular response to the nice Macintosh mouse driven interface,) is demonstrated to be: just get something out there (a.k.a. “Git er done.”) My inside-software industry observation, not direct knowledge.

My prediction: windows will continue to be bloatware installed on a majority of PCs worldwide. Microsoft will continue to have hits and misses. Price point accessibility and usability are key. LInux is still too geek oriented. Mac OSX is on premium priced hardware.

Considering the mobile tablet market: Surface? “Puh-lease!” I enjoyed writing this blog on my iPad, which I will sync to my Core i7 windows 7 machine later today :).

** Highly recommended for developers: Robert C. Martin’s Clean Code books on Amazon.