A Brief History Of Keyboard Encoding

Photoelectric encoder keyboard configured as ASCII
Photoelectric encoder keyboard configured as ASCII

While typing away on our DIN, PS/2, USB or Bluetooth keyboards one of the questions which we rarely concern ourselves with is that of how the keyboard registers which keys we’re pressing. One exception here is when the keyboard can only register a limited number of simultaneous keypresses (rollover). Even though most keyboards today use a matrix which connects the keys, there are many configuration choices even here, which much like other keyboard configurations come with their own advantages and disadvantages. As a good primer we can look at this article by [Daniel Beardsmore] as he takes us through both historical and current-day keyboards.

Especially before  it was realistic to just put an entire microcontroller with a look-up table into every keyboard, more inventive approaches were required to not only register keypresses, but also encode them for the host computer. The photoelectric approach of the 1960s was one such encoding method, before diode matrices became popular, along with more exotic encoding switches that contained their code already hard-wired on their multitude of pins. One inevitable limitation with these was that of a lack of multi-key support, leading to the development of matrix scan technology around 1970.

Matrix scanning keyboards allow for multiple key presses at the same time, tackle debouncing of keys and were at the forefront of what gives us the ubiquitous and generally boringly reliable keyboards which we use today.

Royal Typewriter Gets A Second (or Third) Life

Usually when we are restoring something with a keyboard, it is some kind of old computer or terminal. But [Make it Kozi] wanted an old-fashioned typewriter. The problem is, as he notes, they are nostalgically popular these days, so picking up a working model can be pricey. The answer? Buy a junker and restore it. You can watch the whole process in the video below, too, but nearly the only sound you’ll hear is the clacking of the keys. He doesn’t say a word until around the 14-minute mark. Just warning you if you have it playing in the background!

Of course, even if you can find a $10 typewriter, it probably won’t be the same kind, nor will it have the same problems. However, it is a good bet that any old mechanical typewriter will need many of the same steps.

Continue reading “Royal Typewriter Gets A Second (or Third) Life”

The Rise And Fall Of Silicon Graphics

Maybe best known as the company which brought a splash of color to corporate and scientific computing with its Indigo range of computer systems, Silicon Graphics Inc. (later SGI) burst onto the market in 1981 with what was effectively one of the first commercial graphics operations accelerator with the Geometry Engine. SGI’s founder – James Henry Clark was quite possibly as colorful a character as the company’s products, with [Bradford Morgan White] covering the years leading up to SGI’s founding, its highlights and its eventual demise in 2009.

The story of SGI is typical of a start-up that sees itself become the market leader for years, even as this market gradually changes. For SGI it was the surge in commodity 3D graphics cards in the 1990s alongside affordable (and cluster-capable; insert Beowulf cluster jokes here) server hardware that posed a major problem. Eventually it’d start offering Windows NT workstations, drop its MIPS-based systems in a shift to Intel’s disastrous Itanium range of CPUs and fall to the last-ditch effort of any struggling company: a logo change.

None of this was effective, naturally, and ultimately SGI would file (again) for Chapter 11 bankruptcy in 2009, with Rackable Systems snapping up its assets and renaming itself to SGI, before getting bought out by HPE and sunsetting SGI as a brand name.

Ultimate Power: Lithium-Ion Packs Need Some Extra Circuitry

A LiIon pack might just be exactly what you need for powering a device of yours. Whether it’s a laptop, or a robot, or a custom e-scooter, a CPAP machine, there’s likely a LiIon cell configuration that would work perfectly for your needs. Last time, we talked quite a bit about the parameters you should know about when working with existing LiIon packs or building a new one – configurations, voltage notations, capacity and internal resistance, and things to watch out for if you’re just itching to put some cells together.

Now, you might be at the edge your seat, wondering what kind of configuration do you need? What target voltage would be best for your task? What’s the physical arrangement of the pack that you can afford? What are the safety considerations? And, given those, what kind of electronics do you need?

Picking The Pack Configuration

Pack configurations are well described by XsYp:X serial stages, each stage having Y cells in parallel. It’s important that every stage is the same as all the others in as many parameters as possible – unbalanced stages will bring you trouble.

To get the pack’s nominal voltage, you multiply X (number of stages) by 3.7 V, because this is where your pack will spend most of its time. For example, a 3s pack will have 11.1 V nominal voltage. Check your cell’s datasheet – it tends to have all sorts of nice graphs, so you can calculate the nominal voltage more exactly for the kind of current you’d expect to draw. For instance, the specific cells I use in a device of mine, will spend most of their time at 3.5 V, so I need to adjust my voltage expectations to 10.5 V accordingly if I’m to stack a few of them together.

Now, where do you want to fit your pack? This will determine the voltage. If you want to quickly power a device that expects 12 V, the 10.5 V to 11.1 V of a 3s config should work wonders. If your device detects undervoltage at 10.5V, however, you might want to consider adding one more stage.

How much current do you want to draw? For the cells you are using, open their spec sheet yet again, take the max current draw per cell, derate it by like 50%, and see how many cells you need to add to match your current draw. Then, add parallel cells as needed to get the capacity you desire and fit the physical footprint you’re aiming for. Continue reading “Ultimate Power: Lithium-Ion Packs Need Some Extra Circuitry”

1950s Switching Power Supply Does It Mechanically

When you hear about a switching power supply, you think of a system that uses an inductor and a switch to redistribute energy from the input to the output. But the original switching power supply was the vibrator supply, which was common in automotive applications back in the middle part of the last century. [Mr. Carlson] has a 1950s-era example of one of these, and he invites us to watch him repair it in the video below.

Most of the vibrator supplies we’ve seen have been built into car radios, but this one is in a box by itself. The theory is simple. A DC voltage enters the vibrator, which is essentially a relay that has a normally-closed contact in series with its coil. When current flows, the relay operates, breaking the contact. With no magnetic field, the springy contact returns to its original position, allowing the whole cycle to repeat.

Continue reading “1950s Switching Power Supply Does It Mechanically”

Heating Mars On The Cheap

Mars is fairly attractive as a potential future home for humanity. It’s solid, with firm land underfoot. It’s able to hang on to a little atmosphere, which is more than you can say about the moon. It’s even got a day/night cycle remarkably close to our own. The only problem is it’s too darn cold, and there’s not a lot of oxygen to breathe, either.

Terraforming is the concept of fixing problems like these on a planet-wide scale. Forget living in domes—let’s just make the whole thing habitable!

That’s a huge task, so much current work involves exploring just what we could achieve with today’s technology. In the case of Mars, [Casey Handmer] doesn’t have a plan to terraform the whole planet. But he does suggest we could potentially achieve significant warming of the Red Planet for $10 billion in just 10 years. Continue reading “Heating Mars On The Cheap”

Fortran And WebAssembly: Bringing Zippy Linear Algebra To NodeJS & Browsers

With the rise of WebAssembly (wasm) it’s become easier than ever to run native code in a browser. As mostly just another platform to target, it would be remiss if Fortran was not a part of this effort, which is why a number of projects have sought to get Fortran supported on wasm.

For the ‘why’, [George Stagg] makes the point that software packages like BLAS and LAPACK for Fortran are still great for scientific computing, while the ‘how’ is a bit more hairy, but getting better courtesy of the still-in-development LLVM front-end for Fortran (flang-new). Using it for wasm is not straightforward yet, due to the lack of a wasm32 target, but as [George] demonstrates, this is easily patched around.

We reported on Fortran and wasm back in 2016, with things having changed somewhat in the intervening eight years (yes, that long). The Fortran-to-C translator utility (f2c) is effectively EOL, while LFortran is coming along but still missing many features. The Dragonegg GCC-frontend-for-LLVM project was the best shot in 2020 for Fortran and WebAssembly, but obsolete now. Classic Flang has been in LLVM for a while, but is to be replaced with what is now called flang-new. The wish by [George] is now to find a way to get his patched flang-new code for wasm support into the project.

In the article, the diff for patching the flang-new toolchain to target wasm is provided. During compilation of the standard Fortran runtime it was then found that the flang-new code assumes that target system sizeof() results are identical to those of the host system, which of course falls flat for wasm32. One more patch (or hardcoded hack, rather) later the ‘Hello World’ example in Fortran was up and running, clearing the way to build the BLAS (Basic Linear Algebra Subprograms) and LAPACK (Linear Algebra Package) libraries and create a few example projects in Fortran-for-wasm32 which uses them.

The advantage of being able to use extremely well-optimized software packages like these when limited to a browser environment should be obvious, in addition to the benefit of using existing codebases. It is certainly [George]’s hope that flang-new will soon officially support wasm (32 and 64-bit) as targets, and he actively seeks help with making this a reality.