On cast iron

Posted in cookery on December 27th, 2019 by juan

For Christmas I got a cast iron skillet to go on my green egg. I’ve been meaning to get one, so that was a nice present. One of the big reasons is that I wanted to see how much yummy crust (i.e. Maillard Reaction ), I could get for meat. My, very well raised, daughter asked for steak (and fixings) for dinner for her birthday. So, I tested it.

The result? The best steak I’ve ever cooked. Here’s how:

  1. Get some good prime steak
  2. Get the steak to room temp ahead of the cook (2hrs or so)
  3. Salt and pepper to taste
  4. Put the cast iron over a direct heat and set the temp to be about 500 or so on the egg. The cast iron will be much hotter. Check out the thermometer reading in the picture. It read 640F
  5. After the egg is stabilized, put a generous amount of oil on the flat side of the cast iron. I used a little over a tablespoon. I also used avocado oil which has a very high smoke temp
  6. Put the steaks on and don’t touch them for about 2 minutes.
  7. Check the underneath real quick and make sure you have that real good sear
  8. If you have the real nice crusty sear, flip it over. If not wait at most one more minute and then flip over.
  9. Cook for another 2-3 minutes. I didn’t get the same sear level, but it was close. It’s really easy to over cook, so I erred on the side of having one side super presentable and the other almost as good. Turns out that was the right choice.
  10. Let rest for about 10 to 15 minutes
  11. Eat the best steak you’ve ever had (or so my very biased, but also very educated family says).
Tags: ,

On cookery

Posted in cookery on December 26th, 2019 by juan

Since I started this thing back in the day, both the Mrs. and I have significantly improved our #cookery. I figure that this would be a good place to share some of that moving forward.

I’ll start with something rather easy, but always tasty. The picture is of a 9lb (pre cooked weight) rack of pork. We basically don’t like eating pork chops cooked any other way. Costco sells these during holidays and they are a bargain. This whole rack came in under $20 and fed 7 adults and 3 kids with some leftovers.

The cooking? Couldn’t be simpler. I make sure to bring it up to room temperature by taking it out of the fridge at least a couple of hours ahead of time. I prep it with just a salt and pepper. The salt is used a little bit more liberally than the pepper, but use your own taste to judge.

Then on the Green Egg, I set up for indirect cooking at 350 degrees. Once that’s up to temp and stable, put the rack in with a meat thermometer in it. Avoid the bone and go for the thick part of the chop. Cook until it’s internal temp is 141-142. Take it out, put it on a carving board, cover with foil for at least 15 minutes. Slice and serve. It’s awesome.

Oh and for those that think it’s too pink? You are wrong.

Tags: , , ,

One more basic diversion

Posted in Commentary, Geekfest on December 26th, 2019 by juan

I found and loaded a copy of BBCBasic on the AltairDuino. This is a basic I never used when I was really running CP/M but it looked interesting. In the veins of the previous MBASIC post, I ran the sieve on it to see how well it ran:

[2019-12-25 10:45:15] >LIST
[2019-12-25 10:45:17]     5 PRINT "Start"
[2019-12-25 10:45:17]    10 DIM flag%(8191)
[2019-12-25 10:45:17]    20 count = 0
[2019-12-25 10:45:17]    30 FOR i = 1 TO 8191
[2019-12-25 10:45:17]    40   flag%(i)=1
[2019-12-25 10:45:17]    50 NEXT i
[2019-12-25 10:45:17]    60 FOR i = 0 TO 8190
[2019-12-25 10:45:17]    70   IF flag%(i+1)=0 THEN GOTO 150
[2019-12-25 10:45:17]    80   prime = i+i+3
[2019-12-25 10:45:17]    90   k=i+prime
[2019-12-25 10:45:17]   100   IF k > 8190 THEN GOTO 140
[2019-12-25 10:45:17]   110   flag%(k+1)=0
[2019-12-25 10:45:17]   120   k=k+prime
[2019-12-25 10:45:17]   130   GOTO 100
[2019-12-25 10:45:17]   140   count = count + 1
[2019-12-25 10:45:17]   150 NEXT i
[2019-12-25 10:45:17]   160 PRINT "End, Primes =", count
[2019-12-25 10:45:17] >RUN
[2019-12-25 10:45:19] Start
[2019-12-25 10:50:49] End, Primes =             1899
[2019-12-25 10:50:49] >

As you can see, the code is slightly different. The indentations are provided natively by BBCBasic. Interesting note is that I couldn’t LOAD(yes, it all has to be caps) the code. This Basic is expecting a tokenized form. However, I did some sleuthing and found out you can *EXEC "FILENAME.TXT" and it will import an ASCII file in.

Anyways, the result above is pretty clear. This basic runs the sieve in 5 minutes 30 seconds or roughly 21% faster. Cool. Wish I’d know about this back in the day.

And it’s Christmas

Posted in Commentary, Musings on December 25th, 2019 by juan

Santa has been extremely generous this year. The kids are super happy and the lovely Mrs was very surprised by her presents. That’s always a good thing.

For me, the presents were also very nice. However I’m excited about the revival of this blog. The tools available to post are just amazing compared to what I had back when I first did this. WordPress itself has evolved amazingly. Looking forward to playing with that. But the fact that I’m writing this on my phone and will soon be posted to the site is just … well cool. So cool.

And an Altair diversion

Posted in Commentary, Geekfest on December 24th, 2019 by juan

Back to the future with an Altair!

Retro computing is one of those things that I dabble in. I’d like to do it more, but there’s this thing with time that I don’t have a lot of. But during one of my breaks this last year, I was able to put together one of the AltairDuino Altair replica kits. It’s cool because of all the effort that went into building it and the fact, that I have a dedicated Altair sitting next to me on my desk. One of the semi-recent updates to the emulation code allowed me to run Z80 CP/M (as opposed to the real 8080 stuff). Lots of fun code can be run this way including Turbo Pascal and such.

But – I wanted to know how fast this was. The canonical test of the time was/is the Sieve in basic.

I took the code I had laying around from my experiments with my Atari 800 and modified it to run in the more limited space of the simulated CP/M environment. The change was to put a % next to the flags variable. In MBASIC that marks it as an 8 bit integer. Without that, the program runs out of space. Here’s the code:

10 DIM FLAG%(8191)
20 COUNT = 0
30 FOR I = 1 TO 8191
40 FLAG%(I)=1
60 FOR I = 0 TO 8190
70 IF FLAG%(I+1)=0 THEN GOTO 150
80 PRIME = I+I+3
100 IF K > 8190 THEN GOTO 140
110 FLAG%(K+1)=0
130 GOTO 100
140 COUNT = COUNT + 1
150 NEXT I

And here’s the time stamped output of the run:

[2019-12-24 13:59:10] run
[2019-12-24 14:06:09]  1899
[2019-12-24 14:06:09] Ok

How’d I get the timestamps you ask? Well a bit of background on that. The Altair didn’t come with a "console". You used a serial port to connect it to some sort of terminal. What I’ve done is used a USB to serial cable that connects my iMac to the Altair. I then used minicom which I install via homebrew. One of the options of minicom is to timestamp all the output lines in the serial connection.

Anyways. My little emulation thing ran the sieve in just under 7 minutes. Comparable to a time appropriate machine. Cool.

A long time coming

Posted in Commentary on December 23rd, 2019 by juan

It’s been 3 years since this site had any updates. The issue has been mostly laziness, but that took several forms: a) I needed to move my site to a modern OS, b) I’ve been too focused on other things, c) didn’t really feel the need to blog any more.

Well that’s all changing. I’m now on a new, current, much more secure server (still self hosting). The DCF configuration has changed dramatically since I posted this. Pretty soon you’ll see that I’ll update to use SSL for this sit as well. I’m also going to start blogging more frequently for work (internal and maybe more externally as well). That means that I need to get my blogging muscle back to shape.

Stay tuned. The ramblings will begin picking back up soon.

and the lab is up

Posted in Geekfest on August 13th, 2016 by juan

Ok so I got it working on Sunday, but I’ve had a long week and didn’t have a chance to update. The C6100 is up and running. I’ve moved it into the DCF and surprisingly, the noise on it is actually so little, I can not hear it through the door. That was one of my biggest concerns. Long story short, the process was involved, but mostly because the SSL certs on the management IPs are so outdated.

So all that said, this is what I ended up with:

I’ve never had that much compute, memory, storage, or anything. That was a very, very large data center not long ago.

Cool. Now on to other cool stuff.

Oh… and a couple of things to note in case someone is actually reading this.

The back of the C6100 gets **hot**. I noticed in the move from my office into DCF that the USB thumb drives I’m using for boot were very hot. I’m concerned that it’s going to take them beyond supported limits, so I bought a set of little pig tails to have them off the motherboard.

Also – this thing runs relatively low power, but it is sucking about 660 watts being mostly idle. I’m going to have to buy another power supply and another UPS to make sure that I survive more than 5 minutes of outage.

Tags: , , , , ,

update on the DCF upgrade

Posted in Geekfest on August 7th, 2016 by juan

Got the C6100 on Friday (8/5). The system is as described by the seller on eBay, but … FFS … it only included one power supply! Tried getting the thing going and ran into immediate snags. First, each node only has two USB ports. My intent is to boot this guy off of USB, but I need a keyboard, and a USB key to do the install and a USB drive to use for boot. One too many. So I tried using a hub to attach the key and the keyboard. Couldn’t get it to boot. Moved the key to a dedicated port and had the USB “drive” on the hub with the intent to move the “drive” to a dedicated port once the install was complete.

No Go.

So, next step was to try to use the remote management to mount a virtual CD. I tried connecting with a current release of Chrome from my production iMac. Well, wouldn’t you know it – you need Java to do that. Don’t want to install that on my main iMac, but I was going to do that for the sake of the project. But before I did that, I wanted to see if Firefox would run it better. Firefox won’t connect to the port because of a security warning on the old HTTPS certs on the box. Same thing with Safari. That made me fire up a Windows 8.1 VM. Same issues. And, oh, during all of that my internet connection goes out … for 3 hours. AHHHH. Well undeterred, I find an old XP VM. That too didn’t have Java loaded.

End of Line.

Back to the project now (Sunday 8/7/16).

First thing first, though, I have to finish the PFsense build and roll out. Cross your fingers. Lots of work.

Sophia! Please give me 100 licenses for internal use. I promise it’s not commercial work! Also note that I’ve single handedly driven multiple deals for you because I brag about your stuff to just about all the customers I visit. And I visit lots of customers. Lots and lots.

Another fresh start

Posted in Geekfest on August 7th, 2016 by juan

So, like usual, I’m sitting on a plane and have little to do. Figured that this is a good time to start writing for my blog again. It’s been much ignored recently, but a new update to Ulysses just came out and it supports posting directly to WordPress sites.

There’s been much that has changed since I last posted. Much has changed in my personal life, but much has also changed in my nerdery. My home network now has over 45(!) things with IP addresses on them. This is forcing me to make a change that I did not want to do. For years I’ve been running the Home Edition of Sophos UTM. I really couldn’t be any more pleased with the functionality of it, but for whatever reason, it is limited to only 50 internal IPs. Now, granted, when I first got the software, that seemed like a ridiculous number. But, as with all such things (640K of RAM – who’ll ever use that much?), the time has come for me to move on. My first attempt was to use the next generation firewall from Sophos. Well that failed 30 minutes into me trying to use it. Many of my devices have static IP addresses handed out to them via the DHCP server. When I was taking those address into the new firewall, it TIMED OUT ON ME AFTER I PUT THEM ALL IN. Yup 30 minutes of laboriously entering MAC addresses, IP addresses, and host names – the damned thing failed. You see, Sophos didn’t develop a migration tool from the old UTM to the new “goodness”. Time to move on.

So – this weekend, I’m going to pfsense. It’s not as slick. It doesn’t do all the UTM stuff. It’s clearly written by folks that are nerds like me and not professional UI dudes (no disrespect intended). I’m going to miss some of the features of Sophos, but I have to move on.

Why you ask? Well – that’s the good part of this story. I just bought a new (well to me), Dell C6100 four node blade system for my home lab. It’s going to bring 32 cores, 192GB of RAM, and lots of other things to the home DCF (Data Control Facility for you new readers). That gives me enough juice to run most of the “hard core” stuff my vendors are trying to shove into Datalink. It’ll be fun having a really nice home cluster again.

But … to get that guy on my network, I’m going to have to doll out at least 12 more IPs just for the hardware. Imagine home many more I’m going to have to hand out once I start firing that guy up full of VMs.

Yeah – I’m a nerd and have first world problems – but that’s how I learn and make a living.

More to come…


Old computers were fast (back then)

Posted in Geekfest, Musings on April 9th, 2012 by juan


I have many vices. One of them is collecting old computers. To me, those are the 8 bit systems that were popular in the late 70’s and early 80’s. This last week, I was able to get a nice collection of Atari 800 and 400 machines from a local craigslist entry. Those are fun machines and bring me back to learning programming for the first time. My first computers was a TRS–80 Model 1, Level 1. However, the first machine I had access to that had “real graphics” was an Atari 800 in the computer lab at my middle school. I loved playing with the graphics and remember learning all sorts of tricks to make it faster.

I got to playing with the Atari’s and typed in some Basic programs just to see the thing do its thing. I remember them being fast back in the day. Well here I am 30 some odd years later with a computer that would seem as something out of a far future world to my little self then (4 processors! 4GB of RAM! 256GB of Solid State Disk! Wireless networking to the world at 50Mbit! Megapixel display with 32bits of color depth/pixel! On my lap! At it weighs less than 2 1/2 LBS! Seriously? That’s can’t possibly be! Oh – and that’s just my laptop. Don’t forget I have a “real” computer too.) Those ATARI’s were not fast.

Being the geek that I am, I had to see how much faster we have it today. I poked around the net for a bit and found an implementation of the Sieve of Eratosthenes on this site. I entered it into my Atari and it did come in at just around 5 1/2 minutes. I had to test it against my current computers, so I downloaded a copy of Chipmunk Basic. It seemed like a fair test to compare an interpreted basic to an interpreted basic. Here’s the basic version I wrote up:

10 dim flag(8191)
15 for a = 1 to 1000
20 count = 0
30 for i = 1 to 8191
40 flag(i)=1
50 next i
60 for i = 0 to 8190
70 if flag(i+1)=0 then goto 150
80 prime = i+i+3
90 k=i+prime
100 if k > 8190 then goto 140
110 flag(k+1)=0
120 k=k+prime
130 goto 100
140 count = count + 1
150 next i
160 rem print count
170 next a
180 print a;"iterations"

The big difference between my version and the ATARI version is that I had to run my version for 1000 iterations for me to get meaningful timings. The results?

[juan:~]$ time basic t.b
1001 iterations
basic t.b  7.63s user 0.00s system 99% cpu 7.639 total

That works out to be that my laptop is about 43,000 times faster than that ATARI. On one core. Let’s see what it’s like on all cores:

[juan:~]$ for i in {1..4}
for> do
for> time basic t.b &
for> done
[2] 30012
[3] 30013
[4] 30015
[5] 30017
[juan:~]$ 1001 iterations
basic t.b  18.80s user 0.03s system 98% cpu 19.029 total
[2]    done       time basic t.b
[juan:~]$ 1001 iterations
basic t.b  18.76s user 0.03s system 98% cpu 19.069 total
[3]    done       time basic t.b
[juan:~]$ 1001 iterations
basic t.b  18.80s user 0.02s system 98% cpu 19.069 total
[5]  + done       time basic t.b
[juan:~]$ 1001 iterations
basic t.b  18.79s user 0.03s system 98% cpu 19.097 total
[4]  + done       time basic t.b

Or roughly 70,000 times faster.

But wait. That site that had the listing for the Basic version also had one for one in Action! (which was a compiled language for ATARI’s). That version ran in about 1.5 seconds according to the Analog article ( I don’t have the Action! package to verify). Well I couldn’t not measure that too. So I wrote a C version of the Sieve. It’s a very dumb version intended to match the basic one as closely as possible:

#include <stdio.h>

int sieve()
  int flag[8192];
  int i,count,k,prime;

  for(i=0;i<8192;i++) {


  for(i=0;i<8190;i++) {
    if (flag[i]) {
      while(k<=8190) {

  return count;

int main()
  int c,i;

  for (i=0;i<=100000;i++)

  printf("found %d, %d times\n",c,i-1);

It turns out that this compiled version is so fast that I had to run is 100,000 times to get measurable results:

[juan:~]$ gcc -O4 t.c -o t
[juan:~]$ time ./t
found 1899, 100000 times
./t  4.17s user 0.00s system 99% cpu 4.177 total

And to do it on all the cores:

[juan:~]$ for i in {1..4}
time ./t &
[2] 30449
[3] 30451
[4] 30452
[5] 30454
[juan:~]$ found 1899, 100000 times
./t  7.44s user 0.01s system 95% cpu 7.832 total
[5]  + exit 25    time ./t
[juan:~]$ found 1899, 100000 times
./t  7.51s user 0.01s system 95% cpu 7.850 total
[3]  - exit 25    time ./t
[juan:~]$ found 1899, 100000 times
./t  7.46s user 0.01s system 94% cpu 7.891 total
[2]  - exit 25    time ./t
[juan:~]$ found 1899, 100000 times
./t  7.49s user 0.01s system 94% cpu 7.897 total
[4]  + exit 25    time ./t

Or roughly about 80,000 times faster.

All that on my laptop while I’m sitting in bed. Running on batteries.

The future is cool.