small resume update

This commit is contained in:
Yann Esposito (Yogsototh) 2012-09-20 13:50:54 +02:00
parent b1521a677e
commit 82bdcd6ec2
18 changed files with 998 additions and 1133 deletions

File diff suppressed because one or more lines are too long

View file

@ -79,7 +79,7 @@ Imperative language could also benefit from this functional organization.</p>
<ul id="markdown-toc">
<li><a href="#introduction">Introduction</a></li>
<li><a href="#first-version">First version</a> <ul>
<li><a href="#lets-play-the-song-of-our-people">Lets play the song of our people</a></li>
<li><a href="#lets-play-the-song-of-our-people">Let&rsquo;s play the song of our people</a></li>
<li><a href="#let-us-start">Let us start</a></li>
</ul>
</li>
@ -164,7 +164,7 @@ We start cleaning the code at the 5<sup>th</sup> section.</p>
The first being mostly some boilerplate<sup id="fnref:011"><a href="#fn:011" rel="footnote">2</a></sup>.
And the second part more focused on OpenGL and content.</p>
<h3 id="lets-play-the-song-of-our-people">Lets play the song of our people</h3>
<h3 id="lets-play-the-song-of-our-people">Let&rsquo;s play the song of our people</h3>
<div class="codehighlight">
@ -400,7 +400,7 @@ It is a bit long before the first image appears, but if you resize the window, i
This property is a direct consequence of purity.
If you look closely, you see that <code>allPoints</code> is a pure list.
Therefore, calling <code>allPoints</code> will always render the same result and Haskell is clever enough to use this property.
While Haskell doesnt garbage collect <code>allPoints</code> the result is reused for free.
While Haskell doesn&rsquo;t garbage collect <code>allPoints</code> the result is reused for free.
We did not specified this value should be saved for later use.
It is saved for us.</p>
@ -638,7 +638,7 @@ instead of using a 3D projection of quaternions.
I am pretty sure this construction is not useful for numbers.
But it will be enough for us to create something that look nice.</p>
<p>This section is quite long, but dont be afraid,
<p>This section is quite long, but don&rsquo;t be afraid,
most of the code is some OpenGL boilerplate.
If you just want to skim this section,
here is a high level representation:</p>
@ -654,7 +654,7 @@ here is a high level representation:</p>
<p>Drawing: </p>
<ul>
<li>set doubleBuffer, handle depth, window size</li>
<li>set doubleBuffer, handle depth, window size&hellip;</li>
<li>Use state to apply some transformations</li>
</ul>
</li>
@ -910,7 +910,7 @@ Mainly there are two parts: apply some transformations, draw the object.</p>
<h3 id="the-3d-mandelbrot">The 3D Mandelbrot</h3>
<p>We have finished with the OpenGL section, lets talk about how we
<p>We have finished with the OpenGL section, let&rsquo;s talk about how we
generate the 3D points and colors.
First, we will set the number of details to 200 pixels in the three dimensions.</p>
@ -1024,7 +1024,7 @@ depthPoints = do
<p>If you prefer the first version, then just imagine how hard it will be to change the enumeration of the point from (x,y) to (x,z) for example.</p>
<p>Also, we didnt searched for negative values.
<p>Also, we didn&rsquo;t searched for negative values.
This modified Mandelbrot is no more symmetric relatively to the plan <code>y=0</code>.
But it is symmetric relatively to the plan <code>z=0</code>.
Then I mirror these values. </p>
@ -1249,7 +1249,7 @@ ymandel x y z = mandel (2*x/width) (2*y/height) (2*z/deep) 64
</div>
<p>This code is cleaner but many things doesnt feel right.
<p>This code is cleaner but many things doesn&rsquo;t feel right.
First, all the user interaction code is outside our main file.
I feel it is okay to hide the detail for the rendering.
But I would have preferred to control the user actions.</p>
@ -1283,12 +1283,12 @@ We will have two choices: </p>
</li>
<li>
<p>Our main problem come from user interaction.
If you ask “the Internet”,
If you ask &ldquo;the Internet&rdquo;,
about how to deal with user interaction with a functional paradigm,
the main answer is to use <em>functional reactive programming</em> (FRP).
I wont use FRP in this article.
Instead, Ill use a simpler while less effective way to deal with user interaction.
But The method Ill use will be as pure and functional as possible.</p>
I won&rsquo;t use FRP in this article.
Instead, I&rsquo;ll use a simpler while less effective way to deal with user interaction.
But The method I&rsquo;ll use will be as pure and functional as possible.</p>
</li>
</ol>
@ -1310,7 +1310,7 @@ First, what the main loop should look like if we could make our own:</p>
<li>a function taking two parameters: time and world state and render a new world without user interaction.</li>
</ul>
<p>Here is a real working code, Ive hidden most display functions.
<p>Here is a real working code, I&rsquo;ve hidden most display functions.
The YGL, is a kind of framework to display 3D functions.
But it can easily be extended to many kind of representation.</p>
@ -1530,7 +1530,7 @@ idleAction tnew world = world {
<p>Now the function which will generate points in 3D.
The first parameter (<code>res</code>) is the resolution of the vertex generation.
More precisely, <code>res</code> is distance between two points on one direction.
We need it to “close” our shape.</p>
We need it to &ldquo;close&rdquo; our shape.</p>
<p>The type <code>Function3D</code> is <code>Point -&gt; Point -&gt; Maybe Point</code>.
Because we consider partial functions
@ -1599,7 +1599,7 @@ ymandel x y z = fromIntegral (mandel x y z 64) / 64
</div>
<p>I wont explain how the magic occurs here.
<p>I won&rsquo;t explain how the magic occurs here.
If you are interested, just read the file <a href="code/05_Mandelbulb/YGL.hs"><code>YGL.hs</code></a>.
It is commented a lot.</p>
@ -1619,8 +1619,8 @@ It is commented a lot.</p>
<p>Our code architecture feel very clean.
All the meaningful code is in our main file and all display details are
externalized.
If you read the code of <code>YGL.hs</code>, youll see I didnt made everything perfect.
For example, I didnt finished the code of the lights.
If you read the code of <code>YGL.hs</code>, you&rsquo;ll see I didn&rsquo;t made everything perfect.
For example, I didn&rsquo;t finished the code of the lights.
But I believe it is a good first step and it will be easy to go further.
Unfortunately the program of the preceding session is extremely slow.
We compute the Mandelbulb for each frame now.</p>
@ -1904,20 +1904,20 @@ ymandel x y z = fromIntegral (mandel x y z 64) / 64
<p>As we can use imperative style in a functional language,
know you can use functional style in imperative languages.
This article exposed a way to organize some code in a functional way.
Id like to stress the usage of Haskell made it very simple to achieve this.</p>
I&rsquo;d like to stress the usage of Haskell made it very simple to achieve this.</p>
<p>Once you are used to pure functional style,
it is hard not to see all advantages it offers.</p>
<p>The code in the two last sections is completely pure and functional.
Furthermore I dont use <code>GLfloat</code>, <code>Color3</code> or any other OpenGL type.
Furthermore I don&rsquo;t use <code>GLfloat</code>, <code>Color3</code> or any other OpenGL type.
If I want to use another library in the future,
I would be able to keep all the pure code and simply update the YGL module.</p>
<p>The <code>YGL</code> module can be seen as a “wrapper” around 3D display and user interaction.
<p>The <code>YGL</code> module can be seen as a &ldquo;wrapper&rdquo; around 3D display and user interaction.
It is a clean separator between the imperative paradigm and functional paradigm.</p>
<p>If you want to go further, it shouldnt be hard to add parallelism.
<p>If you want to go further, it shouldn&rsquo;t be hard to add parallelism.
This should be easy mainly because most of the visible code is pure.
Such an optimization would have been harder by using directly the OpenGL library.</p>
@ -1927,7 +1927,7 @@ O(n².log(n)) to O(n³).</p>
<hr/><div class="footnotes">
<ol>
<li id="fn:001">
<p>Unfortunately, I couldnt make this program to work on my Mac. More precisely, I couldnt make the <a href="http://openil.sourceforge.net/">DevIL</a> library work on Mac to output the image. Yes I have done a <code>brew install libdevil</code>. But even a minimal program who simply write some <code>jpg</code> didnt worked. I tried both with <code>Haskell</code> and <code>C</code>.<a href="#fnref:001" rel="reference">&#8617;</a></p>
<p>Unfortunately, I couldn&rsquo;t make this program to work on my Mac. More precisely, I couldn&rsquo;t make the <a href="http://openil.sourceforge.net/">DevIL</a> library work on Mac to output the image. Yes I have done a <code>brew install libdevil</code>. But even a minimal program who simply write some <code>jpg</code> didn&rsquo;t worked. I tried both with <code>Haskell</code> and <code>C</code>.<a href="#fnref:001" rel="reference">&#8617;</a></p>
</li>
<li id="fn:011">
<p>Generally in Haskell you need to declare a lot of import lines.

View file

@ -19,7 +19,7 @@
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Haskell-OpenGL-Mandelbrot/"/>
<content type="html">&lt;p&gt;&lt;img alt="The B in Benoît B. Mandelbrot stand for Benoît B. Mandelbrot" src="/Scratch/img/blog/Haskell-OpenGL-Mandelbrot/BenoitBMandelbrot.jpg" /&gt;&lt;/p&gt;
<content type="html">&lt;p&gt;&lt;img alt="The B in Beno&#238;t B. Mandelbrot stand for Beno&#238;t B. Mandelbrot" src="/Scratch/img/blog/Haskell-OpenGL-Mandelbrot/BenoitBMandelbrot.jpg" /&gt;&lt;/p&gt;
&lt;div class="intro"&gt;
@ -64,10 +64,10 @@ Imperative language could also benefit from this functional organization.&lt;/p&
&lt;li&gt;&lt;a href="#introduction"&gt;Introduction&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#install"&gt;Install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#don-t-be-afraid"&gt;Dont be afraid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#don-t-be-afraid"&gt;Don&amp;rsquo;t be afraid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#very-basic-haskell"&gt;Very basic Haskell&lt;/a&gt;
&lt;ul&gt;
...&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/hr&gt;&lt;/center&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/p&gt;</content>
...&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/hr&gt;&lt;/center&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2012-02-02:/Scratch/en/blog/Typography-and-the-Web/</id>
@ -85,7 +85,7 @@ Imperative language could also benefit from this functional organization.&lt;/p&
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; Web typography sucks and well have to wait forever before it will be fixed.&lt;/p&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; Web typography sucks and we&amp;rsquo;ll have to wait forever before it will be fixed.&lt;/p&gt;
&lt;/div&gt;
@ -94,13 +94,13 @@ Imperative language could also benefit from this functional organization.&lt;/p&
&lt;p&gt;I stumbled upon &lt;a href="http://opentypography.org/"&gt;open typography&lt;/a&gt;. Their main message is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;«There is no reason to wait for browser development to catch up.
We can all create better web typography ourselves, today.»&lt;/p&gt;
&lt;p&gt;&#171;There is no reason to wait for browser development to catch up.
We can all create better web typography ourselves, today.&#187;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As somebody who tried to make my website using some nice typography features and in particular &lt;em&gt;ligatures&lt;/em&gt;, I believe this is wrong.&lt;/p&gt;
&lt;p&gt;I already made an automatic syst...&lt;/p&gt;&lt;/p&gt;</content>
&lt;p&gt;I already made an automa...&lt;/p&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2012-01-15:/Scratch/en/blog/Yesod-tutorial-for-newbies/</id>
@ -122,7 +122,7 @@ We can all create better web typography ourselves, today.»&lt;/p&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; A simple yesod tutorial.
Yesod is a Haskell web framework.
You shouldnt need to know Haskell. &lt;/p&gt;
You shouldn&amp;rsquo;t need to know Haskell. &lt;/p&gt;
&lt;blockquote&gt;
&lt;center&gt;&lt;span class="sc"&gt;&lt;b&gt;Table of content&lt;/b&gt;&lt;/span&gt;&lt;/center&gt;
@ -135,7 +135,7 @@ You shouldnt need to know Haskell. &lt;/p&gt;
&lt;li&gt;&lt;a href="#some-last-minute-words"&gt;Some last minute words&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/p&gt;</content>
...&lt;/ul&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-10-20:/Scratch/en/blog/SVG-and-m4-fractals/</id>
@ -185,7 +185,7 @@ Then some believed it would be a good idea to invent many &lt;span class="sc"&gt
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yesodweb.com"&gt;Yesod&lt;/a&gt; is a web framework which recently reached the maturity for which you should consider to use it.
Before telling you why you should learn Haskell and use yesod, I will talk about ideas yesod introduced and I didnt saw in other frameworks before.&lt;/p&gt;
Before telling you why you should learn Haskell and use yesod, I will talk about ideas yesod introduced and I didn&amp;rsquo;t saw in other frameworks before.&lt;/p&gt;
&lt;/div&gt;
@ -193,11 +193,11 @@ Before telling you why you should learn Haskell and use yesod, I will talk about
&lt;h2 id="type-safety"&gt;Type safety&lt;/h2&gt;
&lt;p&gt;Lets start by an obligatory link from &lt;a href="http://xkcd.com"&gt;xkcd&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start by an obligatory link from &lt;a href="http://xkcd.com"&gt;xkcd&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://imgs.xkcd.com/comics/exploits_of_a_mom.png" alt="SQL injection by a mom" /&gt;&lt;/p&gt;
&lt;p&gt;When you create a web application, a lot of time is spent dealing wit...&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
&lt;p&gt;When you create a web application, a lot of time is spent...&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-09-28:/Scratch/en/blog/Higher-order-function-in-zsh/</id>
@ -273,11 +273,11 @@ $ mapl 'echo result $1' $(m...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</c
&lt;p&gt;The language of my firsts programs!
I was about 10, with an &lt;code&gt;MO5&lt;/code&gt; and &lt;code&gt;Amstrad CPC 6128&lt;/code&gt; and even with my &lt;code&gt;Atari STe&lt;/code&gt;.
This is the language of &lt;code&gt;GOTO&lt;/code&gt;s.
Ô nostalgia.
&#212; nostalgia.
Unfortunately this might be the only interesting part of this language.&lt;/p&gt;
&lt;p&gt;Today this language is obsolescent.
It is not even good to learn pro...&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
It is not even good to learn pr...&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-08-25:/Scratch/en/blog/Learn-Vim-Progressively/</id>
@ -289,7 +289,7 @@ It is not even good to learn pro...&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/"/>
<content type="html">&lt;p&gt;&lt;img alt="Über leet use vim!" src="/Scratch/img/blog/Learn-Vim-Progressively/uber_leet_use_vim.jpg" /&gt;&lt;/p&gt;
<content type="html">&lt;p&gt;&lt;img alt="&#220;ber leet use vim!" src="/Scratch/img/blog/Learn-Vim-Progressively/uber_leet_use_vim.jpg" /&gt;&lt;/p&gt;
&lt;div class="intro"&gt;
@ -308,10 +308,10 @@ It is not even good to learn pro...&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
&lt;/blockquote&gt;
&lt;p&gt;Learn &lt;a href="http://www.vim.org"&gt;vim&lt;/a&gt; and it will be your last text editor.
There isnt any better text editor that I know of.
There isn&amp;rsquo;t any better text editor that I know of.
It is hard to learn, but incredible to use.&lt;/p&gt;
&lt;p&gt;I suggest you teach yourself ...&lt;/p&gt;&lt;/p&gt;</content>
&lt;p&gt;I suggest you teach yo...&lt;/p&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-08-17:/Scratch/en/blog/A-more-convenient-diff/</id>
@ -327,7 +327,7 @@ It is hard to learn, but incredible to use.&lt;/p&gt;
&lt;p&gt;This is why, when you use &lt;code&gt;git&lt;/code&gt; it will use a better formatting and colorize it.&lt;/p&gt;
&lt;p&gt;Here is the script I use when I want to use human readable &lt;code&gt;diff&lt;/code&gt; à la git. &lt;/p&gt;
&lt;p&gt;Here is the script I use when I want to use human readable &lt;code&gt;diff&lt;/code&gt; &#224; la git. &lt;/p&gt;
&lt;div class="codefile"&gt;&lt;a href="/Scratch/en/blog/A-more-convenient-diff/code/ydiff"&gt;&amp;#x27A5; ydiff&lt;/a&gt;&lt;/div&gt;
@ -343,7 +343,7 @@ function colorize_diff {
-) print -n $fg[red];;
@) # Display in cyan the @@ positions @@
if [[ ${line[1]} = '@' ]]; then
line=$(print $line | perl -pe 's#(\@\@[^\@]*\@\@)(.*)$#'$fg[cyan]'$1'$reset_...&lt;/code&gt;&lt;/pre&gt;</content>
line=$(print $line | perl -pe 's#(\@\@[^\@]*\@\@)(.*)$#'$fg[cyan]'$1'$reset...&lt;/code&gt;&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-07-10:/Scratch/en/blog/Haskell-Mandelbrot/</id>
@ -365,8 +365,8 @@ instance Num C where C(x,y)*C(z,t)=C(z*x-y*t,y*z+x*t);C(x,y)+C(z,t)=C(x+z,y+t);a
r(C(x,y))=x;i(C(x,y))=y
f c z 0=0;f c z n=if(r(abs(z))&amp;gt;2)then n else f c ((z*z)+c) (n-1)
h j k = map (\z-&amp;gt;(f (C z) (C(0,0)) 32,(fst z&amp;gt;l - q/2))) [(x,y)|y&amp;lt;-[p,(p+((o-p)/a))..o],x&amp;lt;-[m,(m + q)..l]] where o=i k;p=i j;m=r j;l=r k;q=(l-m)/b
u j k = concat $ map v $ h j k where v (i,p)=(" .,`'°\":;-+oO0123456789=!%*§&amp;amp;$@#"!!i):rst p;rst True="\n";rst False=""
main = putStrLn $ im 0 ...&lt;/code&gt;&lt;/pre&gt;</content>
u j k = concat $ map v $ h j k where v (i,p)=(" .,`'&#176;\":;-+oO0123456789=!%*&#167;&amp;amp;$@#"!!i):rst p;rst True="\n";rst False=""
main = putStrLn $ im ...&lt;/code&gt;&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-05-18:/Scratch/en/blog/Password-Management/</id>
@ -394,9 +394,9 @@ I use a different password on all website.&lt;/p&gt;
&lt;p&gt;Disclamer, this is an unashamed attempt to make you download my iPhone app&amp;nbsp;;-).
Youre always here?
Even if you wont download my app, you should read more.
My method doesnt necessitate my app.
You&amp;rsquo;re always here?
Even if you won&amp;rsquo;t download my app, you should read more.
My method doesn&amp;rsquo;t necessitate my app.
It is both safe and easy to use everyday.&lt;/p&gt;
&lt;p&gt;If you just want to &lt;em&gt;use&lt;/em&gt; the tools without searching to understand why it is safe, just jump at the &lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;</content>
@ -434,7 +434,7 @@ It is both safe and easy to use everyday.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: I might change my mind now. Why?
I just discovered a &lt;a href="https://github.com/rstacruz/js2coffee"&gt;js2coffee converter&lt;/a&gt;. Furthermore Denis Knauf told me about a &lt;code&gt;CoffeeScript.eval&lt;/code&gt; function.
And as Denis said: it is time to use Coffeescript as a javascript with Ruby-like syntax not a Ruby-like programming language.&lt;/p&gt;
And as Denis said: &amp;ldquo;it is time to use Coffeescript as a javascript with Ruby-like syntax not a Ruby-like programming language&amp;rdquo;.&lt;/p&gt;
&lt;/div&gt;
@ -513,7 +513,7 @@ When we are used to &lt;span style="text-transform: uppercase"&gt;L&lt;sup style
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; Played to process a &lt;code&gt;wav&lt;/code&gt; file. &lt;code&gt;C&lt;/code&gt; was easier and cleaner than Ruby.&lt;/p&gt;
&lt;p&gt;edit: I wanted this program to work only on one specific machine (a x86 on a 32 bit Ubuntu). Therefore I didnt had any portability consideration. This is only a &lt;em&gt;hack&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;edit: I wanted this program to work only on one specific machine (a x86 on a 32 bit Ubuntu). Therefore I didn&amp;rsquo;t had any portability consideration. This is only a &lt;em&gt;hack&lt;/em&gt;.&lt;/p&gt;
&lt;/div&gt;
@ -522,11 +522,11 @@ When we are used to &lt;span style="text-transform: uppercase"&gt;L&lt;sup style
&lt;p&gt;I had to compute the sum of the absolute values of data of a &lt;code&gt;.wav&lt;/code&gt; file.
For efficiency (and fun) reasons, I had chosen &lt;code&gt;C&lt;/code&gt; language.&lt;/p&gt;
&lt;p&gt;I didnt programmed in &lt;code&gt;C&lt;/code&gt; for a long time.
&lt;p&gt;I didn&amp;rsquo;t programmed in &lt;code&gt;C&lt;/code&gt; for a long time.
From my memory it was a pain to read and write to files.
But in the end I was really impressed by the code I get.
It was really clean.
This is even more impressive knowing I used m...&lt;/p&gt;</content>
This is even more impressive know...&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-10-10:/Scratch/en/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/</id>
@ -559,12 +559,12 @@ This is even more impressive knowing I used m...&lt;/p&gt;</content>
&lt;/div&gt;
&lt;p&gt;Ive (re)discovered how to become S/MIME compliant.
&lt;p&gt;I&amp;rsquo;ve (re)discovered how to become S/MIME compliant.
I am now suprised how easy it was.
Some years ago it was far more difficult.
Now Im able to sign and encrypt my emails.&lt;/p&gt;
Now I&amp;rsquo;m able to sign and encrypt my emails.&lt;/p&gt;
&lt;h2 id="why-is-it-important"&gt;Why is it...&lt;/h2&gt;&lt;/p&gt;</content>
&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-10-06:/Scratch/en/blog/2010-10-06-New-Blog-Design-Constraints/</id>
@ -586,7 +586,7 @@ But the major problem came from, &lt;code&gt;font-shadow&lt;/code&gt; and gradie
Then my new design obey to the following rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;no CSS element begining by -moz or -webkit, etc…,&lt;/li&gt;
&lt;li&gt;no CSS element begining by &amp;lsquo;-moz&amp;rsquo; or &amp;lsquo;-webkit&amp;rsquo;, etc&amp;hellip;,&lt;/li&gt;
&lt;li&gt;no text shadow,&lt;/li&gt;
&lt;li&gt;clean (I mean delete) most javascript.&lt;/li&gt;
&lt;/ul&gt;
@ -607,7 +607,7 @@ Then my new design obey to the following rules:&lt;/p&gt;
<content type="html">&lt;p&gt;You can remark at the bottom of each page I provide a last modification date.
This label was first calculated using the &lt;code&gt;mtime&lt;/code&gt; of the file on the file system.
But many times I modify this date just to force some recompilation.
Therefore the date wasnt a date of &lt;em&gt;real&lt;/em&gt; modification.&lt;/p&gt;
Therefore the date wasn&amp;rsquo;t a date of &lt;em&gt;real&lt;/em&gt; modification.&lt;/p&gt;
&lt;p&gt;I use &lt;a href="http://git-scm.org"&gt;git&lt;/a&gt; to version my website.
And fortunately I can know the last date of &lt;em&gt;real&lt;/em&gt; change of a file.
@ -617,7 +617,7 @@ This is how I do this with &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/
&lt;pre&gt;&lt;code class="ruby"&gt;def gitmtime
filepath=@item.path.sub('/Scratch/','content/html/').sub(/\/$/,'')
ext...&lt;/code&gt;&lt;/pre&gt;</content>
...&lt;/code&gt;&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-09-02:/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/</id>
@ -659,8 +659,8 @@ NSString *hex_hash = [self hex_sha1:@"some NSString to be sha1'ed"];
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-08-31-send-mail-from-command-line-with-attached-file/"/>
<content type="html">&lt;p&gt;I had to send a mail using only command line.
I was surprised it isnt straightforward at all.
I didnt had &lt;code&gt;pine&lt;/code&gt; nor &lt;code&gt;mutt&lt;/code&gt; or anything like that.
I was surprised it isn&amp;rsquo;t straightforward at all.
I didn&amp;rsquo;t had &lt;code&gt;pine&lt;/code&gt; nor &lt;code&gt;mutt&lt;/code&gt; or anything like that.
Just &lt;code&gt;mail&lt;/code&gt; and &lt;code&gt;mailx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;What Internet say (via google) is&lt;/p&gt;
@ -670,7 +670,7 @@ Just &lt;code&gt;mail&lt;/code&gt; and &lt;code&gt;mailx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I tried it.
And it works almost each times.
But for my file, it didnt worked.
But for my file, it didn&amp;rsquo;t worked.
I compressed it to &lt;code&gt;.gz&lt;/code&gt;, &lt;code&gt;.bz2&lt;/code&gt; and &lt;code&gt;.zip&lt;/code&gt;.
Using &lt;code&gt;.bz2&lt;/code&gt; format it worked nicely, but not with other formats.
Instead of having an attached file I saw this in my email.&lt;/p&gt;
@ -678,7 +678,7 @@ Instead of having an attached file I saw this in my email.&lt;/p&gt;
&lt;pre&gt;
begin 664 fic.jpg
M(R$O=7-R+V)I;B]E;G8@&amp;gt;G-H"GAL&amp;lt;STD,0H*9F]R(&amp;QI;F4@:6X@)"@\("1X
M;',@*0H@("`@9&amp;amp;-R/20H96-H;R`D;&amp;amp;EN92!\(&amp;amp;%...&lt;/pre&gt;</content>
M;',@*0H@("`@9&amp;amp;-R/20H96-H;R`D;...&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-08-23:/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/</id>
@ -750,7 +750,7 @@ I was inspired by Readability and iBooks&lt;small&gt;&amp;copy;&lt;/small&gt; (t
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator/"/>
<content type="html">&lt;p&gt;Some &lt;a href="http://reddit.com"&gt;Reddit&lt;/a&gt; users reported my website was really long to load and to scroll.
They thinks it was because of the 1px shadow I apply on all the text.
They thinks it was because of the &amp;lsquo;1px shadow&amp;rsquo; I apply on all the text.
I was a bit surprised, because I make some test into a really &lt;em&gt;slow&lt;/em&gt; virtual machine. And all have always worked fine. In fact, what slow down so much are by order of importance:&lt;/p&gt;
&lt;ol&gt;
@ -762,7 +762,7 @@ I was a bit surprised, because I make some test into a really &lt;em&gt;slow&lt;
&lt;p&gt;On Safari on Mac there is absolutely no rendering time problem. But when I use Chrome under Linux it is almost unusable.&lt;/p&gt;
&lt;p&gt;Safari and Chrome use webkit, when you access my website with javascript enabled, an additionnal browser specific CSS is loaded. Until now I...&lt;/p&gt;</content>
&lt;p&gt;Safari and Chrome use webkit, when you access my website with javascript enabled, an additionnal browser specific CSS is loaded....&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-07-05:/Scratch/en/blog/2010-07-05-Cappuccino-and-Web-applications/</id>
@ -784,7 +784,7 @@ I was a bit surprised, because I make some test into a really &lt;em&gt;slow&lt;
&lt;li&gt;Tried to make &lt;a href="http://yannesposito.com/Softwares/YPassword.html"&gt;YPassword&lt;/a&gt; in jQuery and with Cappuccino.&lt;/li&gt;
&lt;li&gt;Cappuccino nice in desktop browser but 1.4MB, not compatible with iPhone.&lt;/li&gt;
&lt;li&gt;jQuery not as nice as the Cappuccino version but 106KB. iPhone compatible.&lt;/li&gt;
&lt;li&gt;Ill give a try to Dashcode 3.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ll give a try to Dashcode 3.&lt;/li&gt;
&lt;/ul&gt;
@ -797,7 +797,7 @@ I was a bit surprised, because I make some test into a really &lt;em&gt;slow&lt;
&lt;p&gt;Before start, I must say I know Cappuccino and jQuery are no more comparable than Cocoa and the C++ standard library. One is oriented for user interface while the other is and helper for low level programming.
Nonetheless I used these two to make the same web application. This is why I compare the experienc...&lt;/p&gt;&lt;/div&gt;&lt;/hr&gt;</content>
Nonetheless I used these two to make the same web application. This is why I compare the exp...&lt;/p&gt;&lt;/div&gt;&lt;/hr&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-06-19:/Scratch/en/blog/2010-06-19-jQuery-popup-the-easy-way/</id>
@ -910,7 +910,7 @@ You can get it on &lt;a href="http://github.com/yogsototh/nanoc3_blog"&gt;github
&lt;li&gt;&lt;a href="http://intensedebate.org"&gt;intenseDebate&lt;/a&gt; comments integration (asynchronous)&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Portable with and without javascript, XHTML Strict 1.0 / CSS3,&lt;/li&gt;
&lt;li&gt;Write in markdown format (no HTML editing needed),&lt;/li&gt;
&lt;li&gt;Typographic ameliorations (no : starting a l...&lt;/li&gt;&lt;/ul&gt;</content>
&lt;li&gt;Typographic ameliorations (no &amp;lsquo;:&amp;rsquo; ...&lt;/li&gt;&lt;/ul&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-06-14:/Scratch/en/blog/2010-06-14-multi-language-choices/</id>
@ -928,7 +928,7 @@ Most people advice me to have one file per language. Generally it ends with:&lt;
&lt;pre class="twilight"&gt;
Bonjour,
voici un exemple de texte en français.
voici un exemple de texte en fran&#231;ais.
[image](url)
&lt;/pre&gt;
@ -941,12 +941,12 @@ here is an example of english text.
&lt;p&gt;This way of handling translations force you to write completely an article in one language, copy it, and translate it.&lt;/p&gt;
&lt;p&gt;However, most of time, there are common parts like images, source code, etc
&lt;p&gt;However, most of time, there are common parts like images, source code, etc&amp;hellip;
When I want to correct some mistake on these parts, I have to make twice the work. With sometimes adding another mistake in only one language.&lt;/p&gt;
&lt;p&gt;This is why I preferred to handle it differently.
I use &lt;em&gt;tags&lt;/em&gt; on a single file.
Finally my files looks l...&lt;/p&gt;</content>
Finally my files...&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-05-24:/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/</id>
@ -971,7 +971,7 @@ Finally my files looks l...&lt;/p&gt;</content>
&lt;li&gt;Used a pen and a sheet of paper&lt;/li&gt;
&lt;li&gt;Made some math.&lt;/li&gt;
&lt;li&gt;Crushed the problem in 10 minutes&lt;/li&gt;
&lt;li&gt;Conclusion: The pragmatism shouldnt mean “never use theory”.&lt;/li&gt;
&lt;li&gt;Conclusion: The pragmatism shouldn&amp;rsquo;t mean &amp;ldquo;never use theory&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
@ -982,7 +982,7 @@ Finally my files looks l...&lt;/p&gt;</content>
&lt;p&gt;For my job, I needed to resolve a problem. It first seems not too hard.
Then I started working directly on my program.
I entered in the &lt;em&gt;infernal&lt;/em&gt;...&lt;/p&gt;</content>
I entered in the...&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-05-19:/Scratch/en/blog/2010-05-19-How-to-cut-HTML-and-repair-it/</id>
@ -1033,14 +1033,14 @@ I entered in the &lt;em&gt;infernal&lt;/em&gt;...&lt;/p&gt;</content>
&lt;p&gt;The more you wait to do something, the more difficult it is to start doing it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I had to write another post for this blog. I had added many article idea in my todolist. But, I made many other things, and Ive always said (until now), Ill do this later. What changed my mind is the haunt of this simple remark about how to be productive in programming.
&lt;p&gt;I had to write another post for this blog. I had added many article idea in my todolist. But, I made many other things, and I&amp;rsquo;ve always said (until now), I&amp;rsquo;ll do this later. What changed my mind is the haunt of this simple remark about how to be productive in programming.
&amp;gt; Stop write &lt;code&gt;TODO&lt;/code&gt; in your code and make it now!&lt;br /&gt;
&amp;gt; Youll be surprised by the results.&lt;/p&gt;
&amp;gt; You&amp;rsquo;ll be surprised by the results.&lt;/p&gt;
&lt;p&gt;In short:
&amp;gt; &lt;strong&gt;Just do it!&lt;/strong&gt; ou &lt;strong&gt;Juste fait le&lt;/strong&gt; comme auraient dit les nuls.&lt;/p&gt;
&lt;p&gt;Finally Ill certainly write blog post more often for a short period of time.&lt;/p&gt;&lt;/p&gt;</content>
&lt;p&gt;Finally I&amp;rsquo;ll certainly write blog post more often for a ...&lt;/p&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-03-23:/Scratch/en/blog/2010-03-23-Encapsulate-git/</id>
@ -1106,7 +1106,7 @@ clientB: project adapted for client B&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git clone&lt;/code&gt; can only fetch the master branch.&lt;/p&gt;
&lt;p&gt;If you dont have much branches, you can simply use clone your project and then use the following command:&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t have much branches, you can simply use clone your project and then use the following command:&lt;/p&gt;
&lt;div&gt;
@ -1118,7 +1118,7 @@ clientB: project adapted for client B&lt;/p&gt;
&lt;p&gt;for example:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;code class="zsh"&gt;$ git clone git@github:yogsototh/example.git...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content>
&lt;pre&gt;&lt;code class="zsh"&gt;$ git clone git@github:yogsototh/examp...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-02-23:/Scratch/en/blog/2010-02-23-When-regexp-is-not-the-best-solution/</id>
@ -1164,7 +1164,7 @@ ext=File.extname(str)
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-02-18-split-a-file-by-keyword/"/>
<content type="html">&lt;p&gt;Strangely enough, I didnt find any built-in tool to split a file by keyword. I made one myself in &lt;code&gt;awk&lt;/code&gt;. I put it here mostly for myself. But it could also helps someone else.
<content type="html">&lt;p&gt;Strangely enough, I didn&amp;rsquo;t find any built-in tool to split a file by keyword. I made one myself in &lt;code&gt;awk&lt;/code&gt;. I put it here mostly for myself. But it could also helps someone else.
The following code split a file for each line containing the word &lt;code&gt;UTC&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;
@ -1195,7 +1195,7 @@ BEGIN{i=0;}
/UTC/ {
date=$1$2$3;
if ( date != olddate ) {
oldda...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content>
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-02-16:/Scratch/en/blog/2010-02-16-All-but-something-regexp--2-/</id>
@ -1207,7 +1207,7 @@ BEGIN{i=0;}
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-02-16-All-but-something-regexp--2-/"/>
<content type="html">&lt;p&gt;In my &lt;a href="previouspost"&gt;previous post&lt;/a&gt; I had given some trick to match all except something. On the same idea, the trick to match the smallest possible string. Say you want to match the string between a and b, for example, you want to match:&lt;/p&gt;
<content type="html">&lt;p&gt;In my &lt;a href="previouspost"&gt;previous post&lt;/a&gt; I had given some trick to match all except something. On the same idea, the trick to match the smallest possible string. Say you want to match the string between &amp;lsquo;a&amp;rsquo; and &amp;lsquo;b&amp;rsquo;, for example, you want to match:&lt;/p&gt;
&lt;pre class="twilight"&gt;
a.....&lt;span class="Constant"&gt;&lt;strong&gt;a......b&lt;/strong&gt;&lt;/span&gt;..b..a....&lt;span class="Constant"&gt;&lt;strong&gt;a....b&lt;/strong&gt;&lt;/span&gt;...
@ -1224,6 +1224,6 @@ a.....&lt;span class="Constant"&gt;&lt;strong&gt;a......b&lt;/strong&gt;&lt;/spa
&lt;pre class="twilight"&gt;
/a.*?b/
&lt;span class="Constant"&gt;&lt;strong&gt;a.....a......b&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;</content>
&lt;span class="Constant"&gt;&lt;strong&gt;...&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;</content>
</entry>
</feed>

View file

@ -66,7 +66,7 @@
<div class="intro">
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Un exemple progressif dutilisation dHaskell.
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Un exemple progressif d&rsquo;utilisation d&rsquo;Haskell.
Vous pourrez voir un ensemble de Mandelbrot étendu à la troisième dimension.
De plus le code sera très propre.
Les détails de rendu sont séparés dans un module externe.
@ -79,7 +79,7 @@ Vous pouvez vous inspirer de ce code utilisant le paradigme fonctional dans tous
<ul id="markdown-toc">
<li><a href="#introduction">Introduction</a></li>
<li><a href="#first-version">First version</a> <ul>
<li><a href="#lets-play-the-song-of-our-people">Lets play the song of our people</a></li>
<li><a href="#lets-play-the-song-of-our-people">Let&rsquo;s play the song of our people</a></li>
<li><a href="#let-us-start">Let us start</a></li>
</ul>
</li>
@ -164,7 +164,7 @@ We start cleaning the code at the 5<sup>th</sup> section.</p>
The first being mostly some boilerplate<sup id="fnref:011"><a href="#fn:011" rel="footnote">2</a></sup>.
And the second part more focused on OpenGL and content.</p>
<h3 id="lets-play-the-song-of-our-people">Lets play the song of our people</h3>
<h3 id="lets-play-the-song-of-our-people">Let&rsquo;s play the song of our people</h3>
<div class="codehighlight">
@ -400,7 +400,7 @@ It is a bit long before the first image appears, but if you resize the window, i
This property is a direct consequence of purity.
If you look closely, you see that <code>allPoints</code> is a pure list.
Therefore, calling <code>allPoints</code> will always render the same result and Haskell is clever enough to use this property.
While Haskell doesnt garbage collect <code>allPoints</code> the result is reused for free.
While Haskell doesn&rsquo;t garbage collect <code>allPoints</code> the result is reused for free.
We did not specified this value should be saved for later use.
It is saved for us.</p>
@ -638,7 +638,7 @@ instead of using a 3D projection of quaternions.
I am pretty sure this construction is not useful for numbers.
But it will be enough for us to create something that look nice.</p>
<p>This section is quite long, but dont be afraid,
<p>This section is quite long, but don&rsquo;t be afraid,
most of the code is some OpenGL boilerplate.
If you just want to skim this section,
here is a high level representation:</p>
@ -654,7 +654,7 @@ here is a high level representation:</p>
<p>Drawing: </p>
<ul>
<li>set doubleBuffer, handle depth, window size</li>
<li>set doubleBuffer, handle depth, window size&hellip;</li>
<li>Use state to apply some transformations</li>
</ul>
</li>
@ -910,7 +910,7 @@ Mainly there are two parts: apply some transformations, draw the object.</p>
<h3 id="the-3d-mandelbrot">The 3D Mandelbrot</h3>
<p>We have finished with the OpenGL section, lets talk about how we
<p>We have finished with the OpenGL section, let&rsquo;s talk about how we
generate the 3D points and colors.
First, we will set the number of details to 200 pixels in the three dimensions.</p>
@ -1024,7 +1024,7 @@ depthPoints = do
<p>If you prefer the first version, then just imagine how hard it will be to change the enumeration of the point from (x,y) to (x,z) for example.</p>
<p>Also, we didnt searched for negative values.
<p>Also, we didn&rsquo;t searched for negative values.
This modified Mandelbrot is no more symmetric relatively to the plan <code>y=0</code>.
But it is symmetric relatively to the plan <code>z=0</code>.
Then I mirror these values. </p>
@ -1249,7 +1249,7 @@ ymandel x y z = mandel (2*x/width) (2*y/height) (2*z/deep) 64
</div>
<p>This code is cleaner but many things doesnt feel right.
<p>This code is cleaner but many things doesn&rsquo;t feel right.
First, all the user interaction code is outside our main file.
I feel it is okay to hide the detail for the rendering.
But I would have preferred to control the user actions.</p>
@ -1283,12 +1283,12 @@ We will have two choices: </p>
</li>
<li>
<p>Our main problem come from user interaction.
If you ask “the Internet”,
If you ask &ldquo;the Internet&rdquo;,
about how to deal with user interaction with a functional paradigm,
the main answer is to use <em>functional reactive programming</em> (FRP).
I wont use FRP in this article.
Instead, Ill use a simpler while less effective way to deal with user interaction.
But The method Ill use will be as pure and functional as possible.</p>
I won&rsquo;t use FRP in this article.
Instead, I&rsquo;ll use a simpler while less effective way to deal with user interaction.
But The method I&rsquo;ll use will be as pure and functional as possible.</p>
</li>
</ol>
@ -1310,7 +1310,7 @@ First, what the main loop should look like if we could make our own:</p>
<li>a function taking two parameters: time and world state and render a new world without user interaction.</li>
</ul>
<p>Here is a real working code, Ive hidden most display functions.
<p>Here is a real working code, I&rsquo;ve hidden most display functions.
The YGL, is a kind of framework to display 3D functions.
But it can easily be extended to many kind of representation.</p>
@ -1530,7 +1530,7 @@ idleAction tnew world = world {
<p>Now the function which will generate points in 3D.
The first parameter (<code>res</code>) is the resolution of the vertex generation.
More precisely, <code>res</code> is distance between two points on one direction.
We need it to “close” our shape.</p>
We need it to &ldquo;close&rdquo; our shape.</p>
<p>The type <code>Function3D</code> is <code>Point -&gt; Point -&gt; Maybe Point</code>.
Because we consider partial functions
@ -1599,7 +1599,7 @@ ymandel x y z = fromIntegral (mandel x y z 64) / 64
</div>
<p>I wont explain how the magic occurs here.
<p>I won&rsquo;t explain how the magic occurs here.
If you are interested, just read the file <a href="code/05_Mandelbulb/YGL.hs"><code>YGL.hs</code></a>.
It is commented a lot.</p>
@ -1619,8 +1619,8 @@ It is commented a lot.</p>
<p>Our code architecture feel very clean.
All the meaningful code is in our main file and all display details are
externalized.
If you read the code of <code>YGL.hs</code>, youll see I didnt made everything perfect.
For example, I didnt finished the code of the lights.
If you read the code of <code>YGL.hs</code>, you&rsquo;ll see I didn&rsquo;t made everything perfect.
For example, I didn&rsquo;t finished the code of the lights.
But I believe it is a good first step and it will be easy to go further.
Unfortunately the program of the preceding session is extremely slow.
We compute the Mandelbulb for each frame now.</p>
@ -1904,20 +1904,20 @@ ymandel x y z = fromIntegral (mandel x y z 64) / 64
<p>As we can use imperative style in a functional language,
know you can use functional style in imperative languages.
This article exposed a way to organize some code in a functional way.
Id like to stress the usage of Haskell made it very simple to achieve this.</p>
I&rsquo;d like to stress the usage of Haskell made it very simple to achieve this.</p>
<p>Once you are used to pure functional style,
it is hard not to see all advantages it offers.</p>
<p>The code in the two last sections is completely pure and functional.
Furthermore I dont use <code>GLfloat</code>, <code>Color3</code> or any other OpenGL type.
Furthermore I don&rsquo;t use <code>GLfloat</code>, <code>Color3</code> or any other OpenGL type.
If I want to use another library in the future,
I would be able to keep all the pure code and simply update the YGL module.</p>
<p>The <code>YGL</code> module can be seen as a “wrapper” around 3D display and user interaction.
<p>The <code>YGL</code> module can be seen as a &ldquo;wrapper&rdquo; around 3D display and user interaction.
It is a clean separator between the imperative paradigm and functional paradigm.</p>
<p>If you want to go further, it shouldnt be hard to add parallelism.
<p>If you want to go further, it shouldn&rsquo;t be hard to add parallelism.
This should be easy mainly because most of the visible code is pure.
Such an optimization would have been harder by using directly the OpenGL library.</p>
@ -1927,7 +1927,7 @@ O(n².log(n)) to O(n³).</p>
<hr/><div class="footnotes">
<ol>
<li id="fn:001">
<p>Unfortunately, I couldnt make this program to work on my Mac. More precisely, I couldnt make the <a href="http://openil.sourceforge.net/">DevIL</a> library work on Mac to output the image. Yes I have done a <code>brew install libdevil</code>. But even a minimal program who simply write some <code>jpg</code> didnt worked. I tried both with <code>Haskell</code> and <code>C</code>.<a href="#fnref:001" rel="reference">&#8617;</a></p>
<p>Unfortunately, I couldn&rsquo;t make this program to work on my Mac. More precisely, I couldn&rsquo;t make the <a href="http://openil.sourceforge.net/">DevIL</a> library work on Mac to output the image. Yes I have done a <code>brew install libdevil</code>. But even a minimal program who simply write some <code>jpg</code> didn&rsquo;t worked. I tried both with <code>Haskell</code> and <code>C</code>.<a href="#fnref:001" rel="reference">&#8617;</a></p>
</li>
<li id="fn:011">
<p>Generally in Haskell you need to declare a lot of import lines.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -110,7 +110,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Copyright ©, Yann Esposito</a>
</div>
<div id="lastmod">
Modified: 09/13/2012
Modified: 09/20/2012
</div>
<div>
Entirely done with

View file

@ -40,7 +40,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with

View file

@ -159,7 +159,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with

View file

@ -109,7 +109,7 @@ github account: <a href="https://github.com/yogsototh">github.com/yogsototh<sup>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with

View file

@ -55,7 +55,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with

View file

@ -65,7 +65,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with

View file

@ -152,7 +152,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with

View file

@ -69,7 +69,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with

View file

@ -79,7 +79,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with

View file

@ -60,9 +60,9 @@ This framework is REST oriented and output can be either JSON (preferred), but a
This application is just done <em><a href="http://cache.ohinternet.com/images/thumb/f/fa/4tehlulz.jpg/618px-4tehlulz.jpg">for teh lulz<sup><sub>*</sub></sup></a></em>.
Not related to the Airfrance work. But still pleasant.<br />
<em>Javascript(Prototype.js, Scriptaculous), CSS, PHP/MySQL, Google Talk</em></li>
<li><span></span><code>metapost</code> package to draw Automata <em><span style="font-size:.5em">2003 &rarr; 2004</span></em><br />
<li><a href="https://github.com/yogsototh/metautomata"><code>metapost</code> package<sup><sub>*</sub></sup></a> to draw Automata <em><span style="font-size:.5em">2003 &rarr; 2004</span></em><br />
<em><code>metapost</code></em> </li>
<li>Mac OS X Screensavers <em><span style="font-size:.5em">2003 &rarr; 2004</span></em><br />
<li>Mac OS X Screensavers (<a href="https://github.com/yogsototh/YClock">YClock<sup><sub>*</sub></sup></a> <em>&amp;</em> YAquaBubbles) <em><span style="font-size:.5em">2003 &rarr; 2004</span></em><br />
<em>Objective-C,Quartz Composer,Cocoa</em></li>
</ul>
@ -93,7 +93,7 @@ Not related to the Airfrance work. But still pleasant.<br />
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with

View file

@ -1,107 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="/resume/include/main.css" />
<script type="text/javascript" src="http://espozito.com/Scratch/js/MathJax/MathJax.js"></script>
<title>Resume (Resume) by Yann Esposito</title>
</head>
<body>
<div id="content">
<div class="navigation">
<div class="navigationprev"><a href="/resume/40_Recherche.html"><span class="nicer">«</span>&nbsp;prev</a></div>
<div class="navigationnext"><a class="disable" href="#">next&nbsp;<span class="nicer">»</span></a></div>
<div class="home"><a href="/resume/index.html">&uarr;&nbsp;Home&nbsp;&uarr;</a></div>
</div>
<div id="afterhead">
<div class="corps">
<h1 id="projects">Projects</h1>
<p>Most of my latest programming activities are publicly available at <a href="http://github.com/yogsototh">github.com/yogsototh<sup><sub>*</sub></sup></a></p>
<h2 id="ypassword-2008-rarr">YPassword <em><span style="font-size:.5em">2008 &rarr;</span></em></h2>
<p>Mainly an iOS application:</p>
<ul>
<li><a href="http://ypassword.espozito.com">YPassword, <code>http://ypassword.espozito.com</code><sup><sub>*</sub></sup></a></li>
</ul>
<p>I&rsquo;ve done fully the website from scratch. Also there are some javascript implementation of YPassword tehcnic:</p>
<blockquote>
<ul>
<li>a Mac OS X dashboard widget, </li>
<li>a Cappuccino Web application,</li>
<li>a jQuery Web application,</li>
<li>a command line tool,</li>
<li>an Applescript helper</li>
</ul>
</blockquote>
<h2 id="rubyzome-2009-rarr">Rubyzome <em><span style="font-size:.5em">2009 &rarr;</span></em></h2>
<p>Ruby API oriented framework.
Done with Luc Juggery.
This framework is REST oriented and output can be either JSON (preferred), but also XML or HTML.</p>
<h2 id="anonymous-network-project-022006-rarr-062006">Anonymous Network Project <em><span style="font-size:.5em">02/2006 &rarr; 06/2006</span></em></h2>
<p>Made a protocol similar to <a href="http://www.torproject.org">TOR<sup><sub>*</sub></sup></a> for student.</p>
<h2 id="other-projects">Other projects</h2>
<ul>
<li>Web Application used for private team usage at AirFrance <em><span style="font-size:.5em">2008 &rarr;</span></em><br />
This application is just done <em><a href="http://cache.ohinternet.com/images/thumb/f/fa/4tehlulz.jpg/618px-4tehlulz.jpg">for teh lulz<sup><sub>*</sub></sup></a></em>.
Not related to the Airfrance work. But still pleasant.<br />
<em>Javascript(Prototype.js, Scriptaculous), CSS, PHP/MySQL, Google Talk</em></li>
<li><span></span><code>metapost</code> package to draw Automata <em><span style="font-size:.5em">2003 &rarr; 2004</span></em><br />
<em><code>metapost</code></em> </li>
<li>Mac OS X Screensavers <em><span style="font-size:.5em">2003 &rarr; 2004</span></em><br />
<em>Objective-C,Quartz Composer,Cocoa</em></li>
</ul>
<p>You could find even more information by looking at:</p>
<ul>
<li>My personnal website: <a href="http://yannesposito.com"><code>http://yannesposito.com</code><sup><sub>*</sub></sup></a></li>
<li>My github account: <a href="http://github.com/yogsototh"><code>http://github.com/yogsototh</code><sup><sub>*</sub></sup></a></li>
</ul>
</div>
</div>
<div class="navigation">
<div class="navigationprev"><a href="/resume/40_Recherche.html"><span class="nicer">«</span>&nbsp;prev</a></div>
<div class="navigationnext"><a class="disable" href="#">next&nbsp;<span class="nicer">»</span></a></div>
</div>
<div id="bottom">
<div>
<a href="http://yannesposito.com">Yann Esposito</a>
</div>
<div>
<a href="/resume/cv.pdf">Download PDF</a>
</div>
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
</div>
<div>
Done with
<a href="http://krambook.espozito.com">Krambook</a>
</div>
</div>
</div>
</body>
</html>

View file

@ -98,7 +98,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Under Creative Commons License</a>
</div>
<div id="lastmod">
Modified: 2012-09-19
Modified: 2012-09-20
</div>
<div>
Done with