<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2294829865263631080</id><updated>2012-01-10T07:29:02.470-08:00</updated><category term='matplotlib'/><category term='dimensionality reduction'/><category term='mind'/><category term='greedy'/><category term='Pycon Python Conference'/><category term='slides'/><category term='digipy'/><category term='ICML'/><category term='watermarking'/><category term='pyinstaller'/><category term='pycon6'/><category term='bilski'/><category term='Research Machine Learning Information Management Back-propagation Contrastive Divergence'/><category term='latex'/><category term='asus'/><category term='strategy'/><category term='Tax credits'/><category term='software transition'/><category term='tomcat'/><category term='Quebec'/><category term='conference'/><category term='Engineer'/><category term='ica'/><category term='outsourcing'/><category term='timesheet'/><category term='mlboost open source'/><category term='web monitoring'/><category term='confoo'/><category term='agile'/><category term='target marketing'/><category term='python'/><category term='outdated decision maker'/><category term='sales'/><category term='patching'/><category term='IP'/><category term='Cost Function Quebec'/><category term='Leaky assumptions leaky abstraction Gradient Descent Machine Learning'/><category term='machine learnings'/><category term='Adaptation'/><category term='entreprenariat'/><category term='canada'/><category term='startupcamp 6'/><category term='multivariate'/><category term='CICP'/><category term='freeze'/><category term='startups'/><category term='real-user analytics'/><category term='leaky abstration'/><category term='business model'/><category term='web analytics'/><category term='reading'/><category term='government programs'/><category term='visualization'/><category term='unittests'/><category term='software patent'/><category term='neural networks'/><category term='buy US'/><category term='protectionism'/><category term='class function'/><category term='BI; salon bi'/><category term='Cambridge studies'/><category term='startup'/><category term='Montreal Python Demo Machine Learning'/><category term='data-mining'/><category term='sample'/><category term='pdf'/><category term='beamer'/><category term='health care'/><category term='startups Gradient Learning'/><category term='Scientist'/><category term='appengine'/><category term='VC founding'/><category term='software'/><category term='netbook'/><category term='québec'/><category term='optimization'/><category term='search'/><category term='LLE'/><category term='startupfest'/><category term='local minima'/><category term='waterfall'/><category term='founding'/><category term='redmine'/><category term='Gradient descent'/><category term='ubuntu'/><category term='machine learning'/><category term='failure'/><category term='jython'/><category term='pca'/><category term='bureaucracy'/><category term='gmail'/><category term='management'/><category term='knowledge workers'/><category term='google'/><category term='pdfrw'/><title type='text'>Fraka6 Blog - No Free Lunch</title><subtitle type='html'>Some thoughts of a Machine Learning Practitioner on Software Development, Management, Team Building, Startups, Python, Agile Development, Data visualization... that will distract you from your end goals by making you less efficient but are critical to manage in order to succeed. 
Don&amp;#39;t forget that long time adaptation to inefficient approaches can become your enemy. Let&amp;#39;s try to empower others by sharing knowledge &amp;amp; personal experiences.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-2385995333028851496</id><published>2012-01-02T22:11:00.000-08:00</published><updated>2012-01-03T16:18:57.481-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='québec'/><category scheme='http://www.blogger.com/atom/ns#' term='entreprenariat'/><title type='text'>Strategie Québecoise de l'entreprenariat: what's in it for startups</title><content type='html'>&lt;div&gt;I have finally took some time to look at the details of the announcement of the November 15 2012. &lt;/div&gt;&lt;div&gt;&lt;a href="http://www.mdeie.gouv.qc.ca/fileadmin/contenu/publications/administratives/strategies/strategie_entrepreneuriat.pdf" target="_blank"&gt;http://www.mdeie.gouv.qc.ca/&lt;wbr&gt;fileadmin/contenu/&lt;wbr&gt;publications/administratives/&lt;wbr&gt;strategies/strategie_&lt;wbr&gt;entrepreneuriat.pdf&lt;/a&gt; (page 14 &amp;amp;43)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you look properly, its isn't very exiting...lot of noise for not much. &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;access to line of credit of max 30K without interest nor warranty&lt;/li&gt;&lt;li&gt;ability to delay payments of "Fond Local d'investisment"&lt;/li&gt;&lt;li&gt;Investment with Anges-Quebec which means they might take a little more risk&lt;/li&gt;&lt;/ul&gt;Lot of the new money is invested in the entrepreneur support programs and to simplify access to money to help entrepreneur buying existing corporations (the boomer generation are starting to sell but few can buy).   &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Conclusion, lot of new money in the system but at the end, not much for entrepreneurs. Most of it is to sustain the existing system so don't wast to much time of this and focus and launching technology and sales. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-2385995333028851496?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/2385995333028851496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2012/01/strategie-quebecoise-de-lentreprenariat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2385995333028851496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2385995333028851496'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2012/01/strategie-quebecoise-de-lentreprenariat.html' title='Strategie Québecoise de l&apos;entreprenariat: what&apos;s in it for startups'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-3799360260333736545</id><published>2012-01-02T21:21:00.000-08:00</published><updated>2012-01-10T07:29:02.487-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startups'/><category scheme='http://www.blogger.com/atom/ns#' term='CICP'/><title type='text'>Why startups shouldn't wast time with Canadian Innovation Commercialization Program (CICP)</title><content type='html'>Canadian Innovation Commercialization Program (&lt;a href="https://buyandsell.gc.ca/initiatives-and-programs/canadian-innovation-commercialization-program-cicp/"&gt;CICP&lt;/a&gt;) is an attractive program because as it is mentioned in its name, its goal is to help companies start commercialisation of their innovations. The idea is interesting, if your innovation can be beneficial to the Canadian government, they might take the risk to be the first client and will pay for it. If the government is a client, your commercialisation will most likely  be way easier by eliminating the egg and chicken problem of getting the first real big client and real revenues faster. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Why this program?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The government is realizing that most product fail at the commercialisation phase. SR&amp;amp;ED is great support to develop innovations but their is little to support commercialisation (i.e: precarn program was closed). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;But seriously why this program has been put in place?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;There is a rumour that it is related to the &lt;span style="font-size: medium; background-color: rgb(255, 255, 255); font-family: sans-serif; line-height: 1.2em; text-align: -webkit-auto; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Bombardier_Aerospace_and_Embraer_S.A._government_subsidy_controversy"&gt;Bombardier Aerospace and Embraer government subsidy controversy&lt;/a&gt;. &lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255); font-family: sans-serif; line-height: 1.2em; text-align: -webkit-auto; "&gt;Canadian was illegally subsidizing bombardier according to the WTO anti-subsidy policy.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="background-color: rgb(255, 255, 255); font-family: sans-serif; line-height: 1.2em; text-align: -webkit-auto; "&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span&gt;&lt;span style="line-height: 19px;"&gt;CICP is a legal way to subsidize companies&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 19px; "&gt;. If you look at the pre-qualified innovations of call 001, you will find bombardier and some other mature companies who might need less commercialisation help then other ones as startups as an example:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span&gt;&lt;span style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;a href="https://buyandsell.gc.ca/initiatives-and-programs/canadian-innovation-commercialization-program-cicp/pre-qualified-innovations"&gt;https://buyandsell.gc.ca/initiatives-and-programs/canadian-innovation-commercialization-program-cicp/pre-qualified-innovations&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;b&gt;Why startups shouldn't was their time with this program?&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;According to the selected companies, its seems that Startups shouldn't wast energy on this program and even less if they are from Québec and or have nothing to do with aerospace and military related projects and are startups. If they do so they will most likely be rejected by something like  "The bidder’s company does not have the appropriate management team required to move the proposed innovation into commercial markets" which will bring you back the the chicken and egg problem.  &lt;span style="text-align: left; "&gt;Freemium&lt;/span&gt; is definitely a way better alternative.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-3799360260333736545?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/3799360260333736545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2012/01/why-startups-shouldnt-wast-time-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3799360260333736545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3799360260333736545'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2012/01/why-startups-shouldnt-wast-time-with.html' title='Why startups shouldn&apos;t wast time with Canadian Innovation Commercialization Program (CICP)'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-2477459503706725535</id><published>2011-11-13T20:38:00.000-08:00</published><updated>2011-11-13T21:49:19.262-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='BI; salon bi'/><title type='text'>MTL Salon BI quick summary</title><content type='html'>&lt;span class="Apple-style-span"  &gt;I went to MTL salon BI on November 8th. &lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Here is the my headlines:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(85, 85, 85); line-height: 20px; "&gt;&lt;span class="Apple-style-span"  &gt;Elie Elia: 45% of people are overloaded with data; need actionable information&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  &gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="line-height: 20px; "&gt;Freddy Midi: BI = old decision support systems; reports shouldn't be the end of the process; it is a flow; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="line-height: 20px; "&gt;The future of BI looks like &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.netvibes.com/" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; color: rgb(1, 102, 182); outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; line-height: 20px; background-color: rgb(238, 238, 238); "&gt;www.netvibes.com&lt;/a&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(85, 85, 85); line-height: 20px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); line-height: normal; "&gt;&lt;span class="Apple-style-span"  &gt;Before graphic was the end but now it is the begining (drill down). &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(85, 85, 85); line-height: 20px; "&gt;&lt;span class="Apple-style-span"  &gt;Philippe Nieuwbourg: Since big players have done acquisitions their is no more innovations and price have simply increases; it is a good timing for startups. Visualization is weak...we want minority report interface and it is coming &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"   &gt;&lt;span class="Apple-style-span" style="line-height: 20px; "&gt;Online Analytic Maturity Model: 6 levels by Stephane Hamel : &lt;/span&gt;&lt;/span&gt;&lt;a href="http://immeria.net/oamm/"&gt;http://immeria.net/oamm/&lt;/a&gt;; BI and Webanalytics are merging; diff, web analytics is real-time and accept higher error margin; future is agile &amp;amp; predictive &lt;/li&gt;&lt;li&gt;For now BI mostly look at the past but the future of BI is finally moving slowly to predictive analysis   &lt;/li&gt;&lt;li&gt;BI clients priorities: Simplicity, cost, quality &lt;/li&gt;&lt;li&gt;Best BI solutions: QLikView; PowerPivot, SPSS (IBM), Tableau Soft &lt;/li&gt;&lt;li&gt;People want to bypass IT for BI answers&lt;/li&gt;&lt;li&gt;Michelle Blanc: disruptive truth about internet marketing&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(100, 100, 100); font-family: verdana, helvetica, sans-serif; font-size: 12px; font-weight: bold; line-height: 18px; "&gt;Wayne Knaggs (&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;Adastra)&lt;/span&gt;: cloud BI: we are moving from SaaS to IaaS and PaaS (Soft-&amp;gt;Infrastructure-&amp;gt; plateform)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  &gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 18px;"&gt;Semantic web: linkedata.org; triple store (RDF)  are becoming standards &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-2477459503706725535?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/2477459503706725535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2011/11/mtl-salon-bi-quick-summary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2477459503706725535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2477459503706725535'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2011/11/mtl-salon-bi-quick-summary.html' title='MTL Salon BI quick summary'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-6624313041368980161</id><published>2011-10-15T20:10:00.000-07:00</published><updated>2011-10-15T21:04:26.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='strategy'/><category scheme='http://www.blogger.com/atom/ns#' term='software patent'/><category scheme='http://www.blogger.com/atom/ns#' term='IP'/><category scheme='http://www.blogger.com/atom/ns#' term='startups'/><title type='text'>IP strategy for tech startups</title><content type='html'>Most VC &amp;amp; angels want IP in order to consider investing in your startups.&lt;div&gt;Why: seems a security illusion. If they were really thinking about it, they will ask for industrial secret most of the time. Let me explain:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, look at some facts:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;95% of patents are useless (lawyer expensive fees &amp;amp; precious time)&lt;/li&gt;&lt;li&gt;Patents are most of the time weapons of litigation which result in licences exchanges agreements (why google bought Motorola mobility)&lt;/li&gt;&lt;li&gt;50% of patents are invalidated in litigation (thanks &lt;a href="http://www.ceim.org/pages/nouvelles/siliconvalleybusinessschoolseminars4et6octobre.aspx?lang=FR-CA"&gt;David&lt;/a&gt;)...so you need a portfolio of patents if you really want to play in that yard &lt;/li&gt;&lt;li&gt;It takes on average 6 years after patent deposit before it is validated....which means your competitors can copy you easily for many years because your invention will be public ;)..&lt;/li&gt;&lt;li&gt;You need deep pockets to enforce your patent rights, only big player can play that game&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So, if you aren't thinking of been acquired by a very big player or founded by a very deep pocket VC, you are wasting your money, time and are helping your competitors by giving them all your secret recipes and even better, you are paying for it. &lt;b&gt;Isn't that the most inefficient thing you can do?&lt;/b&gt;  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Btw, you should know that filing is making a deal with government so don't expect efficiency. Last, lawyers are relevant in ambiguity which might explain the patent process.  &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-6624313041368980161?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/6624313041368980161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2011/10/ip-strategy-for-tech-startups.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6624313041368980161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6624313041368980161'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2011/10/ip-strategy-for-tech-startups.html' title='IP strategy for tech startups'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-7757892093083127681</id><published>2011-10-06T05:46:00.000-07:00</published><updated>2011-10-08T11:48:36.455-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='real-user analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='confoo'/><title type='text'>Speaking at confoo 2012: Empowering IT with Real Users Analytics</title><content type='html'>I have been selected to speak at the next confoo web conference about &lt;a href="http://confoo%E0%A5%A4ca/en/2012/session/empowering-it-with-real-users-analytic"&gt;"Empowering IT with Real Users Analytic"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.confoo.ca/en/schedule" lang="en"&gt;&lt;img style="border: 0;" src="http://confoo.ca/images/propaganda/2012/en/speaking.jpg" alt="I am speaking at ConFoo Web Techno Conference. February 29th to March 2nd, 2012. Montreal" height="150" width="180" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Webapps monitoring landscape is changing. As pointed out by Garnter, IT needs simplified monitoring and Google Analytics can now measure page load times.&lt;br /&gt;As more and more businesses rely on them, techniques such as real time user monitoring, incident detection and root cause analysis have become critical.  While been the Holy Grail to users, webapps are a nightmare for engineers as ensuring quality of service becomes more difficult.&lt;br /&gt;More and more companies are starting to realize that they are losing significant revenue, growth and productivity due to down time, high latency and scaling issues with their web applications.  Quality of Service guarantees with built-in penalties are becoming the norm, bringing a downside into the equation.&lt;br /&gt;We will present these new problems in detail, followed by a short history of techniques used to measure and estimate the quality of web-based applications. We will review the most popular monitoring technologies, pointing out their pros and cons.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-7757892093083127681?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/7757892093083127681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2011/10/speaking-at-confoo-2012-empowering-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7757892093083127681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7757892093083127681'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2011/10/speaking-at-confoo-2012-empowering-it.html' title='Speaking at confoo 2012: Empowering IT with Real Users Analytics'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-1710084689800491222</id><published>2011-08-02T08:20:00.000-07:00</published><updated>2011-08-02T08:40:02.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startupfest'/><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><title type='text'>Startupfest best presentations July 2011</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial; " &gt;&lt;div&gt;Here are the 5 best presentations that I saw at startupfestival:&lt;/div&gt;&lt;/span&gt;&lt;ol&gt;&lt;li style="font-family: arial; "&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="color: rgb(90, 90, 90); font-family: Arial, Verdana, sans-serif; line-height: 21px; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; "&gt;&lt;a href="http://www.softtechvc.com/softtech-vc-bios-jeff-clavier-charles-hudson-ashley-cravens.html" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(194, 1, 37); text-decoration: none; "&gt;Jeff Clavier - Founder and Managing Partner - SoftTech VC&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(90, 90, 90); font-family: Arial, Verdana, sans-serif; line-height: 21px; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; "&gt; &lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt;&lt;a href="http://www.slideshare.net/startupfest/startups-by-numbers"&gt;Starting by the numbers&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt;&lt;span class="Apple-style-span"&gt;: (The 3 asses rules slides 14: Team/Product/Market) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: arial; "&gt;&lt;span class="Apple-style-span" &gt;&lt;a href="http://lanyrd.com/profile/sarahprevette/"&gt;Your first startup&lt;/a&gt;: &lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: Arial, 'Helvetica Neue', sans-serif; line-height: 19px; "&gt;slide 5 &amp;amp; 21: most startups fail because the founders give up&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: arial; "&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt;&lt;span class="Apple-style-span" style="color: rgb(89, 199, 0); line-height: 15px; text-transform: uppercase; "&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://www.slideshare.net/startupfest/super-angels-super-stars-and-the-supersized-startup-myth" style="font-family: arial; "&gt;SUPER ANGELS, SUPER STARS, AND THE SUPER-SIZED STARTUP MYTH&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt;&lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: Arial, 'Helvetica Neue', sans-serif; line-height: 19px; "&gt;Chris Shipley Cofounder &amp;amp; CEO GuideWired Group&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: arial; "&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: Arial, 'Helvetica Neue', sans-serif; line-height: 19px; "&gt;&lt;a href="http://www.slideshare.net/startupfest/succeeding-with-freemium"&gt;Succeeding-with-freemium&lt;/a&gt; (how to succeed in converting free subscribers to paying customers) &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(90, 90, 90); font-family: Arial, Verdana, sans-serif; line-height: 21px; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; "&gt;&lt;a href="http://www.linkedin.com/in/seanellis" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(194, 1, 37); text-decoration: none; "&gt;Sean Ellis - Founder &amp;amp; CEO - CatchFree&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: arial; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; " &gt;&lt;a href="http://lanyrd.com/profile/davemcclure/slides/" style="font-family: arial; "&gt;Why not do a startup&lt;/a&gt;&lt;span class="Apple-style-span"&gt; (basically, do you have the profile): &lt;/span&gt;&lt;strong style="font-family: arial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; "&gt;&lt;a href="http://www.linkedin.com/in/davemcclure" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(194, 1, 37); text-decoration: none; "&gt;Dave McClure - Investor - 500startups.com&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: arial; font-size: small; "&gt;&lt;a href="http://www.startupfestival.com/en/speakers/"&gt;http://www.startupfestival.com/en/speakers/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-1710084689800491222?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/1710084689800491222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2011/08/startupfest-best-presentations-july.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1710084689800491222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1710084689800491222'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2011/08/startupfest-best-presentations-july.html' title='Startupfest best presentations July 2011'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-1164613236897099864</id><published>2011-06-25T20:51:00.000-07:00</published><updated>2011-06-25T21:16:46.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unittests'/><category scheme='http://www.blogger.com/atom/ns#' term='appengine'/><title type='text'>appengine unittesting trick</title><content type='html'>I was looking for the ideal way to run all my unittests on my appengine projects.   &lt;div&gt;Let's define what is ideal:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;http://project.appspot.com/test to run all unittests&lt;/li&gt;&lt;li&gt;create unittest directly in file it is testing/no need to create unittest file for each file&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Solution:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;install &lt;a href="http://code.google.com/p/gaeunit/"&gt;gaeunit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;create or move unittest classes directly in file that it is testing&lt;/li&gt;&lt;li&gt;create /test/project_unittest.py&lt;/li&gt;&lt;li&gt;import all file containing unittest class in project_unittest.py&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;What's great with python is that unittest.main() run all unittests that are in the scope which means you simply have to import them and no need to create multiple test files if unittests classes are directly integrated in each files. &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-1164613236897099864?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/1164613236897099864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2011/06/appengine-unittesting-trick.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1164613236897099864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1164613236897099864'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2011/06/appengine-unittesting-trick.html' title='appengine unittesting trick'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-9621024245911895</id><published>2011-05-14T19:31:00.000-07:00</published><updated>2011-05-15T19:45:30.074-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='government programs'/><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><category scheme='http://www.blogger.com/atom/ns#' term='founding'/><category scheme='http://www.blogger.com/atom/ns#' term='bureaucracy'/><title type='text'>Governments programs are destructive for new entrepreneurs</title><content type='html'>&lt;div&gt;I reached my limits of bureaucracy. Enough is enough. My conclusion is that governments programs are destructive to new entrepreneurs. Let's face it, it is simply &lt;b&gt;incompatible&lt;/b&gt;, entrepreneurs are looking for &lt;b&gt;efficiency&lt;/b&gt; and government can only &lt;b&gt;produce bureaucracy &lt;/b&gt;and&lt;b&gt; inefficient process &lt;/b&gt;that are killing wealth creation. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many entrepreneurs are &lt;b&gt;&lt;a href="http://copie-conforme.cc/cc/ceim/petit-dejeuner-201105/index.html"&gt;trapped by government programs&lt;/a&gt;&lt;/b&gt; where they expect help and finally end up &lt;b&gt;losing precious time&lt;/b&gt;, getting &lt;b&gt;ridiculous support &lt;/b&gt;for massive paperwork if not excluded by incoherent rules. Entrepreneurs are here to create wealth not &lt;b&gt;justifying bureaucracy existence. &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am tire of  hearing &lt;b&gt;bullshit &lt;/b&gt;like:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;we are here to help entrepreneurs &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Stop saying it and do it.  &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;but you have to be profitable, have clients, make more then 200K, been incorporated since, have a product, have N employees, have to been able to pay your new employee to get the support, not this, not that, this, but only in 3 months, sorry in 6 months, it needs to go through the committee of the committee of the board and can't tell you when they might decide but it will required another meeting to decide, you have to come to our office, we need this form and this proof and letter of this and details of this....like if entrepreneur time is free. &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;If we were respecting your criteria, we wouldn't need your support&lt;/b&gt;. Again we aren't looking for advices but only financial supports and efficient process, we know what we have to do. The current system seems to subsidising establish corporations, corporation without financial constraints and most important, for a second time,  &lt;b&gt;justifying bureaucracy existence. &lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt; Here is in a nutshell what entrepreneurs need:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Real founding support, light and fast decision process...not advices nor endless decisions and paperwork process of months and please stop pretending you can help if you know you can't. &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Worst thing is that it is sending a so bad signal to the new entrepreneurs, you should be an bureaucrat official, you will make more money, you will have a pension plan, less stress, no performance evaluation from people you are suppose to help...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Don't worry entrepreneurs can't go that way but can kill this system slowly. Without entrepreneurs, this system cannot sustain.  &lt;b&gt;I hope the new majority Conservative Party of Canada will make drastic cuts in this bureaucracy &lt;/b&gt;(their 10 billions cuts hasn't been unveiled)&lt;b&gt;. &lt;/b&gt;Officials aren't untouchable, &lt;b&gt;don't shit in your plate rules applies to everyone&lt;/b&gt;. The effect might take longer but it will come and new entrepreneurs will help the momentum but what is bad is that founds might been cuts but no untouchable government jobs. Stop wasting time on their salaries and invest in entrepreneurs directly. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Government programs are making more damaged then good for new entrepreneurs by making them loose too much time and energy and encourage indirectly outsourcing which overall is extremely bad for the economy. Hopefully Canada has natural resources....but it isn't an excuse to tolerate destructive economy programs. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "&gt;&lt;div&gt;&lt;a href="http://www.mdeie.gouv.qc.ca/fileadmin/contenu/documents_soutien/apropos/strategies/entrepreneuriat/renouvellement_entrepreneuriat.pdf" target="_blank" style="color: rgb(42, 93, 176); "&gt;http://www.mdeie.gouv.qc.ca/&lt;wbr&gt;fileadmin/contenu/documents_&lt;wbr&gt;soutien/apropos/strategies/&lt;wbr&gt;entrepreneuriat/&lt;wbr&gt;renouvellement_&lt;wbr&gt;entrepreneuriat.pdf&lt;/a&gt; (see page 24)&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.radio-canada.ca/nouvelles/Economie/2011/05/04/006-indice-entrepreneurial-quebec2011.shtml" target="_blank" style="color: rgb(42, 93, 176); "&gt;http://www.radio-canada.ca/&lt;wbr&gt;nouvelles/Economie/2011/05/04/&lt;wbr&gt;006-indice-entrepreneurial-&lt;wbr&gt;quebec2011.shtml&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-9621024245911895?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/9621024245911895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2011/05/how-governments-programs-are.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/9621024245911895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/9621024245911895'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2011/05/how-governments-programs-are.html' title='Governments programs are destructive for new entrepreneurs'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-2960317864599350667</id><published>2011-04-07T20:53:00.000-07:00</published><updated>2011-04-08T12:45:09.754-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cambridge studies'/><category scheme='http://www.blogger.com/atom/ns#' term='reading'/><category scheme='http://www.blogger.com/atom/ns#' term='mind'/><category scheme='http://www.blogger.com/atom/ns#' term='appengine'/><title type='text'>Letters order isn't important for our mind: a simple appengine service to play with this idea</title><content type='html'>I got several time an email about cool visual illusions and enjoyed a lot the one on the fact that our mind doesn't care about letter order, the only important thing is that the first and last letter be in the right place (refer as a Cambridge study&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; "&gt;&lt;b&gt;&lt;span style="font-weight: bold; "&gt;&lt;strong&gt;&lt;b&gt;&lt;span&gt;&lt;span style="font-family: Arial; "&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;. You might have already seen this:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; "&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span&gt;&lt;span style="font-family: Arial; color: black; font-weight: bold; "&gt;&lt;strong&gt;&lt;b&gt;&lt;span&gt;&lt;span style="font-family: Arial; "&gt;Olny srmat poelpe can raed tihs.  I cdnuolt blveiee taht I cluod aulaclty  uesdnatnrd waht I was rdanieg. The phaonmneal pweor of the hmuan mnid, aoccdrnig  to a rscheearch at Cmabrigde Uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoatnt tihng is taht the frist and lsat ltteer be in the rghit pclae. The rset can be a taotl mses and you can sitll raed it wouthit a porbelm.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;strong&gt;&lt;b&gt;&lt;span&gt;&lt;span style="font-family: Arial; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&lt;strong&gt;&lt;b&gt;&lt;span&gt;&lt;span style="font-family: Arial; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&lt;strong&gt;&lt;b&gt;&lt;span&gt;&lt;span style="font-family: Arial; color: black; "&gt;Tihs is bcuseae the huamn mnid deos not raed ervey lteter by istlef, but the wrod as a wlohe. Amzanig huh? yaeh and I awlyas tghuhot slpeling was ipmorantt! if you can raed tihs psas it on!!&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-weight: 800;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span&gt;&lt;span style="font-family: Arial; color: black; "&gt;I decided to create a service to play with the idea on google appengine.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span&gt;&lt;span style="font-family: Arial; color: black; "&gt;You can try it now with your own text:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; "&gt;&lt;span class="Apple-style-span"&gt;&lt;strong&gt;&lt;b&gt;&lt;span&gt;&lt;span style="font-family: Arial; color: black; "&gt;&lt;a href="http://nonhumanreadable.appspot.com/"&gt;http://nonhumanreadable.appspot.com/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; "&gt;&lt;span class="Apple-style-span"&gt;&lt;strong&gt;&lt;b&gt;&lt;span&gt;&lt;span style="font-family: Arial; color: black; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-2960317864599350667?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/2960317864599350667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2011/04/letters-order-isnt-import-for-our-mind.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2960317864599350667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2960317864599350667'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2011/04/letters-order-isnt-import-for-our-mind.html' title='Letters order isn&apos;t important for our mind: a simple appengine service to play with this idea'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-3958702040520858657</id><published>2011-01-10T21:37:00.000-08:00</published><updated>2011-01-20T23:42:43.409-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pyinstaller'/><category scheme='http://www.blogger.com/atom/ns#' term='freeze'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>How to create standalone python apps?</title><content type='html'>&lt;div&gt;You might have to run your applications in your customer infrastructure but you might not want to give your recipes (python source code) so here are the alternatives depending on your OS:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;windows = &lt;a href="http://www.py2exe.org/"&gt;py2exe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;mac = &lt;a href="http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html"&gt;py2app&lt;/a&gt;&lt;/li&gt;&lt;li&gt;linux = &lt;a href="http://www.pyinstaller.org/"&gt;pyinstaller&lt;/a&gt; (&lt;a href="http://svn.python.org/projects/python/trunk/Tools/freeze/"&gt;freeze&lt;/a&gt; doesn't work-&gt;compile errors*)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;On linux, pyinstaller works quite well but you have to generate it on the same distribution. &lt;/div&gt;&lt;div&gt;Here are the steps:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 12px; color: rgb(72, 72, 72); "&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.pyinstaller.org/"&gt;download &lt;/a&gt;latest version &lt;/li&gt;&lt;li&gt;python Configure.py&lt;/li&gt;&lt;li&gt;python Makespec.py /path/to/yourscript.py&lt;/li&gt;&lt;li&gt;python Build.py /path/to/yourscript.spec&lt;/li&gt;&lt;li&gt;start app: yourscript/dist/yourscript/yourscript(binary executable)&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;(*) Freeze instructions:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 12px; color: rgb(72, 72, 72); "&gt;&lt;ol&gt;&lt;li&gt;svn checkout &lt;a class="external" href="http://svn.python.org/projects/python/trunk/Tools/freeze/" style="color: rgb(42, 86, 133); text-decoration: none; padding-left: 12px; background-image: url(http://rm.qmining.com/images/external.png); background-position: 0% 60%; background-repeat: no-repeat no-repeat; "&gt;http://svn.python.org/projects/python/trunk/Tools/freeze/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;python freeze/freeze.py yourscript.py&lt;/li&gt;&lt;li&gt;make&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-3958702040520858657?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/3958702040520858657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2011/01/how-to-create-standalone-python-apps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3958702040520858657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3958702040520858657'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2011/01/how-to-create-standalone-python-apps.html' title='How to create standalone python apps?'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-8876291414622887656</id><published>2010-10-13T07:51:00.000-07:00</published><updated>2010-10-13T12:19:11.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multivariate'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>simple multivariate classifier example using python &amp; numpy</title><content type='html'>I was wondering how long it could take to write a multivariate classifier in python. &lt;div&gt;With python and numpy it isn't long. We simply need to be able to compute the covariance matrix, the determinant and to inverse a matrix (covariance matrix). Even if the matrix is singular, which mean it can't inverse it, you can compute the pseudo-inverse (Moore-Penrose) easily (i.e.: numpy.linalg.pinv).  &lt;/div&gt;&lt;div&gt;As expected, assuming too much about the data lead to poor classification. &lt;/div&gt;&lt;div&gt;You can find a simple python program of 75 lines &lt;a href="http://bitbucket.org/fraka6/digipy/src/tip/digipy/datasets/digits/multivariate.py"&gt;here&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-8876291414622887656?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/8876291414622887656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/10/simple-multivariate-classifier-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8876291414622887656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8876291414622887656'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/10/simple-multivariate-classifier-example.html' title='simple multivariate classifier example using python &amp; numpy'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-6298737123915207179</id><published>2010-10-10T00:00:00.000-07:00</published><updated>2010-10-13T12:17:40.917-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LLE'/><category scheme='http://www.blogger.com/atom/ns#' term='dimensionality reduction'/><category scheme='http://www.blogger.com/atom/ns#' term='ica'/><category scheme='http://www.blogger.com/atom/ns#' term='pca'/><title type='text'>Dimensionality reduction; a simple PCA example using python</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-qQ8PeHP82w/TLYFjjtMSSI/AAAAAAAAAIg/Kr0BixdtpPQ/s1600/lle.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://3.bp.blogspot.com/_-qQ8PeHP82w/TLYFjjtMSSI/AAAAAAAAAIg/Kr0BixdtpPQ/s400/lle.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5527611701082212642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-qQ8PeHP82w/TLYFiksOc3I/AAAAAAAAAIY/uA6z8VbmuBk/s1600/pca.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://1.bp.blogspot.com/_-qQ8PeHP82w/TLYFiksOc3I/AAAAAAAAAIY/uA6z8VbmuBk/s400/pca.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5527611684166726514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-qQ8PeHP82w/TLFn7TlEk-I/AAAAAAAAAII/9yKZrdDEBVA/s1600/ica.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Dimensionality reduction is a powerful approach to reduce inputs size, reduce training time and visualize data.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;As an example, you can use &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Principal_component_analysis"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PCA&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(Principal Component Analysis) or &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Independent_component_analysis"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ICA&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 30px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;independent component analysis) or LLE (Locally Linear Embedding).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;to see class grouping. You can try it on your data easily with python in a couple of lines.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;import mdp&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;pca = mdp.pca(ds.data)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;pylab.title("PCA")&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;pylab.plot(pca[:,0], pca[:,1], '.')&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The figure presents the PCA dimensionally reduction applied on a digit dataset. You can find the source code &lt;/span&gt;&lt;/span&gt;&lt;a href="http://bitbucket.org/fraka6/digipy/src/tip/digipy/datasets/digits/pca.py"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; to see you to do a PCA, ICA or LLE using python. Unfortunately, ICA doesn't work on our dataset because it doesn't converge. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-6298737123915207179?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/6298737123915207179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/10/dimensionality-reduction-simple-icapca.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6298737123915207179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6298737123915207179'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/10/dimensionality-reduction-simple-icapca.html' title='Dimensionality reduction; a simple PCA example using python'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-qQ8PeHP82w/TLYFjjtMSSI/AAAAAAAAAIg/Kr0BixdtpPQ/s72-c/lle.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-1006787111189977377</id><published>2010-10-09T23:27:00.000-07:00</published><updated>2011-01-10T21:57:08.881-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='watermarking'/><category scheme='http://www.blogger.com/atom/ns#' term='pdfrw'/><category scheme='http://www.blogger.com/atom/ns#' term='appengine'/><title type='text'>PDF watermarking service using pdfrw on google appengine</title><content type='html'>&lt;div style="text-align: left;"&gt;If you are looking to watermark a pdf, you can use this simple appengine service:&lt;/div&gt;&lt;div&gt;&lt;a href="http://pdfwatermarker.appspot.com/"&gt;http://pdfwatermarker.appspot.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This service use &lt;a href="http://code.google.com/p/pdfrw/"&gt;pdfrw&lt;/a&gt; (a PDF file manipulation library written by Paul Gauvin) and reportlab. pdfrw is much faster then pypdf for watermarking.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/_-qQ8PeHP82w/TLFkOJZNHJI/AAAAAAAAAIA/1q_SdfbwKY4/s400/pdfwatermarker_demo.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5526308411962891410" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 318px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-1006787111189977377?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/1006787111189977377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/10/pdf-waternarking-service-using-pdfrw-on.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1006787111189977377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1006787111189977377'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/10/pdf-waternarking-service-using-pdfrw-on.html' title='PDF watermarking service using pdfrw on google appengine'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-qQ8PeHP82w/TLFkOJZNHJI/AAAAAAAAAIA/1q_SdfbwKY4/s72-c/pdfwatermarker_demo.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-3343508025989108783</id><published>2010-09-21T19:40:00.000-07:00</published><updated>2010-09-21T21:18:38.537-07:00</updated><title type='text'>Summary of machine learning libs available in python</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 21px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Here is a summary of all python related machine learning libraries in python (inspired by &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 21px; "&gt;&lt;a href="http://www.pymvpa.org/index.html#similar-or-related-projects"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Similar or Related Projects&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; of PyMVPA, lisa mailing list and personal notes).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 21px; "&gt;&lt;ul class="simple"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;a href="http://pybrain.org/"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;pybrain&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; line-height: 18px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PyBrain is short for &lt;/span&gt;&lt;/span&gt;&lt;span class="important" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Py&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;thon-&lt;/span&gt;&lt;/span&gt;&lt;span class="important" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ased &lt;/span&gt;&lt;/span&gt;&lt;span class="important" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;R&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;einforcement Learning, &lt;/span&gt;&lt;/span&gt;&lt;span class="important" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;rtificial &lt;/span&gt;&lt;/span&gt;&lt;span class="important" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ntelligence and &lt;/span&gt;&lt;/span&gt;&lt;span class="important" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;eural Network Library. In fact, we came up with the name first and later reverse-engineered this quite descriptive "Backronym". see &lt;/span&gt;&lt;/span&gt;&lt;a href="http://pybrain.org/pages/features%20lstm"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;features&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;. key feature : &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://pybrain.org/pages/features"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); -webkit-text-decorations-in-effect: none; line-height: 18px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ecurrent networks (RNN), including Long Short-Term Memory (LSTM) architectures&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;a href="https://mlpy.fbk.eu/"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;mlpy&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; "&gt;&lt;strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Machine Learning PYthon&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="searchword0" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 153); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;mlpy&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;) is a high-performance Python library for predictive modeling. &lt;/span&gt;&lt;/span&gt;&lt;span class="searchword0" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 153); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;mlpy&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; makes extensive use of &lt;/span&gt;&lt;/span&gt;&lt;a class="ext-link" href="http://scipy.org/" style="text-decoration: none; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: rgb(187, 187, 187); "&gt;&lt;span class="icon" style="background-image: url(https://mlpy.fbk.eu/chrome/common/extlink.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-left: 12px; background-position: 50% 50%; background-repeat: no-repeat no-repeat; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;NumPy&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; to provide fast N-dimensional array manipulation and easy integration of C code. The GNU Scientific Library (&lt;/span&gt;&lt;/span&gt;&lt;a class="ext-link" href="http://www.gnu.org/software/gsl/" style="text-decoration: none; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: rgb(187, 187, 187); "&gt;&lt;span class="icon" style="background-image: url(https://mlpy.fbk.eu/chrome/common/extlink.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-left: 12px; background-position: 50% 50%; background-repeat: no-repeat no-repeat; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;GSL&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;) is also required. It provides high level procedures that support, with few lines of code, the design of rich Data Analysis Protocols (DAPs) for &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;preprocessing&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;clustering&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;predictive classification&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;regression&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; and &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;feature selection&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;. Methods are available for feature weighting and ranking, data resampling, error evaluation and experiment landscaping. Key feature: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;feature selection&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;a href="http://scikit-learn.sourceforge.net/"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;scikit.learn&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; line-height: 20px; "&gt;&lt;tt class="docutils literal" style="background-color: rgb(236, 240, 243); padding-top: 0px; padding-right: 1px; padding-bottom: 0px; padding-left: 1px; "&gt;&lt;span class="pre"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;scikits.learn&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; is a Python module integrating classic machine learning algorithms in the tightly-knit world of scientific Python packages (&lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://www.scipy.org/" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;numpy&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://www.scipy.org/" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;scipy&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://matplotlib.sourceforge.net/" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;matplotlib&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Key distinct features: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;lasso, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;nearest neighbor, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;isomap, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;various metrics, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;mean shift, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;cross validation, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LDA, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; HMMs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.willowgarage.com/documentation/index.html"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;opencv &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;machine learning&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;): &lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm#ch_nbayes"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Normal Bayes Classifier&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm#ch_knn"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;K Nearest Neighbors&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm#ch_svm"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;SVM&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm#ch_dtree"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Decision Trees&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm#ch_boosting"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Boosting&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm#ch_randomforest"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Random Trees&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm#ch_em"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Expectation-Maximization&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm#ch_ann"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Neural Networks&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm#ch_ann"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://www.fml.tuebingen.mpg.de/raetsch/projects/shogun" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Shogun&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; font-weight: bold; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A Large Scale Machine Learning Toolbox &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Comprehensive machine learning toolbox with bindings to various programming languages. &lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PyMVPA can optionally use implementations of Support Vector Machines from Shogun. L&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span class="Apple-style-span" style="font-style: normal; line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;arge scale kernel learning (mostly svms). this wraps other &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span class="Apple-style-span" style="font-style: normal; line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libraries such as libsvm (well-established) and others that get state of the art &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span class="Apple-style-span" style="font-style: normal; line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;performance or are good for extremely large datasets, etc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;span class="Apple-style-span" style="font-style: normal; line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; "&gt;&lt;span class="Apple-style-span" style="line-height: 21px; "&gt;&lt;a href="http://www.pymvpa.org/index.html"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PyMVPA&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; line-height: 21px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;a href="http://www.pymvpa.org/glossary.html#term-mvpa"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Multivariate Pattern Analysis in Python&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;): &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 21px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PyMVPA is a &lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://www.python.org/" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Python&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; module intended to ease pattern classification analyses of large datasets. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 21px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; In the neuroimaging contexts such analysis techniques are also known as&lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://www.pymvpa.org/glossary.html#term-decoding" style="text-decoration: underline; "&gt;&lt;em class="xref"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;decoding&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; or &lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://www.pymvpa.org/glossary.html#term-mvpa" style="text-decoration: underline; "&gt;&lt;em class="xref"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;MVPA&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; analysis.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 21px; "&gt;&lt;ul class="simple"&gt;&lt;li&gt;&lt;a href="http://deeplearning.net/software/pylearn/"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;pylearn&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (build on top of &lt;/span&gt;&lt;/span&gt;&lt;a href="http://deeplearning.net/software/theano/"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;theano&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;), under V2 construction. New version of &lt;/span&gt;&lt;/span&gt;&lt;a href="http://plearn.berlios.de/"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;plean&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (c++). &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;a href="http://deeplearning.net/software/theano/"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;Theano&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;: (&lt;/span&gt;&lt;/span&gt;&lt;a href="http://deeplearning.net/tutorial/rbm.html"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;deep learning&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;) Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://bitbucket.org/jeremy_barnes/jml"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;jml&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Jeremy's Machine Learning library (C++), include a python interface: Basic classifiers (perceptrons, decision trees, etc) plus ensemble methods (boosting, bagging). Very highly optimized to work with thousands of features and millions of examples. GPGPU support under development. Code derived from this library is extensively used in a commercial computational linguistics application, so it has gone through its paces.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://afni.nimh.nih.gov/pub/dist/doc/program_help/3dsvm.html" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;3dsvm&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: &lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://afni.nimh.nih.gov/" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;AFNI&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; plugin to apply support vector machine classifiers to fMRI data.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://elefant.developer.nicta.com.au/" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Elefant&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: Efficient Learning, Large-scale Inference, and Optimization Toolkit. Multi-purpose open source library for machine learning.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://mdp-toolkit.sourceforge.net/" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;MDP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Python data processing framework. &lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://mdp-toolkit.sourceforge.net/" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;MDP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; provides various algorithms. &lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PyMVPA makes use of MDP’s PCA and ICA implementations.&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  interesting features: ica, LLE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://www.csbmb.princeton.edu/mvpa/" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;MVPA Toolbox&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: Matlab-based toolbox to facilitate multi-voxel pattern analysis of fMRI neuroimaging data.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://neuroimaging.scipy.org/" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;NiPy&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: Project with growing functionality to analyze brain imaging data. &lt;/span&gt;&lt;/span&gt;&lt;a class="reference external" href="http://neuroimaging.scipy.org/" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;NiPy&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; is heavily connected to SciPy and lots of functionality developed within NiPy becomes part of SciPy.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://www-sop.inria.fr/odyssee/software/OpenMEEG" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;OpenMEEG&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: Software package for low-frequency bio-electromagnetism including the EEG/MEG forward and inverse problems. OpenMEEG includes Python bindings.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://magix.fri.uni-lj.si/orange" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Orange&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: Powerful general-purpose data mining software. Orange also has Python bindings.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://code.google.com/p/pyfsio" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PyMGH/PyFSIO&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: Python IO library to for FreeSurfer’s &lt;/span&gt;&lt;/span&gt;&lt;cite style="letter-spacing: 0.01em; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.mgh&lt;/span&gt;&lt;/span&gt;&lt;/cite&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; data format.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://pyml.sourceforge.net/" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PyML&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: PyML is an interactive object oriented framework for machine learning written in Python. PyML focuses on SVMs and other kernel methods.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://niftilib.sourceforge.net/pynifti" style="text-decoration: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PyNIfTI&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: Read and write NIfTI images from within Python. &lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PyMVPA uses PyNIfTI to access MRI datasets.&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; line-height: normal; border-collapse: collapse; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;a href="http://luispedro.org/software/milk"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;milk&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;k-means, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;svm's with arbitrary python types for kernel arguments. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 25px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Pythonic interface to libSVM. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 25px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Stepwise Discriminant Analysis for feature selection. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 25px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;K-means clustering. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 25px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;odels can be pickled and unpickled.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: normal; border-collapse: collapse; "&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; "&gt;&lt;span class="Apple-style-span" style="line-height: 21px; "&gt;&lt;a href="http://bitbucket.org/fraka6/mlboost"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;mlboost&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Machine Learning Boost Library (python; includes &lt;/span&gt;&lt;/span&gt;&lt;a href="http://bitbucket.org/fraka6/flayers"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;flayers&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; wrapper); minimal version of sourceforge &lt;/span&gt;&lt;/span&gt;&lt;a href="http://sourceforge.net/projects/mlboost"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;mlboost&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; project. Specialized on features extraction and visualization. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;to watch:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;a href="http://torch5.sourceforge.net/"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://torch5.sourceforge.net/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: normal; "&gt;&lt;code style="background-color: rgb(249, 247, 243); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Torch5&lt;/span&gt;&lt;/code&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; is the official successor of &lt;/span&gt;&lt;a href="http://www.torch.ch/" style="text-decoration: none; "&gt;&lt;code style="background-color: rgb(249, 247, 243); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Torch3&lt;/span&gt;&lt;/code&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, and is now developed at &lt;/span&gt;&lt;a href="http://ml.nec-labs.com/" style="text-decoration: none; "&gt;&lt;code style="background-color: rgb(249, 247, 243); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;NEC Laboratories America&lt;/span&gt;&lt;/code&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; and&lt;/span&gt;&lt;code style="background-color: rgb(249, 247, 243); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Google Labs&lt;/span&gt;&lt;/code&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;. No python wrapper yet. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: normal; "&gt;&lt;a href="http://deeplearning.net/software/pylearn/v2_planning/index.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;pylearn v2&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;; new version of pylearn from LISA lab of udm. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-3343508025989108783?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/3343508025989108783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/09/summary-of-machine-learning-libs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3343508025989108783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3343508025989108783'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/09/summary-of-machine-learning-libs.html' title='Summary of machine learning libs available in python'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-4909191173408889602</id><published>2010-08-25T23:54:00.000-07:00</published><updated>2010-08-26T00:07:20.015-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='timesheet'/><category scheme='http://www.blogger.com/atom/ns#' term='redmine'/><title type='text'>How to add activities to redmine timesheet plugin?</title><content type='html'>I am using &lt;a href="http://www.redmine.org/"&gt;redmine&lt;/a&gt;, a great project management web application, and added littestream &lt;a href="https://projects.littlestreamsoftware.com/projects/redmine-timesheet"&gt;timesheet plugin&lt;/a&gt;.&lt;br /&gt;If you want to add timesheet activities, you can't do it from the UI. You need to add it directly into mysql db like that:&lt;br /&gt;&lt;blockquote&gt;insert into enumerations values (&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;10&lt;/span&gt;,'Experimental Development', &lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;3&lt;/span&gt;, 0, "TimeEntryActivity", 1, NULL, NULL)&lt;br /&gt;insert into enumerations values (&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;11&lt;/span&gt;,'Scientific Research', &lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;4&lt;/span&gt;, 0, "TimeEntryActivity", 1, NULL, NULL)&lt;/blockquote&gt;Don't forget to set property the &lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;id&lt;/span&gt; and the &lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;position&lt;/span&gt;.&lt;div&gt;select * from enumerations;&lt;/div&gt;&lt;div&gt;| id | name | position | is_default | type| active | project_id | parent_id |&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-4909191173408889602?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/4909191173408889602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/08/how-to-add-activities-to-redmine.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4909191173408889602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4909191173408889602'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/08/how-to-add-activities-to-redmine.html' title='How to add activities to redmine timesheet plugin?'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-7903964342770585711</id><published>2010-07-21T14:31:00.000-07:00</published><updated>2010-07-21T14:39:24.800-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patching'/><category scheme='http://www.blogger.com/atom/ns#' term='class function'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>patching class function in python</title><content type='html'>&lt;pre wrap=""&gt;Today we had to patch a class function in production. Monkey patching can become tricky if reference are kept at several place like pointer in C and C++.&lt;br /&gt;Here is a simple example on how to make sure all references will use the new definition.&lt;br /&gt;&lt;blockquote&gt;class Foo:&lt;br /&gt;  def f(self):&lt;br /&gt;      print "default f"&lt;br /&gt;&lt;br /&gt;def newf(self):&lt;br /&gt;  print "newf"&lt;br /&gt;&lt;br /&gt;Foo.f.im_func.func_code = newf.func_code&lt;/blockquote&gt;This is another reason why interpreter language like python are so powerful.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-7903964342770585711?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/7903964342770585711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/07/patching-class-function-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7903964342770585711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7903964342770585711'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/07/patching-class-function-in-python.html' title='patching class function in python'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-4265022753655632796</id><published>2010-06-01T10:41:00.000-07:00</published><updated>2010-07-06T18:56:52.022-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software patent'/><category scheme='http://www.blogger.com/atom/ns#' term='bilski'/><title type='text'>Before filing Software Patents, wait for Bilski case resolution</title><content type='html'>&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The big upcoming US case regarding software patents is &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;a href="http://en.wikipedia.org/wiki/In_re_Bilski"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;In re &lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;a href="http://en.wikipedia.org/wiki/In_re_Bilski"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Bilski&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;. The Supreme Court has been sitting on it for months now.  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;"&lt;/span&gt;&lt;a href="http://en.swpat.org/wiki/Bilski_overview"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Bilski&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;" an ongoing set of patent cases that will change the patentability of software in the USA. The Bilski patent itself is a business method patent, not a software patent.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="border-collapse: separate; line-height: 19px;font-family:'Lucida Grande',Verdana,sans-serif;"&gt;&lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The 2008 ruling of the &lt;/span&gt;&lt;a href="http://www.blogger.com/wiki/Court_of_Appeals_for_the_Federal_Circuit" title="Court of Appeals for the Federal Circuit" class="mw-redirect" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Court of Appeals for the Federal Circuit&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; (CAFC) was broad enough to reject Bilski's patent &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;and&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; a certain category of software patents.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The &lt;/span&gt;&lt;a href="http://www.blogger.com/wiki/US_Supreme_Court" title="US Supreme Court" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Supreme Court&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; agreed to review the CAFC's ruling (as &lt;/span&gt;&lt;a href="http://www.blogger.com/wiki/Bilski_v._Kappos_%282009,_USA%29" title="Bilski v. Kappos (2009, USA)" class="mw-redirect" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Bilski v. Kappos&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;), and the judges raised the issue of software during the &lt;a href="http://news.swpat.org/2009/11/bilski-hearing-transcript/"&gt;hearing&lt;/a&gt;&lt;/span&gt;.&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The Supreme Court's ruling could greatly change the patentability of software patents, business method patents, and the middle ground of e-commerce patents.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;If you are looking for US patent news, I recommend &lt;/span&gt;&lt;a href="http://www.blogger.com/www.patentlyo.com"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;patentlyo&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse;font-family:arial,sans-serif;font-size:13;"&gt;&lt;span style=";font-family:sans-serif;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse;font-family:arial,sans-serif;font-size:13;"&gt;&lt;span style=";font-family:sans-serif;font-size:85%;"&gt;&lt;div&gt;&lt;br /&gt;Update:&lt;br /&gt;&lt;a href="http://www.ogilvyrenault.com/en/resourceCentre_10445.htm"&gt;Supreme Court Says No to Exclusivity of Machine-or-Transformation Test, &lt;em&gt;In re Bilski&lt;/em&gt;&lt;/a&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; font-family: Verdana, Arial, sans-serif; font-size: 11px; line-height: 18px; color: rgb(17, 51, 85); "&gt;&lt;a href="http://www.ogilvyrenault.com/fr/centreDeResources_10456.htm"&gt;Canadian Businesses Beware: Blessing of Business Patents in US Will Affect You&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-4265022753655632796?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/4265022753655632796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/06/before-filling-software-patents-wait.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4265022753655632796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4265022753655632796'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/06/before-filling-software-patents-wait.html' title='Before filing Software Patents, wait for Bilski case resolution'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-4862013477278807192</id><published>2010-05-18T14:19:00.000-07:00</published><updated>2010-05-27T19:05:30.532-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='slides'/><category scheme='http://www.blogger.com/atom/ns#' term='beamer'/><title type='text'>Easy Presentation Slides with Latex-Beamer</title><content type='html'>If you are looking for an elegant way to create &lt;a href="http://www.slideshare.net/fpieraut/mlpythonmtlapril2009"&gt;slides&lt;/a&gt; like the ones I have presented at &lt;a href="http://montrealpython.org/"&gt;montreal-python&lt;/a&gt;, I recommend &lt;a href="http://bitbucket.org/rivanvx/beamer/"&gt;latex-beamer&lt;/a&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-qQ8PeHP82w/S_8k0LxsQAI/AAAAAAAAAHk/23y3XtaoAmo/s1600/latex-beamer.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_-qQ8PeHP82w/S_8k0LxsQAI/AAAAAAAAAHk/23y3XtaoAmo/s400/latex-beamer.png" alt="" id="BLOGGER_PHOTO_ID_5476136150838820866" border="0" /&gt;&lt;/a&gt;Here is a example in 6 simple steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;mkdir trial; cd trial&lt;br /&gt;&lt;/li&gt;&lt;li&gt;sudo aptitude install latex-&lt;span class="il"&gt;beamer&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;wget http://mlboost.svn.sourceforge.net/viewvc/mlboost/doc/ml-python-mtl-april2009.tgz&lt;br /&gt;&lt;/li&gt;&lt;li&gt;tar -zxvf ml-python-mtl-april2009.tgz &lt;/li&gt;&lt;li&gt;pdflatex ml-python-mtl-april2009.tex&lt;/li&gt;&lt;li&gt;xpdf ml-python-mtl-april2009.pdf&lt;/li&gt;&lt;/ol&gt;IF you don't remember latex syntax, you can use:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://latex.computersci.org/Reference/Reference"&gt;latex reference manual&lt;/a&gt; or&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.latexlab.org/" target="_blank"&gt;http://docs.latexlab.org/&lt;/a&gt; or&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.texmacs.org/"&gt;texmac &lt;/a&gt;or&lt;/li&gt;&lt;li&gt;&lt;a href="http://miktex.org/"&gt;Miktex&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;When you start using latex, you never want to go back. Content and visualization should be well isolated/separated.&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/doc/ml-python-mtl-feb2009.tex?view=log" target="_blank"&gt;&lt;code&gt;&lt;/code&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-4862013477278807192?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/4862013477278807192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/05/easy-presentation-slides-with-latex.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4862013477278807192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4862013477278807192'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/05/easy-presentation-slides-with-latex.html' title='Easy Presentation Slides with Latex-Beamer'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-qQ8PeHP82w/S_8k0LxsQAI/AAAAAAAAAHk/23y3XtaoAmo/s72-c/latex-beamer.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-8232252675387408879</id><published>2010-05-15T09:58:00.000-07:00</published><updated>2010-10-10T14:26:54.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Quebec'/><category scheme='http://www.blogger.com/atom/ns#' term='Engineer'/><title type='text'>Future of Quebec Software Engineer</title><content type='html'>Currently, new Software Engineer have an easy live. With a shortage of resources, you don't have to be good to find a job. When employers are desperately looking for people, they take what they can and don't complain too much about it (in this context, they feel lucky). As an example, &lt;a href="http://www.etsmtl.ca/zone2/programmes/1er_cycle/baccalaureat/7065.html"&gt;ETS&lt;/a&gt; Software engineer students can choose between 17 intern offers. Will the situation change in the future?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;For a long time, Canadian dollar was low which makes Quebec and Canadian Software engineer pretty cheap, unfortunately it is changing and it is already not true anymore. They are starting to be expensive. Many software jobs in Québec are related to US company having an office in Canada and many others rely on US clients.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Easy tax credit for experimental development and scientific research will be harder to get since Canadian governmental is back to deficit and Quebec is facing aging population and reduced number of tax payers. For more info, check this &lt;a href="http://fraka6.blogspot.com/2010/05/tax-credits-rs-new-reality-good-news.html"&gt;post&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Outsourcing, a cheaper and more accessible alternative. As a example, when more Indians will be able to speak comprehensible English, they will become a real danger. Many companies start using cheap remote resource or use outsourcing service like &lt;a href="http://www.rentacoder.com/"&gt;rentacoder&lt;/a&gt; to lower down their cost.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Due to globalization and near US market, many companies will prefer perfectly fluent English average engineer as oppose to great engineer with lack of English skills.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Due to globalization and near US market, many companies will promote perfectly fluent English average engineer as oppose to great engineer with lack of English skills.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Unlike Doctors with powerful Professional College, software engineer don't have reserved acts that reduce competition and provide job security, they don't have the luxury to not be competitive.&lt;br /&gt;&lt;br /&gt;What should future Francophone engineer need to success and be more competitive in this changing landscape?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They need to be fully bilingual (btw, many company don't consider Francophone university because they know that most of their software engineers aren't bilingual)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They need management skills. Ability to manage technical people is rare and critical to the success of projects, company are more aware of it and are desperately looking for it.  Increase success rate of project is critical.  &lt;/li&gt;&lt;li&gt;They need leader and decision maker, not only a work force.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They need writing and communication skills. Technical people who neglect this will pay the price in the long run. Without those skills, it is hard to evolve in the upper level of a company.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They need conflict, negotiation skills. Engineers forget that their job is on average 20% technical and 80% HR related. Resolving human related problems is important part of software engineer work.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;But the most important is that companies need decision makers who see the big picture, not only throw-able/easy replaceable work force.&lt;br /&gt;Outsourcing is out the door and software engineer have to better understand the idea of comparative advantages because their cheaper advantage is getting away.&lt;br /&gt;Too expensive non perfectly bilingual engineers with lack of management and communication skills jobs will face increase outsourcing pressure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-8232252675387408879?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/8232252675387408879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/05/futur-of-quebec-software-engineer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8232252675387408879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8232252675387408879'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/05/futur-of-quebec-software-engineer.html' title='Future of Quebec Software Engineer'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-4039147919442871683</id><published>2010-05-14T20:48:00.000-07:00</published><updated>2010-07-10T21:52:40.919-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sales'/><category scheme='http://www.blogger.com/atom/ns#' term='business model'/><title type='text'>Disruptive business model: Lew Cirne, serial entrepreneur on the future of Enterprise Software etc.</title><content type='html'>I really like New Relic founder (Lew Cirne) point of view about the evolution of business model with the web. Basically, massive sale overhead is not require anymore which lead to reduce drastically software cost and free resource to do better software. Most of the time, software satisfaction is low because monetary resource are sucked by so many overhead layers and isn't use to make better software. You should read his &lt;a href="http://lewsblog.newrelic.com/"&gt;posts&lt;/a&gt;:&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://onproductmanagement.net/2010/05/10/disruptive-business-model-lew-cirne-serial-entrepreneur-on-the-future-of-enterprise-software/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+OnProductManagement+%28On+Product+Management%29&amp;amp;utm_content=Google+International"&gt;Disruptive business model: Lew Cirne, serial entrepreneur on the future of Enterprise Software&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lewsblog.newrelic.com/2010/04/12/what-you-are-paying-for-at-8000-per-cpu/" rel="bookmark" title="Permanent Link to What you are paying for at $8,000 per CPU"&gt;What you are paying for at $8,000 per CPU&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lewsblog.newrelic.com/2010/05/11/disrupting-the-enterprise-software-business-model-a-conversation-with-alan-armstrong/" rel="bookmark" title="Permanent Link to Disrupting the Enterprise Software Business Model: A Conversation with Alan Armstrong"&gt;Disrupting the Enterprise Software Business Model: A Conversation with Alan Armstrong&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lewsblog.newrelic.com/2010/04/09/the-400-an-hour-band-aid/" rel="bookmark" title="Permanent Link to The $400-An-Hour Band-Aid"&gt;The $400-An-Hour Band-Aid&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lewsblog.newrelic.com/2010/04/04/my-name-is-lew/" rel="bookmark" title="Permanent Link to My Name is Lew, and I am a Recovering Enterprise Software Developer"&gt;My Name is Lew, and I am a Recovering Enterprise Software Developer&lt;/a&gt;&lt;a href="http://lewsblog.newrelic.com/2010/07/08/old-dogs/" rel="bookmark" title="Permanent Link to Old Dogs, New Tricks and SaaS"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lewsblog.newrelic.com/2010/07/08/old-dogs/" rel="bookmark" title="Permanent Link to Old Dogs, New Tricks and SaaS"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Old Dogs, New  Tricks and SaaS&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-4039147919442871683?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/4039147919442871683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/05/disruptive-business-model-lew-cirne.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4039147919442871683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4039147919442871683'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/05/disruptive-business-model-lew-cirne.html' title='Disruptive business model: Lew Cirne, serial entrepreneur on the future of Enterprise Software etc.'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-8938740527776393282</id><published>2010-05-14T17:53:00.000-07:00</published><updated>2010-05-17T21:07:31.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software transition'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Software transition: recipe for a disaster</title><content type='html'>Everyone knows that &lt;span style="font-weight: bold;"&gt;software&lt;/span&gt; has a &lt;span style="font-weight: bold;"&gt;life cycle and die&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt; at some point. If your software is part of your day to day operations, &lt;span style="font-weight: bold;"&gt;you can't fail in managing its transition&lt;/span&gt;. If you want to reduce the probability of success of the transition, here are some rules to follow:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Don't plan transition&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Don't communicate transition plan if you have one&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Promote non-skilled people to decision positions&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Kill initiative&lt;/span&gt;/ignore message (ex: kill messenger and think the problem is gone)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Avoid long term planning (ex: use argument like business moving too fast)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Don't put a technical team lead&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Don't do follow-up of team requests&lt;/li&gt;&lt;li&gt;Don't involve HR to smooth transition&lt;/li&gt;&lt;li&gt;Don't hire pro-actively&lt;/li&gt;&lt;li&gt;Don't prepare a B plan&lt;/li&gt;&lt;li&gt;Don't involve and/or update your team on the transition plan&lt;/li&gt;&lt;li&gt;Don't give overall project responsibility to anyone&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Stay in a reactive mode&lt;/li&gt;&lt;li&gt;Don't communicate info in daily meeting&lt;/li&gt;&lt;li&gt;Don't ensure you have a good pulse of your team&lt;/li&gt;&lt;li&gt;Give too much power to people who don't understand software process&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;Like Greenspan, dream the magic hand will fix everything magically (people might not compensate for bad decisions eternally)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Expect people to stay&lt;/li&gt;&lt;li&gt;Don't make difference between maintenance &amp;amp; development cost&lt;/li&gt;&lt;li&gt;Let non technical people take technical decisions&lt;/li&gt;&lt;li&gt;Ignore problems&lt;/li&gt;&lt;li&gt;Don't recognize people work in crisis&lt;/li&gt;&lt;li&gt;Allow managers to not be able to evaluate technical people&lt;/li&gt;&lt;li&gt;Consider Indian outsourcing can solve everything&lt;/li&gt;&lt;li&gt;Think people are easily replaceable &lt;/li&gt;&lt;li&gt;Don't talk about carrier evolution to your crew&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;If you are lucky, you will have to replace your team one by one but they could resign all in a short time and put your business in a major crisis situation. Don't forget, there is no free lunch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-8938740527776393282?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/8938740527776393282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/05/software-transition-recipe-for-disaster.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8938740527776393282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8938740527776393282'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/05/software-transition-recipe-for-disaster.html' title='Software transition: recipe for a disaster'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-250688747136457010</id><published>2010-05-10T19:59:00.000-07:00</published><updated>2010-07-30T17:56:55.222-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='canada'/><category scheme='http://www.blogger.com/atom/ns#' term='Tax credits'/><title type='text'>Tax credits (RS&amp;DE): the new reality = good news for startups</title><content type='html'>Last month, I went to the CEIM (centre d'entreprises et d'innovation de Montréal) to see a presentation on the new reality of tax credit program in Canada starting in 2009. RS&amp;amp;DE tax credit for scientific research &amp;amp; experimental development has changed drastically. Initiate in 1986, the program claims reached 1.5 billion in 2000 and ~4 billions in 2008 at the federal level. Due to the increase of claims (20K claims 2008), non standard claims and unwritten need to reduce tax credits, an important change happened. Many companies can't send anymore non standard endless novel to lost government officials. Corporation need to send 1400 words to explain the scientific advancements, the problems/technical incertitudes/risk and the technology and scientific content. With 15% more staffs and 1400 words limit per claim, way more people can validate your claims. Knowing we are back in deficit, there will be pressure to reduce accepted claims. It will be way harder for cheaters to try to loose the reader because endless novels is no more possible (romans fleuve). Btw, CEIM offers interesting &lt;a href="http://www.ceim.org/pages/nosServices/demarrage/ti-multimedia-industriel.aspx?lang=FR-CA"&gt;services&lt;/a&gt;.&lt;div&gt;It will be an harder sell for lawyers firms specialized in R&amp;amp;D tax credit paperwork who can't use their government bodies as easily as before to ensure their clients get their tax credits. This is a good news for startups and bad news for the ones who are making things up because it means less useless work for us, more time and more money to create real wealth.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-250688747136457010?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/250688747136457010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/05/tax-credits-rs-new-reality-good-news.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/250688747136457010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/250688747136457010'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/05/tax-credits-rs-new-reality-good-news.html' title='Tax credits (RS&amp;DE): the new reality = good news for startups'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-7566359659451384390</id><published>2010-05-08T20:43:00.000-07:00</published><updated>2010-05-18T11:44:51.722-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC founding'/><category scheme='http://www.blogger.com/atom/ns#' term='startupcamp 6'/><title type='text'>VC founding &amp; StartupCamp 6</title><content type='html'>&lt;a href="http://scmtl6.wikidot.com/"&gt;Montréal StartupCamp 6&lt;/a&gt; was quite interesting. As raised during the unconf discussion, French language technology entrepreneurs seems to prefer bootstrapping their companies then looking for VC foundings (ex: FeelingSoftware/Carré Technologies/DokDok/Vizmatic/QMining/Aptats/Nexyka &lt;span style="font-weight: normal;"&gt;etc.). keynote Dave McClure presentation on how to create good pitch to investors was very good:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;Start with problem not solutions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;Look for high reaction signal (good and bad)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;Stop adding features&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;Focus on customer reactions, real-time as possible&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;Volume-&gt;Cost-&gt;Conversion | acquisition/activation/retention/referral/revenu...&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;etc. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: normal;"&gt;VCs are basically non-risk taker and followers as sheep and should be treated accordingly. &lt;/span&gt;&lt;br /&gt;But what's the point of getting VC founding for software startups? They don't need much more then computers &amp;amp; time. With VC founding you could get 6-12 months where most of it will be re-reimbursed with R&amp;amp;D tax credits. Basically, they give you cash advance for an important share of your company for a ridicule risk. VC mains arguments are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It will allow you to be the first in the market, its bullshit, everyone knows it is the timing that is the most important.&lt;/li&gt;&lt;li&gt;10% of 15 millions is better then 100% of 1 millions...but you still will do most of the work with more stress from investors and you might get 10% of 2 millions. Most entrepreneurs start their company to take control and not getting back to a slavery mode.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Yes it could allow you to build your product faster to meet a customer needs but better, they could make clients connections which has real value. I think that &lt;a href="http://dekorte.com/blog/blog.cgi?do=item&amp;amp;id=4496"&gt;Steve Dekorte&lt;/a&gt; point out exaclty what I profoundly dislike about VCs and haven't presented clearly in a &lt;a href="http://fraka6.blogspot.com/2010/03/why-you-should-accept-vc-money-earlier.html"&gt;previous post&lt;/a&gt;,  VC like professional CEO are short term peoples as oppose to founders. With a difference cost function, you will automatically get clashes which lead to frustrations, politics....basically inefficiency due to uncommon vision.&lt;br /&gt;&lt;br /&gt;Andy Nulman Keynote presentation was interesting in the perspective of importance of a partner and the need to adapt but the mercantile conclusion was a pathetic anglo-saxon point of view: you could make more cash by doing the chicken dance then doing something interesting.&lt;br /&gt;&lt;br /&gt;Phil Telio announcement about the new startup dedicate house &lt;a href="www.maisonnotman.com"&gt;notman&lt;/a&gt; was great for Montréal. I will definitely apply many of the stuff learned there. As an example, if you are a founder and will move to the CEO position, you better start delegating what you are better at because it will allow you to improve others skills and will make other supervision very efficient.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-7566359659451384390?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/7566359659451384390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/05/vc-founding-startupcamp-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7566359659451384390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7566359659451384390'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/05/vc-founding-startupcamp-6.html' title='VC founding &amp; StartupCamp 6'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-3925296337067510749</id><published>2010-03-16T19:54:00.000-07:00</published><updated>2010-03-20T20:15:18.379-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netbook'/><category scheme='http://www.blogger.com/atom/ns#' term='asus'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu remix &amp; Asus Eee PC 1005PE 10''/250G 14hr review</title><content type='html'>&lt;a href="http://www.canonical.com/projects/ubuntu/unr"&gt;Ubuntu remix&lt;/a&gt; is awesome. I am simply amazed. I have installed it from a &lt;a href="https://help.ubuntu.com/community/Installation/FromUSBStick"&gt;usb key&lt;/a&gt; on my new ASUS Eee PC 1005PC and everything works perfectly, yes everything...with a small fix for the wireless interruptions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.linlap.com/wiki/asus+eee+pc+1005pe"&gt;Wireless&lt;/a&gt; (see link to fix flaky + interruption)&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bluethooth&lt;/li&gt;&lt;li&gt;Sound&lt;/li&gt;&lt;li&gt;flash (ex on youtube)&lt;/li&gt;&lt;li&gt;hibernate&lt;/li&gt;&lt;li&gt;second monitor short key&lt;/li&gt;&lt;li&gt;lower intensity screen short key  &lt;/li&gt;&lt;li&gt;ubuntu one (storage)&lt;/li&gt;&lt;li&gt;video &lt;/li&gt;&lt;/ul&gt;I don't need to carry my AC plug anymore. The battery doesn't last 14hrs but easily 10 hrs, way enough for an entire day.  The Atom450(1.66 GHz 512 cache kb) processor performance are acceptable. If I compare heavy cpu neural network training with numpy, it takes less then 5 times the time compare to my AMD athlon 64 (2.8 Ghz + 512 cache). If I normalize the comparison on cpu frequency, it is on 3 times slower which is acceptable. I don't need windows anymore on my laptop, my life will be much pleasant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-3925296337067510749?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/3925296337067510749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/03/ubuntu-remix-asus-eee-pc-1005pe-10250g.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3925296337067510749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3925296337067510749'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/03/ubuntu-remix-asus-eee-pc-1005pe-10250g.html' title='Ubuntu remix &amp; Asus Eee PC 1005PE 10&apos;&apos;/250G 14hr review'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-2018763872927477557</id><published>2010-03-16T19:17:00.000-07:00</published><updated>2011-10-08T11:49:47.282-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='buy US'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='protectionism'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Buy US made by Google.com: search protectionism?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-qQ8PeHP82w/S_PpZfacDtI/AAAAAAAAAHU/A8s35gKD2OE/s1600/kerimage.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 210px; height: 164px;" src="http://3.bp.blogspot.com/_-qQ8PeHP82w/S_PpZfacDtI/AAAAAAAAAHU/A8s35gKD2OE/s400/kerimage.JPG" alt="" id="BLOGGER_PHOTO_ID_5472974596323675858" border="0" /&gt;&lt;/a&gt;At &lt;a href="http://www.confoo.ca/en"&gt;confoo&lt;/a&gt; conference, I attend to "&lt;a href="http://www.confoo.ca/en/2010/session/comment-faire-une-bonne-campagne-search-social"&gt;Comment faire une bonne campagne Search + Social ?" &lt;/a&gt;session. I have been close to fall from my chair when I learn that google.com doesn't provide the same results in the United States compare to all other countries.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Everywhere except US: google.com = search around the world&lt;/li&gt;&lt;li&gt;US only: google.com = search in the US&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Yes, if you search on google.com everywhere except in the US, you will search from the same index all around the world. &lt;span style="font-weight: bold;"&gt;If you are in the US, the search is limited to United States only. &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Isn't that protectionism?&lt;/span&gt;&lt;br /&gt;In many fields, it is great that it is ranking closest business higher (ex: closest pizza place) but not filtering non US competitors when service doesn't need to be close by (ex: consulting services).&lt;br /&gt;Knowing that the United states is the biggest promoter of the free market/open market etc., I am totally amaze to learn such a rule. Do as I Say, Not as I Do. As an example, if you don't have an address is the states and/or host our web site there, SEO (seach engine optimization) is useless to get new customers from the states (a insignificant market;), they won't find you if there are using the biggest search engine...google.&lt;br /&gt;Do Oubama administration really need a buy America plan?&lt;br /&gt;The first role of free trading in unrestricted access to information (i.e: économie de l'information: Joseph E. Stiglitz).&lt;br /&gt;You can try it:&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;What everyone outside the US see with google.com : &lt;b&gt;&lt;a rel="nofollow" href="http://www.google.com/ig?hl=all" target="_blank"&gt;http://www.google.com/ig?hl=&lt;wbr&gt;all&lt;/a&gt;&lt;/b&gt;            &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;What US people see with google.com:&lt;b&gt;&lt;a rel="nofollow" href="http://www.google.com/ig?gl=all" target="_blank"&gt; http://www.google.com/ig?gl=us&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;a rel="nofollow" href="http://www.google.com/ig?gl=all" target="_blank"&gt;&lt;wbr&gt;&lt;/a&gt; &lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;As you will see, results aren't the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-2018763872927477557?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/2018763872927477557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/03/buy-us-made-by-googlecom-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2018763872927477557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2018763872927477557'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/03/buy-us-made-by-googlecom-search.html' title='Buy US made by Google.com: search protectionism?'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-qQ8PeHP82w/S_PpZfacDtI/AAAAAAAAAHU/A8s35gKD2OE/s72-c/kerimage.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-865118658209582609</id><published>2010-03-15T20:53:00.000-07:00</published><updated>2010-03-17T18:59:05.410-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='health care'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><title type='text'>Opportunities ahead to reduce impact of doctor shortage an money constraint: Machine Learning</title><content type='html'>The&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; "&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.cmq.org/" class="l" onmousedown="return rwt(this,'','','res','1','AFQjCNER9IfbaQGuqRfT92ZW-tjCeZUUzg','&amp;amp;sig2=qCuYnEuaxPB7dtYtO2Sfsg','0CAgQFjAA')"&gt;Collège des &lt;em&gt;médecins  du Québec&lt;/em&gt;&lt;/a&gt;" is hammering us with advertisement to give Québec Government solution to find new founding to pay more our doctors and specialists. In the industry, we make more money by been more efficient, not increasing prices. It is the easy solution when others are paying. &lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.cmq.org/" class="l" onmousedown="return rwt(this,'','','res','1','AFQjCNER9IfbaQGuqRfT92ZW-tjCeZUUzg','&amp;amp;sig2=qCuYnEuaxPB7dtYtO2Sfsg','0CAgQFjAA')"&gt;Collège des &lt;em&gt;médecins  du Québec&lt;/em&gt;&lt;/a&gt;" should promote efficiency to reduce their cost, deliver better service and generate more margin to increase nurses and doctors.&lt;br /&gt;As an example, radiologist are earning on average around 700 K/year and Ophthalmologist 600K/year. Yes our generalist doctor could earn more, the average is around 150K/year. As a heavy tax payer, I am suggesting using optician approach in BC, replace heavy paid optometrist by machines to do the exams. Basically, automate what need to automate and use doctor efficiently which could reduce/eliminate the shortage. &lt;br /&gt;When people go to far with their salary expectation, it is time to bring them back on earth. No one accept fees increase for poorer service.&lt;br /&gt;Public system and doctors studies are founded by our taxes and Health System spending represents close to 50% of Québec spending, money doesn't grow in trees. Yes, they are getting less if they were in the states, but US doesn't have a public systems, only wealthy people have access to it and it can't happen in Canada because it is publicly founded.&lt;br /&gt;I have tried to help &lt;a href="http://happyclinic.ca/"&gt;happy clinic&lt;/a&gt; by contacting doctors to offer smart waiting time system to make people wait less but most of them didn't care much: we are busy, people have to way, its a natural filter. They can make us waiting hours even with appointments, treat us like shit because the service offer is low. When most of us are waiting, we aren't earning money to pay them. Shame on you. Everyone is loosing at this game.&lt;br /&gt;Doctor are getting greedy and are starting to see them as untouchable and are forgetting who are paying their salary.&lt;br /&gt;If well packaged, Machine Learning can be use by anyone to do high level screening and provide valuable information. In 2010, doctors remain one of the only profession who doesn't use much machine to make them more efficient and are fighting to stay the bottleneck. With this crisis ahead, it might be a good opportunity for the machine learning community to get into this shielded area in the benefit of everyone, them too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-865118658209582609?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/865118658209582609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/03/opportunities-ahead-to-replace-endless.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/865118658209582609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/865118658209582609'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/03/opportunities-ahead-to-replace-endless.html' title='Opportunities ahead to reduce impact of doctor shortage an money constraint: Machine Learning'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-7335340919880859919</id><published>2010-03-12T23:11:00.000-08:00</published><updated>2010-03-15T20:53:14.153-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC founding'/><category scheme='http://www.blogger.com/atom/ns#' term='outdated decision maker'/><title type='text'>Why you Shouldn't Accept VC money earlier than you thought: Story about Venture Capital and an Outdated Decision Maker revised</title><content type='html'>I met &lt;a href="http://www.garyharan.com/"&gt;Gary Haran&lt;/a&gt; at &lt;a href="http://confoo.ca/"&gt;confoo&lt;/a&gt; and stalled on one of his &lt;a href="http://www.garyharan.com/index.php/2010/02/10/advice-for-canadian-entrepreneurs/"&gt;post&lt;/a&gt;:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;It might be advantageous to &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://talkerapp.tumblr.com/post/345405515/consulting-or-vc"&gt;accept VC money&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; earlier than you thought.&lt;br /&gt;&lt;/span&gt;I have auto-censure one of my post about VC but it need to be republish to ensure entrepreneurs understand the possible deep consequences of such a decision. The post &lt;a href="http://ygingras.net/b/2009/11/anatomy-of-a-failed-software-project"&gt;Anatomy of a failed software project&lt;/a&gt; initiate my thought of un-censure it because we don't talk enough about bad experiences to not offend people or been seen as too negative but its reality and we should have realistic expectation. With Amazon EC2, google app engine, rackspace hosting and so on, it is becoming way less costly to bring new technologies to the market. Most software company don't need big founding anymore and have just more reason to avoid VCs.&lt;br /&gt;I strongly recommend boostrapping your company with consulting and/or R&amp;amp;D credits, INRS programs etc.&lt;br /&gt;&lt;br /&gt;So here is the revised version on the post I have pushed Apr 29, 2009 12:32 AM and removed.&lt;br /&gt;&lt;br /&gt;Once my boss, which was one of the founders of the company that I was working for, told be: &lt;span style="font-weight: bold; font-style: italic;"&gt;Avoid as much as you can VC, it should stay your last resort&lt;/span&gt;. I haven't realized the deep importance of this after some American sharks VCs took control of our company and enforce their ultra capitalism short term vision. GM is a good example of &lt;a target="_blank" href="http://www.imdb.com/title/tt0489037/"&gt;short term vision&lt;/a&gt; but, that's another interesting story.&lt;br /&gt;&lt;br /&gt;Venture Capital represents high risk investments and &lt;span style="font-weight: bold; font-style: italic;"&gt;their only gold is to get the highest return on investment in the shortess time period&lt;/span&gt;. That's fair, you simply have to know the rules.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Entrepreneurs build and invest, VC rape everything that is possible&lt;/span&gt;. At that time, they replaced the top management with their Californian super stars or ... remaining turnips (j'exagère un peu). One of their last super star, when I was there which I will refer to "Le Chasseur", came to take the highest position of the technical side of the business. At that time, I was working on new technology and this old cowboy grandpa came to tell me that we weren't doing real research. According to him, real research was what he was doing 25 years ago with his wired and transistors. I simply told him that our group of 3 (i.e: including manager) weren't pretending doing research but simply doing applied research and definitely not pure research as his thousand of coworkers were doing in the old monopolistic US company he was referring to. This guy had made lot of money in the good years of the Internet and was annoying me with his stories, I should have told him to go and say it to his little sons and daughters and simple retire and let us work. His only salary could have let us build a much better team to continue innovating in technology which was our core business. Without any support from him, even working against us, we still have manage to release a complete new technology (i.e.: prototype + knowledge transfer to prod+ prod support) that is bringing quite lot of income to the company. Charlie, most important point is to bring technology to the market, nothing else matter...I have succeed even if he desperately try to make us fail to justify moving advance stuff to California.&lt;br /&gt;&lt;br /&gt;Those clowns (i.e: I know, I am over generalizing) were just sucking all financial resources of our company. Been still a share older, I was &lt;span&gt;relieve &lt;/span&gt;to hear that "Le Chasseur" has finally been fired in a &lt;span&gt;reorganization&lt;/span&gt;. If you need reorganization to do cleanup in a private company, your level of politic game should be quite high... and politics leads to corruption and mediocrity in such an organization. We could have become a great company but it might remains an average one, I don't think I deserve that after such investments but money leads. According to old colleagues, the latest reorganization was efficient.&lt;br /&gt;&lt;br /&gt;I think that the concentration of smart people is higher in CA then in Montreal, but we definitely fall on some bad apples.&lt;br /&gt;&lt;br /&gt;Key decisions can't stand in incompetent hands, soon or later the guillotine will come. If you made money and reach your level of incompetency, please let the others take the lead. If you haven't make money, just reorient your carrier. We don't care about your ego, the fact that your are the initial founder etc. what is important is the company success and everyone will benefit from it.&lt;br /&gt;&lt;br /&gt;You might have better story and or points of view about VC but what I saw wasn't great:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They stop/restrain investment in innovation&lt;/li&gt;&lt;li&gt;They drop some incompetents clowns (over generalized to make the point)&lt;/li&gt;&lt;li&gt;They suck all money to pays their clowns&lt;/li&gt;&lt;li&gt;They made your shares less valuable&lt;/li&gt;&lt;li&gt;They drawn massive amount of money on building products that had no real value and on non core technology&lt;/li&gt;&lt;li&gt;They create a real wall between decision makers and the workforces&lt;/li&gt;&lt;li&gt;They invest a lot in fake partnerships&lt;/li&gt;&lt;li&gt;They love yes mans&lt;/li&gt;&lt;li&gt;They feel way smarter (especially CA vs Mtl)&lt;/li&gt;&lt;/ul&gt;American VC are like the FMI for Argentina in the 2001 crisis or Corea in the Asia Financial crisis of Golden Sach for Greece bankruptcy, you are going to be fucked.&lt;br /&gt;I hope that I will never in my live work again for a company that will be taken over by VC. If you need VC, you might already been badly organized to need desesperatly money from them. I would definitely like to hear good stories about VC where they achieve their gold...at least.&lt;br /&gt;&lt;br /&gt;Yes I had a painful indirect experience with VC and an outdated decision maker but I knew that startups environment aren't easy. I learned better the rules and the game by playing it. I wish they will find a way to make money because success bring success and Montreal deserve more of them, there is so much talent here. I have emphasis on one bad decision maker but the CEO and the CFO were interesting character...but you need one bad apple drop by your VC to fuck your company and they will get most of the benefits.&lt;br /&gt;&lt;br /&gt;As mentioned in &lt;a href="http://www.lablogatoire.com/2010/01/14/lhistoire-du-quebec-inc/"&gt;Samual Bouchard blog&lt;/a&gt;, we need way more private founding alternatives but were aren't yet there.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img src="http://res1.blogblog.com/tracker/2294829865263631080-3201948852260895972?l=fraka6.blogspot.com" height="1" width="1" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-7335340919880859919?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/7335340919880859919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/03/why-you-should-accept-vc-money-earlier.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7335340919880859919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7335340919880859919'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/03/why-you-should-accept-vc-money-earlier.html' title='Why you Shouldn&apos;t Accept VC money earlier than you thought: Story about Venture Capital and an Outdated Decision Maker revised'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-7692469218675738802</id><published>2010-01-31T18:54:00.000-08:00</published><updated>2010-01-31T19:10:29.041-08:00</updated><title type='text'>python try catch cost vs hasattr (overhead = only 2X)</title><content type='html'>To support different version of code, you might end up using try catch code bloc. But, in the worst cast, what is the cost overhead of throwing an exception every-time?&lt;br /&gt;You might have the possibility to use in some case the hasattr to avoid throwing an exception but your code will be less elegant and/or readable.&lt;br /&gt;In order to make a rational decision, let's compare the time cost. I was expecting a major cost for throwing exception but it ends up been only 2 times more costly then doing an hasattr.&lt;br /&gt;You can see the simple code I have used to compare it &lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/test/try_catch_exp.py?view=markup"&gt;here&lt;/a&gt;. From now on, I will be less scare about memory performance when I am using try catch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-7692469218675738802?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/7692469218675738802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/01/python-try-catch-cost-vs-hasattr.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7692469218675738802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7692469218675738802'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/01/python-try-catch-cost-vs-hasattr.html' title='python try catch cost vs hasattr (overhead = only 2X)'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-8859915560550213066</id><published>2010-01-22T22:51:00.000-08:00</published><updated>2010-01-31T18:40:04.552-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='sample'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>The power of python within Tomcat for powerful webapps (jython2.5.1)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-qQ8PeHP82w/S1qg_O3GhUI/AAAAAAAAAGo/GJyzHYQCUfI/s1600-h/tomcat_jython2.5.1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 205px; height: 193px;" src="http://3.bp.blogspot.com/_-qQ8PeHP82w/S1qg_O3GhUI/AAAAAAAAAGo/GJyzHYQCUfI/s400/tomcat_jython2.5.1.jpg" alt="" id="BLOGGER_PHOTO_ID_5429829308929967426" border="0" /&gt;&lt;/a&gt;Many companies are looking to speedup their development process. Unfortunately they are restricted to use well established webserver framework like &lt;a href="http://tomcat.apache.org/"&gt;tomcat&lt;/a&gt; and, in this example, they fill limited to Java.&lt;br /&gt;&lt;a href="http://www.jython.org/"&gt;Jython&lt;/a&gt; is coming to the rescue. Since September 26th 2009, Jython2.5.1 has been released and can be use to create servlet that runs inside apache tomcat application server. Jython allows you to write python that is running on java VM (100%) and let you use lot of python pure libraries and let you use all java packages with a python synthax.&lt;br /&gt;If you try it, you might have issues like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How can I create a simple jython2.5.1 servlet? (not deprecated jython2.2.1 that doesn't allow you to use most pure python libs)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Why do I get ImportError when I use standard python package? How can I fix it?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Where should I put jython2.5.1.jar?&lt;/li&gt;&lt;li&gt;Where should I put my python code?&lt;/li&gt;&lt;li&gt;Where can I get a basic example that is working?&lt;/li&gt;&lt;li&gt;Where should I put my pure python libraries?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So I have decided to package a simple example (download: &lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/jython/HelloWorld/HelloWorld.py?revision=389&amp;amp;view=markup"&gt;HelloWorld.war&lt;/a&gt;).&lt;br /&gt;Here are the steps you should follow:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;get tomcat http://tomcat.apache.org/ (I used &lt;a href="http://apache.mirror.rafal.ca/tomcat/tomcat-5/v5.5.28/src/apache-tomcat-5.5.28-src.tar.gz"&gt;5.5.28&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;get jython2.5.1  http://sourceforge.net/projects/jython/files/jython/jython_installer-2.5.1.jar&lt;/li&gt;&lt;li&gt;cp ~/jython2.5.1/Lib tomcat5.5.28/share/lib (required to used std python libs)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;cp ~/jython2.5.1/jython.jar tomcat5.5.28/share/&lt;/li&gt;&lt;li&gt;download example: wget http://mlboost.svn.sourceforge.net/viewvc/mlboost/jython/HelloWorld/HelloWorld.war&lt;/li&gt;&lt;li&gt;cp HelloWorld.war tomcat/webapps&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;download java jdk &lt;/a&gt;&lt;/li&gt;&lt;li&gt;export JAVA_HOME=sun-jdk-1.6.0_02&lt;br /&gt;&lt;/li&gt;&lt;li&gt;tomcat5.5.28/bin/startup.sh&lt;/li&gt;&lt;li&gt;try it: http://localhost:8080/HelloWorld/&lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/jython/HelloWorld/HelloWorld.py?view=markup"&gt;HelloWorld.py&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;If you want the flexibility of python but you are stuck with java within tomcat, jython is becoming a real alternative since they've release jython2.5.1.&lt;br /&gt;&lt;br /&gt;PS: a war file is a zipped file, you can unzip it in tomcat/webapps for testing so you don't need to rezip it and restart the server. When you are done, simply do a jar cvf HelloWorld.war * in the tomcat/webapps folder and ship that single file to the client tomcat server (make sure jython is installed). If you want to add pure python libraries, you can simply add them into your war file, it will work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-qQ8PeHP82w/S2Y-oliGkrI/AAAAAAAAAG4/2VcLPZQx86Q/s1600-h/jython_python_tomcat_20.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 251px; height: 170px;" src="http://1.bp.blogspot.com/_-qQ8PeHP82w/S2Y-oliGkrI/AAAAAAAAAG4/2VcLPZQx86Q/s400/jython_python_tomcat_20.png" alt="" id="BLOGGER_PHOTO_ID_5433098867459920562" border="0" /&gt;&lt;/a&gt;Here is the time comparison of the same service:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;python: wsgi httpserver&lt;/li&gt;&lt;li&gt;jython: wsgi httpserver&lt;/li&gt;&lt;li&gt;tomcat: java servlet jython2.5.1&lt;/li&gt;&lt;/ul&gt;It is interesting to see that tomcat servlet provide better perf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-8859915560550213066?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/8859915560550213066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/01/power-of-python-within-tomcat-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8859915560550213066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8859915560550213066'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/01/power-of-python-within-tomcat-for.html' title='The power of python within Tomcat for powerful webapps (jython2.5.1)'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-qQ8PeHP82w/S1qg_O3GhUI/AAAAAAAAAGo/GJyzHYQCUfI/s72-c/tomcat_jython2.5.1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-1711338018131976726</id><published>2010-01-08T20:18:00.000-08:00</published><updated>2011-07-12T20:03:10.896-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='matplotlib'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>matplotlib &amp; python for powerful data visualization</title><content type='html'>Here is an example of data that isn't obvious to analyze:&lt;br /&gt;What is the gain and lost effect of percentage of seats in a point of view of &lt;a href="http://en.wikipedia.org/wiki/Proportional_representation"&gt;proportional representation&lt;/a&gt;? Percentage of seats is usually chosen in &lt;a href="http://en.wikipedia.org/wiki/Legislative_assembly" title="Legislative assembly" class="mw-redirect"&gt;legislative assemblies&lt;/a&gt;. It is the process used in Canadian and Québec elections.&lt;br /&gt;&lt;br /&gt;Powerful visualization allow you to see easily the effect. Python &amp;amp; &lt;a href="http://matplotlib.sourceforge.net/"&gt;matplotlib&lt;/a&gt; is an amazing combination to do so. It took me 20 minutes to allow me to visualize the effect in federal and Quebec election of 2008.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_-qQ8PeHP82w/S0l-2LiKUyI/AAAAAAAAAGQ/ggDXi-2Idws/s1600-h/qc_seats_vs_prop.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 105px;" src="http://2.bp.blogspot.com/_-qQ8PeHP82w/S0l-2LiKUyI/AAAAAAAAAGQ/ggDXi-2Idws/s400/qc_seats_vs_prop.png" alt="" id="BLOGGER_PHOTO_ID_5425006695418581794" border="0" /&gt;&lt;/a&gt;Upper graph (seats vs votes) shows the lost of proportional vote % if you use a seats approach. As an example, liberals gain ~11% and ADQ lost of ~11%.&lt;br /&gt;Lower graph (lost seats vs votes). The real impact of party is the ratio of this lost on their real vote proportion. In this example, it is a gain of ~25% for each Liberals votes (11/(66/125)) and  a lost of 66% for the ADQ and ~88% for QS.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_-qQ8PeHP82w/S0l-6kByB9I/AAAAAAAAAGY/xeOT-8hCPE8/s1600-h/can_seats_vs_prop.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 106px;" src="http://4.bp.blogspot.com/_-qQ8PeHP82w/S0l-6kByB9I/AAAAAAAAAGY/xeOT-8hCPE8/s400/can_seats_vs_prop.png" alt="" id="BLOGGER_PHOTO_ID_5425006770713135058" border="0" /&gt;&lt;/a&gt;Basically:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; In Canadian election, PC &amp;amp; BQ gain power but BQ way more in proportion and Greens lost everything&lt;br /&gt;&lt;/li&gt;&lt;li&gt; In Quebec election:  QS &amp;amp; ADQ lost lot of power and PQ and LIB gain it: it might explain why they aren't talking of changing election formula&lt;/li&gt;&lt;li&gt;Matplot lib and python is an amazing combination to automate data visualization&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;to get the code do:&lt;br /&gt;&lt;blockquote style="font-weight: bold;"&gt;svn co&lt;a href="https://mlboost.svn.sourceforge.net/svnroot/mlboost/elections" target="_blank"&gt; https://mlboost.svn.&lt;wbr&gt;sourceforge.net/svnroot/&lt;wbr&gt;mlboost/elections&lt;/a&gt;&lt;br /&gt;python elections/seats_vs_prop.py&lt;/blockquote&gt;&lt;blockquote style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 12px; font-weight: normal; "&gt;&lt;h1 id="watch-headline-title" style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.8333em; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-weight: bold; height: 1.1363em; max-height: 1.1363em; line-height: 1.1363em; color: rgb(51, 51, 51); overflow-x: hidden; overflow-y: hidden; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span id="eow-title" class="" dir="ltr" title="Gerrymandering Explained" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 22px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=Mky11UJb9AY"&gt;Gerrymandering Explained&lt;/a&gt; (youtube;&lt;/span&gt;&lt;/h1&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: Arial, 'Helvetica Neue', sans-serif; font-size: 15px; line-height: 19px; font-weight: normal; "&gt;Gerrymandering - another reason why rep democracy is fundamentally corrupt &lt;a href="http://bit.ly/qO4mpH" target="_blank" rel="nofollow" class="twitter-timeline-link" url="http://www.youtube.com/watch/?v=Mky11UJb9AY" title="http://www.youtube.com/watch/?v=Mky11UJb9AY" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 132, 180); text-decoration: none; "&gt;http://bit.ly/qO4mpH&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 22px; line-height: 25px; "&gt;)&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-1711338018131976726?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/1711338018131976726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/01/matplotlib-python-for-powerful-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1711338018131976726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1711338018131976726'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/01/matplotlib-python-for-powerful-data.html' title='matplotlib &amp; python for powerful data visualization'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-qQ8PeHP82w/S0l-2LiKUyI/AAAAAAAAAGQ/ggDXi-2Idws/s72-c/qc_seats_vs_prop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-1471527562759202489</id><published>2010-01-03T21:51:00.000-08:00</published><updated>2010-01-04T11:55:26.696-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='target marketing'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>gmail, a powerfull target marketing tool</title><content type='html'>When I got my account on gmail many years ago, I was wondering why google was spending so much resource/wasting to provide free email service as hotmail, yahoo and so many others. Were they making enough money on gmail advertisement? Does that worth the investment?&lt;br /&gt;I though at one point that their primary end goal was to launch a corporate email portal so company won't need to hire high paid sys admin to provide mail server support and by the same time help world wide employee getting something way better then outlook/exchange server that pollute our live. They are doing it already but I think their real goal was to do target marketing but not traditional one.&lt;br /&gt;What better can you get then user emails to understand his profile and do target marketing. They get the highest quality info from your emails, yes your emails.&lt;br /&gt;According to my experience in more traditional target marketing for Bell and at Microcell-Lab, when people do &lt;b style="font-weight: bold;"&gt;traditional&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; target marketing&lt;/span&gt;, they have few info about users and derive new information from which they try to generate better predictions. As an example, they use your postal code to estimate your family revenue etc, and use that information to generate better prediction that you will buy X or Y.&lt;br /&gt;Traditional target marketing practitioners use a lift approach to get the top N most probable buyers for a given product or service and will try to approach those people with promotion or email etc. With gmail, it it way more simple, you use user profile info like email words (btw, they are parsing your emails, take a close look, you will see), and use a prediction engine to advertise the info you are most likely going to like or buy and show it to you directly because you are using their mail service.&lt;br /&gt;Gmail is an amazing target marketing tool because it get profile info directly at the user fingerprint, can do way better prediction then traditional target marketing technics and has access to the customer directly and scale well to get more users. Our prediction is always as good as your data. What's the point of improving algorithm if you can get better and high quality data or as google do both. &lt;a href="http://en.wikipedia.org/wiki/Larry_Page" title="Larry Page"&gt;Larry Page&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Sergey_Brin" title="Sergey Brin"&gt;Sergey Brin&lt;/a&gt; are just visionary target marketers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-1471527562759202489?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/1471527562759202489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/01/gmail-powerfull-target-marketing-tool.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1471527562759202489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1471527562759202489'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/01/gmail-powerfull-target-marketing-tool.html' title='gmail, a powerfull target marketing tool'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-5453657324095756007</id><published>2010-01-01T21:52:00.000-08:00</published><updated>2010-01-02T22:22:50.408-08:00</updated><title type='text'>Jython, pyPdf, reportlab experimentation &amp; patches proposals</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-qQ8PeHP82w/Sz7hD1eVYAI/AAAAAAAAAEg/waY5XsoFMRU/s1600-h/cmp_time_51pages-3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 241px;" src="http://1.bp.blogspot.com/_-qQ8PeHP82w/Sz7hD1eVYAI/AAAAAAAAAEg/waY5XsoFMRU/s320/cmp_time_51pages-3.png" alt="" id="BLOGGER_PHOTO_ID_5422018457410822146" border="0" /&gt;&lt;/a&gt;I am currently experimenting jython in order to do pdf files manipulations. I encountered several problems and I want to share some of the solutions (time to give back).&lt;br /&gt;&lt;br /&gt;Intro, only pure python code and library are working on python and jython. All C related python packages aren't compatible. Jython allows python syntax on top of java VM. One great thing is that you can use java classes within python. Jython2.5.1 as been release last September.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) manual pdf text modification&lt;/span&gt;&lt;br /&gt;I thought it was simple to modify a pdf template to change a text but I was wrong. Even if you are able to re-encode new text and change length, you will hit walls. It is more complex then that (xref etc.). Most pdf lib provide encoding helper function but you will get hard time finding decoding one, as an example &lt;a href="http://www.reportlab.org/apis/reportlab/reportlab.pdfbase.pdfutils-pysrc.html"&gt;ascii85&lt;/a&gt;. After some time, I decided to try to make reportlab working with jython.&lt;br /&gt;&lt;br /&gt;2) &lt;span style="font-weight: bold;"&gt;reportlab import error with jython&lt;/span&gt;&lt;br /&gt;I tried to used &lt;a href="http://www.reportlab.org/"&gt;reportlab&lt;/a&gt;, a powerful lib to create PDF, but it was generating this error when I was importing reportlab.pdfgen: &lt;span style="font-weight: bold;"&gt;java.lang.ClassFormatError: java.lang.ClassFormatError: Invalid method Code length 66566 in class file reportlab/pdfbase/_fontdata$py&lt;/span&gt;. According to this &lt;a href="http://markmail.org/thread/vnd2x3zckf6cshiu" target="_blank"&gt;thread&lt;/a&gt; on warkmail, there was a simple solution but the patch wasn't working. You can find the &lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/reportlab_patches/reportlab._fontdata.py_3345.jythonpatch?view=log"&gt;working patch&lt;/a&gt; that I have created here and proposed to reportlab team.&lt;br /&gt;&lt;br /&gt;3) &lt;span style="font-weight: bold;"&gt;Saving pdf to memory instead of files&lt;/span&gt;&lt;br /&gt;In order to do in memory pdf manipulations, I used the pure &lt;a href="http://pybrary.net/pyPdf/"&gt;pyPdf&lt;/a&gt; python lib from Mathieu Fenniack. Basically, I tried to save a canvas in memory and couldn't figure it out why it wasn't working. Basically, I was doing outputStream.writelines(c._&lt;div class="gmail_quote"&gt;&lt;wbr&gt;doc.GetPDFData(c)). Unfortunately it doesn't work if you don't call c.showpage() before.  I also realized that I could create a canvas directly with StringIO as filename argument because pdfdoc.PDFDocument.SaveToFile(&lt;wbr&gt;...) check if fname as a write function. I have proposed a canvas api &lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/reportlab_patches/reportlab.canvas._3407.savepatch?view=log"&gt;improvement you can find here&lt;/a&gt; to make it more friendly to use.&lt;br /&gt;&lt;br /&gt;4) &lt;span style="font-weight: bold;"&gt;Simple comparison python/jython&lt;br /&gt;&lt;/span&gt;I was wondering how much slower was jython compare to python. As you can see, it is slower and it degrades with some parameter size (ex: n pages).&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;In this example, it also takes 4 to 6 times more memory.&lt;br /&gt;&lt;br /&gt;5) &lt;span style="font-weight: bold;"&gt;Jython&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;out of memory&lt;/span&gt;&lt;br /&gt;If you get:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OutOfMemoryError: java.lang.OutOfMemoryError: GC overhead limit exceeded&lt;/span&gt;&lt;br /&gt;use -J-Xmx1024m jython option to allow more memory &lt;a href="http://stackoverflow.com/questions/717550/java-lang-outofmemoryerror-java-heap-space-with-netbeans"&gt;heap size for the java netbeans&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4) &lt;span style="font-weight: bold;"&gt;Threading optimization&lt;br /&gt;&lt;/span&gt;Jython doesn't suffer from the GIL problem. Look at this video to get more information about it "&lt;a href="http://blip.tv/file/2232410"&gt;Mindblowing Python GIL&lt;/a&gt;". Basically jython can do real multi-threading. In my context, I could easily parallelize part of my code so I tried it by using the &lt;a href="http://www.chrisarndt.de/projects/threadpool/"&gt;Theadpool&lt;/a&gt; of Christopher Arndt. Unfortunately, I still haven't been able to make is faster. pyPdf hasn't been designed to be used in a real threading environment (PdfFileReader can't be shared between threads) which introduce limitations.&lt;br /&gt;&lt;br /&gt;5) &lt;span style="font-weight: bold;"&gt;pyPDF profiling&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-qQ8PeHP82w/Sz7tsOw-atI/AAAAAAAAAEw/vUrye7Ckssw/s1600-h/pypdf_profiling.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-qQ8PeHP82w/Sz7tsOw-atI/AAAAAAAAAEw/vUrye7Ckssw/s1600-h/pypdf_profiling.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 163px;" src="http://3.bp.blogspot.com/_-qQ8PeHP82w/Sz7tsOw-atI/AAAAAAAAAEw/vUrye7Ckssw/s400/pypdf_profiling.png" alt="" id="BLOGGER_PHOTO_ID_5422032345534196434" border="0" /&gt;&lt;/a&gt;pyprof2calltree is an amazing tool for profiling as you can see in the figure. Guessing what needs optimization is a path we should never go because we are most of the time wrong and are wasting our time doing uncritical optimizations that make code unreadable. I saw a great presentation from&lt;span style="white-space: nowrap; font-weight: bold; padding-left: 1em;font-size:smaller;" &gt;&lt;a href="http://us.pycon.org/2009/conference/schedule/event/15/"&gt;Mike C. Fletcher&lt;/a&gt; &lt;/span&gt;on python profiler at pycon 2009. I might try to optimize readObject function of pyPdf.&lt;br /&gt;&lt;br /&gt;It is amazing to see the tremendous effort people are putting to make python syntax available on each platform (java-&gt;jython; .Net-&gt;ironpython etc.) It is a sign of python great syntax.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-5453657324095756007?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/5453657324095756007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2010/01/jython-pypdf-reportlab-experimentation.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/5453657324095756007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/5453657324095756007'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2010/01/jython-pypdf-reportlab-experimentation.html' title='Jython, pyPdf, reportlab experimentation &amp; patches proposals'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-qQ8PeHP82w/Sz7hD1eVYAI/AAAAAAAAAEg/waY5XsoFMRU/s72-c/cmp_time_51pages-3.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-5252386875870409060</id><published>2009-12-13T00:13:00.000-08:00</published><updated>2010-01-06T18:40:50.653-08:00</updated><title type='text'>Business Contract 2.0 - Found a template</title><content type='html'>Knowing that I am flirting with the idea of doing consulting, I was looking for advices about common mistakes and better ways to evaluate client contracts. Contracts can put you in obligations you haven't thought and make you slip your deliveries, force you to make more work than planned and worst, jeopardize your relationship with clients. Root cause is most likely unclear expectations on both sides. With some spaghetti clauses that only juridic lawyers can understand, it is easy to fall in this path and everyone loose at this game.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rim-oiq.org/"&gt;RIM&lt;/a&gt; (Régionale des ingénieurs de Montréal/ordre des ingénieurs du Québec), was organizing a training Workshop called "Business Contracts 2.0". The presentation from Gilles Thibault of &lt;a href="http://www.edilex.com/"&gt;edilex&lt;/a&gt; was extremely interesting.&lt;br /&gt;&lt;br /&gt;Currently, their is no established standard to create contracts. Basically their is as many form as the number of lawyers out there. Most of the time, lawyers are the only one comfortable with them because they've wrote them and it is in their juridic jargon. Unfortunately it doesn't help much who really used them. Most of the time, clients and contractors have hard time understanding them but it is a lucrative process for high hour rate paid lawyers. According to Gilles, lawyer will disappear if they can't provide better services for contracts (preaching for its business).&lt;br /&gt;&lt;br /&gt;Edilex is proposing a template for contract to ensure nothing is missing and enforce structure to ensure clear expectation between each party. A contract need a table of content, its like a plan.&lt;br /&gt;&lt;br /&gt;Proposed Template blocks:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Identification &amp;amp; location (name + birth-&amp;gt;juridic name + rights applicable)&lt;/li&gt; &lt;li&gt;Party identification (Physic/moral-Society/union/coop -&amp;gt;representative liquidator Trustee/power delegation etc. )&lt;/li&gt; &lt;li&gt;Preamble (context used for fall-back defect clauses)&lt;/li&gt; &lt;li&gt;Lexicon (clarification/disambiguation &amp;amp; shorter sentences)&lt;/li&gt; &lt;li&gt;Object (simple/multiple;utility conditions/redaction)&lt;/li&gt; &lt;li&gt;Cost (&lt;span&gt;adjustment/&lt;/span&gt;payment method/warranty/phase delivery etc.)&lt;/li&gt; &lt;li&gt;Attestations party A (not obligation/warranty-improve trust-don't want to fight about obligation and duty to disclose information)&lt;/li&gt; &lt;li&gt;Attestations party B&lt;/li&gt; &lt;li&gt;Reciprocal obligations&lt;/li&gt; &lt;li&gt;Obligations party A (Align with Business process/order of execution)&lt;/li&gt; &lt;li&gt;Obligations party B&lt;/li&gt; &lt;li&gt;Special provisions (orphan/specific/bi-directional)&lt;/li&gt; &lt;li&gt;General provisions&lt;/li&gt; &lt;li&gt;End of contract (resolution/termination)&lt;/li&gt; &lt;li&gt;Start of the contract&lt;/li&gt; &lt;li&gt;Duration&lt;/li&gt; &lt;li&gt;Scope&lt;/li&gt; &lt;li&gt;Annexes&lt;/li&gt;&lt;/ol&gt;So basically, why a template?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Clearly define what it include and isn't (You can't remove sections)&lt;/li&gt; &lt;li&gt;Provide table of content (Don't need to reread all the contract)&lt;/li&gt; &lt;li&gt;Find holes/unclear-possible point of conflicts&lt;/li&gt; &lt;li&gt;Reduce dramatically judge interpretation during conflict&lt;/li&gt; &lt;li&gt;Can help deciding to not get involve in the project (risk/client honesty)&lt;/li&gt; &lt;li&gt;Provide structure/uniform frame&lt;/li&gt; &lt;li&gt;Enforce clarity&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;I will try to apply some of those ideas and it is making me way less scared and equipped to sign new contracts. I really like this approach.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-5252386875870409060?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/5252386875870409060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/12/contrat-20-found-template.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/5252386875870409060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/5252386875870409060'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/12/contrat-20-found-template.html' title='Business Contract 2.0 - Found a template'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-8819782561320354440</id><published>2009-11-18T18:59:00.000-08:00</published><updated>2009-12-02T19:56:28.545-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='neural networks'/><category scheme='http://www.blogger.com/atom/ns#' term='Gradient descent'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='leaky abstration'/><title type='text'>Leaky assomption and Gradient Descent- part 2/3</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-qQ8PeHP82w/SxB8PNixgnI/AAAAAAAAAEM/Lf00wh93Z3A/s1600/5yearsLater.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 195px;" src="http://4.bp.blogspot.com/_-qQ8PeHP82w/SxB8PNixgnI/AAAAAAAAAEM/Lf00wh93Z3A/s320/5yearsLater.jpg" alt="" id="BLOGGER_PHOTO_ID_5408959753247359602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CFrancis%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink 	{color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{color:purple; 	text-decoration:underline; 	text-underline:single;} span.il 	{mso-style-name:il;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Last February, I post the&lt;a href="http://fraka6.blogspot.com/2009/02/leaky-assomption-and-gradient-descent.html"&gt; first part of this post&lt;/a&gt;.&lt;br /&gt;Basically, I was pretending that “uncorrelated inputs” was a leaky abstraction and was the root cause of neural networks back-propagation poor results for training huge neural networks or deep networks. According to me, this simplification was fine while the number of parameters remains small. My hypothesis was that optimization problems are growing with the number of parameters which imply an implicit limit of the usage of this abstraction and explain those poor results. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;During my research between 2001 and 2003, I was focusing on finding a way to train a neural network faster as presented on the left side of the figure. Unfortunately, I didn’t found that revolutionary algorithm but simply documented various effects of optimizations problems and ways to reduce or eliminate them with experimental results. &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;In 2008, I went to see &lt;a href="http://www.iro.umontreal.ca/%7Elisa/pointeurs/LeRouxNicolasThese.pdf"&gt;Nicolas Leroux&lt;/a&gt; Phd defense and close to the end, he brought back that optimization problems could be the problem without presenting solutions which revive my research interest.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;It reminded me a last crazy experimentation I have done in 2003, I found an algorithm that had the characteristic of the right side figure but it did not kept much of my attention at that time. Reducing optimization doesn’t imply necessarily faster classification error in time but should do it per iteration (i.e.: epoch).&lt;/span&gt;&lt;span style="font-size:100%;"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;During a year, I tried to reproduce that experiment in my free time. &lt;a href="http://ca.linkedin.com/in/pafournier"&gt;PA&lt;/a&gt; came to the rescue to discuss the underlying assumptions, to brainstorm and help reproducing the experimentation within &lt;a href="https://bitbucket.org/fraka6/flayers/"&gt;flayers&lt;/a&gt;. Flayers wasn't suiting our needs anymore, the process to get back into the detailed of the implementation was reducing dramatically our experimentation throughput. We finally decided to drop flayers and rewrite it in python (&lt;a href="https://bitbucket.org/fraka6/optbprop/"&gt;optbprop&lt;/a&gt;) to ensure better collaboration and way faster experimentation. We had to make several optimization to make python speed acceptable but it was still slower then flayers (~10; see &lt;a href="http://fraka6.blogspot.com/2009/05/is-python-really-slowa-practical.html"&gt;post&lt;/a&gt;). Even if it was slower, ultra fast experimentation become possible and research speed increased exponentially to try to recreate the experimentation. The complexity was residing into the order of the parameters optimization, what was the right recipe??&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt; In June 2009, some times after &lt;a href="http://www.cs.mcgill.ca/%7Eicml2009/"&gt;ICML&lt;/a&gt;, &lt;a href="http://github.com/jeremybarnes"&gt;Jeremy&lt;/a&gt; joined as the third collaborator and I finally reproduced it, results were even better. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;I have used an output max sensitivity ordering followed by a max hidden sensitivity backprop strategy. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Unfortunately, it was too good to be true and Jeremy found a critical problem in the solution which was leading to extremely poor generalization. At that point, motivation was too low so we’ve decided to stop our research. I was disappointed but a true relief, I could finally move to something else. &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Without this collaboration team, I couldn’t have reached that point alone. I am still not 100% convinced that this research path is dead but it is back to a value that is way lower the motivation minimum threshold.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;What could explain such bad results? We were expecting &lt;/span&gt;&lt;span style="font-size:100%;"&gt;lightning learning speed and &lt;/span&gt;&lt;span style="font-size:100%;"&gt;at worst little improvements compare to standard stochastic backprop. Our explanation hypothesis is that uncorrelated stochastic learning breaks implicit normalization process required for generalization. Basically, for each example, we update parameters to predict its class correctly but its too violent and unlearn previous examples way faster. Unfortunately, we loose the higher level goal which is generalization. Normalization could be re-integrate with bach learning but we haven't experiment it.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;If this is true: “When &lt;/span&gt;&lt;span class="il"  style="font-size:100%;"&gt;you&lt;/span&gt;&lt;span style="font-size:100%;"&gt;'re ready to quit, &lt;/span&gt;&lt;span class="il"  style="font-size:100%;"&gt;you&lt;/span&gt;&lt;span style="font-size:100%;"&gt;'re &lt;/span&gt;&lt;span class="il"  style="font-size:100%;"&gt;closer&lt;/span&gt;&lt;span style="font-size:100%;"&gt; than &lt;/span&gt;&lt;span class="il"  style="font-size:100%;"&gt;you&lt;/span&gt;&lt;span style="font-size:100%;"&gt; think”, I might write part 3 of this post but It will &lt;a href="http://www.daniel-lemire.com/blog/archives/2009/11/11/procrastination-can-be-your-friend/"&gt;take some time&lt;/a&gt;. There is an &lt;a href="http://jmlr.csail.mit.edu/papers/volume7/MLOPT-intro06a/MLOPT-intro06a.pdf"&gt;interplay between machine learning and optimization&lt;/a&gt; but people tend to forget it.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-8819782561320354440?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/8819782561320354440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/11/leaky-assomption-and-gradient-descent.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8819782561320354440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8819782561320354440'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/11/leaky-assomption-and-gradient-descent.html' title='Leaky assomption and Gradient Descent- part 2/3'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-qQ8PeHP82w/SxB8PNixgnI/AAAAAAAAAEM/Lf00wh93Z3A/s72-c/5yearsLater.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-908487529032317432</id><published>2009-11-16T21:32:00.000-08:00</published><updated>2009-11-29T19:34:42.115-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='confoo'/><category scheme='http://www.blogger.com/atom/ns#' term='web monitoring'/><title type='text'>Toward better Web Monitoring Solutions</title><content type='html'>&lt;a href="http://confoo.ca/en"&gt;Confoo&lt;/a&gt;, a web techno conference, will take place in Montreal in March 2010. If my proposal is accepted, I will present " Toward better Web Monitoring Solutions".  Here is a summary:&lt;br /&gt;&lt;br /&gt;Web applications are slowly becoming the new standard. No more installation nor upgrades, they are accessible from any internet connected device. While being the Holy Grail to users, web applications can be a nightmare to engineers, as ensuring quality of service becomes harder.&lt;br /&gt;&lt;br /&gt;In fact, web applications create a high level of testing complexity, bringing new challenges to quality and availability of service.&lt;br /&gt;&lt;br /&gt;As more and more businesses rely on web applications, techniques such as real-time web monitoring, incidents detection and root causes analysis have become critical.&lt;br /&gt;&lt;br /&gt;We will present these new problems in detail, followed by a short history of techniques used to measure and estimate the quality of web-based applications. We will review the most popular monitoring technologies, pointing out their advantages and shortcomings.&lt;br /&gt;&lt;br /&gt;This presentation will be done in collaboration with &lt;a href="http://www.ffctn.com/"&gt;Sebastien Pierre&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-908487529032317432?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/908487529032317432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/11/toward-better-web-monitoring-solutions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/908487529032317432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/908487529032317432'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/11/toward-better-web-monitoring-solutions.html' title='Toward better Web Monitoring Solutions'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-948570945057525156</id><published>2009-11-16T20:10:00.000-08:00</published><updated>2009-11-16T21:05:21.488-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='knowledge workers'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Knowledge Workers - Talent is not patient, and it is not faithful</title><content type='html'>Knowledge workers are impatient as &lt;a href="http://en.wikipedia.org/wiki/Larry_Wall#Virtues_of_a_programmer"&gt;great programmers.&lt;/a&gt; They are hard to replace and train and still some corporations are not proactive about it. It might not be costly enough?&lt;br /&gt;Of course HR, managers nor VPs aren't struggling to compensate critical components when some of them leave but underlying teams have to. Those decision makers have to remember that they aren't free lunch and mismanagement of knowledge workers have some consequences. &lt;br /&gt;Better management of &lt;a href="http://www.economist.com/businessfinance/management/displayStory.cfm?story_id=14301649&amp;amp;source=hptextfeature"&gt;Knowledge Workers&lt;/a&gt; lead to much more productive teams and low turn over but the opposite could cause your decline. What's so hard about creating a win/win approach instead of a loose/loose approach that so many companies seems to fall in. Maybe a generation clash? or simply missing competencies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-948570945057525156?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/948570945057525156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/11/knowledge-workers-talent-is-not-patient.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/948570945057525156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/948570945057525156'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/11/knowledge-workers-talent-is-not-patient.html' title='Knowledge Workers - Talent is not patient, and it is not faithful'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-5279105591080671859</id><published>2009-09-02T20:55:00.000-07:00</published><updated>2009-09-02T21:59:50.526-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data-mining'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><title type='text'>What's the relationship between Machine Learning and Data-Mining</title><content type='html'>Machine Learning and Data-Mining are extremely related but it isn't clear for most people. I'll try to clarify the link in this short blog. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's start with definitions:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Data-Mining (DM) is the process of extracting patterns from data. The main goal is to understand relationships, validate models or identify unexpected relationships. &lt;/li&gt;&lt;li&gt;Machine Learing (ML) algorithms allows computer to learn from data. The learning process consist of extracting the patterns but the end goal is to use the knowledge to do prediction on new data.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Both, in ML and DM, we start by extracting patterns. In DM, the process ends there by looking a the patterns. In ML, we reuse learned patterns to do prediction. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One important difference about patterns extraction is that machine learning algorithms don't need to understand the representation of the patterns but data-miners do. As an example, it is hard to understand exactly what a neural network has learned but decisions tree are easy to understand and compare. On the other hand, comprehensive patterns allows machine learning practitionner to identify data problems and by fixing them, improve the prediction accurary of their model. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So basically, the data-mined patterns learned by any machine learning algos are used to do prediction on new data. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some people might simply say that they are the same, the only difference is how you use the learned patterns: to understand or to predict. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;note:&lt;/div&gt;&lt;div&gt;Unsupervised learning can be considered has data-mining because it doesn't involve prediction. In order to understand discovered clusters difference, we can simply use supervised learning on discovered patterns tagged datasets. &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-5279105591080671859?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/5279105591080671859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/09/whats-relationship-between-machine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/5279105591080671859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/5279105591080671859'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/09/whats-relationship-between-machine.html' title='What&apos;s the relationship between Machine Learning and Data-Mining'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-6921351182095324173</id><published>2009-07-05T00:31:00.000-07:00</published><updated>2010-09-28T20:04:03.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digipy'/><category scheme='http://www.blogger.com/atom/ns#' term='Montreal Python Demo Machine Learning'/><title type='text'>digipy 0.1.1 - Hand Digit Real Time Demo is available</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlFL1qjoiZI/AAAAAAAAADY/AlrK7cfJdLI/s1600-h/digipy2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 199px;" src="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlFL1qjoiZI/AAAAAAAAADY/AlrK7cfJdLI/s320/digipy2.png" alt="" id="BLOGGER_PHOTO_ID_5355144817249126802" border="0" /&gt;&lt;/a&gt;At &lt;a href="http://montrealpython.org/?p=50"&gt;Montreal-Python6&lt;/a&gt;, I have presented a real-time hand digit real-time demo.&lt;br /&gt;This demo allows you to do real-time digit recognition from your digital camera. It allows you to load any trained neural network and apply in real time the same features extraction. This demo allows you to train, extract features, used trained neural networks inside real-time demo, visualize features in 2D and their frequency distribution and get feature discriminant weight.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;The packaging 0.1.1 of the demo is now available on &lt;a href="http://pypi.python.org/pypi?:action=display&amp;amp;name=digipy&amp;amp;version=0.1.1"&gt;pypi&lt;/a&gt;:&lt;br /&gt;(unfortunately, some dependency packages aren't supported by easy_install so you have to do &lt;span style="text-decoration: underline;"&gt;4&lt;/span&gt; steps instead of 1)&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;install opencv (sudo aptitude install python2.5-opencv)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;install PyQt (sudo aptitude install pyqt4-dev-tools)* &lt;/li&gt;&lt;li&gt;instal matplotlib (sudo aptitude install python2.5-matplotlib)*&lt;/li&gt;&lt;li&gt;sudo easy_install digipy&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;* unfortunatly, this package isn't supported with easy_install&lt;/p&gt;&lt;p&gt;Here is the noise robustness comparison of the trained neural network on the raw pixels vs extracted features (digit surface + image convolution with train digits means (0-9)):&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlBtZ4e4_gI/AAAAAAAAACg/D1dQeZHkQe4/s1600-h/compare.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 257px;" src="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlBtZ4e4_gI/AAAAAAAAACg/D1dQeZHkQe4/s320/compare.png" alt="" id="BLOGGER_PHOTO_ID_5354900248369626626" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you aren't convinced that Feature Extraction is absolutely required now, I have failed.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Once installed, you will get access to those command line tools:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;digipy: Real-time hand digit recognition demo application (ex: digipy --test)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;digipy-features2D : demo of feature 2D visualization to see possible clusters&lt;/li&gt;&lt;li&gt;digipy-train: demo training of a Neural Network using mlboost&lt;br /&gt;&lt;/li&gt;&lt;li&gt;digipy-compare: compare noise effect on test error on raw inputs and feature extracted datasets&lt;br /&gt;&lt;/li&gt;&lt;li&gt;digipy-freq-analysis:  demo feature analysis (frequency distributions)    &lt;/li&gt;&lt;li&gt;digipy-extract-features: demo features extraction&lt;br /&gt;&lt;/li&gt;&lt;li&gt;digipy-see-data:   show dataset train and test samples&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlB2hYLW6MI/AAAAAAAAADQ/ig7Ef-0lLyM/s1600-h/features_2d.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 242px;" src="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlB2hYLW6MI/AAAAAAAAADQ/ig7Ef-0lLyM/s320/features_2d.png" alt="" id="BLOGGER_PHOTO_ID_5354910272741370050" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlB2UD2P_PI/AAAAAAAAADI/Gd2PaHX6mko/s1600-h/features_2d_2.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 241px;" src="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlB2UD2P_PI/AAAAAAAAADI/Gd2PaHX6mko/s320/features_2d_2.png" alt="" id="BLOGGER_PHOTO_ID_5354910043945827570" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-qQ8PeHP82w/SlBstb9xN8I/AAAAAAAAACQ/xV6Cnx2qq1w/s1600-h/train.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 161px;" src="http://1.bp.blogspot.com/_-qQ8PeHP82w/SlBstb9xN8I/AAAAAAAAACQ/xV6Cnx2qq1w/s200/train.png" alt="" id="BLOGGER_PHOTO_ID_5354899484800268226" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-qQ8PeHP82w/SlBu0IPttbI/AAAAAAAAACo/a8LksYZ-CEM/s1600-h/data.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 148px;" src="http://4.bp.blogspot.com/_-qQ8PeHP82w/SlBu0IPttbI/AAAAAAAAACo/a8LksYZ-CEM/s200/data.png" alt="" id="BLOGGER_PHOTO_ID_5354901798789166514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-qQ8PeHP82w/SlBs6IesaFI/AAAAAAAAACY/IEa_9CvHEm0/s1600-h/freq_analysis.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 77px;" src="http://3.bp.blogspot.com/_-qQ8PeHP82w/SlBs6IesaFI/AAAAAAAAACY/IEa_9CvHEm0/s200/freq_analysis.png" alt="" id="BLOGGER_PHOTO_ID_5354899702907955282" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlB1gXNGVZI/AAAAAAAAADA/4-GdY9y4G1Q/s1600-h/features_info.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 96px;" src="http://2.bp.blogspot.com/_-qQ8PeHP82w/SlB1gXNGVZI/AAAAAAAAADA/4-GdY9y4G1Q/s200/features_info.png" alt="" id="BLOGGER_PHOTO_ID_5354909155788739986" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-qQ8PeHP82w/SlFMMSZw5HI/AAAAAAAAADg/JjfC5TSPRWM/s1600-h/digipy.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_-qQ8PeHP82w/SlFMMSZw5HI/AAAAAAAAADg/JjfC5TSPRWM/s320/digipy.png" alt="" id="BLOGGER_PHOTO_ID_5355145205902271602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you have any trouble using it, just let me know (fpieraut at gmail).&lt;br /&gt;Source code is available here http://bitbucket.org/fraka6/digipy.&lt;br /&gt;&lt;br /&gt;(note: now digipy use mlboost.nn module for its NeuralNetwork instead of mlboost.flayers swig wrapper)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-qQ8PeHP82w/SlBrIQOV43I/AAAAAAAAABw/LSsVj7cVqAA/s1600-h/features_2d.png"&gt;&lt;/a&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-6921351182095324173?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/6921351182095324173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/07/digipy-011-hand-digit-real-time-demo-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6921351182095324173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6921351182095324173'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/07/digipy-011-hand-digit-real-time-demo-is.html' title='digipy 0.1.1 - Hand Digit Real Time Demo is available'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-qQ8PeHP82w/SlFL1qjoiZI/AAAAAAAAADY/AlrK7cfJdLI/s72-c/digipy2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-7333031671304770167</id><published>2009-06-17T19:34:00.000-07:00</published><updated>2009-06-24T19:29:08.922-07:00</updated><title type='text'>ICML highlights summary</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Let's try to summarized in several sentences what I have learned:&lt;/span&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Language acquisition: Children loose their capacity to distinguish some phonemes to reduce the scope of choices in order to learn their environment language. The aquisition of phonemes categories from a buttom up approach isn't sufficient (signal processing+unsupervised clustering), a lexical minimal pair (ex:ngram) seems to be required to ensure the learning. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Trying to learn the best kernel that restrict optimization to a convex problem seems to be a death end. It might be time change &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;paradigm&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; or move to the &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;non-convex&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; dark side. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Boosting is too sensitive to noise but a robust framework has been presented by &lt;/span&gt;&lt;span class="Apple-style-span" style="  line-height: 20px; word-spacing: 1px; "&gt;&lt;b&gt;&lt;a href="http://www.cse.ucsd.edu/~yfreund/" style="color: rgb(200, 94, 53); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: rgb(200, 94, 53); "&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Yoav&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Freund&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Deep Architecture seems to be the next big thing. Regularisation, auto encoder and &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;RBF&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; can be used to &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;pre-train&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; networks from &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;un-label&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; data. Temporal coherence (similarity of consecutive frames in video) can be used as a regulation unsupervised technique in the embedding space. &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Un&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;supervised training is a regularisation technique that &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;enforce&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; better clustering. The more unlabeled unsupervised examples are used, the better will be the generalization. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Training from &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;IID&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; samples isn't optimal, &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;curriculum&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; learning (i.e.: increase examples complexity) seems to smooth the cost function and lead to faster training and better &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;generalization&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;GPU&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; is the way to go to make ML &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;algo&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; scalable. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style=" line-height: 20px; word-spacing: 1px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style=" font-weight: normal; line-height: normal; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Feature hashing is an efficient strategy for &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;dimensionality&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; reduction and can be used to train classifiers. &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Sparse transformation simplify the optimisation process (i.e: same idea used in the Kernel trick in &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;SVN&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;). &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;PCA&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; is doing the opposite. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Research has stopped in Neural Networks because we couldn't estimate boundary error due to its non convex cost function, there was no more &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;theoretical&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; framework. &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;SVN&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; came to the rescue by providing 3 major benefits, a convex cost function, a better generalization process (margin maximization) and less parameters tuning. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_19"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Unfortunately&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;, it doesn't scale well, kernel is hard or impossible to choose to reach optimal solution and it doesn't allow deep architecture. For the same capacity, a shallow architecture needs more neurons then a deep architecture and large shallow architecture are much more likely to numeric issue. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Deep architecture came back with &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_20"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;convolution&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; deep neural networks applied to objects recognition and them &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Hiton&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; proposed a &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_22"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;breakthrough&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;, a generative approach to initialised the parameters.  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Unsupervised learning lead neural networks to much better initialization state and its regularisation provides better generalisation. But now, even if we are doing better initialisation, we still aren't able to better explore the function space which leave, according to me, still open the question: &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;is this an optimization problem?&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;. Local &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;mimima&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; observe might be an illusion created by the effect of gradients cancellation from opposites gradients which is an optimisation problem induce by the leaky assumption of uncorrelated features &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_24"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;which&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; lead people to optimize all parameters at the same time. ICML was inspiring. &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-7333031671304770167?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/7333031671304770167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/06/icml-highlights-summary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7333031671304770167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7333031671304770167'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/06/icml-highlights-summary.html' title='ICML highlights summary'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-8715650434011904242</id><published>2009-06-10T19:51:00.000-07:00</published><updated>2009-06-10T20:37:22.919-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ICML'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learnings'/><title type='text'>International Conference on Machine Learning (ICML2009)</title><content type='html'>The 26th International Conference on Machine Learning (&lt;a href="http://www.cs.mcgill.ca/~icml2009/"&gt;ICML 2009&lt;/a&gt;) will take place in Montreal next week (14-18, 2009).&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.cs.mcgill.ca/~icml2009/invited.html"&gt;3 invited speakers &lt;/a&gt;are quite interesting. I look forward to heard them:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.lscp.net/persons/dupoux/"&gt;Emmanuel Dupoux&lt;/a&gt;, from Ecole Normale Superieure on: &lt;strong&gt;How do infants bootstrap into spoken language?&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.cse.ucsd.edu/~yfreund/"&gt;&lt;strong&gt;Yoav Freund&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;,&lt;/strong&gt; University of California on &lt;strong&gt;Drifting games, boosting and online learning?&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://homepage.mac.com/corinnacortes/"&gt;Corinna Cortes&lt;/a&gt;, from Google on &lt;strong&gt;can learning kernels help performance?&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I have do decide to which &lt;a href="http://www.cs.mcgill.ca/~icml2009/tutorials.html"&gt;tutorials &lt;/a&gt;I will attend this sunday:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;T6 Machine Learning in IR: Recent Successes and New Opportunities &lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://research.microsoft.com/icml-2009-mlir-tutorial/"&gt;[tutorial webpage]&lt;/a&gt;Paul Bennett, Misha Bilenko, and Kevyn Collins-Thompson&lt;/li&gt;&lt;li&gt;T8 Large Social and Information Networks: Opportunities for ML &lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://cs.stanford.edu/people/jure/icml09networks/"&gt;[tutorial webpage]&lt;/a&gt;Jure Leskovec&lt;/li&gt;&lt;li&gt;T9 Structured Prediction for Natural Language Processing &lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.cs.cmu.edu/~nasmith/sp4nlp/"&gt;[tutorial webpage]&lt;/a&gt;Noah Smith&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here are some interesting papers:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Curriculum Learning [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/119.pdf"&gt;Full paper&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Deep Learning from Temporal Coherence in Video [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/223.pdf"&gt;Full paper&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Good Learners for Evil Teachers [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/259.pdf"&gt;Full paper&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Using Fast Weights to Improve Persistent Contrastive Divergence [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/363.pdf"&gt;Full paper&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Online Dictionary Learning for Sparse Coding [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/364.pdf"&gt;Full paper&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;A Novel Lexicalized HMM-based Learning Framework for Web Opinion Mining [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/184.pdf"&gt;Full paper&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;A Scalable Framework for Discovering Coherent Co-clusters in Noisy Data [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/316.pdf"&gt;Full paper&lt;/a&gt;] &lt;/li&gt;&lt;li&gt;Bayesian Clustering for Email Campaign Detection [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/328.pdf"&gt;Full paper&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Feature Hashing for Large Scale Multitask Learning [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/407.pdf"&gt;Full paper&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Grammatical Inference as a Principal Component Analysis Problem [&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/539.pdf"&gt;Full paper&lt;/a&gt;] &lt;/li&gt;&lt;li&gt;Convolutional deep belief networks for scalable unsupervised learning of hierarchical representations[&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.blogger.com/papers/571.pdf"&gt;Full paper&lt;/a&gt;]&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I have to decide between thoses workshops on Thursday:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.cs.toronto.edu/~rsalakhu/deeplearning/index.html"&gt;Workshop on Learning Feature Hierarchies&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://sequel.futurs.inria.fr/events/online-learning"&gt;On-line Learning with Limited Feedback&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://baw-uai09.intel-research.net/"&gt;Seventh Annual Workshop on Bayes Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="COLOR: rgb(200,94,53); BORDER-BOTTOM: rgb(200,94,53) 1px dotted; TEXT-DECORATION: none" href="http://www.iro.umontreal.ca/~gamme/icml2009_sparsemusic/"&gt;Sparse Methods for Music Audio&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I look forward to meet old collegues, friends and new researchers. Next week will be awesome. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-8715650434011904242?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/8715650434011904242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/06/international-conference-on-machine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8715650434011904242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8715650434011904242'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/06/international-conference-on-machine.html' title='International Conference on Machine Learning (ICML2009)'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-4912733075398070440</id><published>2009-05-29T20:23:00.000-07:00</published><updated>2009-05-30T07:01:49.207-07:00</updated><title type='text'>Is Python really slow? A practical comparison with C++</title><content type='html'>&lt;span class="Apple-style-span" style=";font-family:Verdana;font-size:13;"  &gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;The common perception is that Python's implementation is slow, but you can often write fast Python if you know how to profile your code effectively.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have tried it. I have compared a hight cpu intensive algorithm, the training of a simple one hidden neural network. To do so, I have used my old C++ NeuralNetwork library (&lt;a href="http://us.pycon.org/2009/conference/schedule/event/15/"&gt;flayers&lt;/a&gt;) and an implementation in python with Numpy. I have wrote a simple neural net in python and optimize all loops with numpy as suggested in a &lt;a href="http://us.pycon.org/2009/conference/schedule/event/15/"&gt;profiling presentation saw in Pycon2009&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have compare the training time of a simple fully connected NeuralNetwork will 100 hidden neurones for 10 iteration on &lt;a href="http://archive.ics.uci.edu/ml/datasets/Letter+Recognition"&gt;letters&lt;/a&gt; dataset (cost function = mean square error).&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Here is the time to do 10 iteration with flayers (c++):&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;blockquote&gt;./fexp / -h 100 -l 0.01 --oh -e 10&lt;/blockquote&gt;&lt;blockquote&gt;...&lt;br /&gt;Optimization: Standard&lt;br /&gt;Creating Connector [16|100] [inputs | hiddens]&lt;br /&gt;Creating Connector [100|26] [hiddens | outputs]&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;real    0m11.187s&lt;br /&gt;user    0m10.837s&lt;br /&gt;sys    0m0.012s&lt;br /&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;Here is the time to do 10 iteration on the full &lt;a href="http://archive.ics.uci.edu/ml/datasets/Letter+Recognition"&gt;letters&lt;/a&gt; dataset with python:&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;time ./bpnn.py -e 10 --h 100 -f letters.dat -n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;Creation of an NN &lt;16:100:26&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;...&lt;br /&gt;real    85m48.646s&lt;br /&gt;user    85m9.163s&lt;br /&gt;sys    0m1.632s&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;Here is the time to do 10 iteration on the full &lt;a href="http://archive.ics.uci.edu/ml/datasets/Letter+Recognition"&gt;letters&lt;/a&gt; dataset with python and numpy:&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;time &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;./bpnn.py -e 10 --h 100 -f letters.dat &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;Creation of an NN &lt;16:100:26&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;real    1m37.066s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;user    1m36.026s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;sys    0m0.100s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if you do the math:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The numpy implementation is &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;60 &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic; font-weight: bold;"&gt;time faster &lt;span class="Apple-style-span" style="font-style: normal; font-weight: normal;"&gt;then a basic python implementation.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-style: italic; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; font-weight: normal;"&gt;My C++ implementation is a little more then &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;10 time faster&lt;/span&gt;&lt;/span&gt; then my simply python numpy implementation. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Numpy implementation definitly worth it because it reduce the code and has a significant performance impact, the C++ might be required for extreme performance but the trade off of code complexity and time my not work it. Now that I have the choice, I will still use my C++ lib. &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;span class="Apple-style-span" style="border-collapse: separate;font-family:Verdana;" &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-4912733075398070440?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/4912733075398070440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/05/is-python-really-slowa-practical.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4912733075398070440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4912733075398070440'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/05/is-python-really-slowa-practical.html' title='Is Python really slow? A practical comparison with C++'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-9116527178734839360</id><published>2009-05-10T20:40:00.000-07:00</published><updated>2009-05-16T20:53:30.399-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scientist'/><category scheme='http://www.blogger.com/atom/ns#' term='Engineer'/><title type='text'>Short Essay: Engineering vs Scientist</title><content type='html'>Engineer vs scientist difference is obscure for many people, me included at the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;beginning&lt;/span&gt;.&lt;br /&gt;Already, during a chat with a research professor in 2001 about the competence war between the engineering and the science department of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;university&lt;/span&gt; of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;Montreal&lt;/span&gt;, I got an &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;initial&lt;/span&gt; hint about it, he told me that part of computer science department tension with software engineers was about placement rate. Engineers was much higher than computer scientists. I should have request an explanation. What is this war about, the computer science &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;department&lt;/span&gt; request engineer to do some normalization courses even if they have great grades and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;vis&lt;/span&gt;&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;versa&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;In my short carrier, I have observe a major difference that I will try to expose with examples.&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;After&lt;/span&gt; my degree in engineering, I have done most of my graduates courses with scientists. In my first final exam, after some discussions with classmates, I realized that I was the only one that have used an estimation to solve a bottleneck &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;calculus&lt;/span&gt; in a problem. Most of the other have lost more than half an hour on solving it &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;exactly&lt;/span&gt; and couldn't finish the full exam.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Several times, I add to step in projects to set schedule in order to force people to cut some corners. Perfection is an endless path. If you have to fill a vase with rocks, sand and water, you will most likely start with the rocks then the sand and then with the water if the effort is inverse proportional to the size no? Yes it might be more interesting to optimize cool things and advances features but most likely they aren't part of the basic blocks required to allow your project to move to the next step.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;What is the point of having half a perfect solution if you could have done a imperfect full solution&lt;/span&gt;. I am not saying that all scientists need of perfection leads them to lose the big picture and engineer aren't perfectionist but simply that bias engineer system vision leads them to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;gage&lt;/span&gt; better when it is time to look for perfection. Time kill projects and over-perfection can drag too much of it...but perfection should remain the goal.&lt;/div&gt;&lt;div&gt;Yes I am generalizing and simplifying but you get the big picture. Define your priorities and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;assign &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;resource&lt;/span&gt; accordingly. So, am I a engineer or a scientist or a little of both? since my manager told my I was more a scientist, I should be a little of both...&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-9116527178734839360?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/9116527178734839360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/05/essay-engineering-vs-scientist.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/9116527178734839360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/9116527178734839360'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/05/essay-engineering-vs-scientist.html' title='Short Essay: Engineering vs Scientist'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-217591021549754773</id><published>2009-04-20T21:01:00.000-07:00</published><updated>2009-05-14T19:33:28.565-07:00</updated><title type='text'>Montreal Python6 &amp; Peer Programming</title><content type='html'>&lt;a href="http://montrealpython.org/?p=46"&gt;Montreal Python 6&lt;/a&gt; demo packaging and UI major improvements are the results of a peer programming with apt-get install &lt;a href="http://ygingras.net/"&gt;ygingras.&lt;/a&gt; In this world where time is the biggest constraint, I could not finalized some of the demo improvements and packaging without help. &lt;a href="http://bitbucket.org/fraka6/"&gt;bitbucket&lt;/a&gt;, the mercurial host projects has been very useful to store demo parts (i.e.: flayers, mlboost and digipy). I am not working often off-line, but been able to commit in the plane or in the bus, exchange dundles and create branches easily has very useful.&lt;br /&gt;You can play with the demo, just type: &lt;blockquote&gt;easy_install digipy (on your favorite linux distribution)&lt;br /&gt;&lt;/blockquote&gt;Simply type digipy and tab to see all digipy programs used in the live demo (i..e: use --help to get more details). I have been impress by the powerful setup.py related distutil tools of python to create packages (sdist, register, upload to push code on the &lt;a href="http://pypi.python.org/pypi"&gt;Python Package Index&lt;/a&gt; is just GREAT!)&lt;br /&gt;&lt;a href="http://pypi.python.org/pypi/virtualenv"&gt;Virtual Environment&lt;/a&gt;, &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;&lt;/span&gt;&lt;/tt&gt;a tool to create isolated Python environments, of Ian Biking has been really usefull to test the packages.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Peer programing is the type of approach that can bring the productivity of your team from the sum of the productivity to the multiplication of its individual or a best to the team member count exponential relationship. Peer programming has allow me to get out fast of many extreme time consuming techical show stoppers that were burning out my too little available time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-217591021549754773?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/217591021549754773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/217591021549754773'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/04/montreal-python6-peer-programing.html' title='Montreal Python6 &amp; Peer Programming'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-5056286841618786203</id><published>2009-03-29T20:34:00.000-07:00</published><updated>2009-04-02T21:49:38.913-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pycon6'/><title type='text'>Highlights Pycon Chicago 2009</title><content type='html'>My short trip to pycon 2009 just confirmed my choice. This community is living and has a powerful momentum. Guido, the python father, mentioned that the 3 most important things are: &lt;span style="font-weight: bold;"&gt;community, community and community&lt;/span&gt;. What he started 19 years ago seems to take over.&lt;br /&gt;The simple python syntax lead everyone to converge to it: pypy, jpython,cpython and IronPython. Alex Martelli talk on &lt;a href="http://www.aleax.it/pycon_abst.pdf"&gt;abstraction as a leverage&lt;/a&gt; was great: abstraction is inevible; try to understand at least 2 lower layers and create hook instead of hacks! (I am already applying it for the &lt;a href="http://bitbucket.org/fraka6/mtlpy6/"&gt;demo&lt;/a&gt; of python-montreal).&lt;br /&gt;The frameworks for the web development is getting quite amazing (Django, Whirldwind, pylons etc.)&lt;br /&gt;The &lt;a href="http://nedbatchelder.com/text/whirlext.html"&gt;talk&lt;/a&gt; &lt;span style="font-weight: bold;"&gt;" A Whirldwind Excursion through C Extensions" &lt;/span&gt;of Ned Batchelder was great to get a quick start on own to create C extension; yes python is slow and optimization is sometime inevitable.&lt;br /&gt;The panel on &lt;span style="font-weight: bold;"&gt;Object Relational Mapper&lt;/span&gt; and the talk on &lt;span style="font-weight: bold;"&gt;Drop ACID and think about data&lt;/span&gt; were quite interesting. The keynote presentation by &lt;a href="http://www.reddit.com"&gt;reddit &lt;/a&gt;founders is a good example that python provides amazing tools to spine out web application companies. &lt;br /&gt;The concept of the evening lightning talks and open discussions on topic of interest was showing the dynamism of the python community. I went to an open discussion on parallel computing and people are moving to python. Now that the process lib has been integrate in 2.6, Twisted, Thrift, PyMPI, Numpy, Scipy power computing with python will expend.&lt;br /&gt;I am glad that &lt;a href="http://ygingras.net/"&gt;Yannick&lt;/a&gt; convinced me to attend. I think that I will attend to the tutorial next time and some Sprint to ensure the maximum knowledge assimilation.&lt;br /&gt;During this small trip, I tried the mini laptop &lt;a href="http://onlinegadgetbox.blogspot.com/2009/03/asus-launches-eee-pc-1008-ha-mini.html"&gt;eee ha&lt;/a&gt; but I brought it back, you should buy the HE: the right shift is at the right place and the battery last longer.  Pycon was inspiring !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-5056286841618786203?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/5056286841618786203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/03/highlights-pycon-chicago-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/5056286841618786203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/5056286841618786203'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/03/highlights-pycon-chicago-2009.html' title='Highlights Pycon Chicago 2009'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-4730759738347648808</id><published>2009-03-23T18:38:00.000-07:00</published><updated>2009-03-23T18:40:19.462-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Research Machine Learning Information Management Back-propagation Contrastive Divergence'/><title type='text'>Research, information management, contrastive divergence, no free lunch theorem, non-parametric...all related</title><content type='html'>During my master studies, I had to take a course on &lt;span style="font-style: italic;"&gt;Research Methodology&lt;/span&gt; which introduced me to an interesting concept of &lt;span style="font-style: italic;"&gt;information management&lt;/span&gt;. With our limited brain capacity, more you read papers about others ideas, less space is available for your own ideas and &lt;span style="font-style: italic;"&gt;enforce other assumptions, vision and models&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;In practice, great researcher are aware of this consequence of the &lt;span style="font-weight: bold;"&gt;no free lunch theorem&lt;/span&gt; and try to keep of good balance of papers reading and research exploration. By simply applying the&lt;span style="font-weight: bold;"&gt; contrastive divergence &lt;/span&gt;concept of your approach, you can gage your distance to the trend and get a estimation of the impact of a possible discovery.&lt;br /&gt;The Research Machine Learning community, as most other community, has the tendency to recruit top grades students that are use to follow exactly the line of thoughts of their teachers. This long training process is, according to me, extremely damaging to the training of the researcher capacity (i.e.: suboptimal cost function). This explain why most of the master student are researcher cheap labor driving force because they can only experiment others ideas with minor contributions.&lt;br /&gt;Top researchers allow their formal students to follow their own line of thoughts or if they have no specific ideas, suggest ideas. I won't have done a research master without this freedom, thanks &lt;a target="_blank" href="http://www.iro.umontreal.ca/%7Ebengioy/yoshua_en/index.html"&gt;Yoshua&lt;/a&gt;!&lt;br /&gt;So, if you want to impact the most your community, limit the number of papers your are reading, make your own ideas and play with your concepts to train your own intuitions of the unknown guiding rules you are looking for.&lt;br /&gt;&lt;br /&gt;You might say, what's your contributions, I haven't heard about it. My contribution is that I have build experimental proof of back-propagation optimization fundamental problems and build the skeleton of top level explanations. Usually, we don't publish this type of results until you find a solution to the problem which, unfortunately, I haven't reach but, it is coming slowly; it is a long process and I learned to be patient.&lt;br /&gt;&lt;br /&gt;So, if you want to impact the most your community, limit the number of papers your are reading to ensure you don't constrain yourself to others models. &lt;span style="font-weight: bold;"&gt;Why using a parametric model that limits your solution space? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can trust the collective research discovery learning process that ensure the evolution of the human kind because someone will find it or, use it to increase the likelihood your will make a important discovery (i.e.: use it as a contrastive divergence cost function). If everyone was applying this strategy or cost function, I am pretty sure we will evolve faster. In order to move to this step, we will need to encourage failure strategy publications to ensure other don't wast time reproducing the same ideas but this could be elaborated in another thread post that involve a society evolution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Traders knows about this simple strategy, buy low, sell high, don't follow the trend, take risks. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-4730759738347648808?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/4730759738347648808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/03/research-information-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4730759738347648808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4730759738347648808'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/03/research-information-management.html' title='Research, information management, contrastive divergence, no free lunch theorem, non-parametric...all related'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-8505182964236071442</id><published>2009-03-15T21:13:00.000-07:00</published><updated>2009-03-16T20:26:02.716-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pycon Python Conference'/><title type='text'>Pycon 2009 Chicago</title><content type='html'>It is about time the see the real face of this python community. I will attend to &lt;a href="http://us.pycon.org/2009/about/"&gt;pycon 2009&lt;/a&gt;.&lt;br /&gt;In 3 days, I expect to learn more things then I have learned in the last 6 months and met pationated peoples.  Here are some of the talks I will attend:&lt;br /&gt;&lt;a class="eventinfo" id="TT24" href="http://us.pycon.org/2009/conference/schedule/event/24/" __doclobber__="true"&gt;Designing Applications with Non-Relational Databases (#16)&lt;/a&gt;&lt;br /&gt;&lt;a class="eventinfo" id="TT16" href="http://us.pycon.org/2009/conference/schedule/event/16/" __doclobber__="true"&gt;How Python is Developed (#116)&lt;/a&gt;&lt;br /&gt;&lt;a class="eventinfo" id="TT28" href="http://us.pycon.org/2009/conference/schedule/event/28/" __doclobber__="true"&gt;Twisted, AMQP and Thrift: Bridging messaging and RPC for building scalable distributed applications (#40)&lt;/a&gt;&lt;br /&gt;&lt;a class="eventinfo" id="TT31" href="http://us.pycon.org/2009/conference/schedule/event/31/" __doclobber__="true"&gt;Introduction to Multiprocessing in Python (#6)&lt;/a&gt;&lt;br /&gt;&lt;a class="eventinfo" id="TT33" href="http://us.pycon.org/2009/conference/schedule/event/33/" __doclobber__="true"&gt;The State of the Python Community: Leading the Python tribe (#118)&lt;/a&gt;&lt;br /&gt;&lt;a class="eventinfo" id="TT62" href="http://us.pycon.org/2009/conference/schedule/event/62/" __doclobber__="true"&gt;Google App Engine: How to survive in Google's Ecosystem (#53)&lt;/a&gt;&lt;br /&gt;&lt;a class="eventinfo" id="TT35" href="http://us.pycon.org/2009/conference/schedule/event/35/" __doclobber__="true"&gt;A Whirlwind Excursion through Writing a C Extension (#68)&lt;/a&gt;&lt;br /&gt;&lt;a class="eventinfo" id="TT75" href="http://us.pycon.org/2009/conference/schedule/event/75/" __doclobber__="true"&gt;Abstraction as Leverage (#110)&lt;/a&gt;&lt;br /&gt;&lt;a class="eventinfo" id="TT85" href="http://us.pycon.org/2009/conference/schedule/event/85/" __doclobber__="true"&gt;A winning combination: Plone as a CMS, your favorite Python web framework as a frontend (#100)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-8505182964236071442?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/8505182964236071442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/03/pycon-2009-chicago.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8505182964236071442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8505182964236071442'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/03/pycon-2009-chicago.html' title='Pycon 2009 Chicago'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-2866901134547908943</id><published>2009-03-15T21:05:00.000-07:00</published><updated>2009-03-16T20:54:26.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='waterfall'/><category scheme='http://www.blogger.com/atom/ns#' term='greedy'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='local minima'/><title type='text'>Greedy agile, waterfall and local minima</title><content type='html'>Everyone in the agile world can't contain their words about waterfall inadaptation to real world software projects. I have to admit, I am a fan of XP, scrum and most of agile approaches in general but I feel that people are loosing the big picture provided by the waterfall framework. Agile is kind of a greedy approach that lead you to local minimum where you are stuck too often. I would like to see someone creating value and velocity cost trade off of short term decisions. Those decisions are ofter push through agile methodology without questioning. Currently, at pivotalpayments, we are stuck in a huge local minimum created by such an approach and it will take such an effort to get out of it. The velocity created by a design choice taken long time ago was emazing at firt but it is slowing us doing now so much now. A major refactoring is required and we will stop development for some iterations. At least Agile adapts and give you the illusion of the optimal path...but everyone should know that the greedy approach isn't the optimal one and that looking at your feet won't help much going to your destination.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-2866901134547908943?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/2866901134547908943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/03/greedy-agile-waterfall-and-local-minima.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2866901134547908943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2866901134547908943'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/03/greedy-agile-waterfall-and-local-minima.html' title='Greedy agile, waterfall and local minima'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-249910325836944175</id><published>2009-03-04T21:55:00.000-08:00</published><updated>2009-03-04T22:00:26.202-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Montreal Python Demo Machine Learning'/><title type='text'>Montreal Python 6: 2009-04-14; Machine Learning empowered by Python</title><content type='html'>It is now official, I will do the &lt;a href="http://montrealpython.org/?p=46"&gt;next Montreal-Python presentation&lt;/a&gt;. I will be back from holiday the 13, I hope I wont get flight problems.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Our main presenter will be &lt;a href="http://fraka6.blogspot.com/"&gt;Francis Piéraut&lt;/a&gt; on Machine Learning empowered by Python as announced during the &lt;a href="http://www.slideshare.net/fpieraut/mlpythonmtlintrofeb09-1081676" target="_blank"&gt;flash&lt;/a&gt; introduction in Montreal-Python 5.&lt;br /&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt; Machine Learning is a subfield of AI that considers learning patterns from existing data. Related applications are increasing in many fields where adaptive systems are needed, like fraud detection, face recognition, recommendation systems, disambiguation systems, insurance risk estimation, web traffic filtering, voice recognition, and many others.&lt;/p&gt; &lt;p&gt; The first part of this presentation will cover the basics of machine learning; in the second part, we will dive into a real example and see the complete process of using machine learning to create a real-time digit recognition system using &lt;a href="http://sourceforge.net/projects/mlboost"&gt;Mlboost&lt;/a&gt;, a python library. The practical approach should allow the audience to assimilate the most important concepts of machine learning and the critical need for data preprocessing.&lt;/p&gt; &lt;p&gt;   After a Software Engineer degree, Francis Piéraut made a research master in Machine Learning at &lt;a href="http://www.iro.umontreal.ca/rubrique.php3?id_rubrique=27&amp;amp;lang=en"&gt;LISA&lt;/a&gt;. During his research work, he developed flayers, a powerful C++ neural network library. During the beginning of his career, his spend several years in Montreal startups companies applying Machine Learning and statistical AI related solutions. In 2005, he released the first version of MLboost, a python library that allows him to speedup his Machine Learning projects by simplifying data preprocessing, features selection and data visualization.&lt;/p&gt; &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-249910325836944175?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/249910325836944175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/03/montreal-python-6-2009-04-14-machine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/249910325836944175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/249910325836944175'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/03/montreal-python-6-2009-04-14-machine.html' title='Montreal Python 6: 2009-04-14; Machine Learning empowered by Python'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-6766259798392234055</id><published>2009-03-04T19:38:00.000-08:00</published><updated>2009-03-16T19:40:21.209-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cost Function Quebec'/><category scheme='http://www.blogger.com/atom/ns#' term='Adaptation'/><title type='text'>Essay on Adaptation, leaky cost function and online Learning...a society analogy</title><content type='html'>I fall on the Paul Graham article on &lt;a href="http://www.paulgraham.com/cities.html"&gt;cities and ambition&lt;/a&gt; and it made my think of writing this blog on adaptation, leaky cost function, online learning and an analogy to the sinking French Quebec society.&lt;br /&gt;&lt;br /&gt;To make the bridge with the 3 first concepts, I will use a analogy with the Quebec society.&lt;br /&gt;&lt;br /&gt;In order the learn, we need adaptive systems as Neural Networks. In online learning, the adaptation capacity should stay constant along the time. Local minimums can screw you up but let's ignore it for the time been.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Quebec society analogy intro&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to understand my analogy with the society I live in, I want to share some of my reflexions about the puzzle to understand the Quebec Society. I am born in France and I migrated to Quebec at 9 years olds. During the last 5 years, I tried to elucidate my profound incomprehension of the deep ambitions of the French Quebec Society, if they have some;). According to me, it seems to be a leaky cost function assumption that lead them to their stagnation, coming assimilation and their slow extinction.&lt;br /&gt;&lt;br /&gt;To understand my point of view, we need to elaborate on key concepts which are adaptation, equality versus inequality and education access.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Adaptation pros and cons&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold"&gt;, local minimal and ambition&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Adaptation is one of the greatest ability of the human kind but also one of the worst. Adaptation to mediocrity can be a survival strategy to get through hard time but getting use to it reflects true low ambitions or incapacity to do online learning. The Quebec nation seems to have this disease.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Quebec people accept staying in a destructive mode seen 1982, a constitutional status quo that lead to politic instability, economic stagnation and reduced political power by excluding them self from the Canadian power with the Bloc Quebecois for too long. &lt;/li&gt;&lt;li&gt;Quebec people accept the status of a sub nation (nation inside the Canada).&lt;/li&gt;&lt;li&gt;Quebec people accept mediocre governments, mediocre public transport systems, way too expensive and inefficient heath system, highest taxes in north america etc. &lt;/li&gt;&lt;/ul&gt;Quebec people seems to have no real will for improvement, it is doing the job (you should see &lt;a href="http://www.imdb.com/title/tt0123730/"&gt;"Le confort et l'indifférence"&lt;/a&gt;). In the machine learning point of view, is that a local minimal? What is the problem with Quebec society cost function? Is that only the lack of ambition? Knowing that close to half of the population have voted for the separation of Canada in the 95 referendum, it might shadow something more rooted to the French culture.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Cost function assumption : Equality versus inequality&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;From an anthropology point of view, French nuclear family lead to a conception of a world of equality (see &lt;a href="http://www.amazon.fr/Lillusion-economique-Todd-Emmanuel/dp/2070410587"&gt;Emmanuel Todd&lt;/a&gt;). to simplify, everyone should have the same chance, same access to education, same heath services and so on.&lt;br /&gt;The Anglos-Saxon culture lead to the conception of an inequality world. The inequality conception lead people to work harder knowing there is no lower boundary and they can go deeper if they are too lazy.&lt;br /&gt;Knowing we are born unequal, Anglos-axon assumption conception seems to be better adapted to human kind reality. On the other hand equality lead to an education level increase of the society indepedandly of the economy which as lot of pros and cons. &lt;br /&gt;Why equality is a weak assumption? Equality can stand in rich societies because they can afford it. Unfortunately, Quebec society is getting poorer and its population is disadvantaged by its illusion of equality that leaks from everywhere (i.e.: health system, education, public kid garden etc.)&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Missing link: Education and production of wealth &lt;/span&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Quebec has the most affordable access to education in north America and few take advantage of it. Anyone knows that the more educated is your society, the more productive and healthy she will be and the more accessible the utopia of an equality world can be possible. By using education to get more productive, a society will create wealth and can afford utopia as the equality concept. French society seems to miss this key point.&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;French Quebec society is dying and the Anglo-Saxon supremacy should take over&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The leaky equality concept and the low ambition of the Quebec society seems to lead this society to online learning incapacity, its incapacity to adapt further. This incapacity leads to its extermination by the growing assimilation to the Anglo-Saxon supremacy of its global cost function model. Inequality based cost function seems to be better adapted for a society that want to stay alive.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Wrap up (it is time to conclude)&lt;/span&gt;&lt;br /&gt;Leaky cost function assumption can lead online learning to adaptation incapacity like been stuck in a local minimal as a slow death as the French Quebec nation folklorisation current process. It is simply the evolution, a Darwin consequence, who can't adapt simply die. Facing reality makes life easier.&lt;br /&gt;The most important thing is that the cost function should reflect your goals. If you have a supervisor, try to get a good estimation of its cost function because it will simplify your ascention everywhere.&lt;br /&gt;&lt;br /&gt;Quebec French culture creates a huge retention for me to stay in montreal but I wish Montreal a better drive for machine learning, startups as you can get in California. Montreal is simply sub-exploited. Don't take my words for granted, it is an essay. Make you own judgement from your own eyes and &lt;a href="http://www.brepettis.com/blog/2009/3/3/the-cult-of-done-manifesto.html"&gt;exploration&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-6766259798392234055?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/6766259798392234055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/03/essay-on-adaptation-leaky-cost-function.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6766259798392234055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6766259798392234055'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/03/essay-on-adaptation-leaky-cost-function.html' title='Essay on Adaptation, leaky cost function and online Learning...a society analogy'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-800919531258000745</id><published>2009-02-24T20:16:00.000-08:00</published><updated>2009-03-03T22:02:38.376-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Leaky assumptions leaky abstraction Gradient Descent Machine Learning'/><title type='text'>Leaky assomptions and Gradient Descent</title><content type='html'>Theoretical models are based on strong assumptions as software layers (i.e.: leaky abstractions). Layers are created to simplify complex systems and allows work specialization as define in Marx capital approach...and to accomodate limited human brain capacity.&lt;br /&gt;Experienced practitioners know that their value reside in weak assumptions dept comprehension because market will hire new grade students otherwise.&lt;br /&gt;&lt;br /&gt;Standard backpropagation gradient descent algorithm assumes that inputs are independent so we can optimize them independently of each other. This assumption or according to me a &lt;a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html"&gt;leaky abstraction&lt;/a&gt;, allows you to optimize all parameters at the same time which simplify the life of software engineers and researchers because parameters are theoritically uncorrelated. In mathematical works, we are assuming that the &lt;a href="http://en.wikipedia.org/wiki/Hessian_matrix"&gt;hessien&lt;/a&gt; matrix has values only on its diagonal.&lt;br /&gt;&lt;br /&gt;My master thesis done under &lt;a href="http://www.iro.umontreal.ca/%7Ebengioy/yoshua_en/index.html"&gt;Yoshua Bengio&lt;/a&gt; supervision was mostly focusing on understanding huge neural networks training inefficiency. At that time, our goal was to train neural network language models. According to my undertanding and the experimental proof that I have documented, the problem is basically an optimization problem. The uncorrelated assumption simplification doesn't stand when parameters numbers explode.&lt;br /&gt;Unfortunatly, I have failed to find a solution to this problem but the new trend in reaction to &lt;a href="http://www.youtube.com/watch?v=AyzOUbkUf3M"&gt;Hinton break throught&lt;/a&gt; in 2006 will and is already reviving &lt;a href="http://jmlr.csail.mit.edu/papers/volume7/MLOPT-intro06a/MLOPT-intro06a.pdf"&gt;research&lt;/a&gt; in this topic.&lt;br /&gt;&lt;br /&gt;In my literatude review, I found that several researchers identified some of the reasons who can explain this inefficiency. According to me, they are direct and indirect consequences of the optimization problem introduced by the leaky abstraction of uncorrelated inputs.  Those reasons are &lt;span style="font-weight: bold;"&gt;the moving target&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; problem&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;the attenuation and dilution of the error&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; signal&lt;/span&gt; as it is propagates backward through the layers of the network. We present in my master thesis other reasons who can explain this behavior,&lt;span style="font-weight: bold;"&gt; the opposite gradients problems&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;the&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; non-existence of a specialization mechanism&lt;/span&gt; and the &lt;span style="font-weight: bold;"&gt;symmetry problem&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I will treat those concepts in a futur post. This inspiration of this post has been possible because of a brainless Hollywood movie that has allow me to free valuable brain cycles. there is always a good side of the story.&lt;br /&gt;&lt;br /&gt;Newton law doesn't stand in Einstein theory as uncorrelated inputs in huge neural networks. Always remember your leaky assumptions/abstractions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-800919531258000745?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/800919531258000745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/02/leaky-assomption-and-gradient-descent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/800919531258000745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/800919531258000745'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/02/leaky-assomption-and-gradient-descent.html' title='Leaky assomptions and Gradient Descent'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-3156490015439250492</id><published>2009-02-09T20:45:00.000-08:00</published><updated>2009-02-09T21:43:20.704-08:00</updated><title type='text'>cygwin or mingw to compile C++ swig projects on windows?</title><content type='html'>The answer is definitely &lt;a href="http://www.mingw.org/"&gt;mingw&lt;/a&gt;. 4 simple steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;download swig&lt;/li&gt;&lt;li&gt;download mingw&lt;/li&gt;&lt;li&gt;add python, swig, mingw to environment variable PATH&lt;br /&gt;&lt;/li&gt;&lt;li&gt;do: &lt;span style="font-style: italic;"&gt;python setup.py build_ext --inplace --compiler=mingw32&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;I have been able to compile it easily with cygwin but I had to download shit load of stuff and I haven't figure out how to use python windows packages and cygwin python package all togetter which was a show stopper for me.  &lt;br /&gt;&lt;br /&gt;Why was I looking to compile my C++ project on windows?  &lt;br /&gt;&lt;br /&gt;I want to use my C++  machine learning lib  on a real-time video and the only package that  was working  to grab images in python was &lt;a href="http://videocapture.sourceforge.net/"&gt;videocapture&lt;/a&gt; but it is only supported on windows. Now I have to compile my machine learning on windows...&lt;br /&gt;&lt;br /&gt;If you want to compile swig C++ project, you need a compiler. If you don't have VisualC++, you are stuck with this error:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;error: Python was built with Visual Studio 2003;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;extensions must be built with a compiler than can generate compatible binaries.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Visual Studio 2003 was not found on this system.  If you have Cygwin installed, you can try compiling with MingW32, by passing" -c mingw32" to setup.py. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;At this point, you can try to download free visual C++ compiler or try mingw32 with sigwin.  I tried a  free visual studio 2003 package but I couldn't make it working. Then, I try cygwin with gcc and it was compiling but I couldn't use the compiled package outside cygwin.  so I tried mingw32. The -c option doesn't work and "python setup.py build --compiler=mingw32" doesn't allow you to use your package inside python (i.e.: can't import _flayers in my context).  Finally I tried &lt;span style="font-style: italic;"&gt;python setup.py build_ext --inplace --compiler=mingw32  &lt;/span&gt;and it was working.&lt;br /&gt;&lt;br /&gt;After a chat with Simon and Tristan&lt;a href="http://http://www.sat.qc.ca/"&gt;&lt;/a&gt; that are doing video stuff on linux at the&lt;a href="http://http//www.sat.qc.ca/"&gt; SAT&lt;/a&gt;, I discovered that they were grabbing video on Linux. They referred me to &lt;a href="http://www.jperla.com/blog/2007/09/26/capturing-frames-from-a-webcam-on-linux"&gt;opencv &lt;/a&gt;which works perfectly. In my experimentation with opencv, I realized that Pygame is a million time faster to display video then matplotlib.&lt;br /&gt;&lt;br /&gt;Swig, Mingw, OpenCV make Python so convenient!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-3156490015439250492?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/3156490015439250492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/02/cygwin-or-mingw-to-compile-c-swig.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3156490015439250492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/3156490015439250492'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/02/cygwin-or-mingw-to-compile-c-swig.html' title='cygwin or mingw to compile C++ swig projects on windows?'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-8756015705410094647</id><published>2009-02-06T22:21:00.000-08:00</published><updated>2009-02-07T12:42:11.157-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startups Gradient Learning'/><title type='text'>Startups and faster Learning</title><content type='html'>Every one that is familiar to &lt;span style="font-style: italic;"&gt;gradient descent&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;Machine Learning&lt;/span&gt; knowns that learning is proportional to the error.  Bigger are the errors, bigger are the possibility to learn something. According to me, startups, by nature,  are the ideal environments to put yourself in hight gradient learning situations. It force you to try much more things, take more risk and innovate to survive if you don't want to have no choice to look for another job and/or get penny stocks options.  Another interesting thing is that true nature of people appear and mask fall rapidly. Friendships are tested to its limits and it allows you to filter out short term life partner.&lt;br /&gt;&lt;br /&gt;Don't forget that high gradient put high constraints to your body and frustrations has to be released somehow. In my case, cycling has been used as stress balancing vehicle, you have to find yours. Resigning is too often chosen as the latest resort. You have to keep in mind that everyone is replaceable, even in startups. If you really want to be rich, you should do the Californian technique: cumulate stocks of multiple startups. don't forget that most of them (~90-95%) fail badly, so increase your chances by switching before reaching burnout and build your contacts network by the same way. After the graduation is definitely the best time to try this fast growing experience when you can take it. On my side, I tried it 5-6 years, you have to know your limits. Successful startups have workaholic CEO so it will increase the pressure and the gradient. If he isn't one, find another one, it should be the 19 mistakes of startups (&lt;a href="http://www.paulgraham.com/startupmistakes.html"&gt;18 mistakes of startups&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;If you have the chance to access higher decision position, you learn that there are irrational error cost function and that you might be optimizing the wrong error criteria. For the ones who aren't following me, I recommend that you see the French movie &lt;a href="http://www.imdb.com/title/tt0875113/"&gt;99 Francs&lt;/a&gt; and pay further attention the the high executive meeting.&lt;br /&gt;&lt;br /&gt;I apply the same principle with my son this winter, he doesn't want to put his gloves, he learn/change his mind faster at -10 degrees Celsius.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-8756015705410094647?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/8756015705410094647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/02/startups-and-faster-learning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8756015705410094647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/8756015705410094647'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/02/startups-and-faster-learning.html' title='Startups and faster Learning'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-6877150259157029338</id><published>2009-02-01T20:10:00.000-08:00</published><updated>2009-02-07T12:36:08.222-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mlboost open source'/><title type='text'>MLboost 0.3 has been released</title><content type='html'>I am please to announce the release of &lt;a href="http://sourceforge.net/projects/mlboost"&gt;MLboost&lt;/a&gt; 0.3. MLboost 0.3 will be use for the next &lt;a href="http://montrealpython.org/"&gt;Montreal-Python&lt;/a&gt; presentation ("Machine Learning enpowered by Python"). It will be announced in the coming weeks. The most important new feature is the integration of pyflayers. pyflayers is a simplified python swig interface to flayers, my C++ neural networks library. I am preparing a live real-time demo of a machine learning application, it should be interesting for the audience and it is good motivation to improve my package. I have played with &lt;a href="http://latex-beamer.sourceforge.net/"&gt;beamer&lt;/a&gt;, a latex package to create presentation slides and I have been particularly been pleased, I do recommend it. On the other hand, it is time to prepare the next winter camping trip and to continue eating &lt;a href="http://www.restaurantaupieddecochon.ca/"&gt;great food&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-6877150259157029338?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/6877150259157029338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/02/mlboost-03-has-been-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6877150259157029338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6877150259157029338'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/02/mlboost-03-has-been-released.html' title='MLboost 0.3 has been released'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-6130112705352357952</id><published>2009-01-05T18:57:00.000-08:00</published><updated>2009-03-04T21:53:42.727-08:00</updated><title type='text'>The No Asshole Rule Fraka6 review</title><content type='html'>During Christmas time off, I finished &lt;a href="http://www.amazon.com/Asshole-Rule-Civilized-Workplace-Surviving/dp/0446526568"&gt;"The No Asshole Book"&lt;/a&gt; from Robert I. Sutton. I fall on this book by the time is was looking for the "Art Of War" for a gift. At first, I taught it was a mistake and that it will end up been a light or low content reading but it was extremely interesting. The book treats:&lt;br /&gt;&lt;ul&gt;&lt;li style="font-weight: bold;"&gt;How to identify a real asshole&lt;/li&gt;&lt;li&gt;The damage of keeping Assholes&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;How to implement the No Asshole Rule&lt;/li&gt;&lt;li&gt;How to stop inner jerk from getting out (yes it get out sometimes)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;How to survive when assholes reign&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Yes I am a powerful Asshole (I was checking if you were really reading;)&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Having spend 5 years in startups environment, I should have read this book before because high stress environment leads people to act as asshole and applying some of this ideas can help you surviving this jungle. Out of 4 startups, I had to deal with 3 places where asshole behavior was destroying my productivity. Only one place had a&lt;span style="font-weight: bold;"&gt; certified asshole &lt;/span&gt;(not a temporary one; no it isn't Eric). What I like about high educated environment is that people are more likely to stand up and make changes happening. I saw one of my supervisor been fired after I stand up and another been fired on the side after I left which is overall very encouraging. What I learned from this book is that once, I have waited  way too much time before changing jobs because I didn't realized soon enough that I was simply wasting my time. There is times where fighting is useless and it simply drains you down and lead you to act sometimes as an asshole yourself to keep you breathing (don't forget small wins first). Good faith is sometime useless, as Robert enforce: &lt;span style="font-weight: bold;"&gt;Hope for the Best; Expect the Worst &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;Change the way you seen things (Reframing&lt;/span&gt;). Reframing refer to developing indifference and emotional detachment. As highlighted, people tend to recruit high passioned people but it isn't a so good idea because it leads them to irrational decisions that can have critical impacts.&lt;br /&gt;&lt;br /&gt;The book doesn't treat one point that high technical people forget. For most company, &lt;span style="font-weight: bold;"&gt;market drives the show&lt;/span&gt;, not the technology, so you have less power then you think. &lt;span style="font-weight: bold;"&gt;This market lead to more politics&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;assholes are good at this game&lt;/span&gt;. Politics is often use to shadow increasing incompetency because they don't focus on what they should be doing. You have to better understand politics games but according to me, the more politics the more incompetency by square foot is expected.&lt;br /&gt;&lt;br /&gt;This make me remember &lt;a href="http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1230690432&amp;amp;sr=8-1"&gt;Joel On Sotware&lt;/a&gt; book, most years top companies don't last, only a few survive in the top n after many years. I am pretty sure those company apply the &lt;span style="font-weight: bold;"&gt;No Asshole Rule&lt;/span&gt; because if they don't do so, long term they get back what they desire because they are &lt;span style="font-weight: bold;"&gt;infected by reproduced assholes&lt;/span&gt; that blame each other by the time all top people leave.&lt;br /&gt;&lt;br /&gt;People forget that &lt;span style="font-weight: bold;"&gt;power pass by empowering others&lt;/span&gt;. This power isn't a sum but can't be exponential with teams that have a great synergy. Open source is a great example.&lt;br /&gt;&lt;br /&gt;This book is highly recommended. I will suggest it to my manager, one of the few manager that understands what a manager should be doing.&lt;br /&gt;&lt;br /&gt;But what is an Asshole, the standard definition is something like that: insulting terms of address for people who are stupid or irritating or ridiculous.  According to the book Asshole follow 2 rules:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;After spending time with them you feel de-energize, humiliated etc.&lt;/li&gt;&lt;li&gt;Asshole are more polite with more powerful people and are worst with lower level people.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Don't forget, &lt;span style="font-weight: bold;"&gt;be slow to brand certified asshole&lt;/span&gt;. To get the certified brand, you simply have to be constant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-6130112705352357952?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/6130112705352357952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2009/01/no-asshole-rule-fraka6-review.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6130112705352357952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/6130112705352357952'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2009/01/no-asshole-rule-fraka6-review.html' title='The No Asshole Rule Fraka6 review'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-1453080807149307526</id><published>2008-12-30T19:57:00.000-08:00</published><updated>2008-12-30T21:35:04.494-08:00</updated><title type='text'>Sip vs Swig?....Swig</title><content type='html'>&lt;a href="http://ygingras.net/"&gt;Yannick&lt;/a&gt; suggested me to try &lt;a href="http://www.riverbankcomputing.co.uk/software/sip/download"&gt;sip&lt;/a&gt; before getting too far with swig. I have followed religiously the &lt;a href="http://www.riverbankcomputing.co.uk/static/Docs/sip4/sipref.html"&gt;doc&lt;/a&gt; but I haven't been able to make it working with my lib. I stopped at the same level of complexity of what I have reached with swig (&lt;=1.5 hrs to make it working with flayers).  &lt;span style="font-weight: bold;"&gt;sip -c . pytrainer.sip&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sip: Trainer is undefined&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Basically, sip can't find my class Trainer and I haven't find any doc about it neither clear mailing list answers.&lt;br /&gt;&lt;br /&gt;I have try the configure.py too but I get the error that I don't get with their example (in both case .sdf file doesn't exist).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Error: Unable to open "pytrainer.sbf": [Errno 2] No such file or directory:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;'pytrainer.sbf'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Conclusion:&lt;br /&gt;Swig is my choice at this point because it is simple to use, well documented and simply works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-1453080807149307526?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/1453080807149307526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2008/12/sip-ws-swig.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1453080807149307526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/1453080807149307526'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2008/12/sip-ws-swig.html' title='Sip vs Swig?....Swig'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-566761998737835282</id><published>2008-12-26T21:14:00.000-08:00</published><updated>2008-12-28T08:52:01.993-08:00</updated><title type='text'>Why I have switch to Python?</title><content type='html'>In 2005, by the time I was working as a "Machine Learning Specialist" at Coradiant, I had to do lot of preprocessing. At that time, I was doing more data-mining then machine learning. The fundamental difference is that machine learning use model to do prediction and data-mining use mostly model to understand links between variables (no prediction is required). In order to do my work, I chose Matlab because I love their visualization functionality and it contains  a machine learning package that includes a Decision Tree module that was perfectly suits my need to do root causes analysis. Unfortunately, Matlab is a disaster to do preprocessing and this task was representing the biggest part of my work on that project and C++ isn't better. &lt;a href="http://www.iro.umontreal.ca/%7Eeckdoug/"&gt;Doug Eck&lt;/a&gt;, a Music and Machine Research consultant, introduced me to Python to help me doing the preprocesssing work. What a discovery! A year later, I released the first alpha version of &lt;a href="http://sourceforge.net/projects/mlboost/"&gt;mlboost&lt;/a&gt;.&lt;br /&gt;Later, I worked on a real machine learning task, building a bot detector that give a bot probability base on sessions information. Without python and mlboost, our real-time bot detector prototype would had never be a reality within a so tight schedule.&lt;br /&gt;&lt;br /&gt;Later, with the discovery of numpy, scipy, matplotlib (with pylab interface, you get the same api as matlab), python-mysql and ipython, I don't need anymore matlab. With &lt;a href="http://pydev.sourceforge.net/"&gt;pydev&lt;/a&gt; eclipse plugging, I have a powerful python development environment.&lt;br /&gt;&lt;br /&gt;So basically, I have switch to python because:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I can do extreme prototyping at a speed that I have never seen&lt;/li&gt;&lt;li&gt;I have an amazing community (matplotlib, pydev, scipy etc.)&lt;/li&gt;&lt;li&gt;The language amazing syntax allows me to write code with minimal number of lines in an elegantly and readable way (ex: list comprehension, *argv, **args, mocking etc.)&lt;/li&gt;&lt;li&gt;The simplicity I can do wrapper with non python libraries (ex: swig)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Here is interesting links:&lt;br /&gt;&lt;a href="http://www.larssono.com/musings/matmatpy/index.html"&gt;Matematica vs Matlab vs Python (same fct comparison code)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.larssono.com/musings/python/index.html"&gt;How to Install Python as a Replacement to Matlab&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.pythonxy.com/"&gt;pythonxy package  Python(x,y)&lt;/a&gt;&lt;br /&gt;I like this figure to represents to community over python.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-qQ8PeHP82w/SVXFvGir2TI/AAAAAAAAAAo/tng7TQ3v0Cs/s1600-h/Python%28x,y%29.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 224px;" src="http://3.bp.blogspot.com/_-qQ8PeHP82w/SVXFvGir2TI/AAAAAAAAAAo/tng7TQ3v0Cs/s320/Python%28x,y%29.png" alt="" id="BLOGGER_PHOTO_ID_5284347150789761330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-566761998737835282?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/566761998737835282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2008/12/why-i-have-switch-to-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/566761998737835282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/566761998737835282'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2008/12/why-i-have-switch-to-python.html' title='Why I have switch to Python?'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-qQ8PeHP82w/SVXFvGir2TI/AAAAAAAAAAo/tng7TQ3v0Cs/s72-c/Python%28x,y%29.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-7319629419090238593</id><published>2008-12-23T21:13:00.000-08:00</published><updated>2008-12-24T06:30:56.962-08:00</updated><title type='text'>Swig is just allsum!</title><content type='html'>Today, it only took me 2 hrs to integrate load and train function to my new flayers python interface. I am just impress that it is working so easily. I am simply convince that swig guys have done an allsum work! Thanks guys!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;svn co https://mlboost.svn.sourceforge.net&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;/svnroot/mlboost/flayers flayers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;cd flayers&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:85%;"  &gt;sudo python setup.py build_ext --inplace&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:85%;"  &gt;ipython&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:85%;"  &gt;In [1]: import flayers&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:85%;"  &gt;In [2]: &lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:85%;"  &gt;trainer = flayers.loadTrainer('test.save')&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:85%;"  &gt;In [3]: trainer.train(10)&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;python, matplotlib, ipython, scipy and now swig are making my life much easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-7319629419090238593?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/7319629419090238593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2008/12/swig-is-just-allsum.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7319629419090238593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/7319629419090238593'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2008/12/swig-is-just-allsum.html' title='Swig is just allsum!'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-387644216229536016</id><published>2008-12-21T21:12:00.000-08:00</published><updated>2008-12-22T19:33:16.202-08:00</updated><title type='text'>How I have created a python module from a C++ lib with swig</title><content type='html'>Today, I have completed the first step to create a python module from my C++ library. The first function I want to call from flayers is the main wrapper (fexp.cpp:main(int argc, char** argv)). From the new flayers python module, I expect to be able to call it that way :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;import flayers&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;flayers.fexp(["fexp","/","-e","10","-h","100","--oh","--lsm","-l","0.01"])&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, it is a little bit more complicated then expected. In order to make it working, I have looked at this great documentation (&lt;a href="http://www.swig.org/Doc1.3/Python.html"&gt;doc&lt;/a&gt;). Here are a summary of issues I have encounter.&lt;br /&gt;1) Extension module doesn't work automatically with C++. You have to add "-c++" option to swig call (ex: swig -python -c++ flayers.i).&lt;br /&gt;2) I added the .cxx file generated from swig instead of .i file to the source file in the setup extension instance (variant from my &lt;a href="http://fraka6.blogspot.com/2008/12/swig-and-python-with-extension-module.html"&gt;previous blog&lt;/a&gt;&lt;a href="http://fraka6.blogspot.com/2008/12/swig-and-python-with-extension-module.html"&gt;&lt;/a&gt;&lt;a href="http://fraka6.blogspot.com/2008/12/swig-and-python-with-extension-module.html"&gt; post&lt;/a&gt;).&lt;br /&gt;3) I have added flayers dependancy classes to the extension sources to ensure I didn't get error like : ImportError: ./_flayers.so: undefined symbol: XXXX and ensure the lib is recompiled at the installation.&lt;br /&gt;4) How to pass the list of options without argc and not get error like "in method 'fexp', argument 2 of type 'char **'": see section &lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;a href="http://www.swig.org/Doc1.3/Python.html#Python_nn6"&gt;30.9.2 Expanding a Python object into multiple arguments&lt;/a&gt;" ? look at my &lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/flayers/setup.py?view=markup"&gt;setup.py&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can take a look at my files &lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/flayers/?pathrev=286"&gt;here&lt;/a&gt; (flayers.i, setup.py, flayers.h,flayers.cpp)&lt;br /&gt;I am impress, swig and python are just allsum.&lt;br /&gt;&lt;br /&gt;If you want to try it, download flayers and do: &lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;tt style="font-weight: bold;"&gt;svn co https://mlboost.svn.sourceforge.net&lt;/tt&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;/svnroot/mlboost/flayers flayers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;cd flayers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;python setup.py build_ext --inplace (or python setup.py install)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;ipython (or python)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;import flayers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;flayers.fexp(["fexp","/","-e","10","-h","100","--oh","--lsm","-l","0.01"])&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-387644216229536016?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/387644216229536016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2008/12/how-i-have-created-python-module-from-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/387644216229536016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/387644216229536016'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2008/12/how-i-have-created-python-module-from-c.html' title='How I have created a python module from a C++ lib with swig'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-4798574905398871244</id><published>2008-12-14T19:06:00.000-08:00</published><updated>2008-12-14T19:26:26.504-08:00</updated><title type='text'>swig and python with Extension module</title><content type='html'>There is a much simpler way to create interface to C/C++  code. Simply use Extension module from distutils.core (&lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/demo/swig/setup.py?view=markup"&gt;setup.py).&lt;/a&gt;&lt;br /&gt;You simply have to type  &lt;span style="font-weight: bold;"&gt;sudo python setup.py install&lt;/span&gt; and you can access your module in python. (import example; example.cube(3))&lt;br /&gt;&lt;br /&gt;Thanks to PA &lt;a href="http://discussions.apple.com/thread.jspa?threadID=1293721&amp;amp;tstart=763"&gt;recommendation&lt;/a&gt;.&lt;br /&gt;My next steps are to create a python interface to flayers (my C++ neural network library) and convert arguments. PA suggest &lt;a href="http://www.boost.org/doc/libs/1_37_0/libs/python/doc/index.html"&gt;boost.python&lt;/a&gt; for arguments conversions.&lt;br /&gt;&lt;br /&gt;I have also experience setup module from setuptools to create &lt;a href="http://sourceforge.net/projects/mlboost/"&gt;mlboost&lt;/a&gt; &lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/setup.py?view=markup"&gt;setup.py&lt;/a&gt; file. setuptools use indirectly easy_install that doesn't work as well as aptitude on ubuntu. Unfortunatly, &lt;a href="http://www.nabble.com/error-installing-matplotlib-0.98.5-td20982264.html"&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;matplotlib&lt;/a&gt; dependency doesn't work but it is included in scipy through mlab interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-4798574905398871244?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/4798574905398871244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2008/12/swig-and-python-with-extension-module.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4798574905398871244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/4798574905398871244'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2008/12/swig-and-python-with-extension-module.html' title='swig and python with Extension module'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2294829865263631080.post-2266585478314557245</id><published>2008-12-13T22:17:00.000-08:00</published><updated>2008-12-13T23:41:47.054-08:00</updated><title type='text'>Swig and Python first experimentation</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;/span&gt;Today I tried swig to interface python to my C++ library.&lt;br /&gt;According to this &lt;a href="http://www.penzilla.net/tutorials/python/swig/"&gt;example&lt;/a&gt; it seems very simple but of course it doesn't work.&lt;br /&gt;I have followed exactly the proposed steps and I got 3 problems:&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;ol  style="color: rgb(0, 0, 0);font-family:arial;"&gt;&lt;li&gt;can't find Python.h: &lt;span style="color: rgb(51, 102, 255);"&gt;solution-&gt;sudo aptitude install python-dev&lt;/span&gt;&lt;/li&gt;&lt;li&gt;ld -shared -o _example.so example.o example_wrap.old: example.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; &lt;span style="color: rgb(255, 0, 0);"&gt;recompile with -fPIC &lt;span style="color: rgb(51, 102, 255);"&gt;: solution-&gt; do it&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ld -bundle -flat_namespace -undefined suppress -o _example.so example.o example_wrap.o&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ld: -f may not be used without -shared &lt;span style="color: rgb(51, 102, 255);"&gt;:-&gt;remove -bundle and add -share option&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;" &gt;Here is my config:&lt;/span&gt;&lt;br /&gt;AMD Athlon X2 5400+ Dual-Core Processor&lt;br /&gt;unbunto 8.4.10&lt;br /&gt;Python 2.5.2&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Fast track solution:&lt;/span&gt;&lt;br /&gt;svn co https://mlboost.svn.sourceforge.net/svnroot/mlboost/demo/swig swig-example&lt;br /&gt;cd swig-example&lt;br /&gt;source create_example_python_interface.sh&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Now here is exactly what you should do to make it working:&lt;/span&gt;&lt;br /&gt;-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;" &gt;1) create example.c and example.i&lt;/span&gt;&lt;br /&gt;&lt;stdio.h&gt;&lt;stdlib.h&gt;&lt;stdio.h&gt;&lt;stdlib.h&gt;&lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/demo/swig/example.c?revision=279"&gt;example.c&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mlboost.svn.sourceforge.net/viewvc/mlboost/demo/swig/example.i?revision=279"&gt;example.i&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;" &gt;2) create python interface to example module that contains cube function&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/stdlib.h&gt;&lt;/stdio.h&gt;sudo aptitude install swig&lt;br /&gt;sudo aptitude install python-dev&lt;br /&gt;swig -python example.i&lt;br /&gt;gcc -c example.c example_wrap.c -I/usr/include/python2.5 -I/usr/lib/python2.5 -fPIC&lt;br /&gt;ld -shared -o _example.so example.o example_wrap.o&lt;br /&gt;ld -share -flat_namespace -undefined suppress -o _example.so example.o example_wrap.o&lt;br /&gt;&lt;stdio.h&gt;&lt;stdlib.h&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;3) try python interface&lt;/span&gt;&lt;br /&gt;&lt;/stdlib.h&gt;&lt;/stdio.h&gt;&lt;br /&gt;fpieraut@fraka7:~/swig$ python&lt;br /&gt;Python 2.5.2 (r252:60911, Oct  5 2008, 19:29:17)&lt;br /&gt;[GCC 4.3.2] on linux2&lt;br /&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;br /&gt;&gt;&gt;&gt; import example&lt;br /&gt;&gt;&gt;&gt; example.cube(3)&lt;br /&gt;27&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;stdio.h&gt;&lt;stdlib.h&gt;&lt;br /&gt;&lt;br /&gt;&lt;/stdlib.h&gt;&lt;/stdio.h&gt;&lt;/stdlib.h&gt;&lt;/stdio.h&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294829865263631080-2266585478314557245?l=fraka6.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fraka6.blogspot.com/feeds/2266585478314557245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fraka6.blogspot.com/2008/12/swig-and-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2266585478314557245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294829865263631080/posts/default/2266585478314557245'/><link rel='alternate' type='text/html' href='http://fraka6.blogspot.com/2008/12/swig-and-python.html' title='Swig and Python first experimentation'/><author><name>fraka6</name><uri>http://www.blogger.com/profile/15985171927069556550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://3.bp.blogspot.com/_-qQ8PeHP82w/SUS0f6uJLYI/AAAAAAAAAAM/eddTKY13VOI/S220/fraka6.jpg'/></author><thr:total>0</thr:total></entry></feed>
