Lambert on Development

My thoughts on software development

Lambert on Development RSS Feed
 
 
 
 

Columbus: Can we become a tech center?

I read an awesome post yesterday from a startup founder from Atlanta who’s moving his operation’s headquarters to California.  As I read about the challenges Atlanta poses to tech startups, I couldn’t help but reflect on my own similar experiences.

City of Columbus

Image via Wikipedia

A few years ago, I had a chance to ride along with a software startup company here in Columbus, OH. I wrote our product’s first lines of code and grew an incredible team of developers who helped grow the product. Life was challenging, and the path was steep, but we had nowhere to go but up.

Then, funding happened. Our CEO spent tireless days pounding the pavement in central Ohio looking first for Angel funding, then for VC funding. We spoke with a number of firms in ever-widening concentric circles around Columbus, but we never found anyone in this area who was looking to take on an early-stage tech startup, and we ended up being funded by a couple VC firms from Texas. I’m not sure that the distance is what led to our demise, but I can guarantee that it didn’t help.  If nothing else, the amount of money we blew on airfare and hotel rooms would have kept our lights on for another couple months.

So what was it about central Ohio that made it a “dead zone” for software startups?

Oracle Corporation world HQ

Image via Wikipedia

The answer is that Columbus wasn’t unique.  “Dead zone” is, in fact, the default state everywhere you go.  If it weren’t for Silicon Valley, we never would have understood that there was an alternative.  Even six or eight years ago, there were precious few communities that could claim to be startup-friendly.  I’d visited Silicon Valley in the go-go late 90’s, and I was absolutely blown away by the entire environment - everywhere you turned, you’d see dot-com stuff, but this was before most of the rest of the world realized there *was* a dot-com.

By the time we were seriously looking for VC funding in 2002, the Silicon Valley VC’s were still the 800-pound gorillas, but we were starting to see signs of life in New York and the Austin, TX area.  North Carolina had its Research Triangle, but at the time, that was mainly geared toward attracting big companies and big facilities, so it didn’t do us much good.  As it turned out, Austin was the best we could do.

As volatile as the tech economy has been, it’s still wildly more successful than watching manufacturers shutter their factories, so you’d think that every State and local government in the nation (including Columbus) would be waving their magic wands to make their regions into the next tech mecca, and yet so very few communities have made this leap.

You ever wonder why?

Jeff hits most of the important points, to the extent that I was violently nodding my head in a few places, but I’ll call out and expand on a couple points as they specifically relate to Columbus:

  • Critical mass.  You simply need a concentration of tech investors and startups that are needed to make a tech community work.  Jeff’s point that this shows up in the lack of a market rather than a lack of money is spot-on.  When you’ve got a bunch of people who aren’t used to seeking or investing VC funds, who don’t have the experience to know good from bad — in short, people who haven’t been there — it’s going to show up as a really tight financial environment.  This is not completely unlike what we’re seeing in the global credit markets, but it’s driven as much from inexperience as it is from distrust.
  • Velocity and volume.  These drive a tech market.  This is how people get experience, both as entrepreneurs and as investors.  In Silicon Valley, we’ve certainly seen the irrational exuberance that drove people to fund everyone with a slide deck, and most people would agree that there’s such a thing as too fast and too loose, but you can’t ignore the side-effect that lots and lots of people there are really comfortable setting up VC deals, and the same can’t be said about central Ohio.
  • Communication and networking.  Silicon Valley led the world in innovating communication and networking among technology innovators, and I believe this was no small factor in their early success.  When you have a connected community, there are a million opportunities for people to reach out to help one another, and that propels innovation and productivity.

The tremendous challenge here, of course, is that this is a chicken-or-the-egg problem.  How do you reach critical mass and velocity and volume when you’re essentially growing organically?

So, it’s hopeless, right?

Wrong.  The best news of all for Columbus is that I’ve seen a ton of improvement in the last couple years, and the good news is accelerating.  The most visible signs of change are in communication and networking, where the Columbus communitity seems to be embracing web 2.0 technologies to drive face-to-face networking.  If you hook into these communities, there’s a ton of chatter about what Columbus technologists and business leaders are doing.  A year ago, none of this was transparent, which really limited the networking effect that’s so vital to the growth of this environment.

We saw a great example of this new energy about a month before our recent election.  The recent 2.Ohio event came together incredibly quickly, and brought some real headline talent to Columbus.

If you’re in Columbus, check out the Columbus Tech Life wiki and follow some of the blogs and twitter profiles you can find there.  Check out the Columbus Tech Life blog.  Come out to the next IT Martini meetup and do some networking.  Watch sites like TechColumbus and Platform Lab for events you’re interested in.

Don’t get me wrong - there’s still a ton of work to do here.  I’d love to see more visibility for all the participants in the startup ecosystem.  For example, Microsoft just announced their BizSpark program, which helps startups with free software, but also by hooking them up with a partner who’s there to educate and support the startup.  I’d love to see a couple Columbus-area companies set up as BizSpark partners so the next generation of startups doesn’t have to go to California or Texas to grow.

Columbus readers, what other resources exist to connect our tech community?

Reblog this post [with Zemanta]

Spike Code vs. Reference Architecture

architecture illustration

Image via Wikipedia

I just read a post over on Codebetter.com where Jeremy Miller advises us all to not check in a code spike.  When I initially read this, I got a creepy, crawly feeling because the thought of doing any work at all without checking in makes me a little nervous.

As I read Jeremy’s post, though, I became more comfortable with Jeremy’s reasoning, and I also came to understand what was driving me nuts when I saw the post in the first place.  Not only did Jeremy not really mean “don’t check in your code”, but I was reading “spike”, and thinking “reference architecture.”  Let me explain.

The spikes that Jeremy is talking about are explicitly defined as throw-away code in every sense of the word.  There’s no expectation that any of this code finds its way into your main source trunk.  You’ll also notice that Jeremy ends up suggesting that you actually *do* want to check these spikes in — just not into your main trunk.

In my experience, though, it’s not uncommon for a “spike” to evolve to the point where it’s used to illustrate how something is going to work.  In other words, once you’ve used the spike to prove that something can work, you want to use it to show others how it’s done.  When that happens, you’re starting to turn your spike into a reference architecture, and this is a much more important beast than your normal spike.  Here are some signs that your spike might really be turning into a reference architecture:

  • It’s documented.  If you start to go through the trouble of explaining how this thing works, it’s more than just a spike.
  • It’s got more than one revision.  If you check in updates to your spike to illustrate new ideas instead of building a new spike, you’re growing a reference architecture.
  • It mimics the structure of your “real” application.  If you go to the trouble of making your spike’s project structure look substantially like your application’s structure (or vice versa), there’s a good chance you’re going to end up with a reference architecture by the time you’re done.

Personally, I like reference architectures a lot.  They’re small-scale illustrations of how all the moving pieces in your application fit together in a size and scope that can be absorbed a lot more quickly than your full application.

Do you find this distinction in your projects?

BizSpark and Empower for Microsoft Startups

You may be familiar with Microsoft’s Empower program for ISV’s.  Empower has been around for a few years as a way to help budding ISV startups ship their new Microsoft-based software products, and is widely-regarded as a no-brainer in its target audience.  Until today, if you were contemplating a new software product built with Microsoft development tools, you just couldn’t beat Empower.  For an incredibly low price, you get the full MSDN suite of development tools, plus production licenses for OS and back-office products.

Today, though, Microsoft announced BizSpark, which just might do Empower one better - if you qualify.  According to the BizSpark web site, BizSpark offers some amazing benefits for no up-front cost:

  • Software. Receive fast and easy access to current full-featured Microsoft development tools, platform technologies, and production licenses of server products for immediate use in developing and bringing to market innovative and interoperable solutions. There is no upfront cost to enroll.
  • Support. Get connected to Network Partners around the world — incubators, investors, advisors, government agencies and hosters — that are equally involved and vested in software-fueled innovation and entrepreneurship who will provide a wide range of support resources.
  • Visibility. Achieve global visibility to an audience of potential investors, clients and partners.  As a Microsoft BizSpark member, you’ll be tapping into a rich, vibrant ecosystem of peers, partners and support resources around the globe, helping you grow and succeed. Microsoft BizSpark is the quickest way to get your Startup fired up.

But you’re not going to get all the good stuff unless you’re a new (less than three years old) startup with under $1M of revenue.  There’s one more catch, too:

Before you can join, you need to team up with a BizSpark Network Partner. Network Partners are organizations that specialize in promoting and supporting software Startups through programs, mentoring, networking, business advice, financial assistance, and so on.

At first glance, this looks like merely a lower-cost version of Empower, but if you poke around the web site a little, and read through the Program Guide for BizSpark, you’ll start to appreciate the bigger picture that Microsoft has in mind.  They’re trying to foster an entire connected startup ecosystem, including not just the startups, but also angel and venture investors and public and private incubation groups.  If you step back and see the whole plan, this is a remarkable win-win opportunity for Microsoft and a whole bunch of new ISVs.

Reblog this post [with Zemanta]

Could Azure be self-hosted?

LOS ANGELES - OCTOBER 27:  In this photograph ...

Image by Getty Images via Daylife

In response to my Azure reaction, James Bender pointed out that Azure, in its current form, really wouldn’t make sense as a self-hosted platform.  Rather than burying this point in a comment, I’m going to talk about it here, because this positioning (by Microsoft) is pivotal, and it’s crucial for Microsoft’s future.

First, I think James is certainly right about Azure in the form you see today.  Step back from the forest a little, though, and imagine an Azure that’s designed specifically for enterprises to deploy into their own data centers.  Certainly, you wouldn’t have the (nearly) unlimited scaling that Azure promises, and certainly, you would have a much higher start up cost, which mitigates Azure’s appeal for startups, but there’s no question at all that Microsoft could have made a self-hosted platform that would create a compute fabric in your own data center.

Multiple racks of servers, and how a datacente...

Image via Wikipedia

You would be able to virtualize computing resources across your back-office, so as one application reached peak demand, it grabbed cycles from a pool of available computing resources in your fabric.  You might have been able to spin up and spin down servers on-demand - perhaps as VM’s.  I’d bet it wouldn’t be much of a leap to have a management interface actually power-up and power-down physical servers on demand.  This wouldn’t save anything on the acquisition costs of these peak-usage servers, but you’d save a ton on power to run them and cool them, and in any decent-sized data center, those costs hit the bottom line in a big way.

This model would have one more huge benefit relative to the Azure we see today: a fast network backplane.  There’s a huge blind spot in everyone’s cloud computing visions, and it’s network bandwidth.  If you’re counting on moving a bunch of data up to the cloud, you’d better get out your pocket calculator and figure out how long it’s going to take you to get your data back and forth from your back office to the cloud and back.  Start with backups, and let me know if your router is smoking yet.

Image representing Amazon.com as depicted in C...

Image via CrunchBase

So why the hosted-only model for Azure?  After all, Amazon’s already pushing that model of cloud computing - why not sell a competing vision where your data center becomes the cloud?  This model, in fact, is the way you’d have expected Microsoft to roll out Azure, based on the way they’ve built product in the past - build your infrastructure any way you want, using Microsoft software to build it.

But Azure is different.  Azure is hosted by Microsoft - exclusively.  If you use Azure, you’re going to write Microsoft a check every month (although nobody knows the terms), and that’s the difference.  Microsoft is deliberately going after the recurring revenue model that only hosted service can bring.

You see, Microsoft has pretty much saturated the market for its operating systems and Office software, and that’s where most of its revenue comes from.  Selling software products is an awesome way to drive the valuation of a software company - I’ll try to do a post on the math that drives this at some point, but the key driver is that once Microsoft has written Office, it costs them effectively nothing to print another copy.  This product valuation is what made Bill Gates‘ fortune.

Image representing IBM as depicted in CrunchBase

Image via CrunchBase

Wall Street demands growth, though, and the Zune just isn’t getting the job done.  Microsoft, therefore, is making the big shift to a services company, or at least a hybrid.  This is exactly the same transformation that Lou Gerstner managed at IBM, and it’s driven from the same factors.  I don’t expect the transformation to be as dramatic it was at IBM, because Microsoft is starting before the ship is on the rocks.  In fact, since Microsoft’s software is still selling pretty well (unlike IBM’s software when they made their shift), I expect Microsoft to be a hybrid company for a very long time.

There’s no question at all, though, that Azure’s recurring revenue model is the prize that Microsoft is fighting for here.

Reblog this post [with Zemanta]

PDC Reactions: Stuff nobody else noticed

LOS ANGELES - OCTOBER 27:  In this photograph ...

Image by Getty Images via Daylife

This was PDC week for Microsoft - this is their annual software development conference, and single best place to glimpse the future of software development according to Microsoft.  This year’s big splashes came from Azure (Microsot’s cloud computing platform), C# 4.0, and Windows 7 (I still can’t believe they’re really calling it “7″).

In all cases, we got to see a little more detail about these platforms, but there weren’t too many real surprises.  Azure seems to have been met with guarded enthusiasm, tempered by the fact that Microsoft didn’t realease *any* pricing information *at all*, so we’ve got an offering that could be really, really powerful, but nobody knows how to make a business case for it.  Sigh.

I think it’s also worth mentioning the fact that there’s been no mention whatsoever of any ability to run Azure services on your enterprise infrastructure.  Microsoft’s done hosted services before, but this is the first time - ever - when there wasn’t an equivalent-or-better software package that you could run in your own datacenter if you’re so inclined.  This is big, and it dropped without so much as a ripple in the tech community.

Next up: C#.  Definitely some cool stuff here, led by all the dynamic language support.  I’m a little perplexed, though - of the hundreds of articles I’ve read, from dozens of bloggers, is nobody but me completely baffled at the absense of support for PHP?

PHP

Image via Wikipedia

Has nobody else noticed the massive number of plugins for blogging platforms like Drupal and Wordpress?  Wouldn’t you love to be able to extend your apps by dropping some of those plugins into your application?  These plugins are the closest thing the Web’s got to VB 1.0’s VBX’s, and we can’t touch them from a .Net platform.  Yes, I know about Phalanger, but there’s just not enough momentum behind that project to make me feel warm and fuzzy.  Just like Mono a few years ago, they might make it, and they might not, but they’d surely thrive if Microsoft would throw them a bone.  Really disappointing.

Image representing Microsoft Silverlight as de...

Image via CrunchBase

I’ve also seen some people speculating that the continued Silverlight push signals the end of JavaScript.  I seriously doubt that’s going to happen any time soon, and it makes me nervous to think that might be Microsoft’s intent.  Don’t get me wrong: I’d be the first to dance on JavaScript’s grave, but I want to see Silverlight running on Linux and the iPhone before I’ll start lacing up my shoes.

Last, but not least is Windows 7.  I’m really encouraged by the consensus opinion that “7″ is Vista done right.  As much as we’ve come to rely on the Web as our computing fabric, I’m still aware that the OS can still have a mighty effect on our experience as power users.  I really think that Microsoft is coming to grips with the idea that they’re losing market share both on the low end (from Linux) and on the high end (from Macs).

Given the fact that Microsoft is going to have to keep a version of XP kicking around and selling it for peanuts in order to hold the low end, I’m not sure it’s a big loss to them to let that go, but they should be scared as hell that they’re losing the high end.  I’ve seen more than one developer claim that Macs (with virtualized Windows) are the best places to develop not only Mac software, but also Windows software.  Be afraid, Microsoft!  Be very afraid.  Windows 7 had better stop this bleeding, and soon.

If all this sounds a little negative, it’s because I think that despite the great stuff that made it to PDC, there were a couple of places where Microsoft stopped just short of a home run, and I would’ve loved to see them swat one out of the park.

Reblog this post [with Zemanta]

C# 4.0 more like VB: Sign of the Apocalypse?

Visual Studio

Gasp!  Can it be true?  Did Anders Hejlsberg really say that the next release of C# was going to be more like VB, and if he did, is this the beginning of the end for all of those holier-than-thou VB-bashers?

I hope so.

I’ve worked with both, and I’m really tired of the argument that one is inherently better than the other (hint: in my experience, that’s a one-sided argument).  In fact, there’s a lot to like about both languages.  I love, love, love the tool support that you see in C#, and I believe that at least some of this comes from C#’s type safety.  Still, I miss the easy of dynamic coding in VB (prior to VB.Net).  Event though dynamic typing was widely derided as just plan sloppy programming (and often, it was), you could do some really elegant work in VB without explicitly pulling out the big reflection guns.

PHP

Image via Wikipedia

Ruby

Image via Wikipedia

We’ve also seen the rise of fully-dynamic languages like PHP, Ruby, and Python in recent years.  I’d go as far as to say that these “low-end” languages dominate the web in a way that static languages just can’t touch.  Part of this domination comes from cheap hosting (get a shared Linux environment for $3.99 / mo), but part comes from the extensibility that’s possible with these languages.  If you’ve ever wondered why you don’t see communities like Drupal or Wordpress on .Net technologies, take a look at the way these platforms are built and extended.  Dynamic code is absolutely essential for these platforms

If you’re following PDC, you’ve seen the Azure announcement.  This goes beyond cheap hosting, of course, but I’m encouraged to see this as an alternative to the existing shared Windows hosting options, which just aren’t that great compared to shared Linux environments.  Add to that the dynamic language enhancements coming in .Net 4.0, and I think Microsoft finally has a credible plan to support “2.0″ development.

Just as we saw with web browsers, web development, and Java, Microsoft’s response to Web 2.0 has taken a little while, but I think it’ll be worth the wait.  Visual Basic developers, welcome back to the cool kids’ table.

Reblog this post [with Zemanta]

Astoria team shares future direction

Following the release of Visual Studio 2008, a handful of significant enhancements began to take shape, targeted for the SP1 timeframe.  I’m sure most of you heard about the MVC Framework for ASP.Net, and you may have heard about the Dynamic Data Website, too.  But I’m still surprised how many people haven’t heard of Astoria (now called ADO.Net Data Services).

Built on top of the Entity Data Model, Astoria is intended to expose your entities as REST or JSON objects with very little extra work from you.  Best of all, the Astoria controller understands the verbs needed to interact with this model in a standard way.  Much like the Dynamic Data Website, once you set up the data model, you can have your web service front-end working remarkably quickly.

More »

Zemanta is a blogger’s best friend

Image representing Zemanta as depicted in Crun...

Image by Zemanta via CrunchBase

Shortly before I switched this blog to Wordpress, I learned about a new tool called Zemanta.  It was supposed to provide context-sensitive links and images, chosen dynamically to be relevant to the work in progress.  It sounded pretty cool, and I tried to set it up under Drupal, but couldn’t quite get it done.  After switching to Wordpress, I was happy to see that Zemanta setup was a breeze.

I’ve been using Zemanta for a few weeks now, and I’m really, really happy with it.  My initial impressions were a bit iffy - images were inserted in a way that made it difficult to move the image without leaving the citation caption behind, for instance.  Zemanta keeps improving the plugin and the service, though, and my early problems have lessened considerably.

More »

Microsoft Pex: Unit Testing++

Almost a year and a half ago, I read something somewhere about a Microsoft Research project called Pex.  They were working on ways to supercharge unit testing within Visual Studio, but very little information was available at the time.  They had a site with an RSS feed, though, so I added them to my reader, and went away.

Since then, they’ve dropped exactly 22 updates on their web site, and most of them were pretty dry reading.  They announced a 0.6 release back in August, though it was pretty meager.  In the last month or so, though, things are really picking up speed, racing towards a public debut at PDC next week.  Today, they announced their 0.8 release, and it’s finally starting to demonstrate some of the coolness they promised early on.

More »

Overload ToString() to make debugging easier

Debugging

Image by TaranRampersad via Flickr

When you’re debugging code in Visual Studio, you’re going to end up setting breakpoints, watching variables, and maybe dumping information to a log file or the immediate window.  Wouldn’t it be nice if you could read some of it?

Too often, we wait until we’re writing a log entry or trying to peer into the contents of a watched variable to worry about formatting objects.  If you find yourself looking at a particular object or structure more than a couple times, though, consider overloading the ToString() method on that object.  After all, nothing should be better suited to present a default format for an object than the object itself.  Instantly, you’ll find that logging and debugging become easier, because when you hover over an instance of that object, you’re going to see a meaningful representation of the object.

More »

Tag Cloud

Advertisement

Similar Posts

Archives

About your Host


View David Lambert's profile on LinkedIn

Blog Navigation

Featured Articles

MyBlogLog Blogroll

Support this Site

Lijit Search

Lijit Search