Trouver un freelance

hopwork-logoJe me rends compte que je n’ai encore pas fait d’article sur le projet que me prend 90% de mon temps ces derniers temps : Hopwork.

Sérieusement, on est en train de révolutionner le monde des intermédiaires sans foi ni loi. En quelques mots :

  1. Le site est entièrement gratuit tant qu’on n’a pas un devis accepté.
  2. La commission est 3 fois moins importante qu’un intermédiaire classique (moins de 10% pour Hopwork contre 15%-25% actuellement)
  3. On peut contractualiser en direct (ou pas, à vous de choisir)
  4. Les freelances sont « approuvés » par leurs pairs et par leurs clients

 

Pas de ticket d’entrée

Non mais allô quoi, payer pour chercher un développeur ou une mission alors qu’on n’est pas sûr de trouver un deal ? Ça gave ! Hopwork prend clairement le modèle d’Airbnb, on cherche autant qu’on veut, on ne paye que si on trouve ! Read more »

Tests HTTP avec Arquillian

Pour commencer 2013 en beauté, rien de mieux que de finir l’année avec une mission pleine de nouveaux challenges et de nouvelles technos : Cassandra, Play!, EJB3 (!) et Arquillian.

Arquillian est un outil qui permet de faire des tests d’intégration. Il permet notamment de construire programmatiquement des jar, war et ear très simplement et de déployer ces pseudos-livrables dans un serveur embarqué.

Étant adepte du TDD, quand on me demande de faire un service web, j’aime me mettre à la place du client web et manger du HTTP afin de vérifier le contenu des retours mais aussi les entêtes, les E-Tag, la compression etc… C’est que nous permet de faire Rest-Assured. Nous allons justement voir dans cet article comment tester un service web par la couche HTTP en se servant d’Arquillian pour déployer le service de manière embarqué.

Dans cet exemple, nous utilisons le serveur glassfish embedded. Nous testons un service REST permettant de consulter des logs applicatifs. Ainsi on souhaite vérifier que la requête HTTP : « GET http://localhost:8181/logs?severity=error » retourne bien un code HTTP 200 OK.

Le Test

Voici le code test que nous souhaitons faire :

Read more »

Encore mieux qu’être Freelance

Et oui, bizarre de parler de ça dans un blog qui fait l’apologie du freelancing, mais ceux qui me suivent savent sans doute déjà que je ne suis plus tout à fait seul…

Je suis associé depuis le début de cette année à 4 compagnons d’aventure :

 

Liberté ++

Et oui, quand on est freelance, on est un peu plus libre qu’un salarié, mais que faire de cette liberté seul ? C’est incroyable ce qu’on peut faire quand on est plusieurs, ne serait que 5 pauvres petits développeurs. Depuis la création de Lateral-Thoughts, il y a quelques mois seulement :

  • Nous sommes devenus organisme de Formation (certains freelances le sont aussi mais beaucoup se contentent de se faire porter pour donner des formations)
  • Nous avons noué un partenariat avec un éditeur de base de données NoSQL (quel freelance peut faire ça ?)
  • Nous nous sommes passé d’intermédiaires ! Certains freelances y arrivent aussi, mais là, c’est juste plus simple.au

Upload multiple et asynchrone de fichiers

J’avoue avoir pas mal galéré à trouver mon bonheur car l’upload de fichiers en AJAX étant relativement récent, on trouve de nombreux exemples obsolètes sur la toile qui se basent sur une iframe… Ou ne fonctionnent pas avec Jersey coté serveur ^^
Trève de blabla, passons au code.

Premièrement, ajouter un champ input acceptant l’ajout de plusieurs fichiers :

 <input id="files" multiple="multiple" name="file[]" type="file">

Read more »

Selenium sans server X

Aussi incroyable que cela puisse paraître, il possible de lancer un build utilisant selenium et lançant un browser sur un server dépourvu de server X (ie d’affichage).

Enfin presque, l’idée est d’installer un server X virtuel : Xvfb

% sudo apt-get install xvfb

Ensuite lancer le server X virtuel :

% Xvfb :1 &

:1 permet de spécifier le nom du « display »

Et pour finir, le build selenium ( ou n’importe quelle commande ayant besoin d’un « display »)

DISPLAY=:1 mvn clean install

Persistance objet avec Redis et Jackson

Redis est la base de données NoSql que je préfère. Le concept est ultra-simple et j’aime la simplicité. Il faut voir Redis comme une grosse Map<K,V>. Avec la possibilité de faire des requêtes sur les clés.

Du coup la documentation de Redis est simple. Un autre truc que j’aime c’est qu’elle spécifie la complexité de chaque opération, ce qui permet au développeur de vérifier à chaque fois que la commande qu’il s’apprête à utiliser n’est pas trop gourmande. De plus, il n’a pas le risque d’oublier de mettre un index sur un champ (combien de fois cela arrive en SQL ou avec MongoDb ! ) car toutes les clés sont par définition « indexées » dans une (Hash) Map.

Simple et (donc ?) performant. Redis est sans doute ce qu’il y a de plus performant en terme de base de données. Nous avons donc intérêt à nous y intéresser avant de chercher des solutions plus complètes et donc plus complexes et moins performantes.

Sauf que, Redis ne stocke que des chaînes de caractères. Comment faire pour stocker nos objets métiers complexes ?

Read more »

Valeur des Properties Spring par défaut

Astuce bien pratique que je viens de découvrir dans Spring, il est possible d’attribuer des valeurs par défaut aux « property » (@Value) de cette manière :

@Configuration
public class RequestConfiguration {

   @Value(value = "${repository?InMemoryRepository}")
   private String repository;
}

Read more »

Web Application Description Language avec Jersey

Le langage de description d’application Web permet, comme son nom l’indique de décrire votre API REST dans un format XML http://www.w3.org/Submission/wadl/ . Cela peut paraître pénible à mettre en oeuvre, car à chaque fois qu’une ressource change, il faut mettre à jour le WADL.

Avec Jersey, l’implémentation de référence de JAX-RS (JSR311) pas de prise de tête, tout est générés automatiquement.

Il suffit de faire deux choses :

Read more »

Devoxx

Devoxx France en deux mots : C’est la plus grande et la plus intéressante des conférences pour les développeurs Java en France.

Pour moi, ce fut une expérience formidable. En plus d’avoir appris quelques trucs, ce qui m’a fait le plus plaisir c’est d’avoir été conforté sur pas mal de choix que j’ai pu faire ou que je comptais appliquer  prochainement. Hormis l’absence de desserts sucrés et le nombre limité de boissons, l’organisation fut parfaite. Un grand bravo aux organisateurs !

J’ai choisi d’illustrer ces trois jours de conférences par une série d’articles qui racontent ce que pourrait être une success story pour un développeur Java ayant eu une « idée » :

Architecture WOA et CQRS (Devoxx 3/4)

Alors que certains embourbés dans JSF sont allés voir comment réduire leurs souffrances, j’ai préféré m’intéresser à des sujets d’actualités afin de voir comment faire une application de demain avec les technologies de demain. C’est le choix que souhaite également faire Gérard notre startupeur. Comment ne pas se tromper ? La technologie évolue vite et il est impossible de choisir une technologie aujourd’hui en étant certain qu’elle ne sera pas obsolète demain. Ce que je retiens des présentations de Guillaume Bort, Sadek Drobi (Play!), Habib Guergachi (WOA), Alexandre Bertails (Linked Data) et Jérémie Chassaing (CQRS) c’est que les concepts qui vont servir de base à nos architectures sont plus importants que les technologies elles-mêmes.

Read more »

Une organisation innovante (Devoxx 2/4)

Yeah ! Maintenant que Gérard a son business plan qui roule, qu’il a mis en ligne un premier prototype et que les premiers clients commencent à taper au portillon, il est temps de passer à la vitesse supérieure : Créer sa société.

A Devoxx un quickie à particulièrement attiré mon attention : Celui de Andrew Spencer sur son idée de faire une SSII Coopérative. Ce qui est marrant c’est que c’est ce que nous avons fait depuis quelques mois en créant Lateral-Thoughts.

Read more »

Travailler son idée – Lean Startup (Devoxx 1/4)

C’est l’histoire d’un développeur Java qui a une idée. Tout ce qu’il a de plus banal me direz vous. Appelons ce développeur trentenaire « Gérard »

En bon petit développeur Java, Gérard garde sa petite idée pour lui, développe la nuit et pendant ses congés pour finalement sortir de l’ombre et mettre en ligne THE application (pour l’instant hébergée directement sur son ordinateur personnel)

Et là, vous connaissez la suite, ça fait psssiiichhhhhttt. L’idée n’est pas trop mal mais :

Read more »

Kata de refactoring N°1

Pour me préparer aux sélections de code story et pouvoir coder pendant 2 jours une application devant des centaines de développeurs à Devoxx, je me suis entrainé à refactorer une méthode en m’enregistrant.

Le bénéfice que j’attendais de l’exercice était de :

  • M’entendre parler pour détecter mes défauts d’expressions et les corriger, car le jour J il faudra expliquer ce qu’on fait et pourquoi, le tout en codant ! Pas facile…
  • Maîtriser au maximum mon IDE pour être rapide à coder, rien de plus ennuyeux que de regarder un développeur coder trop lentement !

Pour la petite histoire, Read more »

Anniversaire du Paris Jug

http://www.mavieauboulot.fr/

Cette année, le Paris Java User Group fête ses 3 ans. Pour l’occasion une soirée exceptionnelle est organisée. D’autant plus exceptionnelle que Mathilde viendra raconter comment le statut d’indépendant permet à ceux qui ont fait ce choix de vivre différemment, de vivre mieux.

Tous les détails (lieu, date, programme et inscription) ici : http://www.parisjug.org

Il était une fois un rêve

« J’en ai rêvé, je l’ai fait ». Voilà comment je résume mon état d’esprit en ce moment. Je suis Freelance parce que j’ai cette fibre d’indépendance, l’envie de voler par mes propres ailes. Je suis développeur parce que j’aime créer, j’aime réaliser des outils utiles, j’aime réaliser des outils de qualité et j’aime partager mes connaissances (ce blog en est la preuve). En cela je me considère comme un artisan, un « Software Craftsman ».

Read more »

Déjà ninja ? Devenez Rebel !

Si vous aussi vous perdez 3 minutes à chaque fois que vous faites un redéploiement, calculez donc combien cela coute à votre client sur : http://www.zeroturnaround.com/jrebel/

JRebel est un outil payant permettant d’effectuer des rechargements à chaud d’applicatif Java. C’est clairement l’outil qui fera de vous un développeur plus productif. Voilà une bonne façon de se faire bien voir, de rentrer plus tôt à la maison ou d’augmenter sa facturation :) Read more »

Devenir un Ninja en Java

Au début de ma carrière, je me souviens qu’un de mes collègues m’a dit « Tu sais, au final, on se rend compte qu’il n’y a que très peu de différence de productivité entre un bon développeur et un développeur lambda ». Je l’ai cru,  et il m’a fallu quelques années pour me rendre compte qu’il avait complétement tort. Read more »

Prosymna : Un GIE d’Indépendants

Être freelance présente beaucoup d’avantages pour très peu d’inconvénient. On peut toutefois faire l’exercice de lister les quelques problèmes que nous rencontrons:

  1. 1/3 des missions sont pourvues sans qu’il y ait d’appel d’offre ou pourvues avant même la parution de l’AO (Copinage…). Sans copains, moins d’opportunités.
  2. Tous les grands comptes ont un service achat qui référence les fournisseurs. En étant indépendant, impossible d’obtenir de référencement. Nous sommes obligé de passer par un intermédiaire qui se sert largement au passage (20% en règle générale).
  3. Aucun pouvoir de négociation face à nos propres fournisseurs. Nous payons nos formations plein pot, nos conférences pleins pot et nos comptables pleins pot
  4. Pas de support en cas de difficulté technique, commerciale ou même juridique en mission.
  5. Pas d’image. Nous avons même plutôt une image « négative », certains nous voient comme des mercenaires.
  6. Si vous êtes formateur, ou désirez donner des formations, difficile de proposer un catalogue de formations et de se faire connaître et en restant isolé.

Ce rassembler autour d’une structure commune devrait permettre de palier à toutes ces difficultés, c’est ce que propose Prosymna. Read more »

PowerMock Mock Mock

PowerMock c’est quoi ?

PowerMock est une extension de 2 API bien connues des mockeurs (Ha ha), EasyMock et Mockito. Qui n’as jamais été obligé de supprimer un final, rendre une méthode private protected ou galérer sur des appels statiques pour faire ses tests ? PowerMock nous permet de « tester l’intestable » sans toucher au code. Bonne idée ? Oui, mais attention, cette bonne idée a un coût qu’il ne faut pas négliger. L’exécution des tests peut prendre jusqu’à 10 fois plus de temps.

De plus, si on ne fait pas attention, on peut tomber sur des anomalies qui peuvent être difficile à résoudre si on n’a pas saisi le « truc ». L’objet de cet article est de vous présenter ce qui me crash le plus souvent mes tests.

Read more »

Revue de presse

Voici une liste des liens qui nous ont intéressés récemment :

Le domain driven design « Vite fait » : 80 pages pour changer votre vie. Ou plutôt changer votre façon d’écrire vos modèles métiers.

Cours sur la concurrence : Une piqure de rappel ne fait pas (de) mal.

Développer avec Comet et Java : Vous rêver d’envoyer des informations au navigateur en mode « push » ? Voici la solution.

Algodeal: Pour tous ceux qui aime inventer des algos, voici une occasion de faire fortune en s’amusant (et en java)  !

Les castcodeurs : Episode spécial « Freelance » avec Mathilde ! A écouter absolument si vous souhaitez vous mettre indépendant !