Friday, March 19, 2010

Continuos test, rapid deployment, etc

There has been some progress when it comes to testing at work. It's a pretty huge step from "no tests" to a full fledge testing everything big huge system. There are a huge number of types of tests that can be made. Everything from unit testing (testing individual methods and mocking the world around them) to ad hoc testing to integration testing, to smoking testing, to system tests. Test of frameworks, of UIs, of applications, of databases, of networks, of performance, of usability, of anything and everything.

So how could you expect to go from zero to full fledge software state of the art goodness? With an existing code base never the less! Well, you can't :) Won't happen! But what I am seeing is something positive never the less, because if one set of tests are created, that does something, it can inevitably show that tests are *good*. That they have some form of payback. Which can prove that investing in the right kind of test is a great improvement and a gain.

So what is the right kind of test you might ask? One that finds something wrong with your software so that you can fix it, have more confidence in your code, and costs less than the gains. No point in expensive tests that doesn't find anything wrong!

One thing among many that tests can lead to is something I personally think is a good thing™ Always having shipping quality. I think that by always having a branch (or as they are sometimes called, stream) that is fully tested and ready to ship gives rapid development a new meaning. Any new development will have to reside on a different branch until ready (and thus having tests) and then integrated.

So what is so good about it? Think of how things usually go when it is time to ship to the customer. Tests are inevitably done at the end, and fails, or deployment fails, or the customer finds something hideously wrong. If you automatically test your software all the time, and only have finished features in it, you can any day ship it off to a customer with confidence. That's pretty cool to me. It also means that you have to have a state of the art deployment system. But that is a topic for another day:)

If anything in this little post seems a bit distracted it's because I am not feeling to well. I am in fact sick, which has affected my poor head. Trying to keep a thought up there among the cotton balls has proven almost futile. I might return to the subject some day, as I have more to say about it. And if there are things that seems to sound like it was agile don't fret, good ideas are good ideas, no matter the label or who thought of them:) And sharing ideas are good™

Friday, March 12, 2010

How I got my coding groove back

I'm starting to like to code again. Starting to like being in Software Engineering. But what has brought this on? What has changed? Let's get to it and see what has changed.

The people I work with? The majority of the people I used to work with (at the company I was with) was great. Some were troublesome but there was a large group of people I got along with. A bunch of us played boardgames and cooked food (awesome and super tasty food as well!). So it is not the people. I am sure that if any of my colleagues reads this they are going to give me a hard time about it the next day:) They are a good bunch of loonies too, and I sure wouldn't be able to work (in any sense of the word) if I disliked the people I work with.

How about the people running the companies then? In the past it was a pain, they didn't understand the business nor software engineering. It was a big failure to say the least! Where I am now I might not agree with everything the top says or does, but the company do make money and there are no facepalms or epic failures waiting in the middle of a lit room. It doesn't effect me in a negative way really.

How about customers? I don't notice them these days, while they were a constant source of pain in the past, so a noticeable improvement here. Makes my life better :)

How about coolness factor? From 1999 to the beginning of 2009 with a break of a few years in between I worked with smart phones. It's something I am sure many people dream of, just as I dream of working with some really cool product that I hold in high regard (cue inevitable Apple joke from Stan||Phil||Jared!). Time to burst the bubble, not always what it is cracked up to be. SymbianOS was and is some of the worst software I have ever touched (and I saw more of it than most ever will). It is just plain awful in so many ways that it makes me physically ill.

So what cool stuff do I work on these days? Enterprise software. Taste that word for a minute. Tastes kind of like cardboard doesn't it? But that doesn't matter really. I have for the first time professionally worked with the web (handcoding webpages and writing cgi in C back in 1996 to run on b/w SunStations doesn't count:)). I have again touched upon Java and haven't changed my opinion there. Javascript rocks and the browsers suck. HTML5 excites me even though I wish it was XHTML2 instead (XML plain sucks). Doing some iPhone development too which rocks.

So the underlaying tech is actually more fun these days. The system has its warts (especially for a code-maintainability/readability-OCD person like me) but it works quite well on a whole. ObjC/CocoaTouch is always a hoot as well:) I don't have as many high level discussions on software as I used to, but there are a few glimpses of hope out there. But I feel like I make at least a little difference and it is fun to code.

So that's it. It's a combination of new and more interesting tech and hope. Hope that I can make a difference, that I can leave the product noticeably better than when I got there. Seeing that things can become better is a huge motivation factor (for me).

PS
As a side note on Java. Yes I dislike that language, and I think that a lot of harm has befallen the Software Engineering profession (especially from the posers) because of it. That is for another post. But that doesn't make it impossible to write good code in it, nor does a language guarantee great software. Just like natural languages makes a difference to how we as humans think and are able to express ourselves do computer languages change how we think and express ourselves. What is spoken on the other hand is down to the speaker and I strongly believe that the coder makes a much greater impact than any language can, and the more ways we can express ourselves as Software Engineers when we put our thoughts into code. Never stop improving!

Wednesday, February 17, 2010

Facebook login

I bet most of you have seen the story on "Facebook login". Apparently some people type that very phrase directly into their web browser's google search (my guess is that they don't actually go to the google homepage, nor do they use the google search field in their browser, but rather the page set as home page on their browser *is* google.com). There has also been numerous opinions and ideas on how to fix this swimming around the interwebs.

Here is mine:

There is nothing freaking wrong with google or facebook or any of that. Using peoples stupidity and lack of will to learn as the source of improvement is inherently flawed. Build a system for morons and only morons can use it.

What did hit me when reading some of these opinions and ideas on the very same interwebs you all are using was that finding my way back to somewhere I had been before already has a solution. The bookmarks. The problem, for me, is that I never liked bookmarks. Not because they don't give me the functionality I want, i.e. find my way back from a small subset of the interwebs, but because it is a pain in the arse to use.

Adding is fairly simple, but it ends up being a huge list or I fill up the poor bar at the top of my browser. I.e. organizing them, well, is something I don't do well with. I also end up with broken links, don't care for any longer links, links I don't know I have, and a mess that means that it is hard to find things. Don't even start with searching, because if I remember where I wanna go, I most often know the URI, and I type that in. Then add in n number of different browsers on x number of computers and the mess is complete.

This is what is broken. Bookmarks are broken. I have a need, but I do not have a solution ready for my consumption. And I think this is where the true failure is. Not that someone isn't bright enough to type facebook.com in the right place, but that it is inherently a pain in the arse to get back where you have been before.

Not that I want to get back to facebook :)

Tuesday, February 16, 2010

Appstores

A very common comment on the flavor-of-the-month appstore killer seems to be that size doesn't matter. Which is to be read that the number of apps your store has isn't important. Many a writer suggest that a 100 well written high quality applications are to be preferred to 140,000+. I find that to be a classic 20/80 argument and a blatantly ignorant view on the realities of, well, reality.


Is quality better than quantity? Yes. Is variation for the sake of variation useful? No, not really. If an app doesn't do something differently, or do more or less, what point is there to it? But the argument isn't 100 high quality applications versus 140k+ "the way it is"-apps. The argument is 100 vs 140k. The quality won't be better for another platform than the iPhone, at the very least not significantly higher.


I would argue that the quality of most non-iPhone apps will actually be lower. Why you ask? Because I am an evil elitist that always takes the side of Apple? No. There are some real reasons behind this.


First of all the iPhone has gained a huge momentum in developer circles. This means that you have competition (140k...) and you have tons of developer talk on the web. It's easy to find help, easy to scoop out the competition and it is easy to find people who do develop for the iPhone. This all gives the opportunity for a wide verity of apps, and a need to produce high quality apps to get ahead of the competition.


Second we have the SDK. It's good. The APIs are good, the views are good, the frameworks are good. Good times all around. 'nuff said.


Third we have the standard Apple applications on the devices. They are good. Very good. They might not suit everyone. The notes app is typical of this, some people really do want more than that. But for what it does, it does well. So there is a good starting point which is consistent. Not a mish mash mess so prominent on other platforms.


Fourth is the quality mindedness of developers on the mac platform. Some really awesome high quality apps have been released for the mac. The developers take pride in following Apple's guidelines or exceeding them (Apple do need some updates in this area for sure! They are lagging their 3rd party developers. How common is that?). You develop iPhone apps on macs. See the connection? Someone willing to pay the premium to develop on a mac sure is going to have a reason for it. I know I do.


These among other reasons make me believe that the general quality of iPhone/iPod touch/iPad apps will continue to be high and continue to improve even further. I have many arguments against the other choices of mobile platforms, but I will leave that for another day.


The biggest reason why I strongly feel that competing app stores are going to fail is because they are trying to jump to the goal without doing the ground work. Apple has spent a long time building up to the iPhone (and now the iPad). Building a solid OS. Building solid apps. Building solid SDKs. Building the ecosystem. Building iTunes. Building the iTunes music store. Building the iPhone. And finally, after all that, building the App Store.


If companies like Google, Nokia, RIM, Palm, SEMC, Motorola, etc are going to stand a chance, they can not skip all those initial steps, slap some lipstick on what is a solid server kernel, and declare to the world that their shiny doesn't-actually-exist app store is going to ruin Apple forever. They did that to the iTunes music store. How did that turn out? How did the Zune turn out?


To be honest, all those other companies reminds me of rabid "get rich quick"-scheme type of desperate people. Sounds like a bad bet to me.


Friday, August 14, 2009

I now own an iPhone

Hallelujah, I have joined the fold. I now also own an iPhone. A real life working iPhone that is my own. My own I tell you. A 16 iPhone 3GS (yes, I said I would shell out for a 32GB one, but seriously, I have a 32GB iPod touch, so I will use the iPod for music and the iPhone for iPhoneing). The fun thing is that I already knew what I was in for. I have had a touch for a while, I've tried others, my mother-in-law and wife has one, but having my own is different.

The iPhone doesn't suck at all. Why would I say something like that? Because I measure things in how much or little they suck, not how great they are. The less weak points the better for me. I get easily irritated by stupid cumbersome bad features. I very much do not get irritated by the iPhone. I really enjoy using it and now and then I find things I would have liked included, but either way I really enjoy using it.

That's all. Go get one yourself, they are great. I also think that this whole hoopla with the app store is going to be fixed. Apple doesn't stand to win on their current way of doing things for sure. It will be resolved, little by little, the normal Apple way.

Thursday, July 30, 2009

Android

I am downgrading my expectations on Android to "probably just a big mess in the end". We have reports such as this and the inevitable results of having n number of mobile phone companies having their own private, and perverted, agenda for Android. So what does that mean you ask? I tell you what it means, SEMC, Moto, etc will have their own incompatible extensions and rewrites, their own "ideas" for usability that they will, badly, shoehorn into the devices, and they will all suffer in the performance and quality sectors.

Apple and the iPhone has problems, but none of them are related to their hardware or software. It seems like all of them relates to carriers (we already knew these guys are professional grade A assholes) or the appstore. Oh, and a bunch of nutcases wants the iPhone to be something that it is not and they jailbreak it etc (I don't count people who jailbreak to use it with other carriers, see previous opinion on carriers).

Android is just software, and seems to have most of its major problems in the software.

The only other camp that is worth watching today is the Palm/RIM camp. They really really should join forces. Seriously, now, at once.

Friday, July 10, 2009

What is wrong with music today.

I'm listening at Nine Inch Nails on Spotify as I am writing this. I read this article before writing this as well: Trent Blogging on Music. Go on read it before you continue to read this.

That guy has quite a few ideas to be sure. I agree with some, and less with other of his opinions and ideas, but the most important thing is that he views the world as it is today and does his best to live in the real world. I respect him for it.

For let's face it, the RIAA and the giant music cooperations of the "past" is just not working out. Suing singles moms with kids for millions of dollars, if that isn't cruel and unusual punishment what is? Yes I've read the amendments. I urge all of you to read them too, and the basic laws of your own country if you don't reside the US of A. These people are not about the music, but about money, money, and money. They remind me more of the Mafia than anything else.

So is the solution to bring anarchy to it all and just demolish copyright? Or the other extreme (to which we are heading) some kind of 1984, Fahrenheit 451, DDR - type of world? No, not really. Neither is. We need freedom, and we need some form of basic cause and effect when it comes to what people put their efforts in. But the time when music sales could equal an insane lifestyle should hopefully soon be over. Do we really need another Britney Spears train wreck?

What we need is a digital marketplace for music. One actor that could make this happen really fast would be Apple. I consider their iTunes store offering a best of breed high end solution. I don't say you can't do better, I am saying nobody else comes close to them up until now. Their appstore for iPhone is just fantastic and very very democratic. For a license (about 100 bucks or maybe a bit less) and 30% of the profits anyone can publish their software through the premiere mobile device software service. I haven't seen anything that comes close.

What if Apple would open up/make it easier for any band out there to buy a license to publish their music on iTunes and decided the cost themselves? Ok this would wreck the 99 cent/song idea, but I think that is a good idea for large labels. Streamline the pricing makes it vastly much easier to manage. It might be a good idea to limit the independent publishers to 0, 49, and 99 cents though. For simplicity. And why 0? Because you want to build a fan base! If you are willing to spend silly amounts on pushing a band in the media, why not give away music instead? That way when you go out gigging new places people can have heard your music and when they see your poster they might think "wow, cool, I wonder how they sound live, maybe they play new songs as well, let's go there and bring all my friends!".

Also imagine being able to buy a recording of the very show *you* attended? I would love that. I wish I could have had recordings of all the shows I've been to. Even that one where #€)(#€(#% got to get onstage with Iron Maiden during Heaven Can Wait. I'd pay twice for it to be honest.

Which brings me to something possibly resembling a point. The solution is *NOT* to make new laws or use the legal system as a weapon against large portions of the population for such a minor crime as illegally *copying* music. For never ever is it stealing. The solution is to find new ways for people on one hand enjoy music, and on the other hand make money on it. Who knows, maybe a "Hidden Stars" edition of Guitar Hero and the likes could be the future? :)