iMac Fish Tank Diary

This is my ongoing project about making an automated fish tank inside an old iMac G3.

January 9th: My local maker space is preparing to move, and I went to pillage some free stuff. Saw this baby on the shelf

Asked if I could have it … AND THEY SAID YES!!


I’ve decided that I want it to have an automatic fish feeder and temperature controller, that I can access from the web. Salt level and pH control are stretch goals !

Jake Harms is a pro at making iMac aquariums, and his instructions say that the hardest part is discharging the anode of the iMac CRT monitor.

January 18th: Bought an aquarium heater at PetSmart! I was worried the knob would be too hard for a servo to turn, but luckily the knob turns easily.

January 20: Went to Western Engineering Bots to consult hardware expert Andrew Simpson! Andrew says that I can use servo motors to control the temperature and feeder. He’s also convinced that the fish should tweet when they are hungry, so we add a photocell to our shopping list. The photocell can sit at the bottom of the food container so that it detects light when food levels are low. The plan is to connect the servos and the photocell to a Teensy Low Cost microcontroller, and connect that to a raspberry pi with a WiFi module. I buy the Teensy, Raspberry Pi, and photocell right away.

January 21: Bought an ethernet cable, thunderbolt to ethernet adaptor for my Macbook air, HDMI cable, and extra microUSB cable. The guys at Megacomputer really dig my project! They don’t know how to discharge the annode of a CRT monitor though.

January 27th: Robin buys yogurt so that I can use the cup for my fish feeder :D

February 3: Borrowed a caliper at Western Engineering Bots to measure my aquarium heater, so I can design a 3D printed part to hook it up to a servo

Andrew also uses my Pi’s New Out Of Box Software (NOOBS) to install the Raspbian operating system. He also installs the Teensyduino on my laptop so that I can control my Teensy with the Arduino IDE.

February 6: I’m using Tinkercad to design my 3D parts! I used to find Tinkercad very confusing to use until David from NYC Resistor taught me how to use the ruler tool. Now it’s my jam! Though sometimes if I copy and paste too many things and make my part too complicated the web app gets real laggy. Here’s the part that connects the servo arms to the aquarium heater. I’ve oriented it so that it requires minimal supports.

February 8: Designed the feeding disc! It should dispense food when it spins a full rotation. The edge of it is gonna stick out of the bottom of my yogurt cup fish food holder.

February 10: Eugen from WE Bots prints my parts for just $2! :D

I rip off the supports from the heater to servo connector only to find that the aquarium heater knob doesn’t fit inside. :( I guess you’re supposed to make holes *bigger* than the thing that goes inside.

On the bright side, Andrew lends me his electronics box!

The text on the masking tape reads: “Andrew’s Box of Badassery”

February 11: I made the aquarium knob hole in my connector 3mm bigger. Here’s hoping for a part that fits!

Also struggled and failed to connect to my Raspberry Pi to my laptop. I think my home WiFi has MAC filtering or something because I can’t share ethernet with my Pi. But it doesn’t connect even if I plug it into the router! I can’t connect on the school WiFi either because the security settings won’t let me share ethernet through my thunderbolt port, and SSH is disabled. Even if SSH were enabled, I would have to disconnect and reconnect my laptop to the WiFi until I got onto the same subnet by chance (denoted by the 3rd number in the IP address), since there’s a subnet mask. I manage to get my Pi onto the eduroam network (see these instructions and these instructions) and call it a day. I think I’ll make a hotspot with my phone and try to connect the laptop and Pi that way. Or I can have the Pi on school wifi and connect to it through internet-less ethernet? I don’t know. Computers are hard.

I plugged my Pi into my computer through ethernet and tried to SSH into all the things connected to my computer, in the hopes that one of them was the Pi. No dice.

February 12: Eugen prints my redesigned heater to servo connection on super short notice so I can take it with me to Toronto for reading week. It’s a bit loose, but I think it will do! Next time I’ll make holes 1mm bigger than the circumference of the part. This one would have been 1.5mm bigger.

February 13: My good friend Bryan TAKES APART THE ENTIRE IMAC. This is one of his childhood dreams come true.

The Jake Harms website says you have to discharge the anode before taking things apart, but we can’t reach the anode until the very end of the disassembly.

The anode is the black circular hump on the back

We ground a screwdriver and shove it into the anode hoping for sparks, but nothing happens. The iMac probably doesn’t have any charge left because it hasn’t been on for years.

Bryan thinks that we can use Processing to interface with the Teensy, and get that connected to a web app. He helps me solder the pins on to the Teensy.

February 14: I bring the iMac innards to Best Buy for recycling, keeping just the case.

Taken at the OCAD thesis space!

Ananda is an acrylic shaping pro! she makes some measurements and tells me she can use the vacuum seal tool at the OCAD studio to shape the screen among other things. We notice that the iMac fish tank aquariums online have a metal tray supporting the tank, which I’ve thrown out at the Best Buy! Tomorrow’s family day, but I’ll try to catch them on Tuesday when they open to see if the tray is still there.

I make an Instructable using pictures I took from the disassembly process with Bryan:

I think I will get the web app to write input into a text file, and have Processing read from that text file, to control the Teensy, just like what was done in this tutorial.

Bryan gives a lesson on how he likes to organize his breadboard. The red rail is connected to power, and the blue rail is connected to ground.

We look up the spec sheet for the servo, and figure out which Teensy pin is for what, and we’re in business!

Servo waves hello! This is the Sweep example script that comes with the Arduino IDE

February 16: I wake up early and go to the Best Buy, but they’ve already thrown out the iMac with the metal tray. Ananda says she can make another one for relatively cheap out of sheet metal.

Ananda and I go to Plastic World!

The acrylic is actually clear — the blue is a protective covering. This sheet cost about $100. If we don’t mess up, we can use half of it for the fish tank, and Ananda can use the other half for her mineral oil PC build

Ananda shared our iMac dismantling Instructable on Facebook, and her friend Nadine gave her a free WORKING iMac G3! She’s planning on putting Ubuntu on it for the OCAD Computer Club.

To send data from Arduino to Processing, we followed this Sparkfun tutorial. The Sparkfun tutorial says to use serial ports zero, 1, or 2, which didn’t work for me. If you run this line in the setup() part of the Processing code from the tutorial, you can see all your ports.


To check which of these ports Arduino is writing to, go to Tools > Serial Port

In my case the /dev/cu.usbmodem1184841 port was the forth port listed by Serial.list(), so this is how I assigned String portname in the Processing code (the ports are numbered starting from zero):

String portName = Serial.list()[3];

Now the Teensy can say hello to the Processing program!

And Processing can tell the Teensy to turn on its LED when I click!

Now that Processing and the Teensy can communicate, I want to make sure Processing can read from a text file. For now I’ll just see if I can set the speed at which the LED is blinking through the text file, but later I’ll be setting the aquarium temperature and telling Processing when to feed the fish.

I put my text files in a secret gist

I get super stumped trying to get Teensyduino to change the LED blink rate based on what Processing reads from the text file. It’s extra hard because there’s not a good way to print debug statements without using the same serial port that Processing is using to talk to the Teensy.

February 17: Ananda introduces me to her grOCAD friends! They are rebuilding their soda bottle plant system to have a new drip system made out of PVC piping. They also have a mini aquaponics farm!

Image from

Today we visit the metal shop!

We make a metal plate for the fish tank to stand on. We cut metal sheet with the metal shearing machine, use the bandsaw to cut the curve, and use a spinning sander and file to clean up the edges.

The plate is supported by two riveted metal bars bent with the bending machine, with slots made by the bandsaw and hacksaw. Here are all the dimensions of all the pieces:

Props to Viet for helping out and also being our hole punching champ.

February 18: Ivan says we can do everything through get requests instead of the janky text file idea! He’s gonna set up a server for me so that if I make a get request to, it will return a 1. The plan is that I can visit a different URL through Processing if the fish food needs to be refilled, and I can make periodic get requests to see if the temperature needs to be changed or the fish need to be fed.

In Processing, I go to Sketch > Import Library > Add Library, and add the HTTP Requests for Processing library. I follow the example code here to run it:

I get the janky text file reading to work — the key was to only write to the serial port when I needed to update something, rather than all the time.

Finally, at 11:44pm we can talk to the internet!!

We decide that this is how we want our fish tank activity log to look like

Every time temperature, food level, and whether or not someone is feeding the fish changes, the activity log is updated. The activity log is also updated when requests are sent to the hardware.

Ivan’s got a Digital Ocean server. He installs Postgres and is building the web app using Revel, a web framework in Go. Here is our database schema:

Ivan explains to me that to hook up the database to the web app, he puts the database info in his drivers folder. Every web framework has an init function that runs at the beginning, where the database gets connected to the web app.

February 19: Ivan gets the server to give me some test input :)

the four comma separated values are the angle of the heater servo, the food level, whether or not the fish need to be fed, and whether or not the latest request has been sent yet

February 24: I made a version of the heater to servo connection with a smaller hole (2mm bigger than the heater knob). I’m gonna get it printed at WEBots!

not too big, not to small, but juuuust right :D

I make some code to parse the server output and convert it into servo positions for the heater mechanism. It doesn’t do anything and needs some debugging.

April 19: Ivan has just finished his last final exam, and Ananda has finished her thesis!! I’m still working on my thesis, but today we are working on the fish tank project in preparation for the Hackaday Bring Your Hack meetup tomorrow, hosted at Hacklab Toronto!

Our shiny new server now has a secret password
Ivan is thinking really hard about the frequency of access requests.

Seeing as we last worked on the project 2 months ago, we are confused about what we were planning to do with our fish tank activity log, specifically the ‘request’ column. We figured out that when request = FALSE, that’s the web app telling the server that this is the change it wants to make, and when request = TRUE, it’s the fish tank hardware telling the server that it received and executed the change.

Ivan shows me again how to make a get request. I have to make a get request to the base URL, followed by a question mark, followed by the values of the different parameters, separated by an ampersand. This is for getting the state of the fish tank through Processing, to tell the Arduino if the temperature needs to be changed, or the fish need to be fed.

Formatting the URL for a get request to our server

April 20: Yesterday Ivan made a getstate URL for me to access, so that Processing can check if the Arduino needs to move any of the servos. Today Ivan made a updatestate URL so that Processing can tell the server if the food container is empty.

Ivan gives me some pseudocode for Processing

We go to the Hackaday Bring Your Hack meetup at Hacklab Toronto and do a lightning talk! A couple people come up to us afterwards to ask questions and say hi. One man tells me I should watch out for food clumping. Maybe we could incorporate a stirrer in the food disk mechanism so that the food is stirred every time it’s dispensed to prevent clumping when it’s humid.

Our lightning talk at the Hackaday Bring Your Hack Meetup! Photocred goes to Janine :) Ananda is sitting down under the ladder, and Bryan and I are standing.

Ananda also brought the constructed acrylic tank!! She has included some acrylic tubes and a nice fitted hole so we can implement the self cleaning mechanism from the no clean aquarium I saw on Kickstarter.

June 20: I’ve defended my thesis! I still have to do some revisions, but they’re not technically due until August.

This is the case as it is right now. I had thought that I wanted to swap out the flat screen for a curved screen before I sealed it, but now that I look at it again, I think the flat screen actually looks fine. The frame of the screen is actually tilted back, such that if I made a fitted curved screen, I’d have to tilt the rest of the tank back, which would make it less stable.

Before I decided this, I purchased an extra piece of acrylic, and got access to a heat gun! I think I might try to curve it by hand. The next iteration of the fish tank should have a proper curved screen.

The best way to curve the screen is probably to cover the original CRT monitor of the iMac with tinfoil and use a heat gun to drape the acrylic over it. I wonder if I can create a similar effect by heating the acrylic, bending it a little on both dimensions, and then clamping it to the plastic curved frame as it cools. I think I’ll just save this for when I get another iMac though — this way I can figure out the dimensions of the tank with the original metal tray, and other people will be able to reuse our design.

The next step is to waterproof the tank with acrylic aquarium silicon!

August 31: In June right after my last fish tank diary entry I did the worst silicon caulking job ever because I was impatient and didn’t have a caulking gun on hand, and then later I dropped the tank and the bank panel cracked and I was really sad. Plus I couldn’t figure out how to bring the iMac case on the plane with me to San Francisco.

On August 1 I posted on Bunz Trading Zone San Francisco, and on August 14 a wonderful man named Russell drove to ALL THE WAY to San Francisco from the Santa Cruz Mountains to bring me not one but TWO iMac G3s!!

Two matching keyboards and one mouse!!!

I’ve also been hanging around a lot at the Noisebridge makerspace. They have a lovely 100 watt laser cutter, and I cut a new back panel for my tank. I scraped most of my terrible caulking job off, and bought some Goo Gone for the rest. After cleaning it out I’ll use Weld-On to replace the back panel. Luckily there is a lovely TAP Plastics store on my way home from work in this city, so I’ll have access to sheet acrylic.

September 16: I realized that my tank was cracked on the bottom in two different places. I think it’s unsalvageable now, so I’m going to make a new one with a curved screen. I bought a 4ft x 1ft piece of 1/4 inch clear acrylic sheet ($40) at TAP Plastics plus a yard of white cotton flannel ($5) at Fabric Outlet.


I live at Mission:Home ( and when I started disassembling the iMac, some housemates pitched in to help. We almost completely disassembled one. The only thing remaining is to take this metal plate off the CRT monitor.

I realized later that I need it — you can see that metal plate in pictures of other people’s aquariums. It sits on top of the other metal tray.

This is Jake Harms’ iMac aquarium. Picture from

I’ll pull it off later when I’m less tired. It’s held on right now by some plastic screws. After that I’ll figure out dimensions and angles and size out all the pieces. I’m thinking that the front and sides can all be one piece. After I cut it out with the laser cutter, I’ll heat it up (in an oven? with a heat gun? Method TBD), and then mold it over the CRT monitor curve. The back and the bottom will be flat and attached with Weldon.

Hopefully someone has one of those heat up things for bending acrylic.

September 18: I cut all the plastic screws connecting the metal plate with my dremel.

September 19: I unscrewed all the metal screws connecting the metal plate with my dremel. I also had to cut these wires:

I had to cut the two wires going into the metal plate.
Bottom side of the metal plate is on the left, top side is on the right. Note the wires sticking out of the bottom — that circuit board is riveted and soldered to the metal plate.

Next step is to try to use the dremel to cut off the metal bits sticking up out of the top, so that a tank can lie flat over it.

September 21: I cut off the metal bits sticking up!

I got really excited that the dremel can cut metal without a special bit and posted this photo on Facebook. It has 34 likes! But it’s actually probably unsafe because I didn’t use a special metal-capable cutting disk. If you are using a dremel you should wear some form of glasses to protect your eyes.

Took some measurements.

Gotta make an Inkscape SVG file for a laser cut cardboard mockup to test the dimensions.

September 26:

I made the first cardboard tank prototype using Inkscape and the Noisebridge laser cutter.

On the way home from Noisebridge two drunk guys with a can of black spray paint started talking to me. One offered to make some art on my box, and that was cool, but then he asked me what colour my underwear was and was really insistent on guessing the color until his friend pulled him away. :(

Also his art sucks. It’s CM1 for CaveMan1. I guess CaveMan was already taken?

The back edge is a little too wide.

The overly wide back edge. See how the cardboard sits on top of the metal edge sticking up?

Also the front edge needs to be leaned back more

The case wouldn’t close

And the back edge needs to be more vertical.

Horizontal edge for reference. I think if the back panel leans back like that it’ll be harder to waterproof it properly since the weight will be distributed weirdly.

Plus I have to dremel off these two metal bits sticking up.

September 19: I realize that I also need a hole for the self watering aspect. I think I’ll get 1/2 inch diameter vinyl tubing (3/8 inch interior diameter).

Version 2 with all the adjustments + a hole for siphoning dirty water

Once I am happy with my cardboard prototype, I should just cut the large piece in acrylic, bend it and check what size the bottom and back need to be (by comparing to the prototype) and then cutting the bottom and back in acrylic. Then I can figure out how much I need to round the front bottom corners on the bottom piece.

September 30: Laser cut prototype version 2!

So nice that it fits completely inside the case now. I angled the front face back too much though.

I think it would be good to make the back go back another half inch too, so the fish has more room.

Plus, I bought the vinyl tubing today!

It fits snugly in the hole :)

Hoping the next cardboard prototype will be the one!

October 1: Third time’s the charm, right? I made my version 3 cardboard prototype in Inkscape. It looks the same as the previous one in a screenshot so I won’t show it here. I do a bunch of trignometry each time I make a new version to figure out the positions of all the corners

I think the front still leans a little too far back.

I think I’ll push it forward 1.5 degrees. I made a new Inkscape file for version 4.

October 2: I made a new prototype with the front screen angle 1.5 degrees wider, but it still looks like it’s not enough! I was really confused because now the angle is 73.5 degrees and the very first prototype was 75 degrees and stuck out a LOT. Maybe it’s because I never ended up cutting off these two pieces of metal, which got in the way under my first prototype, but haven’t for my subsequent prototypes.

Here you can see the angle looking off. I’ll put it forward half a degree.

October 4: I can’t spell but this is the one ❤

Looking for an acrylic bending tool. I found this great instructable!

I posted on Bunz Trading Zone San Francisco on October 2nd looking for a toaster oven (working or broken!) but nobody’s responded. I just posted in my work #social channel in Slack too. I need it for the heating elements.

October 14: I found someone with a plastic heating strip!! His name is Peter and I met him at a Highway1 hardware meet up. He also helps out with Fixit Clinic which I’m really excited about!!! I want to learn to fix all the things :)

Except I just realized that I can’t make the next one because I’m going to this hackathon:

I’m hoping to have the acrylic tank done before the hackathon and make a cool aquaponics project!! Alternatively I could just work on the electronics for the fish tank project there.

This is the strip that Peter has: I didn’t realize that these were a thing! I was looking at more expensive metal acrylic bending tools. Maybe I will buy one. There’s a slightly cheaper version here:

Peter is going to be in San Francisco on Wednesday, so I’ll try to laser cut and bend my front-and-sides piece this weekend! I checked the dimensions I decided on, and they’re too small for me to form the acrylic by bending it around the monitor curve. Instead I might have to prop up some wood around the monitor and then mold the acrylic on that, such that place where the sides meet the front will be a flat instead of curved. Maybe this can be done by lasering a hole in some wood, such that the wood can sit on the monitor.

October 16: I had all these big plans for today but then it was raining when I was carrying my wood to Noisebridge and my wood became wet on one side and bent. I put a heavy thing on it to flatten it out while it dries.

straight from the Noisebridge hack shelves

October 17: Today I’m making the wooden frame that goes around the monitor for the plastic to be molded on top of!

I checked on my wood in the morning and of course it was bent with the sides going up. So I put new weights on it.
Here are my cardboard prototypes to get the frame size right. I bought this really nice brush marker from Daiso for $1.50 and am trying to learn to write nicely with it.
Here is the final frame!

The monitor hole is a bit wider than I wanted. I was hoping the wood would fit snugly enough on the sides that I could make the sides flush with the wood. The size of my tank front is actually a little less wide than the monitor. But I’ll just bend it over the monitor like this and then hopefully the sides will bend find when I get the plastic heat strip.

With the cotton flannel draped over it. The cotton goes under the hot plastic.

When I do the molding I’m planning on pushing the part of the wood above the top of the monitor down, such that the bottom of the monitor is flush with the wood. The bottom edge needs to be flush with the bottom panel for attachment later.

Noticed this on my acrylic today. Future note to self: cut the acrylic with the back protective sheet on, so it doesn’t get scratched by the metal bed of the laser cutter like this.
My stuff doesn’t fit in my locker, so I’m just going to leave it here. I hope no one takes it.
This is me cutting the wires that attach the remaining electronics to the monitor. My friend Cinna said she could use it for art! I was scared of getting electrocuted by the anode (which is probably being over paranoid since the computer has been off for years), so I grounded the wire cutter like this.

October 20: I am ready to heat gun the plastic onto the curve of the screen!

I laser cut some one inch wide wooden strips to glue on the bottom so that the plastic can sit on it.
Taping it down so it doesn’t move.
pew pew pew
The plastic is starting to bend!
As the plastic bends, it starts slipping off the wooden block.
Added more laser cut pieces to the wooden block.
Heat gun casualty! I think the red one overheated or something and stopped working. :(
After 3 hours the plastic appears to be sufficiently flush with the screen curve.

That took a long time! But it was fun because I’d never used a heat gun before and also I could read articles about Donald Trump and why people support him on my phone while using the heat gun with my other hand.

I think a more correct way to do this is to find someplace with an oven and a vacuum former, CNC the screen curve onto some foam, and vacuum form the plastic after it’s been heated up in the oven.

October 21: This is the plastic strip heater that Peter lent to me!

Pretty cool! I think it’s only $50 on Amazon.
Heat strip in action!
I used a 1/2 inch piece of wood to help me bend it on the line.
My version 5 cardboard template is used to help me get the right angle. I actually have the angle slightly too acute.
The bent plastic!

There is one very important problem. The bottom edge is not flat! I won’t be able to weld these parts of the tank onto the bottom without a flat edge :(

will it melt?

I’m leaving it on the heat strip for a while to see if it will melt flat, but even if the plastic all ends up touching on the bottom edge I don’t think I’ll be able to get the flatness I need to get a good seal when I attach the bottom piece. I’ll have to do it again. When I set up my molding frame I intended to do it so that the bottom edge of the wood was flush with the bottom of the screen, but this resulted in dips on the bottom left and right corners of the plastic sheet. Next time I’ll have the screen raised completely off the edge of the wood frame and just make the plastic a nice curve. This is the way the top edge was done and it looks nice and flat.

October 22: Bought another piece of plastic to redo the tank front and sides. It’s 3ft by 1ft, and costs $30.

I’ve been thinking about what order to connect the pieces in. This is what I decided:

  1. Form and bend the front and sides
  2. Use the heat strip to flatten the edges of the piece that are going to be connected to the back. They need to be able to sit flush on a flat surface.
  3. Use Weld-on to connect the back piece
  4. Use the heat strip to flatten the bottom edge of the back piece so that it sits flush on a flat surface with everything else.
  5. Use Weld-on to connect the bottom piece.

I was super impatient about the heat gun stuff today and the screen does not have a nice curve. Instead it has a weird lump on the middle.

Next time I don’t think I’ll curve the screen. Or if I curve it I’ll just do a vertical curve and not both the vertical and horizontal curves. I think it only took 30 mins with the heat gun to get a nice vertical curve.

October 25: Not curving the screen! Also adding plastic on the bottom!

Next step is to use the heat strip to melt the plastic on the bottom and back edges flat. I feel like I should make a 3D model of the monitor shape in TinkerCAD or something before I throw it out, in case I get access to a oven and vacuum former and CNC mill-able vacuum foam for the next iteration.

I just switched from a short term to a long term sublease for my place, which saves me $120 a month and allows me to mentally justify rampant prototyping with $10 per square foot acrylic. I got the plastic for this last piece for $21 though instead of $30 because it was in the off cuts bin.

I also bought some 800 grit sanding paper in case I need to sand off the texture of the heat strip that appears on melted plastic.

October 26: Here goes melting

I definitely made the bottom stick out too much. It’s taking hours. I think 2mm would have been fine instead of 4.

Okay it’s 30 minutes past midnight and it’s still not quite flat, but at least it’s making progress. One other evening should do it. :P

October 31: I finish flattening the front bottom edge, after another hour or two on the heat strip. Next are the back side edges.

I think these each took about 30–45 minutes.

After both of these are flattened, it’s time to weld-on the back. I found this nifty guide ( and decided to go with the pin method.

Applicator and off brand Weld-on. Blake from Noisebridge was super kind and helped me 1) open the cap of the weld-on and 2) poke these two holes in the under layer so I could get the stuff out.
wiping away the excess. I should have been faster with this on the other side — there are gooey drips on the edge there.

I put too much weld-on so you can see the marks left from the pins. I’ll try to be less heavy handed when I do the bottom. I think I’ll also not stick the pins in so far.

The bond! The parts on the left side that look like they haven’t been bonded properly are just the color of weld-on that’s seeped under the back. After unsticking that from the table the left side looks similar to the right side.

I’m going to this Urban Ag Tech meetup ( tomorrow, but hopefully I’ll have some time to melt the back bottom edge flat and weld-on the bottom piece late tomorrow night.

I’m googling the silicon sealant to see how long it needs to cure before it’s fish safe, and it turns out there’s huge controversy about using silicon on acrylic and most people say you don’t need it at all. My weld-on says it’ll take 72 hours to be at 80% strength, so if I bond the bottom tomorrow it’ll be at 80% strength for the hackathon, and I can leak-test it Friday night when I meet with my team. I’m going to skip the silicon step and hope the acrylic bond is water tight.

November 1: Urban AgTech meet-up was cool! One guy runs a business selling solar to companies ( Except the solar pays for itself and he helps them set up the financing, and the company also saves money on electricity, so everyone wins. The rest of them work on Food Computer 2.0 (

At Noisebridge I melt the back bottom edge flat.

Unfortunately the bends that I made make the front wider than 12 inches. I forgot that I had added in 0.5 inches to account for the acrylic being 1/4 inch thick. I’ll have to buy a wider piece of plastic for the bottom piece.

I adjusted the bottom so that it sticks out only 2mm instead of 4, and I arranged all the pieces on a 4ft x 1ft page in Inkscape.

November 2: Quick calculation: If you don’t have a laser cutter that can fit a 4x1ft piece of acrylic, you’ll have to have two pieces of acrylic 29'x10' and 21'x12'. Another number I need to get from my notebook is the length of the top of the sides (so people know where to put the bend).

This is the side piece. The top length is 7.5 inches!

Alright! I’m checking my Inkscape file and you can do the project with one 1ft x 4ft piece, two pieces (29"x10" and 21"x10"), or three pieces (29"x10" and 13"x9" and 8"x10"). I find that you can save 25% of the cost of the plastic if you can find the smaller pieces in the offcuts bin of your local plastic store.

Filling the cracks in the tank

Leak testing begins!

November 3: Peter comes to Noisebridge for the first time! He helps me set up some self watering buckets. We based our design off this instructable:, except we don’t have the plastic baskets to hold the wicking material, so we just make the basket out of the wicking material itself. We cut a square ring out of the bottom of our plant bucket, and then we sew a piece of 100% cotton cloth so that one end is a basket. The basket hangs out the middle of the ring, and the rest of the cotton cloth hangs out the outside of the ring.

November 4: I got a fish at Petco! I also got stress coat to get chlorine out of tap water, and nitrifying bacteria. The fish produces ammonia waste (nitrates) which has to be reduced to nitrites by bacteria before it becomes bioavailable for the plants.

I realized as I was falling asleep last night that if Peter and I had used rounded corners for our self watering bucket, the holes on the bottom where soil is exposed will be smaller, and soil will be less likely to fall out. I designed a standardized hole shape in Inkscape, and laser cut the shape onto cardstock to use it as a template.

3.5x3.5 inches.

I’ve had this space bucket running growing thai hot peppers, and it has too many plants inside for one bucket. We repotted the plants into the smaller buckets.

My hackathon team (David, Peter, Artur, and Josh) meet up for the first time all together. We decide that for the hackathon we can set up the following automatic controls: temperature, lights (Josh has a relay), water flow/pump control, camera (we could stream it to our webapp and use it to check on our plants), and automatic fish feeding.

November 5: There is a best documentation prize at this hackathon. I’ll publish my instructables this weekend. I think I’ll change the bottom front edge to stick out 3mm instead of 2mm (I had reduced it from 4), so there’s more plastic to make the flat edge. But maybe it doesn’t matter because I have the thicker tube of Weld-on 16 now, which works fine even if the edges are not quite flush.

Our hackathon set up!

We get an Intel Edison and Seeedstudio Grove indoor environment kit with a bunch of sensors and stuff!

I publish some instructables for the self watering plastic buckets and the iMac fish tank and they get almost instantly featured!!

I have a totally stacked hackathon team. Artur works on the web app, Peter sets up the Edison programming with output to pins with Young Jun, and Young Jun, Peter, and I all work on the hardware.

Young Jun and Peter make this really nice temperature monitoring set up! The screen displays the temperature, and the backlight goes red if it’s too hot and blue if it’s too cold.

The display goes red because Young Jun’s body temperature is too hot for fishes.

This is Josh. He came and worked on this super nice 3D model for a 3D printed automatic fish feeder for hours, and then left, never to return. Later he told me he wanted to get a 3D printer! I volunteered to be his first betta tester.

Josh went to art school

November 6: Young Jun and I FINALLY get the temperature control and automatic fish feeder working at 3 and 6am respectively. For the feeder I ended up using my disc sideways. The notch is totally too big and this fish is going to be overfed this weekend. There’s clear packing tape between the moving parts that kind of acts like a brush so food doesn’t just constantly fall out of the cracks. The temperature control mechanism is as I originally designed, but we had to stabilize everything inside a plastic bottle, or else things would buckle when the servo turned.

While I’m sleeping, Young Jun and Peter get the pump programatically hooked up!

Peter and I document how to connect the Grove relay to any pluggable electronic: This gives us automatic lights and ventilation!

The lights and ventilation are mounted inside the lid of my space bucket, from another project. Special thanks to Yan Yan for the USB fan, which he gifted to me!

This brings us to six functions! Temperature monitoring, fish feeding, temperature control, pump, lights, and ventilation. Artur has made an incredible web app where you can manually turn things on and off, but also schedule them. A timer displays when the next state change is going to happen.

The web app is shown on Artur’s screen! This is an older version — we added so many features that Artur had to put the controls into 2 columns on his web page instead of one.

Artur and Peter port the web app code so that EVERYTHING runs on the Intel Edison. This is so much less complicated than the crazy Arduino — Raspberry Pi — Processing — External web server set I was trying to debug before. All our code is open source:

We win so many prizes! Most technically challenging, best use of fish (BEST PRIZE CATEGORY EVER), and a prize for tweeting. Hurrah! Plus we get to take the Edison and Grove kit home.