natevw proudly presents:

a glob of nerd­ish­ness

powered by work over time.

On the burners

In May, starting to acclimate as a freelancer, I started wondering how much client work and side projects I should consider. How many things should I be working on?

Well, most stoves have four burners. Here's what I set on in June:

  1. Room to Think organization — the Tri-Cities coworking group I'm in recently incorporated as a non-profit with me on its first directors board. I may be biased, but we've already got a great start: friendly members continue to gather, and we landed a wonderful location overlooking a park on the Columbia River for our space. We have plenty more to figure out as we settle in, but so far so good and the community has been very supportive.
  2. Inquirium client — it's an honor to work with this smart, hard-working crew — and getting to tackle an e-reading related app no less!
  3. Meograph client — this has been one of the most chaotic, but also the most shipping-est, product developments I've worked on.
  4. Argyle Tiles project — busy bubbling on the back burner, we have my speculative aerial and satellite tile hosting business.

ShutterStem and other personal data management apps are still lingering below (in the oven). There's a lot of infrastructure needed for most of my ideas there — not just technologic and financial, but also building with and for people who care. So it was really encouraging to participate in IndieWebCamp this past weekend, too.

An old kitchen stove — image from http://en.wikipedia.org/wiki/File:Gas_stove.jpg

comments

Blog posts elsewhere

For the record, here's a synopsis of some older projects and writing I started elsewhere. The first three at least are still pretty relevant:

comments

Argyle Tiles — add a satellite layer to your app's map

Detail from Argyle Tiles site, in thought bubble

Last week I began publicly launching Argyle Tiles, and it's been getting closer to beta nearly every day since.

I'm gradually gathering as much good-looking aerial and satellite imagery as I can, and turning it into tiles for those "slippy maps" you see in more and more web/mobile apps these days. There are several great ways to turn OSM data into custom-themed street maps, but sometimes a product needs visual imagery too. That's a lot of data to host and keep improving just for one app.

It's challenging, but I'm pressing forward because it feels like somebody should. I'll need to find enough other developers/companies who are willing to share in the costs to make this sustainable, but the nice thing about building out global tile coverage is I can start "lo-fi" and grow with whatever budget the service can earn.

Argyle Tiles won't be hiring a fleet of airplanes to turn the entire globe into a high-resolution 3D facsimile of itself, or sending an army of expensive camera backpacks to far away places, any time soon. Maybe someday, but we've gotta start somewhere. For my part, I intend to make and keep this service as truly open as possible. I really want for a map tile downloaded from our server to be yours: to keep, to remix, or I guess even to resell if you must.

For now I'll be starting with existing public domain data. Even that will take some time and revenue to build out fully (and beautifully), but I'll at least be able to offer basic global coverage at relatively low resolution, and full coverage of the United States at pretty amazing detail. If you or a company you know (or hey, even just an app you use!) needs a "satellite" base in their map but their product doesn't fit contractually or philosophically within the restrictions of the bigger commercial providers, please let me know.

comments

What is a Couch?

I've tried to explain this many times to myself, to clients and to peers. And will try again to explain it here.

Various types of Couch

I suppose you could call these subspecies.

Apache CouchDB

Started life as Lotus Notes built of the web.

Apache CouchDB logo

It is "a database that uses JSON for documents, JavaScript for MapReduce queries, and regular HTTP for an API". Masterless synchronization is a very important part of its DNA, and I'd also note its ability to attach arbitrary binary files to said JSON documents.

Use for:

Riak

No relation, not relevant, not capable of interbreeding. Happens to resemble CouchDB enough to merit a brief mention.

Use for:

BigCouch

Apache CouchDB plus scalability (via Dynamo-style clustering).

Use for:

TouchDB

Apache CouchDB minus scalability (currently lacks certain storage and concurrency optimizations)

Use for:

PouchDB

Apache CouchDB in the browser.

Use for:

Couchbase 2.0

  1. is still Membase, and has nothing at all in common with Apache CouchDB
  2. except it will provide the same MapReduce/GeoCouch view features via the same API calls
  3. (actually via a heavily modified fork of Apache CouchDB — consider this an implementation detail)
  4. except it may be replication-compatible with TouchDB (and therefore CouchDB!) via a "Syncpoint" bridge
  5. (actually includes the efforts of many past/present Apache CouchDB contributors — consider this too an implementation detail)

Use for:

So what is a Couch?

Uhh.

It seems, at its core, a Couch is a non-atomic collection of atomic JSON documents. Each document has a unique identity, and a sequential list of changes to a given set of these documents is always available.

This core enables two common extensions:

  1. Masterless, eventually consistent replication between any two such collections
  2. Incremental (asynchronous) indexing of a collection, usually via "map" and "reduce" functions, usually defined by JavaScript code

The first extension — peer-to-peer synchronization! — is the most interesting. The second extension is related to the first — because of the simple/powerful syncability of a collection's changes feed, we can decouple the practical "optimized access" indexing options from the core collecting of data.

Above this core are where most of the differences lie. Does this collection contain data from multiple users, or just one? Will a collection live redundantly across multiple servers, or be self-contained on just one? Will a user have direct access to this collection of data, or use it only through a middleware layer? Does this data include access control and indexing methods and display logic, or is that outside the scope of a database?

In my opinion, direct bi-directional access to my own data via a standard peer-to-peer synchronization protocol is the most alluring, most important, feature of a Couch. However, implementing this in practice foists all manner of odd questions and unusual concerns upon the database layer. The Apache CouchDB project has managed some very creative solutions to perhaps 90% of these problems, but the solving the next 90% will test the community's (communities'?) mettle.

And why does this matter.

Imagine a world.

Where you don't need to give your data to a big corporation, to have it on all your little devices.

Where you don't need to take your data out of one app, to use it in another.

Where you don't need all your data, but it doesn't hurt to keep it.

Is this terribly important? Maybe maybe not.

At all likely? No.

Worth investigating?

I think so. And the Couch ecosystem provides a great foundation for trying.

Hippie.

So all this data freedom mumbo-jumbo is for paranoid people who hate business models and don't believe in economies of scale.

Learning/knowing/understanding the Couch model is still important. It will improve the way you think about data. It will improve the way you manage state. It will improve your architecture.

The Couch ecosystem is still young, and it is becoming kind of a mess. But the diversity within this particular species of "NoSQL database" is an indication of how resilient the DNA in its nucleus is. Its core model is solid enough in theory and simple enough in practice that we already see a baseline of interoperability between Couches of all shapes and sizes.

Ignore all the magic unicorn webscale utopia stuff, pretend most versions aren't nearly impossible to compile, pretend the best API documentation isn't trapped in narrative form, and give CouchDB a try anyway. Then something something…relax! Okay.

comments

Finding a reasonable ISP for my phone

Consider this post a Part One, of ???.

I decided that I won't accept a world where everyone owes the phone company around $1000 a year just for access to the internet between destinations. Especially not when (as marketed, anyways) the lion's share of that mound of cash is for fancy sounding things I have little use for. Like "Unlimited Audio Chat Minutes" and "Hidden Charges We Pretend Are Taxes".

Anyway, the industry codeword for the alternate universe in which this exists is: pre-paid. Or perhaps "live outside North America" but my experience there is limited.

AT&T GoPhone

I was originally planning on using AT&T's GoPhone service, as I could buy a $15–25 data package and just pay 10¢ a minute when using the audio chat app built-in to my iPhone. However, it turns out that, while in no uncertain terms must a carrier let you take your phone number along to another service, trying to move a number to a cheaper offering within a provider is not something AT&T seems to feel like doing.

By the time I got that issue off the table, GoPhone had changed their pricing structure so that the aforementioned data packages were only available with a more-minutes-than-I-use-in-a-year monthly voice plan. Effectively, they raised the price of their prepaid data service by $25 month and probably without shedding any tears either.

Note that this is still a slightly better deal than normal: if you were to buy iPhone off-contract — doesn't even need to be unlocked, since GoPhone is an AT&T SIM — just needs a configuration profile installed — you could save well over $350 a year with this plan.

I'm not going to attempt to extensively document the process. Some reps are very helpful and sympathetic, others pretty much will only do what the next step in their customer service flowchart says. The main trick is to avoid saying anything that rhymes with "iPhone" and firmly play your "do you want my money in exchange for a prepaid MicroSIM or not?" card.

iTunes showing official unlock

T-Mobile Monthly4G

Since my goal was to waste not significantly more than $30/month on keeping my iPhone from being just an iPod touch. T-Mobile has the perfect pre-paid plan for this. I recommend this article outlining the process, and there are other guides. If you have an unlocked iPhone, it's not much harder to get the basics working than with GoPhone.

Except.

T-Mobile does not have 3G, as far as the iPhone is concerned. This may be changing, but that's a forward-looking statement with no promises attached. Three cheers if it comes to the Tri-Cities and I'm still on T-Mobile, but I'm not holding my breath meanwhile.

Fact is, EDGE works and I'm content enough with it. I've tweeted, emailed, looked up directions and/or gotten my bearings, even downloaded some decent-sized attachments. It's rare I really absolutely need to watch YouTube in the grocery store parking lot.

Oh, and the other reason I'm happy to be content with this situation.

Tethering ("Personal Hotspot") also works with this $30/month plan! I'm not sure if it's supposed to or what, but I sure don't feel guilty using it via EDGE speeds on an "Unlimited 4G" plan, and it's quite a nice perk.

Twilio

Remember how I had to sort out my number porting issues? Well...at a certain point in the process I decided to stop wasting time on hold just to be told "you can't, not available, we can't" by most AT&T reps. I had a number I liked, so I've entrusted it to Twilio.

Using Twilio is gonna be fun. After a bit of disconcerting radio silence during the initial port (which they apologized for profusely and quickly remedied), they dealt with AT&T's bureaucracy and turned my phone number into an API. Yes, that's right. By gluing together REST calls and callbacks I can pretty much handle calls however I want. Forward to my phone, email myself voicemail as an MP3, turn on a teapot via SMS, set up a call center, or help a bazillion of us poor proles lobby Congress's switchboard that they PLS TO STOP RUINING AMERICA. (I've only personally set up the first one so far.)

There's a few downsides to the way I've currently got it set up, but I haven't even gone beyond the basic "Twimlet" stage of playing with it.

Current downsides, for the record:

However, with just a little bit more code, almost all of these can be solved at least as well as Google Voice handles them. If not much much better.

AT&T Tablet Data?

There's another alternative I may look into at some point, especially if I end up needing to work frequently away from someone's home/office/coffeeshop. (But again...even an EDGE connection feels about as fast as airport WiFi, and fetching the important stuff like API documentation, Wikipedia and such works well enough.) AT&T has a "tablet data" plans that give you a decent scoop of internet for a not-indecent amount of your retirement contribution. And Twilio has an iOS client library.

Q. Are you thinking what I'm thinking? A. I dunno Brain, but have you heard about Apple's new $350 iPod touch 3G?

Narf

Another option, if you don't mind a non-iOS device, is to wait for republic wireless to take over the world. (Thanks @hjon for getting them back on my radar!) They look like a great MVNO and I'd love to imagine that one day they'll even be operating their own towers, member-owned style. One can dream. I'm just not that patient in the short term. :-)

comments


All posts

Subscribe