Teaching
Today I’m spending half the day at KTH, after having had a group discussion session with my PBL students. Personally, I like the programming sessions much better, it’s more fun to help students solve problems themselves than to question them to see if they’ve done their homework.
I’ve been programming for ten years and I used to help teaching programming for years when I was a student, so I tend to underestimate the amount of preparation needed for me. I always do the programming assignments beforehand as they’re new to me, but reading up on what the students are actually learning is something I’ve overlooked.
I’m programming a quite advanced Python application at the moment, so it’s easy for me to believe that I know all about Python. But for that application, I focus on system architecture, performance, subprocesses, queues, error handling, using external applications and logging and that’s not really what’s taught in this course.
Python syntax and datatypes is something I google when I need to, but after the slightly embarrassing realization that I didn’t know the answer of one of the homework questions today, I’ve decided to read the course literature. It’s probably good to know the difference between a tuple and a list anyway, even if getting away with being clueless is easy being a PBL teacher.
How to question students without having a clue about the answer:
Me: “What is a tuple?” (pointing at a student)
Student: “Bla bla bla”
Me: “Mmmhmm… Is everyone satisfied with this answer or does anyone want to add something?”
Another student: “I think a tuple is more like bla bla bla.”
A third student: “Yes, that’s what I answered too, look here in the book bla bla bla.”
Me: “Those are all good points! Can we now agree on that a tuple is bla bla bla?”
Naturally I would never use this method. Never. ;-)
1 commentAn Office!
I’ve been looking for an office space for a while. Staying in the apartment all day long simply isn’t working, I just hang around in my dressing gown all day not even bothering to brush my teeth in the morning. Cafés are nice, but not really an option, I have too hard a time focusing on my programming in busy environments.
I like having nice, skilled people to talk to, but I’m (still) not sure if I want to surround myself with IT entrepreneurs to get inspiration, or people with other areas of expertise to have an IT free zone where I don’t have to constantly be representative.
For now, I settled for the second option. At least until the summer, I’ll spend my days with underwear designer Noemi, photographer Elin and linguist Malin.
The office is quite close to home and very cozy and relaxed. It’s also very close to a nice yoga center where I can do my yoga and pilates. I try to make intuition based decisions and this feels good.
No commentsFacebook app experimenting
I haven’t had any reason to develop a full Facebook app yet, but since I was curious about their API I’ve been playing around with it. The SATS app was originally something I built years ago for my own webpage when I was a member of SATS (the gym). SATS’ search for classes didn’t have the interface I wanted, so I rearranged the search results a bit more to my liking. (It’s all ugly hacking, stripping data from an HTML result.) To my surprise, they haven’t changed their search functionality since then, so I ported the search to a Facebook app as an experiment. The app resides on my server and I rebuilt the whole front-end to return a JSON object with the data to show, then displaying it with FBML. I’d like to implement more of the existing search functionality, but as this has the status of being an ugly hack depending on SATS not rebuilding their search, I don’t think it’s worth the effort. Oh, and I think the app is buggy in IE at the moment.
After writing the SATS app I got curious about Google App Engine and wanted to do some sort of Hello World to test connecting GAE to a Facebook app. I built a very simple function just to display your friend list as an XML file.
The reason for this is that many of my friends complained about not being able to trace the people disappearing from their friend lists. This is also a convenient way to get the user ids for your friends if you’re developing an application and need test data. I’m not allowed to save versions of friend lists due to Facebook API user terms, but this way the users can save versions of their list to compare.
Comments OffIt’s all Python!
Right now, it’s all about Python.
This week I started teaching again, entry level programming with problem based learning for KTH engineering students. I have my own group of 12 students who’ll (hopefully) be kick-ass programmers in a couple of months! … or at least know the basics of programming. :-)
A few years ago KTH switched from Java to Python in these courses, a very good decision if you ask me. No more “and please ignore that strange main-stuff, we’ll get to that later, for now just copy it”.
Python is clean and the students can get straight to actually writing code that does things. Very pedagogic:
Java Hello World:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Python Hello World:
print "Hello World!"
But even if Python is great for teaching and I really want to have an intense and loving relationship with the language, some aspects of it are new to me, and don’t seem all that good. Yesterday I was working on my current project and I wanted to create a similar object to one already existing, with the same methods, but with its own implementations. To me, coming from the Java-verse, this screams interface. But Python doesn’t have interfaces.
I know that Python is a dynamically typed language and that I can send whatever object I want to a function and just assume it has the method I want to use, but what if someone fucks up?
I’m the only developer in this project at the moment and I think I can trust myself, but how do people in larger projects solve this? What’s the good way of coding what would have been an interface in another language in Python?
2 CommentsHappiness
It’s friday afternoon and I’m at a café, having a soy latte, contemplating.
I’m so happy I get to work with projects I believe in. I love developing ideas that other people have come up with as well as my own, but I want it to be good ideas. Something to be proud of having been part of.
I also like to be able to travel whenever I feel like doing so, being able to plan my own life not being restricted to 6 weeks of vacation (I know, we’re lucky in Sweden) that I can’t even fully choose when to use.
Yesterday I booked a flight to Brussels for FOSDEM (free and open source software developers’ European meeting). I’m going with my boyfriend and a bunch of his geek friends, something I really look forward to. The conference is over a weekend, but I’m spending the whole friday in Brussels as well, shopping and hopefully meeting up with my friend Petra, who lives there at the moment. I’m also planning a trip to San Francisco later this spring, combining a developer conference (Web 2.0 Expo? Google I/O?) with visiting my kick-ass friend Lina who works at Google.
Right now I absolutely love my life.
No commentsFINALLY!
I’ve been wanting to build a couple of really cool social web sites for years. Not very original, right, now everyone are at it. This wasn’t the case a few years back though, so why didn’t I?
1) Lack of time
I had a full time job. I did work with building a community platform in Java, and learned a lot by doing so, but it was never really my ideas that were implemented.
2) Lack of expertise or a team to back me up
I like to think of myself as the one who actually can build anything online, by myself. This is true, to some extent, I can do almost anything. The problem was that what I wanted to do involved some really complex social connections and to my knowledge, databases weren’t really up to that at the time. I needed some real geek power there, which weren’t available at the moment.
But in the last months I’ve started to realize that technology has reached a level where I actually can get stuff done! The ideas I had back then may be obsolete now, but there is so much potential out there right now.
I can use the existing social websites to handle the logins and accounts (Facebook, Google), which automatically creates a great channel straight to the potential users, and I can use Google app engine to host the projects. Cloud services really has helped reduce server costs and eliminated the server config time!
But, what really may be the key I’ve been waiting for is the graph database Neo4J. Pure geek power!
It’s all there now, like someone is constantly tossing stuff at me, yelling “catch!”, and best of all, I have the time to do my projects now.
4 CommentsNot Having an Office
Being a freelance developer means often not having a job to physically go to. I love to be able to work from home, but unfortunately I don’t think it’s good to spend every day all by yourself. It’s hard to believe that anyone would stay sane for a longer period of time during these circumstances.
I don’t really want to go insane, so my plan is to spend not more than half of the estimated 40-hour-weeks at home. One afternoon a week I’ll be at Il Caffè, The Place To Be for freelancers here in Stockholm. When possible, I also plan to spend one day a week at my customers’ offices, even if most projects are of the type that I can just as easily do from home. It’s nice to hang out with the customers and it’s definitely a good way to make sure the communication works well without any larger effort. I’ll also start teaching programming for a couple of hours a week (preferably early in the mornings) so those days I might work the rest of the day from KTH as I’m already there.
But for the rest of the time I need a place in the apartment that’s not completely unergonomic. Right now I’m using the kitchen table and that’s not good for my back.
Ever since I moved to this apartment, a few months ago, I’ve had a vision of me sitting in the living room on my pilates ball that I use as chair (great for the back) at a glass table with my MacBook Pro, hacking away. IKEA has these kind of tables and they’re really cheap, so I think it’s time for an IKEA visit soon!
No commentsFront-end – for Stardoll
Stardoll is a community where little girls (and boys) can play with “paper” dolls. As a user you create a me-doll that resembles (or doesn’t resemble) you, then you dress and accessorize your doll. You also have a “suite” to fill with furniture and pets. You can design your own clothes, buy designer clothing for your doll and have parties in special party chat rooms that you furnish and decorate yourself.
Other than that, Stardoll of course has all the common functionality found in most communites. The community has an astounding nearly 50 million users all over the world!
At Stardoll I coded front-end, which included HTML, CSS, JQuery, JSON, integrations with Flash and PHP.
Comments OffBack on track
After a couple of weeks of Doing Absolutely Nothing (just as planned), I’m ready to take over the world now.
I’ve been sleeping a lot, catching up on TV shows such as Dollhouse and Bones and I’ve barely left the apartment. The first week I almost felt broken. I simply was completely mentally exhausted after a very hectic year, so I’m very thankful that I have the possibility to take a time out like this without having to feel stressed about wasting two precious vacation weeks.
I’m also thankful that I’ve come to realize how important a time out can be. Right now I’m at home, by myself, in Stockholm instead of being in beautiful Jämtland (northern Sweden) with my boyfriend and some of his friends. Now, when I’m back to my normal energy level, I almost regret not going. Trying out the sauna he built (smart AND handy, he’s such a catch) and winter bathing in icy water seems like quite an experience, but I know that this week of solitude was something I really needed. Besides, Stockholm can be amazing during the winter:
My plan was simply to reach the point when doing nothing would bore me enough to make me start wanting to do stuff again. I expected this to take around two weeks (based on my last complete time out in 2006) which turned out to be correct. When I started to clean the whole apartment and doing laundry yesterday I knew I was back. ;-)
Tomorrow I’m starting to work on a really interesting project, which I’ll probably be able to blog more about when it’s finished in about a month. :-D
No comments




