Greg's blog

To content | To menu | To search

Saturday, February 23 2008

Quelques nouvelles : système et sécu, programmation fonctionnelle, moteur de blog

Quelques nouvelles pour les quelques lecteurs de ce blog qui doivent se demander si j'ai perdu les clés de la cave dans laquelle je me suis enfermé. Première nouvelle, non je ne suis ni dans une cave ni enfermé mais je n'ai pas trouvé le temps d'écrire un billet avant aujourd'hui. Je me suis replongé dans le dev d'exploit sous linux en me donnant pour objectif de gérer la plupart des protections userland (heap hardening, -fstrack-protector-all, ...) et kernel (ASLR, NX, et autres, en commençant par les fonctionnalités de base du noyau 2.6, puis en continuant avec ExecShield et Pax). Dans le même temps, l'actualité récente m'a poussé à m'intéresser de plus près aux vulns kernel.

En parallèle, je garde toujours un oeil sur la programmation fonctionnelle, notamment Haskell. Je profite de mes travaux en exploitation de vuln userland et kernel pour écrire du code concret et je l'espère utile en Haskell. Pour l'instant c'est du python ou un peu de ruby (metasploit), langages très appréciés par la communauté sécurité à côté des chers dinos que sont le C et le perl. Néanmoins je pense que ces travaux autour de la sécurité se prête bien à la programmation fonctionnelle et l'écriture de DSLs. Un projet intéressant était mosvm présenté par Wes Brown au DefCon et au HITB de 2006.Il consistait en l'exécution distante de processus dans une VM Lisp. C'est dans la continuité :

Pas mal de choses intéressantes à faire en perspective :). Je vais d'abord continuer ce que j'ai commencé et saisir les opportunités d'écrire du haskell quand elles se présentent.

Pour finir, j'avais parlé du redesign de ce blog. Je me suis dit que c'était l'occasion de migrer vers un moteur de blog écrit en python et pourquoi pas - à tous hasard - reposant sur django. J'ai regardé ce qui se faisait, tenté de construire sur le django-blog de basic apps et au final je me suis rendu compte que j'avais besoin de vraiment comprendre chaque élément et de pouvoir facilement les modifier. Je m'en suis vraiment rendu compte quand j'ai commencé à écrire une classe et des outils pour importer ce blog depuis dotclear2. J'ai alors décidé de ré-écrire un moteur de blog pour mes besoins. Dans un sens, c'est dommage, car ça répartit les efforts au lieu de les concentrer sur quelques projets, mais je prend ça comme un projet perso sans ambition autre que répondre à mes besoins et sans vouloir faire un moteur de blog de plus comme dotclear ou wordpress.

Thursday, January 17 2008

Ce que j'attends en 2008

Ca ressemble à des prédictions sans en être :). Je ne suis pas voyant et les tendances que je perçois ou que j'attends sont liées aux domaines qui m'intéressent. Je ne vais donc pas m'essayer à prédire les grands évèments de 2008, mais plutôt énoncer ce que j'attends.

  • Les langages fonctionnels vont réellement commencer à être utilisés. Par réellement, j'entends de manière moins confidentielle. L'exemple le plus frappant est l'utilisation d'Erlang pour le service SimpleDB d'Amazon AWS[1]. Les capacités fontionnelles de certains langages[2] très appréciés pour le développement agile comme Ruby et Python (pour ne citer qu'eux) sont indéniablement très pratiques et rendent plus productif (et plus succinct, exemple : les list comprehension en Python). Le style fonctionnel dans ces langages est partiel, on trouve en effet des effets de bord. Avec la vogue des architectures multicore et la nécessité de faire du calcul parallèle (distribué ou multithread local), les langages fonctionnels sont très adaptés. Une raison simple à cela, ils sont fondés (pour les langages fonctionnels purs c'est même imposé) sur l'absence d'effet de bord. Par conséquent la concurrence est implémentée avec des processus qui ne partagent pas de mémoire et communique de manière asynchrone par passage de messages. C'est le style fonctionnel qui amène à cela. On trouve une bonne illustration de ce principe dans une description d'Erlang et de la raison de son succès récent What's all this fuss about Erlang? par Joe Amstrong.


C'est toujours difficile de choisir un langage de programmation quand on se lance dans un projet. Plusieurs approche se présentent : choisir celui qu'on maîtrise le mieux d'où la proéminence du C/C++, .Net, PHP et Java; choisir celui pour lequel on aura le plus de contributeurs ou développeurs à embaucher (qui a parlé de Java ?? ;) ); choisir les langages les plus appropriés pour traiter chaque composant du projet. hmmm oui vous avez bien lu LES langages. Alors bien sûr en pratique ça finit souvent par un langage, mais il n'est pas proscrit d'envisager l'utilisation de plusieurs langages. C'est d'ailleurs ce que pas mal de projets font déjà depuis longtemps en ajoutant la possibilité d'utiliser des langages de scripts[3] dans les applications. Paul Graham mets en avant ce choix dans son essai Beating the Averages. Certains y voit l'apologie de Lisp, j'y vois surtout la mise en exergue de ce qui constitue un des avantages majeurs d'une startup sur ces concurrents : le socle technologique. Il faut batir sur de bonnes fondations, celles qui permettront de ne pas perdre de temps et de répondre à la demande. "Faut qu'ça scale!!!". Les gens qui créés des entreprises sont souvent intelligents et l'équipe technique compétente. Ce qui va faire la différence, outre les choix stratégiques, sont les choix qui vont permettre d'aller plus vite et de faire mieux. Ca n'empêche pas d'avoir des startups qui marchent en utilisant du Java, mais certains, comme Frank Sommers, se posent des questions sur l'utilisation du langage dans l'efficacité d'un framework How Does Language Impact Framework Design?. Le seul élément qui n'est pas extensible c'est le temps. Ensuite la grosse question est qu'est-ce qu'un bon langage ? Qu'est-ce qu'une bonne technologie ? Et la chacun a sa réponse en fonction de ses besoins, de son expérience et de son humeur. The Hundred-Year Language de Paul Graham[4] est une réflexion parmi d'autres sur ce point.

  • Le logiciel libre sur l'embarqué grand public et les téléphones mobiles va se généraliser : Google Android, OpenMoko, The BUG (qui a été gratifié d'un CNET Award au CES et massivement couvert par la presse spécialisée récemment). Je me demande comment va réagir Archos au projet OpenPMA. Soit ils le font ala Apple en essayant de tout vérouiller - ce serait vraiment moche -, soit ils décident de créer une communauté autour de leur produit et de leur plateforme logiciel. C'est un modèle économique différent car actuellement ils vendent des plugins et ouvrir la plateforme logicielle permettrait d'avoir des alternatives à leurs plugins propriétaires et donc ne pas les acheter. Cela peut constituer un pari intéressant sur l'innovation et permettre de rattraper le retard d'Archos sur Apple notamment sur la partie interface utilisateur -- pour le reste difficile de parler de retard. J'aimerais bien un PMP qui sache lire le MKV !

Notes

[1] Pourquoi Amazon a choisit erlang pour SimpleDB. J'ai une piste ici -- bien que je ne connaisse pas les détails d'implémentations de SimpleDB notamment le moteur de base de données : "Mnesia - Base de donnée temps réel distribuée pour Erlang. Mnesia supporte la réplication en mémoire vive (RAM) aussi bien que le stockage sur disque, permet la modification dynamique des schémas et permet de stocker des structures de données d'une complexité arbitraire. Mnesia est très rapide car fonctionne dans le même espace d'adressage que les applications qui l'utilise: cette caractéristique est possible, car Mnesia et les programmes qui l'utilise sont écrits en Erlang. Mnesia est un bon exemple de la puissance d'Erlang: Dans combien de langage pourriez-vous écrire un SGBD distribué, complet et de qualité industrielle en moins de 20 000 lignes de code." (extrait de Livre blanc: Le langage Erlang.

[2] Can Your Programming Language Do This?

[3] lua, perl, python, clisp me viennent en tête

[4] Deux essais cités de lui, vous allez croire que je suis fan ! Et bien pas spécialement, c'est juste que je lis Hackers and Painters en ce moment, et que son expérience est intéressante.

Monday, December 24 2007

Bonnes fêtes ! Et un peu de teasing pour 2008 ;)

Nous sommes en pleine période de fêtes de fin d'années. Entre la course aux cadeaux et les expéditions pour voir tout le monde, le temps passe vite ! Pour ceux qui lisent ce blog et que je n'aurais pas l'occasion de voir, je vous souhaite de passer de très bonnes fêtes de fin d'années. Beaucoup de courage pour ceux qui doivent travailler le soir du réveillon et/ou le jour de Noël et qui n'ont pas pris de congés.

Nous ne sommes pas encore en 2008, mais je vais décrire un peu ce qui attend ce blog au début de l'année.

  • Un redesign complet : ce blog en a bien besoin ! J'avais repris le thème deep_green, de Carnegie. Et au final j'ai complètement changé les couleurs (le thème était au départ vert sur noir...). Donc oui ça ne servait à rien de prendre ce thème :p. Je vais donc reprendre ça from scratch et apprendre à utiliser Inkscape.
  • La suite, enfin la ré-écriture plutôt, de la réflexion sur l'avenir des applications web libres. J'ai une ébauche bien avancée de la structure et des notes de côté. Après avoir relu le billet que j'avais écrit je ne suis pas satisfait : c'est pas très clair et j'ai du mal à poursuivre la réflexion à partir de ça. Je vais donc prendre le temps - car je trouve que le sujet le mérite - et mettre l'essai en ligne courant janvier.
  • Une présentation d'une application web écrite avec Django. Je n'en dis pas plus pour le moment :).
  • + de billets et surtout plus régulièrement. C'est probablement la résolution que l'on trouve le plus souvent chez bloggeurs, je vais essayer de m'y tenir !

Friday, December 7 2007

Le financement des services web gratuits par la pub

Ce billet est une tentative de réponse à la question soulevée par GML, Le web gratuit a-t-il un avenir ?. Après éclaircissement de sa part, je me suis rendu compte que j'avais mal compris l'hypothèse qu'il avançait. Je vais essayer de reprendre dans le bon sens ici :).

Continue reading...

Thursday, December 6 2007

Remember VisiCalc!

And other oldies ;). I am reading Founders at Work: Stories of Startups' Early Days and one of the stories is about Dan Bricklin and the early days of Software Arts, which he co-founded with Bob Frankston. On his website, he details the history of Software Arts and VisiCalc. VisiCalc was _the_ first spreadsheet software (1-2-3 followed just after). Bob tells how Implementing VisiCalc.

I have not yet finished the book, but I already learned a lot from the first stories. I think there is a lot to learn in this book from the story of such legendary startups (see the TOC for the list).

Pour les francophones, j'ai découvert AnteMemoire TV, une émission qui retrace l'histoire de l'informatique à travers des personnes, logiciels ou matériels connus et qui ont marqué leur temps. Cela fait partie d'un projet plus globale de musée de l'informatique. L'émission AnteMemoire TV #6 parle de VisiCalc (c'est le sujet du billet quand même !!).

Dédicace spéciale à Stéphane !!! A quand une démo sur l'Apple II ? ;)

[update] Comme quoi on se refait pas, Dan a fondé Software Garden et développé WikiCalc que l'on peut voir à l'oeuvre dans cette demo (screencast en flash).

TDD: Does writing software backwards really improve quality?

If you have adopted agile development methods, or even just interested in them, Dr. Dobb's published an article Test Driven Development: Does writing software backwards really improve quality? where they tried to evaluate if Test Driven Development (TDD) really improves code quality. The article shows that TDD helps to have less critical (none where found by the QA in the article's case) bugs and less bugs in general. The developer's feedback - the one who wrote the code used in the evaluation - is worth the reading:

  • The TDD code was refactored several times during development. Methods were created, then changed, and then changed again with each revision, resulting in code that was tighter or clearer. The developer felt like the code went through an extensive proofreading cycle similar to what is done for newspapers, magazines, or the like.
  • There was a freedom of experimentation that led to better design decisions. Once the first working version of a class method was completed and properly tested, the developer could then try new design ideas. The unit tests quickly confirmed or denied that the new code worked, providing a digital safety net.
  • On a number of occasions, the developer found that the TDD method forced him to slow down and think more carefully about what he was trying to accomplish. Rather than just banging out code to get the job done, he focused on writing high quality code.

This encourage me to try it in my current projects :). As they say in the introduction, writing tests before the code is not so natural ;) at first sight, but it could be fine to spend less time on bug squashing by taking some additional time to write the unit tests before.

Wednesday, December 5 2007

I like this king of BUG!

BUG_Logo_whiteBack_sm.jpg Do you know Buglabs? Because I can't wait to see their BUG!! To quote the site: "BUG is a collection of easy-to-use, open source hardware modules, each capable of producing one or more Web services. These modules snap together physically and the services connect together logically to enable users to easily build, program and share innovative devices and applications.". The first modules they'll release are the GPS, videocam, touch sensitive LCD screen and accelerometer/motion sensor. The SDK is based on Eclipse and will be freely available. It aims to be an entirely opensource project (like the Chumby which is based on a linux stack and freely distributes the electronic schematics): "We are using Linux 2.6.19. In addition, the hardware schematics, BOMs and so forth will be made freely available to encourage users in forums and so on to hack, extend and enhance it (from #165 LinuxJournal)."

I'll hope they'll succeed. Currently nothing is actually available but it seems they made some demos in SF and NY. Opensource hardware is a huge thing though not so novel. Remember the beginning of Apple and the Homebrew Computer Club. Back to the source! Back to the garage! :)

Tuesday, December 4 2007

Quel avenir pour les applications web libres ? (1/?)

Aujourd'hui le web est présent partout. Et comme le met en avant David Larlet, nos données personnelles se trouvent de plus en plus disséminées sur la toile. Dans ce contexte, l'avenir des applications web libres peut sembler primordial, car ce pourrait être un moyen de connaître ce qui est fait de ces données.

Le web 2.0 a amené des principes qui changent la manière de voir et concevoir les services sur le web. Si la notion d'application parait simple sur le desktop, la notion de Software as a Service (SaaS), a changé la donne des applications web. Les mashups en sont une preuve, lorsque les données sont suffisamment bien découpées - c'est à dire en unités petites et ré-utilisables -, le service est utilisé avec d'autres services pour constituer une nouvelle application. On utilisera à cet effet l'API fourni par les différentes services. Cependant, il existe toujours de manière sous-jacente une plateforme technique qui permet de mettre en oeuvre et d'assurer le service.

En résumé :

  • Une application libre ne garantit pas le contrôle des données personnelles à partir du moment où elle est hébergée chez un fournisseur de service.
  • Les offres d'hébergement gratuit ou pas cher suffisamment souples pour permettre l'installation d'environnement web variés permettent de pousser la création et la diversité technologique.
  • La réactivité de la communauté et la rapidité d'intégration des nouvelles technologies et normes permettra une adoption dans les entreprises.

Continue reading...

Thursday, November 22 2007

Innovation Happens Elsewhere online version

Web 2.0 brings to the world and to business minds the proof that opensource models (lamp, interoperability, respect to the standards, etc...) and values (openness and wisdom of crowds) can succeed. Actually it breaks the old proprietary approach by pushing mashups and remixability that needs open and standard interfaces, let say APIs. I've ordered some books about opensource philosophy today. That's why I found in my Amazon.com recommendations Innovation Happens Elsewhere. It has good reviews that helped me to find the authors provides an online version under creative commons. Good reading ;).

No Amazon mp3 downloads outside US

amazon_logo.gif sells 192 kbps without drm mp3 songs and full albums (cheaper than buying all songs individually) on Amazon.com MP3 Downloads. Unfortunately as the screenshot below shows, this is not for people outside US. And if you are a linux user, you can't natively - which means without virtualization or emulation - download full albums.

Amazon_MP3.png

nvidia CUDA

nvidia_logo.gif Thanks to the Dr. Dobb's Report newsletter, I've learned about nvidia CUDA. It's a SDK that aims to use nvidia GPUs for computing. It includes a C compiler, hardware debugger based on gdb interface), and a profiler. It also includes standard FFT and BLAS libraries. For even more fun, it provides a low level assembly language layer and driver interface. CUDA is supported on Linux and Windows XP. As one may guess, nvidia only provides binary files.

A comprehensive FAQ is available.

Elcomsoft has already find a usage for CUDA, it recently made some buzz in the news (press release in pdf) by adding support for GPUs in their password recovery products. For an overview of password cracking check this except from the book Endpoint Security. Password cracking with FPGAs was presented at conferences (like Cracking Wifi... Faster! at layerone) mainly for wep and wpa cracking. But now there is a growing interest in commodity hardware (like Sony PS3 with ps3-wepcrack). In fact, why spending money and time in FPGAs if you can use commodity - almost cheap - hardware? I hope we'll see soon john the ripper using CUDA :).

Thursday, November 15 2007

Software Development round up #1

As you may know, I'm not a software developer. However I like this domain and am always happy to write some code when I need (or not ;) ). Recently I am focusing on web development (with Django) and Agile methods.

pad.jpg

I am reading Practices of an Agile Developer which is a very interesting book. It brings some real feedback and experience, as well as good advices. I believe it is useful not only in software development but more generally in any IT (or even non-IT) project. The table of content gives a good overview of the book and the practices. The next step is to choose a agile method to focus on. Intuitively I may try eXtreme Programming at first.

python-logo.gif

Vim has always seemed to fit my needs. But I didn't try an IDE for ages, so now I give a try to PyDev, a plugin to Eclipse. I can't bear using arrow keys!!!! So I'll need to quickly find how to use vim modes. I found Vimplugin and viPlugin. After a quick comparison, I'll see which to choose. viPlugin is not free (neither as in free beer nor as in freedom). Thus I'll use vimplugin!

I have seen this list of python IDEs. Wing appears to be a good tool but is not free (as in freedom or even as in free beer!).

I also begin to learn more about Continuous Integration which is an important practice of Agile methods. I aim to integrate all agile practices in my programming tasks.

Monday, November 12 2007

Google's Android SDK is available

android-wallpaper5_thumbnail.jpg

Google has made Android SDK available. It is released under an Apache-like license. This ONLamp's article covers it. Android SDK provides an emulator environment to test it on a PC (as it is developed in Java, it should run on windows, osx and linux).

Check Android @Google Code for a detailed description and everything else about the project.

Thursday, November 8 2007

Hushmail and the feds

logo.gif This morning I read the Wired's article, Encrypted E-Mail Company Hushmail Spills to Feds. In short, Hushmail - which is a canadian comparny - helped the feds to decrypt steroid dealers' mails who were using the non-java webmail service (see the comparison java/non-java configuration for details). Read also the mail thread between Kevin Poulsen and Hushmail CTO, Brian Smith. He stressed that "The key point, though, is that in the non-Java configuration, private key and passphrase operations are performed on the server- side. This requires that users place a higher level of trust in our servers as a trade off for the better usability they get from not having to install Java and load an applet.".

Continue reading...

wpa_supplicant and libssl0.9.8g-2 segfaults on Debian Unstable

If like me this morning you got a segmentation fault in wpa_supplicant while trying to connect to an access point with WPA, check this Debian bug report. Upgrade to libssl0.9.8g-3 solves the issue (not yet available in upstream). Packages are available here.

Tuesday, November 6 2007

N9UF Twin Tact (Ep. 2)

Ce matin mon compte Neuf mobile était enfin créé pour de bon (j'ai l'impression que quand ils disent 2 jours après l'activation de la ligne/SIM c'est deux jours ouvrés). J'ai donc pu le rattacher à mon Neuf ID principal et me créer un Neuf ID mobile pour utiliser les services multimedia. Ce que j'ai fais dans la foulée en testant la TV en stream par le wifi.

Ca marche plutôt bien. Je n'ai pour l'instant testé que quelques minutes, mais c'est fluide. En revanche il manque la possibilité de tourner l'écran (au temps pour moi on peut le faire très simplement). Par défaut, la vidéo s'affiche en 4/3 en tenant le téléphone clavier en bas (position normale). En cliquant sur l'écran en cours de lecture, la vidéo tourne dans le sens anti-horaire. Un nouveau clic permet de revenir à la disposition initiale.

Pour l'instant j'ai relevé les defauts/bugs suivants :

  • Pas de réglage du volume sur le téléphone (avec une molette par exemple)
  • Problème d'incateur de charge. Là par exemple, le téléphone est connecté en USB à mon laptop et je ne vois pas l'état de la charge
  • Un seul port USB sert à tout faire : connexion avec le PC, kit main-libre, etc...
  • Bascule automatique vers le GPRS quand le signal wifi est très faible. Ce point est assez moche. Pour le décrire un peu plus précisément, je me suis connecté sur la Neufbox chez des proches via le hotspot Neuf Wifi. Le signal était très faible, il fallait qu'il traverse un plancher en béton ;). Et la je lance le navigateur et hop, je vois le petit g qui s'affiche, m'indiquant que je suis passé en GPRS sans me demander quoique ce soit !

En parlant du hotspot Neuf WiFi, je me demande comment se passe l'authentification. C'est un point à regarder.

Google's Android mobile OS and Open Handset Alliance

A quick post about Ars Technica's article on Google's Android and Open Handset Alliance.

Main facts:

  • No hardware manufacturing but a partnership with mobile manufacturers (HTC, LG, Motorola, Samsung) and carriers
  • Android is a linux-based OS that comes from the acquisition of the mobile compary in 2005
  • Aspects of the platform will be provided under the Apache license
  • Full SDK for Android available next week

There is also a true free (as in freedom) mobile phone: the Neo1973 which runs OpenMoko. It is said to be available soon. Wait 'n see.

Thursday, November 1 2007

N9UF Twin Tact (Ep. 1)

I have subscribed to the Neuf Mobile Twin offer. I took the Twin Tact phone. It's an e28 gsm/wifi phone rebranded by Neuf. It allows to use my voip phone subscription (free national and international calls) with my mobile when I get a wifi access. Neuf signed an agreement with FON to share their hotspots. Consequently you can connect your Twin to any neufbox or FON hotspot. As this offer is only provided in France, I'll switch in french language in the rest of this post. If some english-spoken readers - are they any? ;) - want a translation or to discuss about this, feel free to drop me an e-mail or add a comment.

Ok continuons donc en français. J'ai reçu le Twin Tact la semaine qui a suivi ma souscription à l'offre en ligne. J'avais demandé le portage de mon numéro de téléphone depuis le précédent opérateur. J'ai reçu un e-mail d'Orange et de Neufmobile m'indiquant que le numéro serait porté 15 jours après ma souscription. Vu que le minimum est de 10 jours, c'est plutôt satisfaisant.Je reçois donc mon Twin Tact et le déballe. Contenu classique, téléphone, carte SIM, kit oreillette, chargeur usb, micro SD 1 Go, CD d'install et la doc.

Continue reading...

Bunny the fuzzer

killer_bunny.jpg

When Michal Zawleski does something, it's often worth seeing it. His last project, announced on Bugtraq, is Bunny the fuzzer. It is described as a "a closed loop, high-performance, general purpose protocol-blind fuzzer for C programs.". There is still a lot of buzz about fuzzers. They help to spot vulnerabilities in code with or without source code available. Combining tracing with a debugger and fuzzing can be a quick way to find the most superficial vulnerabilities. Need to find a target to give a try to Bunny,

Wednesday, October 31 2007

Facebook and privacy

I've just read Replace Facebook Using Open Social Tools a Wired article I found thanks to Breaking Open Facebook With FOSS on Slashdot. See also Breaking Open Facebook with Open Source Software and Breaking Open Facebook with Open Source Software (Part 2). To do a quick sum up, NewsCloud thinks Facebook owns too much information about every user and needs an opensource alternative. yes that's true Facebook knows people's interests, discussions and connexions with other people. That's a concern and it needs attention. But how breaking a single application into distributed one using different services can help to avoid privacy problem? In fact, you need to know how each service manage your personal information. The problem would be also distributed.

W3 started an initiative on privacy: P3P. But what could you do if the service doesn't provide the privacy you want? Would you not use the service? I have many doubt when I see what's happening with instant messaging. Most non technical people I know use MSN. So do I! I actually use kopete, and in addition to my jabber accounts, I have a MSN account. I believe the problem is not about having all your information centralized in one service databases, it's more about how to control what a provider do with you data. Nowadays, I must trust my service providers. How can I check what they do with my information? Even my ISP. Is it only a promise? Industry has brought compliance standards in quality and security (think SOX, ISO 27001). And in privacy? Are they any privacy compliance standard?

- page 1 of 2