New Life for PHP

I have been a PHP 4 programmer, and a rather disapointed one, I might say.
I come from a Java OO design patterns background, and my entering into the PHP world some years ago was self-forced, mainly because it was (and is) such an ubiquitous language, and also because getting something off the ground was quite easy.

I have been watching the whole ruby and rails thing grow with quite some enthusiasm, and have been trying it out, and even used it on a "real" project.

I know PHP 5 has been around for quite some time, but I only dug into it a couple ou months ago, and I can say that the new version, with java-like method declarations and exceptions has breath a new life into a otherwise aging and spaghetted-out language.

I also know PHP is still not fully object oriented as rails but, in my experience, its runtime environment is quite faster that ruby, and there are a lot of programmers out there not ready to give it up.

Check this out

You will be seeing some new interesting applications and frameworks coming out of this language. Maybe one by yours truly!

Etiquetas: , , ,


Companies are disposable in the US: fear in Europe

Reading Paul Grahams essay "Why not start a startup", I came into a paragraph where he analyses why the fear of incertainty should not drive you not to start a startup:

No one will blame you if the startup tanks, so long as you made a serious effort.
Nor will investors hold it against you, as long as you didn't fail out of laziness or incurable stupidity. I'm told there's a lot of stigma attached to failing in other places—in Europe, for example. Not here. In America, companies, like practically everything else, are disposable.

Americans are not fearful of failure. Is this fact different in Europe?
Has this anything to do with the post World War II Europe? With the generally conservative and social aware mindset?


Reading spree

Since I am on parental leave of absence, I have some time in my hands - I never could sleep during the day to recover from long nights. After finishing 'Don't make me think', I dug into Founders at Work: Stories of Startups' Early Days.
These are a series of interviews with the founders of some of the most successful IT companies. My personal favourites are:
  • Steve Wozniak - Apple Computer - how a geek and his love for engineering and passion for perfection made one of the best computer products ever;
  • Evan Williams - Pyra Labs (Blogger.com) - how he hung to the company and worked solo and for no pay after it went bankrupt, and how he finally managed to sell it to google;
  • Tim Brady - Yahoo - fascinating story of the internet early early days;
  • Paul Buchheit - Worker number 26 of Google. Shows some insight on the internals of Google;
  • Paul Graham - Viaweb - Witty, funny, insightful, excelent writer. I recommend reading Hackers and Painters: Essays on the Art of Programming;
  • Caterina Fake - Flickr - why and how you should adapt and evolve from your original plans;
  • Brewster Kahle - WAIS, Internet Archive, Alexa Internet - the vision of one of the web messias. How you should have a long long (life long) term vision and stick with it;
  • Charles Geschke - Adobe Systems - how competence and technological superiority beat big ones like Microsoft and Apple. How to evolve and invest to survive;
  • Stephen Kaufer - Trip Advisor - My love for the tourism market...
  • Blake Ross - Firefox - how a great hacker made a great product;


Don't make me think

I am no usability expert, but I always have been interested in what makes a good user web interface.
This book is for people interested in this subject but that, like me are not experts in the matter. It has good insights on web conventions and why they are good, simple rules on information architecture, navigation, usability tests, with a common sense non accademic approach.
My personal favourite is a chapter about what to do when your boss forces you to implement a bad idea. The author actually wrote serveral letter templates in which you can fill in the blanks, on where he tries to convince your boss on why some ideas are bad.

It's a delight to read, the writer is witty and funny and the whole book is very insightful.


Ryan Carson no Future of web apps

Estou sempre interessado em ouvir experiências sobre montagens de negócios web-based (e não só).
Subscrevi o podcast do Carson Workshop Summit que aconteceu em Londres no dia 8 de Fevereiro, e gostei especialmente da intervenção do Ryan Carson, o fundador da empresa Carson Systems, na qual ele fala sobre o desenvolvimento do negócio DropSend.

Alguns pontos importantes que eu retirei:
  • A importância de ter um modelo de cashflow baseado num cenário pessimista;
  • Keep the fluff out
  • A importância de formalizar contratos com subcontratantes
  • Dificuldade na criação de uma merchant account;
  • os atrasos inevitáveis no desenvolvimento
  • como o orçamento é sempre ultrapassado em 10%
  • 30.000 libras - o custo final de implementação do sistema todo;
Ouçam mais aqui:



Já não há desculpas

Free Linux Driver Development

Agora já não há desculpas.


História das linguagens de programação

Já conheço há algum tempo este diagrama com as linguagens de programação, mas gosto sempre de vê-lo actualizado.


Ubuntu Studio

Estou há montes de tempo à espera de uma distribuição deste género: Ubuntu Studio.

Vou instalar um novo PC em casa para, além de outras funcionalidades, fazer gravação e edição de som, e estava revoltado por ter de inevitavelmente utilizar windows.
Está previsto para Abril. Mal posso esperar...

Via claudiofranco.net



Migrei para beta.blogger.com

Migrei o serviço de blogging para a versão beta do blogger.
Tanto quanto consegui ver, a migração decorreu sem espinhas.

Redes sociais - decentralizaed social networking framework

Um excelente artigo de Khoi Vinh, onde ele analisa o problema da proliferação dos perfis de um utilizador nas aplicações de redes sociais, e propõe a unificação desse perfil.

[...]Which just fills me with greater discouragement about the prospects for a decentralized social networking framework that can ensure a moderate level of inter-operability. I call the idea, “Network Once, Socialize Anywhere.” Why should I have to connect to my best friend, say, once on Flickr, once on LinkedIn, once on Twitter and again for as many new cool networks as will arise in 2007?


Ruby on Rails

Comecei a meter o focinho na linguagem Ruby e na framework de desenvolvimento web Rails e estou impressionado com os ganhos de produtividade e o suporte que existe na comunidade, em especial da gente do 37signals.

Aconselho, como introdução à linguagem Ruby (que eu desconhecia de todo), quickstart "oficial", o Programming Ruby - The Pragmatic Programmer's Guide do próprio autor, e para quem quer rir um bom bocado este não menos útil Why’s (Poignant) Guide to Ruby.

Quanto ao Rails, vão encontrar muita coisa no site oficial, mas aconselho:

» Rolling with Ruby on Rails - Só arranha a superfície, não é muito preciso, mas também não maça com pormenores;
» Rolling with Ruby on Rails, Part 2 - útil, melhor que a parte 1;
» Um excelente video sobre como construir uma aplicação de blog em 10 minutos.
» A API - Elementar, caro Watson.


O melhor videoclip dos últimos tempos

E quando digo últimos tempos, refiro-me a largas décadas - pelo menos duas.

Gosto da música, mas o videoclip é excepcional. É a prova que sa podem fazer coisas muito boas com pouco dinheiro, muita imaginação, dedicação e paciência.


As leis da simplicidade

Um blog a não perder: http://lawsofsimplicity.com

Do autor John Maeda, que apontou 10 falhas de usabilidade numa nova máquina de filmar da Sony.

Com um excelente artigo a introduzir as 10 leis da simplicidade.



Mas que idéia brilhante!

O gajo que se lembra desta forma de autenticação é um génio!

No Boing Boing:

MySpace says that if someone is pretending to be you on their site, you can confirm your identity by sending in a picture of yourself giving a "MySpace salute" ("holding a handwritten sign with the word 'MySpace.com' and your Friend ID"). As Waxy notes, "it's a good thing there's no way to fake photographs on a computer." Pictured here: an Iraqi child confirming his identity as Rupert Murdoch.



Web 2.0 - what is it?

From Techcrunch:

A couple of weeks ago Michael Arrington got together with a number of startup CEOs and executives to video a discussion about Web 2.0. Participating in the discussion were Aaron Cohen (Bolt), Scott Milener and Steven Lurie (Browster), Keith Teare (edgeio), Steven Marder (Eurekster), Joe Kraus (JotSpot), Jeremy Verba (Piczo), Auren Hoffman (Rapleaf), Chris Alden (Rojo), Gautam Godhwani (Simply Hired), Jonathan Abrams (Socializr), David Sifry (Technorati), Matt Sanchez (Video Egg) and Michael Tanne (Wink).

The topics discussed included:

1. What is Web 2.0?
2. Are we in a bubble?
3. What are the business models that will work on the web today?
4. What is the role of publishers in a user generated world?
5. How important and how big is the early adopter crowd?



cron.daily no Suse

Um cliente nosso tem um servidor de produção com o Suse 10.
Coloquei um script na directoria cron.daily para actualizar as estatísticas web todos os dias.
Mas não consegui encontrar no sistema a que horas estes scripts estavam destinados a correr.
Depois de muito pesquisar, finalmente percebi que o script que despoleta estes scripts verifica qual a última vez que correu o daily, e se tiver sido há mais de 24 horas, volta a corrê-los.
Basta, portanto, fazer um touch ao ficheiro /var/spool/cron/lastrun/cron.daily com a hora certa, et voilá!

Por exemplo, para correr oos cron-daily às 4 da manhã:

touch -t 07240400 /var/spool/cron/lastrun/cron.daily


Agile development pitfalls

A methodology is a good thing, isn't it? Sure, nothing can replace experienced programmers, and a porject is doomed at start if taken in the wrong technical direction. So, any given methodology can work for some, and not work for many.

The number one problem with the big "M" Methodology is that it relies on "paperwork" replacing people skills, it takes the responsability from the individual and gives it to the "institution", often rendering an semi-automated process that can produce lots of documentation on how to develop a low quality product.

Beeing not a friend of paperwork, I have been looking into Agile methodologies.
Here is a good article that looks into some common pitfalls of implementing such types of methodologies.


Eclispe: Migrating development environment

I have been using as my development tools in Linux:

  • Emacs

  • Subversion

  • Ant

Using a mix of following languages:

  • PHP


  • Java

So, I don't really have an integrated development environment. I use command line to invoke subversion and ant, and do all my editing using Emacs.
So far it has been ok for me, but it can be quite hard for someone coming from Visual Studio .Net, as some of my co-workers are.
So, I turned into Eclipse. Eclipse is mainly tailored provide an IDE for Java development, but has quite a good plugin framework, and there are some good plugins out there.

Tigris provides a plugin for subversion named subclipse that works quite well.

Also I found a quite nice PHP plugin for Eclipse named phpeclipse.
I am fiddling around with it for a while before imposing it to my fellow co-workers.

Stay tuned for updates.


ganttproject, awt and x11

I was looking for a project management tool that runs on Linux.
I thought I would try the preview of version 2.0 of GanttProject.
Downloaded and installed.
When running I got the following error:

java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_10/jre/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1503)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(NativeLibLoader.java:38)
at sun.awt.DebugHelper.(DebugHelper.java:29)
at java.awt.Component.(Component.java:506)
at net.sourceforge.ganttproject.application.MainApplication.run(MainAppl ication.java:33)
at org.bardsoftware.impl.eclipsito.ApplicationLauncher.launchApplication (ApplicationLauncher.java:29)
at org.bardsoftware.impl.eclipsito.BootImpl$2.run(BootImpl.java:45)

Had to install xorg-x11-deprecated-libs package by running

> yum install xorg-x11-deprecated-libs

And it worked!
(don't ask me why...)


database comparison

Here is a nice comparison between MySQL, Oracle and PostgreSQL.

I would like to see SQLServer added...


Design Patterns

Hey, I am a bug fan of Software Design Patterns.
For those who love the Gang-Of-Four book and want some patterns reference with thourough and hands-on details and examples for each pattern.

*ahem* - reading the book is not optional. ;)


Agile Development

I think that enough has been said about agile development methodologies, but this article by Martin Fowler, one of the Agile Development founders, really sums it up well, with a pragmatic (and agile) view over software development processes.


Google sitemaps and python

I am going to start fiddling with Google Sitemap, still in beta. This is a tool that helps google index a site. With this you can publis some meta-data about your site, like refresh rates, relevance, ...

For starters, following Google's instructions, I started by downloading python, necessary to run the sitemap generator script.
I installed the python 2.3 rpm (I still hava an oldie Suse 9.0 installation), but that was not enough.
Still needed to install the python-xml package...

It worked. Keep posted for updates on that.


Bug, request, source tracking and Wiki

I have been using Bugzilla for quite some time.
Then came a client that hated complex procedures. Bugzilla was not the interface for him. Bugzilla is more for tech-teams usage, not for a client in a marketing dep who wants an easy way to keep track of their requests.

And then came Trac. It's a python and sqlite. It's a bug/request-tracking system (aka ticket system) bundled with a very nice Subversion integration, Wiki (with attachments).

It has a very clean and friendly interface.

My client loved it.


Desktops - Windows, Linux and MacOs

The coming Microsoft Windows Vista and the Apple's migration to Intel has put a lot of people talking about the Desktop OS for a long time.

Here is my 5 cents:

People are used to Windows, and you can't beat that. People are averse to change. If chaging currencies from escudos to euros would never work if people were not obligated, imagine what the learning curve is for someone using Windows to migrate to Linux!

And I also speak for me! Working with a different Linux distro (switching from Suse to Fedora Core 4 has somehow put the sweats on me...

As much as I like to explore new things, I just can't find the time to switch. I will only do so when I really have...

People will on change when the companies want to switch. But you cant't expect that big companies (the ones that really matter for this case) will want to switch. No CTO will put his neck out that much...

Linux and MacOS will continue to exist in the desktop, beeing used only by tecno freaks fringes.



I started experimenting with Subversion, the panacea for the aging CVS, and I am beginning to adore it.
It meshes the branch and directories concept, which may sound a bit frightening at beginning, but really fits my working model.
It also has very nice features, like:

- directory tracking;
- complete file tracking - tracks renames and copies;

I migrated my big CVS repository into Subversion quite painlessly using cvs2svn, setup ssh tunnelling so I can access the repository froma anywhere in the world, and voilá! (Minus some apache mod_python module incompatibilities, which were solved when I installed Fedora Core 3 from scratch).

5 thumbs up! ;)