My Valentine’s Dead Bug

*** This was a quick copy and paste. I will be back to edit it soon!


This was one of those projects were I had a good idea in hand, but by the end it turned out quite different; and I am quite pleased how it turned out.

I wanted to make my Wife something nice this year for putting up with my various projects. Those on the “list”, those in planning, those in progress, those finished, and some abandon.

My original idea was to cut a heart out of wood, mount the 8×8 matrix in a hole in the middle, and mount the ATTiny on a PCB somewhere. I couldn’t make up my mind in front or back. While those ideas where being pondering and experimented with, I started on the hard part of the project.

I looked in my stock as I had both the ATTiny85 and 8×8 matrix handy. Wow, that seemed like a first, I didn’t have to order anything. I hadn’t really used the matrix before so I downloaded the Adafruit libraries and hooked it up to my Uno clone and started to play around. I used both the Adafruit_LEDbackpack and Adafruit_GFX. The animations are pretty straight forward. You have to create your image with 0 & 1’s, then call each of them as you need them. 

Here is an example from my code that shows part of the heart being drawn, it is the center square.

<span style="box-sizing: border-box;"> heart2_bmp[] = </span><span style="box-sizing: border-box;"> { </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00011000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00011000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box; margin-bottom: 0px;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span>}, </span>

Text scrolling is straightforward, but for those who are new, lets pick it apart a little bit and see what is going on.

<span style="box-sizing: border-box;"> <span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">matrix</span>.setTextWrap(false); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">matrix</span>.<span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">clear</span>(); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">for</span> (int8_t x=<span class="hljs-number" style="box-sizing: border-box; color: #ae81ff;">8</span>; x>=<span class="hljs-number" style="box-sizing: border-box; color: #ae81ff; margin-bottom: 0px;">-100</span>; x--){ </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">matrix</span>.<span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">clear</span>(); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">matrix</span>.setCursor(x - <span class="hljs-number" style="box-sizing: border-box; color: #ae81ff;">8</span>, <span class="hljs-number" style="box-sizing: border-box; color: #ae81ff; margin-bottom: 0px;">0</span>); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">matrix</span>.<span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">print</span>(<span class="hljs-string" style="box-sizing: border-box; color: #e6db74; margin-bottom: 0px;">"1 short text"</span>); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">matrix</span>.writeDisplay(); </span><span style="box-sizing: border-box; margin-bottom: 0px;"> delay(<span class="hljs-number" style="box-sizing: border-box; color: #ae81ff; margin-bottom: 0px;">100</span>); </span>

To start, the text shouldn’t wrap as a message will be scrolling across the matrix. The first variable, x=8 is where the text will start to scroll across. This example starts on the right and moves towards the left. x>=-100 is allowing room for the characters. I took the total number of characters in my text message and multiple it by 9 and the text displayed correctly. If you miscalculate you might not see the whole message. This happened to me as the original message was about 4 characters and the value was 96. My message was much longer, but I hadn’t changed the 96. Once it was bumped higher all worked out well.

I was using my Uno clone to do the testing. It is just much quicker to make a change and upload it quickly. Everything was moving along great, but I noticed one thing, the message wasn’t oriented right, it was a bit upside down.

There is another command that comes in useful.

matrix.setRotation(<span class="hljs-number" style="box-sizing: border-box; color: #ae81ff;">1</span>)<span class="hljs-comment" style="box-sizing: border-box; color: #75715e; margin-bottom: 0px;">;</span> 

With it you can rotate the screen in any of the four directions depending on where you need/want the pins to orient. Setting it to one put 0,0 in the upper, left-hand corner, with the pins pointing downward. Or as in one part of my code I use the rotation to spin the heart.

Now is was time to program the ATTiny. I do like working with these little guys. They work quite well in a lot of my projects and can take up a lot less space than an Uno. There are some great guides out on the net on programming the ATTiny family of processors. The only hiccup I had was dealing with the Wire library.

While libraries might be compatible within the ATMel family of chips, there is the space consideration. And the ATTiny85 doesn’t have the room of its big brother. There is a Wire library that was made just for the ATTinys, it is also from Adafruit. WireTinyM. Once I updated that it worked much better. I left in both for when making changes and updates. Depending on which one I am using I can just comment out the other. 

During all of this I am still pondering how to make the mount for all of my little bits. I start to look at the 8×8 and the Tiny and figure what the hay. There are only 4 pins that need hooked up. And this would probably look way cooler than protoboard as there is no time to get a PCB fabricated and delivered. It seemed to so simple, 4 pins to 4 pins. It took a couple of tries in trying to find what might look best and also work the best.

Well, it struck me. It had earlier, but wasn’t too hip on the idea at first and then it just started to grow on me the more I thought about it. I got myself a length of electrical wiring. I had a length of 3-wire left over from a kitchen project. I pulled out the ground wire and bent it in the shape of a heart. I would then just be able to hang the matrix and Tiny from the top of it. Shazaam!

After that it was a matter of finding a base (a birch log part that was from a wedding center piece and some Lake Superior lake shore rocks).

Oh last but not least, I had to power it. I was going to use USB cable, but no, that would be just too much hassle. AA?? Naw, too many and won’t last too long. Hey, I have one of those lipos at 3.7, I wonder if it would work? I know the ATTiny will work at 3.3V and that data sheet states the lowest power the for the matrix is 2.7. What the heck. I wired up a JST battery connector and plugged it it – DONE!


Img 1853 3hpmbc0wrk

Secure e-mail review

A while back when I was putting together my domain I started looking at a better ways to secure my email. Free is fine, but free is letting google check out your email and figure out what to try and sell you while taking a peek at your cookies. I took a couple of evenings and started looking at what was out there. Lavabit was in limbo at the time (after shutting down over the Snowden incident) and had heard about 

I signed up for the free account at Protonmail. I used the account for awhile. I liked that there is an iOS app that works quite well. They don’t have or support a desktop app yet, but they do have a nicely done web interface for desktops/laptops. After giving it a good run I decided to sign up for the paid account, just the low-end one for now. I had just delved into the world of BitCoin and since they accepted them, I tired it out. I have to say while getting the Bitcoin was kind of a pain in the butt, using them is easy peasy. And since I purchased my original $90, I spent $40, and I still have $70 something left. This virtual currency is pretty cool. I was greenbacks would do the same thing. 

I like their authentication, their encryption mindset, no logging, end-to-end encryption (even outside of other ProtonMail users), and I just learned about this one self-destructing emails. The default is 28 days. Sending a secure email to a person outside of Protonmail is easy to do. When creating the message, just click on the Encrypt button on the bottom, enter in a password, and continue composing your email. When it is sent, the receiver sees an email stating they got an encrypted email and to click the button to view it. They are taken the the Protonmail server where the message is displayed. It is not ideal, but I do like that secure emails can be sent to all. All of their gear is stored in Switzerland and have very strict privacy laws where government fingers can’t peek at them. 

I kept an eye on the Lavabit web site. Around the first of the year I put in my $$ to reserve a first-in-line spot to get a Lavabit address as well. A few days ago I received the email that they were ready to start taking customers and it was time to pick out my address. Wooo-hooo. The process was easy peasy. Save now I HAVE to use Thunderbird as my email client. Lavabit does support Android, Linux, and Windoze, the Apple world is left a bit out in the cold. That is alright, I have one way in, mail is secure, and I am sure that some Mac developer will save the day. 

Lavabit also provides end-to-end encryption. They also encrypt all layers of the mail being sent, the transport, metadata, and the message itself. They look to provide the most secure email solution. They have developed their own email server, Magna which runs their DIME encryption service (I think I have that right). They are working on a client for iOS and other platforms called Volcano. Being a proprietary client, it will integrate tightly with their server architecture. 

So why two more email accounts. My rationale is that I, I, ok I wanted them. I wanted to try out both services and wean myself off of the “free” mails services of personal information sucking giants. My Protonmail, wrightmac will be for my projects, wrightMac Studio, and the such. I will put the Lavabit account, peterhein to use as my professional address. 

I commend the developers of both software packages and ecosystems on their focus on security and making it accessible to us, but it would be great to have one secure email standard everyone could depend on. I have been around this internet and computer stuff too long to think that it will get there anytime soon. In the meantime I will keep on seeing what is here and what is next. 

Vintage computing strikes again

I was talking with my parents a while back and my mom mentioned my old Atari 400 ( for the low down on the specs). That 6502 at 1.8Mhz, geeeeeeshe Louise! And 16k of RAM to boot!


We both wondered if it was still around Or had gone by the way side. Guess what? The computer that started my computing journey!!!

IMG 9576

Well, heavens to Betsy if a package didn’t arrive yesterday. And yes, that is the way the box was found, open and the lid wouldn’t close, but I was surprised at that it all survived. It even had the fancy keyboard, not the that awful plastic sheet of plastic with bubble switch keys. My friend Phil had the Atari 800 with floppy drives. Well, la’ dee da’! Another friend Nick had an 800 with all the bells and whistles and ran a local BBS from his. Every Saturday morning there was a group that hung out at the local computer shop trading tips, tricks, and software. 

And with most people from this era, we could send hours busily typing in programs from whatever magazine you could buy, find, trade, or borrow. And the magic of trying to save it and retrieve it from tape. I think I lost as much as was saved in the end. 

I remember when I got it, it was for Christmas. Of course being the young, excited lad I was, one afternoon when my parents were out, I pulled it from the closet, ever so carefully pealed back the tape, unboxed it, set it up, and had fun for a couple of hours. They were surprised at how quick I had it setup. I didn’t let them in on the secret until on so many, many moons later. 

I am playing around with a new gallery plugin, so check out the pictures of the unveiling. Much like the NeXT Cube, I am going to see if I can get this one up and running as well. I was really hoping that Xaxon was going to be in the cassette player, but I wasn’t lucky on that note. I am going to have to track down some pieces and parts to get it displaying something once I get it put back together again. Westley was poking around the box and getting curious, so maybe I can get him to help me with this let-me-put-it-in-the-queue project list – LOL. 

IMG 9577

And there was a bonus!! All of the screws for the case were still in the box. They are laying inside the bottom of the case. 

IMG 9578

IMG 9580IMG 9579

macOS 13 beta and (a couple) maker tools – A quickie review

A proud Old School Apple Mac Fanboy since 1986!

I like to keep up on the new OSes when they are released. For many years I had a developer subscription to make sure I could get a hold of the beta releases for software compatibility testing in our environment. Jobs change, but fortunately so did Apple’s policy to providing public betas. I like to test them out when I can to see what new features abound and how compatible my current tool chains are. 

I had a couple hours of down time at work the other night so I decided my spare MacPro 6,1 (12-core/16GB/1TB) would be my High Sierra (10.13) guinea pig. It used to have 10.12 installed along with my work apps; so it seems like a good baseline. I proceeded to the App Store and downloaded it. 

IMG 9469

IMG 9471

My finger was a bit twitchy as the cursor hung over the Install button. “Go for it” I hear in my head. Click. It was going to take some time so I wandered away to get a couple of actions items done. 

I headed back over about 45 minutes later and it was ready for me. I didn’t have a lot of time so this is the quick review part plus I wanted some time left to install the toolchains and apps I used for my maker/hacker projects. I was surprised at how quick it went considering the new filesystem is being used. 

The new filesystem, AFS, conversion went just fine and to date I have not noticed any missing or corrupt files. It is wicked fast compared to the HFS+ it replaces. This alone gives this aging machine a nice boost. It is good to see Apple finally addressing this issue. I was a little jealous of the linux systems running ext4 and ZFS. The new Safari seems nice. I have not played with the Technology Previews that Apple has posted. The block autoplay is a nice feature and one that seems like it should have been there before now. I will keep poking around and post new tidbits as I find them. 

As for the maker tools I wanted to see how the Arduino IDE,, and KiCAD would fare. I took things one by one. I grabbed a copy of the Arduino IDE and it fired right up without argument. I had my traveling Arduino Mini clone with me, so I opened one of the example scripts and uploaded it with no problems. Alright, step two. I get and install it. As of this post, 10.13 has Python 2.7.1 installed. Again I was able to install it without issue. Since I was working on my ESP8266 + OLED + NTP clock (and had it with me) I brought it out and hooked it up. After updating the Arduino IDE preferences and boards and was able to successfully upload the code to the ESP8266 NodeMCU clone. 


IMG 9477

Lastly with time running out, I launched KiCAD (I already had it installed). With just a quick look I was able to open my current project and make a couple of quick edits and save the project. 

I have not stirred the puddin’ with the above apps, but on first run there seems to be great promise for an easy transition to High Sierra this fall. I will keep on adding more tools and beating up on ones I already have installed and then reporting back here. 


In light of my issues with my real NeXT hardware, I decided to try and get NeXTStep installed on a VM. We use Parallels for the Mac OS X platform here at work, so that is where I started. 

I was able to find some useful information over at the site. It was a little old, but much of it still very pertinent to this install. 

It kept on coming up with errors on the install. It would hang when trying to boot from the CD image. After various combinations suggested from the web and then a few I made up on my own, I will still left with a broken install process. 

Nuts! but I didn’t give up. The windows people use VMware for their VM pleasures. A while back I had received a copy to test and try and make a Mac OS image. I dusted it off, gave it a quick update and tried it with VMware. I am not sure if it is better software (Parallels has never let me down before) or a little luck tossed in, but it worked well installing on Fusion. 

NS33 Installing

There are still some drivers I need to track down and get installed. From my reading they are needed to get some better video and networking up and going. I am kind of looking forward to pulling out OminWeb from the OmniGroup, and seeing how it looks compared to now. It was (and still is) a wonderful web browser. I don’t use it as much as I used to as they don’t update it very often anymore. There tabs and workspace features are ones I wish I would see elsewhere. 

It was welcoming after the past hours of frustration trying to get this up and working to finally see that wonderful Welcome screen. 

NS33 Welcome

From here on out it was a few clicks before I reach the desktop. What a site for sore eyes. 

NS33 Desktop jpg

The desktop is a little tight don’t you think? I know I do. I am going to go on the hunt for the drivers tonight and see what I can scare up. 

I will also post my notes out on the NeXT site in case there are a couple of other crazies out there. 


A quick post. While I am working on a new post from a project, I have spent the past couple of days doing some administrative work on the site. While I have had it up and running for a spell, it needed some of that tender, loving care to get pages, post, and the such in an order I am getting to like.

In recent hacker news, some inmates REALLY wanted some internet access. So they took it upon themselves to make sure they could get not just the internet, but local prison systems as well. You can read about it here.