Wednesday, November 13, 2019

dead pixels

I have never had a dead pixel so when I read:
Small numbers (1-3) of stuck or dead pixels are a characteristic of LCD screens. These are normal and should not be considered a defect.
I get really pissed off!

Tuesday, November 12, 2019

static site generators

Static site generators are pretty cool. Granted they are an oversimplification of the java/json/xml/xslt site manifestation from the olden days (yes there are generators that predate that just see any changelog list circa the first day of the web).

The modern day ssg is in a weird place. Hugo seems to be the generator of choice but there also seems to be some up and coming ssg(s) like ZAS. Where hugo uses a "folder structure" and formatted files zas takes a more freeform approach to content and puts the burden on the config. (my naive interp.)


Hugo, unfortunately works to an extent but then has a couple of failures. The best part about it is that hugo is written in GO and so it will compile and run on a number of different systems. I happen to be using OpenBSD 6.6 for this particular exercise and the prepackaged version is 0.53 and yet I need a more modern version 0.60 in order to test all of the different themes. But that's there the problems occur.

The themes are not interchangeable. I tried about 25 of the 300 themes to get my system in play and so many failed or just did not work right. Also, even thought I had a small site (40 posts and 2 pages) it seemed that the entire public folder needed to be cleared before some pages would render.

OK, back to golang. While that part of it makes sense it also means something else. The themes are constrained by whatever the hugo document processing system does. Extensions are a challenge. And so on. I happen to like tcl, as I have said before, but a ssg based on tcl as the dsl makes perfect sense. The theme could be nothing more than plugins. As that point you can store the fragments in something like SQLite and take some lessons from fossil.

Anyway, moving on.

Saturday, November 9, 2019

how fast is too fast

I like my google pixel and my slate. These machines have a ton of RAM and plenty of CPU. But as I started looking into nightmare system scenarios hacking became one of the elements to review. I think my laptops are over powered even for the work I do.

How do you use your laptop?  I edit files, ssh into remote systems, search, read, write documents and emails. Since I write a lot of reports that are quite large I spend a lot of time in spreadsheets. (I see that as an opportunity to make the experience better). But all in all that i7 processor is overkill. If a hacker takes over I'll never know it because the system has headroom to spare.

If I had a smaller machine I might otherwise detect the abuse.

Friday, November 8, 2019

rust is the anti tcl

I was feeling pretty good about wanting to try rust-lang. Then I checked the size...


That compiler is 232MB in size. Sure you get a lot for the size but really? Umpteen years ago we talked about "it's going to be a hardware problem"... and it is. Sure there always some edge cases that benefit from fancy languages but at the end of the day this is all just crap. We just need to get work done.

Thursday, November 7, 2019

Part 2 - the ideal system

As I'm racing through the discovery on this subject I'm close to the end. The ideal platform is one that is air-gapped and has everything you need to start all over. For example if you trusted Ubuntu and their curated repo then making your own copy onto read-only media and then placing that media in an air-gapped network or storage would be useful. The problem with any of the Linux distros is that they are so dependent on modern hardware, many millions of LOC, thousands of programmers, and so on. Also, linux became so big that the network only distribution model was adopted very early. Earlier than modern hacking. And with so much code a different model for detecting back actors is needed and by the time that's in place it may just be too late.



OpenBSD checks a number of boxes;

  • I have CDROMs that date way back
  • It has tools that cover all the basics so that starting from the beginning might not be necessary
  • supports a number of CPUs
  • generally speaking it's reliable, sensible, and inline with *nix thinking


The thing is... if I had to everything is right there in the box, so to speak.
  • packet filter for building your own firewall
  • haproxy as a reverse proxy
  • nginx, lighttpd, apache web server
  • maria, mysql, postgres, sqlight database servers
  • asterisk phone server
  • certbot, letsencrypt, openssl crypto
  • firefox, mozilla, 
  • freeradius authentication
  • chroot, jail
  • scripting languages like bash, perl, python, tcl, lua
  • OpenSMTPd, postfix, mutt, post - email servers and client
  • code editors like vim, joe, jed
  • git and fossil version control
  • and with all of the source packaged here you can make world.
What I'm saying here is that everything you need is here. If you put the whole thing on a USB and moved to the north pole you could still get great work done without the distractions from the modern world that just adds complexity and risk.


are you a smart programmer?

No. Really! Are you a really smart programmer in maybe the top 1% of your field? Considering the number of programmers world wide that's still a pretty big and small number. I do not want to seem rude but if you're reading this post then you're probably not one of the smartest out there.



There was a time when I thought I was in that number. I interviewed at Microsoft in the 1980s and years later found my interview questions in the source code. When I interviewed at Intel I had written about 30K LOC a month for a year and when I gave that as an answer they did not believe me. And when I interviewed with Amazon they had already moved to Silicon Valley type questions.  By this time in my career I had some pretty strong accomplishments:

  • hardware for testing and certifying single board computers
  • converted OS/2 from Intel to PowerPC including 2M LOC of C and ASM.
  • copy protection removal
  • DOS extensions and TSRs
  • early adopter of java, ruby, python, erlang, golang, REST
  • secure firewalls and other system programming
The list goes on.
I learn languages like other people breath. -- I said this in an interview once
 Since then I've written code in a number of different languages and platforms. But every time I swing around and start talking about disasters, reliability, 3rd party dependencies, hackers and intellectual property I always get back to the same place. In the beginning I always designed a DSL that I would labor over until it could do some work and then once it was working I would throw all my problems at it. In the end the net result was always something that was faster and more reliable than anything out there. I could extent the solution and still be more productive.

All of the languages I worked on have been fun. I've learned a lot. I've made some huge mistakes. But I've come to the realization that I'm not that smart.... Actually I'm just essential, pragmatic and lazy.... and productive.

Part 1 - the new system

One thing I like about OpenBSD is that it supports a range of CPUs. That includes some legacy hardware which is sort of the point. While I have not yet determined the DR hardware availability for the moment I'm looking at AMD64 and ARM64.

For the moment I have downloaded OpenBSD 6.4, 6.5, ad 6.6. And I have versions for USB hardware and ISO. This means I can boot on baremetal and vmWare.


Keep in mind that it's not certain whether USB, vmWare, CDROM will survive or not. I think there is a side of me that wants to protect a PI4, odroid etc just so that I have something.


As a backup I have a number of legacy CROMs from when OpenBSD was published as in something tangible. One thing that remains is capturing the ports/packages for the tools.

Q: what is the difference between "packages" and "packages-stable"?
Q: which is the better OpenBSD desktop?


dead pixels

I have never had a dead pixel so when I read: Small numbers (1-3) of stuck or dead pixels are a characteristic of LCD screens. These are n...