Tuesday, December 23, 2014

Project Box explorer

I've adapted my "Automated CAD design" system to go a few steps further and have it generate all the data and metadata needed for an interactive website that lets you explore a canned(for now) set of design permutations.

I've got a lot of polish to do on the html itself, but I finally got it to a minimally viable web app.

Check it out: https://anibit.com/box

Friday, December 12, 2014

A blog post about a video about a blog post.

I attend monthly meetings at Triembed, a hobby electronics enthusiast group in Central North Carolina.

The group holds 2 hour meetings, and in the first hour, people are invited to present things they've worked on, If you're convenient to the Raleigh area, and can make it to NC State's campus on the second Monday evening of the month, you should check it out! It's a great group of people.

At last week's meeting, I gave a brief talk about my "Automated CAD design" post. Pete Soper, one of the founder's and organizers of the group, was kind enough to edit and post the video of my talk to Youtube. If you've read my post, I don't have much new information in the talk, but I do say "um" a lot. (I have a secret podcast I've been working on, and I probably would have published it by now if I could stop saying the u-word so much).

Anyways, thanks Pete!


Sunday, December 7, 2014

Stupid Simple Website Metrics

I wrote a tool that I am open-sourcing to keep track of website server performance. It is very un-fancy. It tries to do one job and do it well: Log and display page load times. (Wait, is that two jobs?)


Over the past several months, I've spent way more time than I had anticipated stressing over, testing, and trying to fix the abdominal performance I had on anibit.com. I was using a low end hosting service intended for personal websites, which I had expected to on the slower side of things, but it got so bad that page loads could take up to 45 seconds. That was even at times when I was the only user other than the failed spam-bot log ins once a minute or so. I would have been satisfied with 6 second loads even though that is considered a generally poor user experience. Something had to give. Anibit was on a shared server with probably dozens (my host service doesn't reveal that I'm aware of how many websites share your host). Any of them could misbehave and bring the server to it's knees until the hosting service brought the hammer down on them, which it frequently needed to do.

Friday, November 21, 2014

Followup to my "Automated CAD Design" post.

I received a lot of positive feedback on my last post, and some of the ideas posted on the sites that picked it up gave me the inspiration to write this follow up. There were some good ideas and some questions posed so I thought I'd try to make  few addenda and clarifications.

Choice of toolchain.

I chose OpenSCAD mostly as the first thing that popped into my head. The nightly version (2014.03 as I write), is fairly stable. The output it generated was well received by most of the other tools I used it with, which included Blender3D, for rendering the preview images, MeshLab for debugging the geometry when I goofed something, and LibreCAD for loading the 2D DXF files to send to my laser cutter. I even used Elmer to do some rudimentary(and probably naive) stress sanity checks.

I did lament that some the really cool features in the bleeding edge version of OpenSCAD were not available, but the generated output of the newer version had some erroneous geometry. I've read on the OpenSCAD forums there may be some versions for download that don't have those bugs.

I had worked with OpenSCAD before, so I knew what it's capabilities and limitations were. I wasn't really tied to OpenSCAD, here are some alternative tools work very similarly. Ultimately, it came down to the devil I knew, and that it supported all of the features that were critical to me: easy to setup, mature and stable, bug free STL and DXF output, and allowing me to programmatically override the skeleton designs by emitting generated design code.

Wednesday, November 19, 2014

Automated CAD design.

[UPDATE: I've written a followup  here]

First, I should get something off my chest, the title is probably a little misleading. "Heavily parameterized 3D case design" might have been a more accurate, but dull title.

I recently kicked off laser cutting services on Anibit, and I plan to augment that service with a lot of specific product designs that I create. I'm a nut for automation and flexibility, and I'm deficient in intrinsic artistic talent. I determined that, as much as possible, I would design the physical aspects of my mechatronics creations in a way that I could easily make changes large and small, and not have to re-do much work.

My first area of focus was an automated heavily parameterized system of scripts for creating laser cut acrylic project cases. This was stupid fun to work on, and my blog post frequency has been anemic this year, so grab some snacks and settle in for a read.

Automatically rendered preview image.

My weapon of choice in this case is OpenSCAD, a text-based parametric modeling program. Don't be intimidated, OpenSCAD is one of the easiest modeling packages I've ever used. Software developers especially will feel right at home:

Wednesday, October 8, 2014

I jumped from a plane last week....

....figuratively speaking, of course. (I'm not crazy! Well maybe a little)

Last week, I ended my employment at my "day job", to work full time on Anibit.com and building a consulting business. It's very exciting, and I'll admit, a little scary. I'm going to be adding a lot of services to Anibit.com (and I'll add a "hire me" sidebar pane to this blog soon).

It's been a dream of mine to run my own company for a long time. I'm not getting any younger, and I plan to die with no regret for something I never got around to. The timing for me personally is as close to perfect as it gets, which is to say not really perfect, but pretty good.

I've also always wanted to do pod-casting and video production. I've started a daily podcast, but I'm in "practice mode" right now, because I need to work on my "radio voice"(I say 'um' in between every other sentence). I've also played around with producing some screencast tutorials, also not ready for prime time. I'm also now in "fail fast" mode on  Kickstarter project that I've been cultivating for 6 months in what little free time I had. I'll go public with those details soon.

Wish me luck in these exciting times, expect to see more frequent updates here, and on Anibit's website. And if you have any Windows desktop, Android, or AVR/ARM cotrex applications you would like developed, give me a shout at anibit.technology[at symbol]gmail[dot symbol]com


Monday, September 29, 2014

Protip: max safe AVR clock speeds at 3.3 volts.

One thing I love about AVR chips is how electrically hardy they are compared to most ARM devices. Most can run at 5 volts, and source tens of milliamps. Most also run well at 3.3 volts, which is especially good when interfacing with an ARM.

One thing to watch out for is that the maximum stable clock speed for an AVR is reduced when running at lower voltages. ATtiny85s cannot run reliably at the internal pll'ed clock speed of 16MHz, when powered at 3.3 volts. I've cried myself to sleep over this, so I offer this cautionary tale. Read your datasheets!


Tuesday, September 23, 2014

Domain woes.

I'm having some issues with my new domain for this blog, so I've temporarily reverted it to the old bytecruft.blogspot.com domain. Atom feeds may or may not be working and please disregard any wierd redirect warnings ove rthe next few days while I work it out.


Working remotely on a Raspberry Pi

I've been trying to do some real work on a Raspberry Pi and it's cramped my style a little bit to cannibalize a monitor and slap an extra keyboard an mouse on my desk.

Working in Raspian Wheezy, you have a lot of Debian Linux at your disposal, so I thought, "I'll just ssh in" That works great, from either a Linux VM, or using Putty on Windows. I needed to run graphical applications and spawn terminals at will, so I really wanted full desktop experience.

X11, the base graphic interface run by virtually all Unix-like operating systems, supports a feature known as display redirection. I used this back in the 90's when I tried to make use of a boat anchor DECstation from my Slackware Linux box. It still pretty much works the same way it did 20 years ago. Before I get too far into how it works, I'm just going to stop and and mention that if all you want is to remotely run graphical programs on your Rasberry Pi, stop right there!  There is a much easier way! X11's server-client model is very powerful and flexible, and is unique in a class of technologies that has stood the test of time, but it's not very "get'er done" user friendly.

Linux machines support Microsoft's "Remote Desktop" protocol with two programs: xrdp and rdesktop.

xrdp is the "Remote Server". This runs on the machine that your want to remotely log into. Note that is this backward from X11, where the "server" is the machine with the physical display, and the client is the (remote) application that generates contents to display.

To install xrdp on your Pi (if using Raspian or other Debian Linux derivative), type:

sudo apt-get update


sudo apt-get install xrdp

You're pal apt will download, setup, and launch the xrdp deamon to start listing for connection requests. If you're parnoid, reboot your Pi to make sure.

Tuesday, August 26, 2014

RAM disks and page files.

I've run across some bad information on the Internet more than a few times lately, and it prompted me to try to counter this misinformation about optimizing workstation computers with gobs of RAM.

The tl;dr version is: leave your RAM alone, let the operating system manage it. Teams of people smarter than you and I have figured this problem out.

The Problem:

The advice is basically that emulating a hard-drive/ssd with system RAM will speed up your system, and that moving your paging file to the RAM Disk can improve system performance. That is just wrong. Why does this idea never seem to die the death it deserves? I think there is a lot of misunderstanding of what a page file is. There seems to be this idea that the reason a PC is running slow is because it's spending too much time writing to the paging file. 

How paging files work.

All modern desktop operating systems support the idea of a paging file. In short, a page file is the operating system's way allowing programs to ask for more RAM than what actually exists. In the old days, when RAM was used up, the operating system simply returned an error when a program asked for more memory. The purpose of a page file is not to speed up a computer, it is to allow your drivers and applications to have access to more memory than is actually available on the system. Indirectly, a paging scheme can make available more RAM for other uses, which does lead to high performance. 

Mental experiment: a femto computer:

Monday, August 18, 2014

New Domain

I'm trying out Google's new Domain service. It seems Blogger is a little paranoid and throws up a ton of "redirect" warnings. I'm hoping that The Goog figures out that both services are their own, and it's the same person linking this blog to www.bytecruft.com. Either that, or I've got something horribly configured.

I swear by Oden, I shall return to this blog in full strength.

In the mean time, enjoy the fruits of my recent tinkering with Javascript. I'm certain that I probably made a lot of js faux pas, but hey, it's Javascript, the business casual programming language. I want to build a lot of "nano" tools or interactive demos, and using the browser is the best way to get the widest reach. Once I get a little more of a command of it, I think I'll switch to something like TypeScript or Dart.

I'm pretty sure that you'll run into issues if you use anything but the latest browsers, I didn't do any testing of old browsers, and probably will always target the latest stable browsers.

I wrote a calculator tool for determining the target address for an AVR microcontroller relative jump instruction. The motivation was personal, I've spent a lot of time recently staring at hex dumps from AtTiny devices, I wrote a bootloader (more on that in a future post), and debugging it involved memory dumps of a lot of dynamically generated rjmp instructions. (AtTiny device do not have hardware support for bootloaders, so you have to fake it in software). I got tired of calculating it by hand, so I wrote a spreadsheet, and thought, "If I could write it in a web app, it would be there forever, and I'd always have access to it".

Check it out at:



Friday, May 16, 2014

List of Software for Makers

I've wanted to make a list of software list this forever, for this blog. I ended up creating one on the Anibit Wiki, since I'm on a drive to jumpstart it with some quality content.


Thursday, May 8, 2014


As the French like to say Crikeys! It's been a long time since I posted. I thought once Anibit.com went live, I've be able to post to ByteCruft mroe often. That was the plan, at least.

I've been pretty much head-down, working on things related to Anibit. I think some more of it will be public soon.

So the title of this post, is my Public Service Announcement about ATtinys. FMUL is Atmel's assembly instruction for "unsigned fractional multiply". Before you make grandiose plans that hinge on doing fast math in hardware, make sure your CPU supports it. Most, if not all, ATtinys do not support hardware multiplication.


Thursday, March 13, 2014


Whew. I've been spending alot of time on my "Sister site". I thought I would have had more time to blog about Fun StuffTM by now. There is so much work behind the scenes that you need to do to launch a site like I want to do. I enjoy it, the supporting work, but it's all still more of the means to an end, I'm enjoying the journey, but I'm looking forward to the destination.

I have to say one stark lesson I've already learned is "Just because you've built it, doesn't mean they'll come". I have very little traffic to my site, and website traffic generation ranks substantially below marketing in requisite business development activities as far as my interests go. I know there are thousands or tens of thousands of people out there that would be interested in the site, but how do I connect with them? Part of building a catalog of existing parts was to attract a regular audience/demographic interested in hobby electronics. That, and other content I have planned (in the next phase, starting soon) would make Anibit bookmark/Feedly-subscription-worthy site.

But I get the feeling, given metrics to date, that there's more needed that just throwing content up and hoping for people to find it. Yet, I don't know what that thing is. My traffic to Anibit so far is dismal, especially if you cull the traffic generated by my personal Social Networking friends(lot of my hits cluster in places I or my family have lived). I supposed I should keep it in perspective (starting a business requires a healthy does of that). Self-bootstrapping with cash on hand like I am doing requires a lot of patience, and the experiences I've had while doing it so far have almost all been rewarding and overwhelmingly positive.


Tuesday, February 25, 2014

Smart Reflow Oven

I generally don't just post links on Bytecruft, but this is beautiful.

This is a reflow oven controller:


My oven controller is coming along, in between doing a lot of behind the scenes work on Anibit.com.


Monday, February 3, 2014

Reflow oven

I started a new project recently, a reflow oven. This time, I've started with the physical build, and the software side of it will lag behind. I've laser cut the case I designed in OpenSCAD, and I couldn't be more pleased with the results.

The case with the "human interface" components - a touch screen LCD a 1 watt speaker.

I have some projects in R&D for Anibit, and I'm going to need to whip up some PCB's. I need a reflow oven, and I'm going to recycle an old toaster-over. I was inspired by this project, which was in turn based on osPID. The touch-screen was something I've had lying around, waiting for a project. 

Sunday, January 19, 2014

Introducing Anibit

I started this blog in part to document my hobby work, and hopefully provide ideas or inspiration to others.

A lot of work that I've done lately has been on something I wasn't ready to blog about... until now.

I'm starting a new website, devoted to hobby electronics and programming, and hope for it to become more than just a website, I'd like to use it to be a more substantial presence, and a greater contributor to the community, by publishing code, tutorials, and designs, as well as hosting forums and of course, I'd love to make my hobby, self funding, so it will feature a store, where I'll sell my original products, as well as resell other product of interest to the makers and programmers out there.

Without further delay:

Anibit Technology:

Like on Facebook:

Or, if you're more of a pluser:

I plan to release most, if not all, of the code for the work I do on Github at: