Small Wonders

I want to write today about the amazing feat of technological advancement illustrated by this picture.

There are two memory systems shown. In the background, a core memory fragment with an 8 byte capacity and resting on top of it, a Micro SD card with an 8 Gig capacity.

Here’s the clincher. While these memory systems both have a similar total cost, the SD card has a billion (‭1,073,741,824‬ to be exact) times the capacity! Now, for such small devices, there’s a lot to know about them. It turns out that we’re all in luck. The YouTube channel Explaining Computers does a fantastic job of… explaining computer stuff! In particular, a recent video did such a fantastic job of making the complex world of SD memory devices simple that I just had to take notes. The summary of those notes is here.

Given the amount of effort that went into the video, I do not think it appropriate to reproduce that material here. You should watch the video for yourself or at least refer to the notes. Instead, I thought it might be useful to examine some actual SD cards and see what can be learned from their various markings:

Let’s start off with an older device. We can see that this is a 4 Gig High Capacity (HC) Micro SD card, with a write speed of 4 MB per second (C4). It has no other attributes specified.

The second example is the popular Samsung EVO, 32 Gig High Capacity (HC) Micro SD card. It has a write speed of 10 MB per second (U1). Sorry, the HC part is just barely legible in the picture, but it is there.

Our last example is the newest device that I own. It has the most attributes, namely: 128 Gig, Extended Capacity (XC), a write speed of 30 MB per second (U3 and V30), a bus speed of 104 MB per second (I) and a basic, level 1 application rating (A1).

Initially, SD media were designed for devices like cameras and other media recorders. That is why earlier specifications placed such emphasis on write speed above all. Lately, we’ve been seeing these devices being used as the non-volatile memory of small computers like the Raspberry Pi. While media recorders typically blast out large amounts of data to one file at a time, applications often read and write to a very large number of smaller files. This usage pattern has resulted in a new emphasis on application performance and the A1 and A2 ratings. A great look at this is also to be found at my favorite source here.

Finally, a disclaimer. I have no relationship with the video blog Explaining Computers, beyond subscribing and being a fan. I receive no recognition or compensation of any kind for this posting. I simply feel that this information is useful and should be made available.

The next time you go shopping for SD memory, it would be a good idea to know what the specifications are and what they mean. It could make the difference between poor or unreliable performance with a slow device or paying too much for performance or features you don’t need.

Your truly

Peter Camilleri (aka Squidly Jones)

Often, Less is Better!

When I was learning Ruby, I was searching for things that could be improved. I was looking for ways I could make things better. One of the areas I was involved in was testing. This should come as no surprise. If you are writing Ruby code, you need to be writing tests. The exact order in which this is done is not my point. Just that tests must be written and run frequently. Here is a typical test run using the minitest facility:

Standard Test Output

To my mind, this was not communicating that true progress of the tests. Consider: What version of minitest was in use? What files were being processed? How many tests were in each of those files? Most of all, why does this output look so boring?

Yes; boring! So being bored I thought: Surely I can do better! I came up with a gem I call minitest_visible to spruce things up. Here’s what its output looks like:

Enhanced Test Output

Much better! Clearer! Nice progress! and so entertaining? Well at least I thought it was a big improvement. It would seem that not many people shared my view. I can see their points. Notice that the bottom line is the same in both cases:

21 runs, 92 assertions, 0 failures, 0 errors, 0 skips

This result line is what counts. These are tests, not video games. They should test the code without a lot of bells and whistles and let you get on with the real work.

I was also told that my little gem did not fit in with the minitest ecosystem. I asked what was meant by this but I never got a reply. I suppose somebody was channeling their inner Linus Torvalds of rudeness that day. I’ll never know. It also does not matter.

I have finally come to realize that the critics were right. The best answer is to keep things as simple and lean as possible. No being fancy; no showing off. To that end I have worked to remove the minitest_visible augmentation from almost all of my work.

Affected gems are: composite_rng, counted_cache, fibonacci_rng, flex_array, format_engine, full_clone, full_dup, fully_freeze, in_array, insouciant, lexical_analyzer, make_gem, mini_erb, mini_readline, mini_term, mysh, parse_queue, pause_output, safe_clone, and safe_dup. The exception is the fOOrth gem experiment that has so many test files that it would be hard to sort out what was happening without a little help. At least for now.

Now these gems can be used by others without the hassle of having to install a non-standard testing extension.

Is less more? I’m not sure. Is less better? Very often, yes it is.

Your truly

Peter Camilleri (aka Squidly Jones)

Work In Progress

At this time, I would like to write about a project that I have been working on for several months. This project is based on the awesome Commander X 16 project created by YouTuber Dave Murray (The 8-bit Guy). Here are two videos where he goes into his vision for the project:

To be clear, other than being a member of the project’s Facebook group, I have no direct involvement with this project. Still, I thought it might be interesting to explore aspects of this new machine. Some ideas that came to mind were:

  • Documenting interesting aspects of the W65C02S processor, especially how this was different from the classic MOS TECH 6502 of years gone by. Special attention was paid to bug fixes for old problems and those quirks that still remain to frustrate the unprepared.
  • Creating an easy to understand memory map of the I/O page and the vital first four pages of RAM.
  • Writing some utility macros to ease the job of writing applications in assembly language. So far these include 16 bit utilities and enhanced branches.
  • Exploring interesting aspects of the design like memory mapping, bank switching, and timing.
  • Looking at virtual machine design as it could apply to this computer.

This has gone fairly well, but now things have been shifting about a bit. The study of virtual machines, began as a simple port of the old Apple ][ Sweet-16 soft processor. Based on information published in the May and November 1977 issues of Byte magazine, I created a port of this interpreter to the newer chip, using newer development tools.

I just couldn’t leave it there though. I then embarked on a deep dive look at the design of virtual machine interpreters from the point of view of implementation on the Commander X 16 and its W65C02S processor.

To be fair, I know that it’s gotten a bit out of hand. The scope of this effort just keeps growing. Soon, I will have to come to my senses and split the VM study off into a separate project so that the Commander X 16 part can be wrapped up.

For now, they are still together. You can see what has been written, warts and all, here on GitHub. Just remember that this is still very much… a work in progress.

Yours Truly;

Peter Camilleri (aka Squidly Jones)

A World Upside-Down.

The Man with the Golden Gun; Actual stunt, no CGI existed in 1974!

So, while this a technically oriented blog, it is not possible to exist outside the rest of the world. In particular, the absolute chaos created by the Covid-19 pandemic. Things are not normal. Not at all. Travel is being discouraged, government services of all sorts are being closed. Shows at theaters; classes in schools; poverty in casinos; club meetings and lunches; all canceled for the foreseeable future.

It is not my intent to make another P.S.A. about what needs to be done. Anyone not living under a rock already knows. Nor do I intend to a launch a polemic on the evils of the mass mistreatment of animals that is the root cause of this catastrophe. Nope. Instead, I would like to share a memory of a freer, happier time. A distant time I like to call “Last Month”.

In Ontario, the third Monday of the month of February is designated as the Family Day holiday. On the Saturday of the preceding weekend, we get treated to the Durham DIY Showcase. What is that, you ask?

It’s a chance to look at work of local hobbyists of all sorts; an event with free admission no less. There was amateur (ham) radio, impressive model railroad setups and much more. One item that caught my eye was this amazing, wooden geared, clock:

I must admit I should have taken a lot more photographs at the event. On the bright side, at least I took this one. I suppose that while all the stuff was interesting, the clock was an amazing mix of art, engineering, and functionality.

Also present was the Durham Personal Computer User’s Club (DPCUC) of which I am a member. I really like the retro computers, Arduinos, and Raspberry (and other) PI machines. Again no pics, my bad.

Also present was a little display of gorgeous minerals. Here are the ones I purchased:

Now as I was looking over the stones and making my selections, there was a concerted effort to inform me of the mystical healing “powers” of these stones. I must admit that I sort of cut them off. I did not need anyone telling me about powers I already knew about. Like the power of things of beauty to inspire us and lift our spirits. Joy is good for the soul.

And this ends this little mini-report. This event should return next year on Family Day and hopefully this time I’ll take more pictures. Even better, maybe I will have a table of my own displaying constructions of interest. In the meantime, I think I’ve gotten my head around the mechanics of mixing text and pictures in WordPress.

Now, WASH YOUR HANDS! Did you think I wouldn’t notice? Warm water, soap, 20 seconds, now!

I’m Back! (Again)

I’d be a liar if I didn’t admit that I have let this web site languish for a very long time. Furthermore, this is not my first attempt to raise it from the dead, even though this last quiet spell is the longest one to date.

It’s been such a long pause in fact that a lot of how WordPress works and is used have changed since the last time I wrote a blog entry. I have a lot to learn before I regain a decent level of proficiency in writing these entries. I suppose I should have the confidence to know that I will figure it all, or enough, out, eventually.

So what’s so different? What makes me think that this reboot will be any different than all the previous failures? A lot has changed: In the intervening years, I became ensnared in a “business” that devoured my time and resources and left me with little to show for it besides notebooks full of hollow slogans and ideas; I became the sole caregiver to two disabled seniors, the care of whom drained all my energy, time, and stamina; and I lost all of my immediate family and suffered, no am still suffering through a horribly painful mourning process. That pain, though crippling, is ever so slowly beginning to diminish.

Yet now, scant weeks ahead of the surging Covid-19 pandemic, I enjoyed a desperately needed vacation in Arizona with my friend Bret and his partner Adam, and their friends Joe and Roger. Two weeks without stress or care. Two weeks of vital healing. Perhaps there is light in the universe after all?

So a lot has changed. I find myself with no responsibilities beyond myself for the first time in 10 years. I have the time, and increasingly, the energy to DO something with my life again. I am slowly taking back my life and the feeling that I can affect its trajectory.

The reality remains: Talk is cheap; Content is King. So I currently have a slate of five new articles in the pipeline. I plan to post at least once a week, and more when topics are abundant. Above all, I plan to write and keep writing. This blog will bear testimony to this in the coming weeks.

I very much doubt that I have anybody left of the cadre who followed my blog. I will need to attract new followers all the while I find new and exciting blogs for me to follow. I’m back… and I have the combination! 😉

PS: I have not forgotten Rascal and Buddy, Adam’s wonderful cats! They made my stay even more special.

Shout Out!

Hello everyone!

Lately, I’ve been getting a lot of notification messages about new users joining this blog. I just checked the numbers and WordPress tells me that there are 7,264 of you out there in cyber-space. Wow! Hard to believe, over seven thousand.

Then I think: That’s a huge number for a blog with so little current activity. In last three days, this blog received only 19 visits. In the same period, 58 subscribers were added. How can that be a thing? How is it even possible? What’s up?

So this post is all about you, the readers and subscribers to this blog. That is the real yous out there. This is your chance to show that you are not web hack or a digital hallucination. How? Write a comment! I’d like very much to hear from you. What do you like about the blog? What would you like to see covered? What’s on your mind? Say anything you like within the bounds of good taste. Still, if you think the blog sucks, say so!  😉

The opinions of real people matter!

Best regards;

Peter Camilleri

Please note that comments with promotions, spam, or links will NOT be accepted.

Another digit please!

Well, it’s a smallish milestone, but I’ve finally made it to the six digit club! Here take a look at this ego gratifying selfie:

I must say that my download study has been given a boost last week as weekly downloads hit an all time high of 3,335. I suspect this may have something to do with my increased level of activity on the stackoverflow web site, but that is largely speculation, It could just as easily be one of those volume blips that occur from time-to-time. I know however that it is not driven be release activity as only one gem was updated that week.

Well onward and upward.

Best regards

Peter Camilleri


The best news I’ve heard in a LONG time!

Hello All!

One of the most pernicious and damaging mistakes, injurious to world progress, has to have been the decision to allow the patenting of software. These patents have served to obstruct progress, destroy innovation, and fatten the wallets of lawyers and greedy patent trolls.

Now, to some, software patents are an awesome idea. If your goal is to provide more work for legal departments at large companies or you need to attack a competitor with the gaul of being better than you, then software patents are for you! They’re also great at destroying small, upstart companies with all of their “new ideas” stuff. Heck, even if the patent does NOT apply, prolonged legal proceedings can serve just as well.

Seriously, software patents are of dubious virtue at the best of times. Now finally, after many years of suffering under the lawyer’s savage yoke, there may be some hope:

Here’s Why Software Patents Are in Peril After the Intellectual Ventures Ruling

This a great article with a video for the tl;dr; crowd. Still, I’d like to focus on a little excerpt from the article that is, I think, the heart of the matter:

Pointing out that intellectual property monopolies can limit free speech, Mayer notes that copyright law has built-in First Amendment protections such as “fair use” and that patent law must include similar safeguards. He suggests that the safeguard comes in the form of a part of the Patent Act, known as “Section 101,” which says some things—including abstract ideas—simply can’t be patented in the first place.

I really hope that this is the beginning of the end for software patents! I really do! I look forward to the day when they and the profits of the trolls are all dead and buried. Just don’t expect me to bring flowers to the grave site.

Best regards;

Peter Camilleri (aka Squidly Jones)


Gem Download Study: 24 Weeks

Well 12 more weeks has passed and it is time for the next installment of the Ruby Gems Download study. The goal of this study was to see if it was possible to observe patterns in the download rates that might lead to useful conclusions about the mix of entities doing the downloading. The gems repository makes this download data readily available. For my gems, you can see that data here.

For the 24 week report there are two main data findings. A graph of individual, cumulative downloads for each gem for 24 weeks and a graph of the weekly downloads for all gems for the same period.


I have collected 24 weeks of data, so here is the graph showing the rate of downloads.

If you look, you will see that the slopes of the lines vary. Some lines are very flat, while others are sloped upward at a much sharper angle. This means that the rate of downloads is also different.


The weekly, combined results show that the rate of downloads is anything but constant. The valleys seem to correspond to periods this summer when large numbers of people would be on vacation (Not me of course; I’m never/always on vacation)

The spiky peaks do tend to correspond to times when large numbers of gems were mass updated. This is especially the case for the last and fourth from last points where a code of conduct and changes to the mini_readline gem were propagated to most of the gems. This is clearly indicative of automated downloading.

This study shall continue. I estimate that the next posting on this matter will be one to study an entire year’s worth of data.

Until then, Many Thanks and Best Regards;

Peter Camilleri (aka Squidly Jones)

Update: fOOrth 0.6.5 released

Hello Again!

This release of fOOrth continues to work its way through the backlog of work on the way to version 0.7.0 and the ultimate goal of version 1.0.0. Here is a brief summary of what’s new in this release:

Updated for V0.6.5

  • Added the ability to override the default method mapping.
  • Added report formatting to allow arrays and hashes to be displayed as bullet points and arrays as neat, efficient columns.
  • Added several deep introspection methods for objects, methods, and classes.
  • Bug Fix: Instance variables may now be created by exclusive methods.
  • Cleanup: The “force compile” flag was another carry over from FORTH that had no place in fOOrth. It has finally been removed.

The code may be found on GitHub and the gem on RubyGems. Also don’t forget to checkout the fOOrth support site on

The big sticking point, now under study, is the issue of defining instance variables in a procedure. This will likely require changes to the method mapping of instance variables, assuming this change is actually made.

In the mean time, best regards;

Peter Camilleri (aka Squidly Jones)