Category Archives: Uncategorized



In my journey to ARM mastery, I’ve been interested in SWD as a way to program, control and debug an embedded ARM core. Due to my obsession with cheap boards and open source, finding a satisfying solution to my SWD connectivity needs has been a journey in itself.

There are commercial SWD interfaces available, like ST-LINK and JLink. But those aren’t open source. You can get cheap JLink clones from China, but those appear to just use stolen firmware images from the JLink products. This interface, with open source firmware, seemed promising, especially since I could get a firmware binary running on a cheap VCC-GND STM32 board I had around. But since I couldn’t build the source without the Keil tools, and the free version of the Keil tools didn’t seem to work, and the free version of the Keil tools is not open source, my hunt continued.

Whereupon I landed at IBDAP. Someone had taken the same journey and decided to market a board and GCC/makefile-compatible open source firmware, using the CMSIS-DAP standard that is itself an open product of ARM. Very cool. The only downside being that Armstart is sorta out of business. I ordered what may be the last IBDAP board they sell, because after I bought it, everything on their site was marked as sold out. It took a bit of (email) arm-twisting to get them to ship me the board. But, it arrived, I was able to build the firmware (flashing it using another SWD interface), and I’ve connected to a couple boards through it with apparent ease. I may have finally now reached a point in my journey where I can release my obsession with open SWD.

The board may be found at other places, like Adafruit.

In case the Github link disappears, here’s an IBDAP fork. Here’s the firmware I built most recently, as a check for your build/board. Below are some documentation resources.

user manual, schematic.


Raspberry Pi 3 WiFi power management

Got my Raspberry Pi 3 today (on Pi day, no less).

Playing with WiFi, I was getting a lot of stuttering, pauses, slow-downs, whatever you might want to call it. Pings bounced around in the range of 300ms and 2000ms, and interactive ssh was annoying. iperf, surprisingly, was showing me good-enough numbers.

Poking through the iwconfig man page, my best guess was that power management was possibly related to the problem. Doing a
sudo iwconfig wlan0 power off
turned off the power management stuff, and not too surprisingly, the WiFi stopped misbehaving. There are surely more refined adjustments that could be made, but I’m not worried about power management at the moment, so it’s a solution for me for now.


Never delegate passion

In a great documentary about Charles and Ray Eames (people I had never thought to be interested in before I watched it), it was said that Charles said, “Never delegate understanding”. Great motto; one that, after I heard it, I realized is a big part of my approach to life. I’m happy to do extra work if it leads to extra understanding. I’m happier learning how to derive an equation from first principles than just memorizing it. I’m happier to chase a little detail through the eye of a needle than just assume that someone will take care of it.

But enough about my approach to understanding, let’s talk about something else about me. Because I also realized lately that, while I could blame my aversion to corporate cubicle life on the idea that I’d rather not work for someone else’s profit, it’s more accurate to say that I don’t want to delegate passion. That’s kinda what you’re doing, as an employee*. You go and work on someone’s thing, without any significant concern about whether you’re really passionate about it, assuming that someone else will supply the passion and you can just do the work. And, well, that’s fine, too, of course. It’s a totally workable system. Just not for some of us. I’d say, “never delegate passion”, where ‘never’ is defined as I always define it in my speech, as ‘never (unless you want to)’.

(Another, random, link about the Eameses: The Information Machine. Great if you love computers or 50’s modernist style cartoons, best if you love both.)

* Unless you happen to be an employee whose passions really do align well with the mission of the corporation, in which case, you may stop reading.



A brief guide to going to the library to revivify your mind

(This is a distillation of my long personal experience with the technique; take from it what makes sense to you.)

This is a way to till up your mind-soil and get little thoughts into solution to crystallize them into seeds of tranquility, or something. I mash my metaphors purposefully, because this technique works by mixing up your thought-patterns to get you out of those boring little loops.


Set aside a two to three hour span of uninterrupted time. It’s best that you be unhurried and unpressured, but this technique can also help you get to that state, so no worries if you’re worried.

Walk to the library. Or use some other human-powered locomotion. Getting your body energy into the act helps get things flowing. On your walk, let your mind drift. If you’re troubled by something, just go ahead and ponder that, but expose your worries to a layer of honest analysis, too. If you’re untroubled, just think about kitty-cats and flowers and such. This is the tilling part. You’re preparing your mind by loosening it up.

Upon passing through the threshold of the library, put aside any worry-type thoughts. In the library, you’re going to run a simple little exercise, two to four times. This is the solution/crystallization phase.

Identify a section of the stacks. If you have a tendency to visit one place in the library a lot, you can start heading there. Or if you have a topic that’s been on your mind a lot lately, type a few keywords into the catalog and choose a book at semi-random from the list and go toward it. Or if you just see a space that seems to be relatively free of other people, drift there. The idea is not to find a specific book or a specific topic, but just to get near things that you’ll probably like.

While moving casually toward your target area, keep your eyes open for any interesting oddities in the stacks. Books that attract you with their nice colors or hot keywords or cool titles or I’ve-always-been-curious topics or whatever. If anything looks good, you’ve found your place. Otherwise, keep going to your original target.

Grab a book. Don’t give any thought to whether you understand the topic well enough to read the book, or whether it’s something worthy of discussion at the watercooler, or whether you’d normally be seen reading such a thing. Just grab something good. Open it to a random page about a third of the way through. You could use the table of contents, or something, too, but probably just go with randomness. Start reading. Don’t stop because they’re referring to some term defined previously in the book, or there’s an equation that you don’t like. You’re not trying to win an award for Awesomeness In Reading Stuff You Already Understand, you’re just activating parts of your brain and getting excited about some ideas and how they connect.

Read for five to fifteen minutes. Maybe break that time up in between two or three books in the vicinity that grab your attention, or just stick with the first one. If you spend too little time, you won’t really get things activating. If you spend too much time, you won’t really get things stirred up.

Repeat the exercise a few more times. I know I already said, that, but it bears repeating. Two times (total) will at least start cross-pollination of ideas, four times is probably best if you have the inclination.

While you’re working on your second or third go-round, you’ll find that things are starting to connect. Ideas expressed in a book about machine learning algorithms will be echoed eerily in a book about sketches by famous designers. This is the crystallization, and it pretty much always happens if you’ve run the exercise according to the basic outline above. It’s pretty awesome.

After a sufficient period of crystallization, you’ll be all revivified and feel better. You can head home, and as you do, just keep going on the various connecting threads. Also, look at trees and sidewalks and telephone poles. Sit in a park for a few minutes. That kind of stuff.



Playing in communities of practice

I love playing in communities of practice. Not many things light up my brain more than the sort of flow I can achieve when I’m embedded deeply enough in a community of practice that I can smoothly follow a technical discussion, or better yet, anticipate some-but-not-all of the structure and details of a discussion, or better yet, enter into a creative dialog with another practitioner, or better yet, achieve actual artifacts of note within the field. A minute of that stuff is worth days of small talk and regurgitated opining, to me.

(By the way, the book Communities of Practice is pretty cool, from what I was able to read before someone else recalled it.)

At a recent Ames MakerSpace meeting, we were talking about the mission of the group. There already exists a mission statement, but if I were to state my personal mission as a member of the group, it would be something along the lines of: to facilitate growth within, and connections between, local communities of practice. I suppose that sounds pretty generic, but there’s a reason: any community of practice is fun to interact with if my interlocutors bring passion*.

It also might sound strange that I didn’t mention the tools and the space. That’s because the people and connections have a lot more value to me than those. But, I should add that tools and shared space are an important part of the process by which a community of practice forms and deepens its intimacy. These, and the artifacts and works-in-progress created by the community, embody a level of sharing/communication/expression that can’t be achieved by talk alone. It’s amazing what even just a sprinkling of that stuff adds to the interactions.

Seeing and helping others succeed is a great joy for me (I assume that’s true of most other people, too). Aligning myself with appropriate communities of practice helps to ensure a somewhat steady stream of such experience.


* In my time with the MakerSpace, I’ve heard people express their passion for, among other things: web development, sewing, miniature cattle, wire sculptures, storm doors, coffee brewing, rapid prototyping, bicycles, recycling electronics, gardens, metal fabrication, alternative currencies, fish, GIS, CNC, radio protocols, ecology, intranet collaboration, solar cells, robots, CAD, image analysis, power tools, winter dress systems, … I’m just scratching the surface, but that’s already a pretty great list. As measured in units of passion-diversity-intensity-per-hour, it’s been a good investment for me.