Tour de Shmoo: ShmooCon 2016 Puzzle/Crypto Contest

Every year at ShmooCon, one of the handful of official events is a puzzle contest. Traditionally this has been a "badge contest", where most of the clues come from the conference badges, but at the past two cons there has been a website with all of the puzzles, a leaderboard, and a much broader range of puzzle genres.
This year, the first year Decipher has gone as a group to ShmooCon, we won this contest! To celebrate, with the permission of the organizers ("Team Flowers By Irene", who had won the contest every year for the previous four cons), we present a description of our solutions to each genuine puzzle.
First, the cycling-themed ShmooCon program contained links to http://tourdeshmoo.shmoocon.org, http://twitter.com/ShmooConPuzzle, and an explanation of how the contest works. When you arrived at the site, you would see this bike path, and each node was clickable to retrieve a leg of the contest.
Of course we didn't arrive at the site the first time to discover that we were winning, but you get the idea.
Many of the legs involved just a bit of manual labor, like the one pictured above which required us to build a tower from the items in our bag. I'm going to skip those legs in this post. I'm pretty sure you could figure out how to make a tower of swag at a conference.
Here are each of the puzzles, in the order we solved (got credit for solving) them, plus any hints that were announced (and when they were announced). We were also told that the organizers had EE backgrounds, and that puzzle names and icons on the map were hints. If you don't want to know how we did it, just stay above the ####s in each case.

Snail - Solved 4:15PM Friday
######################################
######################################
######################################
We solved this one during the single-track talks on the first day. We recognized that this is a kind of barcode typically used to encode postal codes on letters. Using the chart on Wikipedia, we were able to mostly decode the numbers 20009, which was the zip code for the Washington Hilton, the venue for the conference. We figured it was just slightly corrupted and didn't bother to figure out what was wrong. It was revealed later that we could have read a bit further and used the check digit to recover the corrupted bit, but 20009 was indeed the answer.

Flip out - Solved 4:17PM on Friday
88777077773388999077776777802663022255533 88833777066666908335555550633094428099933 27770844330333444777777780899806777740927 7770777733668
@ShmooConPuzzle hints:
8:18PM Fri: Some bricks have numbers!
7:09AM Sat: When solving Flip Out do not cell yourself short. Press on and call it like you see it.
9:36AM Sat: How is Flip Out going? A lot of teams stuck there it seems. How many different digits do you see? Press 0 for assistance.
######################################
######################################
######################################
And the answer is... They're numbers from a phone keypad. This was also solved in the single-track of talks on Friday. If you translate each of the numbers into the possible letters it represents, you can work out the message:
"UR pretty smrt and clever now tell me what year the first txt msg was sent"
1992.

Codename - Solved 6:10PM Friday
@ShmooConPuzzle hints:
12:29PM Sat: Codename: The picture looks similar to one you have seen, are they DIFFerent?
######################################
######################################
######################################
This was a bit more puzzling. The image is a slightly corrupted version of the banner image at shmoocon.org this year. At the very end of this version, there is actually some ASCII data, visible by simply dumping the image into a text editor, that reads
-.. --- - -.. --- - -.. .- ... .... / -.. --- - -.. --- - -.. .- ... .... / -.. .- ... .... -.. --- - -.. --- - / -.. .- ... .... -.. --- - -.. --- - / -.. --- - -.. .- ... .... -.. --- - -.. --- - / -.. --- - -.. .- ... .... -.. --- - / -.. --- - -.. .- ... .... -.. --- - -.. --- - / -.. --- - -.. .- ... .... -.. --- - / -.. .- ... .... -.. --- - -.. --- - -.. --- - / -.. --- - -.. .- ... ....
Clearly that's Morse code, so if you translate it you get
DOTDOTDASH DOTDOTDASH DASHDOTDOT DASHDOTDOT DOTDASHDOTDOT DOTDASHDOT DOTDASHDOTDOT DOTDASHDOT DASHDOTDOTDOT DOTDASH
Ha. OK... Clearly that's Morse code, and when you translate it you get
UUDDLRLRBA
This is "Konami Code" which turned out to be the answer!

Stop - Solved 6:46PM Friday
######################################
######################################
######################################
And the answer is... resistor color codes. Use this chart as a reference to the numerical value that each resistor band color code maps to. Once you have that, it's as simple as going through each column in the Stop table and mapping that color to a resistor color code. So... It starts out "red orange blue green brown red brown red..." That is the resistor numerical equivalent to 23051212. Group the numbers into pairs and you get 23-05-12-12. Take the simple substitution cipher where 01=A, 02=B, etc and you get W-E-L-L. Keep going with that throughout the whole page and you get the message: "Well done. It looks like you passed electronics one hundred and one."

Football - Solved 11:38PM Friday
######################################
######################################
######################################
It's funny how we can sometimes look at a puzzle, think to ourselves, "that's this", and then put it aside and forget about it for half a day. Arguably, this could be the first one for which we had the correct idea.
Synchronous communications often have clock (very predictable pattern that both the sender and receiver can reproduce) and a data waveforms. The idea is that on the rising or falling clock edge, or at the center of the peak or trough, you poll the data waveform and interpret it as a digit. If you poll at the center of the peak here, you get
Binary: 0100110101001111010011110100001101011001010000110100110001000101
Hex: 4D 4F 4F 43 59 43 4C 45
ASCII: MOOCYCLE
Pretty straightforward.

Port - Solved 12:11AM Saturday
original:
What is
updated:
What is
@ShmooConPuzzle hints:
4:11PM Fri: Port Puzzle image has been updated for clarity. :)
8:19PM Fri: Port: Have you see the port icon's dot arrangement anywhere?
12:09PM Sat: Port: Good Shmoos always eat their serial!
######################################
######################################
######################################
The image is a waveform from a serial port. Googling "serial port outputs" gave us waves that looked like what we were seeing in the puzzle. From what we understood, it looked like what we were seeing could be ASCII characters transmitted along a serial port. The protocol is something along the lines of, "There's a start bit, a 7 bit encoding of an ASCII character, and then and end bit. So you divide up the wave and read off 0110001, 0101011, 0110001, which gives you "1+1". The question asks "What is...", so the answer is 2.
7-bit codes are weird because of the way that computers are built now, but apparently that's all the ASCII standard requires, and it came from a time when this sort of thing was still in question.

Polymorph - Solved 1:49AM Saturday
@ShmooConPuzzle hints:
1:34PM Sat: Polymorph: show your truecolors and remember to factor in the size of the image to resolve the hidden message.
######################################
######################################
######################################
This one was quite tedious. The original file is a bitmap, clearly corrupted in some way. The barely-legible repeated word "Good!" and slanted nature of the upper section suggested that perhaps something had been done to the dimensions in the header. We used this site to figure out where in the header the dimensions were stored, popped it open in a hex editor, and started messing with it.
The width and height start with the 19th byte. If you reverse the nibbles in the 19th byte and reload the image, here's what you see:
Then it got painful. We needed to adjust both the width and the height, but most adjustments were nowhere near legible. After an enormous amount of trial and error, we got these width+height/image combinations:
40020000 2C010000
D0020000 2C010000
00030000 2C010000
From which we pieced together
THEY ARE
NECK & NECK
BUT THE
MOOSE WINS
BY A NOSE!
Hex editors are excellent sleep aids. By now those of who hadn't already passed out went to sleep. Zzzzz...
But not for too long.

Get On Track - Solved 9:41AM Saturday
Badges
There were five unique conference badges: two different green attendee badges, red staff badges, yellow sponsor badges, and blue speaker badges. They had some dots on the top, which was the only meaningful difference between them.
@ShmooConPuzzle hints:
8:25PM Sat: Don't turn a blind eye to get on track. Feel what's in front of you and don't veer off the rails.
######################################
######################################
######################################
Obviously the dots are Braille, but when you decode them you get gibberish:
But a couple of us are familiar with some classical ciphers, and the icon looked like a rail. They hinted more strongly at the "rail" thing in a tweet. Turns out it's a rail fence cipher, of the zig-zag variety. Order and space them like so to solve:
FIRSTLEGCOMPLETELOOKWITHYOURHANDSATTHEKEYSTHENSCANTHEBITSTOADVANCEX

Zap - Solved 10:32AM Saturday
######################################
######################################
######################################
We actually figured out what this was by dragging it into Google Image Search, which returned results for "Telex punched tape", and after a bit more googling, we found the Baudot code and were able to decode it:
Welcome to Shmoocon 2016, Less Moose Than Ever%
In puzzle contests, Google is your best friend.

Phasor - Solved 12:06PM Saturday
??? [ that is, there were three question marks where there should have been a clue ]
There were also some interesting looking waves decorating our programs and on the signs outside each of the break-out rooms at the con:
From the programs:
From signs:
@ShmooConPuzzle hints:
8:43PM Fri: [Reply to "Any clue's for Phasor?"] Have you asked Google?
9:35PM Fri: We are about to sine off for the night. Please don't ASK about Phasor anymore.
3:39PM Sat: Looking for phasor hints? Look for the sines signs?
######################################
######################################
######################################
We needed the hints on this one. "ASK" was the important one, though we got stuck trying to interpret it as amplitude-shift-keying for a while. It turns out that the waves are digital signals encoded with Binary Phase-Shift Keying (BPSK):
When you decode the waves, you get two characters per wave (replacing spaces with _ so you can see it):
I_
nt
o_
de
_m
cl
_t
cy
bi
y_
ri
e!
We actually missed finding a wave there somewhere, but it doesn't really matter. We were able to assemble these into "I want to ride my bicycle!" just fine.

Toyota - Solved 7:43PM Saturday
BDB6BCA6BCB3B5538938B26CF1503617C9236C0
9D855F7C1A2831944BDB9BCAA5D243EB2323D3E
37F2A92D8606D324B3CADD892002ACEE38B61F7
D236EB5F8552C3DA384B344543EBCA6BCB3BABD
@ShmooConPuzzle hints:
2:28PM Sat: Toyota: use the hint from Get On Track literally.
2:33PM Sat: Toyota: there are two parts to this. You will know you have completed the first when it looks like you failed.
3:08PM Sat: Remember hints that are given out to a team are not Exclusive Or meant to give one team an advantage.
3:33PM Sat: Toyota step 2: x = y = sqrt(len(bin)+1)
And the solution to Get On Track (above) was meant to be a hint to this puzzle.
######################################
######################################
######################################
This was the hardest puzzle for us. The clue from Get On Track was FIRST LEG COMPLETE LOOK WITH YOUR HANDS AT THE KEYS THEN SCAN THE BITS TO ADVANCE X, and we spent ages puzzling over this, trying to come up with something reasonable. Without the hints, we would never have solved it.
Anyway, "Look with your hands at the keys" was supposed to mean look at our badges and think, "ah, the key must be 'BICYCLE'"! Sure. So you XOR (that hint from Twitter was handy here) BICYCLE with the hex characters of the puzzle. Then what you've got is a bunch more gibberish, but here's where it gets cool.
The first characters we got out of the XOR were 0xFFFFFFFFFFFFFF, so... all whited out. Their other hint: "...then scan the bits to advance" (the X at the end was just padding) plus their "Toyota step 2: x = y = sqrt(len(bin)+1)" tweet suggested that we lay the bits out on a grid and hope for a QR code. Charles to the rescue with some Ruby ( https://gist.github.com/cstrahan/bd75dcc2c72c31fea93e ). It was pretty fun because we started out using "bicycle" instead of "BICYCLE", and because ASCII lowercase and uppercase letters are just a linear translation away from one another we could kind of see the mangled QR code, and had to figure out what was wrong. When we uppercased, it jumped out at us instantly and beautifully:
Which scans to produce
http://shmoocon.org/velo
Finally.
That URL just had this on it:
Jetsetter
ICOIDZFECRT,GAOHXHVIVVVVILGYUDRXJEDWIGQY
Ah, good, a clue for Jetsetter to replace its ???s.
At this point we got dinner and went to the Saturday-night party to relax a bit, listen to some nerdy stand-up, and... keep working on the puzzles.

Jetsetter - Solved 10:14PM Saturday
???
@ShmooConPuzzle hints:
5:54PM Sat: Keep the theme in mind the theme of this puzzle when completing Jetsetter.
And of course, the ??? got filled in with the solution to Toyota above.
######################################
######################################
######################################
We couldn't get reliable Internet access in the party, so like nerds a few of us grabbed beers and went to hang out in the lobby instead. We solved this one relatively quickly. The URL was /velo, which is French for bicycle. The theme of the conference was "Tour de Shmoo" or "Tour de France" or some such thing involving moose riding bicycles and a lot of French. So we did the obvious thing, and started discussing the puzzle in French accents.
A classical cipher with a French name is the Vigenère cipher, so it made some sense to try it on the Jetsetter letters. The second key I tried was "tourdefrance", which yielded "pour avancer, changer devitesse dans sequence", which Google Translate tells me means "to advance, in sequence, speed change".
Importantly, when we submitted Jetsetter, the organizers responded with a corrected translation:
"'To move forward, shift gears in sequence' use this translation for next stage."

Lying Pasta - Solved 12:26AM Sunday
MDVQ GWT NK QDGHU RPCJ GZ A AJEW QDBSQNQ GTHJ MBCC BNE QNDD JL OPH CIKRE
######################################
######################################
######################################
Things were getting scary here, because the organizers had tweeted that rpisec (our rivals) had already solved Lying Pasta and Equality, so we were behind.
We had tried to solve Lying Pasta several times earlier using some form of substitution cipher, because there are spaces, and that just screams substitution. Turns out it's not that at all. Darth Null, the constructor of many a ShmooCon puzzle before wandered by, and made us think a lot about pasta. Finally: Lying ~= fibbing, we're supposed to "shift gears in sequence", pasta comes from Italy, like a guy named... Fibonacci. We're supposed to shift each letter by its corresponding number in the Fibonacci sequence.
1 1 2 3 5 8 13... Actually, this blows up very quickly. Time to break out the Ruby again. First, though, notice that the first few characters done manually are looking good:
M+1 = N
D+1 = E
V+2 = X
Q+3 = T
Boring bits removed:
$> s = "MDVQGWTNKQDGHURPCJGZAAJEWQDBSQNQGTHJMBCCBNEQNDDJLOPHCIKRE".split(//).map {|ch| ch.ord - 'A'.ord + 1}
=> [13, 4, 22, 17, 7, 23, 20, 14, 11, 17, 4, 7, 8, 21, 18, 16, 3, 10, 7, 26, 1, 1, 10, 5, 23, 17, 4, 2, 19, 17, 14, 17, 7, 20, 8, 10, 13, 2, 3, 3, 2, 14, 5, 17, 14, 4, 4, 10, 12, 15, 16, 8, 3, 9, 11, 18, 5]
$> alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(//)
=> ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
2.2.1 :049 > s.each_with_index.map{|x,i| (x+fib(i+1)) % 26}.map{|x| alphabet[x-1]}
=> ["N", "E", "X", "T", "L", "E", "G", "I", "S", "T", "O", "U", "G", "H", "D", "O", "N", "T", "B", "E", "A", "F", "O", "O", "L", "P", "R", "O", "T", "E", "C", "T", "Y", "O", "U", "R", "H", "E", "A", "D", "A", "N", "D", "P", "L", "A", "Y", "B", "Y", "T", "H", "E", "R", "U", "L", "E", "S"]
2.2.1 :050 > s.each_with_index.map{|x,i| (x+fib(i+1)) % 26}.map{|x| alphabet[x-1]}.join("")
=> "NEXTLEGISTOUGHDONTBEAFOOLPROTECTYOURHEADANDPLAYBYTHERULES"

Equality - Solved 12:56AM Sunday
ZNPQHCWMFABGSUG KTSUMFKODMQUMEL DBILNQCHQBZNQFM
QMUNKSAMQQMULHE TBKOCHMLIKQMDPV DRNGFUYTRNPOBLW
Of course the previous leg's result is a hint for this one.
######################################
######################################
######################################
Still trying to catch up to rpisec, but there hadn't been anything about them winning, so we press on (which, of course, we would have done anyway, but with less moral).
The previous leg's result was NEXT LEG IS TOUGH DONT BE A FOOL PROTECT YOUR HEAD AND PLAY BY THE RULES. Play by the rules? There's one classical cipher that almost always makes an appearance in crypto contests, and it's called Playfair. But what to do for the key? We figured it was probably hinted, so what's striking in here that we haven't used yet? Protect your head. The key is "helmet".
Decrypting with those parameters yields "youplayedfairsoimustconfessthecakeisalieyoubestskipdessertthefinallegiseasyaskoaszlugsifex".

Piece of Cake - Solved 1:58AM Sunday
???
There was also this tantalizingly as-yet-unused bit of our program full of messages and people's names:
PVCOL RLNGO CNFRV BJZAS KDART HNULL SSQHA YJQOU LEGUK MZFUS
XFLOW ERSBY IRENE IONNY HTGSU HIVOS SHRVE IVWVV BRDIU VTBSV
HYHWE WTIWH ROHFA CWCMB EMCUJ VYENM AOGWN YHTGD TFGHT NYHIE
YTHEL SUVSE JHFSS YRYHX SDIFO HNEHK RAHEY GMARK RZWAI ZOHNF
LRQMO OSEHT FYHJS CLZHW OEYKK IEHPS GXBPI HWHLO SHHHB ADTAU
URBLC AWAKE NSRFX LOZUI OATOH MVFPV LTBXR THANK HEIDI QONSY
JZLSJ TWAIS FKHIM EAOVX MYGDC SAUCB PSONO HLOQX SMFIK KWLVN
######################################
######################################
######################################
The previous solution had been "you played fair so i must confess the cake is a lie you best skip dessert the final leg is easy as koaszlugsifex". What the heck is a koaszlugsifex? At least some things were clear, though: this puzzle involves pie. The cake is a lie? You best skip dessert? The final leg is easy as ______? Pie, definitely. Delicious, and also a number. But how to use it?
We spent an enormous amount of time thinking about "confess" (church? priests? confession, catholicism... Is there an especially catholic cipher...?) and portal because of "the cake is a lie" (is there a cipher really relevant to portal that would take pi as a key?).
"...you best skip dessert". At some point, one of our guys thought to try skipping through the unused text in the program by each of the digits of pi. If you start doing that you get "CONGRATS YOU..." Holy macaroni batman... better finish up quick...
"Congrats you finished the race now tell us in email the GPS address of this shmoocon xiin
CONGRATS YOU FINISHED THE RACE NOW TELL US IN EMAIL THE GPS ADDRESS OF THIS SHMOOCON XIIN
So we looked up the latitude of the Washington Hilton on Google Maps, and sent it in. So... we won? It's pretty dang early in the morning to be second-guessing ourselves, but... what the heck is a koaszlugsifex?

koaszlugsifex? - Solved 11:20AM Sunday
Don't worry, we did actually decide around 2:30AM or so to get some sleep. We went home thinking we'd lost, and came back the next morning early to keep attacking this final problem. We were encouraged to hear that rpisec hadn't solved it, but when we told them we didn't know what koaszlugsifex meant they said, "yeah, that's a fun one". More work to be done, it seemed.
Because knew we had gotten something significant out of the block of text in the program, we imagined several things that koaszlugsifex might mean, and tried to guess the cipher and key from that. The organizers had quipped the night before that the final puzzle was unusual, unlikely to be on rumkin.com (a puzzle site), so we were going through every obscure cipher we could think of looking for a decryption.
At 11:20AM in the Chill-Out room, however, they took pity on us and came over to tell us that we had won the night before with the GPS coordinate of the hotel. What was koaszlugsifex?
Consider the sentence it had come from:
"you played fair so i must confess the cake is a lie you best skip dessert the final leg is easy as..."
So we went and picked some locks to unwind and bask in our victory.
We won 3 tickets to ShmooCon 2017, and our pick of some sweet swag (I picked up Python For Kids) at closing ceremonies.
THANK YOU
  • Team Flowers By Irene, the organizers, for awesome puzzles and a sense of humor
  • rpisec for being a worthy rival, and right there with us all the way to the end
  • Decipher team for putting so much effort into this thing
See you there next year!

Evernote isn't a blog

Using Evernote public notebooks really flopped. No RSS, annoying pop-up for non-logged-in users, un-blog-like format. I did love being able to edit "posts" at-will without a lot of rigamarole, and I also loved the Evernote integration, so let's try this out for a while and see what it's like.
Postach.io apparently just watches a particular notebook for the "published" tag on a note, and then slurps it up onto the blog. Editing on the fly works, there's an atom feed, and I'm writing this from Evernote. Apparent success!

Imported my Tumblr blog

As you can probably tell, I've imported scratch.danielpcox.info so I could try out blogging from here instead. It's not really a blogging platform, but since I use Evernote pretty heavily anyway, it seems like a nice idea to occasionally just send notes for publication rather than pasting them into Tumblr. It also suits the concept for "scratch": unfinished thoughts.

the-emergent-picture-of-the-chief-figure-in-the

#
"
The emergent picture of the Chief Figure in the campaign, so far from being that of a high-souled teacher patiently indoctrinating the multitudes with truths of timeless wisdom, is rather that of the Strong Son of God, armed with his Father’s power, spear-heading the attack against the devil and all his works, and calling men to decide on whose side of the battle they will be.
A. M. Hunter, Introducing New Testament Theology
This was posted 1 day ago. It has 0 notes and 0 Comments.
Christian, husband, puzzle-enthusiast, and CTO at Decipher. Opinions are my own.

archived posts

Moral Law => God ?

I’m reading Mere Christianity and The Fellowship, and just finished the part of the latter that discusses Mere Christianity. I’m thinking at the moment about Lewis’ argument from the Moral Law.

Does the Moral Law really have to have come from a personal being? Could it have evolved? If it serves some survival purpose, what is it?

Lewis also calls it the "rules of decent bahavior", which I like because it’s more descriptive and evokes the substance of the thing at a glance for me. The only survival advantage conferred by the rules of decent behavior is their contribution toward society, though they are imperfect at best at promoting society. (E.g., it might help society more if we simply executed all criminals, outlawed anything damaging to our health, and gave the former group’s property to proven contributors to society, but this would offend our sense of the moral law. Or am I just arguing from my own revulsion at that idea, since it does seem pretty common for people to believe in the greater value of people who contribute to society - their lives are considered to be worth more than others?)

Lewis is mostly talking about "oughts". You ought not to move my stuff and take my seat in a crowded theater when my back is turned. If anyone thinks that’s right, they feel compelled to explain why the usual rules don’t apply there, which is to acknowledge their existence. (Interesting that we also have a sense of the ways in which the rules might be suspended.) So can there be oughts without God? My knee-jerk reaction is to say yes, because oughts might just be part of a system evolved in us to promote the good of society, which is ultimately better at keeping our genes around than the alternatives. Groups of humans that cohere form civilized societies, and groups are better at survival.

One might ask at this point whether this argument isn’t too strong: Why don’t we all have the same opinions about everything, then? We would certainly cohere a lot better if we didn’t disagree. I think the answer there is that diversity is also essential to surviving unexpected events, so any truly resilient solution would have to balance diversity and unity, and this, it is postulated, is the source of our common understanding of the rules of decent behavior.

Lewis may be oversimplifying the "herd instinct" as he calls it. Impulses are uncomplicated in his view. I’m not sure he’s wrong either. He says herd instinct tells you to do right by your neighbor, and is one of several instincts we have, but that the moral law cannot itself be any of these because it sits in judgement upon them. This is intriguing. He treats them as notes on a piano, and the moral law as advising the piano player. But what if the moral law is just a more complicated instinct? He says that it can’t be because it’s not consistent, so to speak: it doesn’t always advise the same notes to be played. In fact, any of them can be regarded as "bad" by the moral law, and any can be regarded as "good", depending on the circumstances. This, he says, shows that the moral law is not itself an instinct.

I’m not sure. People have tried to write down the rules it follows, and in fact, this is how we teach one another what morality is and how to live by it. It is true though that none of its codifications feel like they capture the whole thing, and those that feel like they capture it better seem a bit vague, or mysterious (e.g., the Sermon on the Mount).

I’m reminded here of an argument I make for why we perhaps should be able to discover the workings of our own consciousness: that God has no parts and we are created beings, so therefore there must have created us by some means, and therefore we ought to be able to discover them. The relevance for the current topic is that similarly, if we are actually capable of following the moral law, we ought to be able to write it down.

An argument I have against my argument above is a common one with me: we may be, loosely speaking, part of God’s imagination, and therefore we don’t actually have to follow discoverable rules, since he’s infinite and therefore necessarily largely undiscoverable. It therefore seems possible that the rules of our own consciousness and the rules of the moral law both belong to the wider world of God’s infinite understanding, and that the discoverable rules of the universe make up a finite subset of the rest of God’s mind.

Anyway, back to the question of whether the moral law could simply be some useful behavior for survival, and therefore no evidence of God’s hand on us. It seems suggestive that I feel like I can’t just throw off the question with an "of course". Why not? Just because morality seems elusive as well as common and clear? To summarize Lewis, we all find in ourselves a common understanding of the rules of decent behavior, even accounting for our variations on the subject and for the fact that we often break them and excuse ourselves, and that it can’t itself be merely due to the herd instinct because it sits in judgment of the herd instinct. (And all others, deciding which of our instincts prompts we ought to obey: "But feeling a desire to help is quite different from feeling that you ought to help whether you want to or not.")

More quotes:

"The Moral Law tells us which tune we have to play: our instincts are merely the keys."

"If two instincts are in conflict, and there is nothing in a creature’s mind except those two instincts, obviously the stronger of the two must win… But at those moments when we are most conscious of the Moral Law, it usually seems to be telling us to side with the weaker of the two impulses… And surely it often tells us to make the right impulse stronger than it naturally is? I mean, we often feel it our duty to stimulate the herd instinct, by waking up our imaginations and arousing our pity and so on, so as to get up enough steam for doing the right thing. But clearly we are not acting from instinct when we set about making an instinct stronger than it is."

"If the Moral Law was one of our instincts, we ought to be able to point to some one impulse inside us which was always what we call ‘good’, always in agreement with the rule of right behavior. But you cannot. There is none of our impulses which the Moral Law may not sometimes tell us to suppress, and none which it may not sometimes tell us to encourage… Think once again of a piano. It has not got two kinds of notes on it, the 'right’ notes and the 'wrong’ ones… The Moral Law is not any one instinct or set of instincts: it is something which makes a kind of tune (the tune we call goodness or right conduct) by directing the instincts."

But, I think to myself, what if the Moral Law is the instinct to bring up the tune, plus the tune itself, and the tune has been bred into us through natural selection? What if the tune is encoded in our DNA, and its particular pattern cultivated by mutation and natural selection to improve our chances and give us an edge over other species and the environment?

Firstly, evolutionary arguments are either too hard or too easy to make. It’s quite easy to say that the moral law must confer some survival advantage, but quite hard to explain how. The engineer in my says that you shouldn’t claim to understand something until you can build one yourself.

Secondly, is it explaining or explaining away the very strong feeling that something is really wrong (e.g. genocide)? And once we’ve made that argument, that we only think it’s wrong because, e.g, we’re on the whole averse to anything that would reduce the genetic diversity of the planet by so much, why do we largely disbelieve that that excuses us from following it? Materialists disbelieve in the evil of genocide, but feel very strongly compelled to make arguments against it on other grounds. I think this is double-talk: It’s not wrong (because there’s no such thing as right and wrong) but you shouldn’t do it anyway.

On that note, if Mind really is a fundamental thing about the Universe we live in, and not merely some late emerging property, how would we even go about convincing ourselves of it? Couldn’t we always come back to saying, "well, I just feel that way because I am a mind and naturally want to turn everything else into one."

At this point, it just seems more honest to me to say that the Moral Law and Mind in us really are pointers to something fundamental about the Universe. I can understand a distate for the thought, since it seems unapproachable in the way that we’ve grown used to approaching things since Science came on the scene. It also seems a bit inelegant once you’ve tasted the beauty of mathematics and physics. But when I’m not troubled by this, it’s because beauty itself is supposedly rooted in God, and a pointer to him.

To make that a bit more precise, God is simple. He has no parts. All that is good and right in the world is a projection into the finite and multidimensional what to him is infinite and singular. Hard to explain quite what I mean, but I’ve heard it said that we talk of God having characteristics and aspects like we seem to, but in actuality he is a single, simple… Someone. Elegant and beautiful not even at an extreme, but fundamentally. Elegance Himself.

When am I allowed to just give up and believe these things? I run myself around in circles, and even come back to the same conclusions again and again. God is who he is. Mind came before Universe. It’s just the best explanation in a world of uncertain explanations. Perhaps I distrust it because I feel like a creature of supernatural meaning and purpose, and the world feels created. Or perhaps I distrust it because I often feel like a meaningless, accidental creature in a cold mechanistic Universe.

For the moment, though, I’ve convinced myself. I wonder if the spark of belief here can be fanned into flame. As I say often, God has much more to do than merely exist, so whatever effort I’ve already expended, if I conclude that he’s there, my work has only just begun.

Encrypted creds in Leiningen for Maven/Nexus/Archiva repos

Leiningen can use credentials for an artifact repository stored in a GPG-encrypted file. Make ~/.lein/credentials.clj, fill it with the following,
{#"url-to-match.com" {:username "username" :password "password"}}

encrypt it with gpg,

gpg --default-recipient-self -e \
    ~/.lein/credentials.clj > ~/.lein/credentials.clj.gpg

delete the original,

rm ~/.lein/credentials.clj

and then refer to it in your project.clj like this:

:repositories [["releases" {:url "https://url-to-match.com/repository/internal"
                            :creds :gpg}]
               ["snapshots" {:url "https://url-to-match.com/repository/snapshots"
                             :creds :gpg]]

https://github.com/technomancy/leiningen/blob/master/doc/DEPLOY.md#gpg

I had a bit of trouble at first connecting to gpg-agent, but solved it by putting this in my shell startup script (~/.zshrc for me):

gpg-agent --daemon --enable-ssh-support \
  --write-env-file "${HOME}/.gpg-agent-info"
if [ -f "${HOME}/.gpg-agent-info" ]; then
   . "${HOME}/.gpg-agent-info"
  export GPG_AGENT_INFO
  export SSH_AUTH_SOCK
  export SSH_AGENT_PID
fi

GPG_TTY=$(tty)
export GPG_TTY

https://gpgtools.tenderapp.com/discussions/problems/4133-how-do-i-automatically-start-gpg-agent-for-use-with-ssh

Play

I was just thinking to myself yesterday that play is extremely important. The best people in any creative vocation seem to be the playful ones: those people who enjoy messing around with new (to them) ideas. Tinkerers, explorers, experimenters, dabblers.

There are two kinds of play, and both are important, but they exist in a tiny hierarchy of usefulness, and the lower kind of play is strictly less useful than the higher kind.

The lower kind of play is merely to recharge, and the activity itself doesn’t leave me enriched in any real-world way once I’ve disengaged. For me, video games and candy books (merely fun page-turners without insight or other take-aways) fall into this category. They’re _extremely useful_ for when I cannot make my mind focus,

The higher kind of play is still undirected and without deadlines, so it still _is_ play, but there are take-aways. A good example would be biographies, which are extremely entertaining to me, but also require more brain power than candy books. From biographies I take away inspiration and perhaps some advice in a useful form (demonstrated human behavior). Tinkering with electronics or software projects or _anything_ really that captures my curiosity leaves a residue of value after I’m done.

I think I should never engage in low play when I’m capable of high play, or I’m just wasting an investment. Time is precious, and play (both kinds) is important for maximizing it.

Apollo Computer Science

At the start of the Apollo program, the onboard flight software needed to land on the moon didn’t exist. Computer science wasn’t in any college curriculum. NASA turned to mathematician Margaret Hamilton, of the Massachusetts Institute of Technology, to pioneer and direct the effort. With her colleagues, she developed the building blocks for modern "software engineering," a term Hamilton coined. What later became the foundations for her Universal Systems Language (001AXES) and Development Before the Fact (DBTF) formal systems theory, allowed the team to create what she called ultra-reliable software for the moon trip. In addition to creating the concept of priority displays, where the software in an emergency could interrupt the astronauts so they could reconfigure in realtime, Hamilton established hard requirements on the engineering of all components and subsystems, insisted on debugging all component and testing everything before assembly, then simulated every conceivable situation at the systems level to identify potential problems before releasing the code.

"There was no second chance. We all knew that," Hamilton said. "We took our work very seriously, but we were young, many of us in our 20s. Coming up with new ideas was an adventure. Dedication and commitment were a given. Mutual respect was across the board. Because software was a mystery, a black box, upper management gave us total freedom and trust. We had to find a way and we did. Looking back, we were the luckiest people in the world; there was no choice but to be pioneers; no time to be beginners." Hamilton’s integrity and ability to balance fearlessness with attention to detail may have ensured Apollo 11’s success.

i-dont-know-what-a-business-is

"
I don’t know what a business is. All a company is is a bunch of people together to create a product or service. There’s no such thing as a business, just pursuit of a goal—a group of people pursuing a goal.
Elon Musk

there-is-nothing-that-can-be-said-by-mathematical

"
There is nothing that can be said by mathematical symbols and relations which cannot also be said by words. The converse, however, is false. Much that can be and is said by words cannot be put into equations – because it is nonsense.
Clifford Truesdell

the-pleasure-of-pride-is-like-the-pleasure-of

"
The pleasure of pride is like the pleasure of scratching. If there is an itch one does want to scratch; but it is much nicer to have neither the itch nor the scratch. As long as we have the itch of self-regard we shall want the pleasure of self-approval; but the happiest moments are those when we forget our precious selves and have neither but have everything else (God, our fellow humans, animals, the garden and the sky) instead…
C. S. Lewis

Brain Rest

… is a good thing. I recently listened to an interview with Daniel Levitin, my main take-away of which was that allowing your mind wander is restorative of your concentration. That was a pretty stressful day, and I didn’t feel up to the amount of reading I had set for myself that night, so I set a ten-minute timer and just lay on the floor for a while, allowing my mind to wander. It was astonishingly successful, and felt like a lot longer than 10 minutes. I find that, unlike trying to fall asleep, I can allow my mind to wander on-command.

Now I’m thinking about building it into my daily routine, and trying to remember to take brain-rest breaks whenever I feel harried.

Data-Orientation versus Object-Orientation

I was just thinking about this today while reading some horrible Java code that builds a complex query for Mongo by stuffing things in Lists and HashMaps line by line. Just building the query took about a hundred lines.

Java is obsessed with objects, so if you want to manipulate some data you first create a data access object to represent it, fill it in, and then send it along the wire. Better still, you teach the object to serialize and deserialize itself, and now you can just interact with the data through Plain Old Java Objects!

Now some editorializing: That is completely insane.

Sure, if that’s what you’re used to, it will make more sense to you, but your data is data on both ends of this process, and there’s great effort in the middle to essentially create a little proprietary DSL with which to manipulate these DAOs. In other words, you’re doing unnecessary work to make it less generally accessible for the time while it’s being handled by your program. Why not just leave it as data, and manipulate it directly?

It’s a language thing. Object-oriented languages put heavy emphasis on objects, which are suitable for modeling components and processes, and a terrible for modeling data. Data-oriented languages (like Clojure) try to ensure whenever possible that data remains data, in a format common to practically all libraries. There isn’t a separate DSL for each type of datum, so you can reuse the same functions over and over again on all data that comes to you, easily and generically.

Lastly, I understand that the desire to transform data into objects also stems from the desire to strongly type data. This is understandable, but I beleive also misguided. The very reason we may feel the need to impose a type system upon data is that it didn’t contain the type information in the first place. Which means the data itself isn’t strongly typed when it comes in, and it isn’t strongly typed when it goes out. We should avoid pretending that it obeys a rigid model for the sake of API evolution and interoperability. There are other ways to do validation and coercion of data, and schemas aren’t just for object-oriented models.

todo-system

As mentioned in Making Things Work For Me, I came up with a plan for my TODO system. More accurately, I tweaked my current plan and filled in a couple of essential details based on my experience with my existing system. If you’re not familiar with Things, its website really does describe it quite well. What follows is how I describe my plan to myself. Subject to change, and clearly, further detailing.

Routine

  • Capture everything I want to do into this system’s Inbox.
  • Work from Today every day.
  • During the week, either do the tasks scheduled for that day, or reschedule them.
  • During a weekly review every Monday morning, schedule tasks into days of the week
    • This is done by going through all tasks in the system and deciding what to work on, and vaguely when to work on it.
    • Can set a theme for a week or days in it (on Calendar), and use that to determine what tasks to complete, or what project to progress, each day.
    • Do not over-commit
    • To avoid the overhead of context-switching, generally only schedule tasks from one Project per day. If helpful, schedule the whole project for that day, and organize internally.
    • If I miss Monday morning, do it ASAP.
  • Whenever I have a minute, file Inbox tasks and schedule them for the Monday review (earlier if urgent).
  • If I find myself rescheduling a task over and over again, take it out of the scheduling system.
  • Similarly, if I find myself reading an unscheduled task over and over again during weekly review without scheduling it, put it in Someday.
  • Review Someday every year January 1.

Filing rules

  • Areas of Responsibility represent the ongoing, overarching, central concerns of my life that never complete. They are the highest level of organization, and every legitimate task should either fit into one of them or be rejected as out of scope for my life.
  • Projects are meta-tasks which represent a specific long-term goal with a clear definition of completion.
  • By the definition of an AOR, loose tasks are just tasks filed directly under an AOR (or, temporarily, un-filed tasks in the Inbox).
  • If I know ahead of time when particular pieces of a project are due, schedule all of their tasks at once in my weekly review.
  • Tags are used like contexts in GTD: people, places, locations… Simple suggestions for when to care or where to go to complete the task. Very optional.

Integration with external systems

  • Emails get marked with a blue flag and archived when a task is created for them in Things.

Making Things Work For Me

I use Things to manage my TODOs, and ensure that they surface when I need them, when there’s some chance of making progress on them, or when I better know what I need to know to schedule them.

Lately I haven’t been making good use of Things, because I had one week where my whole plan obsoleted by events, and I didn’t have time to go back through and adjust. I feel a second wind coming on though, and in fact, there’s a task in there now to "Make Things work for me".

As explained in What’s Best Next, I really need to pick a day of the week on which I go through my outstanding tasks and schedule them for days of the week, a "week planning session". Then I imagine that as new tasks enter my system, I can safely schedule all tasks that should be done soon to resurface on that day, and all other tasks don’t need to be scheduled at all (because I revisit them frequently anyway), but rather categoried for later consideration.

I also need to decide that "Things runs it all", and consult it frequently to know what comes next. This will validate the system, inculcate the habit, and ensure that my weekly scheduling work is actually valuable. I should make it a habit to complete all of the tasks in Today every day, or else reschedule them.

Lastly, I should ensure that my filing and categorization system in Things makes sense, and that I know when to peek in each box. I currently use Things as if the categories didn’t exist (like a flat list of tasks except for the schduling system), but it has support for Projects, Areas of Responsibilitiy, and tags, each of which can help me with different ways of knowing what to do and when once I have a weekly planning ritual in place.

aboard-at-a-ships-helm-a-young-steersman

"

ABOARD at a ship’s helm, // A young steersman steering with care.

Through fog on a sea-coast dolefully ringing, // An ocean-bell-O a warning bell, rock’d by the waves.

O you give good notice indeed, you bell by the sea-reefs ringing, // Ringing, ringing, to warn the ship from its wreck-place.

For as on the alert O steersman, you mind the loud admonition, // The bows turn, the freighted ship tacking speeds away under her gray sails, // The beautiful and noble ship with all her precious wealth speeds away gayly and safe.

But O the ship, the immortal ship! O ship aboard the ship! // Ship of the body, ship of the soul, voyaging, voyaging, voyaging.

Walt Whitman, Leaves of Grass

today

i’m really happy today

because of yesterday’s personal revelation (more on that some day) and quality survival time with katie playing Ark

and because i’m working on something interesting, i feel like my many responsibilities are now better organized and manageable, and because i’ve figured out how to be comfortable sitting

(a pretty helpful revelation i’ve had about myself recently is that i’m way more comfortable in shallow chairs with a cushion in back, both of which are achievable by putting a very thick cushion behind me while sitting in any chair, and kinda slouching a bit)

ever shifting

i’m always changing my computer setup, and longing to settle down into the perfect thing

i often wonder if i should either pick something (emacs and intellij are both looking pretty good for this) that is just infinitely flexible, and so "settle down" into a pattern that embraces my desire to constantly tweak my system, or if i should just decide to live with a certain set of manual annoyances, and just pick a technology that makes 90% of my use-cases easy