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 discussion 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 !!!
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!
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.
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!
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:
Daydreaming
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.
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 videodirectly 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