<?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-3131373264769000730</id><updated>2011-11-27T16:10:47.111-08:00</updated><category term='C++'/><category term='wake_up_interruptible'/><category term='macbook air'/><category term='scalability'/><category term='twisted'/><category term='python'/><category term='n-queens'/><category term='ORM'/><category term='mac'/><category term='unixjunkie'/><category term='domain driven design'/><category term='cilk++'/><category term='Mac 10.5'/><category term='vim'/><category term='GM'/><category term='golden master'/><category term='wait_queue_wake_up'/><category term='multi-core'/><category term='usability'/><category term='kickstart'/><title type='text'>My tryst with technology</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-1214884289481224813</id><published>2011-02-12T07:58:00.000-08:00</published><updated>2011-02-12T09:56:32.082-08:00</updated><title type='text'>dtrace</title><content type='html'>I had written about Mac dtrace introduced in 10.5. Attended a cool lecture yesterday which covered dtrace introduced in Solaris.&lt;br /&gt;&lt;br /&gt;dtrace as the name conveys is dynamic tracing. It allows you to trace the kernel as well as user land processes thus filling in the void by other tools like ktrace and the likes.&lt;br /&gt;dtrace doesn't have any additional overhead. Why? Read on. The dtrace framework is composed of providers - wherein providers are the ones which provide the probes for the various components of the kernel/userland susbsystem.  When a dtrace command or a D script (or python/perl/korn script which has dtrace commands) is fired, then the providers which are nothing but loadable kernel modules (LKM) are loaded by the dtrace VM, thus enabling the trace for the particular subsystem. This on demand patching of the kernel ensures that there is no overhead, unless enabled - that too only providers that are demanded for, are loaded.&lt;br /&gt;&lt;br /&gt;Now how do you load only the providers that you are interested in?&lt;br /&gt;Well, this does take a little practise/playing with the dtrace command, I guess.. Dtracce has a set of providers, each one tackles a particular subsystem. Predicates allow you to drill down to the level that you want for e.g. to a particular app's particular module's tracing - and that too to the particular module's condition of occurence. (the example that i was introduced to  by the speaker was app:firefox, method/module:poll, ts&gt;n seconds and so on.)&lt;br /&gt;&lt;br /&gt;All and all, sounds like a cool thing to be armed with.  (Been there, done that without dtrace - with ktrace, kdb and weeks of debugging.)&lt;br /&gt;&lt;br /&gt;To read more on this:&lt;br /&gt;&lt;a href="http://www.sun.com/bigadmin/content/dtrace/dtrace_usenix.pdf"&gt;http://www.sun.com/bigadmin/content/dtrace/dtrace_usenix.pdf&lt;/a&gt;&lt;br /&gt;&lt;a href="http://developers.sun.com/solaris/articles/power_of_dtrace.pdf"&gt;http://developers.sun.com/solaris/articles/power_of_dtrace.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-1214884289481224813?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/1214884289481224813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=1214884289481224813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/1214884289481224813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/1214884289481224813'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2011/02/dtrace.html' title='dtrace'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-4115350853796001315</id><published>2010-01-09T08:43:00.000-08:00</published><updated>2010-01-09T09:02:51.522-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>Sense of Usability</title><content type='html'>I've been fortunate to interact and work with some really good professionals. And one thing common with most of them (if not all) has been that they have excellent sense of usability. Don't know what's the link, but they can recognize and in turn use a good feature to the best effect. They can tell a clean interface from a bad one. They can tell a well designed site from the clutter. What's more, they themselves can be trusted to give ideas for good usability.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From my experiences, I've seen that usability is a very important aspect - be it an API interface or user interface. And some folks manage both with equal brilliance!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lately, Sharan just reinstated this belief of mine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Usability is the key. Everywhere.  And not just a term to be dismissed off as UE related. It is there in every aspect of programming/programs developed/used et al.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-4115350853796001315?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/4115350853796001315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=4115350853796001315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/4115350853796001315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/4115350853796001315'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2010/01/sense-of-usability.html' title='Sense of Usability'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-8465946695796545249</id><published>2009-10-19T10:53:00.000-07:00</published><updated>2009-10-20T10:43:14.598-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='domain driven design'/><title type='text'>Domain Driven Design</title><content type='html'>Recently read a few sections of the book Domain Driven Design. The importance of understanding the domain is not to be undermined. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is not that you can't design/develop without knowing the domain. And not that you could know the domain overnight and design.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Knowing a domain and designing/refactoring is an ongoing process. And the more you know, the more you improvise. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I, for one, had never given so much of  a thought to domain knowledge, but the examples in the book were really enlightening. I could relate to many of them and also realised that in reality knowing the domain had helped me get many things right in the last 6 yrs!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All and all, the design tips and methodologies in the book are uber cool and helpful too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Updated: The book: http://www.amazon.com/gp/product/0321125215 &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-8465946695796545249?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/8465946695796545249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=8465946695796545249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/8465946695796545249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/8465946695796545249'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2009/10/domain-driven-design.html' title='Domain Driven Design'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-2119319503091193171</id><published>2009-08-22T02:08:00.000-07:00</published><updated>2009-08-22T03:42:47.498-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'></title><content type='html'>&lt;span class="Apple-style-span"   style="color: rgb(70,70,70);   line-height: 18px; font-family:Helvetica;font-size:12px;"&gt;&lt;pre style="overflow-x: auto; overflow-y: auto; "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="overflow-x: auto; overflow-y: auto; "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;Enabling options based on filetype in vim. Picked from &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.linuxjournal.com/content/tech-tip-some-useful-vim-option"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;span class="Apple-style-span" style=" white-space: pre; "&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;&lt;pre style="overflow-x: auto; overflow-y: auto; "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;:au BufRead    *.c     so ~/.vim/c.vim&lt;br /&gt;:au BufNewFile *.c     so ~/.vim/c.vim&lt;br /&gt;:au BufRead    *.py    so ~/.vim/py.vim&lt;br /&gt;:au BufNewFile *.py    so ~/.vim/py.vim&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;Then put this in &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;~/.vim/c.vim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style="overflow-x: auto; overflow-y: auto; "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;set shiftwidth=8 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;And this in &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;~/.vim/py.vim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style="overflow-x: auto; overflow-y: auto; "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;set shiftwidth=8 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;That'll cause &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;vim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt; to source the specified file when the corresponding file type is read (or when a new file of the corresponding type is created).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-2119319503091193171?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/2119319503091193171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=2119319503091193171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/2119319503091193171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/2119319503091193171'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2009/08/enabling-options-bases-on-filetype.html' title=''/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-502317767215990396</id><published>2009-07-26T09:56:00.000-07:00</published><updated>2009-07-26T09:58:25.679-07:00</updated><title type='text'>Recording some good links</title><content type='html'>http://www.ddj.com/go-parallel/&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://www.linux-mag.com/cache/7407/1.html&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/3131373264769000730-502317767215990396?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/502317767215990396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=502317767215990396' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/502317767215990396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/502317767215990396'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2009/07/recording-some-good-links.html' title='Recording some good links'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-8585289413655938031</id><published>2009-07-24T22:32:00.000-07:00</published><updated>2009-07-25T00:12:42.891-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='n-queens'/><category scheme='http://www.blogger.com/atom/ns#' term='cilk++'/><category scheme='http://www.blogger.com/atom/ns#' term='multi-core'/><title type='text'>Cilk++</title><content type='html'>&lt;span class="Apple-style-span"   style="  ;font-family:Tahoma;font-size:11px;"&gt;&lt;p class="x_MsoNormal"   style="margin-top: 0in; margin-right: 0in; margin-left: 0in; margin-bottom: 0.0001pt;   font-family:'Times New Roman';font-size:12pt;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Times;font-size:16px;"&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;&lt;span class="Apple-style-span"   style="font-family:Tahoma;font-size:11px;"&gt;&lt;p class="x_MsoNormal"  style="margin-top: 0in; margin-right: 0in; margin-left: 0in; margin-bottom: 0.0001pt;  font-family:'Times New Roman';"&gt;&lt;span class="Apple-style-span" style=" ;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Tahoma"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;With the advent of 16, 24 (and also 32?) cored machines, multi-core machines are foraying in a big way. Most applications programmed aren't multi-core aware and hence though multi-core hardware prices aren't daunting, the applications can't really scale to it. Redesigning the legacy apps for multi-core aware is not a small task. However suites like Cilk++ do make it so.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Cilk++ comes with a complete suite of compiler, run time system et al, which enables legacy applications that have been designed with no scaling in sight to be multi-core aware with minimal changes. Believe it or not, your code requires as less change as using three keywords effectively to indicate parallelism and synchronization – cilk_for, clik_spawn (for areas which have recursive calls or the types to make use of the multi-cores), cilk_sync (gather results from all the calls). Cilk provides race detector and reducers (race free global variables) as well.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;To know more, read this:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman; color:#0022e4;"&gt;&lt;a href="https://puneexchange.persistent.co.in/owa/redir.aspx?C=1f2e4a64de4441408d4db0798af5f8bf&amp;amp;URL=http%3a%2f%2fwww.cilk.com%2fmulticore-products%2fcilk-solution-overview%2f"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;http://www.cilk.com/multicore-products/cilk-solution-overview/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Tahoma"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;On using the three keywords to indicate parallelism, the Cilk++ compiler compiles the serial code into multi-core enabled parallel application.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;N-Queens Problem&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman; color:#0022e4;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;A good starting point to understand how this can be used is the N-Queens problem: &lt;/span&gt;&lt;/span&gt;&lt;a href="https://puneexchange.persistent.co.in/owa/redir.aspx?C=1f2e4a64de4441408d4db0798af5f8bf&amp;amp;URL=http%3a%2f%2fwww.cilk.com%2fmulticore-blog%2fbid%2f6381%2fMulticore-enabling-the-N-Queens-Problem-Using-Cilk"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman; color:#0022e4;"&gt;&lt;span style="color:#000000;"&gt;&lt;a href="https://puneexchange.persistent.co.in/owa/redir.aspx?C=1f2e4a64de4441408d4db0798af5f8bf&amp;amp;URL=http%3a%2f%2fwww.cilk.com%2fmulticore-blog%2fbid%2f6381%2fMulticore-enabling-the-N-Queens-Problem-Using-Cilk"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;http://www.cilk.com/multicore-blog/bid/6381/Multicore-enabling-the-N-Queens-Problem-Using-Cilk&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;There are other problems discussed as well. You could track the cilk blog to know more.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman; color:#0022e4;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;And to know more about the Cilk language itself: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Times New Roman; color:#0022e4;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;http://supertech.csail.mit.edu/papers/cilk5.pdf&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-8585289413655938031?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/8585289413655938031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=8585289413655938031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/8585289413655938031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/8585289413655938031'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2009/07/cilk.html' title='Cilk++'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-3106270288764782826</id><published>2008-10-28T01:45:00.000-07:00</published><updated>2008-10-28T02:12:54.034-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='twisted'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='scalability'/><title type='text'>Python &amp; Scalability</title><content type='html'>Was checking on Python scalability.&lt;br /&gt;&lt;br /&gt;Found some good links&lt;br /&gt;http://highscalability.com/youtube-architecture&lt;br /&gt;http://highscalability.com/tags/python&lt;br /&gt;http://www.python.org/about/success/strakt/ (This one uses Twisted as well)&lt;br /&gt;&lt;br /&gt;Generally you can check here: http://www.python.org/about/success/&lt;br /&gt;&lt;br /&gt;Couldn't resist this one: http://www.python.org/about/success/rackspace/&lt;br /&gt;&lt;br /&gt;And yes, python is not only a scripting language, it is an object oriented programming language too!&lt;br /&gt;&lt;br /&gt;A pat for Twisted is here as well:&lt;br /&gt;http://news.zdnet.co.uk/software/0,1000000121,39246546,00.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-3106270288764782826?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/3106270288764782826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=3106270288764782826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/3106270288764782826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/3106270288764782826'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2008/10/python-scalability.html' title='Python &amp; Scalability'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-3729860200249118987</id><published>2008-09-14T00:34:00.000-07:00</published><updated>2008-09-14T00:51:04.951-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><title type='text'>In search for an ORM</title><content type='html'>Sharan has been searching for an ORM for C++. Though we have been able to find many for Java, python etc; couldn't find one which is popular for C++.&lt;br /&gt;&lt;br /&gt;A few that I found, though we yet to evaluate are:&lt;br /&gt;http://soci.sourceforge.net/&lt;br /&gt;http://sourceforge.net/projects/open-orm/&lt;br /&gt;Database Template Library: http://dtemplatelib.sourceforge.net/&lt;br /&gt;&lt;br /&gt;Found this one mentioned at a couple of places; but the page just refuses to open up&lt;br /&gt;http://ceamus.com/objbuilder/&lt;br /&gt;&lt;br /&gt;If anyone has any better suggestions, let me/sharan know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-3729860200249118987?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/3729860200249118987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=3729860200249118987' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/3729860200249118987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/3729860200249118987'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2008/09/in-search-for-orm.html' title='In search for an ORM'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-4719630439937926481</id><published>2008-02-22T23:26:00.000-08:00</published><updated>2008-02-22T23:52:12.220-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wake_up_interruptible'/><category scheme='http://www.blogger.com/atom/ns#' term='wait_queue_wake_up'/><title type='text'>wake_me_up or wake_me_not</title><content type='html'>We had a really tough problem to solve in the last few weeks and we finally got through it.. Every experience of solving a tough problem ends with sweet little learnings. And this time it was about "wake_up" functions on Linux. These functions don't seem to have good documentation anywhere and knowing the nuances of the different variants demands a lot of googling and reading :)&lt;br /&gt;So was quite happy with this find, wherein a person has documented his learnings in one place.&lt;br /&gt;&lt;br /&gt;http://groups.google.co.in/group/comp.os.linux.development.system/browse_&lt;br /&gt;thread/thread/607517fcb4ecf29d/d752bf66a0a7bb48?lnk=st&amp;amp;q=wake_up_&lt;br /&gt;interruptible+wake_up_interruptible_all#d752bf66a0a7bb48&lt;br /&gt;&lt;br /&gt;And the equivalents of Mac can be found at&lt;br /&gt;http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming&lt;br /&gt;/services/chapter_16_section_5.html#//apple_ref/doc/uid/TP30000905-CH219-CHDIDIDF&lt;br /&gt;&lt;br /&gt;Hope this will help others in pursuit of wake_up problems!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-4719630439937926481?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/4719630439937926481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=4719630439937926481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/4719630439937926481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/4719630439937926481'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2008/02/wakemeup-or-wakemenot.html' title='wake_me_up or wake_me_not'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-5956758798502223672</id><published>2008-01-19T23:34:00.000-08:00</published><updated>2008-01-19T23:39:58.441-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='macbook air'/><title type='text'>Macbook Air</title><content type='html'>Was reading reviews about MacBook Air and came across some very interesting one-liners on it&lt;br /&gt;&lt;br /&gt;"It’s an expensive, disposable toy"&lt;br /&gt;"Apple: Macbook Air inspires laptop Anorexia"&lt;br /&gt;"Steve made a machine for himself, as ever."&lt;br /&gt;&lt;br /&gt;Read some interesting stuff at&lt;br /&gt;http://cultofmac.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-5956758798502223672?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/5956758798502223672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=5956758798502223672' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/5956758798502223672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/5956758798502223672'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2008/01/macbook-air.html' title='Macbook Air'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-5761596405448182642</id><published>2008-01-19T22:04:00.000-08:00</published><updated>2008-01-19T22:23:55.453-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='golden master'/><category scheme='http://www.blogger.com/atom/ns#' term='GM'/><title type='text'>What does GM stand for?</title><content type='html'>&lt;span style="font-family: arial;font-size:100%;" &gt;External beta testing is usually followed by GM build testing and subsequent release. So what is GM in the beta parlance? My project had been in the GM phase for quite a time. However I didn't bother to google for it throughout. Yesterday while reading an interview of an indie developer (Read Sweater), I read about Leopard's Golden Master not being released to Mac developers for testing before official release! And it was then, that I realised what the acronym GM meant. To confirm, I googled for the term which explained:&lt;br /&gt;&lt;br /&gt;GM, or Gold Master, is what software is called when it has completed all phases of testing and is ready to be released to the general public&lt;br /&gt;&lt;br /&gt;Ref:&lt;br /&gt;&lt;a href="https://mail.persistent.co.in/wm/mail/fetch.html?urlid=21d0d4811718e0cd2767d0e55b80798a3&amp;amp;url=http%3A%2F%2Fbeta.aol.com%2Fprojects.php%3Fproject%3Dinfocenter%26loc%3Dbetaglossary%23G12" target="_blank"&gt;http://beta.aol.com/projects.php?project=infocenter&amp;amp;loc=betaglossary#G12&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&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/3131373264769000730-5761596405448182642?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/5761596405448182642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=5761596405448182642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/5761596405448182642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/5761596405448182642'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2008/01/what-does-gm-stand-for.html' title='What does GM stand for?'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-5588108814592220809</id><published>2007-12-23T03:08:00.000-08:00</published><updated>2007-12-23T04:43:06.807-08:00</updated><title type='text'>Pitfalls of using threads</title><content type='html'>livejournal's cpp community had a post on multi threading with c++, which got me reading on this.&lt;br /&gt;&lt;br /&gt;The pitfalls with multi threading&lt;br /&gt;- thread safe functions/non re-entrant functions&lt;br /&gt;- deadlock&lt;br /&gt;- race code&lt;br /&gt;- pitfalls seen especially with C++ code (making initialization routines thread safe etc)&lt;br /&gt;&lt;br /&gt;Boost.Threads (a little outdated article per the issues discussed still are a part of multithreading environment)&lt;br /&gt;http://www.ddj.com/cpp/184401518&lt;br /&gt;&lt;br /&gt;http://www.boost.org/doc/html/thread.html#id1710137&lt;br /&gt;&lt;br /&gt;Pthreads&lt;br /&gt;http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html&lt;br /&gt;&lt;br /&gt;Testing and debugging is highly non-deterministic in a threaded environment, which adds to the difficulties.&lt;br /&gt;&lt;br /&gt;Read to know more!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-5588108814592220809?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/5588108814592220809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=5588108814592220809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/5588108814592220809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/5588108814592220809'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2007/12/pitfalls-of-using-threads.html' title='Pitfalls of using threads'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-8918487150819244240</id><published>2007-12-17T19:56:00.000-08:00</published><updated>2007-12-17T19:57:44.111-08:00</updated><title type='text'>XCode 3.0 Instruments</title><content type='html'>XCode 3.0 has some exciting stuff introduced- Instruments. Read more on this:&lt;br /&gt;http://www.apple.com/macosx/developertools/instruments.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-8918487150819244240?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/8918487150819244240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=8918487150819244240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/8918487150819244240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/8918487150819244240'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2007/12/xcode-30-instruments.html' title='XCode 3.0 Instruments'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-5455282404751919639</id><published>2007-12-17T18:56:00.000-08:00</published><updated>2007-12-17T19:52:58.724-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac 10.5'/><title type='text'>Mac OS 10.5</title><content type='html'>I have been searching for information on Mac Os 10.5. Although there is a lot of scattered information, there is not a single site which gives an overview (technically) of the changes. There is a lot of information on the product/user experience stuff, but hardly any take on the development aspects.&lt;br /&gt;&lt;br /&gt;OS 10.5 with 64-bit compatibility: This is pretty encouraging to read. One doesn't need to have any driver/device changes for 64-bit. And 32-bit applications work smoothly too. Also, it follows LP64 model, so Unix 64-bit apps can be ported easily.&lt;br /&gt;http://www.apple.com/macosx/technology/64bit.html&lt;br /&gt;&lt;br /&gt;Talking about Unix, OS 10.5 claims to be Unix certified. So any/all unix apps will run on Mac 10.5 as-is, without "any" change!&lt;br /&gt;http://www.apple.com/macosx/technology/unix.html&lt;br /&gt;&lt;br /&gt;File system event APIs.. I almost thought this could be used as Kauth is used, before I read it completely. Nevertheless a good feature:&lt;br /&gt;http://developer.apple.com/documentation/Darwin/Conceptual/FSEvents_ProgGuide/TechnologyOverview/chapter_3_section_1.html#//apple_ref/doc/uid/TP40005289-CH3-SW1&lt;br /&gt;&lt;br /&gt;However, I found kernel queues, which provide notifications for most events like Kauth does! Need to see, how far we can go with this.. also whether it caters to our purpose better than Kauth. One thing that I see as a plus here is that it gives notification for exit, fork as well.&lt;br /&gt;&lt;br /&gt;http://developer.apple.com/documentation/Darwin/Conceptual/FSEvents_ProgGuide/KernelQueues/chapter_6_section_1.html#//apple_ref/doc/uid/TP40005289-CH5-SW2&lt;br /&gt;&lt;br /&gt;This link I found, was a little less user oriented than others:&lt;br /&gt;http://www.informationweek.com/news/showArticle.jhtml?articleID=202802284&amp;amp;pgno=1&amp;amp;queryText=&lt;br /&gt;&lt;br /&gt;OS 10.5 as a server?&lt;br /&gt;http://www.informationweek.com/news/showArticle.jhtml?articleID=202801226&amp;amp;pgno=1&amp;amp;queryText=&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Till, I find some more information on this, Ciao!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-5455282404751919639?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/5455282404751919639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=5455282404751919639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/5455282404751919639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/5455282404751919639'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2007/12/mac-os-105.html' title='Mac OS 10.5'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-2035785485986461768</id><published>2007-12-09T11:02:00.000-08:00</published><updated>2007-12-09T11:11:40.638-08:00</updated><title type='text'>DTrace on Mac</title><content type='html'>In my search for some help on tracing calls, I found this interesting link:&lt;br /&gt;http://www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html&lt;br /&gt;&lt;br /&gt;ktrace for some reason, isn't providing us the information needed  for tracing the shutdown call. Attaching to the process using debugger also resulted into nowhere as the stacks were too many to analyze and we couldn't really nail down the problem.&lt;br /&gt;&lt;br /&gt;Some interesting snippets of this link:&lt;br /&gt;&lt;br /&gt;&lt;snip&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You interact with DTrace by writing small programs in the D programming language. These D programs can be saved in text files and run like shell scripts, or they can stretched out right on the command line for quick, ad-hoc use (or if you simply want to impress your friends). An example D script that totals all the system calls made for each process on the system is shown in Listing 1.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Listing 1: syscalls_per_proc.d&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Totals up all the system calls made for each process&lt;/b&gt;&lt;/p&gt;  &lt;pre width="50"&gt;syscall:::entry&lt;br /&gt;{&lt;br /&gt;  @[execname] = count();&lt;br /&gt;}&lt;/pre&gt;  .&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;&lt;snip&gt;&lt;br /&gt;&lt;br /&gt;And this:&lt;br /&gt;&lt;p&gt;&lt;b&gt;File activity&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;It can be enlightening to see which files are accessed on a system. For example, you may see that Foo.app is frequently writing to some file, or maybe that Bar.app is calling stat(2) on a log file every 10ms. This information can help you debug your own programs, or perhaps better understand the system in general. Below we use a small D script to print out the name of each file as it's opened.&lt;/p&gt;  &lt;pre width="50"&gt;$ sudo dtrace -s /dev/stdin&lt;br /&gt;syscall::open*:entry&lt;br /&gt;{&lt;br /&gt;  printf("%s %s", execname, copyinstr(arg0));&lt;br /&gt;}&lt;br /&gt;^D&lt;br /&gt;dtrace: script '/dev/stdin' matched 3 probes&lt;br /&gt;CPU     ID      FUNCTION:NAME&lt;br /&gt; 0  17584      open:entry Finder /.vol/234881026/562669&lt;br /&gt; 0  17584      open:entry Finder /.vol/234881026/562669&lt;br /&gt; 1  17584      open:entry iChatAgent /Users/jgm/Library/Caches/...&lt;br /&gt; 0  17584      open:entry iChatAgent /Users/jgm/Library/Caches/...&lt;br /&gt; 1  17584      open:entry iChat /System/Library/PrivateFrameworks/...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;^C&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;This script sets a probe at the entry to all system calls having names beginning with "open". DTrace tells us that our probe description matched three probes. They are: open, open_extended, and open_nocancel. Our action statement prints out the name of the process (execname) that caused the probe to fire, and the first argument (arg0) to the function that matched the probe. Notice that we need to use the copyinstr function here rather than just printing arg0 directly. This is because D scripts execute in the kernel's address space, but the pathname argument to open is stored in user space. We could also modify our D script so that it shows us which files are accessed most often, as follows.&lt;/p&gt;  $ sudo dtrace -s /dev/stdin  syscall::open*:entry {    @[copyinstr(arg0)] = count(); }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;/snip&gt;&lt;br /&gt;&lt;br /&gt;Although Apple provides no documentation for this, Sun systems has sufficient docs on this.&lt;br /&gt;&lt;br /&gt;And oh yes, this article is also courtesy - Greg Miller.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-2035785485986461768?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/2035785485986461768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=2035785485986461768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/2035785485986461768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/2035785485986461768'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2007/12/dtrace-on-mac.html' title='DTrace on Mac'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-1834795118510658678</id><published>2007-12-09T10:33:00.000-08:00</published><updated>2007-12-09T10:58:28.097-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unixjunkie'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Mac World</title><content type='html'>When we initially set out to work on Mac, we Greg Miller's posts helped us a lot. Here are a few links to his blog which are useful for a newbie:&lt;br /&gt;&lt;br /&gt;Command line building on KEXT&lt;br /&gt;http://unixjunkie.blogspot.com/2006/12/kernel-extension-by-hand.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Understanding lists and queues. Vishal would have loved to read this, though getting to understand it himself, must have been more satisfying!&lt;br /&gt;http://unixjunkie.blogspot.com/2006/12/lists-and-queues.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sachin had a hard time figuring out a solution for this problem of width that ps assumes. A quick look at the reason for this strange behavior.&lt;br /&gt;http://unixjunkie.blogspot.com/2006/03/strange-difference-in-ps-output.html&lt;br /&gt;&lt;br /&gt;Mac UI musts - Command line processing of Cocoa:&lt;br /&gt;http://unixjunkie.blogspot.com/2006/07/command-line-processing-in-cocoa.html&lt;br /&gt;&lt;br /&gt;Read more on unixjunkie to know more about small nitty gritties that help a Mac newbie!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-1834795118510658678?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/1834795118510658678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=1834795118510658678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/1834795118510658678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/1834795118510658678'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2007/12/mac-world.html' title='Mac World'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-980044209293698425</id><published>2007-12-09T10:05:00.000-08:00</published><updated>2007-12-09T10:07:03.952-08:00</updated><title type='text'>Better Explained</title><content type='html'>A must read for all - betterexplained.com. Truly, all the concepts here are explained with such lucidness that every word written here is worth its weight in gold!&lt;br /&gt;&lt;br /&gt;Do read it, for cool explanations on interesting topics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-980044209293698425?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/980044209293698425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=980044209293698425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/980044209293698425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/980044209293698425'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2007/12/better-explained.html' title='Better Explained'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3131373264769000730.post-2726642192396357903</id><published>2007-12-09T09:27:00.000-08:00</published><updated>2007-12-09T09:32:16.538-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kickstart'/><title type='text'>Reason for this blog</title><content type='html'>I learn a thing or two in my chosen area of work, almost daily. But somewhere down the line, the learning gets lost. This blog is an attempt to record my daily learnings (ok.. not that frequently :)) so that I can quickly retrieve it when needed and also to share my learnings (while earning) with others!&lt;br /&gt;&lt;br /&gt;Hope to see a lot of posts from me!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3131373264769000730-2726642192396357903?l=learningwhileearning.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningwhileearning.blogspot.com/feeds/2726642192396357903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3131373264769000730&amp;postID=2726642192396357903' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/2726642192396357903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3131373264769000730/posts/default/2726642192396357903'/><link rel='alternate' type='text/html' href='http://learningwhileearning.blogspot.com/2007/12/reason-for-this-blog.html' title='Reason for this blog'/><author><name>Swati</name><uri>http://www.blogger.com/profile/01993746694401890165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
