<?xml version="1.0" encoding="iso-8859-1"?><!-- generator="b2evolution/1.10.3" -->
<rss version="0.92">
	<channel>
		<title>Olivier Langlois's blog</title>
					  <link>http://blog.olivierlanglois.net/index.php</link>
			  <description>Olivier Langlois's blog: I am sharing tips about programming as I find them</description>
			  <language>en-CA</language>
			  <docs>http://backend.userland.com/rss092</docs>
			  			  <item>
			    <title>Graph breadth-first traversal algorithm C++ implementation</title>
			    <description>&lt;p&gt;I have posted on my website a small C++ program that I have been asked to write during an interview with Facebook at Fall 2009. One of their interview was related to graph theory and the problem was to find the the shortest distance between to nodes in a graph. The best algorithm to use to solve this problem is the breadth-first traversal algorithm.&lt;/p&gt;
&lt;div style=&quot;margin-left:-12px;&quot;&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-7161506883656516&quot;;
google_ad_slot = &quot;4834751127&quot;;
google_ad_width = 468;
google_ad_height = 60;
//--&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;You can look at the source code here at:&lt;br /&gt;
&lt;a href=&quot;http://www.olivierlanglois.net/archive/graph_cpp.htm&quot;&gt;http://www.olivierlanglois.net/archive/graph_cpp.htm&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;and you can read more about the breadth-first traversal algorithm in &lt;a href=&quot;http://www.amazon.com/gp/product/020172684X?ie=UTF8&amp;amp;tag=olivielanglos-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=020172684X&quot;&gt;Robert Sedgewick excellent book on algorithms&lt;/a&gt;.&lt;/p&gt;
</description>
			    <link>http://blog.olivierlanglois.net/index.php/2010/08/24/graph_breadth_first_traversal_algorithm_</link>
			  </item>
			  			  <item>
			    <title>A new page in my career</title>
			    <description>&lt;p&gt;Today was my last day at StreamTheWorld. I spent the last 3 years there as the company C++ Tech Lead in charge of the company C++ streaming servers development. It has been a nice ride filled with challenges.These servers are used by over 1600 radio stations including AOL/CBS radios accessible through Winamp and Flash players.&lt;/p&gt;

&lt;p&gt;Among my various realizations. There are:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Scale and improve the performance and the reliability of the company audio/video streaming servers to the point where it can concurrently handles hundreds of thousands of live feeds every day in more than 25 countries, including during peak audience dayparts. The reliability and the quality of the server software have been proven to such industry leaders as CBS, Entercom, Multimedios, AOL and more. This represents 20x improvement over the original capacity.&lt;/li&gt;
  &lt;li&gt;Added more functionality to the server by growing the server code base from 25K lines in June 2007 to 200K lines in only 2 years while improving robustness and performance.&lt;/li&gt;
  &lt;li&gt;Designed and implemented a high performance targetted stream ad insertion system that serve end-user ads based geoip lookup. This system is now used by ESPN Radio on Internet.&lt;/li&gt;
  &lt;li&gt;Design and implement a protocol stack to support Adobe proprietary protocol RTMP clients&lt;/li&gt;
  &lt;li&gt;Add AAC support to the streaming server&lt;/li&gt;
  &lt;li&gt;Improve Microsoft MediaPlayer and Silverlight support.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;margin-left:-12px;&quot;&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-7161506883656516&quot;;
google_ad_slot = &quot;4834751127&quot;;
google_ad_width = 468;
google_ad_height = 60;
//--&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;I will start my new job Monday next week. Visit back my blog or my &lt;a href=&quot;http://ca.linkedin.com/in/olivierlanglois&quot;&gt;LinkedIn profile&lt;/a&gt; if you are curious to learn for which amazing new employer I will be working for.&lt;/p&gt;

</description>
			    <link>http://blog.olivierlanglois.net/index.php/2010/06/01/a_new_page_in_my_career_1</link>
			  </item>
			  			  <item>
			    <title>Large Scale C++ Software Design</title>
			    <description>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0201633620?ie=UTF8&amp;amp;tag=olivielanglos-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0201633620&quot;&gt;&lt;img src=&quot;http://blog.olivierlanglois.net/media/blogs/olivier_blog/Large_Scale_cpp_Software_Design.jpg&quot; alt=&quot;Large-Scale C++ Software Design, John Lakos, ISBN:0201633620&quot; title=&quot;&quot; width=&quot;100&quot; height=&quot;124&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;It is a very interesting book. Anyone having been involved in a large scale software development projects will recognize typical problems often seen in this type of projects while reading this book and by experience we have developed an intuition about how to deal with the complexity inherent to large scale projects. Mr Lakos book is the first, to my knowledge, that address this subject and it formalize extremely well the problems of large scale projects and propose a methodology and principles to apply to keep the development and maintainability of these projects manageable. It is a very refreshing C++ book and I recommend it to any C++ professionals not having read it yet.&lt;/p&gt;
&lt;!-- Adsense block #3 not displayed since it exceed the limit of 2 --&gt;
&lt;p&gt;The most interesting chapters in my opinion are chapter 5 and chapter 6. Chapter 5 presents refactoring methods to remove cyclical dependencies among components, reduce inter dependencies and how to layout components into software layers that will ease reusability and maintainability. Chapter 6 discuss about component insulation. Its difference with encapsulation, the benefits of component insulation and its cost and when it is wise to avoid insulation.&lt;/p&gt;

</description>
			    <link>http://blog.olivierlanglois.net/index.php/2010/05/24/large_scale_c_software_design</link>
			  </item>
			  			  <item>
			    <title>My new C++ source code to HTML converter</title>
			    <description>&lt;p&gt;While I was integrating a fix to a bug that has been reported to me by Daniel Quadros in my &lt;a href=&quot;http://www.olivierlanglois.net/archive/prime_cpp.htm&quot;&gt;primality testing C++ module&lt;/a&gt; and also adding gcc asm support to it. I used that opportunity to rework my C++ source code to HTML converter. The 2 things that I added to the converter are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;replace the usage of the &amp;lt;font&amp;gt; tags with &amp;lt;span&amp;gt; tags in combination of &lt;a href=&quot;http://blog.olivierlanglois.net/index.php/2010/03/25/cascading_style_sheet_the_definitive_gui&quot;&gt;CSS&lt;/a&gt; classes&lt;/li&gt;
  &lt;li&gt;size optimization of the converted document&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- Adsense block #4 not displayed since it exceed the limit of 2 --&gt;
&lt;p&gt;The size optimization came from the very simple observation that my converter was stateless and was not recognizing when multiple consecutive sections sharing the same colors were processed. I just added a small &lt;a href=&quot;http://blog.olivierlanglois.net/index.php/2007/07/11/practical_statecharts_in_c_c_quantum_pro&quot;&gt;FSM&lt;/a&gt; to my converter to keep track of the current state and the converter now close the current tag only if there is a transition to a new color. The most impressive result came from my &lt;a href=&quot;http://www.olivierlanglois.net/archive/dcel_cpp.htm&quot;&gt;DCEL C++ file&lt;/a&gt; with a 25% file size reduction!&lt;/p&gt;

&lt;p&gt;Also, I am just starting to appreciate to power of &lt;a href=&quot;http://blog.olivierlanglois.net/index.php/2010/03/25/cascading_style_sheet_the_definitive_gui&quot;&gt;CSS&lt;/a&gt;. I will now be able to change the code snippet colors across my whole website by just updating a small &lt;a href=&quot;http://blog.olivierlanglois.net/index.php/2010/03/25/cascading_style_sheet_the_definitive_gui&quot;&gt;CSS&lt;/a&gt; file. As a side bonus by having switched from the &amp;lt;font&amp;gt; tags to &amp;lt;span&amp;gt;, I can now use my C++ highlight feature in the &lt;a href=&quot;http://blog.olivierlanglois.net/index.php?cat=16&quot;&gt;code snippets contained in this blog&lt;/a&gt; as the blog engine was forbiding using &amp;lt;font&amp;gt; tags on posts but allows &amp;lt;span&amp;gt;.&lt;/p&gt;</description>
			    <link>http://blog.olivierlanglois.net/index.php/2010/05/24/my_new_c_source_code_to_html_converter</link>
			  </item>
			  			  <item>
			    <title>Cryptography Engineering</title>
			    <description>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0470474246?ie=UTF8&amp;amp;tag=olivielanglos-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0470474246&quot;&gt;&lt;img src=&quot;http://blog.olivierlanglois.net/media/blogs/olivier_blog/Cryptography_engineering.jpg&quot; alt=&quot;Cryptography engineering, Niels Ferguson, Bruce Schneier, Tadayoshi Kohno, ISBN: 0470474246&quot; title=&quot;&quot; width=&quot;100&quot; height=&quot;130&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;I just started to read this book which is an updated version of &lt;a href=&quot;http://www.amazon.com/gp/product/0471223573?ie=UTF8&amp;amp;tag=olivielanglos-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0471223573&quot;&gt;Practical Cryptography&lt;/a&gt;. This book is coauthored by Bruce Schneier. From what I have seen so far. It looks like a very nice introduction to cryptography that is very accessible. For more in depth coverage on cryptography, I would recommend looking at &lt;a href=&quot;http://blog.olivierlanglois.net/index.php/2007/06/26/applied_cryptography&quot;&gt;Applied cryptography&lt;/a&gt;. I will probably have more to say about the book when I am done reading it.&lt;/p&gt;
</description>
			    <link>http://blog.olivierlanglois.net/index.php/2010/04/05/cryptography_engineering</link>
			  </item>
			  	</channel>
</rss>
