I received my acceptance letter to the OMSCS program today (it’s an online master’s degree from Georgia Tech, profiled in this article), and here’s the sequence of how I felt:

  1. Yay! I see rigorous coursework and a career-related degree in my future!
  2. This is silly, they must accept just about everyone.
  3. (Checking a reddit thread to see backgrounds of people who applied, were accepted, etc.)
  4. OMG everyone has a CS degree. This is terrible, I don’t have a CS degree. I’m going to be way, way behind. What am I going to do?
  5. At least I can write about this in my blog post today.

We naturally tend to replay embarrassing moments that highlight our insecurities. Today I spent an embarrassing number of minutes asking my manager to allay my confusion about a piece of code that was essentially… two booleans working together. Ugh.

I think what could help is instead actively writing down positive anecdotes or feedback that made us feel  “Oh, I guess I’m all right.” For example:

My first semester of college was a struggle – my first class of my first day was Chemistry, and the professor asked us to discuss, as a class, how we would make a biological computer (Umm… what?? That question assumes knowledge of two subjects that are not at all chemistry). Then I nearly failed two physics midterms. All semester I couldn’t understand my math professor, I couldn’t memorize bioengineering reading as well as the pre-med students, and I felt like I was a lame, under-educated person from a merely average public high school – a person who didn’t belong in a class with innovative people imagining using DNA as bits.

But at the end of the semester, I’d managed decent grades in my classes, including Math 114. I was talking to a classmate at my dorm after final grades were out, and he said “Wow, that class was really tough. I already took multivariate calculus in high school, but I barely got an A.” After I got over the mild outrage of “WHAT? You already took multivariate calculus? I missed a memo!” I realized I was doing fine, because I got an A too.

Harry Potter – one of two pieces of media that always make me feel better (the other being Frasier, of course).

There is no shame in what you are feeling, Harry. On the contrary… the fact that you can feel pain like this is your greatest strength.

This pain is part of being human.

That comes from Dumbledore in The Order of the Phoenix, at the part where Harry confronts losing Sirius with anger and denial. Upon hearing this, he yells, “THEN I DON’T WANT TO BE HUMAN!”

It sucks being human sometimes. Being back on facebook due to this blogging thing, I see a lot of pain. My friend writes that she had patients bursting into tears today upon being asked “How are you doing?” There’s also some wavering between feeling hurt and shielding ourselves by proclaiming that we don’t care any more and we’re moving to [country with vastly better health insurance].

I’ve been trying to stay positive by promising to stay engaged and by complaining less about how everything is too heavy at the gym. But most of all, I feel uplifted by this outpouring of pain from my friends.

In Harry Potter, after the anger burns off, we learn that pain is love. We hurt only because we can’t stop caring. When I read the messages that my friends are posting, I’m struck by two things: one is the passion that shows how compulsively we care, about equality, love, and our country; the other is the eloquence and consideration that shows how capable we are. I’m confident that if we remember this pain and channel it – into succeeding in our individual lives, into supporting our communities, into reaching those people who voted against us due to the same type of pain – we will find ways to keep moving our society forward.

Yay humans!

I’m not in denial about the result tonight. Don’t all the childhood stories affirm that the right path is more difficult? Even if Clinton had won tonight, the work ahead was always going to be monumental. Consider the amount of suffering, unfairness, and ugliness in the world – this was never going to be reversed with one election.

As a liberal, I often take solace in MLK’s assurance about the arc of the moral universe, the history that’s generally proven our beliefs to lie on the correct side – the side that opens our minds and borders to those who are different, the side that sacrifices for true equality. But the arc doesn’t bend on its own; it’s up to us to pound at it.

If you’re disappointed tonight, how will you contribute to the arc of the moral universe?

My initial response was that I’m going to gleefully stand by while those who didn’t vote my way get the leadership they deserve, and expect them to die off, grow disenchanted with disenchantment, or whatever. Congress 2018!

But that’s small and mean, and not what I’ll actually do (well, maybe a bit). What I plan to do is this:

  • Write my blog post tonight, because I promised to, and keep writing this month
  • Get up early and go to the gym tomorrow
  • Work hard at my job
  • Actively consider how technology can enable goodness
  • Vote in every election going forward

I’ve been a Trump supporter since his announcement – for the nomination, not for office. So I’m grateful that we’re nearly done, with the NYTimes presenting an 84% chance of a Clinton victory, and the expectation of Democratic gains in Congress.

But of course, I’m extremely nervous. I remind myself that I’m glad to be in this situation, rather than seeing Marco Rubio or John Kasich with an 84% chance of becoming president. When an entire political party is ruinous, there’s no good hoping, “Well, could we at least have the most reasonable-sounding lunatic, to better trick the populace?”

I am not going to believe, for example, that a traditional Republican like John Kasich has more respect for women than Trump:

In 2013, Kasich signed into law a requirement for ultrasounds to be performed to look for a fetal heartbeat before a woman can have an abortion. If there is a fetal heartbeat, the doctor must offer a chance for the mother to listen to it or see an image. (Washington Post article on Kasich’s record on abortion)

So what if Trump said he would punish women for having abortions? At least he’s clear on his intent, instead of hiding anti-women policies under a “we must protect delicate women from their bad decisions” facade.

I am not going to swoon over Jeb Bush saying this either:

As the grandfather of two precious girls, I find that no apology can excuse away Donald Trump’s reprehensible comments degrading women (Bloomberg)

I dismiss any other Republican man who finally gave up this pretense of taking Trump seriously, by invoking their daughters and acting offended. Did you really need your daughters for this decision? Women are people. All women, even non-relatives, are people.

Face it – Republican policies disrespect women, and Republican politicians always pretend otherwise. I much prefer Trump’s habit of disrespecting women and saying so. (Substitute whatever other minority for ‘women’ in those last statements, and in this post.)

Words matter, and because of Trump’s, we’ve experienced months of clearer dialogue about what it means to respect women. Policies matter even more than words (they contain a lot of words!), so please vote against the bad ones, up and down the ballot.


Here’s a persistent question I’ve never resolved – How do I “own” what I do, while not letting it define me?

On the one hand, feeling a sense of ownership is good. It means that instead of being a flesh blob that merely shows up at appointed hours, you’re engaged in understanding and solving a bigger problem. On the other hand, defining yourself by your work means you might neglect your family in favor of your job, or experience disproportionate stress and become a grouch when your work is going poorly.

Guesses about identity

Perhaps the weirdness about identity comes from how bad it is to take things personally when it comes to what we produce. No work is, or should be, about us, because real work is always in service of something larger, and anything personal is just an indulgence. E.g. I’m trying to make software that helps other people save time, journalists are trying to write stories that inform society of what’s happening, artists are trying to fashion pieces that inspire people to appreciate beauty, etc.

Perhaps another weirdness is due to ego, and how we have no way of being calm when we feel like we aren’t good enough. The only way to stay calm and be effective is to disassociate. Maybe this means that anyone who’s calm when being dumped by a significant other should feel free to conflate their identity with their work.

My strategy

The best way I’ve found to get around this confusion is to limit my identity-judging to cute little questions like, “Have I made a true effort to understand this piece of code?” Then I allow myself to feel good or bad depending on if I’ve fulfilled simple outcomes that I fully control. Perhaps every so often I consider at a larger scale whether this faith-based day-to-day, moment-to-moment attitude has served me well based on external validation, like whether I’ve built something meaningful.

There are likely better solutions and explanations. Anyone have them?

I’ve been [very slowly] working on my backspin since I started skating three years ago, and it was only recently that I learned how it should feel. I’m not sure why I’ve had so much trouble with this spin in particular, but it’s definitely inconvenient since the backspin is necessary for change-foot spins, flying spins, and pre-axel practice. Because of this struggle, though, at least I’ve accumulated a number of different ways to begin a backspin.

Method 1: Starting with your feet parallel

  1. Stand with your feet in parallel, probably about shoulder width.
  2. Shift your weight to your spinning leg.
  3. Position your upper body in the starting position, with your torso rotated to the spinning leg side and the free leg side arm in front.
  4. Rotate into the spin by turning your body and both feet in the direction of spinning, and raise the free leg once it passes being in front of the spinning leg.

I found this method to be the easiest, because it feels like it naturally enforces a correct positioning of the free leg. It can also be done gently, which reduces the chances I wobble and fall over.

Method 2: Starting with toe pick of free foot

  1. Stand similarly to method 1, but after shifting your weight to the spinning leg, put your toe pick in the ice, slightly further back than the spinning foot, with your free leg knee slightly bent.
  2. Position your upper body similarly to method 1.
  3. Turn your body and pull yourself around with your free leg, then bring up your free leg.

This feels similar to method 1, but it makes it easier to generate more speed, which helps to balance. That’s if you’re balanced to start out with, which I find harder with this method.

Method 3: Starting with a pivot

  1. [Optional] Start with a forward outside turn (in the direction you’ll be spinning) and then put toe pick of free leg down to start the pivot.
  2. Rotate in pivot once.
  3. At the end of the pivot, lower your spinning leg off the toe pick, and draw your non-toeing foot inward and lift it up into the backspin position.

This method is hard for me because I’ve never practiced pivots much. It’s fun how this connects 2-3 elements though!

Method 4: Starting with a forward inside arc

  1. Skate on a forward inside edge of your spinning leg.
  2. Position your arms and body similarly to methods 1 and 2.
  3. Hold your free leg behind you, but with your hip/foot open.
  4. When you reach the point where you could do a three turn, swing your body/arms around and lift your free leg to the backspin position.

This is the method that’s most frequently taught, but I feel like there’s a lot of room for error – e.g. not coordinating moving the upper body with the spinning foot, or leaning forward and throwing off your balance when entering the spin.

Method 5: Starting from a forward spin

  1. Start your forward spin.
  2. Step onto your backspin foot and push with your new free foot, similarly to the push for a back outside edge.
  3. When finishing the push, turn your free foot open and lift it up into the backspin position.

This method can be easy since there’s rotating momentum from the forward spin, and it’s also good to practice this since it’s the basis for all other change foot spins.

Video (this is not a real demonstration)

Here’s a video, with the major proviso that and I’m obviously not a coach and there are still major problems with my backspin (like not raising my free leg enough, traveling, the checkout, etc). The video is more to display those methods, not demonstrate something to copy.

Happy skating!

There’s much negativity towards the concept of a routine – e.g. they’re rigid, boring, unremarkable. Sometimes I inquire about my friends’ routines, because otherwise no one bothers to describe their daily lives. It’s considered too dull to discuss, but I think it’s fascinating how it can be hard to imagine the details of the lives of even our  best friends!

I’ve come to relish my routine, and I crave it when it’s unavailable. It includes:

  • Programming
  • Going skating / some sort of skating-oriented exercise
  • Talking to Max
  • Talking to a group of close friends on facebook messenger
  • Attempting the NYTimes crossword
  • Writing (this month, at least)

Transitioning to a career in software was an important step for improving how I feel about my routine; at least, I’ve realized this in retrospect. When I worked in finance, I did all sorts of quirky activities to avoid admitting that most of my time was spent thinking about the stock market – I was the ultimate dilettante, weekend warrior, etc. Now, I don’t mind admitting that I spend most of my time asking computers to do things, or asking people how to ask computers to do things!

Savoring a routine depends on a belief that the routine helps us accomplish something we value. Partially this comes from an awareness of what doesn’t matter to us too. Last year I decided to give up watching movies entirely, because I noticed that no movie has ever changed my life. A few years ago I modified my wardrobe so I wear essentially the same thing every day, in different colors (I make exceptions for summer dresses).

One of my friends told me that annually, he considers how his life is going and makes decisions about what he should do regularly in the next period. Then he just does those things, without re-thinking those tasks too frequently. I think this sounds ideal, because it’s nice to combine deliberation with letting our habits drive us forward. In the end, our identities are unlikely to be the vacations we took or crazy things that happened to us, unless we fold those into what we do daily, weekly, routinely.

I started a new job last month, and so I’ve been using Java for the first time since 2009. When I saw stuff like this in the Stream documentation, I was pretty stumped:

The questions I had (along with the ever-insecure “Why did someone hire me knowing I don’t really know java?”):

  • What is ‘R’?
  • What is ‘T’?
  • Why ?’s ???

Some background on the documented function

A Stream is a sequence of multiple elements that you can iterate over and perform an operation on each one. This function,  flatMap , is used to take a stream, break each element into its own sub-stream using some Function , and then creates a new stream that combines all of the elements of the sub-streams. Function is a class that takes in an input, does something, and returns an output.

An example of using this function is the following (modified from the docs):

The Function  line -> Stream.of(line.split(" "))  takes a line and changes it into a stream of words. So


flatMap  takes this function and applies it to each stream of lines, and then combines the output into one large stream. So in the end, we get something like:

Type Parameters

This tutorial covers the mysterious letters.

The letters represent type parameters – this means that a class can do stuff with any type of object, and the results of functions can be related to that specified type of object. For example, ‘E’ means an element, which is used a lot in ArrayList. We have  Class ArrayList<E> , and the method  get(int index)  returns  E – this means that you can specify the type of object for your list, and then expect that anytime you retrieve an element from the list, you’ll get the specified type. E.g. ArrayList<String>  holds Strings, and when you call get(index) on it, you get a String back. That’s easy and reasonable!

R is also a type parameter

So from the tutorial, ‘T’ is a type, used to represent any class, interface, etc. ‘R’ isn’t mentioned in the type parameters tutorial; however, it represents a ‘result’ type and it tends to be defined when it shows up in the javadocs for any particular method. In the beginning Stream example, ‘R’ is defined as “The element type of the new stream.”


The question mark represents that the method expects a type that doesn’t have to be ‘T’ exactly, but is related to ‘T’.

So  ? super T means that the  Function used to flatten the stream must take in something that ‘T’ inherits from – this guarantees that the function will know how to operate on ‘T’, since the function is written to accept a superclass of ‘T’.

On the other hand,  ? extends Stream means that the output of the Function  must be a Stream  or a subclass of Stream, because the flatMap  function must be able to operate on it as though it were a Stream.

(Read more about the distinction between ? super T  and ? extends T  here)

The function definition from inside -> out

Stream<? extends R> – This means a Stream of elements that are of type R or subclasses of R.

? extends Stream<? extends R> – This means a class that extends a Stream of <R or subclasses of R> elements

Function<? super T,? extends Stream<? extends R>> mapper – This means the function has to take in <T’s or subclasses of T>, and map to an output a <Stream or subclass of Stream>

The function return type

<R> Stream<R> – The second part of this ( Stream<R> ) means the output of flatMap is a Stream  of the result type that’s output by the function we pass to flatMap . The first <R>  just indicates that ‘R’ represents a parameter, in that what you put into the function will determine what will be contained in your resulting  Stream .

The usage example

  1. The first line creates the Stream of lines on which we call flatMap.
  2. The second line actually uses flatMap. Here, we can see that:
    1. The function is  line -> Stream.of(line.split(" "))
      1. ? super T  = a String  (line)
      2. ? extends Stream<? extends R>>  = Stream<String> , because we get a stream of words from the function
      3. R  = a String , because words are String s
    2. So the return type of the function is Stream<String>

In conclusion…

The documentation for java is expansive, detailed, and overall easy to understand. This was an exception I found frustrating because it’s not the easiest to google (“What is T?”), and it happens to occur most commonly in classes and methods that are already confusing.

Let’s go to the beach! Are you all packed?

Wait, what is this? Flip flops? No, no. Sunglasses? Really, not cool. Swimsuit?? What are you thinking?

I considered the beach dumb until I moved to Oregon (and started visiting ‘the coast’ instead). I dislike east coast sand, the crowds, the noise, the resorts, and most of all, I hate how sexualized beaches are. Why is it acceptable to wear lingerie at the beach? Why is ‘beach body’ a term? And why is that one Sports Illustrated issue so famous? Blegh! It seems that because sexualization is a predominant marketing strategy, we’re pushed to consider too much of our lives through the paltry lens of “is this sexy or not sexy?”

That’s why the Oregon coast is cool. Literally, it’s 50s-60s year-round! Too cool and misty to warrant any wardrobe other than cozy layers with hoods. It’s instead a place to think about big, multi-dimensional things – the ocean! the mountains! Jellyfish, mushrooms, shipwrecks, clouds, moss. I love moss.

There are many superficial, narcissistic concerns that are easy to obsess over because someone (likely a greed-motivated someone) tells us they’re the most immediate and pressing – like our appearance or our possessions. It’s gratifying to instead open our concerns to grander, wilder experiences.

Oregon coast tangents:

  • All of Oregon’s 363 miles of coastline beach is public, which is a great idea and a nice political story.
  • Astoria in Oregon and Astoria in New York is named for the same guy, John Jacob Astor. The book Astoria narrates two treacherous missions to Oregon in the 1800s.

(Actually, Nanowrimo. But isn’t the idea of a nano rhino funny?)

Here’s a good exercise: Every time you’re tempted to say “I don’t have time to X,” consider changing it to “I haven’t prioritized X-ing in my life.” A friend mentioned it to me years ago, and it always evokes a string of strong responses for me – e.g. am I really so lazy that I haven’t prioritized X-ing? Would X-ing make me happy? Maybe it’s actually not so important to me, who’s to say I should be X-ing anyway?! Darned X-ers.

This exercise has freed me from many “shoulds” – like “I should be running” or “I should be playing music.” Occasionally I miss these things, but overall, I don’t, and that doesn’t make me terrible.

On the other hand, I often think about writing – I feel like I should be writing, and more importantly, I want to. So I’m going to prioritize it this coming month, which is fittingly Nanowrimo!

Instead of a novel, though (not my priority), I’m committing to a month-long blogging-directed practice with the following requirements:

  • I’ll spend 24 minutes writing unstructured drafts that could eventually be posts.
  • I’ll spend 24 minutes writing a short post that I’ll share publicly.

(24 minutes because I’ve been experimenting with 24 min pomodoros)

Hopefully this addresses my two main problems with writing:

  • I don’t set aside time to write, even though I claim to care about it.
  • My standard for what I’m willing to post publicly is too high and it inhibits my willingness to practice.

I plan to write about:

  • Programming, software, technology
  • Figure skating
  • Daily routines
  • Books I like