Knowledge Surfing

Knowledge Surfing

As is fitting of the times, I spent a few minutes with ChatGPT/Dall*E to prompt my way to that image. In the distant past (last year), I would have used a search engine, scouring the internet for such an image. If I could even find anything close to what I wanted, I’d then be worried about copyright, and the fact the image is probably also being used by someone else. Now, I know this image is “my own”, at least I think so, and it represents exactly what I wanted.

I went through several iterations before I got to this image, and I could go through several more rounds, tweaking along the way, but it was less than 5 minute’s worth of work. Such is “the power of AI”.

This image represents a couple of things that are going on right now. Between advances in hardware tech, and the rise of new things such as LLMs, and quantum computing, and humanoid robotics, there’s a wave of things that threaten to swamp our human understanding of the world and the way things work. I recently had a discussion with a friend who’s working in the core of all this AI hullabaloo, and they are clearly thinking “what does this all mean? It’s moving so fast we haven’t truly thought about the implications to humanity…”. Just let that sink in for a moment. If you thought you were being overwhelmed as an outsider, the people on the inside are having the same thoughts.

OK, so… What to do?

Read More
Manufactory – CNC Router Table
technology, 3D Printing, Manufactory William Adams technology, 3D Printing, Manufactory William Adams

Manufactory – CNC Router Table

Well, there it is. An actual functioning CNC router table.

Being one to invent random words, I came up with “manufatory”, to mean “manufacturing at the speed of thought. What am I trying to get at? In general, I’m on a crusade for tequity, having an equity share in technology, for intergenerational wealth creation. Whether it be owning stocks in a company, or patents, or other artifacts, being able to ride the rising tide of tech wealth requires owning a piece of it, and not just being a consumer of tech.

So, what’s this manufactory business about? Software production is one kind of intellectual property, but not all things are software. Everything we interact with in the world was created by someone, or some machine, somewhere in the world. Being able to think up a design, produce the goods economically, and sell them into open markets, is tequity.

A couple blogs back (Embodied AI – Software seeking hardware) I mentioned three machines,

3D printer

CNC router

Robot arm

Read More
About That Robot…
William Adams William Adams

About That Robot…

A robot may not injure humanity or, through inaction, allow humanity to come to harm.

A robot may not harm a human being.

A robot must obey the orders given it by human beings except where such orders would conflict with the First Law

A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.

A robot must know it is a robot.

Isaac Asimov popularized the “Three Laws of Robotics” in his Robot series, starting in 1940. Asimov is a pillar of modern day science fiction. Not “just a writer”, he was a full on scientist, philosopher, and all around renaissance man. Asimov gave us the word “robotics”, and here we are!

Read More
Home Automation – 5 years Of Experience
William Adams William Adams

Home Automation – 5 years Of Experience

It was 5 years ago when I wrote about my home automation efforts: Home Automation – Choosing Bulbs

Back then, I was enthusiastic about replacing the myriad halogen bulbs in my house with LED based bulbs, and while I was at it, ‘automating’ them as well. I installed Philips Hue, some Lutron dimmers, and hooked it all up to Alexa so I could say “downstairs lights on!”. So, 5 years on, how has it gone?

Well, aside from doing the occasional demo of turning the lights on and off by talking to the ever present speaker, we really don’t use the automation at all. Why not? It’s far easier to just flick the light switch on or off when you enter/exit a room, and we never really got into ‘automation’, like setting up on/off patterns when on vacation.

Read More
Tinkerer’s Closet – Hardware Refresh
William Adams William Adams

Tinkerer’s Closet – Hardware Refresh

I am a tinkerer by birth. I’ve been fiddling about with stuff since I was old enough to take a screwdriver off my dad’s workbench. I’ve done mechanical things, home repair, wood working, gardening, 3d printing, lasering, just a little bit of everything over the years. While my main profession for about 40 years has been software development, I make the rounds through my various hobbies on a fairly regular basis.

Read More
Embodied AI – Software seeking hardware
William Adams William Adams

Embodied AI – Software seeking hardware

The “AI” space writ large, covers an array of different topics. At this moment in time, the Large Language Models (LLMs) have captured everyone’s imagination, due to their uncanny ability to give seemingly good answers to a number of run of the mill questions. I have been using ChatGPT specifically for the past year or so, and have found it to be a useful companion for certain tasks. The combination I use is GitHub Copilot, in my Visual Studio development environment, and ChatGPT on the side. Copilot is great for doing very sophisticated copy and paste based on comments I type in my code. ChatGPT is good for exploring new areas I’m not familiar with, and making suggestions as to things I can try.

Read More
It’s all about the Artificial Intelligence?
William Adams William Adams

It’s all about the Artificial Intelligence?

I can remember when in the 1980s and 90s, we programmers were talking about things such as SmallTalk, Lisp machines, the Prolog programming language, and this upstart C++. Lots of discussions around modularity, simulation, patterns of programming and whatnot. Back then, we even had the discussions around neural networks, back propagation, and even nano scale computers, driven by push rods…

Read More
Impressions – One week in a Tesla Model Y
William Adams William Adams

Impressions – One week in a Tesla Model Y

We recently took a family vacation to Southern California. Some fun in the sun at the beaches, with a side trip to Disneyland to boot. We had first considered driving down from Seattle to Newport Beach, a drive we’ve actually done before, but we ultimately decided to fly down instead, and rent a car.

Read More
SVG From the Ground Up — Can you imaging that?
William Adams William Adams

SVG From the Ground Up — Can you imaging that?

It’s time to put the pieces together and get to rendering some SVG!

In the last couple of installments, we were looking at how to do some very low level scanning and parsing. We got through the basics of XML, and looked at some geometry with parsing of the SVG <path> ‘d’ element. The next step is to decide on how we’re going to represent an entire document in memory so that we can render the whole image. This is a pretty big subject, so we’ll start with some design constraints and goals.

Read More
SVG From the Ground Up — Along the right path
William Adams William Adams

SVG From the Ground Up — Along the right path

In the last installment (It’s XML, How hard could it be?), we got as far as being able to scan XML, and generate a bunch of XmlElement objects. That’s a great first couple of steps, and now the really interesting parts begin. But, first, before we get knee deep into the seriousness of the rest of SVG, we need to deal with the graphics subsystem. It’s one thing to ‘parse’ SVG, and even build up a Document Object Model (DOM). It’s quite another to actually do the rendering of the same. To do both, in a compact form, with speed and agility, that’s what we’re after.

Read More
SVG From the Ground Up — Parsing Fundamentals
William Adams William Adams

SVG From the Ground Up — Parsing Fundamentals

Scalable Vector Graphics, is a XML based format. So, the first thing we want to do is create an XML ‘parser’. I put that in quotes because we don’t really need to create a full fledged conformant, validating, XML parser. This is the first design principle I’m going to be following. Here I want to create just enough to make things work, with an eye towards future proofing and extensibility, but not go so far as to make it absolutely bullet proof. So, I’ll be writing just enough code to scan some typical .svg files, while leaving room to swap out our quick and dirty parser for something that is more substantial in the future.

Read More
Creating A SVG Viewer from the ground up
William Adams William Adams

Creating A SVG Viewer from the ground up

In the series I did last summer (Hello Scene), I walked through the fundamentals of creating a simple graphics system, from the ground up. Putting a window on the screen, setting pixels, drawing, text, visual effects, screen captures, and all that. Along the way, I discussed various design choices and tradeoffs that I made while creating the code.

Read More
Looking Back to the Road Ahead
William Adams William Adams

Looking Back to the Road Ahead

As 2022 comes to a close, I am somewhat reflective, but, mostly looking ahead. This past year was certainly tumultuous on several fronts. Coming more solidly out of Covid protocols, kids firmly back in school, life contemplated, and perhaps most impactful personally, leaving Microsoft after 24 years of service.

Read More
Hello Scene — Conclusion
William Adams William Adams

Hello Scene — Conclusion

I have been writing code since about 1978, when I first had access to a Commodore PET computer. For me, it’s always been about having fun, doing things with the machine that might not be obvious, and certainly not achievable on my own. Over the years, I’ve picked up some tips and tricks to help me get to the interesting parts sooner rather than later. During the 1980s-1990s, there was a ‘demo scene’ wherein coders such as myself, were engaged in trying to push our ‘personal computers’ to the limit in terms of what they could do visually, and with audio. This demo scene was often centered around computers such as the Commodore 64, or Apple II, or the venerable Commodore Amiga. The demo scene days are largely gone, and computers are a few orders of magnitude more powerful than those early personal computers.

And yet…

Read More
Hello Scene — It’s all about the text
William Adams William Adams

Hello Scene — It’s all about the text

That’s a lot of fonts. But, it’s a relatively simple task to achieve once we’ve gained some understanding of how to deal with text. We’ll park this bit of code here (fontlist.cpp) while we gain some understanding.

I must say, dealing with fonts, and text rendering is one of the most challenging of the graphics disciplines. We could spend years and gigabytes of text explaining the intricacies of how fonts and text work. For our demo scene, we’re not going to get into all that though. We just want a little bit of text to be able to splash around here and there. So, I’m going to go the easy route, and explain how to use the system text rendering and incorporate it into the rest of our little demo framework.

Read More
Hello Scene — Screen Captures for Fun and Profit
William Adams William Adams

Hello Scene — Screen Captures for Fun and Profit

Being able to capture the display screen opens up some interesting possibilities for our demo scenes.

In this particular case, my demo app is capturing a part of my screen, and using it as a ‘texture map’ on a trapezoid, and compositing that onto a perlin noise background. The capture is live, as we’ll see shortly, but first, the code that does this little demo (sampmania.cpp).

Read More
Hello Scene — All the pretty little things
Denisse Reyes Denisse Reyes

Hello Scene — All the pretty little things

Wait, what? Well, yah, why not?

One of the joys I’ve had as a programmer over the years has been to read some paper, or some article, and try out the code for myself. Well, ray tracing has been a love of mine since the early 90s, when I first played with POV Ray.

Back in the day, Peter Shirley introduced ray tracing to an audience of eager programmers through the book: Ray Tracing in One Weekend. There were two subsequent editions that followed, exploring various optimizations and improvements. For the purposes of my demo scene here, I wanted to see how hard it was to integrate, and how big the program would be.

Read More
Hello Scene — Timing, Recording, Keyboarding
William Adams William Adams

Hello Scene — Timing, Recording, Keyboarding

If there’s no recording, did it happen? One of the most useful features of the demo scene is the ability to record what’s being generated on the screen. There are plenty of ways to do that, external to the program. At the very least though, you need to be able to save individual frames.

But, I’m getting slightly ahead of myself.

First, we need to revisit the main event loop and see how it is that we get regularly timed ‘frames’ in the first place.

Read More