My trip to NY

In the beginning of November I made a trip to the city that never sleeps, New York. I decided to share  my thoughts about the differences between my country and this big city.

In NY, there is a culture of “image selling”. They always try to negotiate something, for instance, I found an homeless guy who negotiated with me, the amount of money I should give to him, because he helped me with the ticket to the airport.

NY is the capitalism capitol. Every service is private, and the public ones are very expensive. I talked to a girl in Wall Street that payed 40 000 dollares for a college degree! So, who has the money, has the education. The city of NY is very multi-cultural. A sign of it, is that some of the publicity that is shown are in spanish, because of the increasing people coming from South America.

The majority of the people that I have met in NY, are not americans, but immigrants looking for a better life.

The trip showed me that Europe is the zone of the world where the level of education is higher, but from my point of view and seeing my country, Portugal, we are not very entrepreneurs to create our own company. In the USA we see a lot of people that doesn’t have access to a college education, but still create successful companies. There are some private Universities like Stanford and Berkeley that gives for free, online courses, for instance: http://www.venture-class.org.

The difference between the rich and the poor in NY is very high. I watched a lot of homeless people in subway stations asking for food. This is really disturbing because some of them, don’t ask for money, but for food. That happens in Europe too, but not in that much quantity.

 

Conclusion

NY city is one of the best places to launch a business. One of the reasons is that we can do everything. If you have an interest in something, you will certainly find the group of people in the city that does it. There is a show called How to make it in America that happens in NY and show how entrepreneurship and persistence are very important in today’s market.

We should learn more about the entrepreneurship model of the USA, where they instigate people from the faculties to launch a business. In Portugal, there are a lot of improvements in that area. We have a lot of entrepreneurship events like Startup Weekend, Startup Pirates, SwitchConf, etc.

If I will return to NY? Off course!

Posted in Entrepreneurship, Travel | Tagged , , | Leave a comment

Week 1: Testing personal Kanban

The personal Kanban experience is enforcing the way I define goals each week. When I write on the post-it, that goal is possible because I imagine it how it should be finished.

At my first week with this tool, I noticed that with my board always insight I have a global view of the tasks that I need to finish. And that is really important, because it gives the feeling that you are progressing. It is my first week with this, and I am very lazy, so with this board I get an additional pressure to finish my tasks.

I felt the need to signalize blocked post-its (blocked post-its are tasks that are blocked from some reason) to differentiate from other tasks. That way you get an extra-motivation because it does not only depend on you if that task is not completed.

At the end of the week I make the question “Why you are not completed?” to each one of the post-its that are in the backlog column. Off course the answer should not be laziness, if it is, you need to change something like DON’T PROCRASTINATE (like me sometimes).

Conclusion:
The personal Kanban tool is still a very recent experience for me, and I am still learning how to be more effective and productive. The column “done” of the board is very important for me, because it gives me the motivation each time I complete a new task and see a lot of post-its there.

 

Posted in Personal Development, Productivity | Tagged , , , , | Leave a comment

Testing Personal Kanban

“Personal Kanban is a productivity and effectiveness tool for individuals or small groups” - wikipedia.

I decided to test the Kanban tool to see if it is really powerful. This tool has two core rules:

  • Visualize your work (imagine what you need to do to accomplish that goal)
  • Limit your work in progress (this is very important, because our mind can’t focus when you are doing a lot of tasks at the same time)
To do this experiment I build a “Kanban board” with three columns (which you can see at the bottom of this post):
  • Backlog: All tasks that I need to do
  • Doing (3): Tasks that I am doing, with a limit of 3 at the same time
  • Done: Completed tasks
I am going to document this experience here and do a little balance each week to see if this really works.

 

 

Posted in Personal Development, Uncategorized | Tagged , , , | Leave a comment

The power of a peer group

How many times, we listen to our friends saying that “it was so good, if I could win the euro millions“, “it was so good if I had 6 months of vacation each year“, “it was so good if I had my own company“… It was so good if my future could depend only on me. Well, as a matter of fact, the future depends just on you. We have just to be the person we want to be. If you want to build a company, why don’t you create your business cards, why don’t you see inc.com website searching for tips and businesses. What if you talk to management teachers at the universities, or invite some entrepreneurs to dinner. Seems pretty easy, when you want it. You don’t need to always delay your future. Instead of saying that you don’t have time, use that time to do something.

There is a methodology that helped me to accomplish more goals each week.

I learned this with a personal development Guru called Daniel Sá Nogueira. He said that we need to have a peer group. A peer group is a group that motivates you to accomplish the objectives each week. I have now a peer group with two of my friends, and the main objective of it is to define the goals for the next week and accomplish that. What if you don’t complete all of the tasks? The peer group will “kick you” and ask “why didn’t you completed it“? You have to come up with a good excuse for that. That expectation makes you want to do more and more each week!

I know that we live in difficult times, but we have to try to be the best and study to accomplish each day, something!

Now that I did this article I can say to my peer group that I accomplished another goal!

Challenge:

Create your own peer group and define goals each week.

Good luck!

Posted in Personal Development | Tagged , , , , , , | Leave a comment

Client Certificates and Play!

Sometimes we need the authentication of the client. That means, for instance, if you want to limit the access to your web application, from the people who has the right certificate.
This is possible, using client certificates, which are installed inside the browser, and the user without this certificate cannot access the web application.

To create client certificates, you need to check if you have openssl installed. After this verification, you need to find where the auxiliary command CA and/or CA.pl is installed. On my Mac  it’s located in “/System/Library/OpenSSL/misc/CA.pl“.

1. First, we need to create a Certificate Authority (CA):

$ CA.pl -newca

After pressing enter, and following some instructions, a new folder “demoCA” is created with our newly created Certificate Authority.

2. Create a certificate signing request:

$ CA.pl -newreq

Follow the instructions to create the certificate signing request. Two files will be created: “Request is in newreq.pem, private key is in newkey.pem“.

3. Sign it with the CA:

$ CA.pl -sign

The signed certificate newcert.pem is generated.

4. Create a client certificate that our user will install in his browser:

$ openssl pkcs12 -export -inkey newkey.pem \
           -in newcert.pem -out clientCertificate.p12

As we can see, we use the private key newkey.pem and the CA signed certificate to create the client certificate.

Now that we have all the certificates created we need to use a tool to save our Certificate Authority that will be verified when someone asks for authorization with a certificate. I prefer to use the “keytool“. Verify that you have keytool command available before you begin:

5. Create a keystore:

$ keytool -genkey -keystore truststore.jks

6. Add CA to keystore

$ keytool -import -trustcacerts -alias "my CA" \
                -file demoCA/cacert.pem -keystore truststore.jks

7. Configure Play! Framework:

Add to the  application.conf file, the keystore configurations:

play.netty.clientAuth=need
keystore.algorithm=jks
keystore.file=conf/truststore.jks
keystore.password=mykeystorepassword

Conclusions:

Inside the keystore, there is the Certificate Authority that will be verified when the client tries to comunicate with the server, using a certificate signed by the CA. This is very helpful if you want to build a web application that is in the Internet, and you just want the people from inside the company to access to it. Off course, the disadvantage of this approach is that if your user steals the certificate, he also can access the application everywhere.

References:

Posted in Internet, play, Software Development | Tagged , , , , , , | 5 Comments

Keeping the motivation HIGH!

Our life and work, specially the second, are very focused in goals and deadlines. Many of us had terrible experiences putting together these two words: goals and deadlines.
Many companies think that if you have goals and deadlines, and money at the end, without motivation effort inside work environment, you are going to achieve your goals pretty quickly. I don’t think like that. Working with a carrot in front of our noses is not the way to motivate people to work more. So, the question is, how can we motivate people to work more without worrying about the money?

There are some things that we can do, but they are not a recipe for everything. It depends mostly on the people you have working with you or for you. As Alexander Kjerulf says, “the only two things that motivates you at work are your relationships and your work progress”.
1. Relationships: You work more and you will be more motivated if you like your colleagues at work. How many times you asked for help? How many times you shared knowledge? How many times you told stuff that made someone laugh? To improve your relationships at work you can do simple things like:

  • Give a good morning like you mean it!;
  • Short breaks with your colleagues;
  • Ask for help;
  • Share something you know that will improve your work environment;
  • Do events outside work. For instance invite your colleagues for parties, dinners, football games, etc.

2. Work progress: What is our motivation above all? Help the world and get recognized for it! It is exaggerated but it is true. You are here to leave your mark to the world above all. And if your company knows how to motivate you for this, you will love your job. See google for example, they work to improve our lives, with gmail, calendar, with android or more recently google+. What can we do to motivate people to work more and to achieve their goals quickly and sometimes to handle deadlines pressure? As I said previously this is not a recipe, but are simple things that we can do to improve our work:

  • Apply KISS principle (Keep it Simple Stupid). Split your goal into smaller goals. If you have smaller goals and you surpass one by one, you get more motivated, because you notice that your cleaning your list. If you have a long list of goals, you get lost;
  • Give your team more meetings to show them the progress they are doing. For instance, SCRUM is an Agile development method which has one meeting day to know the progress of the team;
  • Let the experienced people of your team to do workshops on how to make your work more productive, sharing their knowledge on how to handle big sums of work;
  • Have a constantly updated team wiki about the business/technology you are working on.

Conclusion

Nowadays, motivation is one the most important aspects that changes our work environments everyday. To have your team or your colleagues motivated with the job they are doing, you have to join the professional and your personal life. If you go to your work with “friends”, it is easier to handle pressure and deadlines, because you are not alone and you have people that will certainly help you.

Posted in Entrepreneurship | Tagged , , , , , , , | 2 Comments

Access DB manager from the PlayFramework

The playframework logoWith the new 1.2 version of play, now it’s possible to see all the tables in the database without needing an external database manager program.

I have been developing in play, and I always feel the need of having a database in memory with test data being loaded each time I run the server. With this approach, I don’t need to have a SQL server running and I don’t need to be worried about changing my database model (for instance, conflict test data), so I just need to change my test data and run the play server again.

The new database manager that playframework uses is called H2. H2 is a Java SQL database which allows to access in-memory/embedded/server databases. In my case, which I use a memory database and I have test data already, I just need to have a line in my Application.conf:

db=mem

The second thing is to do to access the H2 database manager inside the play is access the http://localhost:9000/@db url (I am supposing that the dev server is running on your localhost). After accessing the database you just need to configure the H2 login like the image:

Now you just need to press the connect button and voilá! :-)

Conclusions:

  1. Run your playframework: play run myproject (with the >=1.2 version of playframework)
  2. Access http://localhost:9000/@db
  3. Configure JDBC URL: jdbc:h2:mem:play (you can access other databases, for instance mysql)
  4. Default authentication: username: sa / Password: (empty)

 

Posted in play, Software Development | Tagged , , , , | 2 Comments

I have a networking-based company! A WHAT?

Yes, a networking-based company. The well-known method to offer services using the knowledge of our friends. Seems strange, but we hear often that we don’t have the expertise to do something, or we don’t know how to make a pie. You don’t need to know any of that. You just need to know a good friend who knows how to make great pies.

We meet people everywhere, that’s why we call it networking. We create connections between people, and that’s why it makes it so powerful. We don’t need to know the knowledge of the universe, we just need to know the people that together have the knowledge of the universe. As an example, many of you, thought that couldn’t make a big project. Think again, how many “friends” or strategic connections have you? Do you know how to design something or do you know rails programming, or java? No? But you know the people that can have that expertise? Talk to them! The greatest experience in the world is not how to make great ideas came true but is how to join great people to do something even greater.

Sometimes, even if we have a lot of friends, they don’t have the expertise that we need. Don’t worry. That is something called conferences. A lot of my networking is built going to conferences, going to public events where we share our business cards and our knowledge! We need to take the first step and don’t expect that someone will talk to you.

This is networking. Talk to people. Know them, and maybe create a business or a service in your company that uses your networking knowledge. If we are good project managers, we know how to motivate people to work in a project. If we don’t know how to motivate, we need to learn, and that’s a really important subject! Happy at work is not something that we do in 2 hours. In May of 2011 I was in a conference in Oporto, Portugal, called “Happiness and creativity in your work life” where Alexander Kjerulf spoke about happiness at work. His book has little tips of what we can do at work to motivate our collaborators.

Conclusions:

Tips for creating a networking-based company:

  • Have business cards (You can order it through moo.com – they have great designs for a variety of businesses)
  • Talk to your friends, know them (What they like, personal projects, etc)
  • Use your personal projects to sell yourself (If you don’t have a personal project, create one, in your area of expertise)
  • Go to conferences now!
  • Use outsourcing (Don’t spend hours to do something that costs so little, time is important! – I learned this with Tim Ferriss)
  • We can do it! (Yes, it’s a tip!)

 

Posted in Entrepreneurship | Tagged , , , , , | 1 Comment

Schools kill creativity

Ken Robinson talks about how the educational system is killing student creativity.

Posted in Entrepreneurship | Tagged , | 1 Comment

Deploying PlayFramework Apps in JBoss

After you created your web application you need to create the WAR file that will insert the framework and other dependent libs inside the folder that you specify:

play war myapp -o myapp.war

Now to deploy on JBoss, you need to do some changes on your WAR file:

  • Create a file called jboss-web.xml in the myapp.war/WEB-INF/ directory container the following:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.4//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd">



com.example:archive=myapp.war
java2ParentDelegation=false



  • Download hibernate-validator and hibernate annotation using the compatibility matrix (Hibernate Compatibility Matrix). Play is using hibernate core 3.3.2 GA. Once you are done, place the relevant jars in the myapp.war/WEB-INF/lib directory. You should end up with:
    • hibernate-annotations.jar
    • hibernate-entitymanager.jar
    • hibernate-validator.jar
    • hibernate-commons-annotations.jar
    • hibernate-search-3.1.1.GA.jar
    • hibernate3.jar (Do not overwrite this library, as Play! has a modified version of it)
  • Now that we’re prepared for WAR, you need to move your application to the deployment folder of JBoss. The default folder for it is: jboss_home/server/default/deploy (jboss_home == folder of jboss). There are some things you need to be aware of:

    1. Use a superior java version in JBoss to avoid class version errors
    2. Verify that the WAR folder has the necessary permissions. In my case I needed to make a “chown -R jboss myapp.war” where jboss is the user that controls the jboss application server
    3. Do a “tail -f jboss_home/server/default/log/server.log” to see if your application is being deployed. You’ve an Administration Console in http://yourserverip:8080
    4. Don’t change your routes file at runtime. Stop the war, change routes and then start the war (in the administration console I said before)
  • Now you should have your application working. You can access to your app at: http://yourserverip:8080/myapp.war
  • This tutorial was tested in JBoss 5.0.1

Thanks to Nicolas Leroux from lunatech.com for helping me to create this tutorial.

Posted in Internet, play, Software Development | Tagged , , , | Leave a comment