natevw proudly presents:

a glob of nerd­ish­ness

powered by work over time.

Metakaolin: GeoJSON editor for Polymaps, now with multitouch support!

I'm going mobile with Metakaolin.

Metakaolin open on MacBook Air and Nexus 7

This had always been the plan as I came up with its editor design, just ended up on the back burner for a while.

What got me off my duff was noticing that my Argyle Tiles preview map was fairly broken on SVG-supporting Android browsers. It showed up, and panning worked, but any pinch zoom caused the map to go blank until the page was refreshed. Some sort of bug in Polymaps' code, and since I was involved in getting its multitouch support landed I felt more than a tinge of responsibility.

Aaaaaand....also I'd been wanting to get a Nexus 7 anyway.

After the price dropped a few weeks ago, I picked up the 16GB model and got to work. (The Nexus 7 is an excellent piece of hardware, by the way, and I've been really impressed by how modern Android 4.1 feels.) Turns out that Chrome does provide W3C-standard touch events — and also includes pressure information! — but it does not add any additional scale/rotation gesture information as Safari does on iOS. So as soon as you tried to zoom, the code tried to adjust the map to zoom level undefined ± something which didst upset it surely.

Filling in for that has been a decent bit of work, especially since event handling on the Polymaps master branch was making some other incorrect touch tracking assumptions in addition to the gesture info. Chrome's remote debugging worked really well and fortunately everything carried over well to Firefox and iOS 5's Safari. I'm reasonably happy with this implementation; it's both somewhat simpler than my Magic Mouse gesture interpretation logic yet reacts to zooming with as many fingers as you've got.

Once that was working, it was time to hook in touch event tracking to my editing layer. It ended up being a fairly straightfoward process, the original logic stood up pretty well to some slight wrapping/refactoring. What didn't survive were some of the marginal hover-based affordances and the tiny control handles from desktop use! When you load it on a touch device, there's now generous finger room, at least on the node handles, and I've got some visual design ideas that should improve usability and discoverability for both direct and indirect (i.e. mouse) interaction once they're implemented.

Rotated map with line feature drawn over part of the Columbia River, screenshot from Android Chrome

So: now I have a completely non-modal vector graph editing interface that talks GeoJSON and can be used on a desktop, laptop, iPad, and even a $200 Android tablet.

I've posted a short demo video, you can fork the source code, or why not try the editor yourself and let me know what you think!

Coming up next? Well, Mozilla's Dev Derby theme for December is offline apps. Since I completely spaced on the geolocation one in September, I'm kind of determined to make up for it next month.

comments

Why build products?

My lame attempt to channel Calvin and Hobbes aside, @stevenf poses a question without an easy answer:

"@stevenf: License your patent and you become a millionaire. Build something and you grovel for reviews to keep another 99c (less 30%) rolling in. What's the incentive to make anything then?"

For about two years, I enjoyed making and supporting quality shareware with a good friend, feeling as if I were built for that very purpose. The company had just barely turned a profit — because we were not paying ourselves nada! — and so by then we'd run out of personal savings. Hrm. We found other ways to feed our families, which generally meant giving bigger businesses what they asked for, instead of what we thought independent individuals really needed.

I've been scared to risk much on my latest product because I can already see the same story playing out (quicker this round!) if I'm not careful. Had an amazing time announcing Argyle Tiles at SOTMUS and WhereCampPDX, meeting lots of mapping heroes as well as a bunch of encouragers who were excited to see the product. It's really hard though, looking back at just how little those two years of ware-sharing turned into when sold at $20 a pop.

Wondering how on earth I can afford to map all of it. And then offer it at people's preferred price point of "free". (Don't worry too much about the project though, I mentioned there were a lot of mapping heroes around Portland last weekend, right?)

How do you make shrink-wrapped software without it also being gift-wrapped, financially speaking? That I don't know yet. But there are incentives:

While Apple is weak on the "inspiring" these days, knowing that if I had skipped the tag-along business attempt, accepted my first day job, and instead invested all my savings directly into Apple's stock price… knowing that would have returned around 800% if sold today… and yet not really wishing I could trade that for what I've made…

That's inspiring.

Making your ideas happen is priceless. If all the pieces fall into place, you may even have a lot of users who feel the same way — it's sure worked out for Apple a few times.

If not, you should be able to find at least one customer who needs their ideas made; whose ideas are at least valuable enough that they already have the necessary financials available. It's not as glamorous, but it's not about you anyway.

Turning any good idea into an actual product — especially a digital product — is far more valuable than simply turning any old idea into income. You may not capture all that value but when you've done that work the value is there in the best form it could be shared. It's fair to expect enough value returned to keep the cycle sustainable; life isn't always fair, but often it can be a living.

That's inspiring enough, I hope.

comments

Whatever you do

Many months ago I started using a lovely web app called Habitualist to prod myself out of my routines (which tend to be reclusive) and into trying new things and meeting new people. It's too early to tell if it's working, but I'm glad for the reminder that at one point I decided to work on (and talk about!) my own research and development at least a little bit every week:

Habitualist dashboard

I've failed to do that, and more. The last few months have been a tumultuous time. Hospital bills started rolling in, I started getting drained both by cycling everywhere and reluctantly shopping for an affordable fossil-fueled alternative. Between August and September, as the days grew shorter, I careened from not quite enough playing around to not nearly enough breadearning.

Depression focuses you on the wrong things: why yesterday went wrong, how I'm working all wrong today, all that's going wrong with where I'd wanted to be tomorrow.

If I could focus on anything at all. Stupid ADD, stupid me. You keep sleeping in. And then you stop caring.


You know what's exciting? Every new day.

Don't stop caring, about the right things.

comments

Putting the Printrbot+ to work

The Printrbot has been a blast already, but the adventure has only begun.

This week marked a turning point in my 3D printer project: on Monday I switched from tinkering with getting it assembled, to tinkering with getting the assembly to print! Here's my first test print, to the left of the second:

A blob and a box

As with the assembly, where I needed to wait for parts and wait for debugging inspiration, printing requires quite a bit of patience. There are a bazillion settings and tunings for the whole process, but the most mysterious and the most critical part of it all is getting the first layer right. The first pass of hot filament really likes to peel and scatter, and if it gets its way, the print is almost inevitably ruined.

Failed first layer

The blue stuff on the glass is just painters masking tape. It provides something of a rough enough surface for the hot filament to stick to, while still being smooth enough to let the part loose when it's finished. It's certainly not foolproof though.

I'm interested to try ABS juice or sugar water at some point, but some Kapton tape arrived yesterday first. It's not particularly cheap, but I found a good enough deal after my first long evening of failing prints to give it a shot. Kapton tape is rumored to provide a significantly better surface than painters tape; I'll find out soon enough!

First successful *useful* print Printed part in use

Meanwhile, even just the painters tape was good enough to get started after some practice this week. The main secret (as I suspect is the case on any surface) is just getting the initial z-axis height right. This means not only getting the bridge ends level and the z-stop adjusted every time the machine warms up, but also being ready to tweak the height by manually turning the threaded rods as the skirt prints. (The skirt is just for this very purpose: a practice round to make sure the filament is flowing smoothly and sticking well.) Don't be afraid to have a very squished/flat first layer if that's what it takes to have it stick. Certainly not ideal, as it requires more clean up on some parts, but better than the alternative.

Next step is getting everything fine tuned, printing at high enough resolution to yield some reasonable quality spare parts for the printer itself. At that point most of the Thingiverse opens up and imagination becomes the primary limiting factor.

Extruder gears and Brio adapter pieces printed so far (plus some Duplos)

comments

Debugging the Printrbot assembly process

I had a few troubles assembling the Printrbot+, but overall it was a very enjoyable process! Imagine a robotic power tool that you get to build yourself out of a lovely wooden Erector Set — in the end the challenges below were all just part of the fun.

Assembled Printrbot Plus

Base assembly

It took a couple tries to get the base assembly together "right side up" so that the USB and SD slots on the electronics board lined up with the right slots in the panel. Just as when woodworking you "measure twice, cut once" the solution to this is simply to "test fit twice, carpal tunnel once": not only do you need to make sure the arrows are all pointing to the front, you need to make sure the whole base isn't also inside out by making sure the Printrboard will work underneath before you put in too many screws.

Missing parts

Brook and Co include a handful of extra fasteners so for the most part I was able to make do.

The most major missing parts were the z-axis bearings, which they happily made right. (The original mistake was due to quality issues with a third-party shipper, and they've resolved that too by bringing things back in-house.)

I was also missing a sufficiently long smaller black bolt, and corresponding standoff, for the odd fourth corner hole of the Revision B electronics board. It seemed sturdy enough with only three tie points and so I'm just doing without.

Washers on the z-axis rods

By the time I got to the end, I was running out of the mid-length screw sizes. I had plenty of loooooong ones though and so I was able to hacksaw/file off the excess lengths in each place and finish the job. For the z-axis clamps, even the mid-sized bolts were just slightly too long and would gouge into the wooden bridge as it went past. Rather than trim a few threads off I just added two washers per bolt on the head side of each, so I could tighten the joint properly without the bolt's nether end getting too long.

Broken extruder, beta extruder

The original plastic extruder sent with the earlier kits was badly cracked when I unboxed it and positively broken by the time I'd finished trying to assemble it.

Along with the missing bearings, Printrbot HQ graciously sent me a Wooden Extruder Kit to try. Much much much better! (At this point in the assembly process, I started wondering if I shouldn't have been pining after a laser cutter instead of a plastics printer :-)

I still had two issues with it though: the bolt hob no longer lined up with the filament slot, and furthermore as it spun the nut on the end tended to self-tighten until it had bound the whole mechanism up. I got stuck waiting to hear back from HQ with any ideas, but the fixes turned out to be simple after talking the problem through with a coworking space friend:

Drilled out gear hub Bolt head now sunk into gear hub

The original gear hub had plenty of depth available to get a good start on shifting the bolt hob closer to its target. Even my messy(/dangerous) bit of "hold the part in one hand and the drill in the other" routing got the job done well enough. Once my printing and modeling skills increase I should be able to fix it properly with a custom fitted one!

The self-tightening problem was primarily do to a self-reinforcing nasty feedback loop with the bearings. When tightened down, the inside rolling part would start catching on the wood, which meant the nut couldn't roll along with the bolt as well, which meant it tightened down…. This part would have been easier with a drill press too, but I simply used a knife to carve away a channel for the inner bearing piece. By giving it some empty space, it can continue to roll freely as the static bearing body clamps down.

Adding a channel for the bearing roller thingbob

Finally, switching out the kit's fat metal washers for some sleek "fiber washers" I picked up at Home Depot served two purposes: not only did it stop a lingering self-tightening problem when the bigger washer would bind on the pinch roller part, but it also finished fixing the filament alignment problem.

Fiber washers

Note that I also had to take out some of the screws and turn them in from the opposite side instead (versus what the store's pictures of the assembled extruder show), so that they wouldn't interfere while the thin washer lets the gear ride so much closer to the assembly.

Cable management

I still don't really have this solved, but it works I guess.

Cable nest underneath Cable nest coming out

Seeing all the wooden parts work together so brilliantly, I was a bit surprised when I got to wiring everything up to the board. Cable management seems like a total afterthought — most cables are way too long, some are a bit too short, and there's really not a whole lot provided in the way of guidance holes or tie points.

My general strategy was to ziptie cables together where they would naturally "bundle" For example, there's three separate wires from the extruder that all need to end up at the board. So I lined them up, tugging gently on the ends as I ran my hand towards the extruder, tightening them together until I got to where they needed to go their separate ways. That spot got a zip tie, and then back down towards the board every so often to turn it into one thick cable. Similarly for the bed wires, the x-axis cables sets, etc. Basically, you want one nice bundle in place of wherever there were two or three sets of two or four wires each twisting all over.

Looping "trick" for dealing with extra cable

Under the bot, the other trick that kind of worked was to make a loop of the "slack part" of extra cabling, so that at the bottom of the loop the rest of the line was a nice slug length. I then ziptied that line at the bottom of the loop, leaving two parts: the "main" cable run in place, plus a somewhat more manageable single loop I could sort of sweep under the rug with all the others.

I still ended up with kind of a mess, especially after adding the power supply which comes with its own nest of cables. I'll probably get the Power Tower to help with that (as well as the other Printrbot nesting material: the filament tangle!) at some point. It's messy to see cables pushing out underneath the stand, but so long as they don't catch on the underside of the bed as the y-axis moves, it's not a particularly urgent problem either.

Gathering the heated bed

It's possible to print directly (well, I assume there'd still be tape on top) onto the included heating plate. However, I was getting pretty proud of what I'd built (well, at least assembled) and wanted to finish it right; according to the discussions online, that meant getting a plate of glass and insulating the flat heated surface from the wooden bed.

I wanted to keep it simple, too, so as not to deviate too far from the Printrbot LC "birch and bolts" aesthetics. I started from this post as well as another encouraging using simple binder clips on the glass, stopped by an Ace Hardware just up the road from Room to Think, and here's what I came up with:

Printbed in place

Basically just two needed springs chopped in half, holding the four corners against the screw head above and the nut beneath. I didn't bond the nuts underneath like the forum post — screws not glue™ — a socket wrench will work just fine if I need to adjust more later.

This was actually one of the funnest parts. Doing a bit of research, and then deciding how I wanted to set up my particular printer, and gathering the parts needed to make it happen— it's one feeling to have something "just work" when it's fresh out of a shiny box, it's quite another to realize that picking up some springs and struts at a hardware store will never be out of warranty. With that being said,

Missing instructions

…there are a lot of good resources for getting this thing built — not the least of which is engaging the creative "DIY" side of one's brain! — but going to http://printrbot.com/instructions/ as your starting place is (currently) not one of them. The PDF there is great for getting started after assembly, but (especially for the Printrbot+ specifically) I'd recommend starting with Craig the Fabricator's better-paced assembly videos, moving on to the wiki instructions when those run out, then falling back to your inner maker spirit and the forums as you tie up all the loose ends. At least, that's what seems to have worked for me ;-)

Helpful IKEA instructions [via]

Locking yourself in a garage until you emerge with a made-from-scratch homebrew CNC exruder a month or two later has been the rite of passage in the original RepRap community. So having to find some better step-by-step assembly videos ALL BY MYSELF was kind of a pansy problem. But I still hope that Brook and Co continue polish up the experience, making it almost (though perhaps intentionally not quite) completely "plug-and-play". The hardware itself is 99% of the way there, basically just plus/minus a few fasteners and a bit better base plate labeling. All it's missing is a booklet that goes from step 1 to step 97 with instructions specific to the pieces in the box, reviewed and user tested to find any lingering pitfalls, and I really think their "your first 3d printer" could be assembled by just about anyone in just a few evenings!

Of course… assembly's just the first part…

comments


All posts

Subscribe