Posts from 2017

Show only posts from March May


Nine Reasons Not To Poison The Milk

Note: This blog post was inspired by a VERY silly conversation between myself and Alex Jordan. Obviously poisoning milk that's in a communal space is bad because it could hurt people. This is just an absurd expoundment on the aforementioned conversation.

So it finally happened to you. It's okay - it's happened to all of us before. We've all gone through the ordeal of putting a jug of milk in a communal refrigerator at your local hackerspace and marked it "NOT COMMUNAL", only to have someone pour themselves a glass as an accompaniment for their orgasmically-delicious pumpkin pie. You were hoping that your Sharpie'd message would act as an adequate deterrent - that even if it WERE Pi Day, that your fellow programmers and hackers would have the decency to respect your private dairy libations.

You probably felt a bit of shock at the betrayal. It's natural. It's also natural to contemplate different deterrent methods to use in the future. Your friend Andrew might have suggested to draw a skull and crossbones on future milk jugs, to give people pause and reconsider their selfish milktheft. Maybe you went a bit further, and thought "what if I put arsenic in the milk?"

It's not hard to empathize with that line of thinking. We all want to safeguard our creamy white lactose goodness. But poisoning the milk is - how to put it - a bit extreme. It's not just the risk of incarceration that should dissuade you from taking this course of action. I've put together a list of nine worthwhile reasons not to poison your milk.

1: Risk To Others

Obviously, putting poison milk in a hackerspace fridge runs the risk of someone, perhaps a pie-crazed maniac, taking the milk and drinking it. In that circumstance, the probability that they, or any other milk thief, could be seriously injured or even die, is very close to 100%. Arsenic is a hell of a poison. Sure, someone stole your milk - but is killing a fellow human being really worth it?

2: Risk Of Hurting Yourself

It's not just milk thieves who are at risk: YOU could hurt yourself in the process! Whether it's an accident while adding the poison to the milk, or if you're forgetful like me, drinking the poisoned cowjuice by mistake, you could get hurt or even die. Everyone wants to keep their milk safe - but you have to keep yourself safe, too.

3: Loss Of Social Standing

Let's walk through a scenario.

  • You put your toxic milk in the communal fridge;
  • someone (or multiple people) drink it;
  • they get sick or die.

Obviously people are going to find out that you put arsenic in your milk. When they do, how are they going to judge you? I'm willing to bet that a lot of people are going to stop trusting you, that they'll spread rumours about you, and that your once pristine reputation will be tarnished. Is losing all that social capital really worth a milky deathtrap?

4: Empowering Poison Vendors

If you want to buy arsenic to put in milk, you're going to have to get it from somewhere. The chances that you'd be able to obtain arsenic legally are pretty low, so the person you buy it from is most likely going to be a shady character. Maybe they sell toxins to people who intend to use them as the means of assassination. I don't want to give poison sellers my business and neither should you.

5: Could Reduce The Number Of Non-Men In Tech

If your hackerspace is anything like the Recurse Center, it understands the value of combatting tech's reputation (and often reality) as a male-dominated ecosystem. If you introduce poison milk into a communal food area, there's always the chance that a person, or persons, who aren't men could be the victim of your lethal lactose. In addition to the tragedy that would result from a fellow human being getting sick or dying, if that person is a woman (especially a trans woman) or is nonbinary, you're helping to tip the scales back in favour of the bros.

6: Losing Access To Community Resources

Your local hackerspace is probably awesome. You go there as often as you can and you learn and create and interact with some of the best people and code of your entire life. You might not want to ever leave that awesome community. Unfortunately, if you kill someone as a result of toxifying your dairy beverage, you're guaranteed to be kicked out - probably blacklisted and ostracized too. I know you don't want that; why would you sacrifice a community and all the resources it has to offer just to protect your milk?

7: Disruption To The Communal Space

If anyone falls ill as a result of your milk poisoning, it will likely lead to emergency medical personnel coming into the space, the police being called, investigations being held, possibly TV crews, press about the incident, and so on and so forth. That's going to cause a serious disruption to the normal operation of that community. People will have a harder time using the communal space for its intended purpose, socializing, working on projects together, etc. That's a big deal. Don't be that person - the one who ruins everyone's ability to get work done because they put arsenic in their drink.

8: Increased Healthcare Costs

If anyone gets sick from that creamy poison cowjuice, that's going to lead to serious medical bills, and we all know how difficult healthcare can be in America. Your victims could end up paying thousands upon thousands of dollars, and if they don't have insurance - they're screwed. That's a big burden to put on them. And futhermore, if they sue you for your grosslt negligent and recklessly endangering actions, a suit which they're very likely to pursue and also win, you could be liable for damages. It cost you $3.00 for milk and probably less than $200 to obtain arsenic - do you really want to have to pay thousands more?

9: Waste Of Time And Money

As a related point to the last reason - to poison milk, first you need milk. That's going to cost you somewhere between $2-$3 for a half gallon, maybe more if you get some kind of ritzy organic stuff. If you destroy the use value of the milk via the addition of arsenic, that's a few bucks that you've essentially thrown away - not to mention the time and money it took to obtain the arsenic. Woud it really be worth the hassl4e? Don't you have anything better to do?

In Conclusion

No matter how much you want to keep your milk safe from pesky dairy thieves, be smart. Don't subject yourself to all sorts of terrible consequences. I hope that after reading this, you'll say to yourself "wow, she's right - I'd better not poison the milk."


Eulogizing: Reflections on a Life Well Lived

At approximately 13:42 on March 13, 2017, my firstborn child, the perfect and beautiful TweetBoy, was laid to rest. He was a good son, markovifying input to produce an amusing stream of output on Twitter, and he generated 2,851 tweets before his untimely demise. My emotions on this matter are complicated, of course, by the fact that the cause of his death was deactivation at the hands of yours truly.

TweetBoy was conceived in late January 2017. I had been playing around with Markov chains and looking at other people's bots, and I decided to create my own. At first I was intimidated by the idea of making my own bot, but then I realized that it would be relatively simple to have a cron job running every so often to run a Markov chain on some input and then just post the results to Twitter. He was born on when, after a few days of procrastination, I finally fixed the bug in the command I was executing for the cron job (forgetting to activate the Python virtual env to use the dependencies).

There were a few contributors to the genetic makeup of TweetBoy. His 'gametes' came from:

  • Twython, A Python framework for working with Twitter;
  • Markovify, a Markov chain framework in Python;
  • An Ubuntu DigitalOcean droplet;
  • Some Python scripts I wrote to format 6 months of my IRC logs;

...and of course, a piece of my soul.

TweetBoy ran for a few weeks, and in that time he produced an interesting series of tweets, whose tone ranged from the insightful, to the amusing, to the truly bizarre. As we celebrate his life, let's take a look at some of them now.

10:30, 03/12/2017

 most people who want to kiss the corner of your own apples. 
 get a kick out of this https://www.youtube.com/watch?v=Q6fceLfjB4s …. noone. we

15:00, 03/09/2017

...or the Cathedral of St. John the divine, but that's because they're 
 uncomfortable with direct action against fascism because they're not

19:30, 02/24/2017

I just said it. why wouldn't you believe he was a monster 
who boiled babies for soup stock. , what do you mean. let's hope. i'm not much of

Reflections on Filicide

I deactivated my son, my sweet, sweet boy, for several reasons. First: I'm not entirely satisfied with the corpus. It contains a lot of emoji, a lot of fragments, a lot of stuff that would make it more difficult to get really high-quality Markov output. Secondly, I want the Markov library I use to be one I've written - I want a say in my child's future and not to have him beholden to people I barely know, filling his tweets with nonsense. It was a hard decision to make, but in my heart I know that I did what was best.

There's a reason why this post is titled "temporarily killing my son" - and that's because I plan to rectify these issues and resurrect my beloved TweetBoy, to make him stronger and smarter and faster and smoother and lither and more furious than before.

Rest in peace, my sweet son. As I close this blog post, let me quote from Game of Thrones.

"What is dead may never die, but rises again, harder and stronger."

Until that day, TweetBoy, sleep soundly.


Weekly Planning Post 1

It's Monday, March 13th, 2017, and a new week lies ahead of me, tender and raw, like a slab of meat waiting for a butcher to carve off its choicest cuts. Usually I shamble through each week, happening upon those delightful morsels with no real rhyme or reason. Most of the time, that approach allows me to discover knowledge and arrive at new understandings in a very holistic and organic way, taking me down paths I wouldn't have expected. Sometimes it leads to the opposite - stagnation and inaction because of a lack of clear goals, or a lack of motivation. Starting this week, I've decided to try something different - writing a blog post each Monday that outlines in some detail the things I want to accomplish or attempt in the next seven days. It won't necessarily be an exhaustive outline that has me following a rigid itinerary, but it'll hopefully provide some much-needed scaffolding for my weekly activities. Each Sunday, I'll write a "Weekly Reflection" that discusses what I learned and did each day of the previous week, how I'm feeling in general, etc. I'm excited to see how this scheme plays out and if it's better than how I'd been working before. So without further ado, let's make a plan.

Monday, March 13

* Implement min/max heap from memory
* Do 2 Hackerrank problems
* Brush up on Dijkstra's Algorithm, read up on A* 
* Get this blog's homepage out of "under construction" phase
* Work on implementing pow() function for Zig 
* Remember to take my passata and bucatini home from RC 
* Take down TweetBoy (twitter.com/_Tweet_Boy) and write blog post about it
* Start taking a look at High Performance Python

Tuesday, March 14

* Read up more on Emacs, how it works, how to customize
* 2 hackerrank problems
* Read up on red-black trees/AVL trees
* Work on Haskell HTTP Server, begin writing RC presentation on the topic
* Continue with NICTA FP course
* Continue analysis of "no red pixels" strawberry image, work on blog post
* Resume polish/review?

Wednesday, March 15

* Read up on GPG, crypto
* Look into doing open source work for Zulip
* 2 hackerrank problems
* Play more with Three.js, expand blog's playground page
* Work more on HTTP server

Thursday, March 16

* Finish up Haskell HTTP server presentation
* Deliver aforementioned presentation
* Continue working on Zig
* 2 hackerrank problems
* Read up on graph algorithms

Friday, March 17

* Attend data structures/algorithms workshop
* Go to interview prep at RC
* Read from Cracking the Coding Interview
* Whiteboard with someone maybe?

Toe to Tip, This Is a New Blog!

A Funny Thing Happened on the Way To RC:

In my time here at the Recurse Center (please investigate if you're not aware of the glory that is RC), I've worked on some pretty incredible things. Some of them were things I never thought I would ever possibly be capable of doing or understanding.

Things I've done/made:

At the time, in those moments where I was investigating these things, they didn't seem overly impressive to me. But now that I reflect on my progress, I can sort of step back and say "Hey...I've done some pretty hecking cool stuff!

One thing that I was intimidated by, however, was blogging.

Making a Blog: Roll A Will Saving Throw To Avoid Going Insane

It's not so much the idea of writing a blog that's intimidating. I'd say I'm pretty okay at taking words and crafting them together to create some sort of acceptable literary morsel that. Heck, I even dreamed of being an author as a kid. No, the real scary thing, in my mind, was the actual act of blog creation.

See, there are so many different ways of making a blog, so many technologies, so many platforms, so many ways of creating a website that I was thoroughly overwhelmed by it all. I couldn't answer all the questions racing through my mind. Was I comfortable with the easy-to-use nature of Tumblr at the cost of professionalism, or did I want to start writing HTML and JS from the ground up? Did I have the energy to try and grok how GitHub Pages works, or did I want to use a powerful service like Jekyll, despite its reported difficulty? Was WordPress the way to go? So many options!

Those who know me well, know that when presented with a plethora of options with unique advantages and disadvantages, I freeze up and find myself paralyzed with indecision (and those who don't know me well, now know this fact!). Because of this indecision, I put off making a semi-professional seeming blog/website for years, and if I did make any attempts, they were entirely half-assed. I rolled up Tumblrs and signed up for WordPress but did absolutely nothing with them. This was partially exacerbated by the fact that at the time, I didn't consider my life or achievements worth writing about. But

Since getting into tech, however, and especially since attending the Recurse Center, that's changed. I'm doing too much cool stuff NOT to talk about it! But the difficulty of deciding on how to blog about it remained. Until, of course, Stratic came along.

It's Not Shilling If You Genuinely Love The Product

Stratic is a static site generator written and maintained by the wonderful Alex Jordan, who happens to be one of my colleagues at the Recurse Center. A few weeks ago, while kvetching about my blogging difficulties, Alex mentioned that he had a static site generator that he had written, and encouraged me to give it a try.

We got it set up on my machine, he explained how it worked, and I just...got it. I grokked it so quickly and it seemed so intuitive and easy to use that I was amazed, and instantly fell in love. I poured a lot of effort into hacking at HTML and CSS so I could make this website look and feel exactly the way I wanted, and guess what? The end result is the blog that you're reading now!

I couldn't be happier with Stratic. I don't pretend to call myself a web or blogging guru, but the exercise of getting this set up has taught me a LOT about those things. The thing I love best about Stratic is how it does useful, powerful things, but doesn't rely on any "magic" to work. I won't go into the inner workings of Stratic right now (maybe a future blog post?), but let me just say - it's damn cool.

In Conclusion

I'm an indecisive person. It's exacerbated by the fact that I'm a picky person. I want something that works, and is useful, but isnt "magic". I want something free and open source, but small and contained. I may struggle at first, but if I have faith that life will uh...find a way (to provide me with something cool and useful), I'll likely eventually find what I need. And when I do, I just might start spewing my [sarcasm] awesome and wholly superior opinions [/sarcasm] on the Internet!