Tuesday, November 23, 2010

Buzz Comments Degraded into a Mac App Store Sucks Battle Royal

So I've been wanting to post this discussion for a while and just haven't got around to doing so.  It was a discussion that happened on Google Buzz a while back where one person posted a link that talked about all the things that flash can do that HTML5 cannot.  It then degraded into an Apple sucks festival to which I wasn't really invited and was summarily dejected from.  Although I could have probably picked a better leg to stand on since I'm not the biggest fan of XCode (although XCode 4 does seem to be a pretty substantial improvement).  Anyway I hope someone finds this conversation as amusing as I did.  I've posted the full comment history with the names of those who are not me edited out.  Everything else is as it was in the discussion...bad grammer, bad spelling et al.


Commenter #1 - Dropping Flash support was such a bad move. And now dropping Java support is even worse. I honestly think Jobs might have gone crazy. Or, he's a Cylon.Oct 29
Commenter #2I kind of see a possible reasoning for it. Apple has always benefited from not being too popular; people didn't care enough about macs to write viruses for it, etc. Standard security through obscurity. Now that it's growing, people are starting to care and are using attack vectors being found for macs through trusted public script interpreters like java/flash/etc. It doesn't matter that the interpreters run in the user space and the vulnerabilities are in OS X. Jobs will push the blame elsewhere. So by discontinuing support for anything they don't explicitly approve of (upcoming mac app store), they can continue to falsely claim that they're "secure" because of their walled garden. "you're safe because we only give you approved crayons and safety scissors".
I'm interested to see if they start voiding mac warranties for installing applications that aren't in the mac store because they can compromise system security (like jailbreaking iphones).
Oct 29
Commenter #3I can't believe that even mac fanboys are into the idea of an imac store... I also can't imagine that developers are too keen to have to share 20% of their income with apple in a space where they previously didn't have to share anything with anyone.Oct 29
Commenter #2But now there's the argument that a store will help smaller developers that won't need separate publishers etc. 70% is better than 0. I'm guessing (completely on whimsical speculation) that there would be a paid Apple-certification process for large companies that want to be supported with a one-time fee.Oct 29
Kevin Hendry - If by 20% you mean 30% I'd agree.Oct 29
Commenter #3good point. As a dyed-in-the-wool apple fan; what is your take on the iMac app store? Do you think it's a good thing or a bad thing? Do you think Jobs is going to go insane a look future iOS releases to only allowed apps from the supported store - and if that happens will you switch away from apple or smile and tell everyone that you love it?Oct 29
Kevin Hendry - Also it isn't exactly true that they get everything now. They pay for other services to manage the payment systems and they have to pay to maintain those systems if they decide to build them...which most can't afford to do. Plus the idea would be similar to that with the mobile store where a common place for application discovery may spur enough traffic and business to offset the increased percentage take that Apple gets. If it works. Also it provides a greatly simplified interface for payments compared to go-it-alone options. However I'm pretty skeptical it will work unless they loosen up the restrictions more than they have thus far.Oct 29
Kevin Hendry - IF it starts to prove that monies can be made like the mobile store did, there will be a lot of new crazy applications for the Mac we've not seen or thought of yet. But similar to TV I don't know if the medium is all that ripe for a lot of creativity.Oct 29
Kevin Hendry - Also if Apple actually starts to lock down the Mac platform similar to what they've got on the mobile devices I think it will flop. I need my Mac to be open enough for a number of tools to work on it. It is a swiss army knife of sorts. The phone being an embedded device I can understand why it is more restricted. But a PC cannot have those same restrictions other wise its a tablet.Oct 29
Commenter #2Isn't the industry moving closer to a tablet-like experience? Multi-touch / Chrome OS / dumbed down netbook UI's / etc? Most people just need access to their "google internet" and their fart apps.Oct 29
Commenter #1Haha. Sadly, I think you're right BC.Oct 29
Kevin Hendry - Yes, for a large number of average consumers iPad like devices are on the way, but they still need machines to develop the code on at some point. Part of Apples recent success is due to a number of moves it made to modernize its development environment, and the OSX platform (not just the GUI). Things like CLANG (via LLVM), WebKit, Grand Central Dispatch, Blocks for C (and possibly the next C spec). These things get developers excited about building code on their platform. I'm certainly disconcerted that they've deprecated their Java port, but I think it's probably better if that is supported via the community regardless.

They have to keep building machines & technologies that developers want to build code on top of...not just consumption devices for the masses. The nice thing is that they're building application/media consumption devices that are popular and they're providing a good development platform us to make monies with. If they were to remove the pillar of the development platform by restricting the options available to developers they will likely lose them in droves. I believe that since I think that although everyone likes to make money, mostly developers like other things and if you piss them off enough they'll walk away from the money in the short term and probably make you regret it. I don't think Apple is going to lock things down on the Mac....but they might...and I think they'd pay dearly for such a mistake.
Oct 29
Commenter #2If Steve Jobs sucker punched his average fan, they'd probably thank him for the "real" experience he just gifted them. He presents a smaller netbook that costs a thousand dollars with minimal specs, and the reviews are glowing because it's small and it "just screams" for everyday tasks. Apple already treats developers and device owners like worthless piles of waste, and they stick with it because ..... well, I don't know why. But they do.
I've already stated that the locked-down mac strategy was completely wild speculation, but for the sake of fun I'm going to continue with it. Developers already have to pay, what is it, $100 to be able to make apps for iCrap devices. Who's to say that they wouldn't put a similar idea to use with mac development kits? It, itself, could be an approved app in iTunes. And part of the sdk could be a sandboxed environment for testing code, so you wouldn't void your warranty by running non-approved code directly on Apple's hardware (that you have the privilege of having in your house).

Anyhow, just a fun thought exercise. I'm sure that in reality they'll be far more creative in finding ways to fuck over their client base while being thanked for it.

I need Timmies
Oct 31

Friday, November 19, 2010

Teleported

Our Team Logo
The other day a friend from my previous employer who now works out in California dropped a whole lot of joy on me and my old team mates.  We've setup a group on Yammer to share little tid-bits and just generally keep in touch.  The other day he posted a list of our old sayings or fun quotations that we'd collected through the years.  Lots of teams do this.  Lots of teams collected lists like this when I was at TVWorks.  I still think these guys were a bit different.  They congealed as a team in a way I'd never seen before and so far we still can't help but get together whenever we can for "team" lunches at the end of each month.  I don't know if I can put a finger on what it is I miss the most about working in that environment with that specific group of people, but it was something special for me.  As I know it was for others as well.  And I'll be thinking back on those days in the TeleQuad laughing my ass off to the point of tears streaming down my face after someone said something absolutely absurd that not one of you where weren't there and didn't speak Teleporter'ese would ever appreciate or understand.

I think I'll have to do some follow up posts with my thoughts on what these guys did well and why I think they gelled together and created a culture all their own.  Also I should talk about the problems this caused and the issues they had in dealing with other teams in the company and my take on some of the things they never quite got right.  But mostly this points is just about me remembering just how much fun that whole experience was and how important my relationship to those guys is to me still.

Thanks Mark for Teleporting me back for a while.  Here's a recap of our little list of Teleporter goofy sayings just in case you're curious.  I"ll try to explain in comments if any of you are interested enough to ask.

  • "That's not a magnet!" - Tom
  • "The comma will protect us all." - Andrew
  •  "That's harass." - Peng
  • "Set to the OR of the NOTs." - Tom
  • "There's no GC in C." - Tom
  • "Laser solids" - Peng
  • "Monkey peaches" - Peng
  • "Set how many big?" - Tim
  • "Undo the did." - Tom
  • "The designees are sad." - Mark
  • "Make like the regression and break." - Andrew
  • "Make from for the bind bits!" - Tim
  • "Evil smell." - Peng
  • "Groupe Ide" (pronounced group-eh ee-day) - Tim & Andrew
  • "That's so awkward" - Peng (said whenever someone spills something on their pants)

Sunday, November 14, 2010

Subverted

My experience with version control systems, revisions control systems, configuration management systems or whatever you happen to call them primarily consisted of Perforce while at Liberate/TVWorks.  I spent some time dealing with Visual Source Safe before that.  Perforce felt like it was from the future after that experience.

As I moved into more of a team lead and architect role at TVWorks I spent less and less time committing code.  Then Comcast management decided that we should be using common tools across the various entities working on software products for Comcast's video services.  For all intents and purposes this consisted of TVWorks in London, TVWorks in Mill Valley and Guideworks in Radnor.  There are other players, but they didn't seem to be included in the quest to use common tools.  Regardless this yielded yet another change in revision control system for me.  This time the move was to Subversion.  But since I wasn't doing development any longer my experience with Subversion was pretty limited.  Switching to  Subversion made a co-worker of mine was quite excited for some reason, but not because we were using Subversion, but what doing that allowed us to use.  Git.

Upon him explaining Git and taking some time to read up on the tool myself I decided that my interactions with Subversion would be through a Git front end that my co-worker had told me about.  Doing so proved quite problematic for me due to a number of non-standard repositories I had to interact with...also the rather bloated size of the repositories made Git choke more than once while using Cygwin.  I had more success natively on Linux, but still working with git-svn and the CableLabs repository structure was a real pain and I'd generally opted for the script they'd created to complete a sparse checkout of a branch.

As such I became familiar with Git and its interface to SVN, but not really proficient at either one.  We decided to make use of GitHub and a private repo for our code at Redshirt Labs as well.  This also allowed me to learn quite a bit more about Git and the work flow it allowed you to use.  Although my interaction was pretty limited again since my role within Redshirt Labs was more about getting all the other partners to focus long enough to produce our application than doing a lot of application development myself.  I drove meetings, worked our agenda's, found someone to do the creative work, helped limit the initial feature set and set milestones.  Not much development there.

Nowadays I'm getting right down to development once again.  I've been working hard to make Zengaku a universal application that can run properly on both the iPad and the iPhone/iPod Touch.  I've been figuring out how to manipulate the interface to handle orientation changes and creating a lot of new artwork with a lot of help from my sister-in-law.  The point is I've been getting quite familiar with Git now and really liking what I see.

At my day job, or at least on the project I'm working on, we use Subversion.  Once again this is actually working with Comcast and CableLabs coincidentally.  I'm still trying to figure out the best ways to make git-svn work in this situation.  In part due to the Big-Ass-Checking problem I've had.  Using Git and a local repo that I can checkin to makes me feel a lot better while I'm developing and is generally pretty quick to work with.  However the crazy SVN layout still gives me loads of trouble.

I've also learned a few new things about SVN that I didn't realize.  Apparently you can swap branches in SVN like you can in git.  This was totally news to me since it was a big reason why I liked working with Git.  I'd never seen any tutorial or blog talking about this particular feature of Subversion.   Apparently all you need to do is call: 'svn switch'.  You have to specify the URL of the branch you are switching to so it isn't as nice as: 'git checkout <branch>'.  But it would do the job.  I've tried it a few times and it does generally work, although it has failed mid switch more than once...trying again allowed it to complete.

I also learned that SVN is more efficient than I'd been led to believe in that creating a branch is a very inexpensive operation.  It is more akin to creating a soft link than creating a new branch.  This has some problems for me since the branches that are created end up just being complete copies of the entier repository which seems less than ideal since you have a large amount of code that has nothing to do with what the branch is about a lot of the time.  In particular when we are talking about the CableLabs tru2way repository.  The other thing I didn't realize about Subversion is that when you merge change from a branch back to the main or trunk you lose the individual submissions that got you to that point.  Unless you keep the branch around (which you could, but would make for a rather wild tree after a while).   When I found this out it really made me scratch my head since at this point I'd though that since Git didn't have such a problem, subversion surely wouldn't either.  But as my co-worker pointed out...I kinda jumped the queue and when straight to go collecting my $200 with Git.  I never really had to live with Subversion so I just assumed that the Git way was the way things should be done.

This was a bit of a meandering post that ended up way, way longer than I thought it would.  But I'm going to share it anyway.  Hope someone findes it interesting and maybe finds out something new as well.  I might talk more about how I'm managing to use Git in our current environment in a later post.
There was some chatter that CableLabs might be considering a move to Git, but I'm not really hopeful.  Although it would definitely make my life a lot easier.

Tuesday, November 2, 2010

I missed my Arbitrary Deadline for Zengaku...oh well

We've been working hard getting the next update to Zengaku ready for consumption.  However the amount of work was a bit more than we'd anticipated and hey, we're all working day jobs as well, so what do you expect.  I've spent more than one night up past the witching hour.   However I think the updates that we have got coming are very necessary, but are a step along the way to our end goal.  This update is mostly going to be adding some functionality and some minor cosmetic clean ups for the iPad version.  However we've got some great ideas to really overhaul the UI in the next update.  I'm really excited about those changes.

Here's some highlights of what we've got coming in this update.  I think we are a week or 2 mor away from getting it all tested and integrated.

  1. Increased number of puzzles: Each puzzle book is getting a boost in the number or puzzles.  Each book now has 100 puzzles.  That's a massive increase in value for our customers.  And current customers will get all these extra puzzles at no extra cost.  Also we are adding a new puzzle book for jumbled mini puzzles.  These puzzles are only 6 digits, but the digits used are jumbled.
  2. We've added a screen for controlling settings so you can turn on or off some of the new game play enhancements.
  3. You can now have your notes sorted in ascending order.  
  4. You can have buttons be disabled once you select a cell and you have checked values already stored in the connected row/column.  This will make it easier for you to see what options are left.  This will also clear out notes in that row for numbers that match the disabled values.
  5. The iPad version will have graphics that really just make things look like a larger version of the iPhone version.  More substantial changes are planed, but for now you are at least going to get images that are native resolution and not scaled at 2X.  Hopefully this will improve the experience on the iPad significantly for now.
  6. We are also supporting orientation changes so you can decide wether or not you'd prefer to play in landscape or portrait.  And you'll be able lock one option in place if you'd prefer using our new settings screen.
I hope some people will find these updates compelling enough to give Zengaku another look.  Our free version will also be getting all these updates, with the exception of the jump in puzzles.  Although I think we'll probably add a couple of our jumbled mini puzzles for potential customers to try. 

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.