3D printing and other software curiosities
by Clinton Freeman

Seeeduino Cloud Review

22 Apr 2015

The Arduino Yún is my favourite microcontroller. It comes with two processors, an ATmega32u4 (like what you find on many Arduino boards) and an Atheros AR9331. The Atheros runs a lightweight version of linux, and is often found in wifi routers and NAS devices. This networking history means the Yún can handle most wired or wireless network configurations you throw at it.

The Yún overcomes all the crippling limitations of the Arduino Ethernet. It works with HTTPS connections and packs seven PWM pins.

With all the recent hullabaloo over royalties, I have no idea what is ‘officially’ Arduino anymore. Nor do I have a clue about which open source developers need supporting. It makes my wallet a little happier though, as I don’t feel guilty buying cheaper Arduino derivatives. I didn’t even blink when I picked up the Seeeduino Cloud for a solid $23 USD cheaper than the ‘official*’ Arduino Yún.

So how does the Seeedunio Cloud stack up against the original Arduino Yún?

Well the Seeeduino Cloud is a derivative of the Yún and 100% compatible. But calling it a ‘clone’ would be completely unfair. At the hardware level, Seeed have made considerable improvements over the Arduino Yún.

Most obviously, Seeed didn’t skimp on accessories. They ship the cloud with an external wifi antenna, a small rectangular PCB with sticky adhesive backing. The adhesive makes it easy to attach the external antenna to the side of your project or enclosures. While the Yún only has a socket for an external antenna, and the antenna itself is purchased separately.

Picture of Seeeduino Cloud from above

Next Seeed have done an amazing job at making the Seeeduino Cloud impossibly thin. Yes. The Cloud is the Macbook Air of Yún boards. Look at this puppy from the side and you will notice that Seeed have cleverly inset the ethernet connector into the PCB. Plus they got the USB host to sit flat on the board. Well they wedged it into the PCB as well, while the original Yún leaves the USB host clumsily on its side. These major improvements make the Seeeduino’s pin headers the tallest component on the board.

Picture of Seeeduino Cloud from side, showing how thin it is

Seeed also included a couple of Grove connectors, making it compatible with their Grove modules. This whole system is designed to make it easier to prototype without soldering. They are not my thing. I enjoy soldering, and find wonking out little protoboards a relaxing exercise. So it is pretty cool that Seeed are able to support both people like me, and those who want a bit more plug and play in their hardware hacking.

On the software side of the fence lurks my only minor quibble. Seeed haven’t managed to make such a spectacular improvement here. The software they are running on the Atheros is just a rebadged version of what you find on the Arduino Yún. It is easy to spot. Because. Ummm. The user interface still references the ‘Yún’ in a couple of places.

Screenshot of Seeeduino cloud software with Yún typo

Minor quibble aside. Move over Yún. I think the Seeeduino Cloud is my new favourite microcontroller.

I give the Seeeduino Cloud 4.5 stars out of 5.

4.5 stars out of 5.

* Is there even such a thing as an official Arduino board anymore?

 

An Open Love Letter to Van Neistat

13 Apr 2015

Dear Van Neistat,

So I have been trying to write these little fan letters. I use them as a way of researching and understanding those who influence me. But your fan letter. This. Has just about broken me. I have thrown away countless different versions.

Somewhere in the last few years you became a digital ghost. Vanished into the real world and became a recluse from the Internet. I hope you are well and still prolifically making stuff and filming things. I hope you just chose the opposite path to your brother. That man is EVERYWHERE. Search for Van Neistat, and wait what? NO. I want a different Neistat brother. Why have you done me wrong Google?

But you know what is cool? Mr T. SACHS references you as an influence in his self portrait ‘The Sachs Family Crest’. You know what else is cool? Your films made Tom’s work accessible and understandable to me. Someone who has no idea about art. A Love Letter to Plywood is currently my favourite documentary of ALL TIME. The title and content have inspired the format of these letters.

Your Ten Bullets collaboration provoked me into a serious attempt at understanding art. A first for me. It is fascinating and therapeutic. By understanding the processes and ethos behind Tom’s work, it brought me back to yours. Tom’s work allowed me to better appreciate your film making. Combining more traditional film influences with that of Tom Sachs has created your own dapper style. Bricolage and leaving the scars of your labor behind? They bring a beautiful analogue wobble to the hard clean computer generated edges of modern film. As a software engineer, this has challenged how I think about and ritualise my work.

I think this little clip here best shows both your bricolage and scars.

 

 

A little hand written scrolling title sequence. A slight tease on what is about to go down on the side of the shot. The title wording hint at what is about to happen. The title concludes and flap around the drill bit to reveal ‘the scars’. A mirror outlining the creation of the shot. Showing off the drill bricolage in full glory.

Your work helped me form an appreciation in the power of showing the scars of labor. Despite disappearing from the Internet, the marks of your labor live on. When your brother films with the overhead shooting rig on the raw plywood background? Bam. There you are. The scars from the Neistat Brothers phase of your career is all on show. This overhead shooting rig has become one of my favourite film ‘characters’. The etched history has a story of its own:

 

 

I really want to see A Space Program and the Neistat Brothers. Hopefully they will be shown in Australia one day. Keep creating!

Best wishes,

Clinton Freeman.

2015/04/17 - EDIT: Minor typo. N EI stat.

 

How to configure an Android development environment with docker containers

10 Apr 2015

On OSX, a docker stack is a bit like an onion. There are a couple of layers between you and your docker container. Boot2Docker is a great little utility that installs all the different layers for us. As a quick overview, from the outside in we have:

Gif animation of how to install the virtual box extension pack.

  1. Your mac. It doesn’t have the necessary goodies to run a Docker host natively.
  2. Boot2Docker installs VirtualBox, this hosts a virtual machine that can run the Docker host.
  3. The boot2docker-vm, A Lightweight virtual machine designed specifically to run Docker containers.
  4. Your docker container. A self-contained environment to run your application.

For Android development we need to be able to get applications from our docker containers into phones and tables. Extra configuration is needed for docker containers to access USB devices.

By default, VirtualBox doesn’t come with USB devices support. The VirtualBox extension pack adds USB support, letting you connect an Android to VirtualBox:

  1. Download the extension pack.
  2. Open up the VirtualBox GUI.
  3. Select ‘VirtualBox -> Preferences’ from the menu.
  4. Select the ‘Extensions’ icon.
  5. Press the funny lookin’ ‘yellow square superimposed on the blue box’ button.
  6. Browse to your downloaded extension pack, and press open.

Gif animation of how to install the virtual box extension pack.

Next we need to give the boot2docker-vm access to our Android device:

  1. Plug your Android into an available USB slot.
  2. Make sure the boot2docker-vm is ‘Powered Off’.
  3. Right click on the boot2docker-vm and select ‘Settings…’
  4. Select the ‘Ports’ icon.
  5. Select the ‘USB’ tab.
  6. Make sure both ‘Enable USB Controller’ and ‘Enable USB 2.0 (EHCI) Controller’ is checked.
  7. Press the ‘green plus superimposed on blue USB plug’ button.
  8. Select the Android device from the list. For me this was ‘Sony D2005’.
  9. Hit OK.

Gif animation of how to share android usb.

Copy this Dockerfile into your Android project. When you build the image, this will install all the Android prerequisites and the SDK. Set all your environment variables and update the SDK with some tooling. Finally it will copy your Android application from OSX into the docker image and compile it.

From the root of your Android project, the image is built with:

$ docker build -t your-android-project .

Now to ‘spin up a container’ on your Android. Well kind of. Docker won’t run a container on the Android. The docker container just uploads your application:

$ docker run --privileged -v /dev/bus/usb:/dev/bus/usb -i -t your-android-project adb install -r bin/your-android-project-debug.apk

The –privileged and -v /dev/bus/usb:/dev/bus/usb are the important options that allow your docker container to access USB devices ‘attached’ to the boot2docker virtual machine.

 

Original Reference Material

07 Apr 2015

Ugh. I hate bookmarks. They suck. They are painful to search, messy and I happened to have them scattered across multiple backup files.

Original reference material* is a curated home for little ideas, tips and tricks that are yet to make it into my long-term memory. I guess they are a cross between ‘gists’ and bookmarks. Little snippets or ideas that are not formed enough to warrant a whole blog post.

Art:

Design:

  • The Amazing Staircase – A neat combination of bookshelf and staircase combined in a small space.
  • BecauseWeCan – Awesome Oakland based, design-build architecture studio. Won our squirrel Coffee Table from them.
  • ColourLovers – Collections of colours, palettes and patterns.
  • DesignBoom – Archictecture, Design, Art and Technology blog.
  • Design Milk – Architecture, Art and Interiors blog.
  • Dezeen – Architecture, Interiors, Design and Technology.
  • EcoGeek – A blog about new technology designed for the environment.
  • How Products are made – Seven volumes on how different products are made. Products like materials (Acrylic Plastic), right through to complicated stuff like Jukeboxes.
  • Interior Design (reddit) – The Interior design subreddit.
  • Open Source Ecology – Open hardware designs for everything you need to kickstart civilisation.
  • Panic Status Board – A custom status board built by panic software.
  • Subtle Patterns – A collection of subtle patterns that can be used to add texture to websites / designs.
  • Virtual Crash Course in Design thinking – A ‘MOOC’ from Stanfords ‘d.school’ on design thinking.

DNS:

Check DNS records in OSX:

dig google.com

Furniture:

  • Narrow Coffee Table – A narrow coffee table / low set hallway table, with two drawers and a shelf.
  • Walnut Bench – A modern bench with a nice butterfly in a split.

Electronics:

  • Ethan Zonca – Developed PicoBuck LED driver under the banner ‘protofusion’. Also made a kick arse walnut Vacuum value amplifier.

git:

Create a git repository with group read/write permissions

Configure your server.

$ ssh myserver.com
Welcome to myserver.com!
$ mkdir /var/git/myapp.git
$ chgrp grpName /var/git/myapp.git
$ chmod 775 /var/git/myapp.git
$ chmod g+s /var/git/myapp.git
$ cd /var/git/myapp.git
$ git --bare init --shared=group
Initialized empty Git repository in /var/git/myapp.git
$ exit

Add the remote repository to your existing local git repo and push

$ cd ~/Sites/myapp
$ git remote add origin ssh://myserver.com/var/git/myapp.git
$ git push origin master

Javascript:

  • $0 – Selected element that is currently inspected.
  • Browserify – How to untangle your Javascript with Browserify.
  • d3 scales – Details on how scales work in d3.js.
  • debugger; – Can kick start the debugger from the console.
  • Gulp – Automate front-end workflows.
  • Gulp + Browserify: The Everything Post – FAQ for getting started with gulp and browserify on the front end.
  • “use strict” – Turns all warnings into errors.

Linux / Operations:

Move a running process to Background

$<ctrl> + z (stop program)
$bg (run program in background)
$disown -h (make sure the progress isn't killed when terminal closes)
$exit

Photography:

PostgreSQL:

Backing up and restoring databases:

$pg_dump -Fc --no-acl --no-owner -h localhost -U postgres <DB-name> > backup-file.dump	
$pg_restore --verbose --clean --no-acl --no-owner -h localhost -p 5432 -U postgres -W -d SHB-375Hz weds_health.dump

List largest tables:

SELECT nspname || '.' || relname AS "relation",
pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
  ORDER BY pg_total_relation_size(C.oid) DESC
  LIMIT 20;

Upgrade PostgreSQL Database:

$pg_upgradecluster <old-ver> main
$pg_dropcluster <old-ver> main	

Security:

  • HTTPOnly – If set. A cookie cannot be accessed through a client side script.
  • HTTP Strict Transport Security – opt-in webserver enhancement, once the header has been sent it prevents any communications occuring over HTTP.
  • Little Snitch – Mac OSX tool for controlling outgoing private data.
  • Qualys SSL test – Tests a deep analysis of your configuration for any SSL web server.
  • Repsheet – A reputation engine for profiling HTTP requests inbound to a webserver.
  • SecureFlat – If set, A cookie won’t be transmitted over HTTP.
  • TripWire on Ubuntu – How to configure and use tripwire on Ubuntu.
  • Visual Cryptography – A visual cryptography system. Align two random images to reveal a secret.

Typography:

Web Performance:

  • WebPageTest – Measure the load times for websites from different locations and browsers.
  • Progressive JPEGs – Gif style progressive loading for JPEG images.
  • BPG – The PNG equivalent of JPEGS. Coming soon to a browser near you.

Workspaces:

* Thanks to The Streets for naming inspiration.

 

Sticker Chart - March

02 Apr 2015

To me, success has always had a specific sound:

 

 

Growing up as a teenager I played softball and baseball. I was terrible. No matter what I tried or how much I practiced, I just couldn’t make that sound.

The bats used in these games have a ‘sweet spot’. A spot that transfers the most amount of energy from the bat into the ball. This spot is also the ‘centre of percussion’. Hit a ball with the sweet spot and your aluminium bat will make a wonderful ‘ding’. Mishit the ball and you will be left with a dull thunk.

I was an expert at dull thunks. With a handful of exceptions, I straight up couldn’t hit a baseball and I rarely tasted the sound of success. It was the most frustrating endeavour I pursued as a kid.

I had largely forgotten about this frustration. That was until I was jogging past a baseball field and heard the familar ding. Success! I was happy for them. ‘Hey! Nice dinger!’ As the ball sailed into the outfield. It also marked a time when I too felt successful. I had gotten lots done that day, but I was more proud to have finally internalised success. I felt as though I transitioned away from common external success metrics. I haven’t won many awards, nor made mountains of money.

But my internal metrics? The sticker chart? Did I create? Did I read? Did I exercise? I’m nailing it, and finding it oddly empowering at the same time. It is giving me the confidence that the year won’t devolve into me lying on the couch.

Create.

No sticker.

Finished off my February curiosity ‘biodiversity’ (two weeks late).

Front view of woolworths promotional card readers on a plywood base

Completed my March curiosity ‘build indicator’ on time.

Front view of 3D printed continuous build indicator.

The month deadline is proving to be useful. Towards the end of a project I find myself hating some element. “Ugh. I shouldn’t have done <X>.” The tight deadline means that I can’t change course. I finish the project, loathing <X>. Yet I still finish, and teach myself an important lesson along the way. Next time <X> will be done like <Y>.

Still no create sticker for March though. I slipped on my writing goals. The ‘Open Love Letter to Tom Sachs’ was a writing experiment. One that didn’t go as well as I hoped. I struggled with writers block a little after that. This months articles covered:

Read.

Mr squiggle sticker.

Dug through a stash of novels my brother left behind when he moved to Canada.

Solar - Ian McEwan

I kept expecting this to pick up into science fiction territory. Solar read more like The Bold and the Beautiful, sprinkled lightly with science.

The Tesseract - Alex Garland

Written in the same fast pace, fast cut style of Garlands ‘The Beach’. It was more enjoyable than Solar, and contained some entertaining sections (the street kids, and the opening). But these just made the other sections read worse than they actually were.

Exercise.

Astroboy sticker.

Running three times a week. 64km. I’m getting used to the weather. It has started to cool and have been jogging along the Cairns esplanade. It is nice, especially when there is a cool sea breeze.

I’m enjoying every minute and I want more stickers. I am happy.

 

Arduino Ethernet Review

23 Mar 2015

Last year I got an Arduino Yún to try out. The Yún is Wow. It became my favourite microcontroller the second I powered it up. The only real downside of the Yún being price, coming in at around $85 USD, it certainly wasn’t cheap. For my current project I thought I would try out the Arduino Ethernet. It is a fair bit cheaper (I got it for about half the price of a Yún from Seeed), and I didn’t need wifi on this particular project. So how did the Arduino (Seeeduino) Ethernet stack up?

Picture of Seeeduino Ethernet mounted in 3D printed case

FTDI breakout

The first downside of the Arduino Ethernet design (regardless of manufacturer) is how they made room for the network port. Arduino dropped the USB connector and FTDI USB-to-serial chip from the board. So uploading your sketches is via a FTDI-style USB-to-serial breakout board. This connector is not included, and you buy it separately. No big deal. But if you don’t have one, it will add about $17 to the cost of your project.

Limited PWM pins

The second design downside is the limited number of PWM pins. The Arduino Ethernet only has four pins with PWM, while pins 10, 11, 12 and 13 are reserved for interfacing with the Ethernet module. The documentation suggests you shouldn’t use them. I’m not sure whey they even included headers for these unusable pins.

In practice it was even worse. I was only able to use three of the four PWM pins on the Seeeduino Ethernet board. The board didn’t seem to have the performance to run the Ethernet connection and 4 PWM pins at the same time. Any three PWM pins, and network was fine. But adding the fourth would always result in unexpected behaviour. It would successfully run four PWM outputs while not using the Ethernet connection. But as soon as the connection kicked in? One of the PWM signals would wonk out.

No HTTPS

The last and biggest design downside of the Arduino Ethernet. No HTTPS. The Arduino Ethernet doesn’t have enough power to decrypt secured HTTPS connections. Pretty much the entire web runs HTTPS these days. So if you want to send or receive content over an encrypted link you are going to be out of luck. This was a major issue for my project (it receives data from a continuous integration server). I got around the problem by creating an intermediary server application. This server application strips the encryption from the link and dishes up the data I needed over regular HTTP. A dodgy work around till I replace the Arduino Ethernet with a Yún.

Overall

The Arduino Ethernet was an important precursor to the Yún. I also really liked how Seeed squeezed their board down by pushing the ethernet connector through the PCB. But with all the above limitations, I don’t think I will use an Arduino Ethernet (or derivative) again. I would much rather spring the extra bucks for the Yún. Seeed also make a derivative of the Yún, the Seeeduino Cloud. It only costs $5 more than a Seeeduino Ethernet (which is less than the FTDI breakout board you will need for the Ethernet). I give the Arduino Ethernet 0.5/5.

0.5 stars out of 5.

 

An Open Love Letter To Tom Sachs

14 Mar 2015

Dear Mr Sachs,

I never fully appreciated your work until I discovered your ‘Love Letter to Plywood’. As I, too, enjoy working with plywood. Mostly because I’m not skilled enough to be let anywhere near expensive timber. And MDF is outrageously disgusting.

So one day I was bumbling around the internet looking for plywood techniques. It wasn’t long before I happened upon the best short film ever made about a building material. I loved every part of it. Well, except for that stuff about the imperial system. Seriously Tom, what would Le Corbusier say? Exactly. He would be horrified. But everything else? It has changed the way I think about and work with plywood.

 

 

Anyway. This letter is not just about our mutual affinity toward plywood. That was just the beginning; the gateway to a deeper appreciation of your work. I needed more. So I watched the rest of the Ten Bullets series, and trawled through pictures of your NUTSY’s show.

It seemed to me that the Ten Bullets series was a further exploration of McDonald’s founder Ray Kroc’s work. Taking his meticulous approach to describing processes (like cooking hamburgers), and then applying it to your own techniques? The deliberate attempt at codifying your creative rituals as a repeatable process? That made my flannel clad inner-engineer leap with joy.

Your recent keynote on authenticity clarified some of my own half-baked thoughts. Recently I left full time employment to pursue my own interests. I have a goal of building a project a month for a year, and I’m finding the experience unexpectedly therapeutic. So when you said:

“Understanding and accepting yourself so you can have the courage to make just the right wrong decision. And I don’t think this is specific to art, I think this applies to anyone who is solving a difficult problem.”

Well, I just about fell off my chair. My difficult problem was of Descartes proportions: “Why do I exist?”. And I am discovering that by creating personal projects for no audience or employer is how I am learning to find myself. So, a few moments later, when you mentioned:

“The goal is work, and the reward for good work is more work. Because it is the only way we can realise ourselves. Could you imagine being paid really well for doing a job that you didn’t love. Could you imagine a greater hell than that?”

That was the exact moment I became a fan of your philosophy. I mean you probably had me at your attitude towards making the objects you covet. Not to mention your techniques. Establishing humanity by leaving all the evidence and ‘scars of labour’ behind? Showing the end grain, evidence of your use of plywood? All the screw heads and glue drips? Refreshing.

Tom Sachs self portrait. The sachs family crest

I’m a software engineer by trade and for the last twelve years I was paid to erase and scrub out imperfections as best I could. I’m not yet sure how to showcase evidence of how a human wrote some software, but I’m hoping it is possible. The fact that filmmakers like Van and Casey Neistat are able to illustrate their production labour? In another ‘perfect’ domain; film making? At least gives me hope.

Your work has provided me with optimism. Maybe it is possible to showcase that a human. Me. I toiled here, inside your computer.

Best wishes,

Clinton Freeman.

P.S. If you ever run a graduate course in bending plywood? Could you film it and upload it to the intertubes? Thanks!

2015/03/23 - EDIT: Added reference to Van Neistat.

 

How to deploy docker containers to an Arduino

07 Mar 2015

I develop for a bunch of different platforms and devices. So I have a whole stack of different programming languages, SDK’s and IDE’s kicking around. This ends up being a huge pain in the ass to maintain. Try to temporarily use a different machine, or even worse. Upgrade? It is a constant download and configuration nightmare. I had a few of the ‘big environments’ all setup using vagrant which was great. But when I got my latest machine. It was going to be different. All my development environments were going to be defined as docker containers. ALL OF THEM. Even Arduino. This is the story of how I ‘deploy docker containers’ from OSX to Arduino boards.

After downloading and installing Boot2Docker, you need to install the VirtualBox extension pack. This extension adds the USB support that lets you share USB devices (like your Arduino) with virtual machines:

  1. Download the extension pack.
  2. Open up the VirtualBox GUI.
  3. Select ‘VirtualBox -> Preferences’ from the menu.
  4. Select the ‘Extensions’ icon.
  5. Press the funny lookin’ ‘yellow square superimposed on the blue box’ button.
  6. Browse to your downloaded extension pack, and press open.

Gif animation of how to install the virtual box extension pack.

Next we need to give Boot2Docker access to Arduino boards that you plug into your host machine.

  1. Plug your arduino into an available USB slot.
  2. Make sure the boot2docker-vm is not running.
  3. Right click on the boot2docker-vm and select ‘Settings…’
  4. Select the ‘Ports’ icon.
  5. Select the ‘USB’ tab.
  6. Make sure both ‘Enable USB Controller’ and ‘Enable USB 2.0 (EHCI) Controller’ is checked.
  7. Press the ‘green plus superimposed on blue USB plug’ button.
  8. Select the Arduino device from the list ‘FTDI FT232R USB UART’.
  9. Hit OK.

Gif animation of how to share arduino with boot2docker-vm.

Alright. Now VirtualBox is all configured to enable docker to access our Arduino. Time to roll a docker image that can punch containers into our Arduino. Well kind of. Docker won’t be running a container on the arduino. Running the container will just upload your sketch. For the image, I’m going to use ino. The latest versions of Arduino are starting to include its own official CLI. But at the time of writting it did not include a serial monitor, nor would it work headless (the CLI still needs a full X11 stack).

Your Arduino project needs to be in an inotool format and also contain the Arduino Dockerfile:

.
├── Dockerfile
├── lib
└── src
    └── sketch.ino

OK, with all that in place. It is time to build your image.

$ docker build -t your-arduino-project .

You can now ‘spin up a container’ on your Arduino.

$ docker run --privileged -v /dev/bus/usb:/dev/bus/usb your-arduino-project ino upload -m mega2560

Finally. Liberated from the blue Arduino IDE. Sorry Arduino. I love your microcontrollers. The IDE? Not so much.

A blue arduino heart logo

2015/04/10 - EDIT: Miscellaneous typos.

 

Copyright Clinton Freeman Ⓒ 2007-2015