Google+

Child prodigy

I watched a YouTube video this morning about a 13 year old boy taught himself to make iPhone apps and got famous for it. He took an internship at Facebook and then started working there full-time. There were TV stations and news websites that interviewed him and wrote about how he’s helping his family financially and how any teenager can start making tons of money if they just learn to code. And the story was nice and inspiring and stuff, except there are tons of kids that do the same thing and nobody writes articles about any of them. He’s probably 18 or 19 now1 and still working at Facebook as a product manager. How’s he feeling now? On the other hand, I’m a college senior, dreading the day when I have to start working like a grown-up and wondering if I’ll miss college and confused why people can’t just stay in college forever. He never went to college. He had probably gotten accepted at lots of different schools (did he even get a chance to apply?), but he decided college wasn’t worth the opportunity to work at Facebook and pull his family out of their crappy financial situation. Cheers to him.

I felt exactly the same way in high school. But I didn’t have a compelling reason to start working or the balls to deviate from the Good Kid Story™. I started making websites when I was 10, and by the time I finished high school, I could churn out CRUD web applications like any other rank-and-file software developer. Part of me honestly thought that I could skip a few semesters of class once I got to Berkeley, because I already knew about for-loops and I could write Hello World in a handful of languages. I thought college was going to be the place where people learn about the less-useful theoretical parts of programming. They’d teach me what a tree was, even though I never had any reason to use anything but PHP’s ubiquitous ordered hash map. I thought it wouldn’t be anything that I wouldn’t have learned anyways, if I just kept writing more and more code. And I was partially right, but also very wrong.

Getting a proper CS education is really important, and I wouldn’t recommend that anybody drop out or skip college, just so they can start working, especially if there isn’t a strong financial reason to do so. However, there’s two hard truths that people don’t like admitting about CS education: 1) most of the stuff taught to undergrads is also available on the Internet, and 2) most people who get a CS degree are still cruddy programmers. So, school isn’t irreplaceable and it’s not like attending school will magically transform you into a mature grown-up programmer. But that’s really not why getting a formal CS education is important.

After 7 semesters, it’s still hard to say exactly why people place a lot of value on getting a formal education in computer science. Most people need to be taught programming, because they have no experience and are in no shape to do anything productive with a computer. But for all the programming prodigies of the world, there needs to be another reason. I can say that I’m a much better programmer than I was four years ago. It always seems like the code I wrote the previous year is a pile of garbage2.

School forced me to learn things that I never would have learned on my own (because they were irrelevant to my own projects) nor would I have learned while working full-time (because they’d be irrelevant to the work I’d be doing). In high school, I had no idea people could write programs that did more than loading and saving data to a database. The classes I took actually expanded the range of what programs I thought were possible to write3.

When I taught myself things as a kid, I would enter a tight loop of learn-do-learn-do. Most of the code I wrote were attempts to get the Thing working as easily as possible, which ended up leading to a lot of frustration and wasted time. It’s hard to piece together a system before you understand the fundamental concepts. And that sounds really obvious, but a lot of programming tutorials seem to take that approach. They’ll tell you how to do the Thing, but they don’t bother giving you any intuition about the method itself. On the other hand, college classes have the freedom to explain the Thing in the abstract. Then once you start doing it yourself, you’ll know exactly what to look for4.

It’s really unfair to make a teenager make their own decisions about work and college, because you really shouldn’t be punished for making stupid life choices as a kid. Teaching myself programming as a kid was useful, but frankly I was a terrible teacher. But I’ve gotten better at that as well. This is my 5th semester as a teaching assistant, and I’ve picked up all kinds of awesome skills, from public speaking to technical writing, not to mention actual pedagogy as well. I’ve spent literally a thousand hours working on my tooling, because college convinced me that it really does matter5.

They say that it takes 10 years to really master a skill. Well, this is going to be my 12th year as a computer programmer, and I still don’t feel like I’ve mastered anything. I guess everybody learns in a different way, but it really sucks that society has convinced teenagers that college is optional/outdated. It’s easy to lure teenagers away from education with money and praise, especially because it’s really hard to see the point of a formal education when your entire programming career is creating applications that are essentially pretty interfaces to a database6. It doesn’t help that college-educated programmers are sometimes embarrassed to admit that school doesn’t work for everyone.

I wonder if that iPhone kid is disappointed with the reality of working full-time in software development. The free food and absurd office perks lose their novelty quickly.

  1. I have no idea actually.
  2. Some people say that’s a good thing? I’ve realized that code is the enemy. The more code you write, the more bugs you’ve introduced. It’s incredibly hard to write code that you won’t just want to throw out next year. Code is the source of complexity and security problems, so the goal of software engineers is to produce less code, not more. When you have a codebase with a lot of parts, it’s easy to break things if you’re not careful. Bad code is unintuitive. Good code should be resistant to bugs, even when bad programmers need to modify it.
  3.  Little kids always tell you that programmers need to be good at math, which actually doesn’t make that much sense when I think about it. You need some linear algebra and calculus for computer graphics and machine learning. Maybe you’ll need to know modular arithmetic and number systems. But math really isn’t very important.
  4. A huge number of software bugs are caused by the programmer misunderstanding the fundamentals of the thing they’re interacting with.
  5. My favorite programming tools in high school were Adobe Dreamweaver and Notepad. I started using Ubuntu full-time in 11th grade, but didn’t make any actual efforts to improve my tools until college.
  6. Not to underestimate the usefulness of simple CRUD apps.

Email surveillance

There’s a new article in the SF Chronicle that says the University of California, Office of the President (UCOP) has been monitoring emails going in and out of the UC system by using computer hardware. I wanted to give my personal opinion, as a computer programmer and somebody who has experience managing mail exchangers1. The quotes in the SF Cron article are very generous with technical details about the email surveillance system. Most of the time, articles about mass surveillance are dumbed down, but this one gives us at least a little something to chew on.

Email was not originally designed to be a secure protocol. Over the three (four?) decades that email systems have been used, computer people have created several extensions to the original SMTP2 and 822 envelope protocol to provide enough modern security to make email “good enough” for modern use. Most email today is exchanged under the protection of STARTTLS, which is an extension for SMTP that upgrades a cleartext connection to an encrypted connection, if both parties support it. The goal of STARTTLS is to provide resistance against passive monitoring. It doesn’t provide any guarantees about the authenticity of the other party, because usually the certificates aren’t validated, so STARTTLS is still vulnerable against MITM attacks3. There are other email-security extensions. But they’re either designed for ensuring authenticity rather than privacy (like SPF, DKIM, and DMARC) or they’re not widely used (like GPG).

The only protection we have against passive snooping of emails is STARTTLS. According to the SF Cron article, the “intrusive device” installed at UC campuses is intended to capture and analyze traffic, rather than intercepting and modifying it. So, I took a look at some of the emails I’ve received at my personal berkeley.edu address over the last 3.5 years of living in Berkeley. I looked specifically at the advertising emails I get from Amazon.com, because I’ve been receiving them consistently for many years, and they always come from the same place (Amazon SES). All of my most recent emails from Amazon follow this path, according to the email headers:

  • Amazon SES
  • UC Berkeley Mail Server “ees-ppmaster-prod-01”
  • 3 local mail filters, called “pps.reinject”, “pps.reinject”, and “pps.filterd”
  • UC Berkeley Mail Server “ees-sentrion-ucb3”
  • Google Apps Mail Server

Before April 2015, another UC Berkeley Mail Server was part of this path, in between the “sentrion” server and the Google Apps server. Before December 2014, the path looked completely different. There was only a single server between SES and Google, which was labeled “cm06fe.ist.berkeley.edu”.

According to the email headers, each step along the path is encrypted using STARTTLS, except for some of the local mail filters. Those 3 local mail filters are programs that run on the UC Berkeley Mail Server which might do things like scanning for viruses or filtering spam. They don’t exactly need encryption, because they don’t communicate over the network. I also noticed that before May 2015, there was only 1 local mail filter (the “pps.filterd” one) instead of 3.

The SF Cron article mentions that email surveillance started after attacks on UCLA Medical Center, which occurred in July 2015. Unfortunately, nothing significant seems to have changed in the email headers between June and October of 2015. But the use of STARTTLS, even within UC Berkeley’s own networks, casts doubt on the idea that UCOP surveillance was implemented as passive network monitoring.

If the surveillance was implemented at the network level, it would have to proxy the SMTP connections between all of the “ppmaster” and “sentrion” servers, as well as spoof the source IP or routing tables or reverse DNS lookup tables of the entirety of Berkeley’s local email network. It’d be an unnecessarily sophisticated method, if they just wanted to hide the presence of surveillance hardware.

On the other hand, if surveillance was implemented with the cooperation of campus IT staff, it would be pretty simple to implement for all emails campus-wide. There are already plenty of unlabeled local mail filters in place. These could easily be configured to forward an unencrypted copy of all emails to a 3rd party vendor’s system, for monitoring and analysis. Additionally, “sentrion”, which probably refers to SendMail’s Sentrion product, looks like it was expressly designed for the purpose of recording and analyzing large amounts of email.

There are a couple of problems if email monitoring really were implemented on the mail servers themselves with the cooperation of campus IT staff. If this is really the case, then it would require another system to monitor web traffic, which doesn’t seem to be explained in the article. Or perhaps, the claim that web traffic were being monitored is incorrect4.

I’ve always accepted that work email should be considered the property of your employer. Your personal stuff should stay on your personal cell phone and email accounts. However, students are not employees of the University5. I don’t know much about law, but I feel like FERPA was passed to address these kinds of privacy questions regarding students and academic institutions. Implementing mass email surveillance without consulting faculty and students, regardless of its legality, seems underhanded and embarrassing for what claims to be the number one public university in the world.

  1. I’m currently a student and (technically?) an employee of UC Berkeley. But these opinions are my own.
  2. The Simple Mail Transfer Protocol, which is used to deliver all publicly-routed email.
  3. Man-in-the-middle attacks
  4. Most web traffic (including RogerHub) goes through HTTPS today anyway. Monitoring web traffic without a MITM proxy would be ineffective.
  5. Unless you happen to be both.

Website updates

Last December was the biggest month for RogerHub ever. We served over 4 million hits, which consumed over 3 terabytes of bandwidth. By request, we released the 6th calculator mode, “lowest test dropped”, to the public. But during the same month, we experienced the biggest outage that has ever happened on RogerHub, which affected over 60,000 visitors, and the number of total spam comments has nearly doubled. I keep using “we”, even though this is a one-man operation, because these seasonal surges of traffic feel a lot bigger than just me. Toward the end of the month, my hosting provider Linode was targeted by several large DDoS attacks across all their US datacenters. RogerHub is run in 2 Linode locations: Dallas, TX and Fremont, CA. However, only one location is active at any time. The purpose of the inactive location is to take over the website when the primary location goes offline. There’s a lot of reasons why a Linode datacenter could fail, including physical issues with Linode machines, power outages, and network connectivity issues. During the recent DDoS attacks, Linode came very close to being offline in both Dallas and Fremont, which would have caused issues for this site. There’s another wave of traffic in January, for people who have finals after Winter Break, and it’s important that RogerHub doesn’t have an outage then.

I’ve been working on new stuff for RogerHub. I’ve decreased the payload size of the most popular pages by paginating comments. It took a while before I found a solution that both provided a pleasant user experience and allowed the comment text to be easily indexed. I’ve made the site a bit wider, and I’ve reduced the amount of space around the leaderboard ad on desktop browsers. I’ve improved the appearance of buttons on the site, and I’ve given the front page a new look. Finally, I’ve migrated RogerHub from Linode to Google Compute Engine and enabled HTTPS for the entire site.

RogerHub is using GCE’s global HTTP load balancer to terminate HTTPS connections at endpoints that are very close geographically to visitors. Google is able to provide this with their BGP anycast content distribution network. With HTTPS also comes support for SPDY and HTTP/2 on RogerHub, which remove some of the performance quirks associated with plain HTTP. I’ve also converted all my ad units to load asynchronously. My use of HTTPS and GCE’s global HTTP load balancer also makes it tricker to block RogerHub on academic WiFi networks, especially on non-school owned equipment, where TLS interception is out of the question.

You might think it’s silly to run third party ads under HTTPS, since advertising destroys any client-sided security you might claim to offer and many ad networks still don’t fully support HTTPS. I’ve always had mixed feelings about the advertising on RogerHub. Advertising covers my server costs, and I wouldn’t be able to run this site without advertising revenue. But poorly-designed advertising can ruin the user’s experience, especially on mobile devices. I’m only interested in the most unobtrusive online advertising for my website, and I try very hard to make sure that expanding ads, auto-playing video ads, and noise-making ads never get served from RogerHub. During the last few months, I’ve removed the main leaderboard ad for mobile users and I’ve removed ads from the home page as well.

In other news, a lot of RogerHub’s sites have been shutdown, including the Wiki and a bunch of miscellaneous things you’ve probably never looked at. My coding blog has been turned into static HTML, but is still available1. This is my only blog left (also my first blog), so I might use it again some time soon.

  1. There’s currently some mixed-content warnings on it, but I’ll fix it soon

Grown ups

I haven’t posted anything to my Tumblr blog in 649 days, but in that time I’ve gained maybe 50 new followers, and they’re all strangers. I don’t think any of them are bots either. They found a link on my homepage and maybe they decided I would some day post something again. Sometimes, I click on their profile picture and check out their Tumblr blogs too. I open up web inspector and grab the URL of their avatar thumbnail, and then I change the _128 suffix to _512, because I knew that Tumblr offered avatar thumbnails with sizes in powers of 2, between 32 and 512. And then I remembered that a few years ago I built a tool to uncover Tumblr avatars and put it on RogerHub, and suddenly it feels kind of creepy checking out 512px thumbnails of strangers’ avatars, because most of them probably don’t know avatar thumbnails go up to that size.

It’s summer now, and it has been half a year since I wrote anything here on RogerHub, so I suppose I owe you an update about what’s new with me1. I feel more clumsy with words than I felt in high school, which was when I wrote new posts on this blog every week or so. It’s a side effect of sitting in a chair at work every day with my earbuds in my ears and having very little conversation with other actual people. Even when I talk during the workday, the talking is usually about computer stuff, which doesn’t help with normal talking that much. There was a time last Summer break when I felt like I had gotten really terrible at Scrabble, because all of the words that I thought of were computer words or acronyms that didn’t count as legal words. I might have told you about that already, sorry.

Working an internship has its pros and cons. The company really spoils its interns, and when I get home, I don’t have any homework. This opens up my schedule to cook more2 and also to go hang out with my friends. I don’t have to spend time in the nasty parts of Berkeley. I can read my Kindle a little bit more, and I can focus on my health.

On the other hand, I miss school and TA’ing for my class. I miss when all the projects were easy and understandable and written terribly. I miss using my own laptop and spending time on my personal data backup system and my text editor configuration3. I miss coming home to roommates that I actually talk to, and I miss living in walking distance of a lot of people.

Hm, so far, it seems like I’m just whining about missing a whole bunch of things. I suppose there are other cons to working an internship too.

I have to share my room with another person, but it’s not terrible. My roommate is cool, and I already sort of knew him from Berkeley. The internet speed sucks, and the connection is kind of unreliable. I don’t have space to set up all my tech, and I don’t feel that comfortable ordering stuff online here. The internship comes with its own kind of stress, because I want to do a good job and feel competent, but it’s not easy. I doze off sometimes, because I’m used to working for myself, not somebody else. It was always stuff for RogerHub or building out cool infrastructural stuff I wanted to have. Even when I was working on things for students and grading, it felt like working for myself. I have trouble seeing the big picture of what I’m contributing to.

I guess all these cons aren’t hard to fix. I can make new friends, and I can try to relax more at work. There isn’t much I can do about the internet speed, but I’ll just have to learn to live with that. Maybe I just need an actual vacation.

One thing I can’t stop thinking about is the possibility that right now, I’m just hanging on until the semester starts again. If that’s true, then in 1 year’s time, I’ll be in this same position again (minus some of the intern perks), but without that reassurance that in less than two months, everything will be back to the way it was. The start of the semester means people will come back together in Berkeley again. It’s not like doing fun student things was so much better than doing internship things. Objectively, there is a lot of crap that students have to do that isn’t fun at all. I have to sit through humanities classes that put me to sleep, and I have to do CS projects, even if I don’t feel like they’re interesting or educational. Once you’re an adult, you get to cut a lot of the bullshit that kids have to deal with, because you always get a choice, and nobody can make you sit through something so boring that it puts you to sleep4. Also, it isn’t like I see my friends every day, or even every week, when I’m at school. There’s some people I haven’t seen all semester long, so why is not-seeing-them at school better than not-seeing-them in this corporate-provided San Francisco apartment?

I’m kind of disappointed at the percentage of adults that seem to be excited for the next day, every night, compared to the percentage of my school friends do. Why is it so hard to keep friends and not be sad when you’re an adult? I wish I had my calendar and to-do list back by my side, and I wish I actually had stuff to put on them. Sorry to end with something sad, but being an adult sounds like it totally sucks.

  1. It’s not like you can find out via Facebook or anything.
  2. I have been making breakfast almost every morning for the last five weeks, and on the weekends, I make all three meals for myself. There’s a Safeway across the street.
  3. I can do this at work actually.
  4. Ok, I guess your boss can threaten to fire you, but you have a choice to get a new job.

Notes and reminders

This is Notes.app, which I use to save rich text and organize ideas. I like it because it’s not a website, it’s a native OS X app. And because it opens in a small window that fits on the side of the screen, I feel creative and comfortable writing notes here.

Notes.app on my desktop.

But it doesn’t sync with my Android phone. It only syncs with an iCloud account, and I don’t use iCloud for anything except iTunes purchases and this. It’s also a little buggy with too much rich text.

I use vim for all my text editing1, and I wanted to use vim for notes too. But it didn’t work out. Rich text lets me put in checkmarks like ✔︎, and I can start bulleted list with wiki-style syntax. There’s a font color palette, and you can paste images and headings into it directly from Safari. I have a ton of places to write stuff, but this one is my favorite.

I also tried Google Keep, but the mobile app is so clunky and there’s no native app. The web interface is awkward too. I don’t like sticky notes. They feel like a lazy way to make reminders.

There’s also a Tasks system that is integrated with Gmail and Google Calendar. I’ve been using that one for a long time, but there is no mobile app. I purchased a third-party mobile app for Tasks2, and I’ve been using that for a long time too. But there’s no native OS X app. The next best thing is a full page web interface for Tasks, which isn’t too bad.

I guess I’ll never be able to see my notes on my phone, or edit my todo list with a native OS X app. It’s the end of the semester anyway, so my todo list is getting shorter and shorter.

  1. I wrote an essay in vim. It has spell check and text wrapping. Pretty good!
  2. It’s called Tasks (surprise).

Sticky note

Sticky note on my apartment window

1

  1. I put this sticky note on my window on the first week of school. I needed pictures of something where the foreground was close by, but the background was far away. It was for the project I was composing for the new semester, and I took pictures of this note on my window for the input images.

Catching up on this year

Welcome back reader! I’ve been gone for more than a year, and a lot of things have changed. I haven’t stopped blogging. I was just scared off of this blog, because of all the visitors spilling over from my calculator page. So, I made four or five other blogs so I could write without wondering how many strangers were going to read the posts I wrote.

Here are some things that have happened to me since September 2013, to get you up to speed: I got an offer last December to be a TA for a class at my university, which meant a 20-hour commitment and lots of cool perks. I was in San Diego visiting a friend when I got the offer (it was past midnight during winter break). I was almost going to reply immediately and turn down the offer, because even though I had really wanted to be a TA before1, it sounded like way too much work on top of everything I already had scheduled for the Spring semester. Besides, I had already agreed to be a reader (less work, less cred) for another class. My friend convinced me to sleep on it instead, and the next morning, I woke up and told the professor I was interested, but already committed to the reader position. Things kind of settled into place after that, and I became a little sophomore TA.

Before my first discussion section, I was really nervous. I made a slideshow and everything to introduce myself and try to give a couple of tips for succeeding in the course. When I took the class, I went to every single lecture and made sure I stayed on top of the material. I never went to discussion though… My discussions were always pretty small. I think that was because I was inexperienced and also that my sections were at really inconvenient times. As for the few people that showed up every week, I got to know them pretty well. I did a lot of work on the 3rd project, which was fun because I got to support that assignment from start to end. I took the pedagogy course that new TA’s all take. They talk about some of the research about teaching and learning and all of the techniques that come out of those. Once I heard about some of those techniques, I started noticing them from my own professors and TA’s. I could also spot when a TA was making mistakes and breaking all the rules, and it really did make a difference.

I got sick a bunch of times, but I don’t remember all of those. I went through two birthdays, so I’m 20 years old now, which is kind of cool. Some time in October, I was going through my four year plan and I noticed I’d taken enough requirements and had enough units to graduate pretty easily in just 3 more semesters. I had 5 more upper division CS classes to take and 2 more humanities courses and 1 more requirement for my major. So, I decided I was going to plan to graduate in 3 years. I thought that I might change my mind as my last semester approached, but I did change my graduation year from 2016 to 2015 on my resume to make it somewhat official. I thought I was going to graduate early for a long time. I talked to my parents about it, and I told my friends about it. But I cancelled this a couple weeks ago, so I’m back to 2016.

I took a few unmemorable classes that semester. I got to know some of my friends better, since they were taking the class I was TA’ing for. I convinced some of them to attend my section sometimes, and we’d just have fun and I’d bring food on occasion.

I spent a bunch of time doing interviews for a summer internship last year. Job hunting took a long time, and I didn’t find an internship until kind of late in the year. I ended up getting offers from three companies, which is frustrating, because up until that first offer, it seemed like nobody was really interested in hiring me, and then suddenly three of them come in a week. I went to intern at Quizlet for the summer. All three really would have been pretty solid choices, so I sent these long apology emails to the other two places letting them know that I thought they were awesome too, but sorry! During the summer, I read a this big long book about a slum on the outskirts of Mumbai. The book was called Behind the Beautiful Forevers2, and I thought it was really ironic being in one of the richest cities in the world with all of these rich tech industry folks. I know that not everyone had a lot of money, but everyone sure acted like it.. and ate like it. I also thought a lot about those Japanese teenagers who left home to go to university in Tokyo and after that, worked hard to make their fare in a big place. I found a sublet on the west side of Berkeley, which I thought would be convenient because it was near the subway station. Turned out that the 45-minute commute every day was really tiring. The apartment I lived in was kind of old and smelly and in a poorer part of Berkeley. I didn’t really get along with my roommate, who lived a completely different lifestyle than I did. At work, I learned a lot about real infrastructure stuff. I picked up a bunch of lingo and got better at evaluating software and infrastructure.

This semester I’m a TA again. I think I’ve gotten better at it the second time around. I signed up for a business class about negotiations, to fulfill my first of 2 humanities courses. I didn’t get in, even though I was #2 on the waiting list since the start of telebears. But to be honest, I’m sort of relieved that I only have my 3 technical courses this semester, because they are more than enough workload for me. A bunch of my friends are also TA’s, which is cool, since we can talk about TA things.

I’m taking the operating systems class this semester, which is super cool, because we do our projects in 4-person groups, and working with my group is lots of fun. I’m also taking artificial intelligence, which I thought I would hate. But I actually think we cover a lot of cool material in that class, and I wish I had more time to really understand it. Finally, I’m taking computer networking, which is alright.

I bought a MacBook Air over the summer for myself. I also bought a big giant lens for my DSLR. It’s alright. I bought a 49-key USB piano keyboard, which I play sometimes with GarageBand. I bought a subscription to Adobe Creative Cloud for Photographers, which comes with Photoshop and Lightroom. I used Photoshop a ton for developing project 1 this semester. I also started using Lightroom to post-process all of my pictures. My MacBook is able to handle realtime editing and image exporting just fine. I didn’t skimp on the CPU and memory upgrades.

Things are alright right now. I looked at some of the things I wrote here in high school, and they sound really kind of dumb and don’t sound like how I would say them in real life. I think it’s endearing how blog authors adore their readers and refer to them. I still follow a lot of people’s blogs on my RSS reader. I don’t think they know!

Here’s me from a few weeks ago3, before I got my haircut:

Picture of Roger holding his DSLR.

I might not write again for a long time. But talk to you again soon!

  1. At Berkeley, I feel like becoming a TA is one HUGE thing you probably want to do at least once before you graduate in CS. A large percent of CS students become TA’s at some point in college, and it’s really prestigious, and they waive your tuition.
  2. And then a few weeks later, the vlogbrothers decide they’re going to have everybody read it >.>
  3. Check the EXIF on the full size!

Miscellaneous things

Last friday, there was an outdoor concert on campus and I went with some of the people I lived with in the dorms last year. I hadn’t heard of either of the bands performing, but that didn’t worry me. I try not to be stingy with my time, and I feel uncomfortable when other people are with theirs. It’s not like I am doing something important with every minute of my waking day anyway. Also, I don’t put a price on anything that concerns my mental well-being. I am not on the edge of going insane; that is not what I mean. I just mean that some things are more important and should not be valued the same way you value unimportant things. It just so happens that at the moment, I can’t think of very many unimportant things to exemplify, or else I would have listed them instead of just saying “unimportant things”. The first unimportant thing I thought of was hardware for a decent laptop, because my laptop is sitting right in front of me. But then I remembered that having a highly-functional laptop is critical to my usual workflow and by extension, my mental wellbeing. The next thing I thought of was ice cream. There is an ice cream shop right down the street from the apartment complex where I live. I personally think that they are overpriced for what they produce, especially since their competitor sells scoops of ice cream for one dollar on the other side of town. If ice cream is essential to your mental health as a laptop is to mine, then perhaps you should not skimp on your ice cream budget. As for me, I think I would be happier to know that my ice cream had only cost me one dollar.

Anyway, I decided that this outdoor concert was something that concerned my mental health and was worth the time, however little I thought my time was worth. The concert was free, after all. I did not like the music the bands played, although that is probably my fault. I like music with great lyrical density, sensual vocals, and tangible instrumentation. The electronic music at the concert was not this. What I mean by tangible instrumentation is that I prefer music where all of the instruments are identifiable, and in some cases, reproducible with nothing more than a trained ear. Some kinds of modern music use computers to distort and mix these identifiable sounds into exciting new tones that have never before been heard. Others try to accentuate and clarify sounds in order to make them more identifiable. I have no problem with the latter, even if entire guitar tracks can today be completely synthesized from recorded samples. So long as the deception is convincing, I am not concerned. To me, this kind of music is the best evidence of humanity we can get on demand today. On the other hand, there is car music, which I listen to exclusively in the car where there are usually other people as well. Car music is what the popular young people radio stations play. It is a good thing that radio stations love playing car music, or else we would need to find another place to get it.

Many people at the concert were not paying attention to the music. They were sitting toward the back underneath the trees where they could talk or smoke, safely hidden from the sight of the one police officer who, that night, had the misfortune of being assigned to our concert. There are few things worse than not being able to sit down at an outside concert where everyone else is sitting down and enjoying the ambiance. Berkeley has a lot of night light so the sky is not very dark, but the concert glade had an excellent unrestricted view of the sky above. I laid down on the grass as well. With my friend’s phone, I identified the summer triangle–Deneb, Altair, and Vega–three bright stars that make a triangle. I am not familiar with celestial names and places. I always thought it was more worthwhile to spend time understanding celestial concepts rather than the names that Englishmen gave to those objects of brightest apparent magnitude as viewed from our planet Earth. The latter is a much cooler thing to know though. I only know of those three stars because they played an interesting part in a TV show I saw almost 6 years ago. I felt an moment of unexplainable sadness about seeing the actuality of those summer stars after learning about them so long ago.

Three of my favorite fields of study are computer science, astronomy, and biology. I always thought this was interesting (the fact, not the subjects) because they deal with everything we use, everything we see, and everything we are respectively. These actual fields may not be so broadly defined, but if you stretch your imagination a little, it sounds almost right. Learning about these fields of study helped to shape my philosophy and world view as I grew up. Astronomy was the earliest influencer of these three. You will find that nearly everyone who enjoys casual astronomy has a detached and laid-back approach to things that might seem very important.

I want to share with you two interesting things about astronomy that I think are more important than they’re given credit for. The first is the solar plane. In diagrams and illustrations, our planets are always drawn with their concentric orbits in a disk, like the ridges on a frisbee. On the other hand, we know that space is three-dimensional. The fact that all of the planets orbit in a roughly disk-shaped region must seem quite unusual1! Most people assume this just had to be the case, which is actually true for a lot of situations, but the reasons aren’t so obvious as it would seem. The second thing is that, while we know a lot of things about our solar system and our interstellar neighbors, we don’t know so much about the space in between. Past the orbit of Pluto lies a rough sphere of interesting random things that deserve some more attention. These include the Kuiper belt, another disk-shaped region past the orbit of Pluto, and the Oort Cloud, which encompasses all objects on which the Sun influences gravitationally. There are countless orbiting rocks, comets, clouds of hydrogen, and other unknown things all in this region. There are also several imaginary boundaries separating our solar system from interstellar space that define the regions where solar wind and interstellar forces are balanced out and things like that2.

In high school biology, I learned that almost all of the visible parts of a person are just made up of layers of keratin. I learned a few other things, but the keratin thing was the most intriguing. In the back of their minds, everyone is somewhat aware that people are just made of their constituent fluids and tissues and that somehow the orchestration of all those parts make interesting functional beings. However, there are some people who just seem so different from regular people that you’d refuse to believe all their visible parts were made up of the same proteins all of our visible parts are. It seems like a fantastic mission. Proving yourself to be more than keratin, that is. Talking to them, it almost makes you forget all the things you know about ancient geology and human anatomy, because all of these sciences seem so unbelievable in their light.

I could recount for you all of the cosmic miracles that made Earth into the fertile life-bearing oasis it is today. Astronomy and biology sort of overlap in that regard. It sounds kind of silly, but after so many years under the oppression of contextualizing science, I just want to forget that any of it was ever true. It gets more and more difficult to separate the irrelevant from the immediate when your brain keeps reminding you of the way things came to be. Of stars and humans, which is the irrelevant? That is hard to say. I enjoy deception oh so much; sometimes I just like to look at the pretty stars and forget about them both.

  1. In fact, there is a very good reason why this is usually the case, but it’s also true that our solar plane is tilted by around 63 degrees when compared to the galactic plane. Source.
  2. This iconic picture comes to mind.

Dead man’s switch

A few years ago, I started toying with the idea of leaving behind contingency letters in case I died an early and unexpected death. I usually like being fairly well-prepared for all kinds of data disasters, financial disasters, and natural disasters, so death seemed like a sensible thing to prepare for too. It sounded kind of shocking and morbid at the time, and I didn’t want anybody worrying I was some depressed teenager, so I didn’t tell anybody about it1. These things usually work better when nobody knows anyway. I got the idea from this animated TV show where a scientist leaves behind computer programs that activate automatically when he dies, so that he can get messages across to people and manipulate events from beyond the grave. If anybody ever tried that in real life, I doubt it would work as successfully. First of all, posthumous programs usually do drastic irreversible things, and you can’t test them like you can test innocuous programs. And even after you’ve tested component by component, there is no guarantee that the entire system will execute flawlessly when the time comes. You won’t be around to correct any program bugs, after all. I imagine that NASA felt the same way launching probes into space that would take 10 or 20 years to reach their destinations.

Writing those programs got me interested in cryptography2 and network security. Ironically, the consensus among security programmers is to never write cryptography code yourself, but to know how to identify when somebody else does it poorly. My death programs went through several revisions over the years. A while after I started working on this, I came upon the Wikipedia page for the Dead Man’s Switch3. It turns out that tons of people had the same basic idea as I did (figures), and that there were already plenty of practical uses devised. For example, dead man’s switches can be used in trucks to automatically apply the brakes when the driver falls unconscious. Julian Assange, Lisbeth Salander, and a host of other real/fictional characters have used dead man’s switches to ensure that certain things happen in case they die. There are even services online where you can sign up to have your bank details, social networking accounts, and secret hiding places passed on to somebody in case you die. They might not all be targeting teenagers, but they were certainly proof that people think about doing this all the time.

Preparing for an early demise makes you really think hard about the people and things that matter to you. I kind of foresaw that happening when I first came up with the idea, but I didn’t really feel the full effect until I got down to preparing the material. When you first start compiling names, you realize that you’ll probably have to include your parents, maybe your employers, and also people to whom you’ve left so many things unsaid. Before you start writing, you’ll need to get in the mood. I think you can reasonably expect the recipients of your posthumous emails to be somewhat sad or shocked. It would not be a good opportunity to tell a joke or speak lightheartedly, which is how I usually feel while writing these letters because the whole idea is kind of outlandish. I’m not a political activist or an important corporate person, and all the cryptography involved seems silly in comparison to how little I have to hide. Most teenagers don’t even think about the possibility of dying early. It’s also really hard to write appropriately for that kind of recipient unless you’re in a sad mood yourself. On the other side, preparing content for posthumous release can be just the catharsis you need when you’re feeling frustrated or depressed. Nothing compares to writing letters with such utter detachment to life. It puts your daily concerns and stress into perspective, as death usually does. Don’t keep thinking that way though. It will drive you crazy eventually.

Since then, I’ve stopped preparing these letters and shut down the systems that siloed them, so if I do die early, this post is probably all you’ll ever get. I think that letters (emails, really) are too impersonal and not an acceptable solution to the original problem. Instead, people should strive to live in a way that already expresses everything you could ever write in such a letter. It’s true that there’s no place like a posthumous letter to say things you’ve always wanted to say. But I think it’s a bit unfair to keep words bottled up until the recipient has no way of responding back.

  1. I really wasn’t. There was nothing wrong with me. I just liked being prepared.
  2. Yeah right. I was hooked way before that.
  3. It was during one of those nights that I spent researching Russian radio signals and whale noises.

Gender roles

I hate talking about gender roles. I won’t even listen to other people talk about gender roles. Within the realm of all progressive fronts of social change, cultural movements regarding gender are the most immediate. The history of nontraditional women is frustratingly short and our cultural education is exceedingly androcentric. I think it’s already a small miracle that young people today don’t think like clones of their parents. Whereas we can comfortably throw around ideas about poverty and human rights from a distance, ideas about gender roles apply universally. And above all, I feel that nobody has yet produced the right answer to the question of gender roles so far. I’ll show you what I mean.

A lot of people like to throw around condescending rhetorical questions that go something like: why do you you think (foo) can’t (bar) just because s/he’s is a man/woman? In the heat of the moment, pointing out someone else’s gender insensitivity makes you feel like some kind of prejudice-fighting social hero. However, antagonistic attacks like these are ad hominem and require just about as much thought as a fart. Most discussions about gender roles have become so predictable and droll. “She can do whatever she wants.” or “That sounds like a double standard.” All that’s left are thoughtless questions and fart-like answers, one in reply to the other. The same thing usually happens to any social movement that becomes stylish and mainstream, not that I’m complaining.

The image that comes to my mind is a camaraderie of rich wives sitting together in their grand English-style sunlit home talking about the importance of racial equality over some hot tea. Oh wait, I shouldn’t say that. It would imply that English folks are all rich, which is racist, and that men can’t be domestic and drink tea, which is sexist. On the other hand, we applaud shows like Adventure Time that boldly present a independent, strong, female scientist in a position of political power.

The truth is, everybody says mildly sexist things occasionally. It is hard to avoid doing so when our culture and upbringing were designed that way. “Your new knowledge is in conflict with your old assumptions,” goes one webcomic that I follow1. At school and online, people publish articles about gender all the time, and unless they are right on point and conservative about their breadth, people usually hate it. Any one exclusion or oversight might bring out the loudest and most ignorant bunch who point out mentions of rape that ignore male victims or the symmetry of culturally-distorted body image. There are a dozen things that might get you into trouble with the gender police, and each one makes it more discouraging to write anything regarding gender. The problem is that we blame writers for their shitty gender ideas, rather than the culture that teaches them. That’s like yelling at a 19th century guy for being racially insensitive. People should be rewarded for attempting to change their cultural preconceptions, not scolded for getting stuck.

People occasionally have good conversations about gender too, but until we agree to stop using gender roles to feel morally superior, the loudest few will continue to ruin the conversation for everyone else.

  1. See Socially Constructed. The comic is published daily by a Japanese-American dude and regularly features themes of ethics and gender roles.

What Google+ thinks about photos

Last year, I took some of the money I made from running this website and bought myself a dslr camera off of Amazon. It was the most money I had ever spent on anything for myself1. I couldn’t really say why I decided to buy a camera out of the blue, but I think I have a better grasp on the reasons now. First of all, I’ve always been sort of interested in photography and optics. I just liked taking pictures of stuff, even if it was with my pinhole cell phone camera or the webcam on my laptop. I knew a lot more about optical physics and lenses than most kids my age too. In college, I posted a lot of photos of architecture at Berkeley and things I saw at department stores on my status update blog. And before that, I posted cell phone pictures of my day-to-day experiences right here on RogerHub.

I was born with hyperopia, or far-sightedness as it’s known colloquially. In first grade, I got my first pair of glasses. Glasses didn’t make anything much clearer, but I wore them all the same. With those glasses, I felt like I was looking at a computer screen watching somebody else live their life, and I could control their actions without any fear of embarrassment or harm to myself. This was hardly a surprise, given how long I used to spend in front of the computer every afternoon.

The hyperopia gradually turned to myopia, and then my eyes were just like everybody else’s. Every hour I sat in front of a screen on the Internet or reading a book, I thought I was draining away the small amount of visual clarity I had left in my eyes. Some days, I wanted more than anything else to wake up and see clearly once again. The guilt occasionally turned to depression, but that never stopped me from sitting on the computer all day. I’m still unsure whether ruining my vision was worth the precocious programming experience I got in return, but I probably would have done the same thing if I could do it all over again.

During my first year in college, there was this guy who sat in the very first row of one of my lectures every day. You could tell his vision was shit from the heft of his glasses and the way he’d zoom in on the lecture slides on his mac book2. Once in a while, I’d look over at his usual seat and check out what he was doing. Among his usual activities were TA’ing for a introductory freshman computer science course, scrolling through the articles on his Google Reader, and shopping for nice cameras. At the time, I thought it was so lamentably ironic how a guy with that kind of vision could be so interested in taking pictures. But to a lesser degree, I was the same way. The surrogate eye of a digital optical sensor provided all of the exciting clarity that our own eyes could not.

Another part of me honestly just wanted to sink some cash. I was bored. In college, housing and entertainment (e.g. reading and learning) were already provided for. I didn’t have much time to buy expensive clothes, and I already bought every laptop upgrade I had ever wanted. Making money is a lot more rewarding when you’ve got something to save for. My camera became that thing.

So, I got my camera, and I was immediately disappointed. Photography is an expensive hobby, and it seemed like expensive was the only kind of hobby I was making recently. I took a look at other people’s photos on 500px and flickr, and noticed that they were all using bigger cameras with bigger, full-frame sensors and expensive, long lenses with gaping wide apertures. Beside that, it seemed like you’d need a remote trigger, a tripod, an enormous flash unit, an external backup hard drive, darkroom software, and a dozen other accessories to even get started. I didn’t even own a bag. Moreover, I didn’t live next to a Canadian lake or in a cabin on some foggy mountain range. I certainly didn’t have adorable toddlers or pets either. All I had to take pictures of were my floormates and the people walking by underneath my fourth-floor window. I thought I just needed to buy more stuff.

Google+ introduced a revamp of their photos service just a few months ago. Included in the update was a new auto-enhancement feature that they dubbed “your darkroom in a datacenter”. I was skeptical of the service at first. Image enhancement usually involves trying to grab more detail from an artifact-ridden jpeg and applying ostentatious colors/vignetting all around. As it turns out, this particular update was more philosophy than software.

By the time the new G+ photo features were released, I already had some experience post-processing raw sensor data in darkroom software. If you’re not familiar with the process, post-processing refers to intentional manipulation of the data that is recorded directly by the image sensor in order to fix exposure and white balance or get a particular effect in your pictures. Processing raw data is usually more flexible than manipulating an image in photoshop because camera sensors usually store 24 or even 48 bits of data per color channel per pixel in a captured image, compared to jpeg’s 8 bits. Recording the raw sensor data gives you a lot more room to mess up, because you can still recover a lot of data from a bad shot later in post-processing.

I took a look at Google’s post processing techniques by uploading a few pictures I took and had already processed myself. The results were surprisingly good. I’m convinced that Google designed their processing software with a fundamentally different philosophy than many people, including myself, held about the way a photo should look. G+ applies a few easily distinguishable modifications to just about any photo you throw at it. Google tries to:

  • Recover detail from overexposed (all white) and underexposed (all black) patches
  • Burn the edges of the photo, especially the parts that are out of focus
  • Add roughness and relief to detailed surfaces like skin, carpet, and wood
  • Brighten faces where it can find them
  • Reduce the amount of darkness in blacks and lightness in whites

In particular, the algorithm never messes with the white balance or creates any unrealistic washed-out or excessively vibrant colors. Their primary goal seems to be to recover as much detail and clarity as possible, which sounds like a fairly standard thing to do. However, this isn’t always the case, especially with the artistic photos that people usually admire.

Google+ photos doesn’t care about artistic effects3 or faithful reproductions. Its algorithms are more concerned about providing the most amount of information per unit area of the photo, taking into account the differential brightness and contrasts of different desktop, tablet, and smartphone screens. The goal is to make it easy to recognize and remember the people in your pictures, even if it means changing the look of the environment around them.

I think this is an excellent philosophy and reveals an important fact to keep in mind: normal people, like you and me, who aren’t professional photographers, should focus on taking pictures of people, not food or sunsets or things. In the long run, portraits are the photos you enjoy and value the most. Silly practices like shooting in RAW on a vacation or day trip just get in the way of this goal4. The tools on G+ may not give you the flexibility or recovery power to do all the artistic photographic effects you want to do, but they do an okay job of automatic processing and save you a bunch of time that you could be spending taking more pictures. So stop shying away when I point my camera at your face. Those pictures are not for you. They’re for your kids, once you get around to that.

  1. The rest of the pricey stuff didn’t really count–housing, my tuition, etc.
  2. I could make out the text from a few rows back.
  3. Think about all of the filters on instagram that flatten the dynamic range or intentionally makes them grainy.
  4. My camera is set to basic quality and small image resolution, which spits out pictures that are usually around only 1 megabyte, versus the 25 megabyte size of its RAW files. Small size makes the photos easier to move around and upload, which is all I ever do with them now anyway.

Guess who’s back

Whew. It’s actually been a long time since I wrote anything on this blog. The last two posts I published were actually from other places, and I just posted them here because I thought they would fit. There are a couple of reasons why I haven’t written anything on RogerHub for a while:

  • Ever since my site started tons of traffic, I’ve been more careful about what I publish on my home page, which receives around 5% of that traffic as collateral damage.
  • Who knew that college actually keeps you busy?
  • I’ve created my new programming blog, and it’s so much easier to write about computer things.

Once in a while, I look back on the history of posts on this blog. It started with really terrible software reviews, and then I started writing about the less-personal aspects of my life with a lot of pictures, mostly from my old cell phone. More recently, the post titles have gotten longer and the topics have gotten more esoteric1. I even added professional-looking footnotes.

I think it’s kind of sad that this long-lived blog should be so unceremoniously halted just because I’m too busy to write or because I’m afraid of strangers stumbling here and judging all the trash I write here. I read a ton of blogs myself. A lot of them are hacker blogs where people talk about exploits they’ve found or cool stuff they’ve hacked together. There was this one guy who blogged about editing Wikipedia and his iPhone. And finally, there’s GRRM’s livejournal, where he blogs about his books and whatever’s in his mind. I kind of like that idea.

So, I’ve made a lot of calculator-related improvements to this site in the past few months. This site is a fun side-project for whatever free time I get. Most prominently, I simplified the header to the bare essentials and made the site more friendly to mobile devices2. I also merged my profile page with the front page and plastered a giant picture of my face near the top—more about this later. Overall, it gives a profile/portfolio feel to the front page of the site, and it lets me hide my blog posts under a few layers of links.

I’m now that the actual blog parts of this website have fallen to dead last on my page rankings now, which is great! So, I think I’ll start writing again here, but it won’t be those dense philosophy articles littered with synonyms that I’ve been publishing lately3. See you again soon.

  1. I began writing my posts in HTML rather than with the visual editor.
  2. Stop saying mobile-friendly. Blegh.
  3. Those take way long to write, for their length.