May 31, 2011
Today, after reading Zed Shaws latest blog post, I did something really stupid.
Of all internet phenomena I’ve come in contact with, trolling is probably the worst. And although I think Zed is not helping the situation by being so harsh, I can understand why he is really, really pissed off.
In response to this, I started a repo on Github of known trolls. I tweeted about it and Mentalizer correctly pointed out that my repo was more or less an act of trolling in itself. Such a list is worthless without some kind of public criteria for who goes on there, or at least some sensible definition of “trolling”. I offered neither, and I wasn’t prepared to put in the effort, making my initiative decidedly half-assed.
So my public repo of trolls was a bad idea. What do we need instead?
Another bad idea
Here is another well intended but probably really bad idea. I’ll build a site that allows you to propose trolls and allows registered users to vote up their troll-ranking. It will be complete with an API to retrieve someone’s troll-score and automatically blacklist them from your site.
Why is this a bad idea? Well obviously, if I actually built such a site, I would be the first name on the list, voted up by hundreds of actual trolls. So by my own definition, I’d be a troll. If this became popular (which it would have to in order to fullfill its goal), it would become a warzone of mudslinging and attempts to destroy people’s reputation.
This is not the first time I have thought about how to help the internet getting rid of trolls, but hopefully it will be the last, because I feel like I’m wasting my time. I think it would be a huge accomplishment to reduce the amount of trolling to a tolerable level, on the same scale as what Google is doing to fight spam or what Stack Overflow is doing to fight ignorance.
But it all comes back to the old advice: Don’t feed the trolls. By creating any public list, voting based system or whatever, I would be feeding the trolls. My problem is that I don’t really understand the psychology of trolls, so I keep thinking up all kinds of elaborate systems which all fail in the same way: By acknowledging the trolls, feeding them.
Fighting something by ignoring it is really hard.
January 14, 2011
Although I basically agree with the Pragmatic Programmers’ old advice about learning a new programming language each year, the time has come for me to slow down.
Why? Very simple. I still have so much to learn from Clojure. I could write at length about the virtues of functional programming or about how Clojure takes advantage of the JVM. I could go on and on about the REPL, Java libraries, infinite lazy sequences (list of all primes, anyone?), the exceptionally smart community members and so on. But others have already done this much better than I could. For a great introduction to the language itself, go watch the intro videos by Clojure creator Rich Hickey. For all the surrounding stuff, there are lots of interesting blogs to read.
Likewise, although I have a lot of experience with both Ruby and Rails, I’m not done learning here either. Especially, I need to tune my Emacs to achieve better code navigation and debugging support.
Two languages that I really like. This year, I’m going to focus, not diversify.
May 7, 2010
Here’s a surprisingly insightful blog post from Matt Aimonetti. Yes, the guy with the “Perform like a pr0n star” CouchDB presentation.
I really hated this guy when the heated debate about his talk was running (when was this…some time last year?). He responded to the comments he got with such arrogance and lack of respect for other people’s emotions that a lot of us were appalled. I really felt (and still feel, actually) that he did damage to the reputation of the entire Ruby community. The fact that DDH stood behind him obviously just made everything worse.
Now all this seems to be forgotten, and that’s certainly a good thing. I had personally forgotten all about the issue until I came across this blog post. And it completely changed my feelings about him. It’s really great to see that a lot of people do change when they get a chance to sit back and reflect on the stupid things they’ve done. Everybody should get a second chance if they want it, even a guy like Zed Shaw if he comes to realize some day that he’s being an asshole.
Well done, Matt. Looking forward to following your work in the future.
January 3, 2010
I’ve been considering upgrading my Emacs installation on OSX for a while. Until now, I’ve been using Carbon Emacs, and I have been quite pleased with it.
However, Emacs 23 has been the recommended release for a while now, and it’s probably time to move on. So I thought I’d use this entry to sum up my findings so far about making the switch.
First, a note about naming. “Carbon Emacs” is Emacs 22.x, distributed by Apple (CORRECTION: No, it is built and distributed by Seiji Zenitani. Thanks Ian). Not maintained or supported by Apple, but they have a pretty download page for it nonetheless. As of this writing, the build is about 6 months old.
To get Emacs 23 on the Mac, you need the Cocoa version, called simply “Emacs.app”. It can be downloaded from here, and the current version is 23.1.
Much nicer fonts
Ah yes, this is what everybody has been talking about. I know very little about typography, but I think it has to do with antialiasing and the fact that Emacs.app uses the Cocoa libraries instead of Carbon (which has been around since Mac OS 9).
The fonts look great. At first I almost couldn’t tell the difference, but it becomes very apparent once you switch to a smaller font. In Carbon Emacs, I never managed to use a 10pt font for very long at a time, because it was pretty hard for me to read. Now, it is very clear. This is obviously a huge improvement because it allows me to have more text on the screen.
I haven’t really played with this yet, but it looks cool.
This feature allows you to run emacs in “daemon mode”, meaning that it evaluates all startup files but does not open a frame. It then opens a socket and listens for clients.
To open an Emacs frame, use emacsclient. It seems to require a little extra tweaking in my setup, because when opening a client frame the toolbar is not disabled, the Meta key is not properly set up etc. But I’m sure that would be easy to fix.
The great news here is that it allows you to have one master instance of Emacs running and open files in it easily. For example, set your $EDITOR variable to “emacsclient -t”. The advantage of this method is that you can use the same instance of Emacs throughout your system. Right now I’m used to invoking something like “emacs -q -nw /etc/foo” if I need to quickly edit a file in the shell and don’t want to wait for my sea of customizations to be loaded.
weblogger.el is messed up again
I know I have no right to say this, but I want to be honest. This really, really pisses me off. I cannot believe how fragile the weblogger.el/xml-rpc.el combination is.
Until I updated to the latest versions, it didn’t work at all. I already forgot what was wrong, because I’ve gotten so used to just trying out all sorts of tweaks until it works (or I give up).
So after installing the latest versions, I am able to download the list of posts (with weblogger-fetch-entries). But alas, all of a sudden there is some issue with longlines-mode, so when writing a new entry, the text just becomes invisible. Figuring that out within a few minutes gave me a sense of Deja Vu. I must have been bitten by this issues at some time in the past, or I would never have figured out so quickly what was wrong. (UPDATE: It turned out that only the showing of hard newlines had to be turned off, and that this is not related to weblogger.el. But somewhere along the way, this entry was messed up so real newlines were inserted.)
Having to disable longlines-mode is painful to be sure, but the annoyance passes quickly as I discover another two issues.
After saving an entry (weblogger-send-entry) the *weblogger-entry* buffer is buried. Why?? (UPDATE: It turns out that this was also the case in the previous versions. I had just forgotten that I had made a dirty hack in weblogger.el to fix it).
Also, the interaction with wordpress.com is just painfully slow. It takes me about 10 secs to save an entry. I have no idea why that is. I haven’t started using https or anyting like that. A quick look at tcpdump reveals an 8 second pause that is new since my Emacs 22 setup.
This is another regression I just discovered while writing this entry. When trying to run twit-show-recent-tweets, I get the following error.
error in process sentinel: Symbol's value as variable is void: url-http-attempt-keepalives
Again, no idea what is wrong. I updated to the latest twit.el (which worked fine in Carbon Emacs). When trying in an Emacs with no customizations, it just hangs.
Fullscreen mode broken
This is a well-known issue, and a pretty serious one IMO. I get some extra text from reducing the font size, but it is wasted on menubar and window decorations as long as I can’t properly fullscreen the frame.
So, is it time for me to upgrade to Emacs 23? Absolutely not. It has taken me way too long just to write this blog entry simply because stuff keeps falling apart.
I’m afraid I’ll have to spend a significant amount of time tweaking all my customizations to work with Emacs 23. And I’m afraid it is going to be a while before I have nothing better to do. Until then, I’m stuck with Emacs 22.
But hey, that’s not so bad, is it?
October 27, 2008
This weekend, I was at the first Danish Rails Camp near Svendborg.
(Photo by wa7son)
The camp was Fri-Sun (unfortunately I could only attend Sat-Sun), and we ended up being 12 attendees. A little less than we had hoped for, but this also meant that we could all fit comfortably in the living room of the cabin.
Saturday afternoon, many of us went for a run in the beautiful countryside. This was an excellent way to kickstart the brain and kill the legs, grounding us for a serious round of hacking.
Thomas took some very good pictures. Not from the run, thankfully.
It’s always nice to meet new people and learn new stuff, and it was especially great to hear more about the Ruby and Rails work that people do professionally in Denmark. The landscape seems to have changed a lot since I last considered a Rails career about a year ago. It seems that both dynamic languages and opinionated frameworks are still gaining ground, even in conservative Denmark (with Rails still leading the crowd). Great news!
All in all, it was a great trip. That being said, I think we should consider how we can make the camp even better next year.
For some reason, software developers have an ability to sit for hour after hour, totally absorbed in whatever they’re working on. I am certaintly no exception.
And there’s nothing wrong with that. On the contrary, that is how we learn new stuff.
But we can do that at home, each and every day if we want to. Many of us probably do, more days than not. When we go through the trouble of renting a cabin in the middle of nowhere, we should really make the most of the time we have together.
I definitely learned new stuff at the camp, but I’m sure I could have learned much, much more.
Stop bitching and get to the point
I have been thinking of a few ideas for improving the learning-from-each-other part next year:
We should prepare a stack of small assignments in advance. Just very simple tasks that take no more than 2-6 hours to complete.
A few examples:
- Create a simple battleships game (Laust and Jakob, that was a great idea).
- Create a super-simple Wiki server using Sinatra and CouchDB.
- Review and compare a few search libs (eg. Ferret, Sphinx) with regards to features and performance. A suitable dataset is provided with the assignment.
- Design an internal DSL for creating SQL queries.
- Compose the ultimate Ruby blogroll, briefly describing each entry.
The assignments should generally touch on something that most attendees find slightly exotic (eg. CouchDB, Haml, Shoooes), but not completely alien or Ruby-less (eg. Fortress, Emacs Lisp).
They should be solved in groups of 2 or 3, preferably consisting of people who don’t know each other in advance.
Personally, I know that having a concrete goal would help me maintain a sense of direction. So would splitting the days into chunks.
A laptop will consume any amount of time you throw at it. In my experience, this often happens because software development is inherently both interesting and complex. When working on anything non-trivial, you’re bound to go of on a tangent every now and then.
Again, this is perfectly normal, and it is an important part of how geeks work and learn. But it is not social, and the guy next to me learns nothing from it.
Given hard deadines for all assignments, we would all be forced to stay focused for a few hours, share our gained knowledge, then refocus.
Each assignment should result in a demo or some other kind of presentation.
Briefly presenting the work done should be mandatory. If everything failed, it’s no big deal. Just tell us why, and we might avoid some pitfalls in the future. Anyway, only a few hours were lost.
The big picture
What I’m suggesting here is that we aim for a more conference-like atmosphere on next year’s Rails Camp.
I think the great thing about conferences is the feeling of enthusiasm they imbue. A good conference should leave you with:
- Lots of half-baked ideas
- A handful of email addresses and half-ass business proposals
- A craving for more knowledge about a dozen new frameworks and several new languages
- Vague thoughts about possible career moves
Conferences should inspire, not teach. I think the Rails Camps could provide the perfect small scale setting for achieving the same goal, if that is what we want.
Your comments, please
Obviously, you’re all very welcome to share your thoughts on this. Do you agree, or am I way off?
Drop me a comment and let me know what you think.
By the way
Francesco, I hope you had (or will have) a nice trip back to Florence. I still can’t believe you came all the way to Denmark to attend…! But I’m glad you did, it was nice talking to you.
October 15, 2008
So, time for a (late) JAOO 2008 recap. How was it this year?
Unfortunately, the keynotes were clearly lacking this year, but in very different ways.
Monday, Anders Hejlsberg talked about the future of programming languages. Or should I say, the future of programming languages on the .NET platform. For which there is currently support in Visual Studio. Don’t get me wrong, I actually like .NET, even though I hate Windows. But for the opening keynote, talking about F#, LINQ and P-LINQ (with the Pascal background intro that seems to be becoming the slightly dull backdrop for Hejlsberg’s talks) simply doesn’t cut it. And switching to VS three times to do live demos is just missing the mark by a mile. I was very disappointed with this talk, but mostly because I know how brilliant Hejlsberg is, so I expected more than just an MS-centric view of the future.
Lars Bak talked about V8 tuesday. This keynote was a bit special, because obviously it had to be planned some time in advance, and the V8 project was only revealed very recently.
Working in the office next to Lars and the rest of the Google team here in Aarhus, I was very curious to hear more about what they have been up to for the last few years. In that respect, I certaintly wasn’t disappointed. The talk was rich on details, so having no experience with VMs (in the V8 sense, not the VMware sense :-)), I was lost at times. But this was no problem, and it was great to hear Lars explain about the challenges they’ve been facing in creating V8. Also the QnA session was very good.
So I was very pleased with this keynote, actually. But as someone pointed out to me later on, the topic really wasn’t keynote material. Interesting as it was, and popular as the topic is, it was obviously only relevant for a fraction of the audience. Nevertheless, I personally enjoyed this one.
Wednesday’s keynote was a complete disaster. The otherwise brilliant Guy Steele and Richard Gabriel (who is also very bright, I’m sure) did their “50 in 50” routine, and I have to say that I absolutely loathed every minute of it.
The tagline was something like: 50 remarks in 50 minutes, each 50 words long (if I recall correctly). The remarks were interspersed with images, audio and video clips. The substance of the talk was a tour through the last many (50?) years of programming languages, sprinkled with uber-geeky humour. Definitely not for me, but fortunately, judging from the reaction of the audience, others liked it better.
However, I’m pretty sure noone enjoyed the fact that they went more than 20 minutes over their time slot. Given that the talk was so rigorous in its form, I simply don’t understand how this could happen.
I didn’t see as many talks as I would have liked this year, but I did see some good stuff.
Guy Steele gave a great talk on Fortress. Not unlike the one he gave last year (or was it 2006?) but with even more substance. Some of the maths stuff was over my head, but that didn’t matter. The important this was that the talk was interesting and really whet my appetite for learning more about Fortress.
Also, Sun ran a great little competition in the exhibition area this year. A guy came around to our booth with 2-page Fortress program that solves Sudoku puzzles in a massively parallel fashion. The challenge was to figure out how many threads of execution are used, and the prize was a Sun-branded USB stick with the latest snapshot of Fortress on it. I still have the program on my home office wall, and when I feel like it, I look over it and understand another little chunk. Unambitious, you may say, but a lot better than putting it away and forgetting all about it.
Wednesday, a guy from LEGO gave a pretty weak talk about a project that actually looks very interesting. They’re building a new “robotics platform” called WeDo, which is basically a $30 (IIRC) kit with a few motors and sensors. This was a challenge spurred by the OLPT project, so various measures have been taken to target it at developing countries. For example, the robot is connected to the laptop with a USB cable because batteries may not be readily available. A very cool project, but the presentation was really a drag… For instance, I now know that LEGO uses Perforce for their software projects, and I would have lived happily on without that piece of information.
Lastly, the talk “The lively kernel” by Dan Ingalis was awesome! I urge you to check out this video demo or simply have a go at it yourself. I’m very curious to see what this project might lead to in the future.
The exhibition floor
Again this year, we had a VMware Denmark stand, and we got to show off our software and tell people what we do.
One thing that we all noticed was how much more aware of virtualization everyone was this year. At last year’s JAOO, we were very surprised to learn how many developers simple had no idea that virtualization existed as a concept. But this year, it was different. Maybe because we handed out so many VMware Workstation coupons last year😉
On the demo side, we had taken the time to get a VMotion setup up and running this year. Two ESX hosts and a Linux VM running some streaming video server being moved between them. And obviously a third machine running Virtual Center and a VLC player showing the streaming video without a glitch as the VM was moved. A lot of the attendees didn’t know that this was possible and wanted to know the details of how it works.
Also, we brought our Mac Mini running the recently-released Fusion 2. With all the Google Chrome hype in full effect, it was a lot of fun showing off Chrome running (apparently) natively on the Mac! Of course, it was running in a Windows VM in unity mode, but we did manage to fool a few people
Version 2 of Fusion also adds the ability to run Linux VMs in Unity mode, so we were able to fire up Chrome, Safari and Evolution side-by-side on the (struggling) Mini.
I didn’t go to a lot of talks this year (I was at work most of Tuesday) so I shouldn’t pass judgment on the conference as a whole. But I do think the keynotes left a lot to be desired.
Also, I think the Trifork team should reconsider the number of tracks on the conference. Judging from various Ruby-related blogs, the trend for conferences is clearly in the direction of fewer tracks (often just one) and much shorter talks.
I think this makes perfect sense. We go to conferences to widen our perspectives on software development in general. And you really don’t need 50 minutes to present new ideas or projects. With so many tracks going on at the same time, attendees constantly need to discard a lot of material. This would be less of a problem if there wasn’t such a big overlap between the topics of the tracks. But as it is, I think most developers wish they could follow 2-3 concurrent tracks. This leaves you with a constant feeling of missing out on interesting stuff (which you probably are!), and if you’re unlucky enough to attend a boring talk, its 50 precious minutes gone.
I think the organizers should consider cutting the number of tracks and the length of each talk in half. The talks should inspire and engage the audience, and this can easily be done in 25 minutes, leaving us with an urge to know more. The success of a talk should be measured by the surge of hits to the project’s website after the talk, not by the number of people still present in the room after 50 minutes.
July 12, 2008
As anyone who follows the virtualization business know by now, this has been a tough week for us at VMware.
This event led to a brief discussion with one of my collegues, who is also a former MS employee, about whether or not Microsoft is an evil company.
As he pointed out, MS has invested huge sums in research, and has hired some of the brightest people out there. These people come up with excellent ideas and they receive the funding to put those ideas into practice.
So what is the problem? One word: Windows.
I am not at all a religious man, and I certaintly don’t want to be religious about this either. But the fact of the matter is, I find Windows completely ridiculous as a platform for anything but gaming. This is my honest opinion.
I was frustrated to read an article about Silverlight 2 in the August issue of DDJ. This is actually pretty cool stuff, but it is not for me. I know it runs on my Mac, but you need Windows to do any serious development.
John Lam – what a waste of talent (Photo: timheuer)
I don’t have the patience for running Windows, because it sucks terribly. This is hardly a controversial opinion. I tolerate it at work, because the job is otherwise great, but I wouldn’t dream of running it on my home computers. Over the last few years, I have come to realize that OSX is the only OS that doesn’t suck one way or the other. For a few years, I was running Ubuntu on my laptop, but I was never very happy with it. I was wasting far too much time fixing small problems and trying to get basic stuff like suspend/resume working.
On my MacBook Pro, everything works. I have been using it daily for a few years now, and the number of times is has crashed is still below ten. You would never get that kind of milage from a Windows box, probably not even if you left it idle.
So while I really like .NET, C#, LINQ and all that, I can’t use it, because I can’t stomach the OS that comes with it. I really don’t care very much about whether Microsoft is good or evil, but I’m sad to see so much talent go to waste. This is why I don’t like Microsoft.