Posts from March 2017

Weekly Reflection Post 1

It's Monday, March 20th. It's been eight days since I posted my first weekly planning post, and guess what - I totally forgot to do my weekly reflection yesterday! So I guess I'm going to do it now, because I'm not going to let it go undone even I forgot to do it on time.

Monday, March 13

On Monday, I did implement the heap data structure mostly from memory. That's a fun one, and I'm glad I brushed up on it. I completed about 5 hackerrank problems, going a little overboard from what I had planned. I also started putting the pieces together for my HTTP server.

I did not get around to working in Dijkstra's Algorithm, but I did finally get an okay-looking homepage for my blog. Go check it out; it has my face on it, and I'm pretty.

Also, RIP TweetBoy. My sweet garbage robot son.

Tuesday, March 14

Tuesday was a snowday and I got in late, but I managed to interface with Andrew Kelley and we did a bunch of work to get Zig's pow function into a pretty okay state, along with some other necessary additions to the stdlib. That's most of what happened that day, with maybe some additional learnings/investigation that aren't worthy of talking about.

Wednesday, March 15

I for the life of me cannot remember what happened today. Oops, all memory loss! If I do remember I'll amend this blog post to discuss it.

Thursday, March 16

I finished up my Haskell HTTP server just in time to do a live demo at RC, which went fantastically. I didn't do too much other work, however - there was a board games night wherein I ate much good pizza and drank many good libations. Fun stuff.

Friday, March 17

I had a job interview! I interviewed with a fantastic company called Rent The Runway, and was engaged with them for most of the day. I managed to then give another demo of my HTTP server at the company I had just interviewed with - which will become its own blog post, mark my words.

Conclusion

I got a lot of things done. I learned a bunch about Haskell, especially concurrency and more about sockets and HTTP. I implemented a pow function, which is not trivial (and might become its own blog post), wrote blog posts and polished my website. And I also discovered that I sometimes can't remember a lot of what happened the previous week, so I probably need to start recording daily what I do.



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?