Tuesday, December 21, 2010

Coordinating efforts towards free firmware implementations

Some months ago I have started to mantain a wikipage at LibrePlanet.org with a list of device drivers that require non-free firmware. For each device I created a wiki page to aggregate technical information about the device in order to make it easier for us to develop free firmware.

Then, during November I have travelled around Europe and have had the opportunity to hack on a laser projector in the Prague hackerspace. The special thing about it is that we developed free software for it but we still rely on the binary-only firmware to startup the device. And I was annoyed by that so I continued investigating and ended up discovering that the device has an EZUSB (which is a 8051 microcontroller with native hardware support for USB communication). Then I have found the datasheet for this microcontroller and started to study it. I even used a disassembler in order to inspect the firmware and things started making sense, but I got concerned about the legality of reusing code from this disassembly process.

At that point I figured out that I should check the wiki page again to see which other devices are using the same microcontroller because that was valuable knowledge that I had just acquired that could be used to free some firmware. So I searched for "ezusb" in the kernel source code and found 3 devices that also use it. One of these devices (DABUSB/TerraTec-DrBox1: a digital radio receiver) has its binary firmware distributed under copyright terms that allow free, derivative works:

* Copyright (C) 1999 BayCom GmbH
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that redistributions of source
* code retain the above copyright notice and this comment without
* modification.

So this means that by disassembling the firmware, the resulting source code is free. I've done it and now we just have to understand the code and give nice names to the variables and routines in order to have a free firmware for the device. I've been doing it yesterday and today but then I stopped for a while and started to question myself whether it is actually useful work. I am concerned that this is a device released 11 years ago and I don't know anybody who uses it nowadays. So I don't know what is the real demand of support for this specific device.

What I mean is that we need better understanding of the meaning of the LinuxLibre blacklist of devices. We need to figure out a way to sort these devices in a relevance order so that we can focus our reverse engineering efforts on the most critical ones. I suggest that we start a working group to define the criteria for sorting that list and continue this work with some better strategies. One of the possible ways to sort these devices by relevance would be to build statistics based on collecting hardware information of libre-distro users.

I hope someday we'll be providing fixes to the issues raised by the LinuxLibre project instead of simply removing functionality. I think that this perception that lots of people have of LinuxLibre as a less functional, technically inferior alternative to Linux is a real danger. I know that we should not judge software only by its technical aspects. Nevertheless, this is still no good advertising for LinuxLibre.

I'd like to hear your opinions about these questions.

Happy Hacking,
Felipe Sanches

Tuesday, December 14, 2010

Brmlab & Lasers!

I just got back to my home in Brazil yesterday. Travelling in Europe was great and I'd like to share here the details of some cool things I've done in my last week there.

My last stop in Europe was Prague and there was a special reason for that. Three months ago I received an email from Cestmir Houska, one of the members of Brmlab - the Prague hackerspace. Cestmir was contacting me because he got inspired by my photos and blogposts about the Party Land Remake project. He told me that building a pinball machine was one of his dreams from childhood (which happens to be my case also) and that he wanted to keep in contact so that we can help each other in making it become a reality.

Since we are both members of recently inaugurated hackerspaces we figured out that our pinball projects could be understood as a healthy collaboration between them, mutually. So we are planning to design, document and simultaneously build two pinball machines: one in Garoa Hacker Clube, in São Paulo, Brazil; and the other one in Brmlab, in Prague, Czech Republic.

So, since I had the opportunity to visit Europe again due to the Mozilla Drumbeat Festival in Barcelona, I decided to schedule a visit to Prague (which resulted in my visit to Metalab in Vienna also).

In one of the days that I was there at Brmlab, one guy showed me his personal project: a homebrew laser projector. It is composed of 3 lasers (Red, Green and Blue) and a pair of mirrors that are rotated by motors so that the laser beam aims at the wall in different possible angles. By properly controlling those lasers and mirrors, one can draw colorful shapes on the wall. The effect is even more interesting if you add some fog to the room :-)

So I promptly asked him what software he was using to run the laser projector and the answer was: iShow, a proprietary software. I still inquired about free software implementations of drivers or controlling software but he was not aware of any existent efforts. So we decided to start doing that right away. We installed an USB sniffer on his Windows machine and started reverse engineering the protocol used by the device. In half an hour we had our first line drawn by sending URBs through a python script running on my GNU/Linux. Then we spent more 3 or 4 days improving the python module (all source code is in my personal svn repository at Google Code) and implementing some demos:


We wanted to display the Brmlab logo, so I decided to do that by implementing a simple SVG loader. It parses the SVG file and reads the d attribute of all tags. Then each path command from the SVG path description results in the respective drawing routines for our laser device.

The result can be seen in this photo:

Then I remembered GML! Grafitti Markup Language is an XML specification for storing grafitti data. That basically means x,y,z and time coordinates. I have used a python module called PyGML to render some GML files with our laser.

Another relevant data format is called ILDA. It is a file format for storing laser-show animations. It was developed by the International Laser Display Association (which explains the acronym ILDA). Using this python module we got some ILDA animations running on our projector :-)

A clock!

This is a simple analog clock displaying the current local time.

A pong game

Cestmir has implemented a pong game using the pygame library and rendering on the laser display.

When we decided to display scores in the game, we faced the challenge of creating a font for our laser display and font rendering routines. The first 3 charachteres (0, 1 and 2) were designed by imagining the shapes and manually inputing the values of the coordinates of the bezier control points for the glyphs. At that point we decided we should implement a tool... (more on that topic in a future blogpost)

A server for sharing the display

While we were working on this project it became clear that the laser was a scarce resource. We had 4 people hacking on it and it was starting to become common to hear the sentence "Can I use the laser now?" (same sentence I've heard a lot in Vienna a week earlier, but refering to a significantly different machine...).

It reminded me of stories about the early days in computing when people disputed CPU time in universities and research institutes computers. And then multi-user time-sharing systems were developed. So I decided to develop something analogous for our laser display: a server that collects rendering requests from clients and manages to merge them on the real device.

The server receives commands through telnet and manages individual double buffering for each connected user. When a user disconnects, only his/her portion of the drawing disappears from the screen. I also adapted our python module so that it would delegate rendering to a remote server when you pass an IP address to its contructor; otherwise it would render in a local device connected to the USB bus.

That way we could have several users rendering content to the display simultaneously. One possible use of that would be running a script that draws a clock all the time on a corner of the display screen. Here is an example of that (the clock script and another scipt drawing some bezier curves been run remotely by two different users simultaneously):


Several people from the Brmlab hackerspace will attend the 27th Chaos Communication Congress (27C3) and they are planning to present the laser projector there!

Friday, December 03, 2010

Pinball Hacking in Vienna

I am currently in Vienna, Austria, visiting the Metalab Hackerspace. They have a very nice EPILOG 36EXT laser cutter there and I couldn't avoid using it to cut more parts for my pinball project! So I focused on the upper playfield (ramps, loops, P-U-K-E platform...).

This is what those parts are supposed to look like in the end:

And you can see how they look like now in these photos:

I still need to apply artwork to these acrylic parts. The stickers that I'll use in the project are these:

I also presented a speech about the project trying to get more people interested in hacking on pinball machines DIY manufacturing fun.

Then I also got the opportunity to help on the Roböxotica festival by laser-cutting the wood trophies for the cocktail robots contest!

Friday, November 12, 2010

Another trip to Europe

I am in Europe again! I arrived here las November 2nd to attend the Mozilla Drumbeat Festival, and now I am touring around until December 12th.

In Barcelona I had the pleasure of visiting La Sagrada Familia. It is an amazing place, even for a non-religious person like me. I also met Dave and we worked a bit more on our Firefox addon.

I also visited the Barcelona FabLab and discovered that there's a chance we might have a FabLab in University of São Paulo in the near future. The FabLab was filled with wood/acrylic sculptures of various complex shapes that were built by employing digital fabrication techniques and tools such as laser cutters, 3d printers and CNC machines. Very exciting!

During my stay in Barcelona I was hosted by a very friendly couple in the Valldoreix neighbourhood. Train rides to Barcelona took something around 40 minutes from there.

Now I am in Nice, France. I was planning to visit a Torino hackerspace but got not much response from those guys. So I changed plans and decided to go directly to Milano, instead. But the trains would stop in Nice, France. So I contacted the Nice hackerspace (NICELAB) and discovered that they do not exist yet! Their first meeting with the purpose of organizing a hackerspace was exactly in the same night I would be visiting the city (yesterday night) :-D!!! So I joined them at a bar for some interesting conversation and then slept in the house of one of them. Today I am going to get a train to Milano.

While travelling from Barcelona to Nice, I passed by a train station called Beziérs. As I am deeply involved in vector graphics software development, I could not avoid getting a picture. For a while I wondered whether the name could have some real relation with the beziér curves, but I think that it is just a coincidence.

Monday, September 20, 2010

New York, September 2010

Tonight I'm flying to New York city and I'll stay there until October 3rd.

I'm going to attend the Open Video Conference, the Open Subtitles Design Summit, the Maker Faire and I'll try to visit the NYCResistor hackerspace. I will also participate in a party to "celebrate" the 15 years of the release of "Hackers", the movie.

NYC Skyline by =sp1te

Tuesday, July 06, 2010

My few last days in Europe were spent attending a demoparty in
Maaseik, Belgium. I always wanted to be in a demoparty and this was my
first opportunity to do so. I didn't want to simply attend it. I
wanted to actually release a demo! My choice of development platform
was the Phillips Videopac G7000 (european name), also known as
Magnavox Odyssey² (in USA). In Brazil it was released as "Odyssey" since the original one has never been released here, so the number 2 in the name would not make much sense in the brazilian market.

I've had one of these in Brazil since my childhood, but I did not bring
it with me to my Europe trip (as I didn't want to risk loosing it or
damaging it for whatever reason). Because of that I tried to buy a
Videopac on eBay and have it delivered to Brussels, where my
brazillian friend Leandro Lameiro lives nowadays, so that we could
develop and showcase the demo in a real machine during Rewired 2010.
But then, unfortunately, the french guy who sold me a Phillips c52
didn't send the item at all. Also, I have contacted Sören Gust,
trying to buy a development cartridge from him, but he didn't have a
spare one to sell. I though about building one myself in some european
hackerspace (I have visited many of them during june), but then the
fact that the real console was not delivered made me give up and
simply focus on emulator-based development.

I knew that it would potentially not be the same as developing in the
real machine, but I needed to release something at the demoparty and I
wanted to do something wild instead of simply making a PC demo. I have
never coded demos before, so I was not expecting to do something
awesome. So, my strategy was to do something interesting based on the
novelty of it instead of technical sophistication. Indeed, this was
(as far as I can tell) the first demo ever for the Videopac/Odyssey² !

I was happy when the emulator properly rendered the results that I
intended to see when I implemented the Video Display Controller (VDC)
trick to change charactere configuration in the middle of the screen
in order to overcome the hardware restriction of only being able to
use only 12 characteres oncreen at a given time. Initially I expected
that the emulator would simply not emulate the trick at all. When it
showed up, I though it was nice and I supposed that it was the correct
emulation. My friend Leandro Lameiro have commented about the issue of
overlapping characteres (that he had read about in some videopac
forum) but we had no way to test it on a real machine to be sure.

I was also interested in releasing the demo as free software, because
I am not happy with the overall secrecy aspect of the demoscene. I
would like to encourage more people to learn how do code demos and
then I think it is essential that we release our source codes and let
people learn! So, now that Mark Guttenbrunner (a.k.a. "manopac") has contacted me by email pointing out this
on the Netherlands Videopac Forum, it makes me really proud
to know that the source code was actually checked out by at least one
person who found it useful.

I'd like to give a brief explanation of the name of our demoscene group.
When we were planning our participation in this demoparty we have
submited an entry in their website informing our name & country so
that the organizers and other people in the scene could have a general
idea of who would attend. This form obligated us to provide a group
name. But I had no group! I noticed that other people (probably in the
same context) had simply provided "-" as the group name (a dash
charactere). So I just followed the pattern. Then, in the party I have
met Niels van Dijkhuizen (NebulaH) who joined me and my brazilian
friend Leandro Lameiro and we decided to release the demo under the
group name "DashCrew" :-)

There were 7 demos competing at Rewired and our demo ranked 3rd :-D !!!

The entry for this demo at pouet.net is here.

Sunday, June 13, 2010

My talk about GNU LibreDWG at LGM2010

Here is the video recording (with slides) of my talk at the Libre Graphics Meeting 2010 in Brussels, Belgium.

You can also see the other talks we had in the conference this year. They are all available online.

Saturday, May 22, 2010

Europe trip - SIGINT 2010 - Germany

Yesterday I have arrived in Cologne, Germany. I'll spend 38 days in Europe visiting a friend in Belgium and attending 2 conferences (SIGINT 2010 and Libre Graphics Meeting 2010) and a demoparty (Rewired 2010).

Yesterday at night I have visited the C4 hacker space (a.k.a. Chaos Computer Club Cologne), which is the organizer of the event. There I met some of the guys who are organizing SIGINT and then we went to a bar together. The conference starts today and, since I do not speak german and just a few speeches will be in english, I think that I will spend most of my time in the conference talking to people instead of watching talks.

Sunday, May 02, 2010

Mozilla is doubling donations to Universal Subtitles!

During the last 6 months I've been working with the Participatory Culture Foundation , creating a collaborative subtitling system for online video. Some closer friends might remember experimental prototypes I've been implementing with Greasemonkey some years ago, just for fun.

Now, Mozilla is raising funds for our project and they will match every donation dollar-for-dollar up to US$ 25,000!

I am really proud of the work we've been doing and I hope that our subtitling system can foster a good community of collaborators so that we can improve accessibility of online video.

Please donate now — any amount you give will be doubled!

Tuesday, April 27, 2010

Free software EDA tools

At last I've decided to learn how to use free software EDA tools in order to design a controller board to my pinball machine. I spent some time reading tutorials on gschem and pcb (tools of the gEDA suite) and I have had some very basic issues with these tools, which makes me believe that very few people are actually using them. Then I entered the #geda irc channel at freenode to ask for some help.
My first surprise was that freenode redirects from #geda to ##pcb, with the following welcome message:
"The topic for ##pcb is: Support and discussion for PCB design and prototyping:- CAD tools, Eagle, KiCad, FreePCB, gEDA, Board layout and fabrication techniques. Please keep it polite, reasonable, constructive. | news news news: eagle non-profit now does 6 layers"

This has annoyed me. This probably means that somebody decided that communities should be merged regardless of the tools being free or non-free software. By this welcome message and also based on some conversation I've had in this irc channel I noticed that there is a strong bias towards usage of Eagle, a proprietary tool. And I also noticed that the free tools are not used much because they are often considered technically inferior. Well... without users I think it is harder to make a tool better.

One of my concerns is that, if Eagle community is strong and gEDA community is weak, then putting them together in the same irc channel has the effect of not allowing gEDA to grow at all. I think that it is important for a community to have its own irc channel even if it's only gonna have 2 or 3 people hanging there.

Off course there are other places to form communities around, such as mailing lists. But what I am really concerned is about this general trend of simply using Eagle for designing circuits and, more generally, about the consequences of the existence and popularity of such gratis/non-free tools that run on GNU/Linux, regarding the development of their free alternatives.

Given that there is a lot of people trying to stretch the free software movement ideas towards hardware development, why don't they use the free tools at all? Perhaps these people are not really talking about freedom...

Wednesday, April 21, 2010

Recent improvements on my pinball project

Last Sunday morning, Fabricio Zuardi and his friend "Ace of Spades" came to visit my place to check out the pinball machine and later, at night, we gathered with some other geeks to discuss homebrew 3d printers and related topics while drinking draft beer.

Fabricio took some pictures which he's just published in his Flickr account. The first photo in this post is CC BY Fabricio Zuardi

I have spent part of these last few days installing the decorative acrylics that I mentioned in my previous post. I have also installed some structural parts in the bottom portion of the playfield.

Months ago parts of my camping tent were stolen during Campus Party, but I saved its metal supporting stakes because I felt they would be somehow useful. Indeed, I have found a good way of using it in the pinball machine. By bending it with the help of pliers, I've transformed it into a separator that is placed between inlane and outlane. I think that the result is perfect!

There are some more photos at my flickr page.

Saturday, April 17, 2010

More decorative acrylic parts for my pinball machine

Months ago I have made the decorative acrylic parts for the upper loop of the machine. Yesterday I have ordered another batch of laser-cut acrylics. This time for the bottom part of the playfield.

In the following video I am using glue to add artwork to the acrylic parts:

And in this other video, as a final touch, I am cutting the excess of paper from the parts:

Tuesday, April 13, 2010

Visiting the Pacific Pinball Museum

I was planning to visit the National Pinball Museum in Baltimore during my visit to the USA, but it was far from any other place I was intending to visit. It turned out that I did not visit it. But I also decided to visit San Francisco Bay Area and some people told me that there is a pinball museum there too. So, I decided to check it out. I took the BART from San Francisco (where I was hosted in a friend's house) to Alameda - east bay - and visited the Pacific Pinball Museum!

When I arrived at the museum I introduced myself, telling them that I was looking for some advice on my homebrew pinball project and that I was also interested in buying some pinball parts for it. I was then introduced to Michael Schiess, the museum founder, who was very friendly and took me to a private tour around the warehouse where he stores the hundreds of machines that are not in the public area of the museum - either due to lack of space or because the machines need to be repaired/restored.

 There, Michael guided me through some interesting machines including the world's largest pinball game, which is played with a pool ball and whose flippers are activated by 110 volts coils:

  Then he started looking for some pinball parts for me, but he didn't have many spare parts. So he decided to give me a playfield, as a gift, so that I could take parts from it. He said to me that as it woudn't be possible for me to take the whole playfield to Brazil, I should remove the parts that interest me and then give the playfield wood (with the artwork of the game) to my host there in San Francisco. I liked the idea. He gave me a ride to the BART and then I brought the machine to Seth's place. Seth has lent me this shopping cart so that I could more easily move the pinball playfield around:

 So, I took it to NoiseBridge (a hacker space in San Francisco) and spent 3 or 4 hours removing all the parts from it. I have left the playfield wood in the public area of the hacker space so that anybody can use it for whatever project and I have sent them a notice in their mailing list. My personal suggestion is to hook it to the walls as a decorative item. Perhaps they could use a microcontroller to blink some leds also, just for astethic purposes.

Here are the parts that I've brought to Brazil:
* 32 orange posts
* 4 hit targets
* 5 red rubbers and 5 new shining pinball balls given to me by Michael

Thanks, Michael!

Saturday, April 10, 2010

Pinball hacking and personal fabrication

I consider that building a pinball machine at home during these last 4 years or so has been a strongly symbolic act. It has started as a need to materialize a proof of concept of a clever hack I once figured out was possible based on the knowledge I had acquired after spending lots of time and effort reverse engineering an old pinball simulation game. The proof of concept was not very hard and indeed the hack is already proven through some early experiments. But a corollary of this discovery was pretty obvious: I would have to build the real version of Pinball Fantasies sooner or later.

So I felt challenged and started to build it, just for fun. I was trying to do something that I had never done before and that I hadn't even heard of other people who had done similar projects. Building a homebrew pinball machine sounded to me like a very ambitious project. Nowadays I am aware that I am not the only geek working on custom pinball development (there is perhaps half a dozen other people in the world having fun with it such as Jeri Ellsworth), but I didn't know about that at the beginning of the project and so I felt alone and obliged to come up with my own solutions to overcome each of the challenges involved in the execution of the project.

Then, gradually, I started to perceive some interesting relations between this project and my previous (software-only) ones. I had been fighting for software freedom and access to knowledge for some time and now some of my practices from the software world were being replicated in the physical construction of the pinball machine. I had decided to publish every details of the project (including lots of photos and source code) because I felt that I should encourage other people to build things also. I was also refusing to use proprietary software and based on the same principles I was avoiding fabrication processes that I did not fully understand. For instance, I was not happy about relying on professional laser cuter services to build some of the acrylic parts of the machine. I wanted to cut the parts in a homebrew CNC machine that was designed and built by a friend that I met through one of the brazilian pinball club mailing lists. I have only used the professional laser service because my friend's machine was broken and he did not seem to have enough time to fix it.

I have also decided to use the Arduino controller board and it was a good reason for me to learn more about microcontrollers. I have then bought some dot-matrix-display modules and had to help a niche community of Arduino hackers to adapt code for controlling these displays (in my specific case, I needed to control 7 of these simultaneously). I have even discovered Inkscape while I was looking for a CAD software to draw blueprints of the machine (Inkscape is not CAD, but I stumbled upon it during the search). I quickly fell in love with it. I have become an Inkscape developer and this is one of the reasons why the pinball project was neglected during some long periods of several months with practically no pinball hacking and lots of SVG renderer implementation efforts.

But what motivates me to tell this story is that recently I have become aware of this trend of personal fabrication technologies. Projects like the RepRap and the CupCake CNC are bringing the hackability of free software to physical things. And after reading the articles about it on Make magazine, I've decided to try to use it on my pinball project. I think that it is a practice totally compatible with my feeling of a need of better understanding the processes of fabrication, instead of simply achieving the desired results. It is a matter of getting more and more autonomy to create and build things and it is also about feeling more empowered by the knowledge acquired.

Some time ago I felt the need of having a 3d model of the machine in order to make some design decisions. For example, to have a better notion of the space available for some pinball parts in the playfield and to decide on placement of some screws. But I had almost no knowledge of CAD software and for some reasons that would require me to tell another long story (perhaps I can talk about it in a future blog post), I got involved in GNU LibreDWG, which consumed me another bunch of months with no pinball hacking again :-P I have then tried to make 3d models of some pinball parts and then found this guy who had done it also for some commonly used parts and had made his CAD files available online.

My conclusion to this blog post is that I think it would be awesome for the pinball hacking hobby if we could gather more interested people to make 3d models of pinball parts and share them in some place like thingiverse.com and then it would be interesting to see people building such parts using homebrew 3d printers like the RepRap. I think that my first attempt at that will be trying to replicate bumper caps to look like the ones depicted in the artwork of the original version of the Pinball Fantasies game. I have tried to improvise bumper caps using chocolate mousse cups once and it looked great, but it was slightly larger than the ideal size and those wouldn't fit well in the layout of the PARTYland playfield I am building. I did not have a good solution to this bumper cap issue until now. It seems like RepRaps will be very useful for my pinball hacking fun.

I must just take care of not spending some additional months focused on building my own RepRap printer... I know that there is a big chance of it happening, given my usual behaviour, though :-P

A yellow bumper cap from modern machines:

The bumper caps depicted in the original game artwork:

My "chocolate mousse cup" bumper caps:


So much good things have happened to me during my Boston/San Francisco trip that I have been constantly daydreaming during the last week. I am excited, enlightened and enamoured about so many plans and ideas! There is also a feeling of fear/uncertainly, I think. But that seems to be an inevitable part of exploring the future.

As a result, I have been revisiting some unfinished projects and have been trying to benefit from this new wave of inspiration in order to boost the development of some of these projects.

Friday, April 09, 2010

LibrePlanet 2010 Trip Report

Attending LibrePlanet 2010 was an awesome experience for me. I have met lots of very interesting people there. I'd like to thank Mozilla for sponsoring my trip to Boston. Here is my report on Mozilla related topics that were discussed at the conference.

Trip Report

At LibrePlanet 2010 the main subject discussed was the debate about the issues of SaaS ("Software as a Service") for user's freedom and autonomy, which was the topic of Stallman's most recent article and keynote at the conference. It is clear to me that the most relevant Mozilla project (that I am currently aware of) that is related to these issues is Mozilla Weave. There is an increasing perception among GNU activists that the upcoming new challenges for the GNU Project will be around providing solutions for privacy-enabling infrastructure and decentralization of services in order to keep the users in control of their computing and of their private data.

Stallman's SaaS article was first published at Boston Review, where I would suggest you to check the user comments (there are 4 comments only at the time of writing this report) in order to have an idea of the kind of debates that the article has generated. After Stallman's speech - during the questions session - he clearly refused to talk about privacy, as he was more concerned about first discussing the issue of "running your computation on a server that you do not control" and was clearly trying to keep the topic of user privacy - which he explicitely cited as "another important issue" - to be discussed in a potentially upcoming article/speech. After LibrePlanet, I have had the opportunity of discussing these issues in private with Peter Brown, executive director of the Free Software Foundation, during one of my visits to the FSF Office in Boston. He acknowledged that the issue of privacy was intentionally preserved to be explicitely targeted by future FSF campaings and has suggested me to subscribe to the GNU Network-discuss mailing list in order to participate in the brainstorming of new GNU initiatives towards solving these issues.

The upcoming GNU Hackers Meeting during GUADEC 2010 will be specifically focused in "free secure networking and decentralised applications".
There is an interesting, but rather old article - July 14th, 2008 - by Benjamin Mako Hill entitled "Franklin Street Statement on Freedom and Network Services" that is directly related to the subject discussed here.

Encrypted Data Stores

One of the various reasons why users are increasingly adopting SaaS tools is related to a trend to rely on/trust remote servers to make backups of their data. Users are very often not prepared to setup a reliable personal backup routine and even when users do so, it is understandable that they feel that Google (or some other provider of web-based services) might be able to provide a better quality infrastructure on their data centers to (supposedly) guarantee the integrity of user data. By accepting this premise, lots of users are not protecting their privacy and allowing services like GMail to crawl Gigabytes of their private stuff.

To address this issue there has been some suggestions, including the idea of crowdsourcing backups by sharing encrypted data in a p2p network.
I understand Mozilla Weave as a sign of commitment from Mozilla with privacy values and it seems to me that one of the reasons for it having restricting data quota limits might be that it is not a decentralized service. Correct me if I am wrong about it - I am still just starting to learn about it. Could Weave be adapted to run with higher volumes of data in a decentralized architecture? Or would it be wiser to design something like that from scratch instead?

There are some free software initiatives towards that kind of system:

* Tahoe, a redundant, distributed and encrypted filesystem
* The Circle, a peer-to-peer filesystem (discontinued in 2004)

Remote Computing

Running personal computational routines in a server that you do not control was explicitely rejected by RMS in his speech since it has effects to users autonomy and freedom that are similar to those of proprietary software. I think that the current SaaS article is sufficiently extensive in exploring this topic.

Local execution of arbitrary (non-free?) code

An interesting article about a complementary issue that was published by RMS some time ago entitled "The Javascript Trap" deals with the local execution of javascript code automaticaly fetched from a remote webserver on page load. At that time was stated the need for a system that would allow people to have better control of which routines are running on their browser environments and that would perhaps enable them to collaboratively tag "trusted versions" of such scripts. This is a controversial topic that deserves some attention from Mozilla, especially in those cases where highly complex non-trivial javascript applications are delivered to the user's browser environment to handle sensitive user data.
One possible attempt to target this issue could be to incorporate popular javascript libraries such as jQuery in the browser installation and allow updates of these to be better managed by the users - or even possibly allow for local customizations of these modules. Also, I can't avoid mentioning Greasemonkey as a source of personal insight on why people would care about changing webapp behaviours.

Additional comments:

I've just enjoyed watching a related speech by Eben Moglen entitled "Freedom In the Cloud: Software Freedom, Privacy, and Security for Web 2.0 and Cloud Computing".

Thursday, April 08, 2010

Geek Food

Atomic cookies (made with Inkscape) are great...

...but fractal cookies are absolutely AWESOME!

Wednesday, April 07, 2010

Make Magazine

Recently I have made a subscription of the Make Magazine, an utterly cool publication focused on DIY projects. Yesterday I have finally received the first one by mail (issue #21), which has the Cupcake CNC 3d printer from MakerBot Industries in the cover. My subscription to the paper print versions of the magazine gives me access to the online version of all of the previous issues of Make, which is great! It is also very useful for performing searches for keywords, even when we have access to the paper version.

I am also delighted to notice that one of the articles in this issue ("Instant Paddle") is written by Tim Anderson, which I met in a nice sailing afternoon with some friends in the San Francisco Bay, during my visit to the US last month.

LibrePlanet 2010 and the GNU Hackers Meeting

From March 16th until March 31st I've been visiting the USA for the first time. The reasons for my trip were to attend LibrePlanet - the anual meeting of free software activists held by the Free Software Foundation - and to participate in the GNU Hackers Meeting.

Me and my friend Rodrigo "pitanga" have both participated in the GNU Hackers Meeting due to our contributions to the GNU Project through the development of GNU LibreDWG.

My trip was sponsored by Mozilla and, for that reason, I am currently working on a trip report for them. I'd like to thank Chris Hofman, Sarah Doherty and Chris Blizzard - from Mozilla - and Holmes Wilson - from FSF and PCF - for supporting me.

I have lots of things to write about this amazing trip and all of the wonderful places and people I have met, so there will certainly be some more blog posts soon.

Tuesday, February 02, 2010

Lamp matrix controller board properly working

Last night my friend DalPoz helped me figure out what was the issue with my lamp matrix controller board for the pinball machine. I fixed the software and now it is working great! I have also done some reverse engineering on Pinball Fantasies to map which palette indexes are used for each lamp in the game. Using this info, now the Arduino is controlling the lamps so that they flash in sync with the lamps of the game.

The issue with the board was that it was drawing too much current from the Arduino output pins.

In my project, lamps are organized in a lamp matrix and 4 pins control the activation of columns while other 4 pins control activation of rows. The first group of pins draw 1mA in each pin, while the second group draws 25mA per pin. I was multiplexing the lamp matrix by activating one column at a time, which resulted in 1mA (for the column selection - only 1 pin activated at a time)  plus up to 4 times 25mA (the 4 row pins can be on/off in any configuration depending on the status of the lamps of the selected column). So, the worst case scenario was 1+4*25 = 101mA but the Arduino can only provide 40mA max.

By inverting the multiplexing algorithm, that is, by multiplexing rows instead of columns, the worst case scenario becomes 25 + 1*4, which is only 29mA. That was the solution for the issue with the intensity of lamps noticed last week.

The Arduino board has a limited number of i/o pins, so I'll have to find a way to extend it. One possible solution is to use i2c to communicate with the 4 lamp matrix controller boards that will be used to control the lamps of the whole playfield. But Jeri Ellsworth told me that there might be some issues with using i2c on pinball machines, since there is a lot of noise in such machines, which could lead the i2c communications to eventually freeze. I might have to use long cables for the lamps and connect all of them to a central controller board.

Tuesday, January 26, 2010

After some debugging, I have figured out what was the issue with the lamp matrix controller board. I was multiplexing it too fast. By lowering the frequency of multiplexing, I got the board to properly work.

Next step is to map the palette events from Pinball Fantasies into lamp on / lamp off commands for the Arduino.

Then I need to fix an issue with the intensity of lamps when they are turned on simultaneously.
After that, I need to try I2C or some other communications protocol and then build 3 more of these boards for controlling the whole playfield.

Monday, January 25, 2010

Lamp controler board, second try

Today I have rebuilt the lamp controller board taking care of placing high current lines far from low current lines in order to avoid induced currents. But that did not solve the issue.

The new board is a complete 4x4 matrix controller. It was considerably faster to build this one. I am getting used to it, it is becoming easier to build :-)

Here is a video of the current status of the project, and a question for the electronics geeks:

Sunday, January 24, 2010

This weekend, my friend Rafael Moretti spent some time with me buying electronics materials and starting to build and test a lamp controller board for my pinball machine.

This circuit was suggested to me by another friend, DalPoz, which explained to me how the circuit is supposed to work. Thanks!

Here is a video of the board (not yet completely built yet, but already flashing 4 lamps of the playfield):

The video is in brazilian portuguese, but there are subtitles for it in english. It seems to me that, for some reason, YouTube does not show subtitles for embedded videos, so you might want to watch the video
directly in YouTube here (with subtitles)

Thursday, January 14, 2010

Yesterday i have installed the decorative acrilics that for the upper loop of my pinball machine.

The acrylic parts are 29 milimiters above the playfield, the exact height of the posts I decided to use (the one I have modeled in FreeCad). I have chosen this one because it is higher than the diameter of the ball, so that the ball will not touch the acrylic parts which are fragile (unless it jumps for some reason). So, I'll need something to guide the ball in the upper loop. I though of using metal guides, but I need advice on that. What would you suggest?

More photos at http://www.flickr.com/photos/felipesanches

Monday, January 11, 2010

Today I have started to learn how to use FreeCAD. My first exercise was drawing a 3d model of a pinball post similar to these ones. Here it is:

3d model of a pinball ribbed post

The CAD file is here, released under public domain.

Friday, January 08, 2010

This week I have been preparing acrylic parts for my pinball machine. The parts were drawn in Inkscape (both the artwork of the parts and their shape). I have sent the shapes to be laser cut in acrylic. The artwork was printed in 4 A3 sheets of paper in a professional print shop.

There are some photos of the results here:

Laser-cut acrylic parts

An acrylic part and its printed artwork

One acrylic part with art ready to be installed in the machine

Also, this week I have discovered Jeri Ellsworth, a pinball-geek girl who is also notable for some other hacks. She's building a pinball machine and posting videos on her youtube channel. Check out this live streaming of her lab. There's an IRC bot to control the webcam zoom and angles and also a text-to-speech bot.

She's recently posted a video explaining how to make coloured pinball parts using fabric dye. I will probably try to do that with the flipper rubber bands of my pinball which are black but were supposed to be red.