university
A new time
Friday, October 20th, 2006 | Personal | No Comments
So, when I said in my last blog post that I was back in the blogging business, I had, of course, counted on the fact that we were moving on the first, and that my telephone company couldn’t hook me up with Internet at the new place for almost two weeks. The best way to come back to the blogging business is to leave it abruptly again, making everyone wonder where you’ve went, driving up traffic when people pine for your next nugget of information (or something).

It has, unfortunately been pretty much overcast constantly since we moved in, so you’ll have to do with a slightly dark image from the back side of the house. We’ve bought this lovely house in a nice suburb north of Copenhagen, just next to a school and a stone throw from a nursery, so the stage is set for the next aspect of life.
We’re still getting settled in, so until we’re finished with that, I’ll postpone the indoors pictures as everything is a bit cluttered. My desk is still in a temporary position in the middle of the living room so I can do some work. Hopefully everything will have gotten in order within long. We’re fortunate that there’s also a lot of nature around, so I’ll be sure to take a few snapshots from the lake nearby as well if I can manage to remember to bring the camera when we go for a walk.
Apart from us moving, then Microsoft has released Internet Explorer 7 unto the world and since it fixes a lot of issues with formatting the layout of my website I have taken the chance to do a nice spring cleaning and make my site look pristine on IE7 and FireFox. If you’re on an earlier version of Internet Explorer and my site suddenly looks very strange then… well, that’s why.
Lastly, I’ve written another fascinating project in partial fulfillment of my masters degree in Computer Science, which you can see here (PDF). It is about creating a language for specifying typefaces (fonts) for the computer. If you want bit more of a description of the project, look at the research page.
So, to a new time…
Graph illustrations
Wednesday, April 5th, 2006 | LaTeX, Personal | No Comments
When we typeset documents for publishing, be it articles, journals or books, there is another important aspect to it, apart from the content: the layout. The hyphenation should be sensible, it should use ligatures properly, and the fonts shouldn’t change throughout the document. It is this last quality that can be rather tricky to maintain if you are importing figures into your document.
In Computer Science there’s a fairly prevalent need to create illustrations of graphs-no, not the ones plotting x- and y-values on a grid, rather the one with vertices and edges-and we can use software solutions such as GraphViz to draw our graphs based on fairly concise specifications. However, as always, there’s a catch: GraphViz presumes that we’re doing everything using TimesRoman at point size 12. This invariably leads to a problem if we are using Garamond at point size 11, namely that the fonts differ between your document text and your illustrations and you have lost some of the quality of the layout, much like you would have lost some of the quality of your content if you consequently forgot to place commas everywhere.
Solving this is incidentally part of my latest paper, Workflow optimisation for graph illustrations (PDF), where I look at synchronising the fonts between GraphViz and documents that are typeset in LaTeX. The paper will also be linked from the research section sometime in the near future when the need to update the different pages of my site strikes me. For those of you who are interested in learning more about what LaTeX may do for you, I will look at the possibility of running a series of posts on packages in LaTeX you can use to alleviate a lot of your problems, for tweaking your layout, and to create stunning output, but don’t hold your breath waiting for these posts. They keep me busy at the university.
Extensible languages
Tuesday, March 28th, 2006 | Academe | No Comments
Yesterday I attended a colloquium where Erik van Wyk from University of Minnesota spoke on techniques and tools for making extensible languages. Now extensible language may sound like a strange concept, but it is a fairly simple idea that lies at heart of this: I want to add this new construct to my language because it may simplify my work
. Now that’s a pretty basic motivation for us to do some work, so we don’t have to do so much work.
van Wyk et al. have developed something called Silver that allows them to specify these extensions using attribute grammars, which is a context-free grammar that has been extended with attributes, semantic rules and conditions. He described how they use forwarding in the attribute grammars to get modularity through refinement of the functionality of the extension.
What this means is that at the core level you could write an extension, say to introduce SQL statements directly in your language, you could introduce using connection select name, address from customers where balance > `balance and have it automatically converted to connection.Execute("select name, address from customers where balance > " + balance). This means at the core level your extension is nothing but a macro in the pre-processing sense.
Given your extension at the core level any error reporting, for instance is forwarded, is forwarded to your generated code. This is where the extension refinement comes in, because if you define the appropriate error reporting extensions to your module you could return better errors. And their framework builds further onto this, also making syntax- and control-flow analysis available using two temporal logics, CTL and LTL-FV. You can read more about temporal logics in Logic in Computer Science by Huth and Ryan.
Everything cannot be bliss, however, as this thing requires that the host language is written with these extensions in mind – that is, it has been written in Silver. van Wyk’s team is working on both a C and Java implementation, but given the sizes of in particular Java, it probably isn’t realistic that they’ll get a full model of Java for this. Another problem is, of course, that writing a full-fledged extension requires the programmer to know about attribute grammars, forwarding, temporal logic and a lot of other nitty gritty things. So, get ready to hire me or someone like me.
On a more realistic note I think the ramifications of having support for this in a language are huge as you can customise your language on the basis of your needs very easily. But I don’t think it will be feasible until the day that these extensions become easier to write. Until then I’m afraid it will remain an academic exercise, but here’s to hoping.
Presenting for the academe, and miscellaneous thoughts
Sunday, March 26th, 2006 | Academe, Personal | No Comments
I think I need to work on posting more often than once or twice a month at best. A list of thoughts to post about would probably come in handy if I wasn’t so prone to misplace my lists of things to do. Alas.
One of my courses at DIKU has been on scripting- and domain specific languages, in particular how we can use them to solve recurring problems, when we develop them, and a long range of presentations on different languages and the problems they try to solve. This course is (/was) a seminar course, which means that students are meant to participate in the lecturing by giving one or more presentations. For this course we are (/were) meant to give two presentations each.
The last paragraph was, of course, the world’s best thought-out foreshadowing of getting to the point where I talk about what I talked about. Catchy, right?
My first presentation, and in my opinion the better rehearsed of the two, was on using the .NET framework as a platform for embedding scripting languages and creating domain specific languages for web-based pipelines. The .NET framework is indeed superb for doing these things, but not superb in the way that C is superb for it, nay, superb in the way that everything is easy and doesn’t require a lot of code. But if you do not believe me, you can look at the slides for yourself.
The second presentation was on domain specific languages for specifying illustrations. Now many people may ask why on Earth we would need something like that, when we can just draw stuff in Adobe Illustrator or equivalent. However, Illustrator does not lend itself kindly to automatically (meaning programatically) generating large-scale visualisations of systems. We could, for instance, visualise the internet using a program. We could visualise the order of page visits made by website visitors, and many other things. One of my great interests is typography and keeping fonts consistent between documents and illustrations and whatnot, but the presentation only touched briefly on this. In the presentation I discussed GraphViz, METAPOST and TikZ/PGF. The slides are available here.
This brings me to the second part (or third, depending on how you count) of this post: reactions. I have been teaching in different contexts over the past decade (God is it that long already). I have taught high school students maths, I have tutored grade school pupils in maths, I have given lectures on error handling methodologies for corporations, I have taught employees advanced/new programming methodologies in corporations, but this was my first real, terrifying encounter with presenting for the academe. But presenting here is different.
Where have you performed?
Murray asked me from behind a copy of Variety. Well, I don’t perform, exactly,
I answered, but I have spoken at synagogues, and I lecture from time to time at colleges and universities.
Universities?
Murray sputtered. Did he say universities? Worst audience in the world. I spoke at a university once. They invited me to speak about the hotel industry. Believe me, I’ve got a pretty good routine on this; I’ve used it many times before, and I know where I’m supposed to get reactions: chuckles, laughs, applause. Son of a bitch, I stand up there and it’s a grim audience! All these young people in jeans and sneakers. I open it up for questions. These bastards are dead serious -they’re taking notes! I realized later, they weren’t an audience, they were students. They take notes and get grades. They’re not there to laugh. Who wants to perform for an audience like that?
Outwitting History
Lansky does portray the situation fairly well, except there isn’t a lot of taking notes in this course. Reflecting on it, however, I can see how right he is. We hardly ever react to any of the witticisms, puns or great revelations. We just sit there and try to embrace it all, catalogue it, connect it to existing material and just not fall behind in keeping up with the new information that is presented. We simply do not have time to pick up the small off-remarks that are meant to liven up the crowd. But God it’s frustrating when you’re the speaker as you haven’t got the vaguest inkling of whether the crowd is bored witless of what you’re saying, or whether it’s the coolest thing they’ve heard of since sliced bread. I have since received word from a couple of people that at least parts of my presentations were interesting, so that is something, at least.
There are, however, a few pointers I’d like to share with other people who are going to be presenting to the academe. Not so much pointers that I give because I have now done presenting to this particular crowd, but pointers that I have come to understand as part of listening to presentations daily for almost seven years in this world. The points are fairly simple: know your material, know it really well, rehearse before you speak, and rehearse multiple times before you speak, and lastly, make sure that your slides support your talk. Your slides should not be your talk. It is not interesting to have slides read aloud to you. Dazzle us with your message, use slides to underline your points, illustrate the key topics. If you wish to learn more about good presentation methods, I will warmly recommend Garr Reynold’s blog on professional presentation design: Presentation Zen. He has a lot of interesting ideas, but I believe a lot of them a better suited for product pitches, broad overviews and the like. Presenting a programming language will need more stuff on the slide, but there are still things to be learned. If you look at my slides you will see that I in particular do not honour his No more bullet points
mantra. I happen to like a small number of bullet points to underline my message. But like humans then no two presentations are created alike.
Before I get overly philosophical, let us derail the discussion to the third (or fourth) and last part of my post: cool gadgets for doing presentations. If you’ve stuck with me this far then I will present to you: Trust Wireless Presenter TK-3300p.
The presenter functions as a wireless trackball mouse with dedicated buttons for page up and page down and it comes with a nifty red laser pointer. I used it for my second presentation and the flow of the presentation became a lot better than when I had to walk back and forth between the computer to change slides. The Trust presenter is fairly inexpensive, so even if you only have a small number of presentations each year, I will warmly recommend it as it makes your presentation just that much more well-connected, and it gives a better impression on your audience. Plus, of course, you aren’t interrupted every time you have to move to the computer. And, of course, it still has the cool gadget factor. The presenter is placed next to my Creative MuVo memory stick so you can compare size. The presenter is placed very nicely in your hand and it contains a left mouse button underneath that is operated with your index finger. The three top buttons can be a bit tricky to get right all the time, but with a bit of practice it is fairly easy. Alright, enough product placement and endorsement for one post, and back to my paper for me. More on that in a later post (I hope).
In the world of the living
Friday, February 10th, 2006 | Personal | No Comments
Over the past two years I have worked as an intern for a realtor company doing systems analysis, design and education of developers. There have been the usual ups and downs with fun projects and some not-so-fun projects. But there are other things in this world than working, namely trying to finish your degree. For those of you who have been following for a while then you might mutter it’s about time, those of you who haven’t been following will probably mutter the same as those pesky kids who just study are annoying, or something. So, goodbye work, and thanks for all the cake.
So what am I doing back at the ol’ university? I don’t think I’ve written about that much lately, so let me bring you up to speed. I’m working on my masters degree in computer science, specialising (so far) in programming language theory. As part of one of my courses we were required (more or less) to write a paper on a topic within types and programming languages and make a presentation on it. I chose to write a paper on static verification of downcasts in an object calculus that vaguely reminds of Featherweight Java by Igarashi, Pierce and Wadler, which is a minimal, functional core of Java (and C# for that matter). I try to portray further uses of the static verification in my paper, namely on how you could potentially use the static verification as a guide to translate from a monomorphic program into a corresponding polymorphic program without the downcasts – that is translated into a program in a language that has parametric polymorphism. This means, for C# 1.1 to C# 2 translation, for instance, that there are a lot of places where we can remove boxings and unboxings of value types and hence improve performance radically. Furthermore, as far as I can see there will be further analyses that can be useful with the subtype expression flow modeling that is being used in Smith and Wang’s DCPA algorithm (if all of this cannot be done as easily by reduction to let-polymorphism, I’ll have to look at that sometime). But, I digress. You can find the paper here in PDF format, if you are interested.
Finally, Ida and I have started to look around to buy a house, so I’m sure there’ll be some fun updates on the tormenting trials of buying a house, getting a mortgage (particularly with the amount of increase in value of houses there has been lately, it’s crazy!) and whatnot sometime in the not too distant future.
Back to Hoare’s CSP algebra…
C#, VB and LINQ
Friday, September 30th, 2005 | Development | No Comments
I went to a colloquium on LINQ (I guess this link might die in the future when the future is no longer the future, so to speak) presented by Erik Meijer who is a technical lead in the WebData group (whatever they do). Meijer is a very charismatic speaker and it was a very good presentation he did (although Virtual PC on his laptop couldn’t entirely keep up). For the uninitiated LINQ stands for Language INtegrated Query and it brings set relational functionality to .NET. VB9 and C#3 will have syntactic sugar for it, other languages can consume it using the assemblies.
LINQ correspond to Haskell’s monad comprehensions, in case you know what those are, and I think it will be interesting to see how people put it to use, but I could fear that it will create a tendency to put even more data-layer specific code into the business aspects of application. The added expressitivity, however, seems like a great thing and I look forward to play with it.
Meijer also presented a couple of the new things coming in VB9, among these is late-late binding, which allows you to try to access fields on a type Object regardless of whether you know they exist at compile-time or not, so in some sense VB9 is now a complete bastardisation between statically and dynamically typed languages and you get to be able to do some truly nasty things:
Dim z As Object = {Name := "Test", ID := 20} Console.WriteLine(z.(Console.ReadLine()))
This allows you to specify the field in the anonymous struct to access at runtime, no more static typing, there be monsters here! What does this mean for Visual Basic programmers? I would guess that the group of programmers that are currently programming Visual Basic aren’t exactly, in general, those who know what type erasure, type inference and monad comprehensions mean. I wonder whether Microsoft may be letting their developer base walk the plank
in some sense, but only time can tell.
Erik Meijer has been teaching as an assistant professor at the University of Utrecht prior to being with Microsoft and one of the most refreshing things in the presentation was to see a theoretical person using all his theory and knowledge of paradigms, semantics and whatnot to improve (I hope) production environments. All in all a great presentation, I’m still spaced-out about being able to access a lot of my functional programming things in C#.
Finally the fun anecdote Meijer gave during his presentation: Originally LINQ was called LIQ, but marketing changed it to LINQ as Language Integrated Query Object Relations would’ve become LIQOR otherwise. Can’t have that, nope.
Categories
Archives
- July 2011
- June 2011
- November 2010
- October 2010
- April 2010
- November 2009
- October 2009
- June 2009
- May 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- December 2006
- November 2006
- October 2006
- September 2006
- June 2006
- April 2006
- March 2006
- February 2006
- January 2006
- December 2005
- November 2005
- October 2005
- September 2005
- May 2005
- April 2005
- March 2005
- February 2005
- January 2005
- December 2004
- June 2004
- April 2004
- February 2004
- November 2003
- January 2003
- November 2002