I have been in Mountain View, CA for 2 weeks now. The internship at Google has been going well. The basic time line has been as follows:
- I arrived in Mountain View on May 31st.
- My first day at Google was Jun 2nd.
- They did “on-boarding” for most of that week. Which was kinda painful at times, but I did learn a lot about how Google works.
- On Friday I finally got a chance to start to do a little real work and I started to figure out what project I would be doing. More on that below.
- The next week (last week) I had only one class I had to attend so I finally started to get real amounts of work done.
I’ve been meeting lots of good people both at Google and from my housemate Dave’s social group. There are board games every Tuesday night and dinner and movies every Saturday, so I have not been suffering from lack of socialization which has been nice (it keeps Arthur from getting even more crazy). Yesterday I went on a hike with a bunch of Google interns. It was fun though the group was a bit too big and for some reason everyone wanted to walk really fast, so I ended up at the very back keeping track of the stragglers and taking pictures. The stragglers where actually a really fun group of people it turned out.
The hike was to the beach at Reyes Point (click the link to see a map of our route). It was a really nice hike (though longer than I expected). I got some good pictures and even a couple panoramas. I also met several really good people and chatted about all sort of nerdy things (these are Google interns after all).
My Google project is related to type checking Python code. I probably shouldn’t go into too much detail online since I don’t know what is secret and what isn’t, but I know I can tell you about the code that is open-source already. I have been working with PyTypeDecl and a metacyclic Python bytecode interpreter called Byterun. It’s been quite interesting and I think the I will be proud of the results.
So overall California is treating me well. Tomorrow I will be back to work and trying to push forward with my plan of action. And trying not to eat too many snacks. Oh, that reminds me. As some of you I’m sure know, Google has free food all over the place. They have cafes all over campus that are all free (for Googlers), and they actually produce very good food. I mean not everything is great, but it’s better than most of the $5 lunches I could get around UT. Also they have kitchenettes on each floor which have a lot of snacks and tea and stuff like that. I guess their theory is a well fed programmer is a productive programmer. I don’t mind being pampered a bit, but the chocolate they have is good enough to be really dangerous. ;-)
Posted in Grad School
, Life (other than code)
, Programming Theory
I’m in the airport waiting to leave on my trip to Japan. I’m insanely early, but it seems to be one of those things where if you get there early everything goes fast, but if you are running late you get later. So I am over 2 hours early for my flight.
I am on my way to Kobe, Japan for FLOPS 2012. I will be traveling for roughly 24 hours: 2.5 hours to LAX, 11 hours to Tokyo, and finally 6 hours on a train to Kobe. That doesn’t add up to 24 hours, but there will be time in custom and things and I’m not sure how I estimated it in the first place. Maybe it will be less.
I will spend 3 days in Kobe and then head up to Tokyo to visit Marty for 2 days and then back down to Nagoya for another conference (WFLP) for my last day and then back up to Tokyo for my last day. It’s going to be quite a trip with lots of time on trains, but I’m kind of excited about the trains so that’s OK.
I have a JR pass (similar to the Eurail Pass) for 7 days (it just hit me yesterday that I will be in Japan for 8 days, so I guess that last trip up to Tokyo will be in addition to the JR rail pass cost). The JR pass does not cover Nozomi (the fastest of the Shinkansen, “bullet trains”) but all of the Shinkansen are fast which should be fun.
I am presenting a paper at both conferences. At FLOPS it is a paper I co-authored with my adviser (Sergio Antoy). At WFLP it is a Work-in-Progress extended abstract that I wrote my self based on a class project I did last fall. I’m excited about both, but slightly more so about WFLP because I am the sole author and because I’ve been working with the subject of the FLOPS paper way too much because it is also the subject of my thesis.
In other news, I passed my thesis defense earlier this month and I submitted the final version of my thesis yesterday. So I’m finally done with that and I will be graduating in June with my Master of Science in Computer Science. This is pretty exciting to me. ;-)
In my last post I mentioned the camera I was eyeing. I did get it and I’m pretty darn happy with it. You can see some pictures at my google plus album. I’m thinking about starting to use flicker or something like that for better photo sharing.
Anyway, wish me luck in Japan. It should be exciting. Sadly, I’d really rather have sleep right now, not excitement (and not just because it’s 5:30am). I am looking forward to getting back from Japan and getting some real rest. It has been a really intense term.
Posted in Grad School
, Life (other than code)
So it’s been a while since I posted and, just in case there in anyone who reads this who I don’t regularly talk to, I thought I’d give an update.
I have decided (3 weeks ago) to go to Austin for my PhD. I’m scared but it’s the right choice academically. I will definitely lose something, since I have a several very good friends here in Portland. But who knows maybe I will be able to come back someday. I do like it here.
Regardless, it is decided. So in Aug I will be moving across the country again. Not quite as far as last time, but it’s still a ways. I’ve been thinking about logistics: I will either ship things (FedEx) or drive a mini-van or similar. I’ve already started making some contacts in Austin and I will probably visit there in July before I move. There are a couple reasons. One is that it will allow me to get an apartment. The other is that there are some people at UT that would like to talk to me before the semester starts, including a student who is leaving and I will be continuing their work to some extent (probably, nothing is set about what I will do and there are a lot of options).
Also I submitted my Master’s thesis to my committee. I will be defending it on May 10th (if you are in Portland you would be welcome to come to the defense just email me and ask for location and time), so I still have a lot of work to do to prepare for that and once that is done I need to prepare for my presentations in Japan (see below), so I’m still quite busy but I’m relieved to have the thesis out of my hands for at least the moment. I will still have to do another revision after the defense.
In other news, I’m going to Japan for a week in late May. I have a paper in FLOPS (First author is Sergio Antoy) and will probably have an extended abstract in the WFLP Work-in-Progress session. I will also have 3 days to be a tourist. I have a 7-day Japan Rail Pass, so I will be able to run around Japan in most of the trains. It will be pretty exciting, but also scary. I still have logistics to work out.
I’m planning on buy a semi-fancy camera for the trip and because I like to take pictures of things currently I plan on getting the Sony Alpha NEX-5N. I will be buying it very soon, probably today, so that I have it for my trip.
Also my websites got hacked a while back and I didn’t even notice. Grr. I feel like an idiot. I have now fixed everything and upgraded everything. I am 99% sure there are no lingering backdoors. :-/ I’m going to set up some monitoring scripts, so I will get notified immediately if it happens again.
Posted in Grad School
, Life (other than code)
Austin is a nice town. It sees it self as a liberal mecca and in many ways it is. However I get an odd feeling that there may be a bit more don’t ask, don’t tell type attitude about things, meaning that although it is “accepted” people don’t openly talk about some thing. I don’t know if this is true, but I got an odd sense of that. That being said it is a really nice place. Lots of sun and nice weather some nice big parks inside the city. Also it’s a university town in many ways because although the student population is not a huge percentage of the overall population the city grew up around UT Austin in many ways.
Like I said in my last post none of this should be taken as factual information about anything especially UT Austin. It’s just my sense from spending 3 days in an around the campus.
- Nice city. Feels a bit more like home than Philly. But in other ways I would prefer to be in philly.
- Seems like a more connected department in the sense that faculty and students have more casual relationships. There would be some ability to walk into peoples offices and talk to them. It’s not PDX but it’s closer than UPenn I think.
- The visit was a little more calm.
- I really like Orc, however i don’t know how much real interest there is in doing a higher-performance implementation or even if it would be a good idea.
- J. Misra is a very nice guy.
- I find the work of Don Batory on code “synthesis” very interesting.
- I feel like my work is at the intersection of more peoples interests and skillsets than at UPenn.
- However there does not seem to be much type theory here.
- Unless you get outside funding you have to TA to maintain funding. This can be quite a lot of work in some cases. However I do want teaching experience. However it can really cut into research time.
- Like UPenn the faculty doesn’t seem to be willing to come in on the weekend even for the prospective students.
- I could get involved in the Orc work directly and I could probably get publications out of that. It would be a lot work but that’s the way of publication.
- Very few department clubs oddly enough. But there are lots of clubs on the rest of campus.
- City is quite bikable. There are several grad students who ride everywhere. Not as good as portland but still nice.
- Very strict police force in terms of enforcing traffic laws for bikes.
- People love this place. However I’m a bit worried about finding actually like minded people. I’m sure they are there, but it may take a bit of searching.
- Food is reasonably priced but a bit on the high end.
- Housing is fairly cheap if I am willing to ride a few miles or have a share.
- I really don’t know anyone in Austin.
- An hour out of town you can get some nice astronomical seeing.
- 4mo sunny days per year.
- It seems that fire dancing is legal in the parks with a permit!
At this point I am leaning heavily toward UT Austin. However I’m not very happy with that. It will be very lonely to move to another city where I know no one. If I went to Philly I could visit all my old friends in NYC and that would be really nice; I miss them. However I think as far as being able to follow the research direction I want and enjoying my degree I think Austin is better.
It has also hit me how much I will miss Portland. In theory I could stay at Portland State and get my PhD here. It would be faster for one thing (since I could roll my Master’s work over into the first requirements for the PhD). However Portland State is not well rated or well known, and although I believe it is a good school (although there is no one here whose interests line up perfectly with mine, but that will be true to one degree or another anywhere) I have been told by many people that school reputation matters and this makes sense. When someone has a bunch of applications on their desk they need a way to make a first cut and where you got your PhD is one of them. However other people have said that publications are more important. Honestly I don’t know who to believe. The only thing I know for sure is that having a PhD from a prestigious university like UPenn or UTAustin would be nothing put positive even if it isn’t the only important thing.
So I am faced with a choice of school something like this:
- Portland State: Very fun and nice department with many smart people though no one exactly in my field. But not prestigious so I would probably have to work harder to get a job once I graduate. I have good friends here.
- UPenn: Less fun department but with lots of smart, nice people however again no one exactly in my field. However it is the most prestigious program of the three so I would probably have an easier time getting jobs. I know 1 or 2 people in Philly and I know a lot of people in NYC and I could visit them which would be so nice.
- UTAustin: Middle of the road department in terms of fun; intense but open and seems to enjoy itself. There are several people in the department working on what I am interested in so I would not be working on a secondary research project. This is a very close second to UPenn in prestige so either would be a good bet as far as getting jobs. I know almost no one in Austin or anywhere near by. I’m sure I could make friends but it is very lonely to move to a new place and not know anyone.
The issue about prestige bothers me a lot. As I said I have been told different things by different people and I don’t know who to believe. In the end I am going to have to just choose one and no matter which I choose I will have lost some things and gained others. That is the thing that hurts the most for me is that I cannot “just follow my heart” since no matter where I go I will have lost some opportunity I care about.
However there is one thing I am very happy about. I don’t have to travel again for mouths. Being gone to another state for two weekends in a row was really exhausting. It’s nice to be home, so I can try to get caught up on things. Speaking of which I need to get my thesis committee setup. My stress level is high enough that I have been running a mild headache for a week. Life is not fun at the moment.
PS: Again, if you have any comments on either of these schools or towns or recommendations or random thoughts on the subject tell me. I’m looking for all the input I can get.
Posted in Grad School
, Life (other than code)
Last weekend I visited UPenn. Philly is a nicer town than I expected. And UPenn is a very nice school. Here is some notes I took on Fri night after spending the day meeting with people at the school. These are of course only my person opinions based on spending a day and a half meeting people and wandering the city. None of this should be taken as factual information about UPenn.
- Lots of people doing interesting work.
- A very busy department. Some competition for time between students and other responsibilities.
- Very nice people; both faculty and students.
- If I followed the Lolliproc path I would be working on a secondary project which could make publication a bit more work. However Steve Zdancewic seems interested and I think i could do it without too much trouble.
- Andre DeHon‘s work on streaming data processors also seems interesting. However I think that would need to be a secondary relationship because I don’t know it I would be happy doing just architecture.
- Stephanie Weirich‘s work on dependently typed languages like trellis could be very interesting. I don’t know if they are looking to implement yet or not. It is not at all parallelism oriented. Also some people think trillis is just taking the wrong approach to the problem, so it might turn out to be a dead end.
- Lot’s of type theory skill.
- A big focus on security and program correctness. Which I really don’t care about since I want to develop new languages.
- Department takes itself very seriously. Which is good and bad.
- Could be a very stressful school. However the actual hours per day expectation seems reasonable (very high some weeks however flexible so other weeks you can catch up on sleep). So it’s a full time job + overtime.
- Very active PL group. So I would learn lots of interesting things on any PL-related subject.
- Also there is interesting architecture work, so maybe I could actually start to merge those threads but I don’t know.
- Split culture the students and the faculty are not on a level and have seperate “living spaces”. That being said it is a first name department and there are club meeting once a week where students and faculty hang out and talk about various things.
- They never gave us a break on Fri. It was a really intense day and they didn’t seem to think anything of it.
- Everything was scheduled for Fri instead of Sat. One of the students mentioned that this was because the faculty didn’t like to come in on weekends. This does not seem reasonable to me since this is a open house and the faculty should be all in. I worry that this means that the faculty don’t feel like they need to do anything inconvenient to make the department work. That could make it hard to finish a thesis if my adviser refused to go out of his/her way to help me when that was needed.
- Reasonably lax graduation requirements.
- Would probably still take me 4-5 years.
- Nice funding policy. I would have to TA for two terms. After that any TAing would be bonus and paid (at least a little) on top of the funding.
- Living on the funding is fairly easy even with a pretty high standard of living.
- First couple of semesters are harder but then it calms down a bit.
- Nice city.
- Bikable, looks easy to get around. Not as nice as Portland but not bad.
- Reasonably cheap food and drink.
- People seem to like it here and I think it’s honest.
- 2-3 hours from NYC by a cheap bus ($15 each way day of) or a train ($25). So I could see me NYC friends on a somewhat regular basis.
- 3 months of sunny days per year.
It is going to be very hard to choose between UPenn and UTAustin. They are both very good schools and are in nice cities. UPenn has the notable advantage that I would be near NYC without being in NYC. I still have a lot of friends there and I miss the people and places. However I need to make sure to make a good academic choice (based on how the department and the school is) and not blindly choose one place over the other because I want to be able to hang out with my old friends once or twice a month. It’s going to be hard. No matter where I go I will be closing some doors (at least for the time being) and I have to make my choice on fundamentally incomplete information because I really do not know how it will be to go to any of these schools, since I will have only visited them for a couple of days.
This coming weekend I go to Austin, TX to visit UTAustin. Then I will start trying to compare in earnest. I have over a month to decide, but I don’t want to put it off too long because it will probably not get easier as I wait longer.
PS: If you have any comments on either of these schools or town or recommendations or random thoughts on the subject tell me. I’m looking for all the input I can get.
Posted in Grad School
, Life (other than code)
So for those of you who don’t know, I am planning on going to grad school for Computer Programming Languages. I have been fully accepted to Portland State University in Portland, OR. Also I was concerned that they would make me take undergrad classes because I don’t have an Undergrad CS degree, but it doesn’t look like that will be a problem. I sent them a list of theoretical CS things I have knowledge of and I think they were impressed. The professor I am communicating with said “I believe you are exceptionally well prepared for our MS program.” Which I feel really good about.
I will be moving out to Portland, OR in mid to late August. But I will probably be going to KS for a couple weeks on the way, so I will probably be leaving NYC around the end of July. It’s so soon. I’m scared and excited.
Here is the theoretical computer science bragging document I sent them. It looks pretty impressive and it’s all true! ;-)
These are the buzz-words that I know and understand and that I
think would be applicable. I also have a more complete write up below.
* Turing machines
* The halting problem
* Gödel’s Incompleteness Theorem
* Bog-O Notation
* Lambda Calculus
* Church Numeral
* Type-level meta programming
* Kernel development
* System integration
* System programming
* Compilation, assembly and linking as separate steps
* Embedded systems programming (without an OS and with a minimal OS)
* Direct I/O handling
* Interrupt programming
* Object-oriented programming
* Pure and impure functional programming
* Functional-OO-Hybrid programming
* Logic programming
* Functional Logic programming
* JOIN-Calculus and Pi-calculus
* The Actor Model
* Software Transactional Memory
I have learned about Turing machines and the halting problem and
Gödel’s Incompleteness Theorem. I have also learned about Lambda
Calculus and Pi-Calculus (to gain a better understanding of languages
based on them). I understand and use the Big-O notation of algorithmic
complexity (and its limitations). I have also dealt with Church
Numerals for the purpose of encoding numbers in Lambda Calculus and in
the type systems of other languages (such as Scala) to allow for type
I have been using Linux for more than 10 years now. Over that time I
have done everything from desktop usage to custom turnkey system
integration and kernel development. I have worked on most parts of an
OS from the kernel to application software. I have also worked on
systems with both no OS (PIC microcontrollers) and a very small OS (TI
calculators), so I have done direct I/O and interrupt programming
(including integration with standardized protocols like USB HID). Also
I have dealt with compilation, assembly and linking as separate steps.
I have learned the new languages on a regular basis not because I need
to program in the languages but because the new languages teach me
things about programming and programming languages in general. For
instance I learn about pure functional programming from Haskell and
about hybrid-OO-functional from Nemerle (and later Scala). Also I
understand monads as both collections, processes and pseudo-containers
like the IO monad (though not the category theory from which they
derive, I must admit). I also spent some time working with
JOIN-calculus (Jocaml) and the actor model (Erland and Scala).
Recently I have been reading about Software Transactional Memory and
how it can be integrated with Actors and how transactions can follow
messages from actor to actor. I have read a lot about JOIN-Calculus
and Pi-Calculus because I am very interested in natively parallel
programming abstractions. I think natively parallel abstractions of
computation will be very important in the future of massively
I forgot to mention Object-Oriented programming above because I have
been using it for so long (I first learn OO with C++ when I was around
14). I have also attempted to learn a few logic languages (Mercury and
Prolog and also Curry from PSU), but I admit I have had very little
luck. It has turned out to be the hardest kind of language for me to
grasp. I have a basic understanding of how the languages work and I
know what the syntax means and how variable binding works and all that
and how all these pieces should work together to allow arbitrary
programs. I also read an article Sergio Antoy, et al about
multi-threaded functional logic language implementations. It was very
Posted in Grad School
, Programming Theory