Kinect – Part 3

It’s been well over a year since my last update. I apologize for that but in between school, life, and some really fun projects, I have some really promising progress to share.

On my last update for the Kinect, I left off with some LabView code that allows anyone to interface with the Kinect. In the time since it was released I have received lots of positive feedback from everyone, so I must first start out by thanking everyone and I hope it will continue to be of good use.

Since that time I worked furiously to develop an image processing algorithm to detect open doors/pathways enabling artificial intelligence pathway planning.

The only issue is in order to actually run the software on the iRobot create I bought to test it on, i had to either tether or set my entire laptop on the iRobot create. That isn’t an optimal solution especially for debugging purposes. Hence, the next step would be to design my own circuitry to resolve the problem.

Now, approximately 6 months ago, my good friend Gytis Baranauskas and myself bought ourselves a DIY CNC machine. While we have had many ideas and goals for the CNC machine, our primary goal was to create printed circuit boards. This would enable us to offload the USB host controller, the iRobot communication and the image processing into separate microprocessors and achieve a much smaller, lighter, cheaper solution then using a full-blown computer and all the complexities that come with dealing with supporting 10 different operating systems.

Our first experiments are consisting of creating PCB breakout boards for the USB host controller and a microprocessor in order to connect them to a breadboard and begin testing them and the functionality to use them.

We are making progress rapidly, and I will keep this site informed as our progress continues. If you would like to see more of our work, the gallery below features many of the things we have been able to do in the past year.

Kinect – Part 2

It’s been 4 weeks since I last posted on my Kinect development, and I have some updates to share.

First and foremost the code is available to anyone who wants it or to help develop it on github here: or if you only want the labview code and relevant files: The library is also making it’s way into the official OpenKinect codebase.

Second, the code is now much cleaner and the interface is much better. The LabView libraries now interface with the IMAQ vision library for easy processing and machine vision intelligence.

The next challenge is to figure out what cool thing I can do with this now! I’m hoping to write an efficient algorithm for detecting the best path for a robot to take, from point A to point B, using the Kinect.

Stay tuned for the 3rd installment of the Kinect trilogy.

P.S. Thank you everyone who reads this blog and especially those whom have left feedback or commented. Your interest and encouragement is what keeps me going with projects like these.

Kinect – Part 1

So I disappear for 3 weeks… What have I been up to? Well, I’ve been up to this:

What is this you ask? This is a piece of software that is actually a programming language. It’s called LabVIEW and this programming language was built for “real time data acquisition.” Essentially, LabVIEW is a programming language that is built for things that need to happen in “real time” and also allows for analysis and debugging in “real time” which is much different then any other programming language out there.

So what is the Kinect and why did you write it for LabVIEW? Well, I am a technology enthusiast by trade; One of my favorite things to do is mess with robots and think of new ways I can put everyday technology to use with these robots and LabVIEW is the language that I can do it in. The Kinect itself is a product created by Microsoft that essentially creates a 3D camera and this allows Microsoft to use it for controller-free gaming on the Xbox. Now, this is only one application out of tens of thousands that can be realized with the Kinect and it’s 3D Camera. My mission is to use the Kinect to help open up the possibility of a wide array of applications and do something cool myself while I’m at it, but there’s a lot to do before we can get there.

The first step was to reverse engineer the Kinect and figure out how it works and how we can make it work for us. This became a huge task over the past few months currently being accomplished by an initiative and community called OpenKinect. These brilliant minds are behind what will soon become a entirely new Minority Report level of technology that will interact with you naturally and intuitively to accomplish everyday consumer tasks. My part to this puzzle is only a very small part to the much larger picture that is coming together very quickly with this amazing new technology.

Now down to business. So far we have a three stage process to open up 3D imaging technology to the world.

  • First, 3D Camera technology must be widely available and at a price point worthy of investing in for most consumers. The Kinect accomplishes this step.
  • Second, the technology must be widely available on many programming languages, allowing developers to program code on top of the data it provides. The OpenKinect community is making great strides towards this goal very quickly.
  • And third, code must be written to analyze the data that the Kinect provides and then do something intuitive or cool with it. This step is where I come in and this area of technology is still very widely unexplored and untested.

So what does this mean for me? This means that there is a long way still to go until we can see this technology doing something really intuitive or cool that hasn’t been seen before. I’ve been able to make a lot of headway so far by getting the LabView drivers to work but it’s going to take a lot more work to make it do something really cool.

Next part to the Kinect Trilogy soon. Stay Tuned.

Robotic’s 2010: Where I’ve been for the past 8 weeks

This is the robot we’ve been working on strenuously (think 16 hour work days out of one of NASA’s machine shops) for the FIRST (For Inspiration and Recognition of Science and Technology) Silicon Valley Regional held at San Jose State University. This year’s competition is to, in it’s simplest form, play soccer. Our robot contains a ball magnet for good for ball control and a pneumatic powered kicker to launch the ball.

We placed 11th overall ending up as a quarter-finalist among 60 other competitive teams.  The robot is built entirely by students and the team is entirely run by students. The experience of designing and building a robot from scratch is tremendously interesting and jam-packed with more education and life lessons then anything else could teach. It’s been a enormous uphill battle with funding, managing, designing, prototyping, building, testing, training, and preparing over the past several months.

New MyBB Merge System

Well, it’s been a while since I’ve posted here. I have been preoccupied with school and other activities so I haven’t had as much time here. However, I’ve found a few moments to show off the new UI changes to the MyBB Merge System that have been in development for the past several months.

The main greeting page:


This page is largely the same in previous releases, but the version number is now shown always in the header so users can more easily provide the version number and make sure they are running an updated version.

The requirements check page:


This page is brand new. It allows us to make sure the user is running the latest version and that the /convert/logs/ directory is writable so that if there are issues later on, they can be resolved more easily by providing debug logs. The Merge System won’t allow you to continue until you are running the latest version and the logs directory is writable.

The testing information page:


This page is also brand new. It is there to describe to the user how they should report problems.

The board selection page:


This page is largely the same, except you’ll notice that support for a couple more versions are available for some supported forums.

The module selection page:


Again, you will notice it is largely the same. However a few modules are missing. We have removed support for Avatars a few other ones which weren’t standardized among the board’s. Why did we remove them? They were simply too high-maintenance, didn’t work very well for many people, and didn’t seem extremely essential to converting a forum over.

The database configuration page:


It is essentially the same as last time, though it has been tweaked a bit and a couple of annoying bugs were fixed with it.

The database configuration page (2):


This page is run right after you enter in the database configuration details. This is a completely new page. Before, you would just be sitting and waiting for a long time wondering what was going on behind the scenes. Now it informs you with this new page. It checks the database details, and shows a progress bar describing what is going on at that moment. As you can see it was adding an import_uid field to my trunk_posts table.

The options configuration page:


This page has been completely redesigned from the old boring plain version that you’ve seen in old versions of the Merge System. It sports a count of how many it will import, and provide you with a nice clean interface for how many it should import per page and whether or not it should auto-redirect. The new default for “import per page” is 1000, except for attachments which is 20 since those take considerably longer to import.

The actual in-process import page:


This page has again been completely redesigned. Old versions sported a long list of

“Importing uid #123
Importing uid #124
Importing uid #125
Importing uid #126”

Now it is a simple progress bar with what exactly it is importing below it.

Once the posts page is run, a counters rebuild page is run.

The rebuilding counters page:


This page rebuilds the counters because data such as the amount of posts, threads, users, etc are notorious for falling out of sync through various bugs in any forum software. So as such, the Merge System simply does a clean fresh recount of all of the counters. This will make sure that the counters are correct and in-sync.

The cleanup page:


This page is completely new. In previous versions when you pressed the “Cleanup” button or if the Merge System had completed importing all the data in all of the modules, you would be left hanging with a blank page for a while as the Merge System ran some commands to “cleanup”. This now sports a new page with a nice progress bar and an indicator telling you exactly what is going on. In this screenshot the import_pmid column is being removed from the trunk_privatemessages table.

The completion page:


This page is the same as all the other previous versions, however, the reports generated are improved.

The reports generated page:


This is a sample HTML report. You will notice that the “Total Query Time” is much better formatted and there is a new “Errors” part to the report. The “Errors” section is mainly used for any errors that pop-up during attachment conversion that are unexpected and couldn’t be handled properly. This gives you a chance to correct those errors manually.

You will notice that the Merge System now uses nicer formatted numbers (comma separated) as a visual nicety and many other tweaks and improvements such as much better attachment handling. The Merge System will now check that it will be able to import attachments properly and if not, it will tell you as such and give you a chance to correct the issues so the Merge System can properly continue.

This blog post only showcases the new UI of the Merge System. What you don’t see is the completely rewritten framework and back-end to the Merge System. It now sports a much more uniform, OOP architecture that minimizes code repetition, improves consistency, improves performance, debugging capabilities, simplifies previously complex code, introduces unit testing abilities for even greater stability, and cleans up old, outdated code overall.

I hope you have enjoyed this preview to the new MyBB Merge System. It is still up in the air whether this will be a beta release, RC release or a final release  and there is currently no exact release date planned. We are currently in the testing phases of the new Merge System and we hope we can box it up and send it out soon.

Robotics: Where have I been?

For the past month, I’ve been working with my school’s Robotics team. We took on a 6-week intensive project on building a robot that in the end results in a 120 pound, 5 ft tall robot.

That video was taken after 22 hours of straight work (9:00 AM Sunday-5:00AM Monday last week) at 3:00 AM in the morning at NASA Aimes in California, the day the robot was due to be shipped off. In fact, I wrote up the 5 stages to sleep deprivation:

1. Confusion
2. Organized Chaos
3. Annoyance
4. Tired High
5. Slow Cognition

Anyway, the objective of the competition is to collect what they call “space rocks” and put them into an opponents trailer. The “space rocks” come from outside by another team member that throws them in or by another robot. Our robot pretty much sucks them in if it passes over them and we can store them up and shoot them pretty accurately from a close range into an opponents trailer.

Our team will be competing in the FIRST competition at Davis College in California. I certainly have had fun helping to build and program this robot. I got to use lots of loud and powerful machines in building this robot as more then 80% of the robot was custom made and all of it was put together by hand. I hope we put up a good show at Davis and have fun doing it. Perhaps we’ll even go to the nationals at Atlanta.

If you would like to check out more, our robotics club has an entire site for it at

The 5 stepping stones of creation

  1. Never be idiot-proof

    Never develop your application to “second-guess” or “compensate.” Doing so will only give the impression that the application is smarter then it actually is, and eventually intent-errors will plague you. Remember, computers are built on the foundation that it cannot guess correctly what you want. That is why everything is explicit.

  2. Expect the unexpected

    There is absolutely no doubt that you will run into issues you never dreamed you would encounter with your application. Your best bet is to prepare yourself for these issues as much as possible. I recommend two or three punching bags.

  3. Experience, Experience, Experience

    Experience drives good practices. Good practices lead to a good product. I cannot stress that enough. However, you must be patience because only through time will you will gain experience.

  4. Start small

    An Onion is made up of layers upon layers of work, built upon previous layers, and layers before that- All the way down to the seed that sparked your creation. If you try to take on something big, first thing, you will fail. You will loose yourself upon the thousands and thousands of standards, features, ideologies, et cetera, that need to be accounted for in order to make a program good. So start small and don’t spread yourself too thin. Focus on the functionality first, worry about the design and other necessities later.

  5. Be Creative

    There are no limits to your imagination. Write down all of your ideas and consult your friends and others on ideas and feedback as well. The best thing to do is implement all the ideas you and others reasonably have first. If you plan on doing it later, don’t. Do it now. If you delay it for a future version, it will only be harder. If you will, once you bake a cake, you can’t easily go back and change the filling.

MyBB… I like the way you “copyright”

After reading the blog posts on Dennis’s “Removing the copyright is a bad idea”, specifically WJ’s blog post, I decided to bring up his point in the staff forum. Resulting will be a new copyright for MyBB 1.4.

The current copyright

Powered By MyBB
Copyright © 2002-2007 MyBB Group

Will now become

Powered By MyBB, © 2002-2007 MyBB Group.

Both Chris and I feel this new copyright should ease up the constroversy and please more people by making it look less like it’s ours and more like it’s yours.

MyBB… I like the way you “Plug In”

Next up on MyBB, and the first new 1.4 feature to be revealed on my blog, is…
Drum roll please

Plugin Version Checking!

Yep, the new ACP now has a way of checking updating for plugins. It will connect to the MyBB Mods server and returns a list of plugins that need updating.

How is works?

  1. GUIDs (globally unique identifiers) are assigned to a plugin after it is submitted. Authors have the option to update their plugin with the option of adding the GUID to their plugin.
  2. A list of plugins with GUIDs in the plugin directory and sent to the MyBB Mods Server
  3. MyBB Mods validates that list and sends back a list of plugins which includes the latest version number and download URL for each of the installed plugins
  4. The MyBB admin CP checks to see the list and compares the versions of plugins you have with the latest versions returned by the server

MyBB… I like the way you import?

The whole point of the MyBB Import system is that you can merge databases. You can also select what to import, and what not to import. Now it’s not finished, but I’ll explain what the system does and how easy it really is!

MyBB Conversion Wizard - Welcome

The first step – The welcome page! Not all of the converters have been finished, but this shows what will be done by the time 1.4 is released. Currently we’ve finished: MyBB (Merge), SMF, phpBB 2, and PunBB.

MyBB Conversion Wizard - Module Selection

The second step shows you the module list. You’ll need to fill in your database configuration details as shown in the picture below.

MyBB Conversion Wizard - phpBB 2 Database Configuration

This page is where you’ll fill in the database details of the database you want to import.

MyBB Conversion Wizard - Module Selection 2

Once you are done with that, you’ll get back to the module page. Here you’ll see that you can select a module to start out from. These modules need to be done first because data is required from these modules for other modules.

MyBB Conversion Wizard - Import phpBB 2 Usergroups
Here you’ll input how many of the module you selected you want to import. Once you’re done with this, click next to continue.

MyBB Conversion Wizard - Import phpBB 2 Usergroups 2
At this screen, it shows you whats been run in the module. Click next to continue; If there are more it will continue on with the module, otherwise you’ll be sent back to the module list as depicted in the picture below.

MyBB Conversion Wizard - Module Selection 3

Here you’ll be able to select the next module, or, if your finished, you can press ‘Clean Up’ and it will show the next page.

MyBB Conversion Wizard - Completion
The is the last page of the importer before you can visit your new imported board 🙂

You can also pause modules so you don’t have to run them all. Say you only wanted to import 10 threads. And of course, you can resume the module if you wish to continue importing them, but we’ll get into that more later