Pages

Tuesday, May 2, 2017

In response to a statement about 9 to 5 developers never becoming engineers

(original post)
Ah, be careful with the stereotypes and labels. Developers that don't care will never be software engineers. This is true. Shift workers don't always fit into that category. Personally, I don't often learn much at conferences. As you've said. It is available online. Corporate environments often squelch the engineer out of developers. Concepts such as, "if it ain't broke, don't fix it" and "if we don't have a client paying for that improvement, we aren't working on it" are hard to fight. Getting creative and working the item to improve into a client's bill feels dirty for most, but "the ends justifies the means", right?

If you've ever watched any of the Gordon Ramsey cooking shows, most individuals are accused of having given up at some point. Development in a corporate environment often causes this, but doesn't highlight the issue. I often try to gauge where a developer stands by offering a suggestion and seeing if they follow it. Giving them the choice between paths will show where their interest and mettle lie. I'd once read that you don't want to hire 'b' players. You've described the 'b' player quite well. A 'b' is strong enough where they don't feel they need to grow, but not motivated enough to push themselves past that point.

A true leader, not just an engineer, is able to take this complacent individual and push them. Most middle management is management, not leadership. In development environments with strong leadership - the apathy levels are low. In development environments with strong middle management, the apathy levels are much higher. As for anyone seeking their next position, keep an eye out for weak leadership. It will either be an opportunity, or a demise.

Monday, January 11, 2016

5 Signs your development job is in trouble

Today I am a senior software engineer at Mattersight, a SaaS company. But it has not always been that way. Five years ago I was starting my first true software development job as a junior developer at NCSoft. 10 months later, as the most recent hire, I was let go in a round of layoffs. I've had four years to think about it, and can see at least five indicators that it was not a good position for me.

Programming language paralysis
Coming out of college, I figured I was capable of learning any language needed by a reasonable development team. Scripting languages in particular were my strong suite.  Then I met Perl - and found a language that just didn't click.  I tried my hardest to really grasp the language. I even made quite a bit of headway.  But, it still wasn't code I wanted to show off.  Quite honestly, it was confusing - and it paralyzed me.

Had I been in the job longer, I might have recognized just how serious this issue was. Or, I might have realized that there was a deeper issue at play. 

Objective Unknown
One of my early tasks was to groom the backlog. Find a ticket I thought I might be able to handle and show initiative. No specific target, no true goal. I started in, got my environment all setup, and then the backlog blues arrived. This continued for a while - maybe it was a good starting task, but mostly it involved asking the senior dev's how to fix their bugs. 

There was a good amount of time that did have an objective, but with these exceptions, there wasn't a clear objective.

The 'strike force' team, no, that's not you.
Now, this by itself is not a huge issue, but, it can be an indicator. For me, the stealth team concept is a harsh one. Let's grab these few devs, stick them on a project, and sequester them. If you're on the team, you're probably somewhere you are supposed to be. If you aren't - and you aren't doing anything you appreciate, maybe ask about it. I didn't, but I should have.

Communication: Zero
One thing I ran into as time went on was a drop off in communication. I had finally gotten a good strong project.  I went after it with a gusto. Along the way I asked my supervisor questions about my approach, and conferred with others.  I thought it strange, but I did not get much in the way of feedback. In fact, I didn't get much in the way of any communication.  But, I had a project.

As the deadline neared, I finished up on my work.  At this point, the department head wisely instructed a different senior dev to review my code. Turns out, it had a security vulnerability.  A rather large vulnerability according to the senior dev.  It was something I'd specifically asked my supervisor about.  Now, I don't blame anyone but myself for missing the vulnerability. However, had there been communication, even minimal communication, the project would have been steered in a better direction at an earlier point.

Doing nothing
Unlike the other issues, this one is probably the most significant.  If you are not doing something, then you are not needed. And towards the end, I was not doing anything. Sure, I hit the backlog - but in the end, I was no longer producing.  In fact, many were not producing. And there were layoffs. My advice, if you are not doing something, reach out.  If you are still not doing anything, get out while you can.

A Final Note
There were many political motivations for my layoff, but not politics I was party to. An exec left the company, and everyone hired under his vision was laid off. Or, if they were exceptional, replaced someone less exceptional.  I had a lot of family issues that summer (I could write a book!)  But my performance was, from self evaluation, mediocre at best during that time. Had I known what to look for, I would have seen the layoff. But I did not know what to look for.

Saturday, January 2, 2016

Five Real Problems with Windows Phone

Five Real Problems with Windows Phone


Windows Phone seems like a solid device, the development environment is straightforward, and getting an application to run on the system is easier then either of the competing devices. Why then does a phone that seems to fit the bill fall short of adoption? Sure, there are some diehards out there, fanboys if you will, but the general populace doesn't go for the windows phone. Many articles on the internet have a few stereotypical reasons for failure, but these are never truly explored. 


5. Insufficient market share

“Windows phone isn't making it because it just doesn't have enough of a market share.” I've seen this in a few articles out there. Highlighting the symptom as the cause. Market share, or lack thereof, is a symptom of how well a product is doing. A market saturated with a specific device indicates a strong infection, just as a weak market share indicates a problem with the product. Any article outlining the symptom as a cause should be ignored at the least, and, removed from publication. But nobody removes articles off the internet. 


4. There just aren't enough apps (part 1)

Almost every single article I have read about a problem with windows phone is quick to highlight the lack of apps in the windows store. They don't go into detail, just that, windows doesn't have the apps. Microsoft even acknowledges this by showing consumers a side by side of apps one would use on the android and the equivalent app on the windows phone. This highlights one issue clearly. If you want to use a windows phone, you have to use the windows version of major apps. Yahoo! Mail for example: On android, you have a Yahoo mail app. It works great. When you try out a windows phone, you search the store first thing for Yahoo mail, and what do you get? Some yahoo app about cricket, a few 'scam' yahoo apps, and no yahoo mail. The conclusion? Windows phone is missing an app. Now, the app isn't really missing. It turns out windows phone integrates Yahoo mail directly into their primary mail app, along with gmail, and many others. You no longer need a messy individual client mail app, all of the mail is easily managed in the standard mail client (and it really is solid). 


3. There just aren't enough apps (part 2)

But wait, there's more. The real missing apps, are the 'popup' apps. Some startup just made an app, the pushed it to android and iphone, but not windows phone. Why? Well – the whole market share thing. Maybe, but that just makes this a symptom of a symptom. No, it isn't a chicken and egg issue. Here's what's really going on. Most android / iphone app dev takes place in a Java environment. Sure, iphone has iphone specific methods, and, android has android specific methods, but, when you get down to it, the source code I mostly the same. Not so for windows phone. Windows phone has c# as a source for apps. I've built apps for all three phone types. Windows phone was by far the easiest. However, it doesn't port – you cannot easily take the code from the windows app and push it to android. And this is where the real reason for missing apps occurs. 


2. There just aren't enough apps (part 3)

Yes, I'm going to harp – turns out this is the biggest reason windows phone is weak. The other missing apps that we don't see on Windows Phone are those of their major competitors. You don't see gmail. You don't see yahoo mail. You don't see google plus. No, good chat – no yahoo chat. And forget even thinking about an app from apple. These apps, which people use extensively on other devices, are what really kills windows phone. People get used to their apps. They want the same thing that worked on their old phone to work on the new phone. An example of this is the Camera on my windows phone vs. my wife's android. Both take roughly the same photo, but, the interface is so different – both of us get lost when trying to use the other. 


1. Microsoft first glutted, then starved the market. 

When the windows phone first truly got going, Microsoft pumped a bunch of different model phones into the world. The low end, the windows 7.5, the mid range, the high end, and so on went the list. There we so many different phones, it was worse then finding an android in the desert. Apple has 2 distinct current models. Samsung, the most popular android line, has 2 distinct primary models. And then, android has a bunch of other random phones, (Not experience regarding HTC at this moment). Microsoft tried the android approach and produces phone models until there was no tomorrow. Literally, tomorrow stopped for windows phone and the starvation period ended. Recently, microsoft ended the starvation period with a behind the times double offering. Yes, microsoft correctly identified the dual phone strategy. However, the new phones are biased towards AT&T, and, unlocked, only work with one additional carrier. The starvation continues. 


Conclusion

All in all, Microsoft feels disconnected from the consumer. They want developers to write apps, but they don't address the fact that it isn't developer's apps that are missing, but rather major competitor's apps. At this point, the stereotypes are in place. The apps aren't there, it's the third wheel, dev's don't like the software. In order for windows phone to go anywhere, my biggest suggestion would be to get Google apps, and some of the highest rated google store apps into the windows store.

Friday, September 11, 2015

Understanding how the Y2K bug affects Big Data

It recently dawned on me that Big Data has the same problem as the y2kbug. Now, some people are probably familiar with the whole mess behind the scenes, but in case you aren't, back in 1999 the y2k bug was all the buzz. The world was going to end, people were filling their stockrooms, and everyone was discussing what would happen. I was 12 at the time and didn't really understand the significance. Someone described the two numbers used to know the current year as a two decimal slot 'thing' and that computer would jump back to 1900. I however was not worried as my dad worked for the government, and he told me there was nothing to worry about. As we transitioned into the new millennium, we all found out there was really nothing to be worried about.

Now for some technical background. For those of you who took an intro to programming, or are familiar with the original bug, this might be a bit boring, but here goes. Computers run on 1's and 0's, on or off. It takes a combination of 4 1's and 0's to represent a decimal, 8 for two decimals, etc. These things are called 'bits'. You may have heard of a 32bit processor, or a 64bit processing. At its simplest, this means the processor looks at groups of 32 or 64 bits respectively. Programming languages represent numbers inside of these groups. A basic number, an integer or 'int' takes 32 of these bits. That means, the largest an integer can be on a 32bit system is 2,147,483,647 (there's a trick where the 32nd slot indicates negative or positive. There are, of course, other representations that go larger then 32, this is just the most convenient when programming.

Suddenly, without warning, alarm, or anyone even noticing, disaster strikes.

Let's use a 'for instance' of a programming deciding on his new project. He has to keep a record for every time the phone rings at his company. He naturally uses an 'int' and all is well. His program and the data storage works so well, it is integrated into a large component, and, in a SAAS model, more companies are added to the list. Soon, the count starts growing faster. A few years pass, the original programmer finds a new job, and time passes. Someone even notices the number getting larger, and adjusts the type in the database to handle larger numbers. Suddenly, without warning, alarm, or anyone even noticing, disaster strikes. The number becomes larger then the integer can handle. Time passes further. The database number keeps growing, but the code got stuck at the limit.

There are many ways that failure can occur. Reports can go awry, systems can crash, and data gets lost. Even the best plans around such a transition miss things in a large code base. Unlike its inferior cousin, the big data y2k bug has no fanfare. Now, if you know a software engineer that has maintained a system past the 32bit mark, make sure to congratulate them with a party worth of the new millennium.

Sunday, September 6, 2015

Book Review: Changeling by Roger Zelazney

Changeling by Roger Zelazney, is a book of magic, dragons, and parallel worlds. Written in the 1980's (or 70's) it is a book attempting to outline the problem of going to far in one direction.


The book starts off detailing the fall of a magic empire. The ruling sorcerer is alluded to having taken magic to far and dealing in the black arts. From this point, it springboards into a take off the rise of a new magic, a new mechanical, and a new simpleton approach. The large question it tries to answer is if these different powers can live together, or if the strength of one can snuff out the other.


At the time of its writing, this book sends to approach the problem of technology advancing faster then it can be controlled. Of tensions between major powers, and
keeping power balanced.


In all, the book was a quick, less then four hour read. It was an interesting read, but just didn't have the depth it could have. The plot was linear and predictable. And new concepts appeared whenever the protagonist needed them. 3/5

Saturday, July 18, 2015

BlueStacks Android emulation for Gaming.

Today I downloaded BlueStacks in an attempt to play an Android game with my wife.
BlueStacks Langing Page Image
Bluestacks 'Home' Page.
I do not have an Android device, and most of the time it isn't a problem. After a fast download and a regular MSI style install, I started the program and voila! I had a working android emulator. After starting it, I looked up the game, installed it, setup my Google account, and the game started. It was that simple.

After starting the game, there was a little bit of trouble with an app crash, and the form factor kept switching between landscape and vertical projection.  However, restarting the app after the crash and everything worked.  I also found out that this occurred on an actual android device, so it looks like the app is to blame, not the emulator.  I also checked my local system's resources and they appear to be quite reasonable.
7.1%+4.0% CPU | 175.8mb+3.6mb Memory | N/A Disk | N/A Network
PC Statistics while running Battle Camp inside BlueStacks

In all, I would say the emulator functions within expectations and I was even able to play the game I had intended to play. Definitely a cool thing.

Post Mortem: BlueStacks started requiring games to be installed or a $2 charge. Reminiscent of an old 'freeware' license, a new sour taste has definitely arisen.

Tuesday, July 14, 2015

Popular Robots or Artificial Intelligences of SciFi Television

There are four stereo-typed 'robot' styles seen in the greater universes of  SciFi. Some of these are more endearing to us, with 'winning personalities', human characteristics, and almost always, a mind of their own. Many of these Artificial Intelligences share similar features, and, aside from looks, are even built closely.

Multi-presence
Commonly represented as a ships computer, the multi-presence is everywhere within a limited space. HAL 9000, Star Trek's Ship's Computer, or Extant's B.E.N. all easily fall into this category. The multi-presence is often portrayed as cold, calculating, possibly sentient but never truly emotional. In the Star Trek computer, there is never truly a point where the machine moves out of being a voice recognition algorithm - it may get 'hacked' and appear that way but it never truly happens. For others, there is often an underlining angst associated with a multi-presence. The computer has some alternative internal directive that provides the angst and makes the machine seem inexplicable and capable of things it should not be. This angst, and the desire and possibility to actually have a multi-presence drive the popularity of these Artificial Intelligence systems.

Android
The Android, a human representative machine, is by far most widely recognized by the character Data from Star Trek. Often appearing nearly human, Android's come close to being fully human representative, even down to the point of emotions.  Often, emotions are a point of struggle for an android, expressing them, understanding them, and just plain knowing what to do with them. Other examples of Android include: The Android from Dark Matter, Ethan Woods from Extant, C-3PO from Star Wars, David in Prometheus, Bicentennial Man, A.I, the Terminator, and even Judy Cooper from K.C. Undercover. Androids can be extremely relate-able, and are often cast as quirky. An alternate portrayal is also common in the cold and distant android, such as in iRobot.

Drone
There are not nearly as many examples of drone's in popular SciFi. Aside from the Replicator's, these drone types are not usually seen. Extremely difficult to portray as emotional or even intelligent, drones just do not make a good splash on the big screen.

Non-Humanoid
Non-Humanoid robots are probably the most popular of the lot. Throw a plastic container and toilet paper rolls together, add some sound effects and voilĂ , a robot prop is born. Because of the ease of creation, and the easier audience identification, we see these all over the place.  However, there are some of these that draw a distinction of their own, the Sentient Non-humanoid robot. R2-D2 from Star Wars, The Robot from Lost In Space, are just two of the sentient forms of these robots.  Often extremely quirky, the lack of human physique can make them more difficult to relate to and humor is often a mechanism to draw the viewer into the character.