Monthly Archives: November 2014

Native v. Web

Duct Tape, fixer of all things!Six Colors: “Most apps are just thin layers on top of modern Web standards with the added benefit of a potentially superior user-interface experience, because the operating system takes care of more details with greater consistency, and allows a complicated but more reliable adaptation to multiple sizes of devices, whether it’s iOS, Windows Phone, or Android.”

Yes, folks are still talking about native vs. web. Without the web most modern day apps would be less useful and in many cases useless. Social apps only work with a connection to services running on the web. We still need sites to provide access to the masses, a way to get data on any device.

There will probably come a day when the browser can outright replace native apps, but it’s not here yet. Web technologies are still very young and ever evolving. Heck, you can only use one language in the browser, that’s way too limiting. When the browser matures to the point it allows developers to control the entire experience and is open to the language of the developers choosing, I think we’ll see some remarkable apps. Until then we still need the native experience.

What happened to Twitterrific 5 for Mac?

Ollie! The Twitterrific Bird9TO5Mac: “By limiting the ability of third-party developers to create unique and useful clients for its service, Twitter is ensuring that new users will be forced to use one of its first-party solutions, whether that’s Twitter for Mac, TweetDeck, or the web. Unfortunately, none of these products are really worth using, and Twitter is shooting itself in the foot by attempting to drive users to these subpar experiences.”

There’s the problem in a nutshell. Twitter has been less than friendly to developers who can help them make a better experience for their users. Let’s say Twitter changed their rules to allow folks to develop clients that they don’t consider their bread and butter. What if you could create a client, free of limits, that wasn’t for web or mobile? This would open the door to a great update from The Iconfactory and allow other indie developers to create great native experiences for Windows or Linux. Seems like good business to me.

Etsy Credit Card Reader

Bringing in the HarvestEtsy News Blog: “Today, Etsy launches a solution for our sellers based in the US to accept credit and debit card payments in person and help manage their multi-channel sales more efficiently.”

My dear wife has a store on Etsy for her little crafting business, Ragamuffin Design. She’s been using Square at craft shows and has been evaluating other store solutions that offer tighter integration with her domain, but the introduction of this card reader connected to Etsy’s service to manage inventory and collect payments is hard to ignore.

At a recent craft show Kim used this new reader and the Etsy application to great effect. I’d say it’s a winner and may be a good option for others running small businesses. I didn’t get a chance to use the app or accept payments with it, but I would change one small thing in the iOS Application. I would allow it to rotate upside down. On an iPhone 5 the app is upside down if you want the card reader at the top.

I do find it interesting Square hasn’t created an SDK for others to hook into. With the advent of Apple Pay I would hope they’d open up a bit. Access to credit and debit cards is still necessary for little businesses like my wife’s crafting business. Collecting cash isn’t the only thing she needs to do. She also needs to manage inventory on her site.

Big Cartel is a small, tight-knit, company that provides a white-label storefront for indie artists, crafters, and whatever else you’d think to sale online. They have a small (500,000) set of very loyal customers that manage their day-to-day online sales using the platform. They also have a really nice iOS client application that is missing one small thing. The ability to support swiping credit cards on the go. They do provide a way to collect money by typing in credit card numbers, it works, but is less convenient and error prone. They could really benefit from a Square SDK. They need this kind of integration because, like Etsy, they can manage your product inventory as the transaction is completed. Doing that after the fact is a real pain, I know, I’ve seen my wife do that after shows, prior to using the Etsy card reader.

I’m also a bit surprised someone like Stripe hasn’t created a white label reader with an SDK. Couple that with an open platform from someone like Big Cartel and you suddenly open possibilities for third party developers to create all kinds of interesting solutions.

The Old Guy

Update #2

We’re now three years on. I’ve sat on this story for long enough. I’m finally over the sting of rejection. I am grateful to be a part of Agrian. I just passed my three year anniversary and I’ve had time to work on my own side projects; RxCalc and Arrgly to name a couple. In 2018 I hope to complete and ship a new Mac App. We’ll see how that goes.

Update #1

The story below was written in November 2014 when I was still actively looking for a full time position. I have since found a job with a wonderful company and I’m quite happy. At the time I was under a tremendous amount of stress, for reasons beyond the stress of a job hunt. I’ve struggled with the idea of publishing this story. It will come across as whiny to some, that’s fair. Others, including myself, will believe I just wasn’t good enough for the job, also a fair point. The truth is, we’ll never know unless someone “in the know” reaches out. All signs point to that never happening.

Anywho. Here’s the story.


I’m back in the hunt for a full time job. I wrote about it over the weekend and would like to say thanks to everyone that took the time to read it and tell their friends about it. Thank you.

I am finding it more difficult than ever before to get folks to talk to me. The hip, up-and-coming companies, dismiss me out of hand. I’m not sure why, but they do. I know I’m not the smartest guy on the planet, but I’m also not the dumbest, and I know how to get product out the door. I’ve done it many times.

A little over a month ago I had an interview with a company I really wanted to work with. They have a very practical product, and they actually make money. Imagine that, a company that makes a profit to keep the doors open. Crazy talk, right?

Anywho. They flew me out for a couple days. They’re all wonderful folks. I was thrilled with their culture. They were tight knit and seemed really great together. I was thrilled. I haven’t wanted a job this bad in a very long time.

We talked tech and I feel like that went well. They asked why I wanted the job. Fair question. I wanted it because it was something my wife could use and has actually asked me to build, yes she asked me to build what these folks have already built. I was genuinely excited about this company.

On day two I was feeling good. The day before seemed to have gone well. I was still there and hopeful I would receive a job offer. This is where things get weird.

Around 11AM the Director I would have reported to asked me to join him in the conference room with the iOS Developer I would be working with. It was the moment of truth. He asked how I felt, I said “I feel great.” I did feel great. I thought I’d have an offer from the company, everything felt so right.

RibbitHe sat down and said “We think you have great technical skills and are a good communicator, but we don’t think you are a good fit.” It was a real deer in the headlights moment. I felt instantly embarrassed. Why in the world was I here? I actually appreciate them telling me while I was there, but “not a good fit”, lame. I’ve been over that moment time and again in my head “great technically, good communication skills, not a good fit.” There are very few reason I can think of that fit the “not a good fit” reason. Someone just didn’t like me, or the reason they didn’t hire me is actually not legal to say. I’m definitely much older than most of the company. I’d imagine, on average, I’m 20-years older than most of them. Some are probably the same age as my daughters.

Last week I read they hired a new developer. He is definitely much, much, younger than I am. Of course I will never know if that was the reason, as much as I want to, but it sure seems like it.

I may be older, but I can still think, and I can still write software.

BCS Rankings: How does that work?

Does anyone understand the logic behind the BCS rankings? I definitely don’t. I have one for instance that baffles me.

In week 10 #3 Auburn played #4 Ole Miss. Based on their ranking who would you expect to win? Well, if you just look at the numbers Auburn should have beat Ole Miss, and they did. Ok.

In week 11 Auburn remained at their #3 ranking, but Ole Miss fell to #11. Why? Ole Miss was ranked one position lower and lost to the better team, isn’t that what’s supposed to happen? Right. Ok, let’s just leave that there.

We’re still in week 11: #3 Auburn loses to unranked Texas A&M. Ok, Auburn should fall big based on what happened to Ole Miss the week before, right? No. Auburn falls to #9 and Ole Miss is at #10. Can someone explain that logic, please?

#3 beats #4, #4 falls to #11.
Unranked beats #3, #3 falls to #9.

I don’t get it.

Fear of Public Speaking

As I mentioned earlier I’m looking for a new gig, so I’ve been interviewing with folks. I’ve had a couple of interviews where they’ve asked me to look at code or write code. I’m absolutely horrible at this. When I’m put on the spot I break out in a sweat, really I do. I don’t know why, but I get super embarrassed, and I cannot think, at all.

Last Wednesday I was asked to solve the FizzBuzz problem. I fizzed out, why? I just cannot perform in an environment with people staring at me, on the spot. It’s just the way I am, and it means if I have to do whiteboard coding exercise, I’m most likely screwed because I can’t think logically.

Anyway, back to FizzBuzz. After leaving the interview my wife and I drove around the city, had lunch, and generally tried to make a day of it. On the way home I decided to pop out my MacBook and do the FizzBuzz exercise from memory. It took me less than five minutes to make the logic work as expected, then I “fancied” it up for my own sake.

Here’s the answer in a few lines of C code.

static void FizzBuzz()
{
    static int kBufferMax = 256;
    
    char outputBuffer[kBufferMax];
    
    for (int x = 1; x <= 100; x++)
    {
        memset(&outputBuffer, 0, kBufferMax);
        if (0 == (x % 3))
        {
            strcpy(outputBuffer, "Fizz");
        }
        if (0 == (x % 5))
        {
            strcat(outputBuffer, "Buzz");
        }
        
        if (outputBuffer[0])
        {
            printf("%s - value %d\n", outputBuffer, x);
        }
    }
}

Pretty simple, isn’t it? Here’s a Gist if you’d like.

I also have a fear of public speaking. I’ve managed to get over some of this by making sure I know my material cold when I’m speaking. It makes a huge difference, but in an interview you never know what you’re going to be asked to do. That alone sets me up to fail at the whiteboard. I’m nervous before I start.

Into the Fray

I Have Failed

Will code for...Back in June I decided I’d jump back out into the Freelance iOS world and make a go of it. I had a couple contracts lined up so it seemed like a good time to make another run at it. Boy, was I wrong. About that time a number of well known Indie software developers were writing about their experiences in the App Store. The market for Indie work has kind of collapsed and I can tell you the Freelance market has bottomed out in many ways. It’s difficult to get folks to understand a mobile application is a real application. I hope someone is studying the psychology surrounding this phenomenon. I know every freelance developer has experienced this in their field. You give an honest estimation of time and an associated dollar value, and you never hear from them again. I hear fellow developers saying “Yep, been there, done that.” It’s just how things work.

Some of the contract work I’ve taken over the past couple of months are jobs I should not have taken. The pay was substantially less than it should have been and at least one of the applications was so substantial in size I really should have walked away, but I didn’t. That’s a big mistake on my part, something I regret, and a mistake I cannot make again. I took the work because I needed it. It’s a horrible position to negotiate from. You have zero power.

I also had a contract that went about as sideways as one could go. That is a cautionary tale and one I hope to tell someday, but not now.

All of this is, of course, a self made disaster. I chose to take the work, it’s something I’ll have to struggle out of, in the meantime I’m back out on the market, looking for a full-time gig.

What Do I Offer?

I’m a seasoned developer. You can call me old, that’s fine, I am not a 20-something. I have a wealth of experience shipping software. I’ve lead teams of developers and I’ve been an individual contributor. I know how to ship software. I’ve been there many times.

Most of my experience lies on the client side of the world. Windows desktop and iOS primarily. I’ve written code in C, C++, Objective-C, and C#. I have had a couple of stints writing software that ran on the server; Paramount Farms and LEVEL Studios come to mind. Both times the server side code was developed using a full Microsoft stack; C#, .Net, and SQL Server.

I believe connected services are the obvious thing to be doing. Along those lines I have experience developing and consuming services. REST and JSON based services are where it’s at today, but I’ve also consumed SOAP/XML based services. It’s all data, but I really do like the simplicity of REST/JSON.

I still like writing software but I’d also be more than happy to take on a Development Lead or Program Manager role. My last full-time position, with Pelco, was leading a team of 8-12 folks (it fluctuated in size and I’m counting contracted developers) developing a C++ and C# SDK for use with the Pelco VMS and I really loved what I was doing. I didn’t leave because I was unhappy, I left because iOS was calling me.

I’d love to continue working on iOS Applications, if possible, but I’d be equally happy working on desktop or server side software. I will warn folks up front. My SQL skills are pretty crude, but doing application logic and user interface isn’t a problem and is something I quite enjoy.

Career Highlights

I’m not much of a salesman. I don’t interview well (Whiteboard code? Instant fail, test anxiety.) I say this because I’ve had some of these moments recently. That’s the bad side of me.

I thought I’d share some things I have done and are in use by millions of people worldwide.

  1. Visio – I worked on Visio for over 10-years. QA, Setup Developer, Developer Support, and Visio Engine Development. When I left in 2003 Visio was used by over 9-million people worldwide.
  2. Pelco Endura – I worked on the Pelco line of Decoders for five years. This included the Workstation, VCD, and our shared pipeline component framework; MPF (Media Processing Framework.)
  3. Pelco SDK – I worked with a talented group of folks to create a reimagined SDK. We were able to design a new object-oriented C++ and C# SDK. I love creating code for others to use.
  4. LEVEL Studios – While at level I contributed to web services used by a large Android handset manufacturer. At the time the project was handed off our client it was supporting over 8-million people worldwide.
  5. Freelance – While freelancing I helped with a few applications, some are no longer in the store, and I have created a couple apps of my own (both in desperate need of a facelift, I know.)

If I were to sum up what I can offer I’d say this. I know how to ship software, how to make those tough decisions, and I can see the big picture. I know, and understand, that business needs play a big role in product development. I can lead or follow.