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
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.
// https://jonathan.is https://jedahan.com
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.
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
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
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
- 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
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
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
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
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!
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.
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!
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:
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
USER_CFLAGS = -I/usr/local/include
I participated in ArtHackDay: God Mode. The four projects I helped work on were
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.
Wherein a photoshop script built by Erik and Clement mashed up artwork of different dieties, pulled from my unofficial metropolitan museum api.
Wherein we provided an official unofficial app that had some very interesting backdoors…
Wherein a video may explain better than text
ArtHackDay was amazing, as always. Another one is coming up in April in Stockholm!
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?
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
posted on 15 June 2012
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.
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
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
karoake + dancing after balboa park after great talks
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
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
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 :)
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
- link out to relevant websites
- describe one cool think that happened
- split CCC to new post
For more details, check the pics, videos and travelog
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.
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.
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.
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.
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.
last day??? not last in SF but last for now.
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.
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.
…to be filled in when i can check back with my notes
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.
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.
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.
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!
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.
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.
Landed in SFO, took the BART to Tenderloin, checked into adelaide hostel
Had sushi with Ben for dinner - Toro is really, really good
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.
Tuesday description might be sunday actually. Or Saturdays description might be sunday. Must check 4S.
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.
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.
Exploratorium with Thomas and Alex, checked out the beach and went back to the hostel then mission district.
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!
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.
This is first a response to @JxA’s post about the OSHW Definition
Draft and second just general thoughts brewing post-OSHW
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.
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? )
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.
- 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
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
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.
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
- freebay / nomoola
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
- 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
- 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
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 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
- frog eyes
- slothbeat kids
- icarus himself
- 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…’
Its important to document work - really, really important. Here is a crappy
- Get pics from Prof. Jose
- Fix arduinome
- Build Problem Light (have a good chassis…)
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.
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
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!
- 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.
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.
pull # new for 2.1
remote fayth.ath.cx 1194
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"
keepalive 10 120
iptables -I FORWARD -j ACCEPT
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
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.
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!
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.
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
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
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.
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.
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
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.
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
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.
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.
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.