• Joshua Tree National Park

    This month, my wife, our beagle, and I spent a week in Joshua Tree. Here are a couple of photos from the National Park and the area.


  • C64 Build Video

    I’ve posted a new video on my YouTube channel covering my earlier posts on building a C64 using an Ultimate 64 board and 3D-printing a joystick and paddle controller. While this utilizes a bunch of old footage and pictures from earlier last year, it also gave me an opportunity to use my new camera and some new backdrops I got (for example, for this shot of the components for the paddle controller). You can view the video below.


  • 6502 Scripting: a Tcl Shell on the Commodore 64

    The C64’s user interface is Commodore BASIC v2, which presents itself without delay as a REPL the instant the machine is powered on. BASIC lives in 8 KB of ROM of 6502 machine code. Michael Steil has worked on collecting versions of the BASIC source for various 8-bit platforms, putting them into a single source tree, and adding comments. There’s also EhBASIC by Lee Davidson, a popular BASIC interpreter used by a number of 6502-based homebrew computers. EhBASIC fits into 10 KB.

    There were other interpreted languages available for the C64, e.g. LISP dialects such as LISP 64 (page in German). From a glance at the screenshots, LISP 64 is delivered as a 52-block large PRG file, so about 13 KB in size.

    With scripting on resource-depraved microcontrollers becoming more popular, I was wondering if there are also new options for 6502-based systems. Alas, languages like MicroPython still require at least hundreds of KB of memory for the interpreter. Then, I came across an excellent blog post by Serge Zaitsev who was evidently on a similar mission in 2016.


  • Sentinel-6 Launch

    This past weekend, I watched the Sentinel-6 launch, the fourth launch I went to see. The first launch I attended was the ill-fated Orb-3 mission (see the resulting fireball in my post on that mission) launching on an Antares rocket from the MARS facility in Virginia. The second one was InSight launching on an Atlas V from Vandenberg Air Force Base. No post and no pictures for this launch—the marine layer over Vandenberg was so dense that not even the light from the thrusting engines could be seen through the clouds. Only the loud rumble of the engines was audible, slowly fading indicating the rocket was speeding away. Launch number 3 was OA-9E (see post here). Like Orb-3, OA-9E launched from MARS on an Antares rocket.

    This brings us to Sentinel-6. You can read more about the Sentinel-6 mission on my wife’s blog who worked on the satellite’s radiometer, the AMR-C instrument. Sentinel-6 also launched from Vandenberg, using a Falcon 9 rocket. The launch was scheduled for 9:17am local time, and while I expected the marine layer still hanging over the base in the morning, the weather turned out to be a lot more favorable with blue, clear skies.


  • Going Full-Frame

    With the Nikon Z 6II hitting the shelves this week, I finally took the plunge to switch to a full-frame camera. Previously, my workhorses had been two cameras with smaller APS-C sensors: a Nikon D5100 that I got 7 years ago (and that I used to capture the Z 6II in the image below) and a Fuji X100T that I like to use for travel, added 6 years ago. Some of the pictures I took over the years with those cameras are on my Flickr.


  • Blog Design Overhaul

    After almost 6 years, the blog is getting a small design refresher. In addition, a few things are changing under the hood. When I started the blog in 2014, I opted for Octopress as the blogging engine. The theme I used was a tweaked version of Whitespace. I’ve now moved to Jekyll, and the new theme is based on Centrarium. Since Octopress uses Jekyll under the hood, the move was relatively painless. Below are a before and an after view (as of this writing).


  • Adversarial Machine Learning and Robust Classification

    This past Saturday, I talked about attacks on ML within cybersecurity at the RAISA3 Workshop. The slides for my talk, “Of Search Lights and Blind Spots: Machine Learning in Cybersecurity,” are available on Slideshare (see also below). I want to reiterate and expatiate on the conclusions of the talk (i.e. the five points of slide 29) using this less ephemeral medium.


  • Assembling my Commodore 64

    For this latest part of my series of posts on building a Commodore 64, it is time to assemble all the pieces. The Pixelwizard C64C case has since arrived in the mail, and now all parts (namely the Ultimate 64 board and an original keyboard) need to go into it. To that end, I ordered a mounting kit as well, which contains standoffs for the keyboard and a support for the U64 board. And that’s where the problems start…


  • Finishing the 3D-Printed Paddle Controller

    Now that I’ve received the Ultimate 64 board, it’s time to finish the 3D-printed paddle controller for my to-be-built Commodore 64. And to try it out in action, I’ve ordered a copy of Commodore’s “Clowns” game on a cartridge. The case for the machine is still in the mail, so the setup is quite jury-rigged with the circuit board and keyboard sitting on a toolbox as you can see in the picture below. A breadboard is wired up to the first control port with a potentiometer and a button attached to it.


  • Ultimate 64

    Finally, the next item for my quest to build a Commodore 64 has arrived. After several weeks of travelling the world in a box, the Ultimate 64 circuit board arrived at my house in L.A. this week. You can see it (with the 3D-printed joystick from my last post) in all its glory in the picture below. With the keyboard and the circuit board checked off the list, now only the case is missing, which should arrive shortly as well.