Sunday, October 17, 2010

Overflowing Stacks

I tinkered with Stack Overflow a while back.  I was a pretty avid reader of Joel on Software and of course I had to check out anything Joel was up to.  At the time it seemed interesting, but coding wasn't my day-to-day so it was more of a resource now and again than anything.  Since I've been getting back into development once again I've been dipping my toe back in the water.  I started by asking a few more questions based on things that I've been pondering at work and not had much lucking working out on my own.

Recently I was looking for a lightweight library for linked list and queue management since I've noticed that the RI seems to be lacking any such common implementation.  And in embedded systems not using a common data structure implementation seems to be the norm.  Previously we just built our own implementation.  But back then I pretty much just did what I was told to do.  Nowadays I tend to want to poke my head up and look around before I go a head and build something like that myself.   Less than 24 hours later I've got 2 different ideas for open libraries or at least small implementations of those basic data structures that may work quite well in the RI.

I'm still trying to figure out the best way to clone the massive SVN repository with all of its bloat, but that's probably a whole other post.

What I'm finding interesting though is just how quickly I feel myself getting sucked into the whole mechanic of reputation, awards, badges essentially amounting to a form of personal status or street cred.  I'm patrolling the un answered questions looking for a place where I think I can add value.  I'm checking back in with the site just to see if my questions have been voted up or not.  I'm actually mildly pleased with myself when I get that feedback that someone else felt I'd asked a good question.  I'm eagerly awaiting the moment when I get my answer voted up by someone or get a checkmark from the question asker.  They really are onto something here.

profile for Kevin at Stack Overflow, Q&A for professional and enthusiast programmers


And now I'm even proudly posting my "flare" on my blog for all to see.  As long as they don't implement some form of ganking I can see myself working to improve my rep with the Stack Overflow clan.  Oh look I've gained a new privilege.  Sweet.

Wednesday, October 13, 2010

Big Ass Checkins

So my latest gripe is going to be about checking in code in very large chunks. The reason I'm griping about this is probably obvious.  But just to be clear.  The process at NDS, or at least for the project I'm a part of seem sa bit heavy handed.  I don't think I'm allowed to discuss the particulars of the thing, but what it comes down to is you end up with fewer checkins to the source repository that are rather massive in the number of changes they include.

This isn't really what the process is supposed to do I think.  Nor is it what anyone would actually advise you doing.  But what they've got is a process that makes it easier for a developer if they work that way.  I've tried to mitigate things a bit by using Git locally in a local branch.  This gives me the satisfaction of checking in smaller chunks of changes.  But I have to admit that my discipline is lacking when I know that there aren't any CI tests being run on what I've just done, nor has anyone actually reviewed the code.

It also makes working in a team that spans 5 timezones a bit onerous since integrating changes will be done in rather large unruly chunks or better known as all at the end.   This scares me.  We're not there yet, but I can feel the hurt coming already.  Hopefully the crazy level of design done up front will be able to help prevent some of the pain.  But I'm not looking forward to it.  There will likely be a follow up post on this once the event actually happens.  Until then I'll just keep wincing every time I think about it.

Monday, October 11, 2010

Universal Appeal

I've spent quite a few hours of my long weekend getting some things done with Zengaku.  I've added a number of high resolution images so that it will look even better on the iPhone 4.  I've also done a bunch of work on the iPad views and view controllers.  Although that will take some time.  I think the bigger form factor may require rethinking and re-designing the puzzle selection mechanism a bit.  Our first update will probably be pretty simple, but a move in the right direction.  I'm thinking of something split panel so that the puzzle books will be on the left and the puzzles will fan out to the right.  I might see if we can have some icons associated with puzzle books and puzzles.  Maybe previews of the puzzle boards themselves, but time is a factor here since I want the update to be ready by months end.  I'll probably leave it at simple named lists for now.

Generally the iPad version of the game is going to look like the iPhone version with some tweaks to the images for the screen size.  And probably some work on the game board layout.  As well as rotational support so landscape will also work.  We might enable this on the phone as well if I can get something that works well.

I found an interesting library that might allow me to quickly get Twitter and FB sharing in without too much trouble.  I'm hoping those who play the game will share with others from within the app and maybe spur a few more downloads.   We're also thinking of rewarding those who tweet and share their affection for the game with others.

Finally there are some game play and settings features a few people have been asking about.  I have those on my todo list, but they aren't at the top.  So hopefully a crap load of new puzzles will satisfy them for now.  Once we get the universal application going adding the game play updates shouldn't be much trouble though.

Start Me Up

I've noticed a lot of startup talk these days from ex-coworkers in and around London.  I think there are a lot of us that already miss the drive we once had while working at Liberate and early on at TVWorks.  And after moving on we find out just how much we've lost.  I'm pretty happy with NDS.  But it isn't the same. I'm in the professional services division and as such product isn't my focus.  In professional services we work for a specific customer.  And that customer has very direct control over what you do.  Not all that different than when you are building a product in some ways.  You still have to build what someone will want to buy.

The difference for me is that when you are building a product, a part of what you are trying to do is to show your customer something they didn't realize they needed or just didn't think that such a solution was possible or available.  You are there to anticipate what they will need.  Whereas when you work on a contract you have to very carefully tease out the particulars of a contract and the specific work that you will or will not be doing as part of that contract.  It lacks a certain creative spark for me.  But it certainly can pay the bills.

I talk a lot with an ex-coworker about his work at a local startup.  It's quite intoxicating and gets me quite charged up.  They're in a stealth mode right now and won't tell me anything about what they're actually doing.  But I'm still excited by the possibilities.  A part of me is very jealous of my friend.  He's taking a real chance and it may pay off for him.  I don't know that I could make that kind of bet myself.

Another ex-coworker I expect has something brewing.  He's started taking an entrepreneurial course through the TechAlliance.  It sounds pretty interesting.  I wish I'd know about it sooner.  I don't know what he's got up his sleeve either.  But I'd love to talk to him about it.  I love talking about the opportunities that can open up with a good idea and the application of some great technology.  It's quite amazing to be a part of that.  And I'm glad that I can say I've had my piece of that at Liberate.  I don't know if I'll every have that again. But there was something quite exciting for me about Liberate.  I joined them when I was pretty much just out of school, but I'd started working at another company in London.  I'd interned there and was comfortable with the people and the work.  But here was this other company that was trying to put java virtual machines on set tops.  I was totally sold by that.

I'd be remiss if I didn't also mention the work of AgileMan.  He's been quite busy for someone who half retired not that long ago.  He's published a few books and done some consulting related to agile development.  I like to keep tabs on his activities as well.  He's always had a lot of interesting things to say and is someone I look up to.

I joined Liberate while they were in the middle of bankruptcy.  I didn't care.  They were working on some really neat technology and I wanted to be a part of it.  The people there all had so much energy and focus.  It was amazing to me to see the pace at which they worked.  There was an immediacy in everything they did.  They also had a lot of processes in place that made my head spin at the time.  I cam from a place with a couple of developers and here was this place with over 75 developers at the time and just about as many QA people.  They had a dedicated documentation department and technical services.  They had automated build systems (the good o'l tinderbox) and a bug tracking system that was home grown, but sturdy.  Of course nowadays I've got a wife, mortgage and my first child on the way.  So such opportunities are a bit tougher to take.

I hope London gets a few more places like that though...maybe there are a couple around already I've not heard about.  I have a feeling there will be a couple in the next few years and I expect them all to have some pedigree from the folks who made Liberate (and later TVWorks) such a vibrant place to work. Ultimately we didn't quite realize the goals we'd set out to achieve...but I'm sure glad we gave it a hell-of-a try.

Monday, October 4, 2010

Creating Something...Anything

I wanted to create something.  Something that I could call my own.  I've spent a bit of time in the last year working with some friends and previous co-workers on a little venture we called Redshirt Labs.  We created a small game for the iPhone that has done a very mediocre job so far.  It is a relatively complex number puzzle game that attempts to do a bit of what Sudoku does and a bit of what Kakuro does.  If you're like most people I've tried to explain this to your eyes are probably glossing over right now.  Anyway the game is called Zengaku which I've been told had some meaning in Japanese related to sums.  Something like "sum of sums" or something like that.

I wish this post was about the great success and wealth that the game has brought upon us.  Or the fame and notoriety. But alas it was not to be.  I've often compared our experience in creating Zengaku for the iPhone with a small independent film that the critics love, but no one ever hears about or if they do hear about it...they just aren't that interested.  The reviews we get are generally pretty good but our daily downloads of our free starter version are in the single digits pretty much every day.  

Since we came out with the game we were all laid off from our previous jobs.  We all worked at TVWorks in London.  The office shut down this summer and a few of us still work together at new jobs, but generally we've scattered.  We talked a bit about what it would be like to decide to work on creating apps full time, but I think that at that point we were all a bit disillusioned with the whole idea.  The tepid download pace on the App Store and squandered funds on weak ad campaigns pretty much took the wind out of our sails.  We've since stopped funding advertisements, but development is still ongoing. Unfortunately I'm the only one doing much with it at the moment and I've not got a great passion for the game so it take some real effort to get myself to work on it.  

But I promise to have a significant update out before the end of October.  At least have it submitted.  We had some ideas for Twitter and FB integration I think are interesting.  I've also been adding support for the high resolution display of the iPhone 4 and the larger display of the iPad.  But why do I keep working on this pretty much dead end product?  I must admit that my reasons are pretty selfish.  I have other ideas for apps that I am pretty excited about.  But starting with a blank canvas is a bit daunting.  So I use Zengaku as a bit of a testing ground for some of the things I'd like to do in my other applications.  I want to create an iPad application.  So I'm turning Zengaku into a universal app.  I want to make sure that my word of mouth marketing is better for my next application so I'm experimenting with Twitter and Facebook integration with Zengaku.  Am I wasting my time or is there a method to this madness?  I'll let you know if it all works out.  I'll also send updates on my progress.  I also think I'll share a few of my Johnny Don't stories with you as well.  Hopefully it will help me to learn from them next time as well.

So there you have it.  Zengaku is my one dot oh product.  My first stab at dealing with marketing, sales, finance and legal issues.  Not to mention trying to motivate a group of engineers to care about all those not so technical things too.  It was not easy, but I've come a long way and I think I know what to do better next time.  It wasn't a success by any stretch.  But it was something.  And that's all that really mattered this time. Next time what I create will matter a bit more.  But this time.  It's just a low cost learning experience.

PS.  Someone put up a review in the US recently that told us to fix pinch-to-zoom in iOS 4.  We've got that one done already, we just need to finish some of the other features on our list before we (or I) ship.  One other feature I should mention is that we're going to add a pretty significant number of puzzles to our paid application.  And possibly reduce the cost for a while... you know just to experiment a bit.