Archive for the ‘Personal’ Category

Something I just remembered

Roughly 17 years ago, I was in love with QuickBasic. After a while using GWBasic (not to mention years of using BASIC on other systems, such as the Brazilian Sinclair ZX81 clone TK-85, the MSX 1.0, and the Apple II), QuickBasic was a real milestone in my life. It was when I changed from using line numbers and a pretty mangled structure in my programs (using subroutines with GOSUBs and GOTOs) to a more organized one with functions and procedures. I also loved how easy it was to debug inside the Quickbasic 4.5 IDE – you could stop your program at any time, do changes to your code, and then continue running. Programs were interpreted, and while speed wasn’t the best compared to other platforms available for similar DOS machines, immediate execution, easy debugging and the ability to compile executables later made it the platform of choice for all the small programs I liked to create – database merging systems, small graphical or text-based games, and general tools I used on my daily work.

Quickbasic 4.5

QuickBasic 4.5 (click for source)

But even though I used QuickBasic for most of my stuff, I also used other languages like C and Pascal at high school. For the latter, my IDE of choice was Turbo Pascal. And it’s within that development environment that I had my first run-in with Turbo Vision.

Turbo Vision was, in a nutshell, a framework to create user interface elements for Turbo Pascal programs. It allowed you to easily create menus, buttons, dialog windows and the alike – something that was still pretty rare at the time (considering DOS programs were never really about the user interface). Being able to quickly construct a program with such a high-level interface without doing everything from scratch was quite a shock to me.

Turbo Vision example

Screenshot of "Quadra", showing what a Turbo Vision interface looked like (Click for source)

An even bigger shock was understanding that you could actually create common libraries or frameworks and reuse them on different projects. As obvious as it is today, my self-taught understanding of program structures at the time hadn’t grasped this concept yet. Turbo Vision itself was beautiful, but the idea of Turbo Vision was, for my little coder mind, revolutionary.

So after having my first experience with Turbo Vision, I set out to create a similar framework in QuickBasic that I could use for my own programs (while I enjoyed the speed and correctness of languages like C and Pascal, not to mention the speed, I enjoyed the agility I had with QuickBasic even more).

The result was a bunch of subroutines that could be called to draw and control everything. You could create screen elements like buttons, editable text fields, windows, check boxes, radio buttons, menus and the like, with full tabbing/focusing/clipboard support, and control them using a higher-level API. That allowed me to add great interface elements to my simple programs quite easily, without having to worry about rewriting it every time I needed to create something new. The implementation was somewhat ugly, since QuickBasic would run in a single thread and I had to move execution from one element to another and deal with the return result to know what to do, but it was clear enough in a way that allowed me to reuse elements with certain ease. I still have that code somewhere around my computer.

Fast forward to 2003, around a decade later – after I had abandoned QuickBasic, used a few other platforms and languages, until finally settling with development for the web. While I’m working with ActionScript and developing some visual components for a website, I had an epiphany: I was doing the same thing I had done 10 years before.

The operating system was different: Windows, instead of DOS; the language was not QuickBasic anymore, but ActionScript; I wasn’t building a text-based application, but rather one that used graphical user interface elements and the mouse; I wasn’t reading data from the disk, but from some asynchronous network resource. But still, I was doing the same thing: creating graphical elements that were meant to be reused.

A decade before, I had no idea I was going to be working with Flash (since that didn’t exist), or even be building those kinds of interfaces. Of course I had no idea I would be building something meant to be used over the Internet either. And I had even take some pretty odd routes along the way of my earlier career, focusing in graphic design and animation instead of programming, but still, there I was, full circle, back doing what could be said to be basically the same thing I had been doing at high school, only in an updated environment.

And while I’m not really that old, I like to see this as a great example that no technology lasts forever, and that programmers can’t have any idea of what they’ll be working 10 years later. And, perhaps more strongly now, that while the environment they’re using might be completely different, the concepts they’ve learned before will carry on. In a nutshell, your experience is not the language you use, but what you do with that language.

I guess it doesn’t take much to see how that applies to the issue I’m seeing people debating today – “Rich Internet” platforms like Flash, SilverLight, HTML 5, and a few others. I’ll be the douchebag who quotes himself and just paste what I had to say a short while ago in my FWA interview:

Q. Do you think Flash is here to stay?

A. In a way, most definitely. Flash was the first software platform to allow developers to easily create rich interactive animations for the everyday user, so whatever Flash has brought and is still bringing is something other platforms are playing catch up to adopt.

But on the other hand, you can never predict what the future will be like. When I started working with interface development, Flash didn’t exist and I couldn’t even predict I’d be working with something like it 15 years later.

I love Flash, but after having worked with it for more than a decade and seeing it radically transformed so many times, it’s as if the name doesn’t matter that much anymore. I think what we call RIA development is the thing that’s here to stay and that’ll just become bigger with time, but the name under the hood becomes almost irrelevant. Even if it’s Flash and ActionScript, it’s going to be a different Flash and a different language in a few years. With similarities, but then again there are similarities between ActionScript, Java, and C#. Being attached to that kind of brand isn’t very healthy I guess

Here’s something a lot of people forget – we’re not in this business because we’re using language XYZ. While a lot of people like to draw that kind of conclusion – because, after all, their experience is usually focused on a single language, not to mention the need to identify with a certain group – the market itself changes over time and it’s natural for one language to replace another as the language of choice for a specific task. Remember when Perl was the de-facto server-side language for the web? If you considered yourself a “Perl specialist”, instead of a server-side programmer, you’d be stuck when people started to migrate their systems to PHP and others.

I see the current state of rich interfaces development the same way. We’re doing Flash today – because it’s widespread, the tools available (official or not) are stable enough, it has an awesome community, and it’s generally easy to develop for. What are we going to use tomorrow? I don’t know, but the knowledge I’ve gathered over the years – developing the interface elements I’ve been using, learning about asynchronous data loading and user interface issues – will carry over, regardless of the new platform I’m using.

Now, there’s a lot that could be said against HTML5. Performance issues, compatibility, much slower user penetration, lack of features, how it’s only adding the same features and problems people criticized in Flash before. All has been said and, I’m sure, will be said as soon as HTML5 start to become a real contender and its flaws become more obvious in a real world scenario.

But you know what? It doesn’t matter. Because HTML5 will either work out or it won’t. And, as a developer, it’s not my job to root for one specific side. It’s my job to absorb whatever there’s to be absorbed and move on. Be it HTML and JavaScript, be it ActionScript, be it Silverlight, I’m pretty sure the higher-level knowledge I’ve gathered through the years that are outside the syntax realm will carry on.

I can’t be sure of what I’ll be working with in 10 years. And neither can you.

The obligatory post-Encontro de Web Design post

Note: this post is in Brazilian Portuguese. Its contents – in which I talk about a presentation I’ve given a couple of days ago – are only important for people who live in Brazil, and as such, I’m opening another exception and writing in my own language. Sorry, everybody else. If you want, there’s a translation here.

Voltei anteontem do 14º Encontro de Web Design (EWD), no Rio de Janeiro, e agora finalmente tenho tempo pra escrever um pouquinho sobre isso.

Sem ser muito redundante e repetindo só um pouco o que já foi dito por muitos dos participantes, foi um ótimo evento. Talvez algo possa ser reformulado, como colocar tempo para perguntas e respostas no final de cada palestra – evitando misturar muitos assuntos diferentes na mesa redonda final ou fragmentar a audiência – ou adicionar mais “tracks” simultâneos no futuro, mas, no geral, eu acho que o saldo foi bastante positivo. A Cristiane, a Adriana e todos os envolvidos merecem os parabéns pela organização.

14º Encontro de Webdesign - foto por Luís Ricardo

14º Encontro de Webdesign - foto por Luís Ricardo

Eu sou especialmente agradecido pela oportunidade de ter falado lá, ainda que acredite que o conteúdo da minha apresentação – que era mais focado em um aspecto do mercado de desenvolvimento – tenha sido menos um “convite para reflexão” do que as outras palestras, em especial a do Roberto Cassano (que realmente abriu meus olhos).

Agradeço também em especial ao Bruno Ribeiro e a toda sua família por terem me recebido super bem. Eles tiveram uma papel muito importante em fazer com que esta breve visita ao Rio tenha sido tão agradável como foi.

Agora ambos o EWD e o Encontro de TI fazem as malas e preparam-se para aportar na capital Paulista – no dia 25 de Abril, teremos os mesmos 14º EWD e 2º ETI em São Paulo. Eu vou estar lá dando a mesma palestra – ainda que um pouco reformulada, e falando mais devagar. :)

Esta também é a razão para ainda não disponibilizar o slideshow da minha apresentação ainda; ele estará no ar dia 25.

Até lá!

Preparing the next talk… with a little help from my (online) friends

Note: this post is in Brazilian Portuguese. Its contents – in which I ask for suggestions about an upcoming presentation I’ll give – are only important for people who live in Brazil, and as such, I’m opening an exception and writing in my own language. Sorry, everybody else. If you want, there’s a translation here.

No próximo dia 28 de março, vou dar uma palestra no 14º Encontro de Webdesign, que acontece no Rio de Janeiro. O título da palestra é “Interfaces ricas como ferramenta de envolvimento do público” e vou falar sobre como interfaces “ricas” – Flash, hoje, mas não necessariamente, amanhã – são utilizadas, em especial pelo mercado publicitário, como parte de sua estratégia online através da geração de conteúdo pelo público. Vou falar sobre o lance todo do ponto de vista de um desenvolvedor, e mostrar alguns exemplos (meus e de terceiros) de como isso tudo acontece. É uma coisa meio sobre publicidade mesmo, uma visão da indústria pra indústria (nada sobre ativismo social ou coisa assim, só pra deixar claro). Não que eu seja um amante da publicidade, já que sou programador e vou falar mais da parte prática da coisa, mas enfim.

Bom, pegando carona neste post do Roberto Cassano, e até porque o evento está focado em redes sociais, queria perguntar pro público que pretende comparecer a este evento (ou, potencialmente, ao mesmo evento, em outras localidades) o que esperam da apresentação. Na verdade, já tenho a estrutura da apresentação planejada (introdução sobre a plataforma; contextualização e comparação com outras plataformas e utilização, problemas e vantagens; vários cases; detalhes técnicos como métricas), mas ainda existem tópicos que posso diminuir ou dar mais ênfase de modo a aproveitar melhor o tempo de apresentação (45 minutos) e até porque não vai ter rodada de perguntas imediatamente após a palestra (só mais tarde, numa mesa redonda).

Não vou fazer um form do Google Docs, mas queria perguntar o seguinte: tem algo específico que vocês querem ver explicado na palestra? Tem algum assunto, polêmico ou não, que vocês acham que precisa falar? Tem algo que precisa ser explicado? Vocês detestam Flash e precisam ver razão pra ele ser usado? Vocês adoram Flash e precisam ver razão pra ele não ser usado? (E quando falo “Flash”, eu me refiro também a plataformas de “interface rica” semelhantes – estou juntando Flash, SilverLight, JavaFX e etc no mesmo saco).

Pergunto isso pra todos, mas mais quem não trabalha especificamente na área de desenvolvimento Flash (ou semelhantes) mesmo. Imagino que o público da palestra seja um público mais misto, e às vezes a gente fica meio alienado quando falamos só com nossos pares, então fico curioso pra saber se tem algo que esqueci de colocar na minha estrutura.

Sei que as perguntas são bastante genéricas, mas enfim, fica aí o pedido. Respostas podem ser colocadas nos comentários do post, enviadas pro email zeh arroba zehfernando ponto com, enviadas via Twitter, etc etc. Comentários podem ser anônimos e críticos, mas tenho alergia a flames, então keep it beautiful. Valeu!

Attending Campus Party

This week I’ll be working from Campus Party, so for the curious, I’ll be doing small twitter updates (mostly in Brazilian Portuguese) from there. I won’t do any kind of live coverage or public reporting or anything, since I’ll be there mostly to see friends (in the Games area) though, but if anyone else is also attending: see you there.

The end of the end

When I went back to college, 4 years ago, most of my peers thought the decision was commendable but kind of crazy – I had already been working for 11 years in the interface development field, and people who hired me couldn’t care less if I had a degree or not; not that it wouldn’t be a good thing to have, but that my experience with the technologies used more than made up for it. When I told people I was going to college, their response wasn’t “Nice!” or “Congratulations!”, but “Why?”.

At this point it may sound like I’m going to say “they thought wrong!”. Not really. They were right, it was a bit crazy to do it.

Still, going to college and successfully getting a degree was something I’ve always wanted to do, and I guess that desire was heightened by the fact that I never had the resources – both money and time – to do it, and when I finally managed to save enough money and make a flexible schedule possible for me, I embraced it and went to get a bachelor in Digital Interface Design.

I started without a lot of expectations; maybe gathering some theoretical knowledge, getting a diploma at the end, and having the confidence that I could stand something for a long time if I focused myself on it (I had started college before, but stopped halfway through it).

What I ended up with was so much more, however.

What was interesting, I guess, is having different lines of thought, or different situations, to put yourself into. My work is highly technical, and I like to believe I do my work well, but once I was in college, I had to put myself into tasks that weren’t really the tasks I was used to, like research and analysis of knowledge not directly related to my work. I went there sort of expecting to know it all, but was taken aback by the amount of interesting new stuff I had to deal with – even if they weren’t exactly new.

That also included technologies that aren’t, again, directly related to my work – if I hadn’t gone to college, I probably wouldn’t have yet learned of Max/MSP/Jitter and vvvv, and wouldn’t be hypnotized by the easiness with which their visual programming approach allows anyone to create rich interactive graphics. It’s no surprise I was so inspired by those programs that I even built a similar environment for my thesis project, and that alone would be reason enough to say that going to college was worth it.

And in the sense of doing different stuff, going to college also gave me the chance to go and teach some classes (Flash, Flash Lite, and Processing), something I was quite sure I would never do in my life. As all the rest, it was an amazing learning experience and something I’ll hopefully repeat in the feature.

And there were the people.

Now,  I don’t consider myself a recluse in any way. I like to believe I work well with groups of people, both in the workplace or otherwise. But going back to college was a kind of a surreal experience. My colleagues were on average 10 years younger than me, something that may not sound like a lot but that makes a huge difference when you’re talking about people still on their teenage years, so we had some differences to work with; I had to refrain myself from not saying “in my time…” too often, as some of the differences were enormous – no Internet when I was a kid! Phone lines were a lot more expensive! No cellphones or digital cameras! – but still, dealing with them, and watching them grow as people, was nothing short of extraordinary. I’ve seen people complaining that young people nowadays have everything at their feet but still are lazy as fuck, and I’ve done my share of bitching, but in all honesty, comparing some of my fellow students with the mindset I had when I was their age, they’re far ahead and bound for a bright future. Working with them was nothing short of a lesson about people and even about myself; I believe I’m a much person now than I was 4 years ago. I miss them already.

Truth is, going back to college so late for me was a bless in disguise. Going there with a lot of practical knowledge, even if with a lot more still left to learn, gave me the ability to understand so much better what teachers had to say. It was often that I would leave class with the perception that I had realized something extremely important about the world, or something that I had to read a lot more about; and yet, not all of my colleagues shared the same feeling. Not because they were stupid in any way, but because many times they lacked the contextual knowledge needed to properly understand what was being said.

I’ve always been of the opinion that going to college isn’t something of ultimate importance (that’s a sort of a big discussion around here) and, in some ways, I’m still like that; you can learn a lot, specially gather a lot more practical skills, doing real work instead of sitting somewhere with someone babbling over your ears, and I certainly would never have a problem hiring someone without a college degree. However, going to college at some point in time is something I now see as extremely positive, and something I strongly recommend to anyone – but only if you allow yourself to bask in its mind-shifting soup. It’s too easy to just go there and get a grade that’s good enough to carry you on to the next semester, I suppose, but then you’ll be going there just for a diploma.

With that stage bittersweetly out of the way, I can finally move on. That’s not to say I’ll be allowed to slack so soon – as I mentioned earlier, I’m working for Firstborn, and now that college obligations are over, I’ll be moving to NY to work with them. This means I have to spend holidays writing documents for the visa process – which is cool, though, as they’ve always been specially patient with me, and I’m really glad of the work I’ve done for them for the past year or so. So, thanks Francis, Dan, Michael, Luba, Avery, Wes, Will, Izaías, Joon, Jennifer, Maria, Ryan, Eric, Lauren, Takahashi, and Max, and everybody else, Firstborners and former Firstborners; it’s over now, and I’ll hopefully see you guys soon.

Also, while I’m at it, many thanks to the fine people at Grafikonstruct and Gringo, as this college plan wouldn’t have been possible (or would have been a lot more difficult) without their partnership and support.

Sup

I’ve finally finished the last touches to the website’s WordPress template and moved all posts and comments. Welcome to yet another new version of my website. There’s a few navigation things missing, and some files I still have to move, but they’ll get done with time.

And hey, go grab Flash 10, it was released just yesterday.

The beginning of the end

Well, 87.5% done.

I haven’t talked much about it here, but back in january 2005, I went back to college – only 10 years later than usual (I’ve started working when I was 16 and never actually got a degree – I’m 30 now). The plan was to get a bachelor degree in Digital Interface Design, and it was meant to take 4 years of my life to do so.

Fast forward to this day and I’m almost there – with my 7th semester just finished and going to the last one at full speed, it’s hopefully just a matter of time until I’ve checked this out of my life’s to-do list.

This is the main reason I haven’t been posting here for a while. Also one of the main reasons why I have neglected important updates to projects like Tweener (much to my frustration, believe me).

This post isn’t one of those common “Hey, I haven’t been writing for a while, but I’m alive” posts though. It’s more to let some friends – which I know read this website – know what I’m up to and a kind of a little look back at the past few years.

Well, this last year of college is the year we’ll all be finishing our bachelor thesis. While it’s different from what you’d expect from similar projects found on universities in the United States or Europe, it’s still a pretty big project and something that’s meant to occupy all the time I have left.

My own thesis is some cool (or so I hope) image and sound synthesis software built on top of Flash 10. I won’t talk about it too much here yet since it’s in a very early state and not very usable, but I can barely wait until I have something cool to show.

The other biggest reason why I have been away is that, despite college stuff, I’ve also been focusing on doing my real work. If it wasn’t clear from this great interview by Mathieu Badimon for the FWA website or this article for the same website, I’ve been working remotely since late last year for Firstborn as a dedicated Flash developer. I couldn’t be happier as it’s actually a place I’ve wanted to work for for a long time; the story of how this happened is actually an interesting story of some wishful thinking that turned out to be true much faster than I expected, and I’ll probably have to write a few more words about it some day.

All in all, this is being a tough year – too much happening at the same time. I feel kind of like Indiana Jones running from a huge stone sphere that’s about to crush him. Still, it’s been pretty thrilling and it’s bound to end pretty soon as I finish my graduation.

Or just restart in a different fashion.

Election 2008: Do the right thing

I don’t live in the United States and obviously I don’t vote there, but I believe the decisions of its leader have ramifications on a global scale and, as as many other earthlings do, I hope the best candidate will be picked by voters.

In that vein, I’d like to suggest actual voters to read CNET News’ tech-friendly candidate comparison and see how their candidates stand on a number of different tech- and internet-related topics.

Furthermore, CNET also has a special section for coverage of the 2008 elections. It covers tech-related news about the candidates, and has a number of different links that may help one deciding on a candidate worth a vote.

Brazil to host the 2014 World Cup

This is awesome. There’s a lot of work left to be done now to get our stadiums to the level of a World Cup, but I can tell you the entire country will stop for this single event. We already do for World Cups held elsewhere, so this one will be craziness.