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

The oral history of the Hampsterdance

1 Share

a wild story of copyright, remix, and early web culture

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

List: Top Dinner Suggestions According to a Three-Year-Old’s Eating Habits

1 Comment

A French baguette, but only the inside — NO CRUST

Seven slices of American cheese

A frozen waffle, cooked

A frozen waffle, raw

The ricotta layer of an entire lasagna

Half a stick of butter

Four very specific Oreos

Pizza, just the cheese

Applesauce through a straw

Macaroni and cheese, the “real” kind that cooks in a plastic cup in the microwave

A $4.99 half-pint of organic blueberries

A cheese quesadilla dipped in maple syrup

Gum, swallowed

Carrot sticks, not swallowed

Chicken noodle soup with oyster crackers, minus the soup

The jelly half of a peanut butter and jelly sandwich

Toast cut into four triangles: one with butter, one with jam, one with mayonnaise, and one with pepperoni

Pizza, just the sauce

Around the edges of a cheeseburger without ever actually biting into the meat

A Swiss Miss hot cocoa packet

One bite each of three apples

A grilled cheese sandwich, served with a cup of orange juice so he can soak the sandwich before eating it

Spaghetti bolognese with the sauce rinsed off in the bathroom sink after he pretends he needs to wash his hands

Cheez-Its aged in the car seat for three weeks

Birthday cake even though nobody we know has a birthday coming up

Something he’s allergic to

Teddy Grahams eaten from a bowl on the floor like a dog

The dog’s actual food

Sour cream that he thought was ice cream and continued eating to save face

Those little packets of coffee creamer they have at diners

The poisonous red berries on those bushes outside

Cheerios and milk eaten from the Lightning McQueen cereal bowl, and if you can’t find the Lightning McQueen cereal bowl you might as well go kill yourself


Ketchup licked off a matchbox car

A bite of whatever you’re eating, even if you’re both eating the same thing

Read the whole story
4 days ago
Yes. It's sad because it's true.
Central Indiana
Share this story

wireless router

1 Share

Client: I set up the router like you told me but I still don’t have any internet.

Me: Is the router’s WAN light on?

Client: No.

Me: Are any lights on?

Client: No, it’s all black.  

Me: Did you plug the router in?

Client: Why should I? It’s wireless, isn’t it?

The post wireless router appeared first on Clients From Hell.

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

I Don’t Hate Women Candidates — I Just Hated Hillary and Coincidentally I’m Starting to Hate Elizabeth Warren

1 Comment and 6 Shares

“How does Warren avoid a Clinton redux — written off as too unlikable before her campaign gets off the ground?” — Politico, 12/31/18

- - -

I have no problem with women. My wife is a woman and I have daughters who will likely be wives and mothers of daughters one day. I only had a problem with Hillary Clinton, and my problem with her is completely separated from her gender, and is solely based on the fact that she was so dishonest when compared to other prominent politicians who ran for president. How could anyone vote for such a liar?

My hatred for Hillary wasn’t diabolical. I never bought into the whole pizzagate thing, or the whole Uranium One thing, or the whole spirit-cooking-she-drinks-blood-infused-Podesta-rice thing, and I never once believed she was the devil. I would see those posts and just be like, Huh, if people believe that stuff about her, she must be really terrible.

And I never chanted LOCK HER UP or created memes showing her in prison, but I did laugh a little at those memes, because the thought of this accomplished woman behind bars with all her agency stripped away from her was funny to me.

So I’m a perfectly reasonable, women-friendly fellow who is completely open to the idea of a woman president. And I never thought I’d hate anyone as much as I hate Hillary Clinton. But to my surprise, I’m actually starting to hate Elizabeth Warren.

Don’t get me wrong. I’ve heard that Elizabeth Warren is a champion of consumers and the middle class who battled the big banks and advocates for economic reform. Nonetheless, she rubs me the wrong way.

I hate the way she dealt with Donald Trump’s incessant attacks against her, for example. Why did Elizabeth Warren have to take that DNA test? Why couldn’t she have handled his abuse the exact right way? If I were being libeled by the President at his toxic mob rallies of hate, by golly, I would know just how to turn that into a moment of pure perfection.

And you know the DNA test is a huge deal, because Breitbart published five different stories about it over the course of 24 hours. Though I have never once in my life given a thought about the welfare of Native Americans, I am totally offended on their behalf. The fact they have criticized Elizabeth Warren just bolsters my claim that she’s the worst person ever, besides Hillary Clinton, and thus endeth my Native American advocacy until the day I die.

Another thing about Elizabeth Warren: She claims she advocates for the poor, yet she isn’t a poor herself. She lives in a fancy house with her fancy Harvard salary. I’m no fan of Trump, but that Elizabeth Warren is such a phony. That’s a thought, and thoughts are true, and I will never examine how that thought got into my head.

I mean, think about it for a moment. If Elizabeth Warren were so great, why would Robert Mercer be funding a super PAC whose sole purpose was to portray her as an out-of touch hypocrite? If she were a truly good leader, why would so many people like me dislike her?

I always tell my daughters they can be anything they want, so long as they don’t make other people feel uncomfortable. They can be as ambitious as they want, so long as they do it in an acceptable manner. They can reach for the stars, which you can see right up there on the ceiling painted to resemble a sky.

So bring it on, ladies! I’d love to see a female President. Just not Hillary Clinton. Or Elizabeth Warren. I am totally open to all other women leaders, but I have to admit that Kamala Harris and Amy Klobuchar are beginning to make me angry and I’m not sure why yet, but I know the reason will become clear soon, and I’m also wondering what they might look like if someone photoshopped their heads onto the bodies of prisoners and put them behind bars.

Reach for the stars, girls!

Read the whole story
10 days ago
Central Indiana
Share this story
1 public comment
13 days ago
they missed a chance to say something about women on the right, like Palin or trump-complicit appointees like Haley and Kirstjen Nielsen
Bend, Oregon

We’re The Board of Directors for The Polar Express and We’re Begging the President: Get to Infrastructure Week Already

1 Share

On behalf of the Board of Directors for Polar Express Railways (PER), we would like to formally implore the current president to put aside any distractions and finally make good on his promise to devote a week to rebuilding our nation’s crumbling infrastructure.

The dire need for this Infrastructure Week cannot be overstated. Mr. President, despite our corporate policy to sugar-coat most things, we are not going to sugar-coat this statement: The Polar Express endangers the life of every child who boards it.

We repeat. The Polar Express endangers the life of every child who boards it.

In the past five years, The Polar Express has de-railed five times. We only make one trip a year. Doing the math there, you can see that de-railing occurs on 100% of Polar Express trips. De-railing should not be a regular occurrence for any train, let alone one entirely populated by children.

Just last year, the entire engine inexplicably broke free of the track (our research team suspects foul play by a band of mischievous Christmas coyotes) and pulled the entire train over a frozen lake, narrowly outrunning the crumbling ice behind it. Admittedly, the train made great time that year, and yes, the children aboard described that particular trip as a “magical thrill-ride,” but this is frankly no way to do business. We shudder to think what would have happened had the conductor not managed to lasso a nearby friendly snow moose who pulled the train to safety. Imagine if there had been no friendly snow moose, Mr. President.

While we’re on the subject of the conductor, we’d be remiss if we didn’t mention the lack of available headcount here at PER. With just a little funding, we could create so many jobs, Mr. President. Currently, we have just one employee performing ALL of the following roles:

  • conductor
  • engineer
  • head chef
  • coal shoveler
  • ornament sorter
  • resident magical train tramp
  • Santa Claus

Sure, the guy’s charismatic, don’t get us wrong. But one man can only wear so many hats!

Our supplies are scant. Without proper funding, how are we supposed to refill the hot cocoa fondue fountain? The garland dispenser? The wreath machine? The decorative ticket punching expenses alone are enough to drive us to the brink of bankruptcy.

The complimentary silver bells we hand out to the children are shoddily made. They stop working after a few years! The kids have started speculating it has something to do with whether or not they believe in Santa still. It doesn’t — they’re just shitty bells!

Apologies if we sound frustrated. It’s just that we’ve seen this administration come so tantalizingly close to Infrastructure Week time and time again, only to have plans derailed by some scandal or internal White House drama. And unfortunately, this derailing cannot be solved by a friendly snow moose. God, though we wish it could.

Listen, we understand. We’ve had our fair share of scandals here (asbestos in the caboose, if you know what we mean). But we’re on your side! We’re all Republicans here! We would have voted for you in 2016 if Gary Johnson hadn’t been such an irresistible candidate.

But all that aside, we beg you: Stay focused and make Infrastructure Week happen this year, preferably before the holidays. Unless you’d like to find out if any of these kids are Unbreakable.

Additionally, we ask, don’t let yourself be dissuaded by the heinous lies and rumors circulating around. Yes, we know that Union Pacific and Amtrak have been trying to spread the idea that we are funded by magic. It’s embarrassing that we have to state this but, Mr. President, we are NOT funded by magic. We pay our elves dollars and cents, just like every other professional railroad company.

If you don’t believe there’s a dire need for this infrastructure overhaul, we invite you to take a walk down one of our train cars and look at the faces of the children. The Polar Express, in its current state, is making them miserable. They look dead behind the eyes! Please, invest in infrastructure. Do it to inject some life into their horrible little ghoul faces.

This is our plea. If Infrastructure Week doesn’t happen this year, we fear The Polar Express will become but a footnote in history, next to other failed enterprises, like Enron and Snap Spectacles. And who knows! If you can make Infrastructure Week finally happen, maybe we can put in a good word with the big man (the resident magical train tramp).

Ho, ho, ho,
The Board of Directors

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

Learn eBPF Tracing: Tutorial and Examples

1 Comment and 2 Shares
At the Linux Plumber's conference there were at least 24 talks on eBPF. It has quickly become not just an invaluable technology, but also an in-demand skill. Perhaps you'd like a new year's resolution: learn eBPF! eBPF should stand for something meaningful, like Virtual Kernel Instruction Set (VKIS), but due to its origins it is extended Berkeley Packet Filter. It can be used for many things: network performance, firewalls, security, tracing, and device drivers. Some of these have plenty of free documentation online, like for tracing, and others don't yet. The term tracing refers to performance analysis tools that can produce per-event info. You may have already use a tracer: tcpdump and strace are specialized tracers. In this post I'll cover learning eBPF for tracing, grouped into content for beginner, intermediate, and advanced users. In summary: - Beginner: run [bcc] tools - Intermediate: develop [bpftrace] tools - Advanced: develop [bcc] tools, contribute to bcc & bpftrace # Beginner ## 1. What is eBPF, bcc, bpftrace, and iovisor? **eBPF** does to Linux what JavaScript does to HTML. (Sort of.) So instead of a static HTML website, JavaScript lets you define mini programs that run on events like mouse clicks, which are run in a safe virtual machine in the browser. And with eBPF, instead of a fixed kernel, you can now write mini programs that run on events like disk I/O, which are run in a safe virtual machine in the kernel. In reality, eBPF is more like the v8 virtual machine that runs JavaScript, rather than JavaScript itself. eBPF is part of the Linux kernel. Programming in eBPF directly is incredibly hard, the same as coding in v8 bytecode. But no one codes in v8: they code in JavaScript, or often a framework on top of JavaScript (jQuery, Angular, React, etc). It's the same with eBPF. People will use it, and code in it, via frameworks: for tracing, the main ones are bcc and bpftrace. These don't live in the kernel code base, they live in a Linux Foundation project on github called **iovisor**. ## 2. What is an example of eBPF tracing? This eBPF-based tool shows completed TCP sessions, with their process ID (PID) and command name (COMM), sent and received bytes (TX\_KB, RX\_KB), and duration in milliseconds (MS):
# tcplife
PID   COMM       LADDR           LPORT RADDR           RPORT TX_KB RX_KB MS
22597 recordProg       46644       28527     0     0 0.23
3277  redis-serv       28527       46644     0     0 0.28
22598 curl    61620    80        0     1 91.79
22604 curl    44400   80        0     1 121.38
22624 recordProg       46648       28527     0     0 0.22
3277  redis-serv       28527       46648     0     0 0.27
22647 recordProg       46650       28527     0     0 0.21
3277  redis-serv       28527       46650     0     0 0.26
eBPF *did not* make this possible – I can rewrite tcplife to use older kernel technologies. But if I did, we'd never run such a tool in production due to the performance overhead, security issues, or both. What eBPF did was make this tool *practical*: it is efficient and secure. We can run this in production, 24x7. ## 3. How do I use it? For beginners, try the tools from bcc. See the bcc install instructions for your OS. On Ubuntu, it may be like:
# sudo apt-get update
# sudo apt-get install bpfcc-tools
# sudo /usr/share/bcc/tools/opensnoop
PID    COMM               FD ERR PATH
25548  gnome-shell        33   0 /proc/self/stat
10190  opensnoop          -1   2 /usr/lib/python2.7/encodings/
10190  opensnoop          -1   2 /usr/lib/python2.7/encodings/
10190  opensnoop          -1   2 /usr/lib/python2.7/encodings/
10190  opensnoop          18   0 /usr/lib/python2.7/encodings/
10190  opensnoop          19   0 /usr/lib/python2.7/encodings/ascii.pyc
25548  gnome-shell        33   0 /proc/self/stat
29588  device poll         4   0 /dev/bus/usb
There I finished by running opensnoop to test that the tools worked. If you get this far, you've used eBPF! Companies including Netflix and Facebook have bcc installed on all servers by default, and maybe you'll want to as well. ## 4. Is there a beginner tutorial? Yes, I created a bcc tutorial, which is a good starting point for beginners to eBPF tracing: - bcc Tutorial As a beginner, you do not need to write any eBPF code. bcc comes with over 70 tools that you can use straight away. The tutorial steps you through eleven of these: execsnoop, opensnoop, ext4slower (or btrfs\*, xfs\*, zfs\*), biolatency, biosnoop, cachestat, tcpconnect, tcpaccept, tcpretrans, runqlat, and profile. Once you've tried these, you just need to be aware that many more exist:
These are also fully documented with man pages and example files. The example files (\*\_example.txt in bcc/tools) show screenshots with explanations: for example, biolatency_example.txt. I wrote many of these example files (and man pages, and tools), which are like an extra 50 blog posts you'll find in the bcc repo. What's missing is production examples. I wrote all this documentation when eBPF was so new it was only available on our test instances, so most of the examples are synthetic. Over time we'll add real world examples, and it's an area beginners can help: if you solve an issue with a tool, consider publishing a post to share the screenshots, or adding them to the example files. # Intermediate At this point you should have bcc running and have tried the tools, and you're interested in customizing them and writing your own tools. The best path is to switch to bpftrace, which has a high-level language that is *much* easier to learn. The downside is that it's not as customizable as bcc, so you may eventually run into limitations and want to switch back to bcc. See the bpftrace install instructions. It's a newer project, so it isn't packaged everywhere at the time of writing this post. In the future, it should just be an apt-get install bpftrace or equivalent. ## 1. bpftrace Tutorial I developed a tutorial that teaches bpftrace via a series of one-liners: - bpftrace One-Liners Tutorial This provides 12 lessons that will teach you bpftrace bit by bit. An example screenshot:
# bpftrace -e 'tracepoint:syscalls:sys_enter_open { printf("%d %s\n", pid, str(args->filename)); }'
Attaching 1 probe...
181 /proc/cpuinfo
181 /proc/stat
1461 /proc/net/dev
1461 /proc/net/if_inet6
That's using the open syscall tracepoint to trace the PID and path opened. ## 2. bpftrace Reference Guide For more on bpftrace, I created the reference guide which has examples for the syntax, probes, and builtins: - bpftrace Reference Guide It's terse on purpose: as much as possible I fit a topic heading, summary, and screenshot all on one screen. If you look up something and need to hit page down several times, I think it's too long. ## 3. bpftrace Examples There are over 20 tools in the bpftrace repository that you can browse as examples: - bpftrace Tools For example:
# cat tools/
	printf("Tracing block device I/O... Hit Ctrl-C to end.\n");

	@start[arg0] = nsecs;


	@usecs = hist((nsecs - @start[arg0]) / 1000);
Like bcc, these tools have man pages and example files. For example, biolatency_example.txt. # Advanced ## 1. Learn bcc Development I've created two documents to help here: - bcc Python Developer Tutorial - bcc Reference Guide There's also lots of examples under bcc/tools/\*.py. bcc tools are of two parts: the BPF code for the kernel, written in C, and the user-space tool written in Python (or lua, or C++). Developing bcc tools is somewhat advanced, and may involve some gritty kernel or application internals. ## 2. Contribute Help is appreciated: - bcc issues - bpftrace issues There's also the kernel eBPF (aka BPF) engine: if you browse bcc and bpftrace issues, you'll see some requests for enhancements there. Eg, the bpftrace kernel tag. Apart from writing code, you can also contribute with testing, packaging, blog posts, and talks. # Summary eBPF does many things. In this post I covered how to learn eBPF for tracing and performance analysis. In summary: - Beginner: run [bcc] tools - Intermediate: develop [bpftrace] tools - Advanced: develop [bcc] tools, contribute to bcc & bpftrace I also have a dedicate page on [eBPF Tracing Tools] that covers these in more detail. Good luck! [bcc]: [bpftrace]: [eBPF Tracing Tools]:
Read the whole story
14 days ago
Now I just need a reason to actually try this out.
Central Indiana
Share this story
Next Page of Stories