Personal website of Filipe Figueiredo Correia
You might have heard of the notion of open data.
I’m very happy to have been involved with something that, I’ve just realized, is now at last available to the world – the new data portal for the Municipality of Porto: dadosabertos.cm-porto.pt. My role has been merely on the software development side of things, but I do hope that society (citizens, industry, press) find these and future datasets useful. The most rewarding for me, in this project, is having contributed to something based on values that I hold so dear, such as transparency and democracy.
In the meantime, I have moved on to other projects, but I have high expectations on the success of this one over the next months, as more datasets are made available. The Open Knowledge Foundation runs a webpage to track the state of government open data, which is great to put things into perspective. It puts Portugal in position #39 (2014 data), and gives an interesting overview by municipality of the datasets that you may expect to find out there.
In case you’re wondering, for Porto’s data portal we have used CKAN, and the source code is available on github.
I haven’t written in this blog for quite a while now, but wow, 2012? Has it really been that long? The reason, to a great extent, has been the writing of a certain PhD thesis. But I’ve finally finish that back in May, so I might find myself again in the mood of writing here more often. Stay tuned.
Meanwhile, I’ve updated my research page, so if you’re curious about what I’ve been working on in the academia, be sure to check it. As to what I’ve been up to in the industry, more news will follow soon ;-)
That’s about it. Really. Ok, I’m leaving out some of the details, but the oficial docs provide the full story, and this stackoverflow thread makes a great reading if you are looking to know more about metaclasses.
Edit: Added a couple of instances to the diagram too.
I stumbled on this 2002 essay by Guy Steele, and it felt more current than ever. Definitely, go read it if you’re interested in the topic.
[…] to say that objects have failed because they don’t solve all possible problems is like saying carbohydrates have failed because you can’t live on pure sugar. […]
Yes, it’s just around the corner. The second edition of the Portugal-located conference on Agile Software Development is two weeks away. We are going to great lengths to bring you a great program, with huge names in the world of software development.
Don’t miss it, really.
What’s the relation between these two, you may ask. Django, and other frameworks of the sort, try to provide all that stuff that developers could otherwise need to implement over and over in their web applications. They allow to focus on what really differentiates our web apps from the rest of them. In part, this means letting developers focus on the domain model.
Django’s models do this well1, but they are more “relational” than they actually needed to be — we still have to deal with stuff like ForeignKeys and the like.
I would rather think exclusively in terms of objects, but, no ORM can fully abstract the relational database underneath. This is a leaky abstraction that half of the world would like to see fixed, and the other half as actually tried to fix it but failed to varying degrees. And that’s why I understand why django’s approach has converged to what it is today. It reflects a reasonable balance of these forces.
I still think there are better names than ForeignKey to represent one-to-many associations, though.
Even if not purely object-oriented in their nature, I still think of django models as object-oriented domain entities. And the domain model of a system can really grow beyond the point where it can fit in a single person’s mind. Django projects are no exception.
So, I’ve been trying to find a tool that helps me dealing with large django projects. Here are some of my findings:
The graphmodels extension is serving me good for now, after some hacking to make the generated diagrams closer to UML class diagrams. Here’s an example of how it looks for the pycon system source code:
Here’s how it looked before the modifications:
This example doesn’t have generalizations, which also look much nicer with my changes. Here’s an example of how they look using my patch, before and after respectively:
Update 2011/09/23: Fixed big mixup with the pictures.
This website’s contents and layout just received a well overdue renewal. Namely, you can now find in here some info about my research, and additional contents will eventually find their way here too.
Lacking the time to make my own theme, this time I’m just going with one by someone else, with of course a couple of customizations of my own. For posterity, this is how the website used to look.
This blog has faded away, and twitter sort of became my voice to the world, but I have no intentions of closing it down just yet. As some say, hope is the last to die, which might explain why I still believe I will manage to post here some thoughts over the next months.
What has been keeping me so busy you ask? My job and my PhD research are the main culprits. I’ve lost count on the number times my thesis title has changed, but I’m pretty confident I’ve finally reached one with which I can reasonably see where I’m heading, and with which I am pretty sure to enjoy the ride. I hope I’ll be ready to give you more details soon :)
But the last few weeks, my mind has also been somewhere else. I’ve been organizing an event on Agile Software Development — Agile Portugal 2010. This will be the biggest event of the kind in Portugal that I have memory of, and putting it together has been quite an endeavor, but an incredibly fun one. I’m very excited about the program and the invited speakers we already have on board, and it keeps getting better and better.
If you want to be part of this great event, you can do it either as a speaker or a participant. The Call for Speakers and the early registration period will be open until the next June 5th.
I’ve just stumbled on this post by Danilo Sato and remembered what a great time we had on the Kake Coding Dojo last August, at Agile 2009.
Want to know what a Kake Coding Dojo is? Hugo Corbucci explains it on his blog, and so does Danilo (note that this Coding Dojo format was previously called UberDojo).
I’m tempted to promote some Kake sessions with fellow co-workers. We’ve been talking about ways to share knowledge on TDD and other agile practices across the company, and I found this to be an excellent way to improve one’s TDD skills, and to have contact with different languages while we’re at it. Will try to report back on my findings.
Update: Hugo has just made a post about this too, with some extra info.
Today I’m going go to sleep with this song on my mind (read it thinking on the melody of On the First Day of Christmas).
On the first day of EuroPLoP, my workshop said to me:
“Delete everything on page 3”
On the second day of EuroPLoP, my workshop said to me:
“Too many patterns,
and Delete everything on page 3”
On the third day of EuroPLoP, my workshop said to me:
“Three known uses,
too many patterns,
and Delete everything on page 3”
On the fourth day of EuroPLoP, my workshop said to me:
“Four forces,
three known uses,
too many patterns,
and Delete everything on page 3”
On the fifth day of EuroPLoP, my workshop said to me:
“Five good things,
four forces,
three known uses,
too many patterns,
and Delete everything on page 3”
On the sixth day of EuroPLoP, my workshop said to me:
“Six dumb suggestions
five good things,
four forces,
three known uses,
too many patterns,
and Delete everything on page 3”
On the seventh day of EuroPLoP, my workshop said to me:
“Seven minor changes,
six dumb suggestions
five good things,
four forces,
three known uses,
too many patterns,
and Delete everything on page 3”
Credits: Not sure who the author is, but Charles Weir has compiled a very fun song sheet of EuroPLoP conferences which I recommend to all the PLoPers out there.
You've reached the personal website of Filipe Correia. Software Engineer and Researcher with an inclination to agile methods, design patterns, architecture, collaborative systems and information science.