Technology Startups As Military Special Forces

Anyone who works in a remotely corporate environment has no doubt heard a bunch of (often ridiculous) military metaphors describing business-as-usual. We’re divided into “squads” and talk about “strategic thinking” and “tactical mistakes”. We develop “mission statements” (more about that later) and managers demand that we “go in for the kill”, all the while referring to their top executives as their “Generals” and modeling the hierarchy of their companies around the command structures seen in the military. While a lot of this is just the strange glorification of business (and war), it turns out that some of it makes a lot of sense (on a very metaphorical level), and might just be evolving right along with military tactics. John Robb has done some amazing work analyzing the application of open source concepts to warfare, I’m going to do something like the opposite and look at applying special forces operating concepts to technology startups.

I recently finished reading Spec Ops: Case Studies in Special Operations Warfare: Theory and Practice, by (Vice Admiral) William H. McRaven, who credited as organizing and executing the mission that brought down Osama bin Laden. He is now the Commander of US Special Operations Command, so he’s somewhat of an authority on the subject. While reading the book (which is a really interesting read in its own right, I highly recommend it), I couldn’t help but notice a lot of corollaries between what I was reading and the structure and function of tech startups (and perhaps smaller units within larger technology companies). Let’s look at how Special Operations Warfare compares to working at a startup.

(more…)

My Development Setup/Flow

Developers seem to love to hear about how other developers work, so I thought I’d try to capture my entire environment, from end to end, in a single post. This will change (has changed) over time and depending on the project/company/whatever, but this is how things are for me right now. A couple of points up front:

  • I work for Automattic, so a lot of this is influenced by our internal policies/security/workflow.
  • I don’t always use all components of this “system”. I’ll try to detail when I do/don’t use certain parts of it as I go.

OK, here goes.

Note: This turned into a little bit of a summary of how we work internally at Automattic as well. Oh well, maybe it’ll provide some inspiration, I think we do some pretty cool things.

(more…)

Lessons Learned

A few weeks ago I had a pretty rough time with something I was working on, so I thought I’d take the chance to share some lessons with you that I learned along the way. I’m taking these specifically from my experience as a developer of web-based systems, but I feel like at least some of them apply to a lot of other situations in life as well. YMMV.

(more…)

Web Service Authentication APIs

For a project I’m working on, I’ve been looking at a lot of web service authentication/verification APIs lately. I thought folks might be interested in the results. Here are the methods available for a variety of web services/applications online, with links to their appropriate docs:

(more…)

On Cafe Working

Since arriving in Santiago, I’ve been posed with the challenge of finding good locations to work from. I like to work from cafes, which I refer to as “cafeworking”. Whether you’re traveling or just wanting to get out of the house for the day though (assuming you work from home, like I normally do), your selection criteria are probably similar either way. I decided that I’d document some of the things I look for when I’m trying to find a good place to work for the day. Feel free to add your own criteria in the comments.

(more…)

Challenges You Will Face When Working With Remote Teams

For a number of reasons at a number of times in my career, I’ve found myself working with variously-distributed teams of one kind or another. Perhaps the “office” is a building that spans 2 square miles, perhaps someone was working from home for a day or someone was on a 2 week “vacation”, or even working for a distributed company with no real office. These were all different situations, but they all suffered from simliar challenges. I want to take a look at a couple of those challenges and some ways that you can help mitigate them.

I’m looking at this mostly as a member of a technical team of some sort, but I’m sure a lot of it would apply to pretty much anyone who’s not working face-to-face with their colleagues. Apologies in advance for this being kind of rambling (and very long). It’s a collection of all sorts of observations, links and ideas that I’ve collected over time. (more…)

HOWTO: Implement Facebook Connect on WordPress (in reality)

2008-12-23: There were a number of problems with the code samples in this post previously due to some WordPress formatting problems. They are all corrected now, and you should be able to follow through this post and get this working on your own blog quite easily.

2008-12-26: Fixed a bug that caused the JS to overwrite details on a non-FB Connect comment as well. Also changed the fake email address that’s stored to include the user’s FB user ID.

In case you’ve been living under a no-technology-news rock for the last few weeks, you’ll know that Facebook Connect was released recently. I had been seeing/hearing a lot about it, including this video at Mashable, showing how to implement FB Connect in 8 minutes. So when my friend Morgan from BlownMortgage asked me if I’d be able to help him implement it on his new resume-editing site ResumeDonkey.com, I figured “how hard could it be” and said yes. Although it definitely didn’t take 8 minutes, I got it done, so I thought I’d post some details on the specific approach I used for ResumeDonkey.com.

(more…)

Blogging APIs

On the blosxom mailing list, someone was confused about the interaction between the different APIs for accessing blogging tools and formats. They asked what the story was, and I responsed with this summary of the market (available from the blosxom mailing list archives) (which was current at the time, but getting a little dated now);

From: “Beau” <beau@d…>
Date: Tue Mar 9, 2004 4:00 pm
Subject: Re: [blosxom] APIs, new blogging things, etc.

Ok Steve, I’ll take a bash at some of this, since I’ve been working with blogging APIs for a couple years now in effect, I’ve come across all the ones that you’ve mentioned :) Someone else please fill gaps or correct me if I slip up somewhere :)

Ok – so, in approximate chronological order of time of appearance on the scene;

* Blogger API 1.0
http://plant.blogger.com/api/
The original – based on XML-RPC [1] calls, gave access to most (all?) of Blogger’s original functionality, and was pretty darned easy to use. You POST an XML doc with encoded requests in it to a specific URL, and the response is another XML doc which you can then use however you like. Ev Williams of Blogger knocked this up over a couple of days apparently, and it went crazy from there – I’m still using it today in http://www.dentedreality.com.au/avantblog and it still works (usually :P)

* metaWebLogAPI
http://www.xmlrpc.com/metaWeblogApi [Added 2004-07-07]
Effectively a derivative of the Blogger API (and also XML-RPC based), this one came up to support Radio, I believe Dave Weiner knocked it up, and there was some animosity between he and Ev Williams over whether they should combine to create a unified blogging API (Radio and Blogger being the big 1 at the time) or go their separate ways. I believe one of the main reasons things went this way was because Blogger didn’t need/want title field support, but Radio did,
thus the metaWebLogAPI, intended to be more universal.

* Blogger API 2.0
http://www.blogger.com/developers/api/documentation20.html
Blogger realised that with their new versions, support from Google etc, they needed to clean up their API-act, so they started working on API 2.0. This one supports title fields and a number of other things, and is accessed via XML-RPC as well. As you can see at the URL, the draft specs were released in Feb 2003, but a couple months later, it was revoked and people were instructed not to use it, because there was no support for it and Atom (then called Echo) was going to be used in prefence… which brings us to…

* Echo… Necho… Atom API
http://www.intertwingly.net/wiki/pie/FrontPage
http://www.atomenabled.org/
Originally called Echo, then they decided that was no good, so it was refered to as Necho (Not Echo) for a while, and finally ended up being called Atom. This one is based on a REST architecture ([2], [3]), based on [4]. The Atom API sort of duplicates the efforts of RSS, in that it presents blog data in an XML format, but it also allows you to modify that data (thus API) via
REST-style interactions, involving PUT/POST/DELETE requests. I haven’t worked all this out just yet, but I have to so that I can update a few projects of mine (namely AvantBlog [5] and webpad [6]). There is also a SOAP [7] implementation of Atom, which I assume supports all the same sort of functions (retrieving posts/blogs, updating them etc), tho I haven’t looked at that at
all, as personally I hate SOAP :) The idea of Atom is to provide a universal API which will be supported by all blogging systems (I believe MT and Blogger are already on board, others are likely to follow) so that we can write tools which will interop with all systems easily.

[1] http://www.xmlrpc.com/
[2] http://internet.conveyor.com/RESTwiki/moin.cgi/FrontPage
[3] http://www.xfront.com/REST.html
[4] http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
[5] http://www.dentedreality.com.au/avantblog
[6] http://www.dentedreality.com.au/webpad
[7] http://www.w3.org/TR/soap/

Now, as for blosxom’s support for any of this mumbo jumbo – I know that sxtem [8] was written to provide Blogger API functionality for blosxom, and then you also have the atomfeed plugin [9] to provide an outgoing only (RSS-like syndication side of Atom, but not the modification side) feed for blosxom blogs. As for complete Atom API integration (allowing post editing etc via REST-calls), I’m not aware of any implementation allowing that so far, probably because the Atom spec [10] is still somewhat in flux, and even if it’s not, it’s a little hard to understand (for me at least :).

[8] http://www.blosxom.com/plugins/input/sxtem.htm
[9] http://www.blosxom.com/plugins/syndication/atomfeed.htm
[10] http://www.atomenabled.org/developers/api/atom-api-spec.php

So there you have it – as far as I am aware, that’s how the playing field lies at this point in regards to blogging APIs, and I haven’t even bothered to mention Movabletype (which, incidentally, implements a mish-mash of Blogger.com API and metaWebLogAPI functionality), so we’re doing quite well :) The beauty of blosxom is that to some extent, it doesn’t even need any of this mumbo-jumbo – you can call FTP the blosxom API if you really want :) When I eventually get an Atom toolkit operational, it’ll be written in PHP and linked from my Blogger API page [11], which is the current home of a number of other PHP-based blogging classes and function libraries. Until then – I’ll keep an eye out and play Lazy-web-style in the hope that someone else will beat me to it :)

[11] http://dentedreality.com.au/bloggerapi/

Cheers, and I hope that sums things up for you Steve (and others)

Beau


Beau Lebens
Information Architect
beau@d…
Dented Reality – www.dentedreality.com.au
Information Architecture, Usability, Web Development

Blogs: What Are They Good For?

NOTE: This post was written in 2003 and in places is now out of date. WordPress is now the dominant self-installed blogging platform, and continues to gain more of the market. Updates have been integrated into this post.

What is a Blog?

In its ‘purest’ form, a blog is something akin to an online, personal journal or diary, taking the form of a series of chronologically-ordered, short, personal posts on a website. It is easy to update and normally works by adding short posts to a template design of some sort.

BLOG is short for weB LOG, and became recognised widely as a web-publishing format in about 1999, when, among others, Evan Williams (via Pyra Labs, now owned by Google) created Blogger.com, a free-to-access blogging tool which published your blog back to your own site by FTP. Blogger.com is currently one of the most popular blogging platforms in the world, along with WordPressLiveJournal and MovableType.

Blogging (the process of posting an update to a blog) took off, as did the community around it. Bloggers proved to be a friendly bunch, and many of them linked to each other and other sites, creating a dense web of links and opinion. The personal nature of most blogs meant that blogs became one of the most accessible personal-opinion formats on the web.

Why Blog?

Why would anyone want to keep an updated record of their personal thoughts and opinions online? There’s a lot more to blogs than just that, but even for that purpose alone, it’s an amazing way to exercise a right to free speech, and to reach potentially millions of people with your thoughts.

There are a growing number of different applications of blog-technology, including:

  • Professional News Sites/Portals
  • Lightweight Content Management for all sorts of websites
  • To-Do Lists (personal or across a group)
  • Review Sites (movies, music, food, you name it!)
  • Corporate Knowledge Management (Knowledge Logs or K-Logs)
  • Project Management (recording work completed at ‘x’ time for ‘y’ project)
  • Podcasting (delivering audio segments periodically)
  • Vlogging (Video-blogging; delivering video snippets/segments periodically)

There will no doubt be more uses for the technology in the future, especially as blogs and related technologies evolve and mature more, and as different kinds of meta-data is stored within blogs.

How Do I Blog?

Most blogging systems have their own interface of some sort for posting blogs, whether it be via the web (like Blogger.com and MovableType), using one of the many desktop clients (like w.bloggar and MarsEdit), or even straight into a text file in a directory (like blosxom uses).

A common thread amongst each of these systems is that each ‘post’ is treated as a separate entity, which allows for a number of cool features (see below).

Today, there are tools of all sorts for posting to blogs, including 2 of my own, AvantBlog, for posting to Blogger.com from a handheld/Palm device, and webpad, a more powerful editor with access to a number of different blogging systems and number of HTML tools for managing post content.

Bells & Whistles

With blogs becoming more popular, a number of related technologies and extras have developed in the last few years. Some of the more popular features/extras are:

Comments
Allowing readers to contribute comments to a blog post creates a feedback loop and in many cases provides a simple discussion forum/community feel.
Categorization/Topics
Most blogging tools allow for some sort of categorisation of posts so that they can be organised according to topics. Different systems handle this in different ways, for example MovableType allows you to store a post against multiple categories, while blosxom stores a post in a single directory, representing a topic/category.
RSS/Atom
RSS allows other users to easily syndicate the content of your blog into their own, or into a news reader/aggregator of some sort (web-based like BlogLines, or desktop-based like NetNewsWire). In addition to content syndication, Atom also provides a programming interface for modifying posts made in a blog using other tools.
Calendar Navigation
Many blog tools offer the option of including a calendar on your blog, so that people can navigate your posts by jumping straight to a particular date and seeing all posts on that day/month/year.
Permalinks
Upholding the spirit of a ‘permanent location’ for everything on the Internet, so-called permalinks are automatically-created URLs which are intended to be the permanent location of a post, even after it ‘scrolls off’ the homepage of a blog (since only a certain number of posts will be displayed on the homepage normally).
Blog-roll
Since bloggers are such a friendly bunch, they often maintain a list of the blogs which they read regularly. This list is normally presented along the side of their own blog, so that you might also find other sites which interest you. This list is called a blog-roll (see blogrolling.com for more about blog-rolls).

Hopefully this has provided you with a bit of an introduction to blogging and blogs, and you can see that they are a great way to get information online quickly. Their personal and business uses are only going to grow, and it will be interesting to see where they go in the future. Sites like Technorati and BlogDex are probably good places to keep an eye on if you’re interested in the future of blogging.

So now, if all you want is to see a blog in action – jump over to the blog section of this site and knock yourself out!