CNC Machine

December 14, 2011

Holy Christ, I haven’t posted on here in a while. The summer and fall quarter have flown past at pretty intimidating velocity and I’ve barely been able to keep pace; since my last post, I’ve worked at Facebook and Wheelz, secured and accepted an internship for next summer at Addepar which I’m very excited about, and taken two weeks off school to fly to Australia to race a solar car I helped build 3000km across the Australian outback.

My most recent project is a CNC router. My roommate and I decided fabricating PCBs is too slow / expensive. Etching is a pain, and CNC machines are cool. No further justification needed… We ended up buying a 7″x7″x2″ kit from Zen Toolworks which we’d been eyeing for a while. Building and wiring the thing was basically extreme IKEA involving an instruction manual written in somewhat comical English. The designers of the control board made the questionable decision of using a parallel interface, and the software that came with it, Mach 3, has a GUI that looks like the font was made by using a JPG for every character. Nevertheless, we succeeded in getting the system to work as a CNC.


For milling boards, we found V-shaped bits much better-suited for the purpose than very fine normal endmills; we were able to mill traces with 0.4mm clearance (15 mil) by setting the mill depth 0.02″ below the board surface. Our strategy to zero the Z axis was to lower the bit to near the surface of the board then loosen it and let it drop onto the surface.

Normal endmill (left), V-shaped bit (right)

We determined (destructively) that the fastest feed rate with the spindle powered directly off a 12V battery (we’re still working on a spindle control board to run it off ~35V, more on that later) is 2″/min.

Spindle Control Board

The CNC spindle board that came with the kit was pretty awful. It has Chinese characters all over it which made it challenging to use (every screw terminal is labelled with the character for ‘electricity’…) and frequently turns off for no apparent reason. The rocker switch they used also has 0.25Ω contact resistance (…)

So we decided to make our own, and create it using our CNC router! I got to work and designed a simple 555 adjustable duty cycle PWM circuit based on this topology, switching the motor low-side. The first rev turned out pretty reasonably fabrication-wise:

Unfortunately I failed and made a primary school mistake, completely forgetting about protection; no diode across the motor, no diode across the FET, no TVS across the power rails… So we made rev 2, with SMC size protection diodes and a truly beastly 2220 22uF ceramic cap across the motor. I don’t know what we were thinking, but it must have been along the lines of ‘better safe than sorry.’ Either that or ‘epic overkill makes us look cool.’

The 2-pin connector goes off to the motor

The cap used to be a 2220 surface mount cap. It broke in half when we desoldered it...

We had some very interesting results. The FET’s drain voltage appeared superficially much like half-wave rectified sinusoidal AC (which would’ve been nonsensical), but on closer inspection and analysis it turned out to be basically ring on a massive scale (at more or less PWM frequency of ~1KHz) about a voltage somewhere between 0V and Vcc. Examining the original spindle board that came with the kit, we saw exactly the same thing happening, but at a much higher frequency and with significant damping. After changing our cap to something more reasonable (10nF) we saw exactly the same thing on our board, though we can’t reproduce our observations in SPICE simulations, modelling the motor as an inductor. The ring is centred on a voltage between 0V and Vcc that changes depending on PWM duty cycle. We’re still trying to work out what’s going on but hey, it works :)

FET's drain voltaged referenced to 0V. 10V/div.


Altium → pcb2gcode → python scripts → g-code → Mach 3 → PCB!

I wrote a bunch of python scripts to treat g-code that pcb2gcode produces. It rectifies unnecessarily large global X and Y offsets that centres the board a couple of board lengths away from zero, which on a 7″x7″x2″ CNC is quite a lot. It also produces a limits g-code file that drills four holes that denote the outer limits of the board, which helps a lot with positioning. To this end I ended up producing a little python g-code library to write g-code to do simple 2-D specific tasks such as ‘mill from (x1, y1) to (x2, y2)’ and ‘drill hole at (x, y)’ etc.


pcb2gcode lets you specify an offset parameter which determines how far away the toolpath goes from the edge of the trace. If you set this really big, pcb2gcode just gives you the path that comes closest to meeting the requirement, and the results are pretty cool; the board is electrically equivalent to the one in the gerber file.

Casualties so far

’nuff said. We’re novices, and breaking bits on this is better than breaking expensive bits with the Matsuura we have at the solar car shop. Small price to pay for a process that can take idea to a first rev in under a day.

Next Steps

Our plan is to design a new control board that communicates over serial and can control spindle speed. We’ll probably also write some code to read g-code and interface with it, completely replacing Mach 3. Watch this space; it’s about to be filled with fun toys!



March 15, 2011

This quarter has been utterly insane.

My interest in entrepreneurship, along with my job search, has made 2011 by far the most epic year of my life, and it’s only March. I will never regret my choice of Stanford. I co-founded Dormlink, met the founders of Courserank and Palantir, and had coffee with the founder of BASES, the largest student organisation at Stanford. I’ve also learnt to snowboard, discovered club (and/or partner) juggling and somewhat reinvented my life philosophy (1, 2).

One of the main features of this quarter has been my search for an internship, an exciting but laborious and crushing experience which has been haunting me since October 2010. It hasn’t been easy, especially as a freshman: I applied to over forty companies (from Lockheed Martin and Boeing to Google and Facebook to startups like Addepar). I was completely ignored by about thirty of them and turned down by something like five. I had nineteen scheduled interviews including one on-site interview and two in which the interviewer didn’t call (by the end I felt really bad for my roommate having kicked him out of the room so many times). I got turned down for reasons ranging from poor programming form to lack of experience with Javascript. There were several occasions on which I completely lost hope and I now agree with one of my best friends here that hope is never a positive emotion (and to some extent sympathise with Kierkegaard’s ideas about resignation). I guess that’s what happens when you get your hopes repeatedly elevated then dashed against the rocks by an interviewer forgetting to call you. In hindsight I went through a fairly major (by my standards at least) existential crisis and came out the other side with a reformed philosophy based on perspective and a happy-go-lucky mentality. I’d like to thank my closest friends–you know who you are–for being there for me when I was feeling down and helping me through it.

But I learnt from every dead end, requesting feedback and looking up the things I didn’t know afterwards, and ultimately ended up with several offers: Google Associate Technology Manager, Facebook Software Engineer, Addepar (a truly awesome startup created by a co-founder of Palantir) Software Engineer and Ning Software Engineer. A man can be destroyed but not defeated.

So the hard question was which one to go for. I ultimately chose Facebook. I didn’t really have a particularly rational reason for this, but the closest I could get was:
1. I plan to work on the Stanford Solar Car this summer and Facebook is right next to campus
2. The sheer impact I’d be having on the world at Facebook is ridiculous. The user to engineer ratio is something like 1.2M and I’ll be pushing code to 600M people within weeks of starting. This definitely satisfies my epicness criterion.

Throughout all this I’ve become increasingly disillusioned by Google. The more I read about the company, the more I realise that it’s no longer the promised land. It’s become too big and has no choice but to give in to shareholders who are in it just for the business, and whenever engineers cede power to businessmen, bad things happen. Software engineers (and even chefs!) leave for other companies and startups like Facebook (the usual reasons cited are better pay and bigger impact). The recruitment process is revealingly slow, indicative of bureaucracy – to illustrate, I’ve included an approximate chronology (see below). The Google process took almost half a year.

Everything culminated today, Mar 14 (Pi day). I called up the recruiter at Facebook, cycled over and signed the documents. This summer is going to be amazing.


Oct 2010 – Submitted application via website for their Software Engineer summer internship

Nov 2010 – Received email saying they want to interview me for an Associate Technology Manager internship.

Dec 2010 – Interview #1. Went terribly.

Jan 2011 – Still no response. Sent follow-up email. Received an email saying they want to go through to a second interview. The recruiter called to give me some advice (Google Voice dropped the call half way through). Interview #2 was scheduled but they didn’t call. I scheduled another interview.

Feb 2011 – Interview #2. Went OK, not brilliantly. Asked some business (i.e. not technical) questions which really threw me.

Mar 2011 – Received email saying I passed the interviews and they’re trying to match me with a project. They sent me an acceptance email soon after.


Feb 2011 – Applied via the CDC Website. Interview #1 and #2 on Mon and Fri of the same week. Quote of interview #2: “[tersely] Doesn’t work. Try ‘[some input]’. Oh wait. [pause] Actually, I think it works.” At the end I asked my interviewer what the next stages are. He said he’ll submit feedback and “to be honest it’s going to be very positive” – AWESOMEZORZ!!!!!!111one. At the end I asked him facetiously about The Social Network. He said Zuckerberg is really a normal guy, the film is completely factually incorrect, but it’s cool that there’s a film about his company :) Days later I was accepted. They called me to tell me about the offer.

Mar 2011 – Intern Day. Went to Facebook HQ (a 5 min bike ride from the Stanford campus). Very cool. A few weeks later I accepted the offer.


Feb 2011 – A friend suggested I apply. I sent the CEO my resume + cover letter. Interview #1 and #2 happened. I also had lunch with the team at the HQ in Mountain View. They showed me the product and I got to know the team. I’m really excited about this – I think it’s going to be really big. I emailed them saying I have an offer from Facebook and that I will probably not be doing their on-site interview. They emailed back and persuaded me to do the on-site anyways.

Mar 2011 – Addepar on-site. Got interviewed in turn by several of their engineers. Got accepted.


Feb 2011 – Two interviews. A couple of weeks later, within the same 5 minutes, I got an acceptance email from Ning and a rejection email from Dropbox. Ning called, telling me about their programme.


March 8, 2011

I wrote a bit last time on procrastination. I’m going through a weird phase of change in which my philosophy is evolving rapidly and my general priorities are shifting. I’m pretty sure (well I hope at least) it’s all going in a good direction, but here’s where I am now.

Stanford Solar Car Project

Unashamedly stolen from the SSCP website. Click to go there.

In fall quarter 2011, the Stanford Solar Car team is going to Australia – we’re going to race our car across the Australian outback over the course of about 5 days. The race is awkwardly smack bang in the middle of the quarter, which means skipping either the quarter or two fairly critical weeks. At first I was very much against the idea (going overkill on units, getting high grades, blah blah blah), but now I’m thinking very seriously about doing it. In essence, the two main competing priorities here are academic success and epicness, and in my new view of the world, epicness is high up on the list.

In fact, I think that’s how things should be, certainly for myself: my job satisfaction / utility function has large positive partial derivatives wrt epicness at every value of every other parameter. In the words of one of the Solar Car team guys, ‘it’s either going to be epic win or epic fail. But either way it’s going to be supremely epic’. It seems that utility generally has to do with wealth, power and emotional stability, and I think epicness will somehow find a way of satisfying all of the above. Plus epicness is good for street cred (and the resume…)


February 28, 2011

I think I spent about a week on the last IHUM essay I wrote. I churned out a first draft the day after it was set and got about four people to proofread it, including friends, the HWC people and my PWR professor. I submitted it, waited, and got it back. The result surprised me. I know it’s taken me a while, but I think I’ve finally managed to convince myself something that I’ve been repeating inside my head like a mantra since NSO: ‘college is not about academics.’

Those who know me well will agree that I’m very much on the academic side. At school, I used to be more than willing to forgo social activities for academic opportunities and even just front-loading homework to a ludicrous extent by doing it in the common room the day it was set rather than at home that night. I’m something of a perfectionist: the day I got into my head the notion that academic success is more important than anything else, I pursued it obsessively and with abandon.

There are lots of fairly obvious issues with this mentality. The problem is, however, that there are simply so many people at Stanford (and indeed Harvard, MIT, Cambridge, Oxford and all the top universities in the world) who have adopted it and, like I did, obstinately cling to it. It’s not their fault. Chances are they even recognise it as a problem and consciously attempt to take steps to mitigate it. But it’s difficult to let go of the mentality that not getting an A is not OK. I know, I’ve been there. Here’s my two cents.

The problem with frontloading work is that it is inevitable that you end up spending more time on it. My idea was to start and finish work quickly to get it out of the way so I can enjoy life later. That has never happened. No essay will ever be perfect, and there will always be something more to do. And of course, like everything else, work follows the principle of diminishing returns: the more you work on an assignment, the lower the marginal utility. So frontloading and obsessive perfectionism results in spending a huge amount of time working on something with very low return!

A solution would be to leave working on assignments until later: procrastination. Epic night-before-due-date procrastination clearly won’t do, but I do think that something like last-minute panic, if handled well, is a healthy way to work. If you’re doing problem sets the day before they’re due and doing fine, it means you’ve handled your schedule well. It means you haven’t wasted time unproductively performing the inexorable and infinite act of editing and revising, and have instead done something more useful. Like meeting people, or having discussions about things you’re passionate about, or turning friends into really good friends, or getting an internship. It’s somewhat analogous to the President passing new laws – if he makes it by the skin of his teeth it means he’s making the most assertive demand he can from congress, whereas if he wins the vote by an avalanche it means he isn’t making a strong enough demand.

Speaking of meeting people, I think that’s definitely one of the most important aspects of college. It seems most people make their best lifelong friends at college. It’s a unique opportunity to meet an amazing group of people who’ve been selected simply because they make an amazing group of people, not because they happen to have the right skills the company is looking for or because they happen to share an interest in some activity. Unless it’s a group project, school work is inherently an unsocial thing, and deprives you of the opportunity to meet this amazing group of people. Most students will be working pretty much solidly for the rest of their lives. There are plenty of opportunities to work. But there are few opportunities to really get to know people of such calibre in life, and it’s a pity to pass up this opportunity for something as mundane as getting an A in a class.

I guess it’s really all about perspective. One of my friends was determinedly writing an obscenely long and unnecessarily detailed response to a question for a 1-unit credit / no credit class, yet couldn’t come up with a response when I asked him what he’s getting out of it. I think asking yourself that question from time to time really does help to put things in perspective, and I plan to use it a lot in the next few weeks/months/years. Life is about achieving your dreams. Getting an A in a class that every freshman is forced to take hasn’t helped anyone I know achieve their dreams.

So what am I saying? I don’t know. I guess I’m saying academics really aren’t that important. It’s a bold statement to make, but it’s far too easy to get caught up in the obsession with grades and GPA. In the real world, NOBODY CARES; the real world cares about personality and skills. It’s much better to have a below-average GPA but have an amazing set of loyal friends and supportive and incredible contacts than have a GPA of 4.3 and miss out on the quintessential college experience and forgo opportunities only college can provide.

Anyways. It’s past 2am. Time to write this essay.

Dormlink: One-window dorm bonding and coordination

February 7, 2011

Since November, I’ve been working on Dormlink, a social network for dorms that enables residents to connect in a more useful and private way than any other social networking site does. Alex and I came up with the idea while trying to find a good solution for dorm websites (in a somewhat reminiscent fashion to how Firefly Solutions began). Its primary strength lies in its dorm-centric-ness (yes, that’s a word), making people feel more comfortable to share and open up than on (for example) Facebook. So far we’ve applied to the BASES 150k challenge and sought the counsel of some really awesome people. If this gets big, Dormlink will be my first start-up. That’s a somewhat scary thought.

For the techies, it was written in PHP/MySQL and made use of jQuery and the Google Maps API.

Check it out! So far we’ve only released it to two dorms at Stanford, but you can sign in on the demo account to see what it’s like on the inside.

I don’t have too much time now to do an in-depth blog post on it, so here’s a feature list (some items are yet to be implemented).


RAs often create forms and surveys online and try to get people to fill them in. The current mechanism for getting responses involves simply repeatedly spamming everyone via the mailing list. The surveys aren’t aggregated anywhere so residents tend to lose track of them and there’s no easy way to find out who hasn’t filled in a form.

We solve this with our ‘corkboard’ feature, an integrated mailing list that combines the best of both Facebook groups and email lists, builds upon it. Here, you can sharem comment on and ‘like’ text, pictures and links. With surveys and forms, when an RA links to a SurveyMonkey form (for example), each resident will get that added to their list of surveys to complete and tick off items as they’re completed. The survey poster can then get a list of people who haven’t filled out the form.


You can get a list of residents of your dorm. Further, when you register, you enter your room number and you and your roommate get your own webpage. On this page there is a whiteboard on which other people can doodle.

You can also add your classes and major to your profile and find people with whom you share classes and majors. You can then contact the entire group to (for example) arrange a study session.


The stuff page is where you can post things you want to sell / lend to others within your dorm. Since the only people with whom you are allowed to interact are people in your dorm, you save yourself having to go into commercial transactions with strangers.


Dormlink has Google Calendar integration so if your dorm has a calendar, you can add it to Dormlink.


You can share places of interest with other people in your dorm on an interactive map. I stayed up till 3am implementing this, learning the Google Maps API on the fly.


We’re considering renaming this to ‘workspaces.’ Here, you can create your own social workspace based on a theme of your choice. This is probably best explained through our archetypal example of dreams: you create a project called ‘dreams’ and post in the description something like ‘post your most interesting dreams.’ People can post, comment and vote on dreams, then sort the entries by popularity to get a list of the top ten dreams of all time. We’re considering extending the functionality of this to other things to enable collaborative workspaces, notes sharing and elections.

That really wasn’t that brief; I should stop doing this whole obsessive writing thing… Oh well, definitely check it out – and watch this space!

Oh yeah, the Stanford Daily also ran an article on it which was pretty awesome. It’s the first result on Google for ‘granola bar stanford daily’ :P

First Quarter at Stanford

January 2, 2011

Wow, that went fast. And the December break went faster. I feel like I’ve changed, though can’t quite pin down how; I think I’ve become less cynical, more trusting and more amenable to helping others (I’m looking at you, CS 106A people). The parting advice of one of my best friends back in dear ole England was ‘enjoy Northern California, but leave before it makes you too soft;’ spoilt by the glorious weather, the friendliness of the locals, and relative—though somewhat unrealistic—safety of the immediate neighbourhood, I certainly acknowledge the validity of his concern and the possibility that I am indeed becoming soft and should do something about it … though I do love it here.

In my first quarter at Stanford I pulled a single all-nighter: after my last final (physics), I spent the entire night in a neighbouring dorm, drawn by the promise of eggnog (which until then I had yet to sample) and conversation (an activity regrettably unavailable at frat parties and the like). We watched Brazil, a seriously whacky film from the ‘80’s, and watched the sunrise over Wilbur Field, saluting every car as it entered the underground car park. We subsequently had breakfast as soon as the dining hall opened at 7:30 then went to bed. Enjoy the little things: spontaneous whimsical expeditions make college life, and that unplanned outing constitutes one of the happiest memories I’ll take with me from the quarter.

By virtuous fortune, I was invited to stay at the house of one of my friends in Saratoga over the December break; thanks – you know who you are :). Last week, we travelled to LA, which is half a day’s drive with breaks (nominally 6 hours) from Saratoga (which is itself half an hour’s drive SE of Stanford), to visit my host’s relatives. Spanish is the unofficial language of the City of Angels, and is widely spoken to the extent that the occasional sign can be observed in shop doors reading ‘we speak English’. As a side note, I was lucky enough to watch a screening of Tron Legacy (2010) in ‘El Capitan,’ which completely blew my mind; all the hype about the CG is just true. It’s amazing. Anyways, in the past month or so, it’s safe to say that I’ve learnt more about American culture than I have during my entire first quarter. Amongst other revelations, the following facts have transpired:

1. Americans do Christmas, and they do it big. Seriously. BIG. Gift opening required a 10-minute break for drinks and ended at 1am.
2. There is no such thing as transport that doesn’t involve a V8 engine, 4-wheel drive and a hunk of metal capable of parting the Red Sea by charging at it.
3. Traffic jams make the M25 during rush hour look like the queue for an ice cream van … in Siberia … at midnight.
4. Hispanics find the Madrid accent that I was taught extraordinarily comical.
5. Westfield Shopping Centre is just another mall, but built about five time zones too far East.
6. The rest of America has Wal-Mart. Silicon Valley has Fry’s. This is another way of saying that I’m currently living in heaven.
7. Acronyms. Lots. But especially at Stanford.
8. Cheap unhealthy food. EVERYWAH. Even in California.

Christmas Lights

Christmas Tree

So basically, last quarter went well. Really well, in fact – I even managed not to fail IHUM (‘Introduction to Humanities’ – a compulsory course). Speaking of which, despite my continual complaints, I think I actually got something out of it. I got a book for Christmas which referenced Nietzsche, Kierkegaard and Plato, and I’ve used and referenced the philosophies and ideas elucidated by the authors of the works we studied in (semi-)casual conversation (get me…) But most of all, despite my uncompromising scepticism, the course really has taught me to think, to question and to doubt. I guess it really did teach me something about (ironically) scepticism in the ‘dubitando ad veritatem pervenimus’ sense; I often used to make relatively unfounded and poorly defensible claims which in hindsight must have made me look unnecessarily stupid, whereas I think I am now capable of catching myself in the act and desisting … though whether I manage to put to effect my newfound skills is yet to be determined.

Next quarter I get to do more IHUM (yay…) and PWR, a compulsory writing class. Being renowned for being a stickler and pedant in the realms of grammar and writing style (despite being myself woefully inadequate and inconsistent in those areas), I chose the PWR course entitled ‘Proper English’ which uses ‘Elements of Style’ as a textbook – I think that’ll be fun, and certainly useful. Needless to say, I’m doing more physics and maths. The SSCP (Solar Car Project) and a couple of web programming endeavours will continue, as will my so far fruitless quest for an internship and research opportunities. But a man can be defeated but not broken, and it is with this attitude lifted unashamedly from Hemingway’s ‘Geriatric and the Fish’ that I intend to tackle the next eleven weeks. Bring it, Winter Quarter, let’s see what you’ve got!

Oh and incidentally … happy new year!

We also visited Caltech

Stanford Solar Car Project

October 6, 2010

Since my last post a couple more things have happened that are pretty cool. Actually a lot of things happened, like becoming a photographer for the Stanford Daily, applying to join BASES (an entrepreneur group with a budget of half a million frickin’ dollars) and making arrangements to discuss my choice of major and undergraduate research opportunities with one of the 1996 Nobel laureates (!) but I don’t have the energy to write about it all… So I’ll do a brief keyboard mash about the SSCP.

The Stanford Solar Car Project (SSCP) is pretty much what it sounds like. It’s undergrads only (i.e. no professors involved) and we build a car that runs on solar power and race it across Australia at the World Solar Challenge. It’s one of the first things I got stuck into, and even before starting any real work on the project, I’ve learnt a huge amount, just by being in a proper workshop with tools and working with genuinely decent equipment (as one of my friends once put it, tools become beautiful once 4th formers [read: 13 year olds] aren’t allowed to use them). I’ve used a soldering iron that works using ‘pure physics’ (as Nathan put it) – it’s simply awesome: RF AC gets pumped through the iron and due to the skin effect, all the current flows through the tip, heating it up; I’ve learnt to solder surface mount ICs efficiently (it actually only takes a couple of minutes to do each one); I’ve used a battery welder in which the current is so high that it’s measured in kiloamps and the cables jump due to the massive B-fields when making the weld; and I’ve learnt to weld and use a mill.

Probably the most exciting thing is the amount of influence a mere freshman with little experience like me is allowed to exert. Before I proceed, I need to say a little about DC to put it all in perspective. DC is the head of the software team, and he is legendary. Apparently he did CS 140 and got a girlfriend in the same quarter. Descriptions of his physical feats reminded me of Alcibiades’ description of Socrates – he apparently did a 10 mile mountain hike in flip flops—one of which was broken—without complaining and managed to fall asleep on asphalt in the middle of the desert with people shouting and engines running all around. DC’s programming ability appears to be revered within the team … and that’s coming from people whose skill sets include welding their names in cursive handwriting on 1” iron bars and solder surface mount ICs on flying leads … without a breakout board … in 20 minutes. So when I suggested a method of wiring the solar panels and his response was along the lines of ‘we’ve never thought of that before, we might implement that’, and subsequently let it be my call how to implement an entire software project, I was … a tad surprised.

As a sidenote, I think the best quotation to date on the SSCP has to be ‘Everything seems to be working except the ON/OFF switch’ (!)

P.S. List of non-American expressions that I use

I’m compiling a directory of these; supposedly Americans don’t use the following vocabulary / idioms:

‘Take the piss out of’ ≈ ‘to make fun of’
‘Bollocks’ ≈ ‘oh crap’
‘Lie in’ [n.] = ‘sleep in’
‘Half eight’ := 08:30
‘Query’ [n.] ≈ ‘question’
‘To get done for doing something’ = ‘to get caught by the authorities for doing something’
‘Shotgun’ (I extend its usage to just about anything; equivalent to claiming dibs on something)
‘Posh’ [adj.] ≈ ‘classy’ / ‘fashionable’

It’s through the use of some of these that I’ve managed to provoke several ‘oh you British people’ from my roommate…

P.P.S. How to like Stanford

This algorithm seems to work for me:

1. Find some random freshman
2. Talk to him/her
3. Be surprised

I could elaborate, but the fact is that Professor Harry Elam really wasn’t kidding when he declared at convocation that every single person is here for a reason; everyone I’ve met, without exception, is simply amazing.

EDIT: It still hasn’t rained yet