I have recently started working part time with Genesi and got involved with an ongoing project of theirs that overlaps with the goals of my TEOTWAWKI Net project. You can read about it at:
I started out as Genesi customer purchasing and getting really excited about their amazing Smart Book and Smart Top products and started making some SD card based demos for the products including a Sugar image, a live SD card image and a headless image.
I found myself at the Genesi Genesi scrum in San Antonio this past June and was asked to help out with this Project in Tanzania.
I applied a lot of the research and development that originally went into TEOTWAWKI Net since 2009 to meet the requirements of this project. Although TEOTWAWKI Net is not integrated into the solar outpost project (yet) A lot of the technologies in the prototype system are there.
The ideas is fairly simple. We send down a solar power system and a collection of low power wireless gear, Efika MX smart tops and smart books and a collection of software that allows them to collaborate and create their own library of content even if there is no existing infrastructure.
The heart of the system is the Efika MX smart top which is a very tiny ARM based machine (running on the Freescale i.MX51 system on a chip) It draws about 4 watts of power when idle and maxes out at around 10 watts, has no fans or any other moving parts, generates almost no heat, has ethernet, wireless, HDMI, USB and built in audio.
We use the Efika MX smart top as a headless server which provides:
All of this combined gives this classroom in a village without grid power the ability to develop course material and collaborate using Efika MX smartbooks over the local wireless AP. the Solar system can be use to re-charge the smart books as necessary and to run the standalone server the rest of the time.
Thanks to the power efficiency of these ARM chips and the flexibility of Linux this is doable with a very modest bare bones Solar system. The server/wireless gear should be able to run all day and as long as the sun shines we should be putting in more power than we take out. The smartbooks can run almost 7 hours on a single charge and don't take long to charge back up to full.
I'm really excited to be working on a project in the real world related to the work I've been doing in my spare time these last few years.
[/projects/teotwawki] permanent link RSS feed
Bluetooth Essentials For Programmers Review
If you have been following my TEOTWAWKI Net project you will know I'm interested in dynamically formed short range wireless networks and so of course bluetooth seems natural to explore. To help me get started I purchased "Bluetooth Essentials For Programmers by Albert S. Haung & Larry Rudolph ISBN 978-0-521-70375-8"
I thought I might review this book a bit and mention what it covers vs what it leaves up to the reader to figure out.
This book is great to get you started writing code that actually does something very quickly and has great examples in Python, Java, C and objective C. For that reason alone I think it is worth it to buy if you want to get started quickly writing bluetooth applications. Here's a short list of whats covered.
While it is still a great help for someone wanting to get started with Bluetooth I think they could have gone a bit further than they did its really a basic bluetooth tutorial in book form and it does that well but I think a more expanded edition of the book should be made covering the following topics.
If I have time I plan to cover some of these topics that aren't covered in bluetooth essentials once I have finsihed R&D on the bluetooth support in the future versions of TEOTWAWKI Net.
[/projects/teotwawki] permanent link RSS feed
As noted on the wiki and on facebook. Thanks to the generous contributions of Fred Grose I got my First rooted HTC Dream phone on Saturday and the second one today. Being someone who is very behind the times as far as mobile technology goes this 2 year old smart phone really impressed me. It's also highly addictive even without any cell service.
So far I haven't written one line of code for the platform yet but putting it through its paces has been very fun. There's so much this thing can do out of the box that I'm sure Apple is in big trouble. particularly since this platform is open source friendly. (That is the main reason I chose this as my first smart phone platform to develop for)
This phone also has me thinking about ARM based machines and how I would really love to have a good ARM netbook with similar capabilities (but with a regular Linux distro and lots more ram and flash space and a bigger screen of course) Hopefully we will see some come onto the market soon. until then I have one heck of a powerful and flexible machine that fits in my pocket! something I have wanted for many years is now a reality.
I still want to own an open pandora one day but this is close enough for what I want to do for now.
I'm done rambling now more info when I finish the python re-write and get serious with the droid. My project will need to use the NDK for various reasons and I should be learning all about android internals soon. I will post more on my blog about android internals that I find interesting as I run across them.
I also wanted to thank the author of the Super E ROM I had no end of trouble with cyanogen 6.0 but Super E seems be nice and solid. It leaves me at android 2.1 but I'm sure the 2.2 roms for the dream will get better by the time I will care about having a 2.2 machine.
[/projects/teotwawki] permanent link RSS feed
I finally forced myself to sit down today and I re-implemented about 90% of the mapper daemon today. If I keep things up at this rate we might actually see a real sugar activity version of TEOTWAWKI Net soon.
I still have the following milestones to complete
Once I have a working sugar activity I will release a standalone Linux version and see what can be done to make it work under windows and hopefully smart phones.
I need at least one USB bluetooth dongle and two rooted HTC dream phones (also known as the G1 phone) to get started on the android version.
[/projects/teotwawki] permanent link RSS feed
Whenever I get involved with something I like to study it's history for me that means finding the earliest copies of the software and sources.
I decided today to find a copy of the original B-News software and spent a few hours pulling my hair out since ftp.uu.net seems to be no more.
Finally I managed to find copies of A news B news and C news plus the nntp reference implementation. In the interests of posterity I am hosting a copy of the software I found here
I hope I save someone from pulling their hair out.
[/projects/teotwawki] permanent link RSS feed
Open Pandora an idea who's time has come
I just stumbled across the Open Pandora Project and I am practically drooling over this awesome wonder of a device. It is unfortunate that it is primarily focused on gaming because this little gem is capable of so much more!
This little device fits in your pocket, has blue tooth and 802.11 wireless technologies, a battery life around 10 hours. two SDHC slots, two USB ports, an S-video out etc. In short it is the pocket sized general purpose computer (Super PDA if you will) that I always dreamed of ever since those Casio organizers came out. (I always wanted a Casio organizer that could run DOS or UNIX back in the early 90s)
If the first batch starts shipping and the orders keep coming in for this device I am sure to scrape up the cash to get one. This is the perfect device to run TN and a bunch of other applications that are perfect for a pocket sized device like this.
I still plan to get a nice ARM based netbook as well but the awesome possibilities of this device can not be under-stated. It is easily as powerful (actually a lot more powerful) than an OLPC XO-1. and can use blue tooth keyboards etc. It has the same 256MB ram limitation as the XO-1 but if you know what you are doing you can still cram a crap load into that considering that in the 90s I had useful unix workstations running on much less than that.
I believe that powerful, open and compact general purpose devices like these that are completely open source are the future. versatile mobile computing devices and fresh new ways that we will be looking at mobile networks will change the world.
[/projects/teotwawki] permanent link RSS feed
I haven't posted anything on TEOTWAWKI Net in a while so here's an update:
I've been working on the USB sync manager which is simply a script that looks for mount points being added in a certain directory. it then scans that mountpoint for spooled up batch files containing news articles.
Once it finds the batched up articles it reads them in and deposits it's own articles onto the mounted device. once it is done processing all found mount points it will pop up a GUI (optional) listing all found mount points with an unmount button next to each one. This menu will disappear as soon as it starts processing again. The menu will not pop up if there are no more mount points left in the directory it looks in.
USB keys left plugged in will accumulate any new articles that arrive either by the network or by other USB keys being plugged in.
What I just wrote about is not just an idea but is already working now and is in CVS. I just got a lot of this working over the weekend and some more tonight.
I plan on making some changes to how the system is packaged and splitting some things out of start.sh and writing some new documentation to put in the webroot before I build more packages. At that point I might have my first numbered release. Stay tuned.
[/projects/teotwawki] permanent link RSS feed
I found a fascinating open source hardware and software project called Arduino that has a surprising amount of sophistication and peripherals available for it. and a seemingly easy to use software development environment.
One of the options is to hook it up to blue tooth or 802.11 wireless modules. I'm thinking that I might be able to take the 802.11 or blue tooth modules (802.11 module supports TCP/IP so it is the obvious choice) and if an SD card can also be utilized I might be able to implement a cheap hardware device that can be placed in your pocket and gather/propagate TEOTWAWKI Net completely unattended. you could then sync it with your laptop or other larger system later.
I have no idea if the Arduino is capable of anything as complex as TN but it was enough to get me thinking. Eventually I would like to implement the network on smart phones and sophisticated PDA devices but open source hardware platforms like this really open a lot of cool possibilities.
I just spent a couple of hours looking at information about the platform and the microcontroller chip it is based on and it may be a bit too simple to do what I want. however It is still quite capable and flexible for small projects. I really want to see a lot more work being done in the open source hardware area. the amount of new and innovative hardware and software projects that could be built really is unlimited with completely open hardware to build on.
What i would really like to see is a project very much like Arduino but targeted at much larger scale applications. Something that is about the same size as the Arduino and has the ability to plug in multiple I/O boards with storage, wifi, etc. as well as exporting various pins you would find on a micro controller. It would also need to be able to run a decent real time OS (hopefully something POSIX like or even a small version of Linux). I could do a lot with a device like that.
In a nutshell what I would really like to see the hardware hackers come up with is a low cost general purpose embedded computer platform that is small enough to fit in someones pocket and run off of batteries. With enough CPU horsepower and features to run complex wireless network applications. I don't even need a display or a keypad but a modular system would make this easy to add. If the open source hardware hackers ever come up with such a thing I will be very happy.
I'm still tempted to buy some of these kits and see just how far I can push things though. (If only I had unlimited time!)
Ohhhh Yeahhhh! check this out: http://blogs.leaflabs.com/2009/
This looks like it may well just fit the bill for what I'm wishing for I will be following the development of this project very closely. My main focus is to get the UNIX version of TN working as well as I possibly can before I go off on porting to other platforms embedded or otherwise. but once that goal is accomplished I will be getting some kits and exploring the possibilities.
[/projects/teotwawki] permanent link RSS feed
New packages released for the LUGOR/OLPC picnic this Saturday
The packages are built from the code with the lugorpicnic tag in CVS this version includes the new and improved network mapper and sync dispatcher and an important bugfix to the syncnews.pl script (I got the article date and article arrival time backwards when reading the history file) Also as a consequence of the IPC provided by the new network mapper. the network neighborhood is now implemented as a PHP script that reads the network map from the daemon and works much better now.
The new IPC mechanism also allows the syncnews.pl script to update a "lastsync" timestamp in the network map when it successfully syncs with a node. This fixes another problem I had with the old mapper script that could cause some articles to never be sent out to other nodes.
This release also includes the incredibly useful socat utility which can be used to talk to the network mapper socket and for just about anything networking related you can think of.
[/projects/teotwawki] permanent link RSS feed
The new network mapper/sync dispatcher has just been committed to CVS. It implements everything I talked about in the previous blog post. the following are the implemented commands for the /tmp/TNmapper IPC socket.
all commands close the socket when they are finished.
UPDATE will return ACK\n on success and NACK\n on fail.
NTOA will return the ip address followed by \n or NACK\n if the nodename is not in the n2a hash.
ATON will return the nodename followed by a \n or NACK\n if the ip address is not in the map hash.
DUMP will return multiple lines containing the entire network map. it is comma separated into the following fields ipaddr, nodename, services Once it is finished dumping the socket is closed. it can return zero lines for an empty network map.
DEBUG This will output the %map and %n2a hashes to the IPC socket in Data::Dumper format.
[/projects/teotwawki] permanent link RSS feed
A new and improved Network mapper/Sync dispatcher
I've been busy learning a lot more about sockets programming from W. Richard Steven's UNIX Network Programming 1st edition. and applying some of that info to perl. I am modifying an example server that uses select and non blocking I/O to eventually be the new network mapper and sync dispatcher. I already have this test server accepting both UDP connections and AF_UNIX (local system only accessed by unix filesystem paths, (/tmp/afunixsocket for example)) streaming connections and passing them to different handlers.
The end result will be that other processes will be able to communicate with the heart of the TN system and get information about the network and be able to update the crucial time stamp information for each node (the syncnews.pl script needs to be able to do this since it is spawned into the background.)
The reason I'm focusing on this change is that the original script for the network mapper and sync dispatcher just does not seem to be easily extendable the way it currently exists and some of my testing has brought up certain design problems that can cause articles to be lost and the only way forward will be to have the mapper support IPC and add more information to the network map that can be accessed and updated by processes that need to know about and work with this information.
I have wanted to do this from the beginning anyway with the network neighborhood. it is much better to make that a script that gets info from the network map directly. instead of an ugly hack where the mapper daemon re-writes a static html file when it updates the network map.
The new way the process will work will also allow things like a name service switch plugin to be developed that will allow hostname lookups to use the TN network map.
I'm also going to make it a bit of a hybrid server in that while it does select and non-blocking I/O instead of forking. it will only do so for receiving the UDP broadcasts that build the map and handling commands from the AF_UNIX socket that update the map. any other commands will cause it to fork a process that will block and process all other commands namely dumping of the network map and doing specific map lookups. that way the main daemon will not have it's time taken up by queries about the map and since that is handled in a child process that child will only have a copy of the network map at the time of the fork. I also found a really awesome tool that blows away netcat called socat that I think I will include in the TN system for debugging and possibly other purposes later. not only does it allow me to interactively send data to and read from AF_UNIX sockets but it is an incredible networking swiss army knife that allows all sorts of different possible socket combinations to talk to each other.
[/projects/teotwawki] permanent link RSS feed
I have dug out xfig and made some simple figures showing how TEOTWAWKI Net works.
the arrows pointing to the ad-hoc cloud are as follows:
[/projects/teotwawki] permanent link RSS feed
Might have found a way to make an XO act as an AP
I did some digging around and asking on the olpc-devel irc channel and it looks like there is a driver and special "thin firmware" for the libertas chipset that supports AP mode. The guy that maintains the DebXO distro is having me test out a package that includes this new firmware. I will let you and him know about it as soon as I get a chance to test it. theres also instructions for getting the thin firmware working on the stock sugar, but it requires re-building the kernel with the correct options set.
(I will probably create a package for this if it all works out nicely under debian)
It will be so cool to be able to put an XO into AP mode. I've been making further improvements to the sync-up code and am working out some more bugs and timing issues. I also got my UNIX Network Programming 1st edition in the mail today as well.
What a wonderful history book to read from back in early 1990 when most of the world was not POSIX compliant, there were several competing network protocols with TCP/IP and some UNIX vendors were just getting around to getting ANSI compliant compilers (a lot of the examples are K&R style C but the sockets interface really hasn't changed much at all)
It deals a whole lot with interprocess communication and has some rally sophisticated examples and is very in depth. I know I'm going to learn a lot from it to make my project better.
[/projects/teotwawki] permanent link RSS feed