Posts filed under ‘Uncategorized’

Seam 3 – What’s going on

Hi all!

I’ve been blogging about Seam and specially Seam 3 since a few months ago. Recently, new [and big] changes were proposed and commented at IRC channels and at this post (by Shane).

Well, I really didn’t have time to absorb everything, but I’m writing this post to report some thoughts from Seam user’s community who have showed me their opinions.

Contextualizing

Seam 3 – The Good points

Seam 3 is pretty different from Seam 2. First, the idea of MODULE is pretty awesome, it allows flexibility, freedom for developing new ideas, Maven integration (yes, was pretty hard with Seam 2); also allows new contributors have more space for implementing their ideas and so on.

Seam 3 – the main problems

I’ve been saying this since I started using Seam 3 – it has several problems. There are few examples (and the existing ones are too simple – and part of that is my fault, I really should have published more posts and tutorials), there are no books about it. Another big problem – Seam is not that simple to use – you need a big skill set to start (JEE – CDI, JSF; Maven; controlling an app server and so on); it’s not like Rails (even if you don’t know Ruby or Active record pattern, or MVC, it IS possible to get something working with Rails, even if your code gets really bad). This not happens to Seam.

Another problem reported by community – what’s Seam goal? I mean, look at Hibernate – it has a main propose – ORM. And Seam 3? Is it CDI? People ask me “Ok, I like Seam 3 modules, but what’s the main goal? For example, I use Seam Social module, but is it really related to CDI?”

These problems have created an awkward situation for developers. Lots of ppl don’t feel comfortable to adopt Seam 3 for production; this scenery  prints an image of unstable or immature framework, which I can say that is completely FALSE. Seam 3 has lots of nice features and solves several problems in an easy way. Unfortunately, I think it’s pretty hard to use; so it scares new JEE users.

Seam 3 – the new proposals

In Shane’s words, due to Seam 3 focus problem – “instead of Seam trying to capture all of the CDI extensions in one place, like Pokemon, we should be trying to propagate them throughout the greater developer community instead.” – and them were presented some changes, like moving Seam persistence, REST and faces modules to other Jboss projects.

Well, community showed their concerns about it (sending me some emails and tweets). Next, a little summary about what ppl said: (ATTENTION – THIS IS NOT MY PERSONAL OPINION)
1. Why did the guys decided it? It was a big change from Seam 2 to 3, and community is not ready for a change like that yet.
2. Ppl don’t believe in compatibility. Some developers already have Seam 3 in production systems and they are really worried about it.
3. “WHY RICHFACES?? I USE PRIMEFACES! SEAM FACES SHOULD NOT BE WITH RICHFACES” (this guy was screaming)
4. “HIBERNATE??” – same guy above
5. “bad shot. The impression that I get is that you are tired of Seam, module leaders are disperse and you are giving up of the project, fitting it into other JBos products”
6. “Seam is gonna die. ok, I’ll start my new project with PlayFMK”
7. “Come on, Red hat should hire more ppl to work with Seam and to write more docs for it, instead killing the project” .
8. “F2F == RIP Seam”
9. Modules created in a not centralized environment, so this generates communication problems and it gets difficult for creating documentation and examples.
10. “WTF??” – Seam new users and ppl that are not directly involved with community contributors or IRC channels.

In my opinion, Seam 3 has some problems (that deserve their own post), but I see good and bad things with the new changes. First, I just think that this approach caused wrong impressions, leading ppl to think the project will die or everyone lost the interest for keeping the project.
I really don’t think Shane, Dan, Pmuir (Pete), Lightguard (Jason), Gastaldi or Lincoln would abort Seam, I mean, I see these guys at IRC channels and I see their passion for the project.
But be careful – how many Open Source projects have you seen that died suddenly? There are lots of dead projects, specially at Ruby Community. Death reasons – LOST their focus, got too complex, few documentation, absence of new features. Unfortunately, Seam 3 has some common problems.
Maybe these new proposed changes help to change this situation, focusing on CDI implementations and joining some correlated modules. But IMHO, it would also weaken Seam identity by merging some parts of it with other projects. I really don’t have a clear idea about the final effects – as I said, there are good and bad parts.

Summary

– Seam is not gonna die.
– Everyone who talked to me got a bad impression about these changes. It clearly wasn’t a good approach.
– These changes have good and bad points.
– Seam 3 need more focus and solid examples.

Seam 3 has an absurd potential and more, wonderful contributors building the framework. The only thing I’d like to ask – no panic. Community, keep using Seam 3! It IS nice and powerful. Contributors – that was not the best approach, but move on and keep showing your passion and tech skills by taking care of the framework.

I feel responsible too, I’ll try to do my best to help with examples and tutorials.

I’ll keep blogging about Seam 🙂

Feel free to contact me if you have doubts 🙂

 

UPDATE

Due to the all this misunderstood, feeling hurts, opposite opinions, doubts and so on, there’s a new post from Shane trying to explain the situation in a better way. As you can see, there’s a thread at Jboss Foum where you can show your opinion about it. Would be nice if you take a few minutes to read, understand the situation and write what you think.

Also, @antoine_sd blogged about it here – very nice post.

 

Advertisements

September 28, 2011 at 9:07 pm 5 comments

The reason I do help Open Source Projects

Hi!

This is a non-technical post, but I felt inspired to write about it today.

Some days ago a friend of mine asked: “Hey, why do you help Open Source projects? Really, I admire you, but I am not able to waste my time with that”. I almost answered “ORLY YOU FUCKING SELFISH BASTARD”, but instead of that I just said “Oh”, and started to think about a reason for that. Why I do help Open source projects? How did everything start?

 

A story about my technical career

I went to college to study computer engineering in 2007. Before that, i didn’t know what was a programming language, or what Assembly was, or what was a diode or a capacitor. I was just a stupid, selfish 16-year-old girl. After I got into College, I started to work with software development some time later. Studying (classes were in the morning + afternoon and sometimes in the evening) and working at dawn was really hard. So the only thing I wanted that time was reading my tech books, learning how to use frameworks (OH, FRAMEWORKS LIKE Rails, Spring, Hibernate) and work. Great. There were some events at College about open source, but they were all about Linux Kernel, blah blah, blah, and they never had REAL open source active speakers. So, almost none at College was (and unfortunately almost none is nowadays) an Open source enthusiastic.

Everything was going that way until 2009, when I went to an event called Campus Party. I heard lots of things about ‘open source’ there. And I met lots of Open source enthusiastic people. In other words, for the first time in my life i felt the meaning of… COMMUNITY.

Yet in 2009 I did some extra courses at Caelum, where I could experience another new concept in my life – THE COMMITERS. Yes, people who commit code (and also write tutorials, blog posts and so on) for open source projects. By that time I used to think “Oh, cool, I really would like to help… but hmm, looks too complex. Think I will not be able to write a tutorial for a framework too soon, I am so n00b…. Let me go back to my tech books”.

The truth is… I started to think things like “I really would like to help them…. hmm… looks like a nice idea… But atm I don’t have power to collaborate’.

Some time later I got a big challenge in my professional career – Work with Jboss Seam. I had never seen a piece of code using JBoss Seam. In fact, I had only an unstable idea of what was JBoss Seam. So I got a copy of “Seam in Action” and started reading. I was there, with a framework to learn and put an application up and running with Jboss Seam… Not only with Seam, but also a nice, freaking combo – Seam + Glassfish + Maven + EJBs. Cool. (You guys know that this was a little hard into Seam 2 and Glassfish 2 times). So I started Googling about it, but there were few consistent information about that. “What should I do now? Google can’t help me!! 😦 ” I started getting depressed about that, so I decided to MAKE IT WORK. With the help of a coworker, we did it. Seam 2 + EJB + Maven running on Glassfish 2. Two interns and a crazy project like that running. (Thank you, Andre, I really learned a lot working with you, man). So I thought “I need to write a fixed tutorial about it. Seriously” – and then I created this blog. Every time I had some time off I tried to write some tech stuff on it. That’s why it is called “TI Stuff”. I just wanted that people had consistent information about Seam and Maven [by that time]. I also started to use Twitter and follow cool people (Like the Seam In Action author, a guy called ‘Dan Allen – @mojavelinux – I found his Twitter at Manning’s website)…. I started following some authors from books that I had read read, and I realized how cool they were. So I created a Twitter List, TIHeroes, and added these people into this list. “I really want to be 1/20 of what these guys are”.

With the blog I got some emails with tech questions, post suggestions, new followers at Twitter…. I started to attend to tech conferences in Brazil, join mail-lists… And then I realized that I was HAPPY. But I felt I could do more. People were asking for new tutorials, and they had questions i didn’t know the answer…

Some months later I got into a project where we got a new technology – early-adopters. It was a Ruby project, and some of the gems were pre-alpha… So I started the project and sure, started to find lots of bugs… “And now? Who is going to fix that? I need this framework to do my job!”… Who… And then I think my life changed after thinking about it. “Wait”, I said to myself. “I’ve been using frameworks for years. OPEN SOURCE FRAMEWORKS. Who’s been keeping them? Who fixes the bugs? Who…. – THE COMMUNITY” Sure, usually there are some companies behind the frameworks, but it is COMMUNITY WORK. COMMUNITY. People like me were RESPONSIBLE for the framework. “You become responsible, forever, for what you have tamed”. I am responsible for these frameworks too. I use them. So, instead of just complain, I can do something to help them get better.

Simple actions – report a bug, write tutorials, write blog posts…. I found out that all those little actions can help the community. Even if you don’t write the framework’s core code…. there’s still a lot of things to be done for the community. I will never be the same person after understanding this 🙂

I had a friend who used to say something like “There are no good companies, they do open source for marketing… There’s no open source chocolate”. I won’t discuss that here, but I have to say a little comment – “Open Source work is bidirectional – You improve the project, and the project gives you lots of experience”. I don’t do open source work to be famous. I do open source work because I like to help people. I do open source work because I’m proud of those people who built that framework. Does’t matter if they become inactive, I may consider that people as heroes because they donated their times to make community happy. They have donated their times to give us a new tool or make our lives easiest. Have you ever thought about how boring it would be if we had to write our own ORM framework for every project? Think about that. Imagine If we had to pay to hack Rails or to fix a but on it. “Oh, but there are lots f companies making money with that”, some people will think. The only thing I have to say is “FUCK IT. There are lots of companies making money with good employees. Companies want to make money, and it has nothing to do with my open source passion”. I just want to help people to do their jobs. And yes, these people who collaborate with these projects, they DO HELP MY LIFE. THANK YOU ALL.

I started publishing new posts in my blog, and it started to get lots of views/day. It motivated me to keep helping people. In a busy day of visits, I got a 100+ views at the same day. “Weird – I thought. What’s going on? Let me check the analytics” And then I found out a link referring to my blog – it was a IRC chat log. From a IRC channel – #seam-dev.  Saved a copy of the chat transcription.

 

[23:52:47] <mojavelinux> check out this blog on seam 3
[23:52:53] <mojavelinux> https://hannelita.wordpress.com/2011/02/22/seam3/
[23:52:57] <mojavelinux> chrome should translate it for you

 

“Wait, they are talking about my blog! ZOMG! These guys are the Seam guys! Awesome!” Some time later I joined them at IRC and said that I really would be glad to help.

 

This long story shows a bit of my feelings about open source works. It helped me to be less selfish than I used to be. My family and friends used to say “Workahoolic! Go get a boyfriend!” or “Go take cool stuff to do!”. But the truth is… I AM HAPPY doing that. Seriously happy! I mean, I can help the guys who created the frameworks I use! I can help people who just started with technology X with some information! I can help people who are learning about framework Y by answering their questions! Guys, it’s so cool! Try it once!

I really think people should care a little more about community. I wish I could do much more things that I don’t do because I’m still newbie. But little actions help a lot. You know how good it is to find a nice tutorial on Google that actually works fine and it’s nice to read. But who wrote that? You could write something to improve it, or just post a comment or email the guy who wrote the tutorial saying “Thank you”. A simple feedback is a simple action that can improve community work! 😉

So, I’d like to say thank you to everyone on this list. Heroes.

Thank you, guys. Open source community is very glad to have you in, be sure 🙂

 

p.s. – I am very proud of you, Seam guys. You cannot image how much I admire you and how much I do like JBoss community. Hope I can help you always 🙂

And sure, I will always admire Ruby community. You guys have some disagreements, but it doesn’t matter to me, I do still admire you the way Ruby community is. Really hope to help you more the next times 😉

August 13, 2011 at 1:31 am 2 comments

The call4all app – Call 4 papers app – Seam 3 example

[Note – Before reading this tutorial, would be nice if you read this post before – It tells you that these Seam posts are under incremental builds and are modified everyday]

Henry is a Computer Science student and he is also an Open Source enthusiastic. He decided to share his knowledge by speaking into some conferences.

Henry checks the Confbuzz app to see the dates of the conferences, and he finds out that there are lots of conferences he would like to speak at. All of them have their our own Call4Papers/talk submission process.

“Crap! I have to copy-paste lots of information…. Bio, email, phone number, Twitter, Facebook… And wth, some of these sites are horrible…. All these technical conferences should have a unified submission process…. would save me lots of time and would ensure that the talk submission process is friendly…. Wait a minute…”

So probably you and Henry got a perfect idea. Create a Call4Papers website example.

But Henry decided he would like to do more. “I’ll talk about it into a conference!”.

Henry started studying Seam 3 few weeks ago and he thinks he’s able to create de Call4All app using it. He starts to fill the form:

So let’s help Henry to create his app. He is a Maven lover, so he prefers to create the app without using Seam Forge. *(check this post for more information about creating a Seam 3 project, with or without Seam Forge)

Creating the project

Henry opens his Eclipse Indigo and install JBoss Tools *. Also he decided to use JBoss AS 7 as it is his favorite Application Server (in fact Henry is in love with that, he still cannot believe AS7 starts in less than 3 seconds). He creates a new Maven project, fills artifactId, groupId, version and package info about the project. Then, he just adds Seam dependencies, getting a pom.xml like this.

So let’s take an overview about these Maven dependencies: [Note: If you are a Maven beginner, you might skip this session and just truste me that this pom.xml really works. Otherwise, if you are ok with maven, take a look at this brief explanation]

< properties >  stuff helps us to control some dependencies version.

< dependencyManagement >  is used to import Seam and RichFaces dependencies.

Then, we add Seam modules (the ones whose groupId is org.jboss.seam ), joda time, prettyfaces (required dependencies for some modules) , richfaces, and adjust some other dependencies (like hibernate validator, we must exclude it from seam-validation and add another version for that, otherwise we will have some trouble with AS 7.

Then Henry runs a mvn clean install – and TA-DA! BUILD SUCCESSFUL!

Maybe you have some questions like “WTH is…. Arquillian?” Take a look here. [I’m also writing a short tutorial about it].

*current version for Indigo – 3.3.0 M2

So what’s next? Henry thinks about the Call4All app… “When i access this webpage, I want to login, auto-fill my personal data and just type the talk title and a brief description. I will forget about page layout for while, and just live h:”.

Good way to start. “But also” – thinks Henry – “I want that conferences may be able to register and access the call4all app via Rest… and then get the proposals, reports and statistics about submission themes, speakers profiles… And oh, would be nice integrate it to Twitter, so as soon as you submit a proposal you can tweet about it…. Or share into facebook… Or even more crazy, go to a voting page for community choose the best keynothes that will be presented….” And then Henry starts to have crazy ideas.

Now let’s see how to implement them using Seam 3 modules. In the next posts Henry will show:

  • Faces module – the base
  • Seam Security and the login page
  • The Brazilian speaker and the international module

August 6, 2011 at 3:23 pm Leave a comment

Seam 3 – creating a new project – with and without Seam Forge

Hi all!

[Note – Before reading this tutorial, would be nice if you read this post before – It tells you that these Seam posts are under incremental builds and are modified everyday]

This is the first post about Seam 3 examples!

The main point here is not to show a simple ‘Hello World’ app, but a more complex example, showing resources from 2 or more more modules.

So, let me tell you a short story…

Ben is a computer science student and he’s having some java classes. The subject now is web apps using Java.

– So – the teacher starts to talk – creating a java web app is pretty simple. As you can see, the only thing you have to do is open Eclipse, select ‘Dynamic web module’….. – and then he starts to say lots of things that should be done BEFORE start writing code.

[After 15 min talking, the teacher still explaining how to create a project] – And this is web.xml. And this one is faces-config.xml, and this is context.xml. Using Jboss AS 5 has some more extra confs, and with JEE 5, you just have to…

Ben thinks “OMG, NO WAY, THIS IS NOT SIMPLE!!!! HOW CAN YOU LIVE WITH THAT??”

And Ben is right, developing apps in that way is pretty boring, painful, and creates a false idea that “Java is a DSL for taking large XML files and converting them to stack traces“.

“I will never use this thing called ‘Java’ to develop my web apps. Ruby on Rails is much more simple and fast”, Ben says leaving the classroom after the class.

“The problem is that the teacher did not mention anything about JEE 6” – replied his classmate Susan.

– JEE 6? What does it do, take large JSON files and convert then to stack traces? haha.

– No, JEE gives you the power of CDI! – says Susan.

– I’ll just consider using it if you tell me that I can build Java web apps in a way as simple as Rails. Otherwise…

– Yes, YOU CAN DO IT! Let me introduce you to Seam Forge!

Ben still thinks that Susan is mocking him, but then she takes her MacBook and starts a little and fast class about Seam Forge.

– Let me introduce you to Seam Forge. Believe me, the only sad part of Java story is Maven downloading the internet for you if your .m2/repository is empty. There’s any other boring thing.

*****************************************

Seam Forge – Fast tutorial

“Ok”, you might be thinking after reading this story. “Show me what do I need to have Seam Forge up and running here on my computer.

Obviously you need JDK (6+). You can download Seam Forge here – go to the “artifact information” and download the zip file. After that, unzip it, and add $FORGE_HOME/bin to your path.

If you are into a UNIX based system (Linux or Mac), basically just add this to your .bash_profile or .basrc:

export FORGE_HOME=/{YOUR_LOCATION}/forge-1.0.0-SNAPSHOT
export FORGE=$FORGE_HOME/bin
export PATH=$PATH:$FORGE

change {YOUR_LOCATION} to the right path of seam-forge directory.

So now type forge into your terminal. You might see Seam Forge up and running, like this:

Explore some commands by typing list-commands -all. Remember that TAB key works pretty fine here 🙂

So now what about some ‘rails style’ development? Let’s do some scaffolding.

Be sure to have JBoss AS 6 or JBoss AS 7 downloaded. You should also have Maven and Git installed.

  1. Let’s create new sample project. Type new-project –named damnPonies –topLevelPackage com.ponies.damn –projectFolder /{YOUR_PATH_HERE/  
  2. Now let’s do scaffold setup. type scaffold setup. Forge will ask you some questions, answer yes.
  3. Choose the last version of Metawidget, and also choose the latest version of Seam persistence. Done!
  4. Now create an index – scaffold indexes –overwrite
  5. Setup your persistence – type  – You can change provider and container – Just use TAB to see other options 🙂
  6. Now let’s create an entity. Type entity –named Pony. Check that Forge creates an Entity called Pony for you (Very similar to Rails =] )
  7. Let’s add some fields – type field string –named color
  8. Type ls and examine the class Pony.java 
  9. Type scaffold from-entity to generate a scaffold for Pony entity.
  10. Then, type build to make maven build the project for you. 
  11. Done! Take a look at the project structure 

If you ever used Seam 2, maybe Forge reminds you a seam-gen enhanced version.

[Break time – You might be wondering why did I call this project ‘DamnPonies. Its related to a Brazilian tv commercial which has an annoying song that involves ‘Damn Ponies’. You can check it  here  – CAUTION – Really annoying song]

More information about Seam Forge:

http://seamframework.org/Seam3/Tooling

https://docs.jboss.org/author/display/SEAMFORGE/Home

*****************************************

Now let’s go back to our story. While Ben is learning about Seam Forge, his classmate Henry is at the library doing some research work. Henry is a Java enthusiastic boy, who really likes Maven world. He gets mad when people make fun of Maven saying it downloads the whole internet. Last week he read a tweet from Susan saying “Maaaaavvveeennn IIIII hhhaaaattteee yyyooouuuuu!”, and then he tweeted back – “go back to Ant then!”. Susan provoked back – “You keep saying you love Maven, but I never see you configure a new project from the beginning. You always use a tool or a stable Maven Archetype. Loser”.

Henry got really disappointed by hearing this from a girl, so he decided to turn the tide. He wants to prove her that HE CAN CREATE A SEAM 3 PROJECT WITHOUT SEAM FORGE. “I’ll curse her with Maven. She’ll see that I am the Maven guy.”

So let’s help Henry on his adventure to create a Seam 3 project without using Seam Forge.

[TODO – write about seam 3 architecture + module brief]

I will assume that you already know about Seam 3 modular architecture. If not, take a look here. Also, you will need Maven 3 and JDK 6+.

So, first step – start with weld archetype – Open your Terminal and type

mvn archetype:generate -DarchetypeArtifactId=jboss-javaee6-webapp -DarchetypeGroupId=org.jboss.weld.archetypes -DarchetypeVersion=1.0.1.CR1 -DarchetypeRepository=central

[TODO – write a better tutorial for this]

August 6, 2011 at 3:19 pm 14 comments

Seam 3 tutorials and examples – up and running

Hi all!

I know that you have been looking for Seam 3 tutorials, examples, and it’s a little hard to find it yet. But Seam 3 team is working hard and soon there will be lots of thing for the community. I will help them with some tutorials and exmaples.

I am going to publish lots of posts and update them [almost] everyday. So, if Google shows you a page of this blog one day, probably in the next 2 or 3 days there will be new content at the same page. Be sure to remember that, otherwise you will think “OMG, its missing lots of things in this post. It’s a crap”. It’s Aug 06 today – I really expect to finish solid information and very cool tutorials until the end of the month.

I also would like to thank all of you who send me feedbacks about this blog – it’s very important to me to always try to write better and useful things. So, if you get a free time, write a little review and send it to hannelita @ gmail, or just leave a comment here 🙂 Believe me, it’s very important to me.

Also, I’d like to ask you to be patient. I know all of you want information, tutorials, easy-to-read and lots of other things. But be aware this is community work – I also have to do lots of other things. I’m really glad to help and share knowledge, but sometimes its really hard to create content in one night. I sleep (sometimes). 🙂 Not only me, but Red Hat guys and all of the other Seam contributors have tons of things to do! Think about that before saying bad things. But we really welcome to suggestions, questions, and specially new contributors! Remember – you can access the forum anytime and post your questions, or join us at IRC – irc.freenode.net – #seam and #seam-dev channel. There’s [almost] always someone online there that might help you!

Feel free to email me anytime – hannelita @ gmail, or send me a Tweet @hannelita. Thanks for reading!

August 6, 2011 at 2:42 pm 1 comment

Dev Chronicles #1

A crônica a seguir é uma ficção proveniente da minha imaginação fértil, mas sua moral é baseada em fatos verdadeiros =)

Hope you enjoy it =)

“Aquele 17 de janeiro mudou minha vida para sempre. Tinha acabado de sair da faculdade; estava livre, cheio de conhecimento e dono da verdade. Havia estagiado por 10 meses em uma pquena empresa onde em pouco tempo me tornei o ‘core’ do grupo por conseguir desenvolver minhas aplicações muito, muito rápido.

Eis que então estava eu a caminho de desafios maiores, empresas maiores e clientes maiores. Mandei currículo para algumas dezenas de empresas em São Paulo e minha agenda estava lotada de entrevistas e testes de seleção. E por falar em testes, todos eram relativamente fáceis; conseguia codar e acabar tudo muito rápido. Parecia que eu me estabeleceria em um bom emprego logo.

Entretanto, naquele 17 de janeiro eu tinha uma dinâmica marcada em uma recém inaugurada empresa na zona Sul da capital paulista. A primeira etapa consistia em uma prova contendo algumas tarefas simples. O responsável anunciou: “Vocês têm 1h para codar uma aplicação simulando uma rede social. Gostaria que na página apareçam nome, apelido, local de trabalho, relacionamento, interesses, visão política, opção sexual e uma lista de amigos, etc. Codem na linguagem que acharem melhor. Usem o que quiserem”

“Fácil”, pensei, e saí codando como habitual. Em 45 minutos, tudo rodava no meu Tomcat perfeitamente. “Essa foi moleza… To Dentro”. E eu queria estar, porque o salário era bom.

E foi então que descobri que não era fácil.

Assim que entreguei, fu encaminhado a um pequeno grupo de desenvolvedores. Sentamos em uma mesa, e eles então começaram a avaliar o pequeno sistema que eu havia desenvolvido.

“Muito bem, você começou mal com alguns NullPointerException, hem, amigo?” Assustei: “Como?” indaguei à equipe.

“Sua alicação quebra tão fácil que parece  taça de cristal na mão de criança…”

Aqueles caras nã podiam estar falando sério. Mas sim, estavam. Do jeito que eu havia codado as coisas, se o sujeito logado rejeitasse um amigo e depois tentasse adiciona-lo, minha aplicação quebrava. Se mudasse o status de relacionamento, minha aplicação quebrava. Havia um bug com o apelido; se o apelido fosse alterado os amigos que clicassem sobre o perfil tomariam um NPE. E por aí vai uma cascata de erros.

Ainda indignado, disse: “Ok, admito que há muitos erros, mas tive pouco tempo”. Foi então que obtive uma resposta sensata e que me fez refletir sobre cada linha de código que eu havia escritona vida: “Não pagamos pra você desenvolver qualquer coisa. Mesmo que você não tivesse terminado toda a proposta, não faria mal se o qe você tivesse feito não quebrasse assim facilmente. Em uma equipe, cada um desenvolve um pedaço do software. Se todos os pedaços são firmes, o software será firme como um todo. Não adianta produzir rápido se você produz de qualquer jeito. Pense em um engenheiro civil que constrói um prédio. Não adianta nada ele construir tudo em 2 meses sendo que no momento em que pisarem na construção ela ruirá. Software, meu amigo, é a mesma coisa. Software é a empreitada do seu cliente. No caso, dos nossos clientes. Não queremos que prédios desabem. Não queremos que código quebre do jeito que o seu quebrou. Não importa muito se tivermos um desenvolvedor um pouco mais lento que faça as coisas com QUALIDADE. Com o tempo esse dev adquire experiência e vai codar com fluência. Ele não vai codar de qualquer jeito. Demos um limite para testar o bom senso dos candidatos, claro. Sinto muito, você está fora.”

E foi então que o que se quebrou foi minha build. Naquela hora descobri que eu não sabia… absolutamente nada sobre desenvolvimnento de software. Todas aquelas coisas de waterfall e afins que vi na faculdade estavam… legadas.

Sou muito grato àquela pequena empresa. Graças a eles hoje sei o que é TDD, o que é BDD e acima de tudo aprendi a dar valor às metodologias ágeis. Antes eu achava que agile era coisa de programador que não sabia codar e queria ficar enrolando a história. Antes eu achava que TDD era coisa de desenvolvedor que não confiava no próprio código e precisava ver uma barrinha verde pra ter certeza que meia dúzia de linhas de código fariam o que ele esperava que de fato fizesse. Antes eu achava que pair progamming era um despedício de funcionários, e que Kanban era coisa de maníacos por post-its que não sabiam escrever código. Refatoração era apenas renomear uma ou outra variável que estava com um nome muito esquisito.

E hoje vi o quanto eu estava errado. Estou aqui com um quadro branco na minha frente com vários cartõezinhos pregados. Passei o dia todo pareando com um ex-colega de faculdade e rodamos cerca de 355 testes na nossa nova app; todos com barrinha verde e código devidamente refatorado. Já até colcoamos todas as alterações de hoje em produção. E pode acreditar, nunca gostei tando de codar e nunca confiei tanto no meu código quanto confio hoje. E tudo graças àquele 17 de janeiro onde definitivamente abandnei os horses*”

Nota – * Menção ao XGH – extreme Go Horse – Metodologia de desenvolvimento de software.

January 9, 2011 at 6:56 am 1 comment

Ambiente de desenvolvimento

Olá!! Aderindo à onda de descrever o ambiente de desenvolvivento!

Muito obrigada @scaphe e @adrianoalmeida7 pelo convite para responder aos posts de vcs! (Respectivamente em http://bit.ly/eSd1Bv e http://bit.ly/gjVTvp )

  • Máquina e SO

Bom… ainda não tive grana pra comprar um Mac! uahauhaa! Enquanto isso, meu Asus G50VT dá conta do recado. Core 2 Duo T9400 2.53GHz com 4GB de RAM DDR2 e uma GeForce 9800GS. Não é muito, mas aguenta relativamente bem as ferramentas que uso (e também roda joguinhos legais e úteis tipo SC2 =D ) .

Tenho um desk de apoio também, com um quad core (Intel Q9300 com 2GB de RAM DDR2 800MHz Corsair Dominator).

Sobre o SO, andei com umas desavenças em 2010. Costumava ser Slack User, entretanto alguns Kernel Panic me forçaram a desistir dessa idéia. Há poucos meses migrei para Arch Linux, e recentemente, dada a facildiade do apt-get e das inumeras fontes que suprem os pacotes do Ubuntu, instalei essa distro também em minha máquina (embora deixo bem claro que não sou muito fã desta última hehehe). Também tenho Windows 7 instalado. Minhas 2 máquinas contém esses mesmos SOs, entretanto o desk ainda possui a versão do Ubuntu 9.10 e o note possui Ubuntu 10.10.

  • Tecnologias que trabalho

Atualmente estou numa empresa onde só usam Java 6. JSF, EJB 3, JBoss Seam, Glassfish 2, JBoss AS 5 são as principais tecnologias que utilizam por lá, junto com PostgreSQL e MySQL. Doses de Javascript também são requeridas =)

  • Tecnologias que tenho interesse e/ou já li sobre e/ou já fiz experimentos caseiros

A lista é bem grandinha… Hehehehe

Influenciada pelo pessoal da Caelum a entrar na onde do Programador Poliglota, passei a ler bastante sobre outras linguagens. C, C++, Java, Ruby e Python já estavam na minha lista desde 2009. Em 2010 se fortaleceram, além dessas já citadas, Scala, Erlang, Groovy. E recentemente, tenho lido algumas coisas sobre CLisp, Prolog (Linguagem declarativa! =D ) e Clojure.

Junto com as linguagens, vem alguns frameworks aliados. Rails 3 (SENSACIONAL!), Django, Akka (Actors Model) – de início com Java mas a promessa pra 2011 é partir pra cima dele com Scala, Grails, Spring, Spring Roo (achei mto legal esse cara, sério!), Play, Hibernate, EclipseLink, JSF2; Arquillian (esse cara promete, deem uma olhada), OpenEJB, TesteNG e alguns outros. Tenho todos esses caras aqui na minha máquina =)

Também me interesso muito por NoSQL – Já experimentei e li sobre alguns databases como MongoDB, Redis, Cassandra, Neo4j, Terrastore (e esse último vem me chamando bastante a atenção =D ).

Pra finalziar, também adoro eletrônica. Gosto de desenhar circuitos e de vez em quando projetar plaquinhas. Utilizo o Matlab, Ultiboard e Orcard. Tenho me aventurado um pouco com ARMs e Arduino também.

Espero aprender muito sobre SOA com o pessoal da @soaexpertbr em 2011!

 

  • Editores/IDEs

Para o trabalho registrado, atualmente estou com Eclipse Galileo + JBossTools. Usamos também Netbeans 6.9. E Maven. Muito Maven. Há… Maven. E muita paciência. Hauahua

Mas utilizo também Vim e Aptana. Gostaria bastante de testar o RubyMine.

 

  • Browser

Mozilla Firefox. (Firebug rulez!)

 

  • Software, “software de apoio” e multitasks

Postgre PgAdmin, Tweetdeck, Gmail, Pidgin; Eclipse, Netbeans; o diretório do Jboss sempre fica visível porque ele costuma entrar em deploy infinito (hehehe); e alguns outros, como algo onde possa consultar o ri facilmente; quando a linguagem é interpretada também deixo a mostra um espaço para que eu possa testar rapidamente algum comando no intrepretador, etc.

  • Source

SVN na empresa. Git (infinitamente melhor, na minha opinião).

  • Música

Muuiita música! Algumas locais, algumas playlists no meu Groovesahrk.Tudo menos pagode, funk, axé, sertanejo. Muito metal, rock, urban, old school, jmusic, trance, house, psy, clássicas, remixes, soft… Depende do tipo de código… Hahahahaha. XGH code tem q colocar algo bem calmo pra eu não perder a paciência.

Obrigada pelo convite!

Convido os amigos @enioz e @heronmedeiros pra entrar nessa!

 

Até a próxima! =D

December 31, 2010 at 6:55 pm 1 comment


Calendar

September 2017
M T W T F S S
« Mar    
 123
45678910
11121314151617
18192021222324
252627282930  

Posts by Month

Posts by Category