Sunday, July 16, 2017

A Sailboat in our Microwave - Adventures in Sneaky Art

We have a good friend's 8 year old visiting us, and before his arrival I checked out Sneaky Art: Crafty Surprises to Hide in Plain Sight. Shira had to step out for part of today, which made it the perfect time to put the book to use.

The idea behind Sneaky Art is to create whimsical little projects that will bring a smile to an unsuspecting individual. Just like this guy did at the entrance to the Pentagon. The book offers 24 different ideas to get you started on your career as a sneaky artist.

The first project we tried was crafting a tiny sailboat. We cheated a bit, opting to use rubber bands and tape instead of glue to hold everything together. But the result was, after just a few minutes, a craft ready to set sail. After mulling over our hiding options, we decided to float the S.S. J.J. in a bowl of water in the microwave for Shira to discover. Action shot!

We tried a few of the other projects too, with the cupcake wrapper fortune cookies being another hit:

These were even easier than the boat to make: fold cupcake wrapper, tape and stuff in a strip of paper with a fortune written on it. For bonus points, add some lucky numbers on the back of the fortune.

We had fun both making the creations, and watching Shira discover them. We haven't yet experimented with leaving art projects for the public to find, that's up next.

While I'm a fan of nearly any kind of crafting, I think Sneaky Art is really on to something. When the topic of art comes up, we often focus mainly on mastery of technique. Sneaky Art gives kids (and really, anyone) a chance to focus on impact: how did your creation make a loved one or stranger feel? This is huge as it frames art as a tool to effect change, not just something you work to get good at. In other words, it's not just a tiny sailboat floating in a microwave, it's the seeds to change the world through the power of art.

Thursday, July 13, 2017

Indoor Ballistics: The catapult you need to build today

Did you know that you're only 14 craft sticks and a handful of rubber bands away from having a functioning catapult? It's true! The source for this project is 101 Kids Activities That Are the Bestest, Funnest Ever! (thanks Elana for getting the book for me!), but you can find versions of it all over the web.

Here's what our version came out looking like:

And here's an action shot!

Destruction was never so much fun!

If anyone asks, we built this as a STEM project, and not as a tool for bringing down the Tower of Doom used by Pirates and Ninjas.

Wednesday, July 12, 2017

Weekly Discoveries - On Location Guitar Awesomess, Create your Own 8-bit Music and a 9 Minute Rock Fest

The last couple weeks have been crazy, so here's a twofer: last week's Weekly Discoveries and the week's before. Enjoy!

Apparently dragging a guitar, amp and other equipment out to a beautiful location and playing ambient music is a thing. And it's an awesome thing at that. Check out these examples: Ambient Song #22, AMBIENT GUITAR XIV - Garden #3 and Your Head is a Living Forest. You'd think that once you heard one droning guitar in the wilderness you heard them all, but this isn't so. These videos are both relaxing and quite interesting. It's a genre worth checking out.

Along this theme, check out Arli Ambient Guitar Soundscapes Looping Pedal Demonstration, which shows how one guy can make incredible sounds using a guitar, looping pedals and a few accessories. His on the fly creation is quite remarkable.

I know it's so mainstream, but I'm loving Thunder by Imagine Dragons. OK, the video is a bit too wacky for my taste, but the song is awesome. They keep producing awesome rock-out-music. How do they do that?

Apparently I'm a sucker for clever dancing music videos, and K.Flay's High Enough delivers in that department. The fact that the whole video plays out in a cramped camper only increases my respect for the dancers involved.

I'm not using a fan of 9 minute songs packed with guitar, keyboard and drum instrumentals, but Death of a Coyote Woman by All Them Witches is getting me to re-think my position. This song rocks. It shouldn't work for me, but it does.

You should really take the time to listen to all of Chuck Cannon's songs over at EOP Live. There's plenty of creativity in his songs, and he's got the voice to make them sound great. It was a toss up as to which song to add to last week's Weekly Discoveries. Ultimately, I chose Money Don't Matter, but I could easily have picked half a dozen others. At the moment, Money Don't Matter has 35(!) views. In a universe where a song can have millions, if not hundreds of millions of views, it's easy to forget that there's plenty of music out there that isn't getting much of any love at all.

This last week's discoveries include two videos that talk about creating 8-bit music. One takes the approach of using a JavaScript library, and the other uses If you're interested in creating 8-bit music (of course you are!), then these two videos provide a simple, non-musician friendly way, to get in the game. is an especially clever solution, because all you need is a browser window and you're off an running. See, here's what you get if you spend 20 seconds creating a tune. Cool, right?

Check out all the discoveries here and here:

Tuesday, July 11, 2017

TRS-80 Model 100 Hacking - Getting Connected

While it was fun firing up my Dad's TRS-80 Model 100 and writing a bit of code for it, I was left with a choice: leave this as a fun little experiment, or continue hacking away. After weighing the alternatives, I've opted for the latter: let's hack on the Model 100!

I made this decision for two reasons. First, I've always had an interest in playing with small systems. I could easily imagine an Arduino chip and simple form of output (maybe an LCD, maybe just a bunch of LEDs) that would let me run Forth or Lua in an embedded way. It would be sweet to see how much functionality I could wring out of such a small platform. Heck, the pieces are almost there to make this a wearable. Just imagine it: a watch running on your wrist that was little more than a Forth interpreter? Alas, the devil is in the details, and I've never found quite the right combination of hardware to justify jumping into this project.

The TRS-80 Model 100 is one form of this this hardware dream. Think of it as a computer, and it's a joke. Think of it as microprocessor, plus a simple LCD screen and a keyboard, and it's exactly what I describe above. Why build my own embedded system when I have one right in front of me?

Maybe one day I'll get to that Lua or Forth powered watch, but for now, I've got plenty I can learn about embedded systems right from the Model 100. Heck, the Model 100 is powered by an Intel 8085 processor, which was apparently used in the Mars rover Sojourner. If it's good enough for NASA, it's good enough for me.

The other reason to continue to hack on the Model 100 is more philosophical. In some many ways, the computer is a collection of constraints: it has a tiny amount of RAM, a terribly slow processor and is powered by horrendous programming language (line number BASIC). But, as any Haiku author or Twitter novelist can tell you, constraints bring out creativity. My hope is that by learning to operate in such a hostile environment, I'll stretch my skills and change my perspective as a programmer. At the very least, I'll be more thankful for the modern hardware and programming languages I have at my disposal.

OK, so I'm doing this.

The next challenge to tackle was finding some way to hook the Model 100 up my computer to transfer files. I figured if I could set up a basic serial connection, then I can be confident that I can use the Model 100 knowing that I can publish and save my work with relative ease. A google search on the topic came up with some interesting leads, but it was ultimately this article that saved the day: Surfing the Internet… from my TRS-80 Model 100. Sean Gallagher had a more audacious goal than me: he want to surf the web from his Model 100. I just wanted to send bytes back and forth to another device.

The invaluable recommendation in his article was to suggest that you can buy the necessary null model cable to connect a Model 100 serial port to a USB device at I headed over there, and at 12:26am dropped an e-mail to the company asking for advice. I specifically linked to Sean's article.

12 minutes(!) later, I had an e-mail back in my inbox. David at Retro Floppy told me exactly what I needed, and even confirmed the cables used in the article. Now that's customer service! I bought the cables and waited.

A few days later, the cables showed up, and I was eager to see if I could get my Mac and the Model 100 to exchanges some bytes. Everything fit when plugged in. That was a good sign.

This StackOverflow article suggested a few apps for doing low level serial communication on a Mac. From the command line, I ran:

sudo screen  /dev/tty.usbserial-A105ZB14 9600

On the Model 100 side, I opened up Telecom. It took a few tries, but I was able to use the Stat command to setup the device in use. I typed Hello World on my Model 100 keyboard, and text appeared in the screen session! It was corrupted, putting some junk between each character, but it worked!

Rather than debug this further, I downloaded and kicked off Serial. It allowed me to select the USB serial port and showed me what settings to use (9600.N.8.1). I set those values on the Model 100, and tried connecting both again. Success!

We've got the world's most primitive data connection!

That's all I had time for today. Next up, I need to figure out a reliable way to transfer files between the two devices. And once I've done that, I can start on my first hacking project: doing music creation on the Model 100.

Thursday, July 06, 2017

Review: Flying Lessons and Other Stories

A few weeks back, at around 2am, I was done programming but too wired (if you'll pardon the pun) to fall asleep. So I did what I often do and opened up Overdrive, rented an audio book and set it to play for 30 minutes while I dozed. I've done this in the past, and I usually try not over-think what book I listen to. I grab the first one that looks interesting, and it's usually good enough.

Imagine my surprise and delight when I randomly picked Flying Lessons and Other Stories and fairly quickly discovered that I had stumbled on a gem. As is my usual practice, I skipped listening to the introduction, and just jumped into the book.

It didn't take long for me to realize that I was listening to a collection of short stories. After more listening, I realized that they were all targeted to kids. And finally, in the credits of the book, I learned that this book was published in partnership with Sure enough, all the stories involved kids who would be defined as some sort of minority (be it based on skin color, ability or something else).

One of my favorite joys is starting a random book and slowly having the story come into focus. With this collection of short stories, I got to experience that effect over and over again. And in all but one story, I found myself truly loving the tale. At the end of each story I kept thinking, man, how did the author do that? I felt totally invested and connected to these characters, and yet, these were all short stories. Whatever devices the authors used to give the illusion of a sweeping story arc worked well.

Amazon reports that this book is targeted to ages 8 to 12. I'd quibble with that, because as an adult I thoroughly enjoyed it. But still, on the surface it seems that writing short stories for kids wouldn't be that tricky. They're short, after all? And they're kids, how much depth can they expect from a story?

And yet, even a cursory examination of this task makes you appreciate how tricky it is. As I mentioned above, these short stories don't feel short. That means that the author needs to work overtime to make a brief text seem much longer. And theme wise, targeting kids isn't so easy either. Go too light, and kids will recognize it as patronizing and uninteresting. Go to deep, and you'll loose kids. The stories in this collection seemed to nail this aspect. There's traditional kid themes, like fitting in at school and dealing with a crush. But there's also dense topics, like racism, poverty and the death of a parent to deal with. Whether it's the lighter stuff (which, to a kid, isn't light) or the heavy stuff, the book manages to find the right balance of treating these themes with respect, yet, keeping it age appropriate.

The diversity aspect of this book is another tightrope to walk. Do you shun all stereotypes, or embrace them? Again, the book seems to find a good balance here, both rolling with, ignoring and at other times challenging stereotypical behavior.

In the closing chapter of the book, where I got confirmation that diversity was a key theme in the stories, I learned about the work of Walter Dean Myers and a pivotal op-ed he published in 2014: Where Are the People of Color in Children's books? I'd highly recommend taking a few minutes to read the op-ed. Meyers makes a strong case for how diversity in books isn't just important for minorities, but for those kids who count themselves in the majority.

I've already picked up a copy for a friend's 7th grader who remarked to me that he didn't yet have firm reading plans for the summer. I'll have to get him to give me his own take on the stories and share them here.

Wednesday, July 05, 2017

A Digital Walk Down Memory Lane: Hacking the TRS 80 Model 100

Any list of Greatest Computing Devices of All Time needs, in my opinion, to feature the TRS 80 Model 100 near the top. My Dad had one of these laptops growing up, and it was truly revolutionary. It was remarkably light (especially when compared to the Luggable of the day), ran for 20 hours on 4 double AA batteries and had an exceptionally high quality keyboard (even by today's standards). It included a built in 300 baud modem, which meant you can shuffle data on and off the device either by serial port or telephone line. In exchange for these remarkable features, you had to deal with a screen that was a measly 8 lines, and a system with 32KB of storage. (Though apparently, both of those limits were hackable to some degree.)

A couple of weeks back my Dad gifted me his original Model 100. In my experience, most computing hardware doesn't age well. What was once cutting edge tech, turns into bulky, plastic junk through no fault of its own. But not the Model 100. Slipping it from its black leather-like case, I couldn't help but feel like I was still holding a premium piece of computing tech.

(The banana is provided for scale)

I popped in 4 AA batteries, flicked the on switch, and the device immediately snapped to life. Oh yeah, I had forgotten that the Model 100 had nearly instantaneous 'on' with effectively no noticeable boot procedure.

I'd always thought of the Model 100 as the ultimate writer's tool, as it provided a high degree of portability with nothing to distract the author.

But, having spent a little over an hour playing with the device, I have a new found respect for it. This is a geek's dream. The computer appears to be essentially a Basic powered Read-Eval-Print-Loop. Sure, there's a text editor, and some sort of address and scheduling app, but really, this computer is little more than a Basic interpreter. There's no shell of any kind, just a Basic prompt. Want to delete a file? Use a Basic expression. Want to set the current time and date? Again, execute some Basic.

The quick reference guide for using the computer is a Basic programming reference manual, which hearkens back to a day when you really had to read the manual.

The Basic interpreter wasn't just a crude OS shell. As books like 44 Programs for the TRS-80 Model 100 Portable Computer show, it was intended to let you whip up little apps like you might find on your computer and phone today. Want to do cash flow analysis, calculate earnings on your investments or keep track of your running? A little Basic program was the answer.

I typed in the 'Daily Codes' program from the above text, and sure enough, it worked:

The codes program generates random numbers which can be used by a business as a 'secret' code for the week. Man, it must have been sweet to spend a few minutes typing this program in and then have the compute take over this tedious task.

I also experimented a bit with having the computer generate tones. I had high hopes of having it generate some musical tunes, but alas, I got stuck on it and decided I'd sleep on the problem for now.

After having fiddled with Basic for an hour, I have to say that using a line-number based programming language seems like an exceptionally idiotic choice. Either forth or lisp, both of which existed in the 1980's, would have been an infinitely better option than Microsoft Basic. There's a certain simplicity to GOTO 250 I suppose, but there's almost no support for modularity of any kind, which means that the system simply can't scale.

But the real demise of a programming environment as Kill App has to be the spreadsheet. Even the most primitive spreadsheets could trounce Basic (and other programming languages) in terms of ease of use and business-problem-solving bang for their buck.

Despite Basic being a nightmare, I'm still impressed with the device and what the makers were trying to accomplish.

But what's the next move? Do I find a way to hook up the Model 100 to my desktop or cell phone over a serial connection? Getting data on and off the laptop is going to be essential to using it. Once I can do that, I can install forth on it and potentially have a far better programming environment at the ready. And then? Oh, who knows.

Regardless of how functional the Model 100 is today, I'll say that it's definitely been an interesting glimpse in the past of computing and no doubt still has room to inspire.

Monday, July 03, 2017

All-Business - An info first watch face (including my wife's current mood)

A couple of weeks back I heaped major praise on WatchMaker for being a sweet development tool for Android Wear watches. My first attempt at building a watch face for my Zenwatch 3 showed that I could write modular and interesting code that ran effortlessly on my watch. What it didn't do is provide me with much of a usable watch face.

With a bit more work, I was able to correct that. I give you my very first usable watch face: All Business. Let's walk through it (clockwise, of course):

690 - The current number of steps I've taken according to my phone's pedometer. The Zenwatch 3 has a pedometer built in, and WatchMaker allows easy access to this value, but the numbers seem absolutely random. I'd walk 50 steps and the watch wouldn't recognize any movement, or I'd be sitting at the dinner table and notice that I'd taken 6 steps. The algorithm the Zenwatch uses may ultimately be OK. Perhaps over a day, it's reasonably accurate. But my LG G6's pedometer is scary accurate. Walk 10 steps, register 10 steps. To power this number on the watch, I use Taser. Effectively, every 10 steps taken on the phone, I push the value to the watch.

Pressing the number of steps clears it. This allows me to use the step count for individual activities, and effectively makes the watch face interactive.

2017 - The current year.

11:22 - The current time in UTC. Useful for dealing with other programmers I work with overseas. My initial instinct was to add an AM/PM designation to the time, but as a Pebble watch face taught me earlier, I don't really need it. I don't tend to wake up in windowless rooms without any idea of what time it is.

20:37 - The time the sun will set this evening. Pressing this value triggers a Tasker Action which sends Shira my current location. Useful if I get abducted by aliens, or if I'm running late.

99% - My phone's current battery level.

Sun Icon - The current weather graphic as provided by WatchMaker. Pressing this icon explicitly refreshes the weather data on the watch.

99% - My watch's current battery level.

85°F - The current temperature in my location.

7:22 - The current time. Again, there's no AM/PM designation to save space.

Mon Jul 3 - The current date. Pressing this value launches OK Google on the watch. I'm still figuring out the fastest way to get answers from the watch, and this may very well be it.

While not especially sexy, I've found that the above cover most, if not all, my watch informational needs. But wait, there's more!.

While I was describing my new watch face to Shira, she suggested I build something in where she could send me an emjoi to feature in the background of the watch. I couldn't think of an easy way to do that, so I went a different route. I've setup a web page that uses AutoRemote and Tasker to allow Shira to set the background color of the watch at any time. In other words, she can express her current mood on my watch face, whether she's next to me or 2,000 miles away.

My original plan was to pickup the color via an SMS message. However, Google's SMS replacement (RCS) is apparently not compatible with Tasker's SMS handling. The result is that when Shira would send me a text message, it would be invisible to Tasker. Ultimately, I think using AutoRemote is a better solution anyway.

So there you go, a fully functional watch face with a few extras.

I still think WatchMaker is a sweet tool, and I'm really impressed with how effortlessly it integrates with Tasker. If you can imagine it, Tasker and WatchMaker can turn it into watch face.


Related Posts with Thumbnails