Indiana native. Purdue grad. Programmer / Dev Ops in trade. Dog owner. Husband and father. Have questions? Ask!
140 stories
1 follower

Majority Rejects “Mullet Doctrine” in Fourth Amendment Case


This was first reported by Charlie at, and his headline was “GA Court of Appeals Establishes ‘Mullet Doctrine.'” Although mine says the court “rejects” it, I think both are correct under the circumstances.

Because the majority may have refused to apply the doctrine, but it established the term for all time.

On June 28, the Georgia Court of Appeals filed an opinion in Wiggins v. State, which presented a relatively straightforward Fourth Amendment question: whether officers were justified in entering a residential backyard and arresting someone they found there in possession of marijuana. Not whether they should have bothered to arrest someone they found there in possession of marijuana, the answer to that question being obvious, but whether they were legally justified in entering, in light of the Fourth Amendment’s prohibition of unreasonable searches and seizures.

Two Fayette County deputies responded to a report of a “loud party” at about 11 pm on the night in question. The caller apparently believed the home’s owners were out of town, so it was possible the partiers were trespassing. Upon arrival, the deputies observed numerous cars parked in the area and did indeed hear loud party-like noises coming from the backyard. They couldn’t see the backyard from the street, however, and had to walk “to the back of the driveway” in order to do that (thus “penetrating the curtilage,” something you know is important if you read this or are a huge Fourth Amendment nerd for some other reason). Upon doing so, they in fact observed a “large party occurring in the backyard.” Under the circumstances, the deputies testified, they suspected these partiers had broken into the house (or at least trespassed) while the homeowners were gone.

Based on these facts, the deputies announced their presence and told everybody to stay put—a “seizure” for Fourth Amendment purposes. Not wishing to be seized, everybody ran instead. The deputies pursued, as deputies do, and managed to detain at least one individual and a backpack. This backpack emitted a distinct aroma of marijuana, or so testified the specially trained nose of the deputy hoisting it. Turned out that not only was it correct, it was able to detect less than an ounce of marijuana from within said backpack. Wiggins, who for some reason admitted the backpack was his, was arrested and charged with possession.

He moved to suppress the evidence, arguing that the deputies had no basis for penetrating the curtilage (see above), and so all the evidence they found afterward had been illegally seized. The trial court disagreed, and he appealed.

The Court of Appeals reversed, in a split decision. The majority pointed out that “it is the general rule that a warrant is required to search the curtilage,” which as you may know by now includes a yard and backyard, among other things. The deputies didn’t have a warrant, so unless one of the exceptions applied, the search was illegal. The state argued “exigent circumstances,” which Georgia, at least, defines as requiring an “emergency situation” involving a “threat to life or property.” Without that showing, even probable cause to believe a crime is being committed isn’t enough. And since it’s not illegal to have a party in the backyard, the majority reasoned, the exception didn’t apply.

It also seems to have been important that the officers could have called the homeowners to see whether they were home or had authorized the party, but didn’t do that until after the incident. Turned out that the defendant, at least, had been invited to stay at the home. The officers didn’t know that at the time, but the opinion suggests the majority faulted them for not checking first. They also didn’t knock at the front door, just charged into the backyard. In any event, the Fourth Amendment violation meant the evidence had to be suppressed.

Well, wait a second, the dissenting judge wrote. The “touchstone” of the Fourth Amendment is reasonableness, he said, and these deputies acted reasonably. They were told the homeowners might be out of town. They heard the party going on in the backyard, and just followed the route any other partygoer might have followed. A trip to the front door “would have been a wasted act,” he said, because the homeowners weren’t there and the party was in the backyard.

He then dropped one of two significant footnotes in this case, stating that “I see no Constitutional or logical reason to require officers to conduct futile business in the front, when the party is clearly in the back.”

Obviously having read this in the draft opinion, the majority responded with its own footnote saying that, respectfully, it was not convinced. The case the dissent cited involved different facts, in particular a sign with an arrow that stated “Party in Back.” Here there was no sign, and they saw no illegal activity from the street. “Under these facts,” the majority concluded, “the dissent’s ‘mullet doctrine’ does not ‘get the officers into the party out back.'”

GeorgiaPol points out that almost certainly, the dissenting judge knew exactly what he was doing, even if he didn’t name it the “Mullet Doctrine,” the point being that it’s possible to disagree and yet be respectful and even humorous about it. The way things are now, it’s always nice to see a reminder of that.

Also to have another excuse to talk about mullets, because mullets are ridiculous.

Read the whole story
3 days ago
Central Indiana
Share this story

Hotdog Redux

1 Comment

new hamburger and hot dog cookbook

The New Hamburger & Hot Dog Cookbook

Don’t settle for old hamburger and hot dog recipes. It’s time to upgrade to NEW and Improved. Note the awesome 1970s era cover. I was able to name the year of publication with just one glance. Evidently our author is the expert on all forms of hot dog cuisine. We featured an earlier hot dog cookbook on our site. Complete with not one, not two, but FOUR Hotdog Loaf recipes.

This book is evidently a culmination of her hotdog recipes with some lovely hamburger recipes as well. This cookbook isn’t illustrated, probably because half of these recipes probably should be exposed to human eyes. However, for those of you eager to expand your hotdog loaf recipe file, note her newest entry: JELLIED HOT DOG LOAF.

You’re Welcome.


hot dog and hamburger cookbook inside flaps

hamburger garnishes

jellied hot dog loaf

hamburger chow mein


The post Hotdog Redux appeared first on Awful Library Books.

Read the whole story
16 days ago
Umm... no.
Central Indiana
Share this story

Ted Forth and the IRS Scammer


Read the whole story
30 days ago
Central Indiana
Share this story

A Docker Image in Less Than 1000 Bytes

1 Share

Here it is (base64-encoded):


How I Got There

A colleague of mine showed me a Docker image he was using to test Kubernetes clusters. It did nothing, just starts up as a pod and sits there until you kill it.

‘Look, it’s only 700kb! Really quick to download!’

This got me wondering what the smallest Docker image I could create was.

I wanted one I could base64 encode and send ‘anywhere’ with a cut and paste.

Since a Docker image is just a tar file, and a tar file is ‘just’ a file, this should be quite possible.

A Tiny Binary

The first thing I needed was a tiny Linux binary that does nothing.

There’s some prior art here, a couple of fantastic and instructive articles on creating small executables, which are well worth reading:

Smallest x86 ELF Hello World

A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux

I didn’t want a ‘Hello World’, but a program that just slept and that worked on x86_64.

I started with an example from the first article above:

	SECTION .data
msg:	db "Hi World",10
len:	equ $-msg

	SECTION .text

        global _start
	mov	edx,len
	mov	ecx,msg
	mov	ebx,1
	mov	eax,4
	int	0x80

	mov	ebx,0
	mov	eax,1
	int	0x80


nasm -f elf64 hw.asm -o hw.o
ld hw.o -o hw
strip -s hw

Produces a binary of 504 bytes.

But I don’t want a ‘hello world’.

First, I figured I didn’t need the .data or .text sections, nor did I need to load up the data. I figured the top half of the _start section was doing the printing so tried:


global _start
 mov ebx,0
 mov eax,1
 int 0x80

Which compiled at 352 bytes.

But that’s no good, because it just exits. I need it to sleep. So a little further digging and I worked out that the mov eax command loads up the CPU register with the relevant Linux syscall number, and int 0x80 makes the syscall itself call. More info on this here.

I found a list of these here. Syscall 1 is ‘exit’, so what I wanted was syscall 29: pause.

This made the program:

global _start
 mov eax, 29
 int 0x80

Which shaved 8 bytes off to compile at 344 bytes, and creates a binary that just sits there waiting for a signal, which is exactly what I want.


At this point I took out the chainsaw and started hacking away at the binary. To do this I used hexer which is essentially a vim you can use on binary files to edit the hex directly. After a lot of trial and error I got from this:

Screen Shot 2018-05-22 at 07.03.23

to this:

Screen Shot 2018-05-22 at 07.06.30

Which appeared to do the same thing. Notice how the strings are gone, as well as a lot of whitespace. Along the way I referenced this doc, but mostly it was trial and error.

That got me down to 136 bytes.

Sub-100 Bytes?

I wanted to see if I could get any smaller. Reading this suggested I could get down to 45 bytes, but alas, no. That worked for a 32-bit executable, but pulling the same stunts on a 64-bit one didn’t seem to fly at all.

The best I could do was lift a 64-bit version of the program in the above blog and sub in my syscall:

 org 0x400000
ehdr: ; Elf64_Ehdr
 db 0x7f, "ELF", 2, 1, 1, 0 ; e_ident
 times 8 db 0
 dw 2 ; e_type
 dw 0x3e ; e_machine
 dd 1 ; e_version
 dq _start ; e_entry
 dq phdr - $$ ; e_phoff
 dq 0 ; e_shoff
 dd 0 ; e_flags
 dw ehdrsize ; e_ehsize
 dw phdrsize ; e_phentsize
 dw 1 ; e_phnum
 dw 0 ; e_shentsize
 dw 0 ; e_shnum
 dw 0 ; e_shstrndx
 ehdrsize equ $ - ehdr
phdr: ; Elf64_Phdr
 dd 1 ; p_type
 dd 5 ; p_flags
 dq 0 ; p_offset
 dq $$ ; p_vaddr
 dq $$ ; p_paddr
 dq filesize ; p_filesz
 dq filesize ; p_memsz
 dq 0x1000 ; p_align
 phdrsize equ $ - phdr
 mov eax, 29
 int 0x80
filesize equ $ - $$

which gave me an image of 127 bytes.

I gave up reducing at this point, and am open to suggestions.

A Teensy Docker Image

Now I have my ‘sleep’ executable, I needed to put this in a Docker image.

To try and squeeze every byte possible, I created a binary with a filename one byte long called ‘t‘ and put it in a Dockerfile from scratch, a virtual 0-byte image:

FROM scratch
ADD t /t

Note there’s no CMD, as that increases the size of the Docker image. A command needs to be passed to the docker run command for this to run.

Using docker save to create a tar file, and then using maximum compression with gzip I got to a portable Docker image file that was less than 1000 bytes:

$ docker build -t t .
$ docker save t | gzip -9 - | wc -c

I tried in vain to reduce the size of the tar file by fiddling with the Docker manifest file, but my efforts were in vain – due to the nature of the tar file format and the gzip compression algorithm, these attempts actually made the final gzip bigger!

I also tried other compression algorithms, but gzip did best on this small file.

Can You Get This Lower?

Keen to hear from you if you can…


is here.

If you like this post, you might like Docker in Practice


Read the whole story
35 days ago
Central Indiana
Share this story

What if Europe and North America switched populations?

1 Share
Just how equal in size are the populations of Europe and North America?

Read More
Read the whole story
68 days ago
Central Indiana
Share this story

D&D character names - generated by a neural network

1 Share

There are algorithms called artificial neural networks that can learn to imitate examples of just about anything. They’re used in all sorts of everyday programs, translating languages, identifying photos, colorizing drawings, delivering ads, and tons more. 

It turns out neural networks may also be a dungeon master’s best friend.

I’ve trained neural networks to invent new Dungeons & Dragons spells (part 1, part 2) and also trained them to name new D&D creatures. It worked very well (Shield of Farts, anyone?), thanks to the spellbooks and monster manuals I could use as datasets. But there weren’t any datasets for another big aspect of Dungeons & Dragons: all the characters who populate these worlds. So, over the past few months, readers have been helping me to build a dataset - which has now reached a staggering 20,908 entries.

For each character, people entered a name, a race (human, dwarf, elf, etc), and a class (wizard, rogue, bard, cleric, etc). Some of the races and classes got to be quite inventive - there’s a penguin, a fey corgi, a black pudding, and a sentient bucket. So I gave this huge weird list to a neural network to see how convincing it could sound.

With nearly 21,000 examples, the neural network could indeed sound convincing. Much of the time, the names matched the character type - at least as often as in the original dataset (which had 5 characters named Frank and 12 named Tim). 

Rose - Human Assassin
Dwarg - Half-orc Paladin
Liandra - Elf Wizard
Oron “The Star” Cartere - Dragonborn Sorcerer
Silvar the Blackblade - Half-elf Barbarian
Hank - Half-orc Ranger
Jayne Arryn - Half-elf Wizard
Annata Shortscale - Dragonborn Witch
Fyrry - Half-Elf Ranger
Rinas Mistfern - Human Ranger

Other names made perhaps less sense.

The Cart - Kenku Rogue
Nine Case - Dark Elf Fighter
Rump - Kenku Cleric
Gubble Daggers - Tabaxi Monk
Bog - halfling wizard
Jameless - Dwarf Champion Barbarian
Rune Diggler - Halfling Rogue
Borsh the Bardlock - Human Paladin
Spullbeard - Dwarf Fighter
Tovendirgle - Human Ranger
Pinderhand The Bugs - Gnome Wizard
Rune Wash - Human Wizard
Stumbleduckle - Human Paladin
Dawne Shift the Monkz - Dwarf Barbarian
Magnus Tieforian the magnificent von Cloriam Cyital DuP Ever - Dwarf Barbarian
E Ch BISHL NEBe Garte II Cr D McLGHJ T U E AA t Rat lek TF Horn hand tree Whistle - half-orc barbarian

One thing I like is all the new character races and classes that the neural network discovered. I don’t know what most of them are, but you’ll be the only one in your party.

Kelph - Burryman Ranger
Arczi-Sian - Human Dogminer
Jho the Chrishpup - kuborg fighter
Archein Morgurowood - Human Weaponic Bloodlind
Bubblebottom Donder - Half-faerie Dewlze Cleric
Altis Helder - Mander Human Star-Caver Pottlebard
Bender - half-alf paladin
Devith “Kurgbore” Mustwost - Fetchlen Cleric
Varian Amerth - blackbear Bard
Merellios Rose - Rope Gnome Wizard
Mothrek McKingfoot - halfling inquisitive
The Cowben - Human Opera
Ayrell - Forest gnome Arcane Wood Hunter

One type of name the neural network did very well: silly compound names. This pretty much settles the question of whether a neural network would be totally on board with naming something Boaty McBoatface: it totally would.

Here is what it thinks dwarves should be named.

James Crucklebottom - Dwarf Wizard
Frank Firethorn - Dwarf Wizard
Willian Stonefrown - Dwarf Fighter

Actually, you know what? Pretty much everyone needs a name like this. 

Kavar Blunderwood - Goliath Monk
Hadrie Trumbledutch - Halfling Rogue
Prinkina Timberspull - gnome sorcerer
Arrina Cuprest - Human Sorcerer
Tretcher Twestybeard - Dwarf Witch
Ponny Stonecharles - Human Monk
Ashrata Dangstrider - Ratfolk Rogue
Den Splatterwoof - Halfling Druid
Wolfrit Rockhole - Human Sorcerer
Beddar Jacklebottom - Halfling Cleric
Azrara Stoutfrogg - Half-orc Monk
Lord Filedawn - Halfling Warlock
Gripple Ravenhorn - Human Assassin
Balfeart Wolfspleam - Dwarf Fighter
Eldric the Bizzlebree - Human Warlock
Pig Haystalker - Human Assassin
Ladie Barewalker - Tiefling Warlock
Fay Blutterlocket - Dwarf Paladin
Millian Kricklebottom - Kobold Sorcerer

I’ve posted the entire original dataset here, and you can access a huge export of generated characters there as well. If you want the list plus a few extra that I deemed not quite appropriate for the main blog, enter your email here and I’ll send them to you.

Also! I’m still crowdsourcing a dataset of character bios (I used some of the names for this experiment). If you’d like to help, use this form.

Read the whole story
73 days ago
Central Indiana
Share this story
Next Page of Stories