Thursday, March 18

Joel Spolsky expounds on the virtues of distributed version control

Not one day after I decided to unsubscribe from joelonsoftware... one of the first blogs I started reading regularly, he came up with a beauty right after announcing he was "retired" from blogging.  You can read his thoughts here

By the way, am I the only one who thinks Joel's new puppy looks a little like Joel?

I'm no fan of geek-worship.  There are a bunch of geeks out there who seriously worship other geeks and there are whole churches following the likes of Joel Spolsky and Matt Raible around.  The point is, I don't think that just because Joel Spolsky or Matt Raible say something that it becomes an indisputable law... and I don't think the fact that Joel Spolsky says distributed version control is here to stay means it is.

However, I have to say I agree with him.  Distributed version control has moved from the fringe to one that is more and more accepted by the corporate world.  The thing I don't agree with is, I don't think the world thinks in versions without thinking of change sets.  I don't think it is such a major paradigm shift of "thinking in versions" vs "thinking in changesets". 

Even if you "think in versions", you are only doing so because you are interested in the changes that come with that version.  Shifting your thinking to "Joe's version" or "Mike's version" is really not that different.  Also, ignoring change sets is not really something people on teams can do forever because eventually everyone's change set becomes a released product and all the change sets end up merged together anyway.  The sooner you can do that and debug the issues, the better.

What a change to a distributed system does is change the workflow.  Take an example where two developers, Joe and Mary, are working on web services.  Joe is working on the producer, Mary is working on the consumer.  Since the producer does not yet exist in source control, Mary has nothing to test against but her unit tests.  That works while she's developing functionality, but eventually she will need to test the integration.  Lets say Joe isn't done with the producer yet, but he has enough done that Mary could do some stub testing.  Joe checks his code into source control.  At that point, if a build was done for QA, there would be broken functionality in the build.  No one has really tested that this code works with a consumer, and admittedly, it doesn't actually do anything yet but provide Mary a way to test her code.

In a distributed world, Joe and Mary can easily work together by taking changes from each other and then, when the final product is complete and working, they can commit the changes to the build branch without releasing anything that is not working.

That, in my mind, is the benefit in the corporate world where large development teams have individuals concurrently working on small, inter-related pieces of functionality.

While I can't say I would rather switch to programming in C++ than go back to the world of centralized version control, the virtues of it are a good addition to any development team.  As we speak, my team is experimenting with distributed version control using Bazaar.  The details of that will follow here at some point when our experiment is complete.
Reblog this post [with Zemanta]

Wednesday, March 17

Sprint + Nexus One? Goodbye Verizon!

Sprint NextelImage via Wikipedia
Today a colleague(and would be contributor to CheckedException) passed me a link to some beautiful news.  Nexus One is coming to Sprint and soon.

In an official press release(more than has come from Verizon I might add), Sprint officials have verified that Sprint will get the Nexus One with availability being announced "soon".  And with that, it's adios to Verizon.

I can't say that I've ever been as excited to get a new phone as I have to get the Nexus One.  I even considered switching to t-mobile, but as I said before signal is king and there are too many dead zones for me to accept t-mobile's lack of coverage in this area.  Sprint, on the other hand, has good coverage in my area and great data speeds.

This news coupled with the release of the HTC Supersonic(if that comes to fruition) means that Sprint will firmly supplant Verizon as the holder of the premium Android phones on the market.
Reblog this post [with Zemanta]

Friday, March 12

Using MS SQL from Linux

As a programmer who works primarily on Linux machines, both on the desktop and server, I have found the number of free clients for SQL Server to be sparse at best.  There are a few... Squirrel SQL comes to mind as one.  Oracle SQL Developer works as well.  However, each of them have their difficulties.  I have had weird crashes with Squirrel and I can't use any of the advanced features in SQL Developer.  Such is the life of a linux based developer trying to work with the world of Windows.

One bright spot I discovered recently is SQSH.  It is essentially a shell for SQL Server that operates something like the shells for mysql or oracle that I am familiar with.  Why is that exciting at all you ask?  Ever tried to step through a large result set on the console?

The answer is, it's not so much the SQL part that is exciting, it's the shell part.  It's a real shell that goes beyond what is available in any of the other shells I am aware of.  Sure Oracle's SQLPlus will allow you to do variable substitution and some macros, but it's not nearly as powerful as sqsh.  In addition, you can use pipes!  That means, as I alluded to earlier,  you can step through large result sets by piping the output of a query to less just like you would in a linux or unix console.

You get flow control and even backgrounding.  So if you know a query is going to take a while, you can add an & to the end just like you would in a Linux shell and it will run in the background.

Here are all the features.  Even more awesome is the fact that it can be installed via apt-get on Ubuntu.  There is some extra setup required to make available the data sources you connect to, but it is very easy to get going quickly.

Just another tool for your developer toolbox.

Friday, March 5

More on Apple, HTC, and competition

The more I have thought about this issue, the more it stinks.

Patents were invented to prevent competitors from stealing invention from the original inventors for a reasonable period of time so the original inventor could recover the cost of R&D.

The truth is, Nexus One and iPhone are not competitors.  Why would I make such an obviously insane statement like that?  I mean, look at them, there are literally hundreds of blog articles and professional reviews comparing the two and there are more similarities than differences.  Still, as with many such things, the small differences make all the difference.

One difference is domain.  There are countries where US Patent and copyright laws have no jurisdiction because there is no treaty to enforce it.  With wireless, the network is the domain. Nexus 1 is not a serious competitor on AT&T because it can't use full 3G... it is limited to the slower EDGE network.  The iPhone doesn't work with any of the carriers who offer the HTC phones in question.  So, there is a significant deterrent already in place to switching networks(early cancellation fees).  In that case, it is the features of the network, not the phone itself, that is creating demand.  I wouldn't switch to AT&T to get an iPhone not because I think iPhones suck, but because I don't want AT&T.  In truth, anyone with a data plan would have been insane to keep their Blackberry over the last few years instead of getting an iPhone.  The barrier was network then and it will continue to be network now.

The other difference is community.  Apple has a community all their own and the Apple loyalists are the ones who are out there buying up every new Apple gadget the minute it comes out.  They are also the ones posting all over the internet about how much the Nexus One "sux" in comparison to the iPhone.  These people are not going to switch networks to buy something that is "just like" their iPhone.

On the other hand, people who are interested in Nexus One and other Android phones are interested in getting a lot of the same functionality of the iPhone on their current network.  Also, many of them are going to be developers who are interested in an open platform.

In addition, if the products are truly as similar as Jobs wants you to think they are, why would people switch from what they have, pay the cancellation fee, and pay the high price of a new phone just to get something they already have?  And as far as new customers go, AT&T is the breaking point there.  Signal is king, if I would have accepted bad signal for the phone I wanted, I would have switched to T-Mobile when the N1 was first launched.

Bottom line, different networks, different target consumers... too different for this to really matter to Apple and too different for there to be a claim of serious competition.  What it does is call into question(again for the thousandth time) is the validity of patents on software.  I am all for protecting the rights of businessmen and inventors... what I am not in favor of is fooling the patent office into issuing a patent for something like "gestures over an icon for unlocking a device" because they obviously don't understand the technology.

Like I said, the more you think about it, the more it stinks.

Wednesday, March 3

Time to jump ship on Apple

Party's over open-sourcers.  It was great while it lasted. 

We *had* a corporate, innovative company who, while they have never necessarily been a "friend" to open source, embraced it openly.  But we discover that they were only our friend for as far as that friendship would advance them.

We *had* an ally against the great evil in the mountains of Redmond.  Their witty commercials made us laugh.  Their rising market share, eating away at the Windows market share, was an encouragement to us all.  Maybe the general public can leave their world dominated by Windows to try something different.

We embraced them as "enemy of my enemy".  But now, they have revealed their true nature... they are the same thing.

Apple's lawsuit against HTC is the realization of some of the cautiousness I have approached them with over the years since they announced they were moving their platform to BSD.  Steve Jobs, while he gets credit for building an amazing package, is a proverbial wolf in sheep's clothing.  Sure, he likes to play the part of super-cool, techno-geek... but in truth, he's just the charismatic guy who makes the geeks write his papers for him.  Steve Wozniak anyone?

I'm not saying Jobs is bad at what he does... but he's no revolutionary thinker and he's definitely not the "geek behind" Apple.  He is most certainly not worthy of the adoration to the point of deification that Mac enthusiasts have showered him with.   He has a lot more misses than he does hits.  He's sort of like an astrologer... he comes up with all kinds of wacky proclamations like "no one uses Java anymore" and "we aren't going to open our platform to external developers because no wireless provider want's a rogue app to take down their entire network".  Then there's the fact that they signed an exclusive deal with one of the worst networks as their provider for the iPhone.  But people don't remember that stuff, even though people outside of major cities are reminded of how bad AT&T is every day.  They remember his hits and they think he's some kind of techno-fortune teller who's intuition on technology is not to be trifled with.

If you look at  what they do best, Apple is an eye-candy company.   They have taken something technically good(bsd), put it on some average hardware, wrap it in a nice box, and charge a premium price for it.  There's nothing wrong with that, it's a part of business to build/package something into a product people will buy.  However, let us not forget that they did it, once again, by stepping on the shoulders of geeks.

For all of Bill Gates' faults, he could at least write some code.

But, I digress.

Suing HTC over what really amounts to the Android interface is ludicrous.  One could argue that HTC modified Android with the SenseUI, but Nexus One is included in the suit... so that argument has no merit.  Google is the maintainer of the Android project, if Apple is going to sue anyone, it should be Google.

Besides, the suit amounts to being over multitouch(not used on the N1), gestures... which has been around for a long time, and their "object oriented user interface"... uhh, yeah, had that on my Treo in 2003.

And why now?  Why just HTC?  Blackberry Storm uses gestures and an object oriented touch interface.  LG has a whole line of iPhone knock-offs.  This lawsuit is a CYA for Steve Jobs because they signed a deal with a crappy network and somone else is now truly competing with them... especially as N1 is set to launch on Verizon's network.  If Jobs was truly the technologist he claims to be, he would quit worrying about what everyone else does and go invent something else.  The fact is, he's not.  The innovation at Apple is growing pretty stale.  In fact, I think it's fitting that they tie all their products together with an i.  iPod, iPad, iPhone are all essentially the same thing.  They add some phone hardware and a little bit of software to an iPod and there you have it, iPhone.  Take the same idea, expand the form factor, and you've got an iPad.  The idea studio at Apple seems to be drying up, so Jobs is resorting to Microsoft-like tactics to keep the competition at bay.  In my opinion, that puts him solidly in the Microsoft category, and makes him an enemy of FLOSS.  The truth is, he always was.

In the end, lets face it.  This is all about self-interest.  I want my Nexus One the DAY it comes out for Verizon and if this lawsuit delays that by a single day I'm going to be one ticked off geek.
Reblog this post [with Zemanta]