Jarred Capellman
Putting 1s and 0s to work since 1995

Sunday, August 24, 2014

Some Updates

Posted By Jarred Capellman

A couple updates since my last "what I am doing" update back in July, still been extremely busy with the Baltimore GiveCamp MVC 5 Web Application and work itself. In between everything however, I have a few announcements.

First off, jcBENCH has a new compare results feature on the web site where you can compare up to 3 results with a bar graph. This feature will make it to the Windows Store and Windows Phone 8.1 apps in the coming weeks. In addition a new OpenCL enabled version is near BETA, just have to add error handling and do more testing. The OpenCL client will be released for Linux/x86 and Win32/x86 initially with a MacOSX/x86 release to come later.

A project my wife requested a few weeks ago is in the Windows Phone Store: jcTRENDNET. This application allows you to remotely view and manage Trendnet IP 751 WIC/WC cameras. More features to come, but a pretty feature filled 1.0 release.

The larger project I mentioned in my July update, is still being worked on. I ran into some huge technical hurdles, that while not impossible will require some extensive work to even get cranking with something of substance. My latest work has been leading me to design my own language to be interfaced with C++, but I'm still working out the short and long term goals.

Lastly, for the last week or two I've been attempting to get back into game development. After a good start last August, I lost momentum after 2 weeks or so for two reasons: last of mapping out what the game would be and other projects. This new idea is modular in the regards that the base game isn't terribly complex, but future features can be added on to enhance the game. At least initially it will only be a Windows Phone 8.1 game, but more than likely a Windows Store 8.1 game as well. I have yet to find a game that can captivate my time on my Lumia 1520 so this should solve it. More details to come with a release when it's done to quote id software.

Sunday, August 17, 2014

What is wrong with Maryland Programmers

Posted By Jarred Capellman

What is wrong with Maryland Programmers? I originally wrote this blog on 7/5/2014 on the long flight from Phoenix to Baltimore after an amazing vacation to Silicon Valley (my 2nd of the year at that time), however I had spent some time over the last month thinking about what I had written and provide an expanded view of the title: What is wrong with Maryland Programmers?

As the blog title suggests I’ve unfortunately been previewed to several software developers that I feel are nothing more than glorified typists who have gotten to a certain position and/or invested the time to learn a technically and then stopped for one reason or another. There are some legitimate reasons that I’ve heard: Kids (and getting married), graduate degree, the day job and the most classic “I just don’t have the time”. I’m reminded of one of the more memorable lines The Matrix Revolutions, “if you never take the time, how can you have no time?”

There are certainly times in which I need a breather, escape to Silicon Valley to my head or get lost in a great game (like Mass Effect), but that shouldn’t become a norm in my opinion. The software development industry changes so rapidly and dramatically that taking a “break” for a few months could be extremely detrimental to not only the work you provide your employer, but your position itself. Image you’re a “senior” level programmer. In my mind that mean you should know the ins and outs of the technology space you in (ASP.NET, Windows Store, WebAPI etc.) and spending time outside of work to ensure you maintain that knowledge set for existing and future projects. Often I’ve seen lately nothing but complacency. “I only do XYZ so I’ve never seen ABC” (where XYZ is ASP.NET, WinForms etc. and ABC is WPF, Windows Store etc.) To me this is unacceptable and if I ever got that way, I wouldn’t feel good about myself, as I would be doing a disservice to my employer and my career in general. Going back to the “senior complacency”, what happens when “new blood” comes in to assist on projects and he/she with possibly less years’ experience brings in that “ABC” knowledge. Would that hurt your image in your bosses view? On one hand, I’ve read that many leaders often say they hire people smarter and more capable than themselves – but I don’t think they intended for that to be as I have seen in Maryland.

Every company could be different in this regard. If you’re in the top position reporting to no one else, then you might be able to hide your own lack of knowledge from your superior, especially if he/she doesn’t come from a technical background, but what of your employees? The one who in the project kickoff meeting mentioned technology XYZ? The one you then covered your bases cleanly by saying “we can definitely consider that” or worse case gave a deer in the headlights expression hoping no one else saw. In my opinion this also hurts your credibility as a “senior” programmer. You are supposed to be the “Obi Wan” of your trade.

So I have had to ask myself the what and why of what goes on when that passion to be better than you are today fades?

Looking back at co-worker it seems to be he/she got to a certain salary when they can live comfortably and so the underlying need to survive was fulfilled. Maybe when a kid of the desire for a house comes around you dive back in or simply attempt to switch employer’s to drive your salary up, living off the laurels of your padded resume. For me, this is extremely sad. While yes, when I initially got a job offer in the IT industry (after a year or so of failed attempts) nearly 8 years ago to be a professional customer PHP programmer I got enamored at the fact I would no longer have to wonder if I had enough money to eat that night (lesson there is not to move out, have a new car and work in retail while going to college full time). But the passion didn’t fade for myself, if anything it only strengthened because now I was finally working with programmers my age and in many regards better programmers than myself. At that company I developed a camaraderie with one programmer in particular and for the first time in my life I was working with someone on a game (C++/SDL/OpenGL). Eventually we went our separate ways, but the knowledge that there was other people out there passionate about programming to the point that after programming 8 to 6 he/she would turn around and program their own project(s) until their heads hit their keyboards has stayed with me ever since. Sadly, I have no run into anyone locally in Maryland in the 5 years since.

This brings me to what I feel is an even bigger issue, at least for myself: Maryland. When I moved up to Maryland after being waitlisted in Virginia Tech and James Madison University (and eventually denied late that summer after High School graduation), I really had no opinion of the state in general. I knew Fort Meade and NSA were in the area my parents were looking to move to so I thought I would simply get an internship and spend a few years building up my skillset and then leave Maryland to California or Texas to work at a gaming company. This “neutral” opinion of Maryland changed dramatically when I started interacting with other developers from other consultant groups very early on in my career back in 2007.

Gone were the mid to late 20s developers who cared about their work, instead these were 40 something’s who became “salesmen” pitching everything under the sun to clients even if it was the wrong approach – in the end the consultant company only really cared about making money one way or another (I should note – I have no age discrimination of younger or older developers, it was simply a culture change from what I was used to and seemed to correlate with the complete 180 from my co-workers). While I can appreciate the need for a company to look for all monetary avenues especially in this case with a fairly large company there is a fine line between doing what is right for the client and making money. In the end I feel even if the client ends up going with someone else you conscious can be clear and with any luck the honesty could go a long way towards building a long term relationship with the client.

This leads into another aspect of Maryland (and possibly other states), the quick cash mentality. I am fortunate to work for a company that has the same values I do in that we shouldn’t just do a project just collect money as if the time invested was no more meaningful than collecting $200 on your way past go in a game of monopoly. Time is extremely precious and I know from personal experience in working on exciting projects, I am considerably more passionate and willing to freely work insane overtime on it as opposed to a tried and true ASP.NET project. For others at least in Howard Country it seems the idea of a large custom C# application (comprised of a custom backend API, multiple frontends and a scalable architecture) is forbidden. Instead endless Drupal, WordPress and Sharepoint sites are created. While there is definitely a time and place for those “out of the box” approaches, I don’t think they are the right decision for the vast majority of projects that require extensive custom work. For the client, depending on the project they might be perfectly content to use Drupal for instance. It offers a WYSIWYG editor for just about everything and has a lot of native functionality for managing content. But when extensive business logic needed and/or a plugin doesn’t exist and you come back with an astronomical estimate, the client might ask themselves “I thought platform XYZ based on your original estimate was a good approach, but now it’s costing me a fortune”. To me this is bad on the consultant if all of the requirements are gathered properly, both approaches should be conveyed with the pros and cons of each. Letting the client chose the possible smaller upfront/phase 1 cost, versus the long term (in most cases). From what I’ve seen, the consultant groups in Maryland are the most myopic group I’ve seen – use what has been proven without any innovation.

This leads into the myopic view topic. The common question I ask during interviews is “Where do you see yourself and technology in 5 years?” To my surprise, more often than not they seem to have not put much thought into their career and what they could be doing to prepare themselves for the years to come. Best answer I ever got was “I want to manage a team”. When asked to elaborate he couldn’t – this told me he wanted the gold before investing the time and effort to mine for it. Continuing the time issue, it also appears developers in Maryland land a job doing XYZ, stay there until the company struggles and then expect to get any job of their choosing. One in particular that comes to mind is a WinForms developer a few months ago applying for a position that was for the most part (probably 67%) focused on MVC 5 and WebAPI. When asked if he had experience with ASP.NET at all he said no he hadn’t had the time to learn. At this point I felt bad for this programmer as eventually his sole skillset of WinForms will be phased out and if he never odes invest the effort into his career himself and his family could be in financial trouble with him having trouble finding work.

While this post most likely appears to be a pessimistic view of programmers and in particular Maryland programmers, there is one community that is extremely strong: Twitter. While social media (Facebook in particular), I have little use for, after TechED North America 2012 in Orlando I found hundreds of like-minded polyglot programmers all over the world doing blog posts, giving back to the community with presentations at their local programming groups and overall simply wanting to be better programmers because at the end of the day if you never want to be better tomorrow than you were today you might as well switch careers – this is not the one for you.

I hope others can take something from this post. I know it isn’t my usual topic nor format. I would love to hear other stories (either success or failures) with external consultants, co-workers or potential hires. One day I hope this fad of simply seeing the 6 figure dollar signs as the allure to computer science fades and the industry really becomes a close knight community of passionate and humble developers – while that means there will be less of a gap between programmers I think in the larger scheme it will benefit everyone much like competition.

Another area comments are more than welcome is the big question: do you go back for your masters or doctorate? I was going to begin a Masters program at Stanford this past spring, but ultimately decided with a large scope creep project at work the program at Stanford would have suffered. On then on the other hand with delay, it made me really question, is my self-teaching more valuable than a professors? In some regards I was swaying towards to my own teaching – I get to focus on what I feel is important and save a considerable amount of money, but then on the flip side I might get a more well-rounded and in-depth look into computer science areas I hadn’t pursued. I am still 50/50 on this topic.

To sum up this post: invest the time and become a better programmer, if not only for your employer, but for your own career, future and family.

Saturday, August 16, 2014

AMD where art thou?

Posted By Jarred Capellman

Anyone else who’s been around long enough to remember buying an AMD Thunderbird, Palomino, Barton etc. feeling the urge to build a new AMD system to replace their existing system?

My primary desktop is still being powered by a FX-8350 I bought November 2012 - while for everything I do (mainly Visual Studio and SQL Server) coupled with my Samsung SSDs, Radeons etc. it's ok, it just feels extremely weird to not have an upgrade path (ignoring the FX-9000 series) after years of doing a new year build every year or every other year (back in Athlon XP days it was every couple months). In the mean time I've built 2 Kabini systems this year, one as a ClearOS firewall and another as a HTPC and while those have worked out extremely well, there is a void in that my primary machine is relatively unchanged for almost 2 years.

I know there is always the Intel route - an i7 would be a definite upgrade, I know it is silly, I just can't bring myself to doing it. When I switched to AMD December 2000 with a 1 GHz Athlon it seemed like more of an experiment. AMD wasn’t new to making CPUs, but it was new in beating Intel in both price and performance. I had an aging Celeron 300A and tons of new First Person Shooters to play, the Athlon made sense then and if I had to do it again, I most definitely would. The summer before, in 1999 after having worked on the Army base doing Sys Admin work I had over a $1000 to burn – I almost pulled the trigger on building the parts for a Dual Pentium 3 600mz (buying only 1 CPU that summer since they were several hundred dollars). Thankfully, my dad convinced me to instead buy a 19” iiyama CRT (1600x1200) to replace my 15” CTX CRT (1024x768) – much more bang for the buck. Thus the following Christmas in 2000 I received some money and fortunately had enough to buy an Abit KT7-A, 256mb of PC133 ram and a 1ghz AMD Athlon (Socket A) – looking back had I still had my summer job in Germany, I might have built 2 of them since they were so cheap in comparison to the Pentium 3 idea the summer before.

I hope the new AM3+ platform replacement (latest rumor I read was next year) can really bring AMD back to the top. The FM2+ platform is nice, but the lack of 8 core variants without an iGPU is I feel definitely hurting AMD especially those sitting on the AM3+ platform like myself who would love to stay with AMD, but have nothing to upgrade to.