Windows 8

Windows 8 Launch

Windows 8 Launch (Photo credit: Dell’s Official Flickr Page)

If you read any of the technical reviews on Microsoft’s new operating system you will quickly come to the conclusion that Windows 8 is a failure.  Despite the disappointing sales in general in the PC industry, is the OS as bad as everyone says?

The short answer; YES!

First a little background so you know that I am not just a biased Mac user looking to pick on the Software Giant in Redmond.   I have been using Microsoft products since the mid to late 80’s.  I own 3 laptops in my home that are all running a flavor of Microsoft Windows.   My work computer is a DELL Latitude running Windows 7.   My day is spent typically within an IDE on a Oracle Linux VM that I attach to while using Windows 7.   I own 1 Mac but we are not an iPhone home and instead run Android OS based phones.    I started my career off programming in Visual Studio in the early 90’s and did that until about 2000 when I switched over to Java full time.   I believe competition is the greatest motivator for innovation and want every company to release excellent products to push those boundaries.  I have been through every rendition of Windows except Vista.   I personally am a huge Windows 7 fan and think it’s way better than Mountain Lion.

So with each new release I am hoping that we get one step closer to an interface that is all things to all people and is simple to use.

Unfortunately this OS is not even close and is probably a step back from Windows 7.  Why?  Because it’s UI design is horrendous.   I get the premise in that MS wants to create an environment where a user can go from one MS device to another and feel a seamless experience.  Simplicity from device to device has it’s merits.   But for a power user like me.  One who wants to get a job done and get it done efficiently this just doesn’t cut it.

After installing Windows 8 on a laptop previously running Windows 7, and purchasing a brand new laptop for my wife for Christmas I have come to the conclusion that this operating system isn’t worth the upgrade.  Right of the bat, the most annoying thing to me is the assumption that we will all be using a touchscreen interface.  While this might be true in the future, today companies aren’t making good enough hardware to make me want to buy something with a touchscreen.   I prefer using the standard keyboard and mouse input methods, which I have been using now for the last 30+ years.  If someone can come up with a better paradigm without the inherent problems of touch I am all for it, but right now the idea of touching my laptop screen and leaving streaks across it, just doesn’t appeal to me.

The whole swipe thing..  Really?.. I am using a touchpad, not a touchscreen.  Why is it that common gestures on my touchpad bring up running applications or the “Charmes Bar”, if ever something could be named horribly.  At first it’s hard to even fathom what these gestures are.. or what random applications pop up without understanding why?     Secondly, has anyone ever figured out how to close a metro style app?  I still haven’t.  I don’t think hitting the windows key does it, but it switches the screen a back to the start screen.   Like the video above suggests.. why is this even a start screen.  I mean yeah it’s in your face right fromt he start.. but is that good enough reason to name it a start screen.  Come on Microsoft, all that cash on hand and you cannot figure out a better name than start screen.    Remember you did a way with the start button, now how about we do away with the name start everywhere in your OS.  Can anyone tell me why the swipe feature isn’t turned off by default if you don’t have a touchscreen interface?

The utterly stupid idea that the mouse in the lower left corner brings up a little representation of the “start screen” which if you click on it, will actually display the start screen.  As well as the idea that hovering in the upper right brings up the charmes bar.  Okay whatever, if you must make this mistake.. then how about you make this useful.  Why is it that my mouse doesn’t want to stay in your magical corner boxes?   I am a techie that has been using various mice since the 80’s, and yet I seem like a drunken idiot when taking the Microsoft magical box test.  In the future all cops should bring a copy of Windows 8 with them and use it to test potential drunk drivers.  If you can get it in the box in 10 tries, you are free to go.   Crap.. I just tried and apparently I am well over the legal limit!

The completely silly concept of the old desktop and the new metro style interface.  It’s like 2 OS’s pasted together to satisfy someone’s odd need to bridge a gap – OS2 anyone?.  No you don’t need to bridge a gap Microsoft.  You just need to continue to sell Windows 7 for people who run Windows 7 apps, and make a full break for Windows 8 by stipulating a set of requirements that OEMs must meet in order to bundle Windows 8 with their hardware, and only run these Win 8 type apps here.  That way your user base has options… oh gasp options, why on earth would you want your user base to be happy?!  For users who really want to use the old Windows 7 style apps, offer a really low subscription price to your online suite.   Or default the desktop with all the functionality of Windows 7 instead of the metro start screen which is just becoming an annoying little stop gap between where I am and where I want to go.

The lack of apps in the app store is appalling.   I really don’t need 500k or 1 million apps most of which aren’t useful to me to consider the app store useful.      I just need productivity apps that make my job easier.    While the concept of an app store is new to the Windows desktop world, the Google Play store and the Apple App Store have such a head start it makes the puny amount of apps in the MS App store just another reason not to move to this platform.

One thing I do like is the use of the Windows Key + another key for shortcuts, but I am pretty sure this isn’t going to be a big selling point with your typical user.   I am used to using the VI Editor on Unix based systems so keyboard shortcuts are really useful for me.   But a typical user won’t want to remember these because as is the paradigm that they are used to, they just want to point, click and go. But MS couldn’t even get this right.  For instance to search the app store for a particular key word, the key combination is Windows Key + Q!  Not S for search, but Q!  Why Q?  Was S really taken?

So if anyone in the Microsoft world is listening people are getting tired of your mistakes.   For a long time it was the “Blue Screen of Death”.   For the most part you have done a much better job with Windows 7 in that regards.   Then there was that disaster that was Vista.   Now we have Windows 8, that while not as bad as Vista is surely not what you ideally would have liked.

So I have to ask..  for such a large company who has had tremendous profits year over year for a long time, why is it that you can’t seem to hire a good UI team and give them power over driving the OS?   You either must be hiring the worst of the worst, or your organization is so convoluted you just can’t make good decisions.   If this was Steven Sinofsky’s vision you did the right thing by canning him.   I seriously hope your entire board and your leadership teams are FORCED to use Windows 8 every day and can take off their rose colored glasses to truly evaluate it.  The old concept of eating your own dog food is put in play by many companies and in this case I would like to see Redman adopt this philosophy if they haven’t already.

Posted in Android, Microsoft, UI Design, Uncategorized | Tagged , , , , , , , , , | Leave a comment

ADF Wow!

Disclaimer:  The words that follow are my own and are not representative of Oracle nor it’s subsidiaries.  While I work for one of the leaders in our industry in technology and business I do not write this blog with the intention of representing them.  These thoughts are purely my own and as such I take full responsibility for them.

I have been really struggling with coming up with a post about ADF since I started working in the Fusion Apps development group at Oracle in June of last year.   Firstly, I didn’t want to start posting on how to solve common problems, as there are a lot of blogs out there that already do  this.  A simple google search for whatever problem you are having will reveal this.   Many answers can also be found on YouTube with step by step instructions.   Secondly I didn’t want to sound like an official Oracle blogger giving insight into the direction of the framework – my role at Oracle does not afford me with that ability.   Lastly and probably the most important, I needed to be careful in what I posted as to not give away any trade secrets, specifically how we handle things in Fusion.

So what I decided to do is compare an industry wide common stack that I have used; Hibernate + Spring + JQuery to Oracle’s ADF framework.     This will allow me to steer clear of specifically addressing any Fusion development and allow me to refresh my Hibernate and Spring experience.

So without further ado let me start by making some observations.

Am I A Lazy Programmer? Oh Hell Yeah!!!

First of all I like easy.   With all due respect to Staples, their easy button commercials have nothing to do with buying paper.  It’s me in a nutshell. I really should have a shirt with an easy button on it, stickers on my car, and an easy button on my desk to represent who I am.    I cannot stand to work with anything that has been made overly complicated just to solve problems that rarely come up, while making solving real world every day problems difficult.  I do not like API’s with optional parameters.   I do not like using a bunch of config files just to provide the ability to customize an application that will be customized in only rare circumstances.   If it takes me more than 15 minutes to figure out what I need to pass to your interface to make it do something, your interface is crap.

Secondly I really like writing test code.  I spent 13 years traveling the country trying to implement code that wasn’t well tested.  I learned through this firing squad indoctrination to poor coding practices how utterly important it is that code does not fail when it’s being rolled through the staging process.  Once code is in production errors become incredibly difficult to debug, and by design incredibly expensive to fix.  You do not want your customers dealing with this problem or your reputation will suffer.

Thirdly and this is really an extension of my first point.  I like code that is small.  There is never a need to have methods with 1k lines of logic in them.  That’s a different kind of lazy.   That’s the kind of lazy that says “I want to justify my job by making this so difficult to understand only a Senior level engineer could maintain this.”   Well I want to write code that is so easily understood that a Junior level programmer can pick up what I am doing.   If you don’t agree with this, read the book Clean Code – A Handbook of Agile Software Craftsmanship by Robert Martin.

Lastly I am an examples guy.   Documentation if it’s crystal clear and straight forward is helpful.  However in most instances it’s written by a developer for a developer who has intimate knowledge of the subject at hand and and it’s usually out of date.    Maybe this stems from how I learn – by doing rather than by just reading or listening.  How I came to learn this way I will never know, but if I don’t see examples and only see poorly written documentation I will not be recommending your framework to my colleagues.

So anything I say from this point forward should take these statements into account.
My Impressions of Hibernate+Spring+JQuery and ADF

Spring is easy to learn and incorporates two very popular design patterns right out of the box.   IOC (aka dependency injection) and the MVC pattern.   Lately I have been asking all the candidates I interview about the MVC pattern and I am often utterly blown away by how little most know about this.  Most candidates get confused about what a controller is, and where the business logic lies.  But, even the ones that seemingly know the pattern don’t know why a project team would choose to use it.   Very few(like 5%) knows what IOC is or if it’s useful in testing.   I am not sure why this is, but it seems to stem from the fact that very few people test their code.

Spring makes Dependency Injection incredibly easy, thus giving the programmer the ability to mock objects and test logic flows.

Also a simple google search will return hundreds of thousands of hits with real implementation examples on how to deal with particular issues.  So that is a huge plus for Spring + Hibernate + JQuery.

But ultimately using 3 different frameworks has it’s challenges too.

It is easy to create an ADF application without knowing ADF at all.  Yes this is the case and as a matter of self preservation, I can’t say that I am overly supportive of that.    There are a multitude of demos on the Oracle ADF site that detail exactly how you can create pretty complicated web apps rather quickly   These examples provide a great way to learn how to implement the different concepts in ADF, though they don’t teach you  a great deal about why you would make certain design decisions.

ADF is very much based on the MVC pattern, as well as a few other important ones such as the Business Delegate, the DAO pattern, and of course the Singleton pattern.  Many others are used but these are the most frequently interacted with.

With that said, ADF is not easy to learn.  Sure you can turn around a few apps really easily but beyond that when you start asking all the how to, or better yet, “how best to” questions, this is where it can get fairly complicated.  On this I am still withholding judgement because I am inclined to understand that its intention is the whole web application stack.

One of the main differences between ADF and Spring is that Spring is an application framework, but it’s not an ORM or a view component library.  You often have to implement much of the ajax code between the user interface and the backend with different helper libraries.   ADF as a single framework, also encompasses the ORM layer and the Component View layer.   This gives the programmer the freedom to not have to worry about so much plumbing.   In ADF I never have to create Entity Objects, then wire them in a config file.  Creating specialized views of data, so as not to expose everything within a table or even an entity object to a consumer of my model objects is also extremely easy in ADF.   This is why I have decided to not just include Spring in my analysis of the two frameworks but instead also include Hibernate and JQuery.

So stay tuned while I dive deep into these two application stacks and compare many of the pluses and the minuses I have found while using them.

Posted in ADF, Comparison, Design Philosophy, Hibernate, JQuery, Spring, Testing | 4 Comments

Why I Hate Best Buy!

I need to give a shout out to two companies I have dealt with recently.

Garmin; My wife bought me a Garmin Forerunner 610 GPS watch back for Christmas. In March of this year the band broke. I called them up, gave them my S/N and they sent me a set of replacement bands without even charging shipping costs.   

Black Diamond; I sent them an email saying the headlamp I bought in the Fall is not recharging. They responded by telling me that they will send me a replacement one after I returned the one I had.  This might take a few weeks as we exchange but they didn’t even attempt to ask me when I had purchased it.

Compare that to the service you get at Best Buy.   Take the example of my wife who after 32 days decided to return a set of head phones that did not fit well in her ears well.  She wore the headphones once, and they cost $20.  After explaining the problem with the headphones to the service personel they told her that their policy is 30 days and they can’t open up there return policy to everyone because they risk losing a lot of money.  Really?  Do you know how much money you will lose for being a horrible company? 

Guess what, now I am a Garmin and a Black Diamond lifetime customer. At the same time, I will never, under threat of death, step foot inside a Best Buy ever again.

Posted in Uncategorized | Tagged | Leave a comment

Long Time no Posts!

It’s been a while since I have published my thoughts on technology here in this space but I intend to change that.

The reason for my absence has been 3 fold.

1.) The job at Oracle has really caused me to be focused on learning the Fusion stack as well as ADF.  One alone would be a monumental task, but both at the same time has been a bit like climbing Everest.(which is a recommended task if you can)  I intend to comment on this, but I will have to be careful not to give away to many trade secrets.

2.) The birth of my son.    He is my world now, and getting time away to share my thoughts on technology just hasn’t been as much fun as watching the little guy grow.    Some day if he reads this, I want him to know he is the greatest gift ever!   He was born 6 weeks early, and his first week in this world was spent in the NICU.

3) Marathon Training – you may or may not be surprised by how much time this takes.

However there are a lot of subjects in the near future I want to comment on.

  • ADF
  • Enterprise Application Development
  • Testing

Two recent books I have read —

  • What Would Google Do
  • The Biography of Steve Jobs

Personal Tech

  • The technology that keeps kids alive in a NICU
  • My new GPS watch from Garmin.

Lastly recent interviews I have done and the trends I am seeing.

Aside | Posted on by | 2 Comments

More On Find

At Oracle we do our development on Linux VMs running in one of our Data Centers.   Because of this I have had to get real familiar with various linux/unix commands.   I find this one particularly useful.

find . -name “*.jar” | while read LINE; do grep STRTOFIND “$LINE”;done

For STRTOFIND replace this with a classname and it will print the .jar’s that reference that class.

Posted in Commands, Find, Linux | Leave a comment

ADF and Oracle My New World

I have made a move into the ADF world as I have returned back to Oracle to continue on my career path. The next series of articles will deal with ADF ramp up and my impressions of the technology as I get used to using it.

Posted in Uncategorized | Tagged | Leave a comment

Grep For It

Ever try to find a file with a particular character starting a line.

Try this..

grep -H -r ‘^W’ *.*

This will print out the file and the text of the line that matches your regular expression.  In this case ^W means lines starting with a capitol W.

Posted in Grep, SunOS | Leave a comment