jonathan.is

Dusting off the Stacks posted on 05 April 2015

This is a WIP talk for Bard Graduate Center, for the work I did during The Interface Experience show.

You can comment on the more up-to-date version on this hackpad

Dusting off the Stacks

Ancient/Modern Development on Modern/Ancient machines

Abstract

Getting into the nitty gritty of what technology we used, and what we learned about programming for older systems. Figuring out the best way to emulate, code, compile, upload, and run new software on old and new hardware and operating systems, was both a technical and research challenge. This talk walks through some of the process and learning from a development and research perspective.

Bio

// https://jonathan.is https://jedahan.com

I like to connect random inputs and outputs to see what people will do with them. I often take virtual streams and provide them physical facilities to exaggerate their impact on our lives. I am equally comfortable coding in C, C++, Rust, Javascript, Coffeescript, Python, Piet, Basic, Hypercard, and Bash. I painted a simple echo program and could very easily see myself holed up for the winter just with canvas and wine.

Intro

So, when Kimon messaged me about the project, I kinda thought he was crazy.

And, he didn’t know it at the time, but … I had no idea if I could program even half of the devices he was asking about.

( In fact, I was pretty sure there was no way I’d be able to write something for the Palm Pilot )

But the thought of being paid to program something in hypercard, just made me giddy with excitement. So I responded with an ‘oh absolutely we can get all of this done, no problem’.

First of all, I must apologize to Kimon for that half-truth, and thank him for trusting me enough to follow through with it.

If he had asked me the same thing just three months earlier, I don’t think I would have even tried - but having just participated in Hacker School gave me the confidence and support needed to be fearless in diving deep and asking for help.

It also helped that the timeline was, well, at Museum-speed. Pretty fast for museum speed, but that still meant we were in first gear. Maybe a 4-cylinder car instead of a scooter, but that left plenty of time to come up with alternate suggestions on how we could go ahead with only some native apps and still execute on his vision for the focus gallery. Cuz there was still no way 5 applications, on 5 platforms (3 of them completely obsolete), could be designed, programmed, tested, installed, and survive the first 15 minutes of exhibition.

The thing was…despite all these problems…it looked FUN.

Also, maybe I was feeling cocky because I messed with a NES while working for Don Undeen in the Media Lab at The Met. There was something compelling about working on these old computers, but I wasn’t sure what it was yet.

And with a ton of help from everyone, over the next couple of months, we actually managed to build everything I thought was impossible at the beginning.

So…how?

Well, there’s a few pieces of what needed to happen - I’m going to skip over a lot of the awesome work we did with all the students in his class and start with the technical setup, move on to the research aspect, then finish with the similarities and differences I found working on a set of systems over 30 years apart - almost 3/4 of the history of personal computing. Though i’ll talk about all five machines, my focus will be primarily on the three earliest - the Commodore 64, the Mac Plus, and the Palm Pilot. If you want to talk more in depth about the iPad or kinect, feel free to ask during the QA or afterwards

Tech

In order to develop comfortably, I needed a repeatable, understandable way to work off my laptop for all these systems. The general idea was to use emulators to do local development, to understand the languages and limitations and then to transfer them to real hardware for testing. What did this require?

Emulators Emulators Emulators

!picture of vice // 10 PRINT CHR$(205.5+RND()): 20 GOTO 10

The commodore 64 was probably the easiest machine to emulate and get working with right away. Which is why I started with that. Well there were a lot of false starts, learning about the character sets

!screenshot of mini vmac // open sore—source (drawing issues)

mini vmac - which on linux had a drawing issue. It’s ok though - its open source. Except the source is distributed as a mini vmac application archive. Which means you need to inception your mini vmac source to modify it. Also, its not under version control. I managed to rewrite a line to fix the draw routine, and now could comfortably run hypercard on mini vmac.

!phem for android // it even glows blue when you press the power button

phem - the best emulator is actually for….android! its great!

iOS no need to emulate, kinect no need (though looking at MS sdk vs open source…open source had 100x the example code)

Software Software Software

Some software is on archive.org. Some are not. For the c64, it was easy to grab software. For the Mac Plus, it was considerably harder. Apple USED TO (as in, up to a month into the project) host software on… http://apple.com/oldsoftware but then they took that site down without warning. Also, in typical Apple fashion, they have been agressively pruning all mirrors and copies of their software off http/ftp servers on the web. So, whats someone to do? Join IRC :) Even then, there was some piece that just couldn’t be found - like hypercard 2.1. So after buying it on ebay, popping it into my computer and realizing WTF apple was the only company to use variable speed hard drives instead of constant speed hard drives meant I was SoL…until I found the Kyroflux. Did I mention how it just takes one awesome/obsessive person to preserve this for generations to come? The Kyroflux is a custom floppy disk controller that can do what no other floppy drive gives you - raw magnetic values on the floppy for archival. And it can even convert sectors for you. Its a hardware emulator for old floppy drives. I had no idea if there was a bunch of format conversions - but happily after messing around with options I just dragged a dumped hypercard rom into my emulator and… IT WORKED! Hardware Hardware Hardware SD2IEC - sd card - made with recycled c64 case plastic! Came with a full sd card of games and software which we totally, definitely, reformatted. Theres no way you could hit reset on the c64, type load fb64,8, and navigate your way to find a terrifying game called “monster dance” where you blow the limbs of a monster to transform him into a xanadu-disco-dancer. the mac sd card reader People People People

Stuff I learned

The older the software, the EASIER it was to understand. There wasn’t much it could do. The Palm Pilot SDK, was a dozen .c and .h files. Compared to say, the iPhone (which has tens of thousands of .c files, many of which you are not allowed to view), or even a modern javascript stack - the number of possible function calls was TINY. Each system had its own metaphors and terminology to learn. This is nothing new, but it was refreshing to see what ideas have survived - like hypertalk’s event system which I can see mirrored in the way clicks bubble up in javascript. Many crucial pieces of software and hardware, are maintained by ONE obsessive person. Small communities form around these people (often on IRC and forums) and are often incredibly patient and welcoming to anyone who is clear about thier intentions for learning / working with old hardware. Research is mostly about finding the right keywords, by reading things you are not sure why you are reading. Once these keywords are found, finding more information becomes 10x easier. This is common when learning a new programming language, technique, or framework. Old documentation was sometimes written with way more prose, and was enjoyable to read on the subway. Hypercard 2.1 was way bigger than I thought it should be because the box came with 7 books of documentation - a reference, a quick start, a tutorial, etc… Version hell was 1000x worse in the old days than today - Hypercard 2.0 often was just the player, 1.x didn’t have support for modifying menus, and anything over 2.1 required system 7, so finding Hypercard 2.1 - there was only one person in the world who had a copy. They were in Tennessee and I had to call them to double check that the system requirements printed on the side of the box specifically noted it would run on system 6 because that information was NOT on the internet! Sandboxing ah ha ha ha. You could break your machine very very easily - locking yourself out permanently. Since you could control everything. But then, you learned novel techniques for un-breaking your machine, since you had full control over the bytes running. For example, you could write a handler for menu selection in hypertalk. And if you forgot to pass the message, good luck even opening the script editor! This could be unbroken, by writing a more global script in another stack, to always enable a keyboard shortcut to immediately run a command, like one that would then open up the script editor, or change userLevel. Still I had to learn the hard way

Technical Achievements

  • rewrite the draw routing for mini vmac emulator
  • understand and build new backdoors for hypercard
  • find and dump the only copy of claris hypercard 2.1 on the internet
  • create a virtual machine, with a version of debian from 1998 that works on a modern computer, to compile native palm pilot applications
comments

Hackerschool, 2 weeks later posted on 05 August 2014

The first two weeks of hackerschool was way better than I expected. Some of the highlights include learning how to use the BeagleBoneBlack PRU with Dana, building a wifi probe request sniffer using libtins, and finishing the first week of stanford networking course CS144.

Inspired by Ambers post on trying things you are scared of, I’m going to retackle this NES sniffing project. The goal is to identify and display what cartridge is in a running NES. My plan is as follows:

  • Get the beaglebone PRU to trigger interrupts on the phase2 pin of the nes
  • Read the LSB of the data line in that interrupt
  • Write 512 bits to shared memory
  • Do this a few times
  • Find longest common substring and try to guess a ‘header’ to know when we should actually read

Small things that happened in the last week

  • d3.js graph to add nodes and links to visualize a mesh network
  • getting cjdns up and running on OSX & a beaglebone with the help of PSST!, GRRR!, and nyc meshnet
comments

How to protect your computer at a hacker conference in 30 minutes or less posted on 18 July 2014

HOPE X is in 8 hours, and I want to protect my laptop without installing a fresh OS. I want to take reasonable precautions that still let me get to bed in the next 30 minutes.

  • Install Little Snitch, and whitelist ports 80, 443, 6697
  • Remove all saved wireless access points
  • Disable all network devices except usb tether to phone
  • Uninstall flash (or never install it in the first place)
  • Tape over camera
  • Disable bluetooth
  • Use a password manager instead of typing in passwords manually
  • Never share a usb port
  • Disable all network services
comments

How I Got Started Programming NES (on OSX) posted on 18 May 2014

How I Got Started Programming NES (on OSX)

Basic Development Software

This is stuff any OSX developer should already have up and running - a way to compile code (xcode CLI tools), a package manager for command line applications (homebrew), a package manager for gui applications (homebrew cask), and a virtual machine to develop in (VirtualBox). This only will need to be setup once on each machine and will help a lot for future stuff.

Install Xcode CLI tools if they haven’t been already

 pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version || xcode-select --install

Install homebrew if it isn’t there

brew --version || ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

Make sure homembrew is happy, by following all the instructions printed out by

brew doctor

Install homebrew cask to manage gui applications, since homebrew only knows commandline applications

brew tap phinze/homebrew-cask && brew install brew-cask

Now install VirtualBox - we will be developing and burning in Windows XP because thats where are the good tools are. It is also 100% necessary for burning on EEPROMs, which is the kind of chips NES cartridges use. This install will ask for your password to set permissions.

brew cask install virtualbox

Phew! we now have the basic tools any OSX developer would want on their machine, time for the NES specific stuff!

NES-Specific Software

Download a copy of IE8-XP virtual image from Modern IE. This is a free, legal, 30-day trial of windows XP 32-bit, which is the most compatable for the ROM burner we are going to use.

NES-Specific Hardware

The GQ-4x is a great piece of harwdare - it is small, usb powered, and compatable with VirtualBox on OSX, windows XP and windows 7. It’s really worth the $90 asking price - there are cheaper tools (~$45) but they seem to be unreliable, some require external power or a serial port and are not compatable with more modern OS’ (win7+) like the GQ is. If you do end up getting a different programmer up and running well please let me know so I can add instructions here!

comments

How to get opencv 2.4.x and openFrameworks 0.8.x to play nicely with OSX 10.9 posted on 26 November 2013

Here is how to build a fully 64-bit openFrameworks application, with the latest OpenCV on OSX 10.9. We need to modify the build options for homebrew’s opencv formula to force linking against the latest osx library, then tell openFrameworks to do the same.

Make sure you have homebrew installed, then do the following:

  • brew install python numpy
  • pip install numpy
  • add the following to args in /usr/local/Cellar/Formula/opencv.rb:

    -DCMAKE_OSX_SYSROOT='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/'
    -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
    -DOPENCV_EXTRA_C_FLAGS='-mmacosx-version-min=10.9'
    -DOPENCV_EXTRA_CXX_FLAGS='-mmacosx-version-min=10.9'
    
  • brew install opencv
  • use nick hardeman’s 64-bit fork of openFrameworks
  • make sure all the targets are 10.9 for your app
  • add the correct dylibs from /usr/local/lib to the project
  • If you are using the makefiles, just prepend the following to your project Makefile

    USER_CFLAGS = -I/usr/local/include
    
comments

ArtHackDay.net GOD MODE posted on 16 March 2013

I participated in ArtHackDay: God Mode. The four projects I helped work on were

Messenger of God

Wherein your cell phone automagically connected to our rogue network, and recieved text messages from ‘god’. If you walked up to our terminal, you could send messages from a website, as god.

Iconoclashes

Wherein a photoshop script built by Erik and Clement mashed up artwork of different dieties, pulled from my unofficial metropolitan museum api.

Twetr

Wherein we provided an official unofficial app that had some very interesting backdoors…

Hand of God

Wherein a video may explain better than text

ArtHackDay was amazing, as always. Another one is coming up in April in Stockholm!

comments

How to use SmartOS / Joyent Cloud to deploy and run a fast, easily introspectable and debuggable hypermedia api. posted on 28 January 2013

How to use SmartOS / Joyent Cloud to deploy and run a fast, easily introspectable and debuggable hypermedia api.

So you are making a sweet new hypermedia api, and wanna use node cuz its hip with the kids. And since its going to be just an api, restify seems a lot more attractive than express. You deploy to heroku, and the api is beautiful. It is self-documenting, has a decent suite of tests, and is fast.

But since you are on herokus free plan and the free redis instance is running out of cache and is way more expensive than you can afford, you look for alternative hosting. And linode has great support and is certainly cheaper than heroku and easier and more performant and cheaper than S3 (according to people smarter than me). But you miss heroku push. In comes deliver, which is exactly what you want. It even comes with a node.js strategy that just works (thanks to foreman). Config is easy. Hooray Open Source!

So your api is EVEN FASTER and you have 250x the cache for 1/5 the price.

Until you start to hammer it with requests, and they start to time out.

And you realize unlike gdb in C or decoda for lua, you are new to debugging with node. Well nipster tells you about node-inspector, which helps you plug a memory leak, awesome. But it didn’t exactly help fix the timeouts.

The restify framework has DTrace support in its core, but it looks complicated so you search google for ways to see how much time is spent in each function. Again and again, result after result points to DTrace, flamegraphs. Even nodejs.org mentions node-stackvis, which is a flamegraph port. Developing in OSX, you figure it will work since you have DTrace, except for the not-so-teensy issue that Apple does not support the Node.js ustack helper, which was mentioned in a few other blog posts. However illumos does. And Joyent, the main company behind node.js has a Cloud, and that Cloud runs SmartOS, which is an illumos distro.

Now, you take a drink, because you have to make a decision. You have sheared sheep before. But this is full-blown yak shaving territory.

You are learning a new operating system, to run a specific profiling tool supported by a particular framework so that you can help debug. The framework will almost certainly be gone in 5 years, probably even node.js will be replaced in that time by better stuff. DTrace will probably be around for a while longer, and its always good to be familiar with a range of operating systems, and DTrace + Zones (not to mention KVM and ZFS) look particularly interesting.

So you bite the bullet, and realize this isn’t just about getting your api performant - that is an end goal, but not the only goal. Its goal creep.

Fortunately, your API is a personal project, and that is the best place to learn. You are invested in making your API kickass in all the possible ways, and to grow your skills.

So thats the fluff, heres the crunch:

Your restify api is too slow, almost certainly because of poor code. You want more powerful profiling, debugging and the ability to scale.

So learn DTrace, which will help debugging across a range of applications. And you begin with flamegraphs to start profiling your api.

Scaling / massive provisining from illumos Zones You love the ease heroku, but need more control to debug and its expensive. So learn Deliver and foreman, so deployments are just as easy on any vps.

So here comes the Yak shaving:

Getting deployment to SmartOS as easy as Heroku

The Deliver node.js strategy only supports upstart, which is not on SmartOS. No matter what process monitor we use, Deliver will need to be extended. This is easy because its just bash.

Deliver uses foreman, which can export to a number of different init services, but again, SMF, SmartOS’ init of choice is not one of them.

Foreman does support exporting service definitions to bluepill, which is a rubygem, and since pkgsrc, SmartOS’ package repository of choice, supports ruby, we hope it will work.

So we change the .deliver/config to set SUPERVISOR to bluepill, and gem install bluepill on illumos.

Now extend the deliver node.js strategy by adding 3 lines of code to stop and reload the pill created by foreman.

Also make sure your user SHELL is set to BASH, as deliver is bash-only.

More about Deliver

Should deliver just use foreman start and foreman stop? Should launch() be in libexec/common() and support all the foreman exports directly?

comments

Rasperry Pi Internet of Things Trafficlight posted on 20 September 2012

Hello from raspberry pi/adafruit/nycresistor! Documentation for the internet of things traffic light can be found on my portfolio and on my partner in crime Andrew Tergis’ blog. Feel free to control the trafficlight by going to http://terg.is/tl/ and view its status on http://bugcommunity.com/raspberrypi/

The best way to contact us is through twitter @jedahan and @theterg

comments

Dumbrella posted on 15 June 2012

Dumbrella

So after chatting with a few wonderful campers I decided to tackle an umbrella that lets you know when you should bring it along.

Design considerations in order of importance is speed of development, ease of use, durability, size of solution, power consumption, price and name.

Ideally, the dumbrella v0 will

  • be done by camp’s end
  • be standalone
  • accurately indicate if it is going to rain in your zip code that day
  • survive in the rain
  • fit inside an umbrella handle
  • have batteries that last a while unattended
  • have easily replaceable batteries
  • cost me less than $100
  • have a better name, possible related to PR Nelson

The current thought is a hollow wooden handle, with a wi-fi enabled microcontroller that polls every 30 minutes some website to check if its going to rain in the next 24 hours based on its geoip location. If the forecast says rain, it lights up all sorts of crazy.

comments

Museums And The Web 2012 posted on 12 April 2012

Day 1

arrived around noon in san diego, great weather tried to checkin to hotel but was too early walked to downtown (35 minutes) ate first meal of the day at anthonys rented a bike for the weekend biked to gaslight district checked out pamphlets at hostel, stole cookie been 5 hours, checked into hotel spent some time figuring out where people were - craft and commerce met up with Erin at craft and commerce introduced to Susan, Bruce, Ed, some others ended up chatting with some locals telling me to go to Cherry Bomb & Tijuana went to another bar with Ed & friends and got more drunk Met with Perian at Princess Pub? cabbed back, passed out

Day 2

9:15 mwhackathon signed up for way too many projects :) introduced to koven via susan arduino + kinect workshop Bruce is here Met Miriam (ArduinoGrrl) and Liz Neely both of whom are awesome Tried to get wekinator working got advice to retry SimpleOpenNI the libraries have gotten a lot better 5pm, met with Erin, Susan, Leo, Ed, Ryan, 5 more for visualisation event @ calit2 calit2 vis stuff is super fucking awesome, holy shit its Lev Manovich! giant screens with excellent visualisations of art - I am so compelled to learn about Rothko met with virtual art group / experience people who were livestreaming to japan, documentary, awesome stuff lots of talk of sharing data, compelling stories

Night 3

tooo much karoake + dancing after balboa park after great talks

Night 4

connect with hackers, make research a necessity. REAL research - do not worry about deliverables but really be free to do pure experimentation for true cutting edge stuff curation and semantics changing a site about open data myths and evidence to sway

comments

Arduino Code posted on 15 January 2012

I have spent way too much time trying to program an attiny25/45/85 using an arduino as the ISP, both with Arduino 1.0 and avrdude on OSX Lion. I finally got an Arduino Nano v2.3 acting as an ISP for the attiny25 with avrdude on OSX Lion. Here is what I learned.

TL;DR for those who just want to party ————————————–

1. Install Arduino 1.0
2. Wire up your board
3. Open ArduinoISP, and change `Serial.begin(19200)` to `Serial.begin(9600)`
4. Upload sketch to the arduino, make sure the heartbeat led on pin 9 is pulsing
5. Put a 110->220 Ohm resistor between +5v and reset
6. `cd /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin`
7. `./avrdude -c stk500v1 -p attiny25 -P /dev/tty.usbserial-* -C ../etc/avrdude.conf -b 9600`

Why all this work? —————— The baudrate workaround is needed because the serial buffer size was halved between Arduino 023 to 1.0. It is already in the trunk version of ArduinoISP.

The resistor is required to disable auto-reset on the arduino. If you are using a different board, make sure to learn how to disable auto-reset safely on that particular board. Also make sure to re-enable auto-reset when you want to put different firmware on the arduino.

Can it be improved? ——————- If you have [homebrew][] installed, you can use [homebrew-alt][] to install a newer version of avrdude, which supports ‘arduino’ as a programmer, making the command:

avrdude -c arduino -b 9600 -p attiny25 -P /dev/tty.usbserial-*

This can be simplified further by telling avrdude to remember 9600 baud for arduino programming. Just add add baudrate = 9600; underneath type = arduino; in /usr/local/etc/avrdude.conf. Now its just:

avrdude -c arduino -p attiny25 -P /dev/tty.usbserial-*

Hopefully avrdude.conf will be updated to 9600 baud for the arduino programmer, as that seems to be the official fix.

It would be even better if the libraries were updated so that 19200 baud would work with ArduinoISP.

What about ATTiny support in the Arduino IDE? ——————————————— There is an unofficial project that adds attiny entries to the Arduino IDE.

To get this working, make sure to change the 19200 in $ARDUINO_DIR/hardware/arduino/programmers.txt to 9600.

I will probably submit a patch to do this for you :)

comments

Things Done Since Last Post posted on 18 October 2011

Heres a bunch of shit thats happened since last post. Hooray for jekyll meaning I can make a MVBlogPost.

  • Open Hardware Summit 2011
  • World Maker Faire 2011
  • Chaos Communications Congress #??? Fucking amazing. I am always down to talking about all the crazy stuff that happened
  • Internet of Things meetup
  • ESC Boston
  • started job @buglabs
  • moved to south slope

Todo —- - link out to relevant websites - describe one cool think that happened - split CCC to new post

comments

West Coast Week Three posted on 13 February 2011

For more details, check the pics, videos and travelog

Saturday

Morning farmers market in silver lake, the bussed to santa monica pier. Walked around a bit, got food at the local mall, and then headed to LAX. Went to a burlesque rave in Oakland - not sure where it was but we met at 2020 and the shuttle was about a fifteen minute ride. Had to dress up, so borrowed some outfit Kim had. Two main dance floors with some good DJs, lots of beds and blindfolds and ropes. Naked sushi, all benefiting a non-for-profit hotline in Oakland. It was a blast - we stayed out till around 5. Once back at the hostel chatted it up with Mickey, big EDC backstage festival-hopper.

Sunday

Slept late, then went to a roller-skating birthday party at cellspace. Spent two hours skating and generally having fun, but had a small anxiety attack and got up and left :/ Chilled at the hostel, tried to find contact info for Richard.

Monday

Woke up early, thinking I was supposed to be at Yammer at 10am. Turns out I was 4 hours early, so got some work done on the dining table. Spent the afternoon hacking at noisebridge until 5am, brought adam there.

Tuesday

Wednesday

2 bottles of wine after a long chat with the shopkeep of Napa Valley Wines. Took the tram up to chinatown, checked out a museum there, ate the goat cheese sandwich at La Bolounge, then hopped back on towards the wharf. Checked out laughing sal and watched naughty movies and took pictures at Musee de Mecanique. Got another bottle of wine, finished it at the hostel Stayed in the hostel until midnight, went out to cellar for shots and beers.

Thursday

Getting to the exploratorium was a very difficult journey in all the rain, but the bus ride there was great, and exploratorium was amazing. apple still frame, skipping girl, audio room. Getting to the lockers and back was also intensly difficult. Spent a lot of time getting close to friends.

Friday

last day??? not last in SF but last for now.

comments

California Two Weeks Later posted on 11 February 2011

Warning this is a WIP, some things will be incomplete/incorrect and generally very sketchbook like. It will be a lot easier to review later and make more sense of things.

I am on the flight back from the City of Angels to San Francisco. First of all, Los Angeles is super polluted. If you are walking around, expect to be breathing in exhaust at least half the time. Also, people dont clean up after themselves or thier dogs. This is the most spread-out city I have been to, and it is difficult to get around walking. Try to use the rail and big blue bus / rapid lines over regular buses.

Transit and cleanliness difficulties aside, the weather, art, dogs and fashion in LA are beautiful. I am fortunate enough to be crashing at a friends place in Silver Lake, which is only 15 minutes away from downtown.

Check out my flickr, youtube and foursquare for all that good stuff.

Saturday

First time sailing - hell yeah! We spent about half the day trying to get one motor started - the batteries were too low. So I blew up a raft and attempted to pull the boat into another slip so we could sail out. Just then Chad, the owner of the slip we wanted to borrow sailed in and offered us his boat. So we hung out while Chad piloted the beautiful yellow ship. The bay is super busy, saw some cargo ships and tall ‘pirate’ ships. Sailing is not too hard, just takes some diligence in maintaining. We played ukelele and had some nice winds.

Later in the afternoon there were sea shanties on Hyde pier - very fun but you probably want to be pretty inebriated to enjoy it to the fullest. Still, cool ships and a fun time. San Francisco is super-bikable, just get ready for some serious strength training with these hills.

Sunday

…to be filled in when i can check back with my notes

Monday

Met with Ben for lunch in Bryant park; ate a burger that rivals the ones from Jackson Hole. Chilled at noisebridge in the evening, talked to Mitch about the musical capabilities of the atmega chips, if it really makes sense to run them at 22Mhz or if settling for a 20Mhz ceramic oscillator is fine.

Tuesday

Up until 6am coding my business card. No typo there, just wrote a little script to generate qrcode urls with base64 encoded uuids attached to the end. Gonna do some weird interactive/augmented stuff with that. Wondering if rails routes can do fuzzy matching, or match from a database.

Wednesday

Yeah projectfresh! Government 2.0 talks were a lot more interesting and less political than I had anticipated. Very good panel assembly by Burt. Realized that any business cards are better than none Gonna work with Richard Monday night at noisebridge doing a little 3d-led-cube action! Kurt, one of the panelists gave me a ride home, we had a super-excellent chat about destroying the ego. Rob showed me his pad, I am pretty jealous of his book collection. And brought me to an excellent Taco truck, tacozone.

Thursday

Art Walk! Go around 6pm, any earlier and a lot of the galleries are closed or not ready. Downtown becomes packed, which is rare out in Cali. Bacon-wrapped dirty-dogs were clutch. Bar 107 had an excellent dj lots of eclectic good rock music. Daisy and Janet showed me a good time around town, thanks!

Friday

25 and sunny, hell yeah. Took a bus to Beverly Hills, checked out the shops near the miracle mile and went to the mall. Got some really delicious sushi in Little Tokyo, then got a shirt at some rediculous botique.

comments

San Francisco One Week Later Edited posted on 04 February 2011

Ive been in Fog City for a week now, and it flew by really fast. The first generalization I can make is that here you do not need to make plans to do a lot of fun stuff. Without any research or planning Ive been super busy every day. This post will be updated with better grammer and more details as I sort through it all.

Check out my flickr, youtube and foursquare for all that good stuff.

Friday

Landed in SFO, took the BART to Tenderloin, checked into adelaide hostel Had sushi with Ben for dinner - Toro is really, really good

Saturday

Took a walking tour of the city, went to coit tower, the cable car museum, beat museum, Fog City tours are excellent. House party in Civic center, 23rd floor. Christian had too much to drink.

Sunday

Tuesday description might be sunday actually. Or Saturdays description might be sunday. Must check 4S.

Monday

Four hour interviews with Yammer. Very cool people, company, product, atmosphere. Walked around SoMa a bit and had some tea at epicenter cafe. First guy I asked about breaking into the industry runs a newsletter of startup meetups. Go Figure.

Tuesday

Free museums - checked out the MoMA and Yerba Bueno. MoMA has 2 floors closed, the main exhibit was ‘how wine became modern’ and that was kind of boring. The space feels weirdly curated. The top exhibit was all about photography, mostly black-and-white and not very inspirational. There was one sound sculpture at the tiny white bridge on the fifth floor that was neat. The secondary store on the fifth floor was all local artists, and much more interesting.

Yerba Bueno was very cool - just 3 artists galleries and one general exhibition. The exhibition was about audiences, but most films were too long for my attention span The galleries were all good - one on counterpoint was the best. The video installations were enjoyable. The audience clapping one was really scary, and the old guy acting like a mouse was good too. Yen explained the beach bum video that came from regression therapy which made it that much better.

Yerba Bueno has a beautiful garden too.

Took the bus to the presidio to meet with ben, but my phone died so I ended up walking to the Exploratorium. Fucking awesome. All interactive science exhibits, some trippy as hell most very smile-inducing.

Wednesday

Exploratorium with Thomas and Alex, checked out the beach and went back to the hostel then mission district.

Thursday

In the afternoon hung out at Rachels before going to the Exploratorium After Dark Surrealist party. Wrote ‘ce nest pas une chemise’ on a shirt while looking in a mirror. Rachels friend works at the Exploratorium, and she introduced me to Dale Dougherty! Went to the super-fun tactile dome, and had some tea with tea at the mad hatter party. Then drove in the back of a small truck to a view of the golden gate bridge by the presidio with some friends. Steve (noise music to break from representational music), Moxy (nuero-linguistic programmer), and stuart (moving from crazy house to less normal house). Stuart and Rachel went to CMU too!

Im super stoked for sailing and sea shanties this Saturday with Steve, Stuart and some others!

Friday

Gonna check out a coworking space to get some programming done before beers and dinner tonight. WTF san francisco. I just happen to come in on NextSpace Free Day + 4pm happy hour. Living here with no plans is just tooooo easy.

comments

open source hardware conference posted on 15 November 2010

This is first a response to @JxA’s post about the OSHW Definition Draft and second just general thoughts brewing post-OSHW

@JxA

Your definition of proto-hardware and hardware could be boiled down to ‘when do I start inviting the world to collaborate?’ . It is a gray area that you probably saw a lot more sharing of at OSHW due to the mutual understanding and passion of the attendees (seriously OSHW was such an awesome time!). Your ‘proto’ seems close to platform, ‘hardware’ close proto + documentation, and ‘product’ close to hardware + usable software + full documentation. At such early stages in design these blur, as there is another type of consumer that has different expectations of ‘the product’.

A while ago my father asked why open source wasn’t advertised. To make a long story short and relevant to this conversation, we agreed that the maker-consumer cares most about the hackability of a product - to the point that the product doesn’t really have to do anything out of the box. Seeing OSHW-stamped boxes would inform the maker ‘hey do not worry about hacking this thing its gonna be easier and we encourage you to do so!’. This stamp should mean the same thing regardless of the stage of development of the product.

I am not quite sure where I am going with this, just that although I like the direction your thoughts are going, describing something clearly that is complex necessarily requires complex description. It is why this definition is taking a while to solidify (though it has ‘gelled’ a whole lot in the past few months).

Defining the goals of the definition will bring about a clearer scope, which can definitely be found through discussion like this.

If you don’t mind, I would like to link to this post and yours in the forums.

TL;DR

  • Outlining the goals of the OSHW definition will make it easier to describe complex things in a clear manner

  • One goal is that compliance should alert makers ‘Hack Me!’ ( though really, shouldn’t everything? )

comments

arduino buyers guide posted on 21 July 2010

Some recommendations since they avr scene has exploded, and arduino-compatable boards rock. I recommend supporting the manufacturer by buying direct if you have that option. Shield compatability is very useful when starting out. Choose one from the basic list if you are not sure where to start, but be sure to check out the neat features in the alternative boards too.

$40

$30

  • Basic: Uno
    • The official board is more flexible, since you can change the atmel chip
  • Alternative: Seeeduino
    • Improved form factor than the uno, but the chip is not swappable

$20

comments

systems posted on 05 July 2010

Reduce friction for contribution and consumption

  • see open source development Offer alternatives to asymmetric balance of information
  • insurance vs. savings communes Keep in mind the elasticity and limit the numbers
  • private trackers, constitution
comments

notes posted on 02 July 2010

Going through the speaker list at thenexthope, and seeing how many notes I have written in tasque made me realize I consume way more than I can follow up on. Prioritization aside, just getting this down for posterity is important, and what better way than to public random notes on the internet? (Seriously, I need a better scheme than this, preferrable one that following the antihacking idea I posted earlier. This post will probably be split into a few ones later, but its better to push early and often, before this stuff slips away.

FossCon

Great convention, organized by JonathanD

  • Lots of talks involved open education, not just in using FOSS technologies for IT infrastructure, but to take advantage of real world excercises, contributing to code/documentation/art/testing in projects that people will actually use.

    • hkcmp
    • freebay / nomoola
    • collectivefoundation
    • aaaarg.org
    • publiccollectors
    • collectivefoundation
    • thepublicschool.org
    • learningsite.info
  • From the talk on community management given by kloeri

    • define what you want from the community early on
    • changing direction is ok as long as everyone is moving in the same direction
    • leave trivial bugs as low hanging fruit
    • be open about exploitation of users to turn them into contributors
    • take “bad” patches to illustrate ease of contribution
    • attribute contributions even if the contributor did not do any of the real work
    • upstream gets contributors <> contributors get credit and learning
    • users can socially engineer the developers to do work for them! (just pose the question as an interesting problem)
    • for another good example, see BFS from Con Kovilas
  • POSSE

    • productively lost is a good thing, stumbling around means you have a greater learning potential
    • RiT has a good FOSS movement going on, check out the foss@rit projects page!

      • Professor Stephen rocks, and so does the OLPC
  • Openhatch - job site++ for FOSSheads

    • Would be cool to add mission badges, integration with statusnet
  • Civx.net - git history of laws!

    • Both built on pygears < turbogears2 < moksha

Music

Music to check out - stuff that sounds good at first glance but I should consider putting into my regular rotation / radio show.

  • fabriclive 50
  • faded paper figures
  • clermont
  • frog eyes
  • slothbeat kids
  • icarus himself
  • hyperbubble
  • the humms might have a song that flaming lips took the chord progression for ‘I dont know where the sunbeams end and the starlight begins…’

Projects

Its important to document work - really, really important. Here is a crappy start.

  • Get pics from Prof. Jose
  • Fix arduinome
  • Build Problem Light (have a good chassis…)
comments

anti-lifehacking posted on 10 April 2010

This is the anti-lifehack.

By eschewing organization schemes this design pattern forces immediate action.

No tags, folders or priorities allowed - either deal with item X now, or place it on the bottom of the queue.

If it seems overwhelming, try determining how much time you would like to work on anything, and find an item that can have measurable progress in that period. I have applied this to my email inbox, rss feeds, and todo lists.

When applied to my email, I realized I had too many messages incoming. It forced me to unsubscribe from at least a dozen mailing lists, and over 99% of my emails are archived (which means they are dealt with). Zero inbox is attainable but not necessary - set small goals, like reducing the net amount by 5 every day.

When applied to my rss reader, I realized I had too many feeds, and would really only read a few anyway. I bookmarked the sites that I loved but rarely read, and decided to return to them later. Also, I hid item counts.

When applied to my todo list, I realized I had more stuff than time to do it in, which forced me to get very good at prioritizing, and picking what needed to be done immediately. This required a bit more dilligence about actually adding stuff to the todo list, though its great to cross off items.

comments

awesome island labs meeting posted on 10 November 2009

So we had three new faces at Island Labs today. Eric Forkosh is an experienced inventor who brought a cool gsm development board. Mary Ellen Walsh is a charming writer who came to observe our group to help research hackerspaces for Newsday. And Kent (whose last name I cannot remember!) is a friendly and inquisitive photo/videographer that captured the meeting also for Newsday.

Our corn starch experiments have finally paid off! Laurie donated a speaker that kupo and Tony wrapped with seran wrap. Jonathan hooked up the synth and with the help of justin and kupo got some really crazy shapes and tendrils to dance! Bill explained how non-newtonian fluids work and talked a bit about the near space launch.

Justin and Jonathan got the arduino to run a test program for a hobby servo, while Jan and Eric worked out some equations on how much torque would be needed to turn the doorknob for the magic door project.

In the holiday spirit, Chris soldered together an LED electric christmas tree!

Thanks for everyone who came out, with special thanks to Mary and Kent, who really just let us do our thing, and were great company.

Pics will be posted soon!

comments

random technology update posted on 27 September 2009

  • CK’s BFS patches apply cleanly to the nouveau tree. No idea if the desktop is more responsive or not.
  • More and more projects are moving away from traditional version numbers, going scm. This is good, but they should tag versions as stable more often (i’m looking at you, subtle.
  • Is there any way to remove ~/Desktop permanently and tell all xdg-aware apps to use ~/ as ~/Desktop?
  • OpenSSH setup on openWRT, will cover configuration in a separate post.
  • Interviewed Scott Shawcroft of OSWatershed.org . Maybe an exherbo scraper could be whipped up.
comments

openssh and openwrt posted on 27 September 2009

Success! Unrestricted, encrypted internet access from my laptop to a linksys wrt54g running openwrt. The OpenSSH documentation and irc channel bot were especially helpful - follow them for generating the keys, and use a configuration like the one below if you want all your internet traffic routed through a tunnel. The firewall.user I would not copy directly, since it is overly open. Since I have almost no clue to how IPTables works, any help on simplifying it would be appreciated.

client.conf:

client
dev tun
proto udp
pull # new for 2.1

remote fayth.ath.cx 1194
nobind

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/fayth.crt
key /etc/openvpn/keys/fayth.key
dh /etc/openvpn/keys/dh2048.pem

comp-lzo
verb 3

server.conf:

### connection
port 1194 
proto udp
dev tun
client-to-client

# security
user nobody
group nobody

### keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem

### routing
server 10.8.0.0 255.255.255.0
### make sure to include def1
push "redirect-gateway def1"
push "dhcp-option DNS 10.8.0.1"

### logging
comp-lzo
keepalive 10 120
status /tmp/openvpn.status

/etc/firewall.user:

iptables -I FORWARD -j ACCEPT

### OpenVPN
iptables -A OUTPUT  -o tun+ -j ACCEPT
iptables -A INPUT   -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -o tun+ -j ACCEPT
iptables -I OUTPUT  -o tun+ -j ACCEPT
iptables -I INPUT   -i tun+ -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT
iptables -I FORWARD -i tun+ -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -I POSTROUTING -o tun+ -j MASQUERADE
comments

jekyll, or why blogging is not the same as publishing posted on 27 September 2009

Jekyll’s workflow means I am pushing out medium quality writing faster, as opposed to trying to perfect every post I do. This is a good and bad thing. The good is that I am writing more, the bad is that I can and will change my posts as my thoughts clear up (whether through introspection or discussion). Normally changing anything outside of an tpyo edit is bad practice, but having a git backend means that nothing is truly lost. What is does mean is that if people reply to a thread, maybe there should be some jekyll-magic that shows what revision a person replied to, just in case major changes happen. I believe all content should be up for discussion, and there is no use separating blog posts from static pages.

comments

island labs robot army posted on 27 September 2009

Over thirty people showed up to the Robot Army event hosted by Island Labs. Posters work amazingly well on campus. Thanks for everyone who joined us!

comments

getting things done posted on 27 September 2009

If you are the type of person who likes systems design and optimization, you may have a tendency to overanalyze and overcomplicate things. At least in the realm of GTD, the simpler your system, the more you will get done. A single todo list, devoid of symbols or colored pens representing priorities or even timelines has served me very well lately. Every time I find myself with a few minutes to spare, I spend time working on projects instead of working on stuff that is meta-project (a.k.a. procrastinating). By the way, I consider blogging a project ;), not procrastination.

This is just a small example of a reoccurring theme I am noticing more and more in other projects, for example in Exherbo. It’s the theme of self-organization from chaos. The less rules there are, the easier it is for people with similar goals to work together. The less strict those rules, that is when they are guidelines, and not absolute rules, the easier those guidelines are to enforce.

comments

eat your medicine posted on 27 September 2009

In a stronger effort to give applications the trial they deserve, I have uninstalled my old standbys.

paludis --uninstall vim; paludis --install diakonos gedit

I am looking for something between nano and vim with the suckless philosophy

  • good: consistent keybindings for most of my apps
  • bad: feel less productive, especially missing ‘cw’ and ‘dw’
  • ugly: missing exheres-syntax.vim

    paludis –uninstall firefox; paludis –install chromium-bin

This was a much easier switch.

  • good: blazingly fast
  • more good: don’t miss any firefox features
  • good,good: greasemonkey scripts, google bookmarks integration
  • amazing: flash doesn’t stutter or crash!

The only problem was nss reporting all certificates as revoked, but that was a clock issue, fixed with the following commands:

echo "TZ=\"America\/New_York\" >> /etc/env.d/00basic
sudo eclectic env update
ntpdate tick.stonybrook.edu
hwclock --systohc # dual boot with bad OS means clock is set to local

It was actually chromium’s strictness denying access to sites with revoked certificates that forced me to fix my clock. FYI firefox doesn’t have this bug because they work around it.

comments

distrology posted on 27 September 2009

OSWatershed should grab the most popular projects in ohloh’s stacks and use that for distro freshness ratings. Its a great way to see what applications people care about. The next logical feature would be recommended a distro based on what applications have the latest versions available for a particular stack. If a script could be written to build an automatic stack (that would be edited later) this system could effectively replace projects like popcon, giving upstream and downstream a better understanding of what people use.

comments

licensing posted on 05 September 2009

I started hacking on code that I want to publish soon, so I read enough to get a simple introduction to the various free software licences. The GPL v2 and v3 and apache licenses all seemed needlessly complicated. The MIT and BSD licences were nice and short, and very similar. Someone else noticed the similarities and merged those two to the ISC license, which is what I am settling for now. It is very permissible (read: not copyleft).

The choice was influenced by The Failure of the GPL, which examines a particular case which looked like a win for the GPL but in the author’s opinion was not. My inner pragmatist and idealist were arguing over copyleft, but changes in how I act ( favoring simplicity and faith in the natural order of things) meant the idealist won. One downside to the ISC is that it does not enforce anyone using my code to show me any improvements they make on it. The other downside is that it falls under the OSI category of ‘Licenses that are redundant with more popular licenses’, but it’s so simple that if anyone wanted to use my code could do so easily.

comments

convergence posted on 27 July 2009

Github and Jekyll really have made it easier to make quick edits and posts. It isn’t really about the effort, but the perceived effort. I feel like Wordpress is a heavy, slow moving piece of software even though it isn’t. Being in the console makes it fast and fun to improve on old content and write new stuff. It is one of the reasons microblogging services took off. Now if I could only find a way to write my resume in markdown and get output half as nice as latex. A resume is the perfect example of the value of separating content and presentation.

comments

Blog trial the second posted on 25 July 2009

I had a wordpress blog. I didn’t really use it. Jekyll looks great, especially since it is automagically set up on github. Hopefully I will post more because of it.

comments

chromium os posted on 19 June 2009

So I downloaded chromium os using google’s depot tools.

If webpages/extensions can safely run system calls, you might even be able to develop code on chromium os.

comments

Exherbo works! posted on 07 February 2009

Anyone following exherbo or Bryan Østergaard’s blog will have noticed the recent trend of user-centered updates. I decided it was indication enough to try and install exherbo this weekend. To my mild surprise, not only did everything work, but pretty much every important piece of software (to me) was already in the repositories - no importare or writing exheres just yet!

After writing a basic install checklist, I contacted Bryan and started writing some documentation that will hopefully be good enough to go official. The markdown formatted docs and other scripts are up on github. I also registered an ohloh account just for fun.

comments
Subscribe to RSS Feed