Part of the frame for a small overhang roof.
This weekend (and up to a couple of minutes ago) I read:
- “High performance browser networking” by Ilya Grigorik
- Many articles and videos about WebRTC from Tsahi Levent-Levi
- A couple of stories from The Architecture of Open Source Applications. I always come back there when I need inspiration.
Some of the things I’ve read/watched lately to sharpen my skills:
- Inside the C standard library by Begriffs (and its predecessor on portability for weird machines)
- Making C less dangerous by Kees Cook (at Google back then)
- Streamlining systemd’s code and safety
- Algorithms by Jeff Erickson and the corresponding materials at the Illinois University course. I’ll get around later with a more thorough study of this one.
- A compiler writing journey
- The complete guide to (external) Domain Specific Languages
- HabitLab: Online Behavior Change Experiments
Today I replaced a couple of quick hacks with InfluxDB and Chronograf.
I like things that run without breaking:
# supervisorctl carbon RUNNING pid 1415, uptime 207 days, 19:49:57 graphite RUNNING pid 1419, uptime 207 days, 19:49:57 icecast RUNNING pid 24419, uptime 32 days, 1:11:18
Today after 15 years I finished the last course of the Electronic Engineering career at Universidad Nacional de La Plata.
For the next year I only have to do a supervised work experience and a final project.
I know that today is a big day. But still it feels like every other one.
Today while cleaning I found an old stm32 board carrying an STM32F030F4P6.
Turns out that PlatformIO supports it so just for fun I tried to blink some lights.
I couldn’t find my stlink at home but openocd can use a buspirate as a programmer.
It took a while to upload but after that I was able to launch gdb.
And the light was dead.
Strangely enough poking at the memory showed that the code indeed was there. After a long pause to think I noticed that the boot 0 jumper was misplaced.
The lights flashed and there was much rejoicing.
(this has nothing to do with a window manager)
During the last couple of days I was mostly dumb because of the heat. But the nightly breeze gave me a bit of life.
So I started to tile the new bathroom.
I helped many times with this kind of endeavors but this is the first that I’m completely on my own.
The initial bucket of paste yielded around 7 tiles, most of it ended on the floor. But when I finally got the hang of how to use the trowel I managed to put 16 tiles with little waste.
“we don’t have electricity on the south side of the building, but I know water conducts electricity, so just connect the water main to the power grid, then install an outlet in every faucet”Brad Montgomery on what we do as software engineers. Original at https://bradmontgomery.net/blog/blue-collar-programmer/
I don’t know why or how I ended up at that post but that situation evokes many fond memories of failed attempts at explaining what I was doing sometimes.
For all of its sins (or our inability to understand it back then) XML coupled with XSLT & friends is a nice basis to do ETL transformations.
(It was about time I interrupted a never ending pile of drafts with something)
So, for a bit more than a month I’ve been attending a seminar on VHDL microcontroller design.
One of the workshops involved doing some simple exercises on eval boards. While the overall instruction set is small (fits on less than a page) the idea of programming and then assembling the sources using pencil and paper wasn’t very appealing at the moment.
It sure is a fun way to keep the mind fresh but given time constraints I couldn’t cope with such a long debugging cycle.
And… The obvious path was to build a tool.
I reused parts of python-lx200 because smart data structures and dumb code are nice. Most of this could be implemented with M4 too, perhaps for another code golf session.
A couple of years ago I’d probably tried to use Bison and Flex but doubt that I could manage something like this in just a handful of hours during the weekend.
There are some rough edges but as it is it supports labels, variable definitions and emits a valid IHEX file. I made a couple of dumb mistakes but they were really evident when looking at what Quartus made of the output file.
I’m quite proud of the result, I don’t know when was the last time I had so much fun doing a one off project, even if it wouldn’t be used anymore after the seminar.
The source code lives here: https://github.com/pardo-bsso/islyd-asm
The other day I had a strange dream.
I was at a lounge talking with a waitress and we were doodling nonsense on a napkin. My drawings slowly morphed into something that was a lot like a Hilbert curve but not quite.
Our talk drifted into space filling curves and I kept trying to draw it but even tough I knew how it should look I always managed to draw something like a very simplified sandcastle.
This year I haven’t read as many books as others at this point.
My list so far has:
- “Las neuronas de Dios” by Diego Golombek
- “Effetti personali” by Francesca Duranti
- “Blonde’s requien” by Raymond Marshall / James H. Chase
- “The terminal Man” by Michael Crichton
- “La Mala Fama” by Benchi Calligo
- “La Otra Orilla” by Raúl Filgueira
- “Sacrificios en Días Santos” by Antonio Dal Masetto
- “Justine, or The Misfortunes of Virtue” and “La Marquise de Gange” by Donatien Alphonse François de Sade. Horrible Spanish translations. The ones I remember in English were better but I should try next time with the original in French.
And on the queue:
- “Consciousness and the Brain” by Stanislas Dehaene
- “The Psychology of Selling”, “Master Your Time, Master Your Life”, “Kiss that Frog” and “Eat that frog!” by Brian Tracy.
- “What Color Is Your Parachute” by Richard Bolles.
- “Management – Tasks, Responsibilities, Practices” by Peter Drucker
- “Tras la crisis, El nuevo rumbo de la política económica y laboral en Argentina y su impacto” by Damill, Frenkel y Maurizio
That journey led me into Traitlets and I wish I knew about them before.
I knew about traits from long ago but what really liked from a first look is their solution to configuration management. It’s clean, self documenting, type checked, composable and can be python code.
I’m still a bit torn about having a complete programming language as a user configuration tool instead of a DSL or stuff like ini-files, json or the good dialect of yaml.
After spending a great part of the other day refurbishing a nice chuck I set out to fix some of the problems on the drill press.
The whole quill tube has a lot of play but turns out there’s a set screw loose that just makes it better.
I chucked a short section of precision ground bar and set up a dial indicator while I ran the pulley with my hand. The run out was around two tenths of millimeter. Tried again after moving the jaws and applying more force but the result was the same.
Some fumbling and a big hit with a punch removed the chuck from the shaft. There were some patches of light corrosion on both surfaces.
Even so, a dial indicator on the drive shaft showed a wobble of a couple of hundredths. That’s more than good for a machine like this.
But looking closer inside the chuck the taper it had machining marks, like concentric ridges. I didn’t know better when I first assembled it and assumed they were for improved grip or something.
I started the motor and lightly kissed the shaft with fine sandpaper, first 800 and then some 1200 grit until it was smooth to the touch.
Then I painted it with a sharpie and installed the chuck again. This time I noticed it was kind of a loose fit and sure enough when pulling it down only some parts were inked.
I held a drill on the vise and with a paperclip and progressively fine sand paper removed the roughness inside the cone. Now there are ink spots more or less evenly distributed and the indicator registered about 15 hundredths.
Long time ago I was waiting for my turn to use the weighting scale on a scrapyard when I stepped over something curious.
Inside a sturdy chunk of mud there were the remains of an electric drill but what got my attention was the keyless chuck. I asked at the counter and got it for free.
It slept for some time on a shelf until I found it again cleaning. It resisted a civilized dismantling intent so I bathed it overnight in a mix of gasoline and paint thinner.
The front came out easily and looked good enough given it’s history except for a couple of spots with tool wounds and corrosion with significant missing iron. Seems it had been passivated on the inside.
There’s a two hole pig nut on the back and that one gave more trouble. I first tried with a round nose pliers and then a punch but it only made things worse.
I used a heat gun to clear any remnant of gasoline, hoping that it would loose the threads but no cigar. So I welded a piece of scrap and with that I managed to pry it.
Compared to the rest this part looked much better. I expected a ball bearing but there was only a hardened steel ring instead.
I padded a couple of beads on the body and after a bit of careful grinding it’s like it never spent time buried.
Now I only have to fix the horrible amount of run-out and play of the drill press.