- Review pages with tips
- Download page on module manufacturer’s site (use google translate)
- Blogs and other assorted info
Sometimes, whether intentionally (you want to “be” a different USB device) or unintentionally (your board is bricked), you want to replace the firmware on the little atmega usb chip used on the Arduino Uno. Unfortunately, most of the instructions out there are for the Uno R2 or earlier: the R3 has a slightly different chip. Adding to the trouble, the Linux/Mac tool for doing this operation (a “DFU upload”) has different USB product IDs than expected. So, here’s the differences from the earlier Uno (with ATMEGA8u2) to the latest R3 (with ATMEGA16u2):
I looked for easy instructions for building a package that uses CMake, so that I had a link to refer someone to. I couldn’t find one offhand – most seemed to be about creating a CMake-based build for your project, rather than using one that already exists. While building your own project with CMake is the next logical step if you do development, you’ll probably end up needing to build someone else’s first, so here’s a quick screencast (fairly Windows-centric) on how to get that done, including how to find dependencies.
I’ve been looking at some web java-based screencasting apps, namely screenr and Screencast-o-matic, which look suspiciously similar. I wanted to record a voiceover along with a screencast, but couldn’t get it to work – on a Windows 7 x64 machine with 64-bit Java 7 installed (as well as I think 32-bit Java 7).
Long story short, the only way I could get either tool to recognize the fact I had any sound recording devices at all was to run it in Internet Explorer 64-bit (heaven forbid!). Hopefully this helps someone – if you know why this is, I’d be curious to find out.
Boost is a great set of libraries that is pretty generally available – on Linux, that is. On Windows, though there are installers available, I tend to have better luck building it myself, though I always need to go digging for the instructions I wrote “last time” I built it. So, here for my reference and yours, is how I build Boost, for Visual C++ version X: (pretend it’s all on one line)
bjam --build-dir=vcX toolset=msvc-X.0 architecture=x86 link=shared
threading=multi runtime-link=shared variant=debug,release
--without-mpi --prefix=boost-vcX-install stage
For a 64-bit build, I add “x64” to all directory names, and this parameter:
Git is a slick revision control tool – if you haven’t used it yet, check out (IMHO) the best resource/tutorial on it: the Pro Git book.
Not only is it slick for people to use, it’s also really easy to write shell scripts to do repetitive work for you. The two examples I’m showing today come from my work on VR Juggler.
I had been working with the VR Juggler source code using an automated git-svn mirror for some time (run using Jenkins and the scripts in my jenkins-svn2git repository), which worked pretty well. At least, a lot better than when I was just using SVN directly, since I don’t have commit access on the project. Eventually, upstream decided to switch to git (yay!) which they did a nice job of doing (authors all right, branches, tags, etc.), but now I had a problem – since they didn’t use git-svn exactly the same way I did, they had no commits in common with my mirror. (In addition to the authors thing, in this case, they had a https google code svn address, and mine was the http anonymous address.) I wanted to be able to relatively easily move my “work in progress” branches from my old mirror to the new official one (so that they branched from the same original SVN commit), so I wrote a little script to do it. Step 0 is to add the new official upstream as a remote to a clone of your own repo and fetch. You’ll see a no commit commits warning which you can smile and ignore. I made a fresh clone so that if something went wrong, nothing was lost.
I’ve posted my git-svn port-branch script as a Gist for your enjoyment and use. It’s easily the most involved git-related script I’ve ever written, but it follows essentially just these steps:
I’m used to the process of working on a fix, getting a nice topic branch with just those changes, then using a bug tracker/pull request/git format-patch to submit them. On some projects, such as VR Juggler, patches are most appreciated if provided in matching form for both the development version (master, formerly trunk) and the stable maintenance branch (in this case, 3.0). I had done a fairly mechanical process of a git rebase –onto to transplant my topic branches back and forth for some time. Since I had accumulated a number of unsubmitted patches, however, I realized I should just automate the process.
Thus I present another shell script as a Gist: port-patch.sh automatically forward-ports or backports your patches in topic branches. This one is more likely to need a little manual tweaking for use outside of VR Juggler, since I wanted it to figure out whether I was porting from 3.0 to master or vice-versa, but it’s a definite timesaver. Its basic process is the following:
Video card manufacturers mastered the complicated-model-number trick long before the CPU manufacturers did. I can never remember the order of the NVIDIA GPU codenames and what series they correspond to, so I’m posting this as a note to self and Google. Based on primarily on information from: http://en.wikipedia.org/wiki/Nvidia_Quadro and http://en.wikipedia.org/wiki/Comparison_of_Nvidia_graphics_processing_units
I do update this from time to time with new data.
I’ve been setting up a number of new Ubuntu installs recently, and so I thought it would be useful to record somewhere the Personal Package Archive (PPA) and third-party repositories I frequently use. You can add any of these with sudo add-apt-repository or by pasting them into the add repository dialog in Software Sources. I have all these enabled on Lucid successfully, but no guarantees that they will all successfully coexist without breaking things on your system, Lucid or otherwise.
If you’re much of a Windows user, you’re probably aware that Ctrl-Shift-Esc will quickly open the task manager there, which is a handy thing to be able to access quickly – take care of an out-of-control app, see what’s pulling so much CPU power, etc. On GNOME (for instance, Ubuntu Linux), the System Monitor does the same task, but there’s no equally quick way to open it by default. You can add the system monitoring applet to your panel which will give you one-click access, but if you’re like me, you find yourself reaching for Ctrl-Shift-Esc first anyway.
Without further ado, how to make Ctrl-Shift-Esc do the same thing! (This is on Ubuntu Lucid, but should be pretty similar on most GNOME desktops.)
Just a quick heads-up: I’ve updated the VR Juggler Ubuntu/Debian packages I maintain on Gitorious and that are built in this PPA repository. There is now a Ubuntu 11.04 (“Natty”) build of VR Juggler 3.0 and its dependencies alongside the other distributions. The instructions I previously posted on installing VR Juggler on Ubuntu from packages is still accurate and now applies to those of you using the latest Ubuntu release.
There were only minor changes from the Maverick packages. Most notably, the Audiere plugin for Sonix is gone because Audiere is no longer being packaged or distributed by Ubuntu or Debian. (If someone would like to pick up where they left off I’d be happy to collaborate!) Also, I temporarily disabled the VRPN Gadgeteer driver until I get a chance to make an updated, nice package of a recent version of VRPN. I’m almost done with one – just have to test it. When that’s done, I’ll push a new build with this driver re-enabled.
If they work, or don’t work, for you, let me know! You’re welcome to help maintain these packages – many hands make light work. Their source is over on that gitorious link above, and there’s docs in the gitorious wiki, though they’re sparse – happy to help clarify if you’re interested. I’d also be interested in trying some alternate build service together with/instead of the Launchpad PPA’s – the openSUSE Build Service looks promising but I haven’t had the time to really look into it. So, there’s a side project for you 🙂