After almost a year’s absence, I have decided it’s time to bring the blogging back.
It seems that life may be getting more interesting, so there may be more to say.
After almost a year’s absence, I have decided it’s time to bring the blogging back.
It seems that life may be getting more interesting, so there may be more to say.
The tail end of our trip was a day and a half in Hong Kong. We kind of tacked it on the end to get out of mainland China for the National day holiday crowds. As a result, I had no real plan or expectations.
Therefore, Hong Kong exceeded expectations. 😛
In some ways, Hong Kong is smaller than I expected: 7M people (just more than 1/3 of Beijing) and we walked a good chunk of the length of the core (Central to Causeway Bay subway stations) in an hour or so.
I also knew Hong Kong was a tall city: our hotel was hardly in the centre of the city, but from our 15th floor hotel room, I couldn’t see more than a block in any direction, and 8 story buildings below just seemed like a waste of space. It took my brain a while to really process that the whole city is like that.
I have also never been to a more “international” city than Hong Kong, possibly because none exist. I was entirely comfortable in the city: it felt a lot like a taller version of Richmond. I imagine that Brits would be totally comfortable in the city, so should mainland Chinese. Tourists from France seemed pretty at-ease, and there seemed to be a solid Indian population as well. I can’t think of anywhere else I’ve been where so many people could hang around without being out of place.
Also, at 7M people, that must mean that something like 5% of Hong Kongers must now be in Vancouver. (350k Hong Kong immigrants and descendants in Vancouver doesn’t sound that far off to me.) I had never really thought about the numbers from that side: everybody in Vancouver knows a bunch of people from Hong Kong, but everybody in Hong Kong must have a friend or two in Vancouver as well.
In summary: insufficient time spent in Hong Kong; must investigate further in the future.
The blog posts kind of fizzled there as we got tired. We are now back in Burnaby. More pictures have been posted.
Our second day in Hangzhou was dominated by the University: it was my work day. We had lunch at ZJU with some DDP students who will be coming to SFU in 2012 or 2013 (and a few who cam from SFU last year).
The purpose of the lunch was to give students a chance to ask us some questions about SFU and living in Vancouver: all four of us were SFU students at one point. It took a while to talk the people there into organizing an “informal” lunch where we could just chat with the students.
In the end, it worked out exactly like I hoped. Some questions we got: will I have to speak french? How often is Glee on every week? Is there any racism? Can I take business courses too? As usual, the ZJU students were a lot of fun and I’m glad we stopped there.
As expected, after that we became the University’s guests for the rest of the day. We walked through the adjoining botanical gardens and to dinner, which was very Hangzhou-focused and great.
The next day, we walked around the Xixi wetlands with Amy Gu, her husband Kevin and son Roland. Amy and I talked about our courses while the rest looked at birds, and it was great.
Just like last time, I really liked Hangzhou. The idea of going to teach for a semester at ZJU is looking better and better.
We have now had our first full day in Hangzhou (plus an afternoon after the flight). With apologies to the Beijingers out there: it’s better here.
Wednesday night (after the flight), we took a walk around the city: north along the lakeshore and back through the city. Somewhere in there, we realized we were all hungry and found this fast food place upstairs (at Yan’an and Qingchun roads for anybody keeping score).
When we went in, it was immediately obvious to Oli and I that ordering was impossible: you seemed to have to buy tickets (from a Chinese-text-only menu) and then go to the prep area and give them your tickets to get food. The text-only menu was a dealbreaker for us and we suggested moving on.
Kat and Tina went up to the food-getting area and started pointing at things. Some dude that worked there took pity on them, led them to the cashier, ordered the things they had pointed at, and took them back to get food.
Oli and I were left thinking “what the hell just happened? Why are we eating?” Then they somehow ordered seconds.
This illustrated the strategic difference between our coping strategies. I want to have a plan, like I did with the great wall driver: I’ll translate “lunch noodles” and then reply “yes” to whatever he says next. Kat is much more comfortable going in guns-blazing (with a note pinned to her chest that says “sorry I don’t understand Chinese”). I believe these strategies are complementary.
Other than that, good first day here: paddle around the lake and tour of the tea fields (by taxi). It’s pouring rain and I was really a lot wetter than I was comfortable with yesterday, and today promises more of the same.
We’re leaving Beijing tomorrow at noon, so that pretty much wraps up this leg of the trip.
On Monday we got a driver from the hotel to take us to the Great wall (Juyongguan section). That was excellent.
After the wall, we were thinking about lunch, but the driver spoke no english. Through the magic of Pleco, I translated “lunch, noodles”, to which he responded (thanks to its handwriting recognition) something that translated like “noodles with bean sauce”. We said yes, and he took us somewhere back in Beijing. We convinced him to eat with us and had something I have since learned is called “zha jiang mian” and was amazing.
Pointers to good zha jiang mian in Vancouver would be appreciated, since the idea of not having it again makes me sad.
Today, we walked through Tiananmen square and the Forbidden City. Then back south through Wangfujing.
To Hangzhou tomorrow, where I honestly hope there is less to see, since I don’t think we can keep up this pace: I think the combination of walking everywhere (including up the wall) and mental overhead trying to figure out how to do things without sharing a language with the locals is taking its toll.
Pictures are being posted, daily(-ish).
After 24 hours on the ground in Beijing, it’s finally really settling in that I’m in a whole other country. For the first few hours, I was so tired I might have just taken an 11 hour plane ride to Richmond for all I knew.
But here we are: me, Kat, and our friends Oli and Tina. We’re staying at the hotel where Tina’s conference was. (The conference was the original seed of the idea for the trip.) The hotel is around NW 3rd ring road, near Peking and Tsinghua Universities, for those who care.
Today, we met a friend of a friend who grew up in this part of the city. He showed us around the two Universities. It really seems like they have a Harvard/MIT thing going on: Peking is the top-ranked school, but Tsinghua is right next door, a close second, and has more of an engineering/applied focus.
Kat and I always seem to swing by local Universities when we’re on vacation. Having spent just about exactly half of my life around Universities, there’s a comforting sameness about them. What differences exist are always glaring.
In the name of not packing too much into this trip, that was our day. We’ll probably do something after dinner: plans still unclear.
As many of you know, I’m the most frequent instructor for CMPT 470, Web-based information systems, at SFU. I love teaching the course, but it’s just not possible to do it every semester. In particular, it’s not possible for me to teach it in the spring (Jan-Apr 2012).
So, it will likely be posted as a sessional (contract) instructor position. We have had sessionals do the course in the past, but I reckon I can make things a little more interesting: there’s a good web development community in Vancouver, and there a lot of people who would do a good job with the course. There is also an increasingly-large group of CMPT 470 alumni who have been out there in the world for a few years getting some experience: some of them would be good at this too.
I just have to find somebody and get them to actually apply. So, I’m putting the call out: anybody interested or know anybody who’d be good?
The course (as I approach it) is a survey of web development topics: markup and style, HTTP, server-side programming, client-side programming, architecture/speed/backend stuff, and whatever else I feel like talking about that semester. The big piece of work for the students is a group-based project which makes up a big chunk of their final mark.
Officially the appointment requires a masters degree, but a case can be made for somebody with industrial (and even better, teaching) experience. The course is scheduled in the evenings (Mondays 5:30-8:30) on the Burnaby campus, so shouldn’t interfere too directly with a day job. Pay is around $8500 plus benefits.
Of course, anybody teaching the course is welcome to my lecture notes, assignments, web materials, and anything else I have that would be useful. There’s no official posting yet, but I figure it’s a good time for people to start thinking about it. I’m happy to talk to anybody about the course.
Edit: I should point out that I’m not the one making the hiring decisions. I’m just an interested third party.
As most of you know, the School’s new course management system is my baby. It keeps track of many things, but what I care about right now is (1) who is in a course, and (2) what groups have been formed for assignments/projects/whatever.
Given those things, I have had this idea: It would make perfectly good sense for each of those things (every student in a course; every group in a course) to have a version control repository automatically created for them. The instructor and TAs would also have access, but wouldn’t have to set anything up. Students could use the repositories even in courses where the instructor doesn’t know what technology is.
I have used Subversion repositories for the project groups in CMPT 470 for years. The benefits from my point of view:
When contemplating technologies to implement my scheme, I went first to GIT (or possibly some other distributed version control system, since they’re all the rage). GIT also has a pile of nice management tools like gitolite that make creating thousands of repositories surprisingly easy.
But while experimenting, I realized that GIT inherently trusted the user-provided information about who they are. If I claim to be “Barack Obama <president @whitehouse.gov>” in my commits, then GIT lets me push those commits just fine, no matter who I have authenticated as at the central server. So, I pretty much lose benefit (4) in the worst cases (which are the cases I’m usually concerned with), which is pretty much a deal-breaker by itself.
The “distributed” nature of any DVCS gets me this problem one way or another—anybody could push the whole group’s work since they could be working for weeks without touching the central server. And having made that realization, I have to admit that (3) also disappears: they don’t have to push to the server very often, so a crash on their end could lose a lot of work.
Finally, knowing students the way I do, (5) is gone too. I’d give a lot to not have this conversation five times a semester: “I got a zero.” “You didn’t submit any code.” “Yes, I committed it.” “You committed it, but did you push it to the server?” “Yes, I pushed it.” “You typed the command ‘git push’?” “No, I use ‘git commit’. That puts the code on the server.” “No it doesn’t. You didn’t put any code on the server where I can get it.” “Yes I did… I committed it.”
Also, it’s my understanding that it’s not possible to give a URL to a subtree of a GIT repository: the only URL is to the project itself. That makes submitting with GIT much harder.
So, I’m left with this: distributed version control is at least as good for developers, but it’s very bad for instructors.
According to Wikipedia’s comparison of revision control software, the only open source, “actively-developed”, “client-server” VCS is Subversion. So it looks like I’m back to the totally-uncool and old-fashioned SVN?
Does anybody want to refute any of that?
I recently had a former CMPT 165 student email me and ask essentially if Python was the best language to learn [first] from a practical/employment standpoint. This was my response, that I think was good and would like to expand on here:
Certainly the traditional view of the world is “C/C++/Java for big projects or where speed matters; higher-level languages like Python/Perl/VB for smaller projects or automation.” Certainly many of my colleagues continue to see the world in this way.
The programming language world has changed in some subtle ways in the last few years and I don’t think that attitude is really valid anymore. If I was starting a big project today (like writing a word processor or something), I would probably start with Python (or something similar): it’s easier to write and get things done and it’s possible to bridge to code in Java or C if you need to.
If I had to honestly summarize the world today, I’d say “C++/Java/C# for big companies who want to make a ‘safe’ choice of programming language; Python/Ruby/JavaScript/Scala/etc on smaller projects where the developers make the choice and want to get things done and enjoy their lives.”
A few footnotes on that: (1) the result is there are probably more Java/C# jobs in the world than other languages; (2) the Python/Ruby/Javascript jobs tend to be in smaller companies and are probably more fun; (3) after you learn to program, learning a new language isn’t nearly as big a deal as learning your first–most of the concepts are always the same.
By “the programming language world has changed in some subtle ways”, I mean mostly:
My assertion that “C++/Java/C# for big companies who want to make a ‘safe’ choice” is really just a gut feeling. I understand and even agree with the desire for static typing in a huge project, but I honestly don’t think that’s why companies choose Java or C#. Companies choose these language because they are enterprisey: they are the kind of language that checks all of the CIO’s boxes and have comforting professional certifications that the HR department can look for.
Also, big companies probably think Oracle’s ownership of Java is a good thing. They haven’t reached the conclusion that I (and I suspect many others have): Oracle will slowly strangle the life out of Java until it truly becomes the new Cobol.
So where does that leave us?
You might as well look for a language that’s (1) fun to write, and (2) easy to actually get shit done with. For me that’s Python, but I can certainly accept Ruby, Lua, Scheme, and friends. I could accept PHP and VB (if I had enough drinks in me) or even C# and Java (if you had an explanation grounded in the language design/features and didn’t contain the words “enterprise” or “corporate”).
So I got this random email reporting a broken link on my CMPT 470 web site. It’s a little unusual to get an email like that from someone who was apparently not a student, but not totally crazy.
From: angela.hill88@gmail.com Subject: Found a broken link on your page Hey Greg, I found a broken link on [web page on my course site] and since I was researching computer science and needed the page, I found an updated article online. The broken link to "Howto for Python" is [the once-working link] and I found an article on the front page of [some not-totally-related web site] if you wanted to fix it. Click the tab "Beginner Python Tutorials" to get to the article. Figure I'd send you an email because others may need that link for the same reasons! Thanks! Angela Hill angela.hill88@gmail.com
I googled the sender, and found this essentially-identical broken link report with the same “correct” URL. There are a few other examples a Google away. It’s freakin’ link spam!
If anybody really wants to find the target page (that I’m not going to link to prevent bumping their pagerank for any reason), it’s “onlinecomputersciencedegree” with a “www” and a “com”. The site itself is entirely content-free: all external links to other pages.
Somebody’s plan must be:
How is this possibly a thing? Am I missing something?