hudebnik: (devil duck)
Some days I'm proud of my employer. This afternoon I attended a talk by the "Jigsaw" team, whose mandate is to use Google technology to promote freedom and protect the vulnerable around the world, and I thought I would mention three services in this category. If you have friends or family living under the control of an oppressive government, make sure they know about this stuff. Most are joint projects between Google and one or more other academic institutions or NGO's.

  • uProxy, a free browser plug-in which enables anyone to create a proxy Internet server that people in high-censorship places like China and Korea can use to get to uncensored Internet content. (A joint venture between the University of Washington, Google, and I don't know who else.)

  • Project Shield, a free service protecting independent journalism servers from DDOS attacks, including attacks by their own governments.

  •, a Web site to show you what topics are being reported on by journalists in various countries. Check out the list of "topics underreported in your country" (relative to other countries' coverage of that topic), then follow the links to see (either translated or in the original language) recent headlines about those topics in various other countries. Slide the "date" bar to see how popular this topic was, and what was being said about it, on various recent days. (It's interesting to note which countries had remarkably little coverage of the Mossack Fonseca "Panama Papers" leak last week....)

There were demos of some other neat services like this, but they haven't been announced publicly yet; you'll just have to wait :-)
hudebnik: (teacher-mode)
One of the numerous fronts in the Programming Language Wars is "how fast does the code run?" This is a remarkably difficult question to answer, for reasons discussed here, but one can make certain general observations. As pointed out here, there's a top tier of languages that are typically compiled to native machine code without run-time garbage-collection, including C++, C, Fortran, Ada, and ATS. A second tier includes a bunch of languages that are (a) typically compiled to bytecode and then JITted, and/or (b) run-time garbage-collected: Java, LuaJIT, Julia, Haskell, Scala, Ocaml, C#, Go, Common Lisp (SBCL), Rust, Pascal, F#. I won't bother with the several more tiers right now.

The top-tier languages are all fairly mainstream, primarily-imperative, three-piece-suit affairs, except perhaps for ATS (with which I'm not familiar).

The second-tier languages include Scala, Ocaml, Common Lisp, and F#, all of which are primarily-functional, as well as Haskell, which is purely-functional (e.g. it has no assignment statement at all, and it takes advantage of this fact to do lazy evaluation and a variety of compiler optimizations), and a couple of primarily-imperative languages.

If you've read anything technical about my current employer, Google, you're probably familiar with the MapReduce framework for massively parallel computing: we alternate "map" phases (do the same thing to a gazillion data points independently) with "reduce" phases (combine a bunch of data points into fewer data points). You may or may not have heard that MapReduce has been deprecated internally for new code for a year or more: in its place, we use libraries that turn C++, Java, and Go into, effectively, primarily-functional languages with lazy evaluation (think Java Streams). MapReduce is still around, but as essentially a compilation target rather than something humans are supposed to actually write.

Of course, it would be a whole lot easier to write in a REAL functional language with lazy evaluation, rather than trying to retrofit C++ to play that role, but we've got an awful lot of existing C++ code....
hudebnik: (teacher-mode)
At my new employer, I have no office: I have a desk, a computer, a chair, and enough room for maybe half a dozen books. And people tend to move from one desk location to another every few months, so they're not encouraged to put down too many roots.

So today I went to my University office (for the first time in months) and spent six hours triaging books: discard, leave with the department, or take home. Somewhat to my surprise, the three categories turned out almost exactly equal in size.

This exercise entailed throwing out a lot of proceedings for theoretical-CS conferences I attended and was very interested in at the time, but I realistically haven't done any TCS research in fifteen years. And if I did somehow get back into TCS, it would be easier to find the papers on-line than in a printed volume anyway. But throwing out the proceedings (except the few in which I had papers) carries an air of finality.

My research for the past fifteen years has been mostly in CS Education, so I had three shelves of proceedings from CSE conferences. I kept the ones in which I had papers, and left the rest to the department, on the theory that somebody on the CS faculty will be interested in them. Again, leaving this stuff is a final acknowledgment that (a) my research in CSE will be limited if I'm not in a classroom regularly, and (b) a lot of this stuff is on-line anyway.

I threw out most textbooks older than 5-10 years, except a couple of "classics" and those of which I have particularly fond memories. I left recent textbooks to the department, as above.

Still, I have five good-sized boxes of books in the car for which I haven't found homes in the house yet.
hudebnik: (devil duck)
I just informed my University that I'm staying at Google and resigning my academic position.
<LawrenceOfArabia>It's going to be fun.</LawrenceOfArabia>

misc. news

Jun. 22nd, 1998 04:38 pm
hudebnik: (devil duck)
Let's see, what's happened recently?

I spent four days last week at the Computational Complexity Conference in Buffalo, where I renewed contacts with various complexity theorists. I also gave a "rump session" talk on my work on "Delayed Binary Search, or Playing Twenty Questions with a Procrastinator". The audience seemed to enjoy it: I got more questions than the previous two speakers combined, I was invited out to a bar by two of the research gods of the field, and by 11:00 the next morning two of the audience had made significant additions to the theory: David Schweizer found a recurrence that seemed to correctly describe the delay-2 case, and Andris Ambainis found a proof that the optimal algorithm took time logψn + O(1), where ψ satisfies ψ3 - ψ2 = 1, exactly what would be predicted by Schweizer's recurrence. I decided this was significant enough to invite them to co-author. I told them I was busy for the next week, but wanted to submit the thing for a conference deadline July 7; I hope they're working on it now.

Thursday night I returned from Buffalo. I spent Friday grocery-shopping and pre-cooking for the SCA feast we prepared and served on Saturday. Various things went wrong: there was no firewood until over an hour after we arrived, so the legs of lamb started cooking later than they should have; we didn't know where to get water on site, so the rice started cooking later than it should have; the autocrat suffered a car accident; a misunderstanding led to me ferrying a search party up and down Flatbush Avenue searching for her while she was safely at the site and [ profile] shalmestere was doing last-minute preparations; a rainstorm hit just as we served the first course; etc. etc. But everybody seems to have enjoyed the food, nobody went hungry, and I'd call the whole thing a qualified success.

Unfortunately, we couldn't stay around for the night or the morning: we had dogs at home to feed and walk, and I had to catch a plane Sunday afternoon to Houston, where I am now and until next Sunday morning, attending a workshop on how to teach beginning programming using Scheme. Most of the participants don't know the Scheme language, so they're struggling to learn it; I, on the other hand, am primarily trying to learn how to teach from Scheme from someone who's been quite successful at it.


hudebnik: (Default)

September 2017

10 111213141516
171819 20212223


RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 22nd, 2017 01:22 pm
Powered by Dreamwidth Studios