Category Archives: Good Tech

2015, Marty McFly, and Programming.

Lots of internet posts, memes, and even videos have appeared to lament the missed predictions for 2015 from Back to the Future. However, one thing is for certain, we’ve seen a lot of other predictions come true.

We may not have a hover-board that will allow us to cruise across ponds, but we’ve got some awesome new tools.

1. Google Android Studio

http://developer.android.com/sdk/index.html

This thing has some real potential. Until now most of our developers have been using Eclipse which isn’t exactly an Android IDE, but merely a Java IDE. Initial impressions: “wow”. Our clients may opt to just build their own droid apps with technology becoming so self-contained and interactive.

2. Wearables

http://www.android.com/wear/

We’re not there yet, but 2015 could be the year. Android beat Apple to the punch in 2014 but Apple is set to release their offering which is sure to inspire all manufacturers to imagine and put their best foot forward. What’s still missing (and we have some ideas) is what “else” can a wearable do? Google Glass for instance, really missed the price point in its first iteration, but we don’t expect that we’ve seen the last of that. On our wrists we want more than a watch, or calculator, or even view of our emails. What can be cleverly fit there? Expecting some big surprises in 2015.

3. Code Automation

http://macaw.co/

WYSIWYG has always managed to stay just a little bit too good to be true. I’m having flashbacks of Visual Studio form layouts that don’t quite look good enough “snapped to grid” only to end up meticulously go to the properties of multiple elements to adjust the dimensions manually. Or gosh, remember the Dreamweaver days of little golden shields? As dynamic content became more functional those little golden shields took over the whole WYSIWYG pipe-dream. 2015 may finally turn designers into full-on coders, but this is probably one of the least likely scenarios in the list today.

4. SaaS

We shall believe it when we see it. 2015 will bring about more offerings, and while Google Docs and TurboTax have managed to establish some niches, other common offerings continue to disappoint. The problem in this space seems to be lack of ambition. Just last week we had a client demonstrate their new provider as they moved from ADP to Abila. It was like a bad movie that makes you want to spend time and money doing the public service of warning the world to avoid. Other niche offerings like FreshBooks or even some of the web-based anti-virus systems are volume based propositions. They exist because they managed to keep pricing very low and volume high. A crap shoot to say the least. This is probably our most off-the-wall prediction in this list, but expect 2015 to see SaaS decline as developer tools continue to enhance productivity and organizations continue the trend toward in-house teams. What in-house team is going to allow their shop to pay FreshBooks any significant monthly fee to do what any decent developer can build from scratch in a matter of a few days?

I imagine that 2015 will surprise us, but we’re off to the races with some of these tools and looking forward to it!

Perhaps the Most Valuable Rare Commodity

most valuable commodity refined codeIf you arrived here looking for a sure bet investment, read on. If you are here looking for insight into software development, read on. If you know nothing about the software development sector then I don’t know how/why you are here but feel free to read on also.

re·fine
riˈfīn/
verb
  1. remove impurities or unwanted elements from (a substance), typically as part of an industrial process.

Gold is worth more the more pure it becomes. The process of purifying precious metals, or plain metals, even crude oil is called “refining”.

People not familiar with the source of their gasoline may be surprised to learn that crude oil requires significant work to morph from the tar black sludge that it starts as to what ends up in our gas (petrol for you European chaps) tanks.

What very few have discovered, despite so much evidence, is that there is a refining process that is every bit as valuable as any of those processes mentioned above. It is why every significantly new software package that Microsoft releases takes longer and longer for consumers to accept. Even with it being forced on them via OEM agreements. It is why Tim Cook had to write this embarrassing letter about Apple maps: www.apple.com/letter-from-tim-cook-on-maps, and it’s why the ACA (aka Obamacare per his request) websites have cost tax payers over $5,000,000,000 (that’s billion) and still don’t work as advertised.

What is this rare and precious commodity? It’s simple, but illusive. It is refined program code.

Last week I was at a client site as a director repeated for me the mantra of Gartner Group about how a corporation should specialize and rely on outsourcing for services that are not part of their “core competencies”.  It’s a popular executive summary that sounds great – to executives. “If you’re not in the cookie business, then don’t try to make cookies. Buy them elsewhere.” As he was explaining how this applied to his organization, how outsourcing their help desk improved his department, a little gray haired director from another department abruptly interrupted us,  pointed at him and said with a Texas accent: “I need you;” and as she pointed across the quadruplex cubicle community she continued: “and you…” Then they all were gone. As they walked away I heard her explaining that they were going to go fix the access level of some 4th participant in this real-time demonstration of how a large portion of the supposedly “outsourced” services get accomplished. The old fashioned way, by still doing it himself. New alias: Director Help-Desk.

When I was a teenager several of my aunts and uncles got involved in selling these small egg shaped balls that looked sort of like a cross between a Cadbury easter treat and a blue freezer block. For just $20 you could toss this in your wash machine and never need detergent again. Or at least for 3-12 months depending on which relative I was talking to.

con·fi·dence

ˈkänfədəns,-fəˌdens/
noun

  1. the feeling or belief that one can rely on someone or something; firm trust.

There’s a big hint above, but wanna venture a guess where the word “con” comes from? Any decent salesman knows that they don’t need to sell a product so much as they’ve got to sell themselves. They have to make the customer feel confident and so long as they accomplish that then the customer can tolerate a lot of disappointment. Needless to say, those goofy little smurf eggs didn’t work at all. The water never foamed. From what I could tell the blue liquid inside it had no way to get out. All the cons managed to sell us on was that washing our clothes with water was sufficient. For those that wanted to believe. For those that had confidence in their salesmen… for them the musty smell couldn’t be their jeans.

This problem isn’t isolated to outsourcing. It extends into OTS (off-the-shelf) software quite naturally. “Does it do ______?” Salesman: “Of course it does!” If you have the gull to ask whether it does it well you may get a more honest answer, if the salesman is indeed honest.

You see, the illusion that tens of thousands of executives, directors, and politicians live with day in and day out is that if they pay more they get more. However cons and salesmen alike know that that confidence is easily misplaced. That it can be quite easy to gain large sums of money for very little in return so long as those aforementioned executives are “confident”.

There is some good country-boy wisdom that applies here: “you don’t get something for nothing…” Oh, wait… that’s not it, it goes more like: “money can’t buy everything.” OK, well, maybe you’ll have to combine the two, because even hicks like me know that spending a lot for a lame horse, or a broken down truck, is foolish. Only in the world of software development could the term “something” really be stretched to such a degree that it becomes intangible.

Actually, the hick in me is reminded of all kinds of quotes: “Jack of all trades, master of none.” … Or, “if it ain’t broke, don’t fix it.” … However, in software development I see all of these ignored on a daily basis. Absolutely no amount of money can buy wisdom, nor can it buy good software without that software being refined by real-world use.

Once you have your “Windows XP” after 10 years and more than a billion users, you cannot easily toss it aside and start over. Not without having a Windows Me, and a Windows Vista, and perhaps more costly and embarrassing failures. Most software customers are guinea pigs. The more niche their “core competency” the more likely that they’ll pay more, stay longer, and and go further than they budgeted for with the vendor they put their CONfidence in.

Simply nothing beats refined software, and if you’re operating in a niche field, with specific requirements, and custom needs, then the absolutely most wise investment you could ever make is in acquiring a talented software developer to catch your vision and build your tools.  To refine them daily as the days require and ultimately perfect them just in time for another “Gartner Group” to come along and tell you how you should be paying for their services, and their premium vendors for their services, or else you’re not “realizing your full potential”. No conflict of interest here though, hundreds of companies are CONfident in them…

You may believe that by refined I may be referring to some of those same OTS products that Gartner recommends. However the term refined does not only mean perfecting a product, but it means focusing it, “cutting the crap” if you don’t mind my inner redneck interjecting one last time. There is little refined about Swiss-army-knife software tools. You don’t need a screwdriver to cut a string. Or some scissors to remove a screw.

So the next time you hear someone attempt to sell you the “core-competencies” line while marketing a one-size-fits-all software package. Just as they reveal the bargain 6-7 figure price tag remember this: you know better than they do what you need. You know your “core competencies” and unless the software is written specifically for that purpose then they’re selling you a truck load of ore for the price of gold. Then don’t be surprised that yet again the next 5-10 years of depreciation consist of seemingly endless frustration at the fact that neither you nor your software vendor are experts at refining ore. Then consider carefully how far that 7 figures (now doubled due to unforeseen “scope creep”) could have gone if you’d just hired your own one-man software refinery in the first place.

Yet Another Use for PHP

A recent project found us integrating an online SaaS with a MSSQL Order Entry system. The SaaS system used the hideous SOAP protocol, but PHP’s SoapClient class made quick work of that.

“Unless you have a definitive reason to use SOAP use REST.”

The order entry system followed Microsoft’s version of the development bible and operated by calling dozens of stored procedures, sometimes many times (reduntantly) over again, with each click. Yet a call out to xp_cmdshell allowed us to exit that limited platform. Finally, speed, was impressive! On modern machinery PHP’s optimized and ultra thin C++ engine is a rocket ship.

So despite the completely unorthodox strategy our client has again had their expectations exceeded. Once the code for their custom interface was moved to a PHP script all scope creep was easily conquered without any threat to the timeline nor any increase in cost. Win/Win/Win (The client/The developer/PHP).

An Expensive Downgrade.

What percentage of development shops are pigeonholing their clients by their loyal adherence to their prescribed stack? Far too many. At V-Tek, we’ve found that .NET often fits quite nicely into our mostly open-source toolbox. Especially when our client already has an MS oriented product.

Everything from raw library-less JavaScript, to RoR coding by convention, should be fair game for a development studio worth its salt. Otherwise the first thing they will want (and have to) do is uproot your existing modules. While uprooting modules may be exactly what you need, doing it only because your trusted developer doesn’t understand them is just stupid. What you already have could be ingenious, but if your developers don’t recognize genius when they see it you may well pay a lot of money only for them to downgrade your system.

One of the most powerful combinations we’ve leveraged somewhat regularly is PHP scripting routines against MSSQL systems on Windows servers. Combine the power of CLI PHP with Windows’ Task Scheduler, libraries like CURL and Sockets, and we accomplish things that other shops have flat out claimed impossible.

So unless you, as a customer, are narrow-minded, then it is best not to hire a narrow-minded development shop that will treat you like a child while they themselves waste your money.

Google no longer a porn site!

It has been a busy quarter around here. Overwhelmed with projects, especially the pet kind. One pet project we’ve been working on for over a year is convincing Wikipedia to stop being a porn site (from within the editor community). While we cannot take credit for the changes that seem to have finally gone live today at Google, we are glad they happened.

So here’s the gist of the change. On 12/12/2012 Google rolled out a modification to its “strict” search function that makes it always either on or off. Even with the filter turned off, Google has removed most of the pornography that it has hosted for years. Sadly, Bing’s control is identical to Google’s old one. So next up, Bing and Yahoo, should stop hosting pornography.

We’ll see if this change holds, but if it does 3 cheers for Google! Now let’s see if Wikipedia finally follows suit, as it promised us so many years ago.

Wikipedia Still Hosts Porn

Are you a Monoglot?

Technology is like a religion for some. If it ain’t in their language it must “suck”. We may be able to thank headhunters and job descriptions for this unnecessary level of specialization. Jobs often come with a laundry list of specific required skills and those specific skills are either the result of a monoglot project leader or the preference of the previous developer. Either way requiring 15 years of .NET programming experience is a sure way to weed out some great prospective brain power. (as well as any honest candidates in this case since .NET hasn’t been around that long)

We often steer folks away from .NET implementations for the simple reason that compiled languages add an unnecessary layer of complexity to the production process & have caused a nightmare for maintainers. I personally love writing C# but can’t recommend it for a web site. Not when interpreted languages are so powerful and often perform better than the .NET VM.

However the title of “sucks” is reserved for a handful of technologies whose developers knew exactly what they were doing. Making products purposely limited to control the user base does suck in the tyrannical, Godwin’s law, way. That’s all I’ll say about that for now.

However, if you are a polyglot you may be a dying breed. Unless you’re careful that work you’re doing now will be the only work you ever learn to do. The more specific your experiences are the less adaptable your solutions will be. Then one day you’ll say, without any embarrassment: “I don’t know how to do that.” … If you are a real technologist that sentence had better be followed by: “ … but I’ll figure out how.” … if it is not, you are probably a monoglot, and you may well find yourself cursed with the ungraceful miasma of obsolete skills. Perhaps your employer will “keep” you because of your obsolete skills, but you’ll be stuck, and it will suck. You’ll rot in your office chair anxious for the day you can retire.

Polyglots like us have the gigantic benefit of never becoming obsolete, we are edge cutters, we aren’t afraid of new stuff, we assimilate new technologies like Cheerios. Polyglots are cool, and we may make a hobby of antagonizing the Monoglots (or “fanboys”) but our license is our knowledge. We can rip on the things we know, it’s what the “fanboys” don’t know that make them entertaining.

If you are a monoglot, stop it. Stop it now! Then you’ll get the joke.

iSad? The passing of Steve Jobs.

Steve Jobs passed away this week. It was surprisingly difficult to come to grips with our feelings on this matter. We do not hide the fact that we are not Apple fans, however there were admirable qualities to Steve Jobs that we cannot deny. We broke our thoughts down to a few main characteristics of the man and his legacy:

1. Trend Setter
2. Business Sense
3. Clever

As we discussed these virtues, we worked through the second layer, what about these virtues made us dislike what Steve Jobs stood for, and the answer was simple, we did not like that the list above was not what those sold out to Apple would list, they would list something like:

1. Innovator
2. Visionary
3. Leader

This is the disparity. In fact in the wake of his passing we have seen claims that he invented everything from tablet computers to mp3 players. We have seen friends lament as though a dear friend has just passed away. We have seen hero worship in the highest form, and most of that goes back to the list of characteristics that he managed to convince those fans were true. That is why we (and others like us) cringe at the praise. It was deception, and many were happy to have the wool pulled over their eyes. Macs are trendy, true, but there is very little in the way of innovation to be found. From mice to touch screens to GUIs, none of these are inventions of Apple, they are assimilations.

So let’s recognize him for his incredible talent, but be honest about what his talent was. He was a fashion designer for gadgets. In a world notoriously lacking aesthetic savvy this turtleneck clad “Coco Chanel” convinced his customers to spend more for a label. It’s brilliant, and it is what fashion has been about for more than a century. My mom can tell you that her Windows computer “just works” … but she does not love Windows the way Apple users love their little Apple stickers. Steve Jobs masterfully created a brand that was loved by many, and that is a talent in itself.

We doubt that the PC vs. Mac war will end soon. The people who get things done on computers will usually admit that both tools will do the job. The most savvy can do more with PCs because their PCs have better specs than any Mac. We do not mind if you want a stylish Mac on your desk, they are prettier than any PC we’re aware of. What we mind is when we hear nonsense about security and reliability come up. When someone makes the generalization “it’s better”… The fact is not only are they not better, but they are worse in many ways. “It just works” another farce. Anyone with significant computer experience can list as many (if not more) ways that a Mac does NOT work, than a PC. My computing amateur friend put it quite nicely when he said: “I know I’ll pay more for less, and that you can do more with a PC than with a Mac, but I like these, they’re really nice.” … That’s what I call an informed decision. Steve Jobs was an artist, as any good fashion designer should be, he was a genius, but not in technology, in style. He deserves respect, but for the right reasons.

As for all of the disinformation and OTT hero worship I’ll leave you with this article: http://www.abc.net.au/unleashed/3318250.html

We voiced months ago our opinion that for many a cult of personality has formed. Cohen (in his article above) does a good job describing our feelings on the matter. Now in his passing quotes are popping up like religious proverbs. Some are wrongly attributed, and others are so uncharacteristic of his actual life that they appear to also be incorrect. There is a real possibility that some spiritual icon is forming around this. I highly suggest a look at Cohen’s article and resisting any urge you have to bring about the, as Cohen says: “beatification of the blessed Jobs of Silicon Valley”.

When You’re Holding a Hammer (Everything Looks Like a Nail)

The wisdom of good programming is pretty similar to the wisdom of good life. There are definitely people in life that are too theoretically minded to be any practical good, but practical seldom turns out to be a vice as long as it is accompanied with skill. So the saying, “when you’re holding a hammer, everything looks like a nail” may be warning us to not be overzealous in swinging whatever power we’re given, but I would contend that in the world of programming a brain full of fantastic tools can certainly ensure there aren’t any loose planks in our projects. Yes, I am encouraging the zealots.

You see zeal is almost never the problem, it is zeal without knowledge that wrecks things. Or worse, the unintelligent whose sole skill appears to be the act of getting in the way. They are quick to bloviate, and raise “red flags” when they meet a zealot, but slow to accomplish any but the simplest of tasks. There are far too many folks out there that scream that the sky is falling as soon as they see a bit of ambition and enthusiasm. I love enthusiasm, it’s one of the things that are impossible to teach. I can teach a guy to code, but I can’t teach him to not be lazy. When character vs. competence, character is top of the list. I’m often amazed at how much energy the unskilled can put into debating a topic, while being completely incapable of contributing. It’s as if they feel that they are the brains, and the capable are just the “brawn”. However, the more capable the capable are, the more these leeches come out of the woodwork squealing in alarm. For good reason, someone who can actually “do”, will make them look like fools, and squeal all the more, like hungry piglets.

So, whatever your involvement in IT remember to spot the warning signs. Look for the guy who does little himself while criticizing the ones who do much. Listen for the empty claims and if you’re really lucky you might even catch a “When I was president I did it this way and it worked.” whopper. A good follow up to such a grand claim would be:  “Can you provide references?” Or better yet: “Time to get your references together, lying like a child is not a trait we value here.”

Hard to Fake

About 10 years ago my wife and I were building our first house. It was completely custom, and the staircase was especially elaborate. In talking to the woodworker who would be doing the railings we were met with a lot of confidence. He said straight out: “I can make anything out of wood.” Isn’t it just fantastic when someone is confident? As our rental lease came to an end and we moved into the house the stairs were still not done. It was one of the only disappointments we encountered in the whole process. It turns out that it wasn’t for lack of trying that they were not done, but for lack of skill. In fact, when he finally did call it done I would soon be appalled. Initially, things seemed ok. Besides the pile of trash he left for us to clean up it looked completed. Then, that evening I was sitting at the top of the stairs enjoying the beautiful view into the foyer of our new home when I noticed something odd. The shadows cast by our perfectly symmetrical lighting were far from symmetrical. The newel posts were not even!

I went on to discover that while the two landings were symmetrical for some reason there were 8 balusters (or spindles) on one side, and 12 on the other! No joke, 4 different. It was terrible, and all started with a 1 inch difference in the position of the newel posts. While my craftsman spoke confidently when it came down to it he had only fooled himself.

There are fields that a person can fake experience and skill. In fact, I tend to mentally categorize these as the “fluffy” fields. They are the opposite of a craftsman. They are based on talk, posturing, and negotiating. Politicians have this characteristic as do many executive positions. Educators also can manage to get by for decades being really quite bad at what they do. What makes a field “fluffy” is when there are plenty of other people to blame when the outcome is negative. A student gets a bad score, blame the student. A state goes bankrupt, blame the previous leadership. A company goes bankrupt, promote the executives.

Programmers are craftsmen. They might be able to hide out on a large team for a while, but there isn’t much fluff in this field. You either get ‘er done, or you don’t. When your work is bad it comes back to bite, and while none of us are immune to obscure browser incompatibilities or unexpected user behavior there are definitely those whose mouths (or sales people) write checks that their skills cannot cash. It’s just hard to fake good programming.

We’re on a very large project these days, and I’m surrounded by some of the most skilled people I’ve worked with in a long time. One of the most refreshing aspects is the humility of people who measure their words accurately with their skills. There’s nothing wrong with saying something if you can do it, but it’s so easy to work when a person is willing to admit that they don’t understand while also being willing to work to understand. It’s a rare gem and the kind of project that has the highest likelihood of success, regardless of the scope. Hat off to my colleagues.