Recovering overachieving child, now trying to achieve the correct amount| Yuvi
What is this? During the JupyterHub leadership meeting (North America) of June 2025, the breakout group comprising of Yuvi, Martha Cryan and Ryan Lovett came up with the following diagram to explain the aspirational mission of JupyterHub: This document is Yuvi’s interpretation of one of the technosocial changes required to achieve this aspiration. It’s also heavily influenced by prior conversations with MinRK, Carol Willing, Ryan Lovett, Carl Boettiger, Rick Wagner, Sanjay Bhangar and Tar...| Yuvi
As many of you know, I have been doing a lot of intense therapeutic work over the last few years, with the primary goal of being more consistently emotionally regulated under a variety of circumstances. I have observed a few hard fought but helpful changes in my behavior, and wanted to explicitly write about them. The primary audience is people who may have known me for a long time in specific capacities - the hope is that this helps provide context if they notice me behaving differently. The...| Yuvi
Recently, I started becoming aware that I hold opinions and desire choices outside what is considered “mainstream” in many circumstances. Some examples are: Motorcycle safety Circumstances under which I will be wearing an N95 mask (far more often) Social Media use (A few more that you already know about if you know me well enough) When I was younger, this used to bother me. Observing my behavior, I seem to have responded in one of three ways:| Yuvi
Jeff Nippard (the science communicator you watch if you want to spend your evening reading scientific papers and going to the gym) wrote a beautiful post recently about handling harassment and bullying at Gyms. One part that really stuck out to me was: Also, every gym has at least one “big [person]”. Almost every big [person] I know is a good person. I’m sure big [person] already all know this, but people find you intimidating. Even a simple smile toward new members can do a LOT.| Yuvi
If I want to share a YouTube video with someone while on my phone, here is what I need to do: Click the ‘Share’ button on the YouTube app Click ‘copy link’ Paste it into a textbox where I can edit the URL (so if I am using iMessages on the iphone, I have to use a text editor app in the middle) Delete the ?si=ajflsdkjf at the end of the URL added by Google so it can establish a relationship between me and whoever I am sharing it to (THIS IS CREEPY AS FUCK) Share it with the other perso...| Yuvi
Julia pre-compiles packages on first load, allowing them to deeply optimize the generated code for the particular CPU architecture the user is running on for maximum performance. However, it does take some time, so there’s a startup latency penalty here. If you make docker images with precompiled Julia packages, you can pay this pre-compilation penalty at image build time, rather than at image startup time. Much better for your users!| Yuvi
Why write this? This August / September, I had a lot of life changes in one go: Moving from an apartment i disliked to one I absolutely love, and maybe even feel at home in, for the first time in my life Officially switch jobs, becoming an employee of a non-profit I had co-founded Catch COVID for the first time and recover from it, with appropriate MH breakdowns from the isolation Get on Guanfacine as a non-stimulant medication for ADHD While I can not fully separate the effects of these chan...| Yuvi
Trying to start these back up, as a list of the kind of ‘work’ I have done the last few weeks. Let’s see if this works! Last 2 weeks Spent a good chunk of time investigating and fixing issues with AzureAD auth for the UToronto hub. “Fixing” it meant moving off AzureAD, so we only have CILogon & GitHub in the 2i2c infrastructure as authentication providers! This is now explicitly mentioned in our docs.| Yuvi
I’ve had a bit of a slump the last few months, working through what feels like deep mental fog for totally unclear reasons. The lack of clarity on causation is one of the most frustrating parts of this, and one of the most familiar too - this isn’t the first time I’ve felt like this, and I know (rationally at least, if not emotionally) it won’t be the last. Probably a combination of intensely avoiding making some decision that seems too big to be made by me without actually knowing wh...| Yuvi
I walked into a local hardware store, with the following thought in my mind: I need a 5mm metric hex key And I wandered around aimlessly as I do in stores, almost bought some double sided tape for a different project (decided against it), and eventually made it to the place with all the sockets, hex keys, screwdrivers, etc. Words that previously meant nothing to me (Torx, SAE, metric) made sense.| Yuvi
If you are running a JupyterHub on Kubernetes and use NFS for home directory storage (a common occurance), I highly recommend the following settings: singleuser: extraEnv: # notebook server writes secure files that don't need to survive a # restart here. Writing 'secure' files on some file systems (like # Azure Files with SMB or NFS) seems buggy, so we just put runtime dir on # /tmp. This is ok in our case, since no two users are on the same # container.| Yuvi
Alex Merose asked me on Mastodon how to best set up a conda environment on GitHub Actions. I thought I’d write a short blog post about it! The short version is, use the conda-incubator/setup-miniconda GitHub action instead of the official setup-python action. Specifically, try out these options for size: steps: - uses: conda-incubator/setup-miniconda@v2 with: # Specify python version your environment will have. Remember to quote this, or # YAML will think you want python 3.| Yuvi
I am not smart enough to consistently write and debug shell scripts that use any conditional or looping constructs. So as soon as I’m writing something in bash that requires use of those, I switch to python. This works fine when writing scripts, but what to do when writing GitHub Actions workflows? You can only write bash in run: stanzas in your steps, right? Not at all! You can set the shell parameter to anything you want, and the contents of run will be passed to the shell in the form of ...| Yuvi
I decided to write publicly and publish my motorcycle riding trip notes now. Montarey Trip notes Need to learn to plan when to pee. This is important to do! Can’t just get off any exit, as that often doesn’t actually lead to wilderness but to more concrete jungles. Need to learn more about lane splitting and how and when to do it safely. I did it for a little bit while stuck on CA-1S, but was avoiding it for most of the ride.| Yuvi
I wanted a single keyboard shortcut that would let me switch between the built-in terminal and the editor in vscode. I couldn’t find any, so I made a short macro using the VSCode Macros Extension First, you define your macros in settings.json. You can open up vscode settings with Cmd+,, search for macros, and edit this under Macros: List. "macros.list": { "showTerminal": [ "workbench.action.terminal.toggleTerminal", "workbench.action.terminal.focus", "workbench.action.toggleMaximizedPanel" ...| Yuvi
Sometimes you want to temporarily disable a JupyterLab extension on a JupyterHub by default, without having to rebuild your docker image. This can be very easily done with z2jh’s singleuser.extraFiles, and JupyterLab’s page_config.json JupyterLab’s page_config.json lets you set page configuration by dropping JSON files under a labconfig directory inside any of the directories listed when you run jupyter --paths. We just use singleuser.extraFiles to provide this file! singleuser: extraFi...| Yuvi
This post is inspired by a slack conversation with Ryan Abernathey and Sarah Gibson. It is very important to me that we don’t exist in a world where the Internet is just centralized and controlled by a few huge, hypercapitalist players. I’ve written about ways the open source community can help here (by not tying ourselves to a single provider), and helped draft the right to replicate policy to put it into effect at 2i2c.| Yuvi
Sharing notebooks is harder than it should be. You are working on a notebook (in Jupyter, RStudio, Visual Studio Code, whatever), and want to share it quickly with someone. Maybe you want some feedback, or you’re demonstrating a technique, or there is a cool result you want to quickly show someone. A million reasons to want to quickly share a notebook, but unfortunately there isn’t a quick enough and easy enough solution right now.| Yuvi
(Leave comments or discuss this post on the jupyter discourse) nbgitpuller is my most favorite way to distribute content (notebooks, data files, etc) to students on a JupyterHub. The student mental model is ‘I click a link, and can start working on my notebook’, which is as close to ideal as we have today. That is possible since all the information required for this workflow is embedded in the link itself - so it can be distributed easily via your pre-existing communication channel (like ...| Yuvi
I’m paying money to learn datascience with R via this John Hopkins course on Coursera. Hopefully I can spend about 4h a week on it. Why? I try to have a ‘T’ shaped set of competencies - some competence in a lot of areas, and deeper knowledge in some. Having some competence in many areas lets you notice where a particular skill can be very helpful in solving a problem, and either apply it yourself or bring in someone who can.| Yuvi
JupyterHub was designed to provide multi-user access to Classic Jupyter notebook and JupyterLab, running on machines far away with access to data & compute your local machines don’t have. However, there are a lot of users this leaves out - R users on RStudio, folks who prefer ssh based interfaces, people on local IDEs like vscode or pycharm, etc. We trust that these users know better than ‘us’ developers & admins what user interface works best for them, and make sure that our JupyterHub...| Yuvi
The Littlest JupyterHub is an extremely capable hub distribution that I’d recommend for situations where you expect, on average, under 100 active users. Why not Kubernetes? The primary reason to use Zero to JupyterHub on k8s over TLJH in cases with smaller number of users would be to reduce costs - Kubernetes can spin down nodes when not in use. However, you’ll always have at least one node running - for the hub / proxy pods.| Yuvi
You can run your Jupyter Notebook locally, and connect easily to a remote dask-kubernetes cluster on a cloud-based Kubernetes Cluster with the help of kubefwd. This notebook will show you an example of how to do so. While this example is a Jupyter Notebook, the code will work any local python medium - REPL, IDE (vscode), or just plain ol’ .py files Latest executable version of this notebook can be found in this repository| Yuvi
I needed to find out if an organization was using GSuite for their emails, so I can allow their users to login to a JupyterHub I was setting up. I use Google Auth in other places, so I wanted to find out if this organization was using GSuite. I could’ve just asked them, but where’s the fun in that? Instead, you can use dig to find out! For example, if I were to test berkeley.| Yuvi
Entitled users burn out maintainers. While my massive burning out wasn’t directly related, it didn’t help either. For a lot of other maintainers, it has been a primary source of burnout. This is an unfortunate reality of our time. There are a ton of stories from maintainers out there -see this for a recent example. Not going to rehash that. However, I’ve recently found myself on the ‘other side’ of this coin.| Yuvi
Talking to Ankur Sethi made me think more clearly about why I want note-taking, bookmarking setups. I am trying to stop feeling so overwhelmed by moving things out of my puny brain. The solution to this is two fold. Commit to and do fewer things. Already working on this. Be more efficient in the things you are doing. A few years ago I gave up on chasing efficiency gains because they were all so marginal (hello, maintaining a super customized .| Yuvi
In conversation with Nirbheek about my blog post on note taking, he said something like ‘my system of knowledge has holes, and I lose track of stuff I learnt because of that’. This was slightly complementary to my earlier quest - the outliner helped me in structuring how I thought and produced content. However, a bookmarking system will help me consume and retain knowledge. Both need to be integrated, but I currently had only one half of the puzzle.| Yuvi
This is a page with links to people’s blogs I like.| Yuvi
I am trying to find a nice way to keep thoughts, ideas and notes outside my head for a few months now. I worked my way through many applications, trying to use the system they promote as the basis for my own. Along the journey, I got a better sense of what was important to me in such an application. I’ll walk through the various applications I’ve tried, along with the criteria I’ve developed by the end| Yuvi
This person misses blogs a lot. So do I. I made many frients, built myself a platform, and expressed myself in ways I do not feel like I can anymore on my various blogs. Some of them are lost to time, but some are there if you know how to find it. Part of it was where my life was - I had time, nobody physically nearby I jived with, and a lot of angst.| Yuvi
Physical activity I walked for about 6 miles yesterday evening, after doing 3-4 miles each day for about 2-3 days before. The roads were empty, and it was lovely. I’ve listened to maybe 6-10 hours of Deborah Frances-White in the last week or so, split between The Guilty Feminist and Global Pillage. Next time though, I’m going to try listen to podcasts less & observe my surroundings more. I am doing this (plus PT) to rehab my knee mostly.| Yuvi
Gracefully exiting asyncio application Continuing yesterday’s work on my simple supervisor library, I continued trying to propagate signals cleanly to child processes before exiting. I remembered that it isn’t enough to just propagate signals - you also have to actually reap them. This meant waiting for wait calls on them to return. I had a task running concurrently that is waiting on these processes. So ‘all’ I had to do was make sure the application does not exit until these tasks a...| Yuvi
I have enjoyed keeping running logs of my coding work (devlogs) in the past, and am going to start doing those again now. This ‘holiday’ season, I am spending time teaching myself skills I sortof know about but do not have a deep understanding of. JupyterLab extension I spent the first part of the day (before I started devlogging) working on finishing up a jupyterlab extension I started the day before.| Yuvi
This post is from conversations with Matt Rocklin and others at the PANGEO developer meeting at NCAR Today, almost all of ’the cloud’ is run by ruthlessly competitive hypercapitalist large scale organizations. This is great & terrible. When writing open source applications that primarily run on the cloud, I try to make sure my users (primarily people deploying my software for their users) have the following freedoms: They can run the software on any cloud provider they choose to They can ...| Yuvi
I’m writing up monthly ‘work plans’ to plan what work I’m trying to do every month, and do a retrospective after to see how much I got done. I work across a variety of open source projects with ambiguous responsibilities, so work planning isn’t very set. This has proven to be somewhat quite stressful for everyone involved. Let’s see if this helps! JupyterCon JupyterCon is in NYC towards the end of August, and it is going to set the pace for a bunch of stuff.| Yuvi
Inspired by conversations with Nick Bollweg and Matt Rocklin, I experimented with using conda constructor as the installer for The Littlest JupyterHub. Theoretically, it fit the bill perfectly - I wanted a way to ship arbitrary packages in multiple languages (python & node) in an easy to install self-contained way, didn’t want to make debian packages & wanted to use a tool that people in the Jupyter ecosystem were familiar with.| Yuvi
This idea comes from brainstorming along with Lindsey Heagy, Carol Willing, Tim Head & Nick Bollweg at the Jupyter Team Meeting 2018. Most of the good ideas are theirs! The name is inspired by one of favorite TV series of one of my favorite people. I really love the idea of JupyterHub distributions - opinionated combination of components that target a specific use case. The Zero to JupyterHub distribution is awesome & works for most people.| Yuvi
Recently I had to write some code that had to call the kubernetes API directly, without any language wrappers. While there is pretty good reference docs, I didn’t want to go and construct all the JSON manually in my programming language. I discovered that kubectl’s -v parameter is very useful for this! With this, I can do the following: Perform the actions I need to perform with just kubectl commands Pass -v=8 to kubectl when doing this, and this will print all the HTTP traffic (requests ...| Yuvi
I haven’t done a ‘year in retrospective’ publicly for a long time, but after reading Alice Goldfuss’ 2017 year in review decided to do one for me too! This is a very filtered view - there are lots of important people & events in 2017 that are not contained here, and that is ok. Professional New Job I finished around 6-ish years at the Wikimedia Foundation, and joined UC Berkeley’s Data Science Division early in the year.| Yuvi
The wonderful Graham Dumpleton asked on twitter why we built an entirely new tool (repo2docker) instead of using OpenShift’s cool source2image tool. This is a very good question, and not a decision we made lightly. This post lays out some history, and explains the reasons we decided to stop using s2i. s2i is still a great tool for most production use cases, and you should use it if you’re building anything like a PaaS!| Yuvi
I was at maintainerati today, which was super fun & quite intense! I highly appreciate GitHub & the individuals involved in making it happen! Here’s my key takeaways from this (and several other conversations over the last few weeks leading up to this): I am now a maintainer, which is quite a different thing from a core contributor or just a contributor. The power dynamics are very different, and so are the responsibilities.| Yuvi
I’ve been reading Designing Data Intensive Applications book & am using this post to keep notes! I’ve picked up ideas on scaling systems through the years, but never actually sat down to actually study them semi-formally. This seems like a great start to it! It’s a pretty big book, and it’s gonna take me a while to go through it :) Will update these notes as I go! Trying to do a chapter a week!| Yuvi
Following a trail from a wonderful Julia Evans post led me to Allen Downey’s nice textbook manifesto. Also led me to the nice Think OS book, which seems like a super nice introduction to Operating System principles. It is short enough (~100 pages) that I wanted to read through it. I’ve spent a good chunk of time absorbing how Operating Systems work by dint of diving into things and working through them, but it would be nice to get a refresher on the basics.| Yuvi
I am trying to understand SELinux and AppArmor, and collecting resources here as I learn. k SELinux for mere mortals (2014) This was the first video I watched, and it helped me understanding what SELinux does at a fundamental basic level. It’s probably useless in a container-filled world (where I doubt Fedora shipes pre-configured SELinux rules for my containers), but it helped me think I understood types / labels, so that seems like a positive step?| Yuvi
This is a running list of things I want to build! There’s an analogous running list of things I want to learn. Things move between them :) I also have higher standards of documentation (other people should be able to use it) before marking these as complete. kubernetes-login A helper to openssh that allows users to log in to a configurable user pod running on a kubernetes cluster. Should ideally support scp / sftp too.| Yuvi
I was in a conversation about the Python GIL with friends a few days ago, and realized that my understanding of the specifics of the GIL problem were super hand-wavy & unstructured. So I spent some time collecting resources to learn more, and now have a better understanding! Python’s Infamous GIL (Larry Hastings) This was a great introduction to the history of the GIL, why it was necessary & reasons why getting rid of it is complicated.| Yuvi
I earlier had a vaguely working setup for making sure browsers, shells and other applications don’t eat all RAM / CPU on my machine with systemd + sudo + shell scripts. It was a hacky solution, and also had complications when used to launch shells. It wasn’t passing in all the environment varialbes it should, causing interesting-to-debug issues. sudo rules were complex, and hard to do securely. I had also been looking for an excuse to learn more Golang, so I ended up writing systemd-simpl...| Yuvi
Update: There’s a follow-up post with a simpler solution now. Ever since I read Jessie Frazelle’s amazing setup (1, 2, 3) for running GUI applications in docker containers, I’ve wanted to do something similar. However, I want to install things on my computer - not in docker images. So what I wanted was just isolation (no more Chrome / Firefox freezing my laptop), not images. I’m also not as awesome (or knowledgeable!| Yuvi
Keeping a running list of things I want to learn! There’s also a list of things I want to build. How to use org mode properly? Should I use it for notes over markdown? Develop a deep understanding of how networks work. How do linux network namespaces work? How to run GUI apps with systemd? I did learn! Both a hacky version and a much better version that also taught me some Go!| Yuvi
I’m attempting to now blog at http://words.yuvi.in, using hugo rather than wordpress. Over the last few years, IRC, Twitter & WhatsApp have ruined my public writing. I shall now slowly attempt to bring that back :)| Yuvi
I ran into this thought provoking though when randomly attempting to relax this weekend. There’s a summary at LWN if you do not want to watch the talk - but as the lwn summarizer admits, the video definitely conveys things that are hard to capture on text. The core takeaway for me is to think about: what is the future of free and open-source software? The answer was: it has no future.| Yuvi
I went to the protests at SFO last weekend. It was the first real set of protests I’ve been to. I write this to attempt to capture a sliver of what I felt that day. I was there for about 10h on day 1, and came home exhausted. I went back on Day 2, and this time stayed for much shorter period of time (~4h?) before heading back home. To everyone who was at the protest even if it does not directly affect you yet - thank you!| Yuvi
I’ve unfollowed everyone I follow on Twitter, and am slowly starting back up from scratch. I’m only going to follow people who are: Underrepresented people in Tech (as broadly construed) Journalists And that’s it. I’ll follow back friends I’m not otherwise in contact with as well, but might take a while. I’ve had this for a few days and am already enjoying using it far more than I did before. A lot of the people I’m following now I did not know before, and the vibe is totally di...| Yuvi
I’ve started taking a Coursera class on Conflicts from UCI. Just dumping notes from me going through the video lectures here. I’ve a bunch more videos to go through for Week 1, but dumping what I have for now. Types of Conflict: Constructive Destructive Caused by lack of flexibility, getting interpersonal things get in the way and the sureness that ones way is the right way Leads to stiffling of anything new, resulting in ‘this is the way things have always been’ being used as an actu...| Yuvi
Note: I’m trying to spend time explicitly writing random side projects that are not related to what I’m actively working on as my main project in some form. A random thread started by Ironholds on a random mailing list I was wearily catching up on contained a joke from bearloga about malformed User Agents. This prompted me to write UAuliver (source), a Firefox extension that randomizes your user agent to be a random string of emoji.| Yuvi
I’ve recently started reading more academic papers, and thought it’d be useful to write notes about them and publish them as I go along! This one is for The impact of syntax colouring on program comprehension I was amazed at the amount of prior research it is citing. Why have I not been reading these for the last 10 years of my life? Apparently it is ok to report findings with a sample size of 10 people.| Yuvi
http://www.lua.org/spe.html is a pretty nice read!| Yuvi
localhost is always 127.0.0.1, right? Nope, can also be ::1 if your system only has IPV6 (apparently). Asking a DNS server for an A record for localhost should give you back 127.0.0.1 right? Nope – it varies wildly! 8.8.8.8 gives me an NXDOMAIN which means it tells you straight up THIS DOMAIN DOES NOT EXIST! Which is true, since localhost isn’t a domain. But if you ask the same thing of any dnsmasq server, it’ll tell you localhost is 127.| Yuvi
Clearly I missed an entire week. I need to build a better system to make this easier… Random notes. Kicked out NFS from the Tool Labs proxies (with 1). Yay! This hopefully explains the lockup of tools-proxy-01 yesterday night, maybe? It’s been restarted since, and I hope to no longer have instances randomly locoking on me. Infrastructure standards of 2009, here we come! :D I’ve also removed NFS from tools-redis, and migrated them to Jessie as well.| Yuvi
Probably going to take it easy and chill. Already sent a trivial PR up though. Also saw the old devlog mailing list and feeling happy memories. Clearly need to bring something back like that, but I don’t know / think mailing lists are the best medium. More thinking! Ended up learning some Tornad and wrote nbserve to serve rendered notebooks and static files in a configurable way. I should refactor PAWS to have separate jupyterhub, proxy and nbserve pods tomorrow.| Yuvi
Today looks like a day of finding, reporting and fixing bugs in WikiChatter. I had made a stupid mistake yesterday that meant not all of the Teahouse pages were being parsed, and I immediately started running into bugs. Have reported (and fixed!) two (1 and 2), and ran into another bug in mediawikiparserfromhell itself. I’m sure I’ll find more. Another bug in WikiChatter! 3 Perils of digging through archives – you find Wikipedians giving relationship advice.| Yuvi
Haven’t done these in a while, let’s see if I can get this back on the wagon! Discovered the WikiChatter library (thanks to @halfak!), and using that in my Teahouse analysis notebook. Far better than writing my own parser and fighting with that. Lets me get on with the actual fun stuff I wanted to do (which is the actual analysis) Learning about pandas, checking out matplotlib, bokeh and wordcloud libraries to use in the analysis.| Yuvi
I’m writing this post in an attempt to catalog the list of things I own so I can evaluate if I really need them and get rid of them. 15″ rMBP Kinesis Keyboard Apple Trackpad Moto X Kindle Nexus 7 (To be returned to the WMF) Broken Nexus 4 (To be backed up and then… something) iPod Touch Earphones (Soundmagic E10) Headphones (AudioTechnica ATH M50) Battery Pack #1 Battery Pack #2 MiFi (US Only) Multi USB Charger + 6 USB Cables Bluetooth Speaker (JBL Flip 2) Assorted Medication (in severa...| Yuvi
“Green Stuff” TIL that Gregory Kohs was actually allowed to post on wikimedia-l at some point in the past.| Yuvi
is now slowly happening, and I am the test subject!| Yuvi
(Funniest, at least!). Well worth the 27min watch.| Yuvi
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.| Yuvi
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.| Yuvi
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. Merged labsdb-auditor rewrite 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.| Yuvi
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.| Yuvi
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...| Yuvi
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 mvn build commands (https://gerrit.| Yuvi
The message icon was flashing obnoxiously. I wonder how much money CNet made off that. I don’t notice these on desktop thanks to Adblock. Should set it up on my phone too.| Yuvi
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.| Yuvi
Chill weekend. Didn’t really do anything code related. Recovering from friday night party :) Started reading Data + Design which seems quite nice. Also starting a coursera course on Data analysis and Statistical Inference on Sep 1, should be fun.| Yuvi
Let’s see. I’m also going to attempt to include patch links wherever possible. Cleaned up session handling bugs in Quarry. They were previously not closing properly, causing SQLAlchemy exceptions now and then that’ll let queries die in a ‘queued’ state. This should hopefully be fixed by https://gerrit.wikimedia.org/r/#/c/156909/. Made https://graphite.wmflabs.org somewhat more stable again for use by Wikimedia BetaLabs folks by just blacklisting all other projects from sending data ...| Yuvi
Not very code heavy Couple of pull requests(#1 and #2) for the Atom Autosave plugin. One adds a preference to not autosave by when you are explicitly closing a window / pane, and the other just sets the ‘enabled’ preference to default. CoffeeScript isn’t too bad either! I should consider writing more plugins (I currently use Atom for CSS/JS/Puppet, should try other languages) Added CSV, TSV and JSON download options to Quarry.| Yuvi
Wooooo! Moved labsbooks (described in yesterday’s devlog) to use a shared readonly IPython virtualenv maintained by me. Also installed a bunch of modules people might want to use (SciPy, NumPy, Pandas, PyTables, matplotlib). Am considering just installing IPython notebook globally via puppet and using that, since that’ll enable users to just use the system packages. However, the version of IPython notebook from Ubuntu is ancient, so that’s probably a non-starter. Have a basic version of...| Yuvi
Back in Glasgow! It was actually not very cold today, only cold! Progress. Started working on my long-abandoned labsbook project, which aims to make Tool Labs a first class environment for people who want to run (and publish) iPython Notebooks while also being able to access the replica databases and the dumps. Doing this in a secure manner is kinda hard, but I think I’ve a neat solution that lets everyone run a personal iPython kernel on the Grid, access it from their local machine, and al...| Yuvi
Was in Edinburgh again, missed writing it as I went along. Oh well. Ported the code for the Wikipedia Android app automated builds to Python, and you can see it in action at http://tools.wmflabs.org/wikipedia-android-builds/ now. It lets you download the latest build, and notes the last successful build time. Good enough :) It was originally in bash, and porting it to python allowed me to create a ‘fake’ API (just JSON blobs written to known locations in the file system).| Yuvi
In Edinburgh! I’ve finally stopped spelling it as Edinborough! Added ‘user group’ functionality to Quarry, and added a sudo user group that does what you would think it does. Will be assigned super, super sparingly. Found out that I’d have to explicitly specify charset of the database when I’m creating it or MySQL will default to a stupid charset. Forced all tables and columns to utf8 and that seems to have fixed a bunch of unicode issues.| Yuvi
Woke up at 11AM again! w000t! Fixed a stupid bug in Quarry that made it fail if MySQL decided that a column you were selecting is a Decimal. Fixed this in time for… Helped out with a webinar from J-Mo for people to learn SQL and do research against Wikimedia stuff with Quarry! Went without a glitch mostly, so yay :) Oren asked for an API for Quarry, I’ll investigate ways to get that done Found that some queries against enwiki succeed on s1.| Yuvi
Here we go again. Wrote a small blog post talking about how to package python packages as debian packages. More work on getting Graphite setup for Wikimedia Labs. Everything is up and running now (after a number of embarrassing typos). Need to figure out NAT rules to let labs machines talk to labmon1001, and then it can start receiving data!!!1 Got access to Wikimedia’s Hadoop cluster, and ran my first HIVE query ever!| Yuvi
(As requested by Jean-Fred) One of the ‘pain points’ with working on deploying python stuff at Wikimedia is that pip and virtualenvs are banned on production, for some (what I now understand as) good reasons (the solid Signing / Security issues with PYPI, and the slightly less solid but nonetheless valid ‘If we use pip for python and gem for ruby and npm for node, EXPLOSION OF PACKAGE MANAGERS and makes things harder to manage’).| Yuvi
I’ve started paying for IRCCloud. It is the first ‘service’ I am paying for as a subscriber, I think. I’ve considered doing that for a long time, but ‘paying for IRC’ just felt… odd. I’ve been using ZNC + LimeChat. It’s decent, but sucks on Mobile. Keeping a socket open all the time on a phone just kills the battery, plus the UX on most Android clients sucks. So after seeing Sam Smith use IRCCloud during Wikimania, I made the plunge and paid for IRCCloud.| Yuvi
I’ve started the habit of opening up a devlog post each morning and just filling it up as I go along. Let’s hope I can keep this up :) Merged a couple of Android patches. The app is getting better every day without too much involvement from me, and yay for that :) I’ve gotten closure over the Android app – it was fucking terrible, and now it is quite awesome.| Yuvi
Devlogs again! Let’s see how long I can keep this one up. Been a whirlwind few months. I’m moving to the Wikimedia Ops team soon! The Wikipedia app has been released! Lots of excitement around, should do a bigger post sometime with details. This should just follow usual devlog format of stuff for the day Completed deployment of changing the results backend of Quarry to SQLite. That was a fun exercise, and I should write about that separately.| Yuvi
This is a best effort translation of the song ‘Clubbule Mabbule‘ (Drunk in a Club) from Tamil to English. (Come on, I smoke, I drink, I'm in a live in relationship) Fuck, get lost. This is modern culture, eh? If you call this westernization modern culture, then this song is dedicated right for you. Hip hop tamizha, your Aaadheeee. Women roaming around drunk in clubs What the fuck is happening in Tamil Nadu I salute you all All your honor is flying away| Yuvi
In Welcome to the Machine there is a line that goes “provided with toys and scouting for boys”. I had initially assumed that it was referring to a young guy who is gay and is ‘scouting for boys’. And then a few days later I realized that it is talking about ‘the book‘. That is now doubly funny because of the Boy Scouts’ attitude towards gays| Yuvi
Another nice, one off Discworld book. Nice bits about how Gods are created by us, and need us more than the other way around. The philosophers are incredibly funny wherever they turn up too. The Desert after you Die bit was… beautiful – Judgement happens, but by yourself. Fun digs at governments and organized religion throughout made it rather enjoyable :) 4/5| Yuvi
Finished that yesterday. Fun digs at war, and fun digs at people (literally) stuck in a paste despite being in the present. The bit with the Greek philosophers was also nice. No memorable recurring characters, however. 3/5| Yuvi
Pro Git is a nice book I recommend to newbies – yet I hadn’t fully read it once. I decided to do so, and I think it was reasonably useful. Most of the stuff in here I already knew, and the treatment of the stuff I did not (Git Internals, mostly) wasn’t deep enough to be useful. Nevertheless, reinforced some useful concepts in my head and probably gave me enough strong foundations for when I decide to dive into the actual internals of git more (probably by reading the source code?| Yuvi
I’ve been reading a lot over the last few months (Discworld + Foundation gives me about 24 books in the last 3 months), and figured I’d extend that for the next year with a little more underlying planning. So along with Bala, Arun & Surya, I’ll try to read a hundred books this year, and also do a blog post each about them. Hogfather is the 21st book in the Discworld series I’ve read.| Yuvi
Contains a list of Discworld Novels. Am reading them all, and will cross them out here as I finish each. Number of books currently finished: 24 (as of 16 Jan 2014) The Colour of Magic (1983) (Rincewind) The Light Fantastic (1986) (Rincewind) Equal Rites (1987) (Witches) Mort (1987) (Death) Sourcery (1988) (Rincewind) Wyrd Sisters (1988) (Witches) Pyramids (1989) (One-off) Guards! Guards! (1989) (City Watch) Eric (1990) (Rincewind) Moving Pictures (1990) (One-off) Reaper Man (1991) (Death) Wit...| Yuvi
You had to admire the way perfectly innocent words were mugged, ravished, stripped of all true meaning and decency and then sent to walk the gutter for Reacher Gilt, although ‘synergistically’ had probably been a whore from the start Going Postal, Terry Prachett| Yuvi
From twitter| Yuvi
“Write once, attempt to debug everywhere” is probably way more accurate than “Write once, run anywhere” – at least for GUI apps. There’s something rather special about ideas that are theoretically amazingly wonderful yet end up being a major pain in the butt when you try to put them in practice, isn’t it? The older Wikipedia App happened to be in PhoneGap, and I consider it one of my biggest blunders to not have torn it down on day 0 and rewritten it in something saner.| Yuvi
Prettier, faster and more feature packed! Native Wikipedia app for Android coming real soon!| Yuvi
Somehow: ( $a && $b ) || ( $b && $c ) || ( $a && $c ) Became: $a ? ( $b || $c ) : ( $b && $c ) Became: count( array_filter( array( $a, $b, $c ) ) ) >= 2 Became: "$a$b$c" > 1 God dammit PHP… (from discussion among me, ^d, ori-l, bd808 and anomie on #mediawiki-core about how to represent ‘if at least 2 of three conditions are true’)| Yuvi