(Funniest, at least!). Well worth the 27min watch.
DevLog for Jan 5, 2015
Trying out the ByWord app, since it has MarkDown support and also publishes to WordPress. Paid Rs. 900 for it, let’s hope it is useful. Hate the default font, though.
- Need to parse View definitions on labsdb public databases and verify that we aren’t leaking any info (https://phabricator.wikimedia.org/T85783). Was going to use the sqlparse library, but that doesn’t seem very complete or useful. Will attempt to use regexes now. Wish I had learnt how to build parsers properly easily.
- Ignore lament ^, I spent some time learning to use PyParsing, and ended up with a very simple parser that parsed the small subset of SQL I cared about! Yay :) Still need to set aside some time at some point to fully understand parsers/parsing.
- Fixed wikdidata beta not resolving (https://phabricator.wikimedia.org/T85793). Of course, problem was caused by me as well, not verifying that DNS changes I was making didn’t have unintended consequences. It’s also somewhat surprising that it was down for 6 days before someone noticed.
- Add labsdb-auditor report that verifies views have appropriately done definitions that do not expose private information (https://gerrit.wikimedia.org/r/#/c/182848/). This was fun to write. I should definitely learn more parsing things and seek out other simpel things I can write a parser for. Code quality is getting better, although could still be better if I can remove the regex part entirely – it currently cleans up the SQL via a regex and then parses it with pyparsing.
- Fixed a consistency bug in the perl script that maintians public view replicas (https://gerrit.wikimedia.org/r/#/c/182819/).
Nothing much going on…
- Continue reading Real World Haskell. This is indeed expanding my horizons, but I haven’t found any project I could use haskell in yet. Will keep looking.
- Helped fix a parsoid outage yesterday. No biggie. I still do not understand fully how parsoid works / how it is set up, should do.
- Spend most of the rest of the time in ‘weekend mode’, which includes mostly not doing things. That went mostly well.
- Watched ‘Pink Floyd The Wall’ movie. HOLY FUCK MY MIND IT IS GONE OMG IT IS QUITE REALLY NICE. Recommended.
I should probably write a ‘Year in Review 2014′ post, but so much of that is going to be NSFW and private that there probably is no point… ;)
Woohoo, 2015! :) Let’s see if I can keep this going this time :)
- Have started taking weekends slightly more seriously. My brain feels less overwhelmed after that. Should take weekends even more seriously going forward.
labsdb-auditorrewrite patch. Code clean enough for my tastes now, although not documented enough. Lots of back and forth CR with valhallasw was really nice – it’s something I’ve been missing for the past few months. Debating over style and cleanliness was also interesting. Felt like I had been taking code cleanliness and proper design not as seriously as I should have, and this is now time to change that. Also spent time consciously thinking about the commit message I was writing, and shall continue doing that. I think I’ve taken a few things for granted wrt code quality and design, and should be more careful. And learnt a few more tricks about decorators (haven’t built decorators that are parameterized before).
- Read a few chapters of Real World Haskell. Quite nice, although the syntax feels a bit too dense for my tastes. Still should maybe write things with ChickenScheme instead :)
- Continuing re-reading Coders at Work, which continues to be a thought provoking, wonderful book.
Was a great idea! It just worked (with an OTP cable), and I can now probably find much more uses for this thing than I could before. Yay!
I wonder if I can use this to write code. However, a 7 inch tablet is very poorly suited for that task – would need at least a 10″ one. But there aren’t many of those going around these days…
I’ll probably use this for random browsing / commenting, and use my Mac for actual programming.
That was a long break. Should get into better habits. I’m sure I’d miss some here. Oh well.
It was a very interesting week, culminating in some very interesting things at Trafalgar Square. I feel much better as a person and more calmer/chilled out now :) Should remember to take weekends off.
- Helped the WikiMetrics people with some puppet changes. They were requiring mysql directly instead of using the class we have in ops/puppet, which meant it put data in the /var partition instead of in /srv. This was because they want to be a ‘proper’ independent puppet module, not depending on the other modules in ops/puppet (since the module is used in vagrant as well). Puppet has terrible support for this kind of thing, and ops/puppet by itself also suffers from an incredible amount of NIH syndrome when it comes to modules. Some of the NIH-so-rewrite is justified, but I don’t think all of it is. Oh well. Hopefully something that can be fixed over time…
- Added basic icinga/graphite based monitoring for contint project (runs our jenkins installation). Quite trivial, but should be ported over to shinken at some point soon.
- Contributed a fair bit to the Shout Web IRC project. I was looking around for an open source replacement to IRCCloud, and found a bunch of OSS projects (Subway and http://ircanywhere.com/ being the others). Shout seemed the most active (and simplest) of them all – I couldn’t actually get the others to a working installation. I fixed a bunch of code formatting issues, and also added a couple of features (Desktop notifications being the most significant, I think). The maintainer was fun to work with, and merged most of my changes quite promptly. I hang out on
#shout-ircchannel now, and activity seems to be speeding along. Should be fun to see how it goes :)
- Moved off IRCCloud. Stopped paying for it. I’ve also stopped doing email on my phone, in an effort to be more minimalistic / less distracted all the time. This meant no more IRC on phone, so my primary reason for using IRCCloud disappeared. Am back to using LimeChat with my ZNC bouncer now. And nothing on my phone. In case of emergencies, I still have the IRCCloud app on my phone, and can use the free edition to connect to my bouncer temporarily.
- Started working on labs-specific monitoring, with shinken – test instance at shinken.wmflabs.org. Discussion in the ops list about how to best implement this. Shinken is supposed to horizontally scale much better than icinga since it is implemented as a bunch of different daemons that can talk over the network. Right now they are just one machine, but will probably expand at some point not too far away. They are running as a labs project rather than on a physical machine (
labmon1001) because it is much easier from a networking perspective. Right now it only has a simple http check for betacluster, but more coming.
- Started refactoring all our icinga code. Separating them out into
nagios_commmonmodule for config that can be shared between shinken and icinga, and into an
icingamodule for everything else. Moved all the custom checks and check config we have, moving other things as we go. This is a bit hard / frustrating since I don’t have access to the machine icinga runs on (
neon), and also because I still do not have +2 in our ops repo (should change in a month, tho!). Am about 40 patches in (small ones!), let’s see how many more it takes!
- Moved our
dshcode into a module. Was fairly trivial. Now to find ways to get it merged :)
- Started trying out pinboard. Interesting, barebones design. The bookmarklet is a bit slow to load, though. Let’s see how often I use this. (I did pay for it)
Five more days left in the UK :( Let me see if I can continue doing these when here, in a more prompt manner.
Back from an awesome vacation. Too awesome to write about, even :) Suffice it to say, England has some really pretty places.
Some Android app work, and lots of monitoring work
- Fixed bugs causing the Wikipedia Android Alpha from building properly. Now it builds properly whenever there is a new commit. Hooray! This was primarily caused by me forgetting to give it lots of RAM (8G VMEM) to execute the
mvnbuild commands (https://gerrit.wikimedia.org/r/#/c/159482/) and also not cleaning up previous
.alphasubfolders (https://gerrit.wikimedia.org/r/#/c/159481/) – this causes a chain of
.alpha.alpha.alpha.*subfolders, breaking the build.
- Added a patch to the Android alpha app itself that checks for updates every day or so and notifies you if there’s a new one. Was fairly trivial to write, although I was hoping to make it more seamless (i.e. download the apk myself and just pop it up for people to tap). It now requires 4 clicks to install it, should be able to bring it down to 2 at some point in the future if people care enough.
- Added a method to our
check_graphitecode that lets you individually check a bunch of metrics for thresholds (https://gerrit.wikimedia.org/r/#/c/159473/). This makes it much simpler to do icinga checks on a bunch of metrics that are all measuring the same thing but from different machines. BetaLabs and ToolLabs checks use this.
- Cleaned up a bunch of minor things with our
check_graphitescript. Also fucked up trying to replace all double quotes in it with single quotes for consistency – it replaced the double quotes being used inside single quotes, and caused all checks to fail. Fixed shortly by https://gerrit.wikimedia.org/r/#/c/159711/
- Added more monitoring for betalabs! Now checks for stale puppet runs (https://gerrit.wikimedia.org/r/#/c/159701/) and low space on the root partition (https://gerrit.wikimedia.org/r/#/c/159694/). All are green now, thanks to some work from bd808.
- Added monitoring for ToolLabs! Now checks for stale puppet runs, low space on root and /var, and puppet failure events (https://gerrit.wikimedia.org/r/#/c/159709/). Also checks for high sustained CPU usage (https://gerrit.wikimedia.org/r/#/c/159751/). Then spent some time (with help from scfc_de (whose nick I kept spelling as scfe_de until today)) cleaning up the puppet failures. They are all green now as well.
- Did a bunch of cleaning up work around the graphite role, removing the realm branching (https://gerrit.wikimedia.org/r/#/c/159759/). Ori says everytime realm branching code is removed, an angel gets its wings, so well done there.
Not a bad day, eh? I’ve been trying to wake up early, perhaps that is helping.
Missed DevLogging for a while.
Am in London now.
- Started using a spare Majestouch Ninja 2 over my regular Kinesis Advantage. This is way more portable, and my hand does not seem to be hurting while using it (so far only about 4-5 hours). If this keeps up, I should be able to move to a similar smaller keyboard over the much bulkier kinesis. There’s still a little bit of discomfort, so I’ll probably want a very portable and mechanical split keyboard. Can’t sadly seem to find any, though :( Maybe I should just build one with an arduino :)
- Setup icinga checks for puppet failures and disk space issues on betalabs, and fixed a bunch of issues/docs in our icinga puppet code during that time. This still doesn’t properly work since our implementation of
check_graphitedoes not support wildcard metrics properly – it should check thresholds for each series, but it seems to do that only across the entire series combined, which is kinda useless. Should fix that soon by adding more features to it. Also might try out other alternatives to icinga, since our icinga puppet code is a fuckball anyway.
- Fix a couple more Quarry bugs. There’s still a random bug where
celeryseems to be attempting to read data about a query run from mysql before the web has committed it, which is theoretically impossible (I do a commit before sending the task to celery with the id), so I suspect some mysql fuckery. Will need to debug that sooner than later, and also consider moving to
postgres. But then Quarry will have to deal with SQLite (for result storage), MySQL (for connecting to labsdb) and with postgres for local data, which sounds insanely complex. I also added CORS support to resultsets, and Magnus is playing with it (wooohhooooo!!!). I’m going to add more features to make it easier for people to use results from quarry in their JS applications elsewhere. Should be fun.
- Finished videos for the first week of the Coursera Data Analysis and Statistical Inference class I’m taking. Started poking around R since the labs for that class are from R, should be fun.
- Chad has started his devlog. He does search stuff at Wikimedia and is a co-whiner about all things Java. Do check out :)
Am away on ‘vacation’ till Wednesday, yay! :) Should disconnect well.