Skip to content

Instantly share code, notes, and snippets.

macintux / aws-links.txt
Created Mar 23, 2020
AWS random resources
View aws-links.txt
macintux /
Last active Sep 7, 2019
I've often found time frustrating to deal with in Python. There's a popular library that completely ignores time zones (although regrettably at the moment I can't remember what it is). This, though, is particularly egregious: time.strftime (which relies on local libraries) is giving completely wrong values for time zones.

Python 3.7.3, MacOS 10.14.5

>>> epoch = int(
>>> epoch
>>> gmt = time.gmtime(epoch)
>>> gmt.tm_zone
>>> time.strftime('%Z', gmt)
macintux / cmon-python.txt
Created Nov 28, 2017
View cmon-python.txt
>>> head = 9
>>> ranks = [9, 8, 7, 6, 5]
>>> range(head, head-5, -1)
[9, 8, 7, 6, 5]
>>> range(head, head-5, -1) == ranks
>>> ranks.pop(0)
>>> ranks.pop(0) == 9
macintux /
Last active Mar 28, 2018
Fall 2017 Jeep maintenance & repairs

Much of this is related to stalling problems I've had and tried to diagnose for years. That finally seems to be licked after replacing the fuel injectors and adding heat shielding to the coil and injectors (turns out the inline 6 has heat problems that can cause fuel leaving injector number 3 in particular to prematurely ignite).

Front axle replacement was due to a comedy of errors, which I'd rather not elaborate on because stupid.

I've only recently started tracking these expenses via software, so I'd have to go digging up paperwork to go back further than August.

Early August: replace front axle, roughly $1800.

  • 8/17 - Oil, rotation, balance, alignment, spark plugs, sway bar links, tie rod and ends. $875
  • 8/18 - Investigate severe stalling following tuneup. Replace ignition coil. $277
  • 8/31 - Replace OPDA (preventative + possibly address stalling). $209
macintux /
Created Aug 31, 2017
Walking the High Wire: Patching Erlang Live (CodeMash 2018 talk proposal)

Two years ago at CodeMash we discussed how Erlang was a paradigm shift masquerading as a programming language. Last year we illustrated how fun it is to write. This year we show off one of its most powerful aspects: maintaining a production system.

Erlang (and Elixir, its younger sibling) allow you to not only trace the behavior of a production system, but also to query the data in memory, replace your code on the fly once you've found the problem, and fix the data that the old code mishandled, so the system keeps plugging away. Look, ma, no reboots.

Also discussed will be other criminally under-appreciated languages with similar features, because really, can you ever have enough magic tricks in your repertoire?

macintux / bio.txt
Created Aug 30, 2017
Bio for talk proposals
View bio.txt
John Daily has wandered a meandering path through systems and network administration, cyber security, global iOS mobile device management, technical evangelism, and software development. He has a passion for pragmatic programming languages such as C, Perl, and Erlang. Beauty is definitely in the eye of the beholder.
macintux /
Created Aug 30, 2017
Talk proposal for CodeMash 2018: Of Abstraction and Precision

The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise. – Edsger W. Dijkstra

The entire history of software engineering is that of the rise in levels of abstraction. – Grady Booch

We live in a world dominated by a virtual machine (the JVM) and a virtual platform (AWS). These are concrete abstractions, despite the apparent contradiction in terms.

Virtualization, however, is just one form of abstraction. We'll talk about the evolution of programming languages, networking, hardware, systems orchestration... and while abstraction will undoubtedly be extolled as a good thing™ we'll discuss the sea monsters that dwell hidden behind the curtain, to mix some abstract metaphors. What is a leaky abstraction and what can you do about it?

macintux /
Created Aug 30, 2017
Talk proposal for CodeMash 2018: Seeding the Cloud

Cloud, IaaS, PaaS, SaaS, containers... it's a very different kind of virtual reality we're in, and ready or not you're likely to find yourself interacting with virtual infrastructure sooner rather than later.

We'll talk about programmable, immutable infrastructure. We'll talk about declarative programming. Whether you think of yourself as a software developer or as a systems administrator, the lines are increasingly cloudy.

This talk will be a survey of the high-level concepts and the available tools to make this easier. When concrete examples are provided, AWS, Terraform, and Salt will be the likely culprits.

macintux / thunk.erl
Created Jan 11, 2017
Implement in Erlang the lazy evaluation/streaming approach taught by Nathan Dotz at CodeMash 2017.
View thunk.erl
%% > thunk:take(3, thunk:forever_zero()).
%% [0,0,0]
%% > thunk:take(3, thunk:fib()).
%% [1,1,2]
%% > thunk:take(18, thunk:fib()).
%% [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584]