Category Archives: ramble

incubators are a ghetto

Update: Following up to all the conversations, I’ve had about incubators and Silicon Valley since last week, I didn’t mean to imply ‘a list’ or that there are not other incubators besides YC, TechStars and 500 Startups that create value. Though, like most things, I think the tendency is a Pareto Distribution. I would also like to point out that there is nothing wrong with programs that are not explicitly designed to help companies get investment, just don’t mention investment as a central feature in marketing the program.

The way for anyone to establish that value is to provide transparent expectations and data about their program. Done.

There has been an explosion of incubators in the last few years. Most of them suck. Some suck so bad that the net value created by the program is probably negative. I’m not going to name names. This is just about results.

Let’s start with a story. There are minor variations, but I’ve seen it played out in real time more than once in the last few years. The story goes like this. An incubator has a class of companies, they give them a little cash, they have a weekly session with a mentor or whatever, time goes by, demo day, no one gets funding, fail, fail, FAIL.

what’s wrong

They tried to copy the Y Combinator model, and by ‘copy’ I mean cargo cult. They performed the outwardly obvious ceremony, but didn’t understand and thus couldn’t replicate the mechanics of cause and effect.

Y Combinator has had impact on the dynamics of startup formation and funding not because of the exact details of a program.  But the details are what cargo culters can see: three months, a dollar figure, weekly sessions, gogogo, demo day… the end , most of the companies dissipate.

To be successful an incubator has to do two things. First, create companies that are actually fundable, second, get them an audience with investors interested and able to fund. That’s it. That’s all. Connect the dots. Success.

create companies that are actually fundable

To accomplish the first, you can look at details like Paul Graham’s judgement of people and ideas, or Brad Feld’s numbers and analysis, or Dave McClure’s hustle and passion. You can look at the program, and the mentors. You can talk about lean startup pivots or vision or whatever. At the end of the day, there is a fairly narrow band in the total spectrum of business opportunities that are venture fundable (though that band still represents infinite opportunities). If through whatever process of filtering, coaching and pivoting, the resulting companies don’t represent an opportunity for plausible venture returns, then by definition those companies will not get funded.

The fundability is also a function of how the opportunity is represented. Raising a round of funding is telling the story of your company to a particular audience. If you can’t connect the right dots for the investors, they probably can’t connect them for you. I literally grimace when I meet founders who have come through these programs and don’t understand how to discuss the addressable market, the go-to market, let alone term sheets. The point is that a company is only as fundable as they are able to tell the story that they are fundable. And that skill is something that many incubators fail to teach. Which is a segue to what has to be in place to accomplish the second: get them an audience with investors interested and able to fund.

the network: the only thing that’s real

The traditional venture model ran on warm introductions. If you have an incubator that can’t make that hand off personally, or get the right audience in the room for demo day, then the value of the program is severely limited. So much, that I’d argue for what you trade in equity for the amount of money, the founders’ time would be better spent reading through Venture Hacks or ‘The Business of Venture Capital‘, and then hustling to social engineer introductions themselves.

As much as anything that’s what the successful incubators are leveraging. YC leverages the personal connections and reputation of Paul Graham et al. Dave McClure is PayPal Mafia. He knows people and more importantly, people know Dave. These programs, through the network of people involved, can make introductions to dozens of individuals who in many cases MUST fund startups. That is a competitive advantage.

out of the ghetto: advice for founders

What can be done?

If you are a founder looking at a program that hasn’t had at least 50% of the previous companies funded, you might reconsider the options. You may have a good experience and learn some things, but there is an opportunity cost. If your life’s mission is really to make something amazing happen with your idea and you have the resources to devote your time to that, then what are you waiting for. If the time spent and the equity traded isn’t going to open more doors for you than just working on the code and angel list, then that program might be a setback, because you’ll just have to do those things anyway and you won’t have the burden of sorting good advice from the bad. You will also inevitably be judged by the quality of companies you stand next to, at least in the context of the program.

If you can go to YC, Techstars or 500 startups, you should. I would. You’ll learn things and get a tiny bit of money, but the connections you make to the network of founders and mentors is what will make all the difference. That’s the fat head of the incubator distribution. I’m sure there are others that add value in the middle, but I want to encourage people to be aware of what you are getting into and for what. In addition to the time and equity commitment, be sure to get more data and weigh the options and benefits.

  • How many companies have been through the program and how many got funded?
  • Who are the mentors in the program and what are their backgrounds?
  • Can you get in contact with people who have been through the program? Especially founders that failed.
  • What are the other options? (for example, building something)

unsolicited advice for the well intentioned incubator

If you run an incubator and your earnest concern is the creation of value, this is my unsolicited advice. (Remember, there’s just two things you need to do, create fundable companies, get them in front of investors.)

  • If your companies aren’t getting funded, take it personally. Look at what your program creates and the relationships that are being built with investors.
  • If no one involved has ever been funded, that’s a problem. If nearly everyone involved hasn’t been funded or is in a position to fund, that’s a problem. Fix it. You have very little hope to create fundable companies otherwise.
  • The companies should be getting as many questions from you as they are answers, probably more… a lot more. Of course, that’s predicated on knowing the right questions to ask.
  • The incubator needs to be building relationships with investors as much or more than any of the companies. If no one running an incubator has or can build those relationships, how can they can help a company build relationships?

There will always be advantages in resources and relationships. That’s how the world works. Understanding that is the first step to gaining those advantages. Hope that helps.

tl;dr if an incubator is run by people who have never run a start up, never successfully pitched venture or haven’t got the cash on hand plus the risk tolerance to make considerable investments, the companies that accomplish anything will be in spite of the program rather than because of it. Some of these incubators appear to be nothing but a hobby for individuals of relatively high net worth, often having had nothing to do with venture investment in the past, to tell their war stories filtered through survivor bias to founders who have to build companies in an environment different from anything their mentors have ever experienced. The resulting bad advice and misguided effort may be a net negative for all involved, the founders and investors.

addendum: After writing this I found this, which could potentially be a useful for collecting and comparing data. There is a link there  to a post and literal dissertation on forming seed accelerator programs and a follow up to that. Jed Christiansen provides a thoughtful treatment of the subject with sound advice, but the primary focus is how to make an incubator appealing to the entrepreneur, while follow on funding is mentioned in passing as a complication. Venture funding is a pull system, there has to be explicit signals to pull and someone to do it. (if you don’t know what a pull system is, see me after class)


Learning Machines and the Future of Academics

Institutions will try to preserve the problem to which they are the solution.

– Shirky Principle

Learning, How does it work?

There has been progress and evolution, but the roots of our academic institutions are essentially medieval. For all the progress that has been made, for a variety of technical and social reasons, the whole system is largely hierarchical and based on lineage. Expertise was always a scarce resource and the time and investment to transfer expertise required physical proximity. While we have passed the stage where participation is solely based on exposure to Latin and Greek as a filter to participation, on several levels there is still a strong bias that filters on context and circumstance. Subtle and sublimated as that bias might be, these filters may be least obvious to those who benefit most and have the power to change anything. Consequently, we have not yet fully leveraged available human potential. The present is not evenly distributed.

I did the advanced track of the Artificial Intelligence and Machine Learning classes from Stanford in the last 10 weeks and wanted to share a few thoughts. Technology and efforts like these have the potential to change everything about how people learn.

Information wants to be free. The marginal cost of broadcasting the highest quality lectures from the best teachers on the planet is trending to zero. That is changing everything. Stanford is changing it. MIT is changing it. Khan academy is changing it. Know It, Busuu, and probably a long list of education start ups I don’t even know about are going to be changing it. There is a good chance that this transition disrupts the university system as we now know it. In every sense of the word disrupt.

The two Stanford classes had a slight overlap in topic, but they were qualitatively very different. There are plenty of reviews about the classes already. What I’m interested in is slightly meta.

How do people learn? What is the incentive? What is a measure of progress? And what can they do with the things they learn?

In particular, what is the most effective path to someone being productive in a deeply technical skill?

What Possibility…

Now, back to the Stanford classes. The contrast between the two approaches provoked some thoughts.

Sebastian Thrun started out by stating the purpose of the AI class is 1) to teach you the basics of artificial intelligence and 2) to excite you. They definitely delivered on that purpose. Sebastian and Peter Norvig split time covering an introduction to AI. The format was video lectures with embedded questions at the end of most videos. The format was the same for the lectures, the homework, the mid-term and the final. Watch the video, answer the questions. Done.

The ML class used a different format. This system was also video lectures. Andrew Ng’s presentation in the video medium felt natural and flowing. This class didn’t cover as many topics but almost every topic came with a programming assignment. Questions in the lectures were not graded, but there were weekly review questions and the programming assignment. You were allowed to resubmit the review or the assignment multiple times with no penalty, so you were graded, but getting 100% was really a measure of persistence. (Andrew seemed excited to be teaching people. The thank you he gave in the concluding lecture was so heartfelt, I wanted to give him a hug. Andrew made me feel like it was a true honor for him to teach this. The honor was all mine.)

At the end of AI, you had learned some things from watching videos and got graded for submitting a bunch of forms, at the end of ML, you had learned some things from watching videos and had the opportunity to have working code to train neural networks, support vector machines, k-means clusters, collaborative filtering, etc. On the one hand you have people tweeting their scores on the other you have people BUILDING SELF DRIVING CARS!

By three methods we may learn wisdom: first, by reflection, which is noblest; second, by imitation, which is easiest; and third, by experience, which is the most bitter.

– Confucius

Take The Next Step

Which brings me to the point I really want to make. What is an education? What are academics? The pursuit of knowledge and understanding? These things people are doing and building to help people learn are amazing and inspiring, but that’s only one part of the equation… the dissemination of knowledge, understanding and skill. What about creation?

Scientific journals which at one point served as a filter of quality and point of aggregation, now act as a barrier to access. If the internet does anything, it disintermediates. This current system of publishing slows and prevents the access to information. The ‘publish or perish’ tenure and research grant funding process also creates disincentives to open collaboration. I imagine a future where collaboration in research is open and transparent. Experiments aren’t done in secret and partially explained in publications, but all the methods and results are shared and updated in real time. Like a Github for science. If I can’t replicate results, I open an issue. If I find an interesting pattern or insight, I open a pull request. Everyone can see everything, streams of open data. This has to scare the living hell out of some people. There is a lot of time, money and personal identity tied up in the current system, but its essential inefficiencies are not beneficial or necessary.

(Aside: Resistance to this is not unlike what we are witnessing with the entertainment/media/copyright lobby that resulted in the SOPA legislation, where entrenched institutions attempt to prolong the last gasp of disrupted models of creating and capturing value. That resistance won’t fix outmoded approaches to servicing markets that no longer exist, it can only stunt the growth of emerging models. Piracy is a distraction. People always made copies and traded media, just the medium has changed. People have also never had a problem trading for something they value. People love to buy stuff they love. Compete in the market. Embrace the opportunities.)

Finally, there would be a benefit to more permeability between academics and industry. There are literally billions, maybe even trillions of dollars worth of technology shelved in universities. Industry loses on the opportunity to greater utilize research and expertise while academics often lose touch with the reality of practice in the wild. We all lose on the prospect of more abundant prosperity. In most cases there is a risk and implied disincentives to transition between the two disjoint worlds, which in some sense don’t even respect each other’s reality. If the system facilitated a properly incentivized flow of people and information in both directions, I can’t help but believe both would be better off.

The open questions now are how quickly the transitions happen and to what extent to those personally attached to the status quo resist. Same story, different stage.

tl;dr We live in amazing times. You can either understand how to build self driving cars or you can’t. You will either help others do it, or you won’t. Get ready for the next level or better, help make it happen. Special thanks to Stanford, Andrew Ng, Sebastian Thrun and Peter Norvig for their contributions to the future.

Dear Google, Connect the Dots

I have some little ideas.

Step 1: Be Social
Step 2: ????
Step 3: Profit

I won’t pretend I’m privy to what GOOG is moving towards internally, but this is what I would be doing if I was them.

First, social is predicated on one thing, identity. Facebook is the clear leader, then twitter, Google should make it super simple and a value add to integrate signing in with any gmail or google apps account. The next level of this game is about identity and context. It’s not too late to win that.

Whoever dominates identity will be in a great position. Someone will. Might as well be you, no? Get on it.

Also, user experience, it matters. You left authentication and authorization for google apps a discombobulated mess for how long? You know who I am, you just let me read my email, why choke on the other accounts I’m logged into when I try to open a document? It really is the little things.

Here’s where it really gets good. Make the web social. Don’t make a service that is social, make the whole thing social. Seriously.

The first run GOOG had was making the web readable. Now make it writeable. There is no reason that every site has to be a destination. Let us mark it up. Leave notes for each other. Chase each other. Gameification. Come on GOOG, let’s make this thing fun again. Let us overlay selective layers of context on the web. You can feed this data and context back into search. Win and win.

Don’t stop there, make the world searchable and writable. Break it out of the web.

You have mobile devices, you have identity, hook all that together.

Make the real time web, the real time everything.

Let’s start with an easy one. Location. Now ignore the fact that you bought Dodgeball, smothered the baby, and now someone is going to buy foursquare from the same guy for even more. Spilt milk under the bridge… Location is context. Push based location is a dead end, but it was a novelty that opened up some possibilities. Location needs to be more of an ambient context. Solve identity, you have android all over the place, find the balance between privacy and role based ambient location.

Let people filter on both sides, I only want certain people to see certain locations and I only want to see certain people in certain circumstances. Make it dynamic and easy to configure. People will love it.

Let people create contexts, and engage each other around contexts. This is what humans do. This is what social means.

Did I mention someone needs to solve identity?

That should be enough to get started.

Cloud Standards Considered Harmful

The nice thing about standards is that there are so many of them to choose from.
–Andrew S Tanenbaum

standard -noun

  1. something considered by an authority or by general consent as a basis of comparison; an approved model.
  2. an object that is regarded as the usual or most common size or form of its kind: We stock the deluxe models as well as the standards.
  3. a rule or principle that is used as a basis for judgment: They tried to establish standards for a new philosophical approach.
  4. an average or normal requirement, quality, quantity, level, grade, etc.: His work this week hasn’t been up to his usual standard.

SQL was first developed at IBM in the early 70s.

Many of the first database management systems were accessed through pointer operations and a user usually had to know the physical structure in order to construct sensible queries. These systems were inflexible and adding new applications or reorganizing the data was complex and difficult.

ANSI adopted SQL as a standard in 1986, after a decade of competing commercial products using SQL as the query language.

SQL became ‘the standard’ because it was open, straightforward, relatively simple and helped solve real problems.

TCP/IP emerged as the standard after a proliferation of competitive networking technology for largely the same reasons.

(another interesting story of emergent standards is POSIX, but apparently no one posts about it in any detail online, and you can only read about it if you are willing to part with $19… you know, the marginal cost of producing a PDF and all.)

People often compare cloud computing to a utility like electricity, one big happy grid of computational resources. Often those same people champion the call for ‘standards’, which makes me wonder if they have traveled much.

The call for standards is usually trumpeted with a need for ‘interoperability’ and avoiding lock in. We all know how well SQL standards prevent vendor lock for databases.

In discussing the evolution of standards with @benjaminblack, I pointed out that TCP/IP was more ‘standardized’ than SQL. His perspicacious response noted that with TCP/IP ‘if you don’t interop you are useless’ and ‘if databases had to talk to each other, they’d interop, too’.

Interoperability arising from a standard is a lie. The order is wrong. Interoperability comes because everyone adopts the same thing, which becomes the standard. Don’t confused a ‘specification’ with a ‘standard’. SQL became the defacto standard long before it was ‘officially’ a standard. SQL implementations will never be fully interoperable and truth be told there are often real advantages in proprietary extensions to that standard. TCP/IP became the defacto network standard and interoperable because that’s just the natural order of things. Interoperability will happen because it must, or else it won’t. Interop cannot come from a committee.

Interoperability is even more of a lie when it comes to cloud computing. If we are talking about IaaS (infrastructure as a service) then the compute abstractions for starting, stopping, and querying instances are almost trivial compared to the work of configuring and coordinating instances to do something useful. Sysadmin as a Service isn’t part of the standards. This is so trivial that you can find open source implementations that abstract the abstractions to a single interface. (Seriously, libcloud is just over 4K lines of python to abstract a dozen different clouds. At this point, supporting a new cloud with a halfway decent API is a day or two at most) The storage abstractions are in their infancy and networking abstractions are nearly non-existent in the context of what people consider cloud infrastructure. The APIs and formats are a distraction from the real cloud lock in, which is all the data. You want to move to a new cloud? How fast can you move terabytes between them? Petabytes?

Which brings me to PaaS (platform as a service), otherwise known as ‘locked in’ as a service. PaaS has all the same data issues, but without any common abstractions whatsoever. I mean sure, you could theoretically move a non-trivial JRuby rails app from Google App Engine to Heroku, but let’s be honest, sticking your face in a ceiling fan would probably be more fun and leave less scarring. That’s an example that is possible in theory, but in most cases, PaaS migration will mean a total rewrite.

Finally, SaaS (software as a service), which I love and use all the time, but I can’t convince myself that every web app is cloud computing. (Sorry, I just can’t.) Again, data is the lock in, please expose reasonable APIs, but standards don’t make any sense.

Committee-driven specifications get some adoption because most people like it when someone else will stand up and take responsibility for leading the way to salvation. CORBA and WS-* aren’t the worst ideas ever (I give that prize to Enterprise Java Beans) but they aren’t always simple or straight forward in comparison to other solutions. Adopting an official standard is good for three things, first, providing some semblance of interoperability, second, stifling innovation and finally, giving power to a standards body. For cloud computing, a standard in the name of interoperability is essentially solving a non-problem and calcifying interfaces pre-maturely.

Frankly, I’d rather double down on more innovation. Standards will emerge.

You want to make a cloud standard? Implement the cloud platform everyone uses because it is simple, open and solves real problems.

(Thanks to Ben Black for his feedback and for telling the same story a different way last year.)

Internet Safari – Definitive Guide

Stochastic Resonance Safari provides services to the luxury internet safari traveller. We strive to make your internet safari the experience of a lifetime.

We contract with the leading blogs and social media sites in South and East internet to bring you a unique safari experience.

To help you, because we care, Stochastic Resonance has compiled this ->FREE<- guide to what you can expect to encounter on your internet journey.

If you demand the best in luxury internet safaris, contact us with your requirements and a qualified representative will get back to you within 24 hours.

DevOps – You’re Doing IT Wrong

There’s something happening here
What it is ain’t exactly clear
There’s a man with a gun over there…
–Buffalo Springfield

Alrighty then, what is this DevOps stuff and what does it mean to me…

First, first off, I came to Ops as a developer (and to be honest I came to be a developer because I didn’t like my prospects or the pay rate to do pure mathematics, but that’s a long story for another day).

If you are going to work with computers at all and have some curiosity and aptitude, chances are you are going to learn a bit about how they work. At the first place I was paid to program, I was a one man wrecking crew in every sense of the word. I was in charge of everything from server configuration to all the programming. I was just out of school with a degree in Mathematics and a minor in computer science. I did everything wrong but I made it all work with what I knew and force of will. I solved problems with books, google and tinkering. There were mailing lists and forums, but they were often insular and reluctant to answer questions or dismissive. Pain is an excellent teacher and that was over a decade ago.

There was a short period where my path could have gone down either road, sysadmin or developer, but as fate would have it my choices and circumstances took me through grad school and from there I became more and more inculturated into the developer tribe.

At some point, working as a developer for a SaaS ecommerce platform startup, through arrangements that I had little control over, I got to experience first hand a dysfunctional relationship with an operations team and essentially found myself taking responsibility for details that would traditionally belong to that side of the ‘wall of confusion’.

In my time working with Luke and people from the Puppet community, I learned a ton. I learned more about the work and culture of system administrators and I also learned a lot about being a developer (in addition to a more lessons than I care to enumerate about business, relationships, marketing, sales, venture capital and spinning plates but I digress).

In my journey, I was also fortunate to make the acquaintance of a number of interesting and talented people at the Salt Lake Agile Roundtable, and this had me in the habit of thinking about technology in terms of people and workflows.

I began thinking about Puppet and the systems tools ecosystem, in the context of the people and the processes. Some of those thoughts were recorded in this blog. I started articulating, sharing and experimenting with those ideas. I found others in the communities of practice that had similar ideas. We all started talking and sharing and building infrastructure and making things happen and now we are here.

To me DevOps is two distinct things that feedback on each other, and then a third that I think is really different.

First, there is the recognition that developers and operations can and should work together. In my opinion, this is being driven by the rise of web delivered business value. When the servers aren’t up, the nifty application doesn’t exist. Too many teams have too much turbulence on both sides of that. This is a serious problem and costs companies millions of dollars every year. I like to think I have made more contributions to solving this problem than I ever made to causing it. This cooperation seems to be the main focus of what I read other DevOps people talking about. Communication, community of interest, manage flow, boundary objects, yada yada… great stuff!

Second, infrastructure and system administration is evolving. The explosion in the open source tool ecosystem is awe inspiring. From provisioning, to virtualization, from configuration, to orchestration, something has undeniably accelerated in the last few years. More and more, from end to end, infrastructure is code. APIs driving and manipulating systems from bare metal to running services. That process looks more and more like software development, split from undifferentiating physical labor in the datacenter. The ‘sysadmin’ no longer has to rack and stack and cable, in addition to being an expert in every OS, application stack, the Voip phones and the printers.

People are arguing that this is not new. That’s somewhat true, and similar positions could be supported for nearly any aspect of computer science, programming or technology. I think that is missing the point a bit. While some of this might not be new in principle or practice, the acceleration is real and those people have to recognize this is not how most people think about and manage their systems. The infrastructure is an application. The sooner more people think like that, the happier they will be. I’m not advocating forget what it means to be a system administrator. Own that domain and know where you come from, but recognize and leverage all the applicable tools and lessons from software development without concerns for notions of tribal identity. In my opinion, there is more to this than ‘just good at their jobs‘, because I still meet system administrators who haven’t heard of Puppet or see why anyone would want or need something like that. The past and present aren’t evenly distributed any more than the proverbial future. We take for granted that things that are obvious to us are obvious to everyone.

Telling someone a truth they aren’t ready to understand is the same as lying to them.

Which finally brings me to the big thing that I think DevOps represents, a community of practice. There might not be anything technically new, what is new is a lot more people talking and sharing. People may have automated system administration tasks forever, but they also hard coded lots of specific details and assumptions about their infrastructure, and they mostly did their work in secret. Lessons were learned and forgotten because the details weren’t transmitted beyond a generation of implementation. There wasn’t (and to some degree isn’t) a common language for patterns of common problems and solutions, but we’re working on it. This community is emerging globally and perhaps appropriately coming together through the very medium which they support, nurture and protect with their hearts and minds. A global community of peers empowering itself to improve the craft through learning and teaching. People with a passion for infrastructure. The difference is not that we can automate systems and work together with other people, the DevOps difference is we want you to be able to do it too.

Open Source, Cloud Computing, Agile, Systems Administration, a perfect storm of ‘nothing new’ with DevOps in the middle of it.

That’s what DevOps means to me…

Now go build something…

Speed Chess

Is typing speed a factor in programmer productivity? Would you improve at chess if you moved the pieces faster?

Jason Gorman, who appears to be a relatively reflective programmer based on his blog and his twitter, tweeted this comment about chess a few days ago.

A bunch of people I follow ReTweeted, and it caught my attention because I used to think this way, both about chess and programming.

Now I don’t claim to be the greatest at either activity, but I’ve put some time and I have enough ability to claim to be above average at both. (Which is to say, I’m aware of my relative mediocrity when compared with real masters)

I’ve played chess off and on for years. I learned to play when I was quite young and I could usually beat other casual players quite easily. After losing to rated tournament players, I spent some time studying the game.

For a long time, I thought the best way to learn was to methodically look for the best move and I thought playing blitz games was somewhat degenerate. Luckily, someone convinced me to start playing blitz games regularly, and that accelerated my understanding of the game considerably.

I still play better when I take the time to be methodical, but that’s not the same thing as learning. I think the blitz games accelerated my learning for two reasons, first, because playing at that speed put that many more games, positions and patterns in front of me and two, because I didn’t attach as much ego to the games I experimented more, which led to that many more positions.

I do think there is a point of diminished returns to just move the pieces faster, and improvement is predicated on some reflection, but I will contend unequivocally that, unless you are a master, you will improve at chess if you spend a considerable portion of your playing time moving the pieces faster.

The same applies to code. You don’t need to type +100 words per minute, but if you can’t touch type at least 40-50 wpm, spend the 20 minutes a day for a month or so until you can. You will never regret it. (And I worked as a programmer for years before I could touch type.)

I would walk you through the arguments, but there is already a classic Yeggethon on the topic, which articulates all the positions I would and then some.

“Lose Your First 100 Games As Quickly As Possible”
–Proverb for Go Beginners

Duct Typing

Today people were tweeting up an old interview with Al3x Payne and some devs from Twitter about using Scala.

Al3x or anyone else has the right to use for whatever programming language they want. No questions asked…

But today I was reflecting on Al3x’s rationalization of the type system motivating a move to Scala. I mean we’ve heard this before and the whole thing got a lot of Ruby panties in a bundle when it first came out.

But checking for nil and kind_of? all over the place is not Ruby’s failing… that’s a big ball of mud in any language and I’ve seen people resort to the (null != foo) && (foo instanceof Bar)) anti-patterns in Java.

Al3x asserts this is an inherent property of large systems in dynamic languages. I’ll assert it is a property of systems that have grown organically to the point where the programmers can’t reason about what is coming or going. I’ll further argue that you get more out of thinking functionally towards solving this issue than you do from stricter typing.

If you find yourself constantly checking for nil/null or really being concerned with types except around the edges of a system, that’s a code smell IMHO.

But maybe another layer of duct tape will fix it…

totally duct'd

totally duct'd

Catching a breath…

I’ve had a lot of things I wanted to get out there, but didn’t have the time to sit down and craft it. The result is a bunch of half formed embryonic posts, which will grow to something hopefully very soon. The past few months have been a whirlwind.

Starting with the investment process and our partnership with True Ventures.

Then there was Agile Roots, which was awesome and I’m not just saying that because I help organize it.

Check out some of the Agile Roots videos. (The sound on some presentations is suboptimal because of issues with the venue’s system, but the content is generally good.)

Then Velocity Conference, face meltingly awesome… the best practioners conference for people who are pushing the boundaries of what is possible. Some of the Velocity videos… my talk didn’t get recorded this time, which I’m sure improved the quality immensely…

Then Structure, similar to Velocity, but for people who wear more buttons and spend less time at the command line.

July was a blurr of phone calls from people wanting to sell Reductive Labs office space and IT management solutions, lunch meetings, podcasts and day trips. Some work got done.

August had more of the same, with more podcasts, Ignite Salt Lake and finally Agile 2009 (where my presentation with Paul Nasrat was recorded by InfoQ)… capped off with a little Reductive Labs love at the Ruby flippin’ Hoedown.

I know I haven’t done any of these events proper justice, but I plan to at least collect some of my thoughts and post my slides, etc. in the next few days.

Did I mention I have two young sons and a wife in medical residency? Don’t try this at home kids…

Meatcloud Manifesto Redux

People rarely succeed unless they have fun in what they are doing.

–Dale Carnegie

When I penned the immortal words ‘Give me an API or give me death…’ and gifted the meatcloud manifesto to the world while admonishing applications that don’t provide APIs, I was perhaps too focused on GUI installers. That was an artificial limitation which I hope to now rectify.

The automation of repetitive tasks presents an insurmountable opportunity.

Freedom from effort in the present merely means that there has been effort stored up in the past.

–Theodore Roosevelt

DRY should be a familiar principle familiar to anyone writing code and not living in a cave — Don’t Repeat Yourself. Unfortunately, sometimes it’s a lot easier to see the replication in files with code than it is in other aspects of our work, but search your shell history and look for the obvious. The real opportunity is to pop up a level and observe the workflows.

How much of what your organization does with emails and phone calls could be accomplished with a chain of automation?

That’s not so say we don’t want humans to make decisions, but do we really need to have someone push that button or fill out that form? As it turns out, machines are really really good at doing exactly the same thing over and over.

How much of what your organization does is replicated across an industry? industries?

Sometimes the benefits are not in what we can add, but what we can take away…

Opportunity is missed by most people because it is dressed in overalls and looks like work.

–Thomas Alva Edison

As I said… insurmountable opportunity…

viva la meatcloud!

%d bloggers like this: