<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Shakthimaan's blog.</title>
        <link>http://www.shakthimaan.com</link>
        <description><![CDATA[RSS feed for Shakthimaan's blog.]]></description>
        <atom:link href="http://www.shakthimaan.com/news.xml" rel="self"
                   type="application/rss+xml" />
        <lastBuildDate>Thu, 25 Apr 2013 08:40:00 UT</lastBuildDate>
        <item>
    <title>Fedora Activity Day (FAD), Mysore</title>
    <link>http://www.shakthimaan.com/posts/2013/04/25/fad-mysore/news.html</link>
    <description><![CDATA[<p>A <a href="https://fedoraproject.org/wiki/FAD_Mysore_2013">Fedora Activity Day</a> was held at <a href="http://www.sjce.ac.in/">Sri Jayachamarajendra College Of Engineering</a>, Mysore, Karnataka, India on Saturday, April 20, 2013.</p>
<img alt="SJCE" src="http://www.shakthimaan.com/Mambo/gallery/albums/album92/6_sjce.jpg"></img><br />
<p>The agenda included talks in the morning, and practical sessions in the afternoon. I started the day’s proceedings on best practices to be followed when working with free/open source software projects, giving examples on <a href="http://shakthimaan.com/downloads.html#i-want-2-do-project-tell-me-wat-2-do">effective project, and communication guidelines</a>. The various <a href="http://fedoraproject.org/wiki/Projects">Fedora sub-projects</a> that students can contribute to were mentioned. This was followed by an introductory session on Python by <a href="http://aravindavk.in/">Aravinda V K</a>. The <a href="http://shakthimaan.com/downloads.html#python-introduction-for-programmers">“Python: Introduction for Programmers” presentation</a> was given to the students. <a href="https://github.com/vijaykumar-koppad">Vijaykumar Koppad</a> then gave an overview, and a demo of the <a href="http://www.gluster.org/">Gluster file system</a>.</p>
<p>After lunch, we had a Q&amp;A session with the participants. Questions on working with free/open source software projects, differences between file systems, GNU/Linux distributions, and programming languages were answered. Basic installation and troubleshooting techniques were discussed. I addressed system architecture design concepts, compilation, cross-compilation, and revision control systems, and briefed them on copyright, and licensing. Students had brought their laptops to work on Python scripting, and GlusterFS. I also worked on few bug fixes, package builds for ARM, and package updates:</p>
<ul>
<li>Bug 928059 - perl-Sys-CPU 0.54 tests fail on ARM</li>
<li>Bug 926079 - linsmith: Does not support aarch64 in f19 and rawhide</li>
<li>Bug 925483 - gputils: Does not support aarch64 in f19 and rawhide</li>
<li>Bug 922397 - flterm-debuginfo-1.2-1 is empty</li>
<li>Bug 925202 - csmith: Does not support aarch64 in f19 and rawhide</li>
<li>Bug 925247 - dgc: Does not support aarch64 in f19 and rawhide</li>
<li>Bug 925208 - CUnit: Does not support aarch64 in f19 and rawhide</li>
<li>Bug 901632 - ghc-smallcheck-1.0.2 is available</li>
<li>Bug 926213 - nesc: Does not support aarch64 in f19 and rawhide</li>
<li>Bug 953775 - ghc-data-inttrie-0.1.0 is available</li>
</ul>
<p>Thanks to <a href="http://vbellur.wordpress.com/">Vijay Bellur</a> and Vijaykumar Koppad for working with me in organizing this workshop. Thanks also to the Fedora project for sponsoring my travel and accommodation.</p>
<p>Few photos taken during the trip are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album92">/gallery</a>.</p>]]></description>
    <pubDate>Thu, 25 Apr 2013 08:40:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2013/04/25/fad-mysore/news.html</guid>
</item>
<item>
    <title>Ajanta-Daulatabad-Ellora</title>
    <link>http://www.shakthimaan.com/posts/2013/04/04/ajanta-daulatabad-ellora/news.html</link>
    <description><![CDATA[<img alt="Ajanta caves" src="http://www.shakthimaan.com/Mambo/gallery/albums/album89/25_entrance_to_cave_19.jpg"></img><br />
<img alt="Daulatabad fort" src="http://www.shakthimaan.com/Mambo/gallery/albums/album90/2_daulatabad_fort.jpg"></img><br />
<img alt="Ellora caves" src="http://www.shakthimaan.com/Mambo/gallery/albums/album91/42_pillar.jpg"></img><br />
<p>More photos available in the respective albums - <a href="http://www.shakthimaan.com/Mambo/gallery/album89">Ajanta caves</a>, <a href="http://www.shakthimaan.com/Mambo/gallery/album90">Daulatabad fort</a>, and <a href="http://www.shakthimaan.com/Mambo/gallery/album91">Ellora caves</a>.</p>]]></description>
    <pubDate>Thu, 04 Apr 2013 01:40:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2013/04/04/ajanta-daulatabad-ellora/news.html</guid>
</item>
<item>
    <title>Fedora OpenStack workshop, P.E.S. College of Engineering, Aurangabad</title>
    <link>http://www.shakthimaan.com/posts/2013/03/04/fedora-openstack-pes-aurangabad/news.html</link>
    <description><![CDATA[<p>I had organized a <a href="http://fedoraproject.org/wiki/OpenStack">Fedora and OpenStack</a> workshop at <a href="http://www.pescoe.ac.in/">P.E.S. College of Engineering, Nagsen Vana, Aurangabad</a>, Maharashtra on Saturday, March 2, 2013.</p>
<img alt="P.E.S. College of Engineering" src="http://www.shakthimaan.com/Mambo/gallery/albums/album88/7_college_facade.jpg"></img>
<p>After a formal inauguration at 1000 IST, I introduced the students to communication guidelines, mailing list etiquette, and project guidelines using the <a href="http://shakthimaan.com/downloads.html#i-want-2-do-project-tell-me-wat-2-do">“i-want-2-do-project. tell-me-wat-2-do”</a> presentation. The different <a href="http://fedoraproject.org/wiki/Projects">Fedora sub-projects</a> to which they can contribute to were mentioned. I showed the various free/open source software tools available for them to learn and use. The career options with free/open source software were also discussed. I had asked them to write down any questions they had on the forenoon session, so I could answer them in the afternoon session. Few of their questions:</p>
<ul>
<li>If I do a project in Java, what are my career options?</li>
<li>What is the difference between open source and Microsoft?</li>
<li>Is Linux popular only because of security, or are there other reasons too?</li>
<li>I am interested in mainframes. How should I learn?</li>
<li>I am interested in a career in animation. What free/open source software can I use?</li>
<li>What are the steps to become a good software engineer?</li>
<li>Can I patent a software product?</li>
</ul>
<p>Post-lunch, I answered their queries in the Q&amp;A session, to the best of my knowledge. I also gave them an introduction on copyright, trademark and patents, and mentioned that IANAL. I then introduced them to the architecture of OpenStack, explaining the individual components, and their functionality. The <a href="http://fedorapeople.org/~russellb/openstack-lab-rhsummit-2012/index.html">OpenStack Lab Guide</a> was provided to them to setup their own OpenStack cloud. Some of them had brought their laptops to try it hands-on. I demonstrated the Horizon web interface after starting the required services.</p>
<img alt="Fedora Labs" src="http://www.shakthimaan.com/Mambo/gallery/albums/album88/9_fedora_lab.jpg"></img>
<p>All their computer labs have been migrated to Fedora 17. Thanks to Prof. Nitin Ujgare for working with me in organizing this workshop, and for maintaining the Fedora labs at the Institute. Aurangabad is around 230 km from Pune, and takes around 4 1/2 hours by road. There are frequent bus services between Pune and Aurangabad. You can book bus tickets at <a href="http://www.msrtc.gov.in/msrtc_live/index.html">Maharashtra State Road Transport Corporation (MSRTC)</a> web site. There are a number of historic places to visit in and around Aurangabad. Few photos taken during the trip are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album88">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 04 Mar 2013 16:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2013/03/04/fedora-openstack-pes-aurangabad/news.html</guid>
</item>
<item>
    <title>Emacs + Magit = Git Magic</title>
    <link>http://www.shakthimaan.com/posts/2013/02/25/introduction-to-magit/news.html</link>
    <description><![CDATA[<p>I had presented an introduction to <a href="https://github.com/magit/magit">Magit</a>, “Emacs + Magit = Git Magic”, at the <a href="http://www.meetup.com/the-peg">Pune Emacs Users’ group meetup</a> on Friday, February 22, 2013. Magit is an Emacs mode that interfaces with <a href="http://git-scm.com/">Git</a>. Magit doesn’t provide all the interfaces of Git, but the frequently used commands. The <a href="http://magit.github.com/magit/magit.html">user manual</a> was used as a reference. Magit is available in Fedora. You can install it using:</p>
<pre class="shell"><code>$ sudo yum install emacs-magit</code></pre>
<p>The talk was centered around the notion of writing a poem on Emacs in Emacs, and using magit to revision it. I started an Emacs session, created a directory with <a href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html">Dired</a> mode, and used magit (M-x magit-status) to initialize a git repo. After adding a stanza in the poem, I used the magit commands to stage (s) and commit the same (c, C-c C-c) from the magit-buffer. Another stanza and a README file were then added, and the different untracked, and tracked section visibility options (TAB, S-TAB, {1-4}, M-{1-4}) were illustrated. After adding the third stanza, and committing the same, the short (l l) and long (l L) history formatted outputs were shown. The return (RET) key on a commit in the magit-log history buffer opens a new magit-commit buffer, displaying the changes made in the commit. The sha1 can be copied using the (C-w) shortcut.</p>
<img alt="session-in-progress" src="http://photos1.meetupstatic.com/photos/event/e/1/b/6/600_207537782.jpeg"></img>
<p>The reflogs are visible with the (l h) option from the magit-buffer. The (d) command was used to show the difference between the master and a revision, and (D) for the diff between any two revisions. Annotated tags (t a) and lightweight tags (t t) can be created in magit. Resetting the working tree and discarding the current changes is possible with (X). Stashing (z z) the present changes, applying a stash (a), and killing the stash (k) were demonstrated. An org branch was then created (b n) to write a stanza on org-mode, and then merged (m m) with the master branch. An example of rebasing (R) was also illustrated. The magit-buffer can be refreshed (g) to check the current status of the git repo. Anytime, the magit buffers can be closed with the (q) command. A git command can be invoked directly using (:), and the corresponding output can be viewed with ($), which is shown in a magit-process buffer.</p>
<p>A summary of the various shortcuts are available in the <a href="http://shakthimaan.com/downloads.html#emacs-magit-git-magic">presentation</a>. The poem that I wrote on Emacs, and used in the talk:</p>
<blockquote>
Emacs is, an operating system <br />Which unlike many others, is truly, a gem <br />Its goodies can be installed, using RPM <br />Or you can use ELPA, which has already packaged them <br />
</blockquote>
<blockquote>
You can customize it, to your needs <br />You can also check EmacsWiki, for more leads <br />Your changes work, as long as reload succeeds <br />And helps you with, your daily deeds <br />
</blockquote>
<blockquote>
People say, it lacks a decent editor <br />But after using its features, they might want to differ <br />Using Magit’s shortcuts, you might infer <br />That it is something, you definitely prefer <br />
</blockquote>
<blockquote>
Plan your life, with org-mode <br />You don’t necessarily need, to write code <br />TODO lists and agenda views, can easily be showed <br />Reading the documentation, can help you come aboard <br />
</blockquote>
<blockquote>
Emacs is, a double-edged sword <br />Its powerful features, can never be ignored <br />Customization is possible, because of Free Software code <br />And this is, my simple ode. <br />
</blockquote>]]></description>
    <pubDate>Mon, 25 Feb 2013 04:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2013/02/25/introduction-to-magit/news.html</guid>
</item>
<item>
    <title>GCC workshop, GNUnify 2013</title>
    <link>http://www.shakthimaan.com/posts/2013/02/19/gnunify-gcc-workshop/news.html</link>
    <description><![CDATA[<p><a href="http://gnunify.in/">GNUnify 2013</a> was held at <a href="http://sicsr.ac.in/">Symbiosis Institute of Computer Studies and Research (SICSR)</a>, Pune, Maharashtra, India between February 15 to 17, 2013. I attended day one of the unconference.</p>
<img alt="poster" src="http://www.shakthimaan.com/Mambo/gallery/albums/album87/poster.jpg"></img>
<p>The first talk that I listened to was by Oyunbileg Baatar on “Screencasting Demos and HowTos”. He mentioned the various free/open source, desktop recording software available. He also gave a demo of <a href="http://recordmydesktop.sourceforge.net/about.php">recordMyDesktop</a>, and video editing using <a href="http://www.pitivi.org/">PiTiVi</a>.</p>
<p>After a short break, and a formal introduction, I began my session for the day - <a href="http://shakthimaan.com/downloads.html#introduction-to-gcc">“Introduction to GCC”</a>. Fedora 17 was installed in the labs for the participants to use. I started with a simple hello world example and the use of header files. I also explained the concepts of compilation and linking, and briefed them on the syntax of Makefiles. Examples on creating and using static and shared libraries were illustrated. We also discussed the different warning and error messages emitted by GCC. The platform-specific and optimization options were shown with examples. Students were not familiar with touch typing, and I had to demonstrate the use of <a href="http://klavaro.sourceforge.net/en/index.html">Klavaro</a> typing tutor.</p>
<img alt="GCC workshop" src="http://www.shakthimaan.com/Mambo/gallery/albums/album87/gcc_workshop.jpg"></img>
<p>The preliminary round for the programming contest was held in the afternoon. Thirty questions on C and systems programming were given to the participants to be answered in thirty minutes. I helped evaluate the answers. The practical test was to be conducted the following day. Thanks to <a href="http://neependra.net/">Neependra Khare</a> and Kiran Divarkar for organizing the programming contest.</p>
<p>I also attended the OpenStack mini-conf session in the evening where a demo of OpenStack was given by Kiran Murari. This was followed by a session on “OpenStack High Availability” by Syed Armani. Aditya Godbole’s closing session for the day on an “Introduction to Ruby” was informative. Few photos that were taken are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album87">/gallery</a>.</p>]]></description>
    <pubDate>Tue, 19 Feb 2013 04:10:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2013/02/19/gnunify-gcc-workshop/news.html</guid>
</item>
<item>
    <title>Fedora workshop, SITRC, Nashik</title>
    <link>http://www.shakthimaan.com/posts/2013/02/06/sitrc-fedora-workshop/news.html</link>
    <description><![CDATA[<p>A Fedora workshop was organized at <a href="http://sitrc.sandipfoundation.org/">Sandip Institute of Technology and Research Center (SITRC)</a>, <a href="http://en.wikipedia.org/wiki/Nashik">Nashik</a>, Maharashtra, India from February 2 to 3, 2013.</p>
<img alt="SITRC, Nashik" src="http://www.shakthimaan.com/Mambo/gallery/albums/album86/8_amphitheatre.jpg"></img>
<p>Day I</p>
<p>I began the day’s proceedings with the <a href="http://shakthimaan.com/downloads.html#i-want-2-do-project-tell-me-wat-2-do">“i-want-2-do-project. tell-me-wat-2-do-fedora”</a> presentation in the seminar hall at SITRC. The participants were introduced to mailing list, communication and effective project guidelines when working with free/open source software. This was followed by an introduction on window managers, and demo of the Fedora desktop, GNOME, Fluxbox, and console environments.</p>
<p>After lunch, I gave an introduction on system architecture, and installation concepts. Basics of compilation and cross-compilation topics were discussed. An introduction on git was given using the <a href="http://shakthimaan.com/downloads.html#di-git-ally-managing-love-letters">“di-git-ally managing love letters”</a> presentation. After a short tea break, we moved to the labs for a hands-on session on GCC. This is a <a href="http://shakthimaan.com/downloads.html#introduction-to-gcc">presentation</a> based on the book by Brian Gough, <a href="http://www.network-theory.co.uk/gcc/intro/">“An introduction to GCC”</a>. Practical lab exercises were given to teach students compilation and linking methods using GCC. I also briefed them on the use of Makefiles. C Language standards, platform-specific and optimization options with GCC were illustrated.</p>
<img alt="GCC lab session" src="http://www.shakthimaan.com/Mambo/gallery/albums/album86/10_lab_session_in_progress.jpg"></img>
<p>Day II</p>
<p>Lab exercises from the GCC presentation were practised on the second day, along with the creation and use of static and shared libraries. The different warning options supported by GCC were elaborated. A common list of error messages that newbies face were also discussed. After the lab session, I introduced them to cloud computing and <a href="http://fedorapeople.org/~russellb/openstack-lab-rhsummit-2012/index.html">OpenStack</a>, giving them an overview of the various components, interfaces, and specifications. I also gave them a demo of the OpenStack Essex release running on Fedora 17 (x86_64) with the Horizon web interface.</p>
<p>The college was affiliated to University of Pune, and had deployed GNU/Linux labs for their coursework. Now they are autonomous, and want to explore and expand their activities. They have a local user group called <a href="http://snashlug.wordpress.com/">SnashLUG</a>. The college is 15 km away from the city of Nashik, which is around 200 km from Pune. The bus journey from Pune to Nashik takes six hours, and you can book tickets online through <a href="http://www.msrtc.gov.in/">Maharashtra State Road Transport Corporation (MSRTC)</a>. There is frequent bus service between Pune and Nashik.</p>
<p>Thanks to Rahul Mahale for working with me for the past three months in planning and organizing this workshop. Thanks also to the Management, and Faculty of SITRC for the wonderful hospitality, and their support for the workshop.</p>
<p>Few photos taken during the workshop are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album86">/gallery</a>.</p>]]></description>
    <pubDate>Wed, 06 Feb 2013 05:10:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2013/02/06/sitrc-fedora-workshop/news.html</guid>
</item>
<item>
    <title>Dvorak keyboard layout</title>
    <link>http://www.shakthimaan.com/posts/2013/01/19/dvorak/news.html</link>
    <description><![CDATA[<blockquote>
<p>“The arrangement (QWERTY) of the letters on a typewriter is an example of the success of the least deserving method.” ~ Nassim Nicholas Taleb</p>
</blockquote>
<blockquote>
<p>“With early typewriters the mechanical arms would jam if two letters were hit in too rapid a sequence. So the classic QWERTY keyboard was designed to ‘slow down’ typing.” ~ Edward de Bono</p>
</blockquote>
<p>The continuous use of the QWERTY keyboard causes pain, and I am forced to rest my fingers. While it is good to take a break, it shouldn’t be done for the wrong reason. I started to look for alternate keyboard layouts to use, and a typing tutor to practise with. Dr. August Dvorak and Dr. William Dealey completed the Dvorak simplified keyboard layout in 1932.</p>
<img alt="Dvorak keyboard layout" src="http://upload.wikimedia.org/wikipedia/commons/2/25/KB_United_States_Dvorak.svg"></img>
<p>To add the the Dvorak keyboard layout to Gnome, select Applications -&gt; System Tools -&gt; System Settings. Choose “Region and Language”. Under the “Layout” tab, add Dvorak (English). Klavaro is a typing tutor that is available for Fedora. You can install it using:</p>
<pre class="shell"><code>$ sudo yum install klavaro</code></pre>
<p>There are five levels in Klavaro - introduction, basic course, adaptability, speed, and fluidity. After adding the Dvorak keyboard layout on Fedora, I started the exercises in Klavaro. At home I used Dvorak, while at work I used QWERTY. I was able to quickly reach 30 words per minute (wpm) with Dvorak. When I tried to go beyond 40 wpm, I was unconsciously still thinking, and using the QWERTY keyboard. To break that barrier, I switched full-time to use Dvorak, even at work. Speed was slow, initially, but after a month of practise I passed all the exercises in Klavaro.</p>
<img alt="Klavaro progress chart" src="http://shakthimaan.com/downloads/screenshots/klavaro-progress.png"></img>
<p>If you are not familiar with touch typing, it is best to start with Dvorak. I can now type continuously for hours, and my fingers don’t hurt. I also do take breaks occasionally.</p>
<p>Give it a try!</p>]]></description>
    <pubDate>Sat, 19 Jan 2013 11:20:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2013/01/19/dvorak/news.html</guid>
</item>
<item>
    <title>VLSI Design Conference, Pune, 2013</title>
    <link>http://www.shakthimaan.com/posts/2013/01/16/vlsid-2013/news.html</link>
    <description><![CDATA[<p>The <a href="http://www.vlsidesignconference.org/">26th International Conference on VLSI Design 2013 and the 12th International Conference on Embedded Systems</a> was held at the <a href="http://pune.regency.hyatt.com/">Hyatt Regency, Pune</a>, India between January 5-10, 2013. The first two days were tutorial sessions, while the main conference began on Monday, January 7, 2013.</p>
<img alt="26th VLSID 2013" src="http://shakthimaan.com/downloads/glv/2013/vlsid-2013/poster.JPG"></img>
<p>Day 1: Tutorial</p>
<p>On the first day, I attended the tutorial on “Concept to Product - Design, Verification &amp; Test: A Tutorial” by <a href="http://www.ece.wisc.edu/~saluja/">Prof. Kewal Saluja</a>, and <a href="http://www.ee.iitb.ac.in/~viren/">Prof. Virendra Singh</a>. Prof. Saluja started the tutorial with an introduction and history of VLSI. An overview of the VLSI realization process was given with an emphasis on synthesis. The theme of the conference was “green” technology, and hence the concepts of low power design were introduced. The challenges of multi-core and high performance design including cache coherence were elaborated. Prof. Singh explained the verification methodologies with an example of implementing a DVD player. Simulation and formal verification techniques were compared, with an overview on model checking. Prof. Saluja explained the basics of VLSI testing, differences between verification and testing, and the various testing techniques used. The challenges in VLSI testing were also discussed.</p>
<p>Day 2: Tutorial</p>
<p>On the second day, I attended the tutorial on “Formal Techniques for Hardware/Software Co-Verification” by <a href="http://www.kroening.com/">Prof. Daniel Kroening</a>, and <a href="http://www.cmi.ac.in/people/fac-profile.php?id=mksrivas">Prof. Mandayam Srinivas</a>. Prof. Kroening began the tutorial with the motivation for formal methods. Examples on SAT solvers, boundary model checking for hardware, and bounded program analysis for C programs were explained. Satisfiability modulo theories for bit-vectors, arrays and functions were illustrated with numerous examples. In the afternoon, Prof. Srinivas demoed formal verification for both Verilog and C. He shared the results of verification done for both a DSP and a microprocessor. The <a href"http: www.cprover.org ">CProver</a> tool has been released under a CMBC license. After discussion with Fedora Legal, and Prof. Kroening, it <a href="http://lists.fedoraproject.org/pipermail/legal/2013-January/002067.html">has been updated to a BSD license for inclusion in Fedora</a>. The <a href="http://www.cprover.org/VLSI2013/">presentation slides</a> used in the tutorial are available.</p>
<p>Day 3: Main conference</p>
<p>The first day of the main conference began with the keynote by <a href="http://www.lsi.com/about/ourstory/pages/management.aspx#Abhi">Mr. Abhi Talwalker</a>, CEO of LSI, on “Intelligent Silicon in the Data-centric Era”. He addressed the challenges in bridging the data deluge gap, latency issues in data centers, and energy efficient buildings. The second keynote of the day was given by <a href="http://en.wikipedia.org/wiki/Ruchir_Puri">Dr. Ruchir Puri</a>, IBM Fellow, on “Opportunities and Challenges for High Performance Microprocessor Designs and Design Automation”. Dr. Ruchir spoke about the various IBM multi-core processors, and the challenges facing multi-core designs - software parallelism, socket bandwidth, power, and technology complexity. He also said that more EDA innovation needs to come at the system level.</p>
<img alt="Dias" src="http://shakthimaan.com/downloads/glv/2013/vlsid-2013/dias.JPG"></img>
<p>After the keynote, I attended the “C1. Embedded Architecture” track sessions. <a href="http://www.cse.unsw.edu.au/~liangt/">Liang Tang</a> presented his paper on “Processor for Reconfigurable Baseband Modulation Mapping”. <a href"http: www.pdn.ac.lk eng pages departmentHome CE otherpages staff Dr.Swarnalatha%20Radhakrishnan.html">Dr. Swarnalatha Radhakrishnan</a> then presented her paper on “A Study on Instruction-set Selection Using Multi-application Based Application Specific Instruction-Set Processors”. She explained about ASIPs (Application Specific Instruction Set Processor), and shared test results on choosing specific instruction sets based on the application domain. The final paper for the session was presented by <a href="http://www.princeton.edu/~jha/">Prof. Niraj K. Jha</a> on “Localized Heating for Building Energy Efficiency”. He and his team at Princeton have used ultrasonic sensors to implement localized heating. A similar approach is planned for lighting as well.</p>
<p>Post-lunch, I attended the sessions for the track “B2. Test Cost Reduction and Safety”. The honourable chief minister of Maharashtra, <a href="http://en.wikipedia.org/wiki/Prithviraj_Chavan">Shri. Prithviraj Chavan</a>, arrived in the afternoon to formally inaugurate the conference. He is an engineer who graduated from the University of California, Berkeley, and said that he was committed to put Pune on the semiconductor map. The afternoon keynote was given by <a href="http://investor.marvell.com/phoenix.zhtml?c=120802&amp;p=irol-govBio&amp;ID=198477">Mr. Kishore Manghnani</a> from Marvell, on “Semiconductors in Smart Energy Products”. He primarily discussed about LEDs, and their applications. This was followed by a panel discussion on “Low power design”. There was an emphasis to create system level, software architecture techniques to increase leverage in low power design. For the last track of the day, I attended the sessions on “C3. Design and Synthesis of Reversible Logic”. The <a href="http://keccak.noekeon.org/">Keccak</a> sponge function family has been chosen to become the SHA-3 standard.</p>
<p>Day 4: Main conference</p>
<p>The second day of the main conference began with a recorded keynote by <a href="http://investor.appliedmicro.com/phoenix.zhtml?c=78121&amp;p=irol-govBio&amp;ID=192748">Dr. Paramesh Gopi</a>, AppliedMicro, on “Cloud computing needs at less power and low cost” followed by a talk by <a href="http://phx.corporate-ir.net/phoenix.zhtml?c=78121&amp;p=irol-govManage">Mr. Amal Bommireddy</a>, AppliedMicro, on “Challenges of First pass Silicon”. Mr. Bommireddy discussed the factors affecting first pass success - RTL verification, IP verification, physical design, routing strategies, package design, and validation board design. The second keynote of the day was by <a href="http://www.hhmi.org/research/fellows/scheffer_bio.html">Dr. Louis Scheffer</a> from the Howard Hughes Medical Institute, on “Deciphering the brain, cousin to the chip”. It was a brilliant talk on applying chip debugging techniques to inspect and analyse how the brain works.</p>
<p>After the keynote, I visited the exhibition hall where companies had their products displayed in their respective stalls. AppliedMicro had a demo of their <a href="http://www.apm.com/products/x-gene">X-gene</a> ARM64 platform running Ubuntu. They did mention to me that Fedora runs on their platform. Marvell had demonstrated their embedded and control solutions running on Fedora. ARM had their <a href="http://mbed.org">mbed.org</a> and <a href="http://embeddedacademic.com">embeddedacademic.com</a> kits on display for students. Post-lunch, was an excellent keynote by <a href="http://www.intel.com/jobs/virtualevent/bio/singh.htm">Dr. Vivek Singh</a>, Intel Fellow, titled “Duniyaa Maange Moore!”. He started with what people need - access, connectivity, education, and healthcare, and went to discuss the next in line for Intel’s manufacturing process. The 14nm technology is scheduled to be operational by end of 2013, while 10nm is planned for 2015. They have also started work on 7nm manufacturing processes. This was followed by a panel discussion on “Expectations of Manufacturing Sector from Semiconductor and Embedded System Companies” where the need to bridge the knowledge gap between mechanical and VLSI/embedded engineers was emphasized.</p>
<p>Day 5: Main conference</p>
<p>The final day of the main conference began with the keynote by <a href="http://www.cse.psu.edu/~vijay/">Dr. Vijaykrishnan Narayanan</a> on “Embedded Vision Systems”, where he showed the current research in intelligent cameras, augmented reality, and interactive systems. I attended the sessions for the track “C7. Advances in Functional Verification”, and “C8. Logic Synthesis and Design”. Post-lunch, <a href="http://www.linkedin.com/pub/ken-chang/4/279/2b4">Dr. Ken Chang</a> gave his keynote on “Advancing High Performance System-on-Package via Heterogeneous 3-D Integration”. He said that Intel’s 22nm Ivy Bridge which uses FinFETs took nearly 15 years to productize, but look promising for the future. Co(CoS) Chip on Chip on Substrate, and (CoW)oS Chip on Wafer on Substrate technologies were illustrated. Many hardware design houses use 15 FPGAs on a board for testing. The Xilinx Virtex-7HT FPGA has analog, memory, and ARM microprocessor integrated on a single chip giving a throughput of 2.8 Terabits/second. He also mentioned that Known Good Die (KGD) methodologies are still emerging in the market. For the last track of the conference, I attended the sessions on “C9. Advances in Circuit Simulation, Analysis and Design”.</p>
<p>Thanks to Red Hat for sponsoring me to attend the conference.</p>]]></description>
    <pubDate>Wed, 16 Jan 2013 10:50:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2013/01/16/vlsid-2013/news.html</guid>
</item>
<item>
    <title>Lonavla</title>
    <link>http://www.shakthimaan.com/posts/2013/01/02/lonavla/news.html</link>
    <description><![CDATA[<img alt="Pune-Mumbai expressway at Khandala" src="http://www.shakthimaan.com/Mambo/gallery/albums/album85/39_pune_mumbai_expressway_at_khandala.jpg"></img><br />
<img alt="Karla caves" src="http://www.shakthimaan.com/Mambo/gallery/albums/album85/13_karla_caves.jpg"></img><br />
<img alt="Rabindranath Tagore wax model" src="http://www.shakthimaan.com/Mambo/gallery/albums/album85/22_tagore_wax.jpg"></img><br />
<p>More photos available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album85">/gallery</a>.</p>]]></description>
    <pubDate>Wed, 02 Jan 2013 06:50:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2013/01/02/lonavla/news.html</guid>
</item>
<item>
    <title>csmith</title>
    <link>http://www.shakthimaan.com/posts/2012/12/27/csmith/news.html</link>
    <description><![CDATA[<p><a href="http://embed.cs.utah.edu/csmith/">csmith</a> is a tool for testing compilers. It can generate random C programs for the C99 standard. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code>$ sudo yum install csmith</code></pre>
<p>The following simple bash script, given by the developers, demonstrates its usage:</p>
<pre class="shell"><code>set -e
while [ true ]
do
  csmith &gt; test.c;
  gcc-4.0 -I${CSMITH_PATH}/runtime -O -w test.c -o /dev/null;
done</code></pre>
<p>There are quite a number of options you can use to tell csmith to generate the programs that you want. For example, if you don’t want argc to be passed to the <em>main</em> function, you can use:</p>
<pre class="shell"><code>$ csmith --no-argc</code></pre>
<p>The <em>main</em> function in the generated C program will resemble:</p>
<pre class="sourceCode c"><code class="sourceCode c">...
<span class="dt">int</span> main (<span class="dt">void</span>)
{
...
}</code></pre>
<p>The maximum number of fields in a struct that csmith will generate is ten. You can increase it by using the –max-struct-fields option:</p>
<pre class="shell"><code>$ csmith --max-struct-fields 15</code></pre>
<p>A structure that was created with the above option is shown below:</p>
<pre class="sourceCode c"><code class="sourceCode c">...
<span class="kw">struct</span> S1 {
   <span class="dt">unsigned</span> f0 : <span class="dv">20</span>;
   <span class="dt">const</span> <span class="dt">signed</span> f1 : <span class="dv">2</span>;
   <span class="dt">volatile</span> <span class="dt">signed</span> f2 : <span class="dv">15</span>;
   <span class="dt">signed</span> f3 : <span class="dv">23</span>;
   <span class="dt">unsigned</span> f4 : <span class="dv">9</span>;
   <span class="dt">signed</span> f5 : <span class="dv">1</span>;
   <span class="dt">volatile</span> <span class="dt">uint8_t</span>  f6;
   <span class="dt">const</span> <span class="dt">volatile</span> <span class="dt">signed</span> f7 : <span class="dv">12</span>;
   <span class="dt">const</span> <span class="dt">volatile</span> <span class="dt">signed</span> f8 : <span class="dv">20</span>;
   <span class="dt">signed</span> f9 : <span class="dv">27</span>;
   <span class="dt">const</span> <span class="dt">unsigned</span> f10 : <span class="dv">11</span>;
   <span class="dt">uint16_t</span>  f11;
};
...</code></pre>
<p>csmith also produces a brief summary or statistics on the program it generates. A sample output is shown below:</p>
<pre class="sourceCode c"><code class="sourceCode c"><span class="co">/************************ statistics *************************</span>
<span class="co">XXX max struct depth: 0</span>
<span class="co">breakdown:</span>
<span class="co">   depth: 0, occurrence: 278</span>
<span class="co">XXX total union variables: 13</span>

<span class="co">XXX non-zero bitfields defined in structs: 0</span>
<span class="co">XXX zero bitfields defined in structs: 0</span>
<span class="co">XXX const bitfields defined in structs: 0</span>
<span class="co">XXX volatile bitfields defined in structs: 0</span>
<span class="co">XXX structs with bitfields in the program: 0</span>
<span class="co">breakdown:</span>
<span class="co">XXX full-bitfields structs in the program: 0</span>
<span class="co">breakdown:</span>
<span class="co">XXX times a bitfields struct's address is taken: 0</span>
<span class="co">XXX times a bitfields struct on LHS: 0</span>
<span class="co">XXX times a bitfields struct on RHS: 0</span>
<span class="co">XXX times a single bitfield on LHS: 0</span>
<span class="co">XXX times a single bitfield on RHS: 0</span>

<span class="co">XXX max expression depth: 41</span>
<span class="co">breakdown:</span>
<span class="co">   depth: 1, occurrence: 81</span>
<span class="co">   depth: 2, occurrence: 19</span>
<span class="co">   depth: 3, occurrence: 2</span>
<span class="co">   depth: 4, occurrence: 3</span>
<span class="co">   depth: 5, occurrence: 1</span>
<span class="co">   depth: 10, occurrence: 1</span>
<span class="co">   depth: 11, occurrence: 1</span>
<span class="co">   depth: 12, occurrence: 1</span>
<span class="co">   depth: 13, occurrence: 3</span>
<span class="co">   depth: 14, occurrence: 1</span>
<span class="co">   depth: 15, occurrence: 1</span>
<span class="co">   depth: 16, occurrence: 1</span>
<span class="co">   depth: 18, occurrence: 2</span>
<span class="co">   depth: 21, occurrence: 2</span>
<span class="co">   depth: 28, occurrence: 1</span>
<span class="co">   depth: 32, occurrence: 1</span>
<span class="co">   depth: 40, occurrence: 1</span>
<span class="co">   depth: 41, occurrence: 1</span>

<span class="co">XXX total number of pointers: 191</span>

<span class="co">XXX times a variable address is taken: 88</span>
<span class="co">XXX times a pointer is dereferenced on RHS: 93</span>
<span class="co">breakdown:</span>
<span class="co">   depth: 1, occurrence: 85</span>
<span class="co">   depth: 2, occurrence: 5</span>
<span class="co">   depth: 3, occurrence: 3</span>
<span class="co">XXX times a pointer is dereferenced on LHS: 137</span>
<span class="co">breakdown:</span>
<span class="co">   depth: 1, occurrence: 129</span>
<span class="co">   depth: 2, occurrence: 5</span>
<span class="co">   depth: 3, occurrence: 2</span>
<span class="co">   depth: 4, occurrence: 1</span>
<span class="co">XXX times a pointer is compared with null: 16</span>
<span class="co">XXX times a pointer is compared with address of another variable: 2</span>
<span class="co">XXX times a pointer is compared with another pointer: 5</span>
<span class="co">XXX times a pointer is qualified to be dereferenced: 4443</span>

<span class="co">XXX max dereference level: 5</span>
<span class="co">breakdown:</span>
<span class="co">   level: 0, occurrence: 0</span>
<span class="co">   level: 1, occurrence: 501</span>
<span class="co">   level: 2, occurrence: 29</span>
<span class="co">   level: 3, occurrence: 13</span>
<span class="co">   level: 4, occurrence: 2</span>
<span class="co">   level: 5, occurrence: 1</span>
<span class="co">XXX number of pointers point to pointers: 57</span>
<span class="co">XXX number of pointers point to scalars: 132</span>
<span class="co">XXX number of pointers point to structs: 0</span>
<span class="co">XXX percent of pointers has null in alias set: 42.4</span>
<span class="co">XXX average alias set size: 1.73</span>

<span class="co">XXX times a non-volatile is read: 668</span>
<span class="co">XXX times a non-volatile is write: 407</span>
<span class="co">XXX times a volatile is read: 6</span>
<span class="co">XXX    times read thru a pointer: 2</span>
<span class="co">XXX times a volatile is write: 1</span>
<span class="co">XXX    times written thru a pointer: 0</span>
<span class="co">XXX times a volatile is available for access: 73</span>
<span class="co">XXX percentage of non-volatile access: 99.4</span>

<span class="co">XXX forward jumps: 0</span>
<span class="co">XXX backward jumps: 1</span>

<span class="co">XXX stmts: 81</span>
<span class="co">XXX max block depth: 5</span>
<span class="co">breakdown:</span>
<span class="co">   depth: 0, occurrence: 27</span>
<span class="co">   depth: 1, occurrence: 18</span>
<span class="co">   depth: 2, occurrence: 17</span>
<span class="co">   depth: 3, occurrence: 10</span>
<span class="co">   depth: 4, occurrence: 5</span>
<span class="co">   depth: 5, occurrence: 4</span>

<span class="co">XXX percentage a fresh-made variable is used: 16.2</span>
<span class="co">XXX percentage an existing variable is used: 83.8</span>
<span class="co">********************* end of statistics **********************/</span></code></pre>
<p>If you don’t want the statistics, and would like a brief output, you can use the –concise option with csmith:</p>
<pre class="shell"><code>$ csmith --concise</code></pre>
<p>You are encouraged to read the <a href="http://embed.cs.utah.edu/csmith/using.html">usage guide</a> for more information on using the tool.</p>]]></description>
    <pubDate>Thu, 27 Dec 2012 09:20:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/12/27/csmith/news.html</guid>
</item>
<item>
    <title>ghc-data-memocombinators</title>
    <link>http://www.shakthimaan.com/posts/2012/12/15/ghc-data-memocombinators/news.html</link>
    <description><![CDATA[<p>The <a href="http://hackage.haskell.org/package/data-memocombinators">data-memocombinators</a> package provides combinators for creating memo tables. It can build up data similar to a lookup table. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code>$ sudo yum install ghc-data-memocombinators-devel</code></pre>
<p>The time and memory consumption for a command execution can be viewed in ghci by setting the following:</p>
<pre class="shell"><code>ghci&gt; :set +s</code></pre>
<p>Suppose we wish to apply memoization to the Fibonacci function:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Data.MemoCombinators</span> <span class="kw">as</span> <span class="dt">Memo</span>

fib <span class="fu">=</span> Memo.integral fib'
    <span class="kw">where</span>
    fib' <span class="dv">0</span> <span class="fu">=</span> <span class="dv">0</span>
    fib' <span class="dv">1</span> <span class="fu">=</span> <span class="dv">1</span>
    fib' x <span class="fu">=</span> fib (x<span class="dv">-1</span>) <span class="fu">+</span> fib (x<span class="dv">-2</span>)</code></pre>
<p>The 10,000th Fibonacci number using the fib function is returned in a much shorter time in the second attempt:</p>
<pre class="shell"><code>ghci&gt; fib 10000
...
(0.15 secs, 87703888 bytes)

ghci&gt; fib 10000
...
(0.03 secs, 9652144 bytes)</code></pre>
<p>We can also specify a range for which the memoization is to be applied. In the following example, it is applied only for the numbers between 1 and 1000:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Data.MemoCombinators</span> <span class="kw">as</span> <span class="dt">Memo</span>

fib2 <span class="fu">=</span> Memo.arrayRange (<span class="dv">1</span>, <span class="dv">1000</span>) fib'
    <span class="kw">where</span>
    fib' <span class="dv">0</span> <span class="fu">=</span> <span class="dv">0</span>
    fib' <span class="dv">1</span> <span class="fu">=</span> <span class="dv">1</span>
    fib' x <span class="fu">=</span> fib2 (x<span class="dv">-1</span>) <span class="fu">+</span> fib2 (x<span class="dv">-2</span>)</code></pre>
<p>Using fib2 to return the 1000th Fibonacci number, we observe the following:</p>
<pre class="shell"><code>ghci&gt; fib2 1000
...
(0.04 secs, 10804024 bytes)

ghci&gt; fib2 1000
...
(0.02 secs, 7384584 bytes)</code></pre>
<p>The mulHundred function takes an integer list as an argument and muliplies each element in the list with 100. We want to tabulate the values for faster lookup using:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Data.MemoCombinators</span> <span class="kw">as</span> <span class="dt">Memo</span>

mulHundred <span class="fu">=</span> (Memo.list Memo.integral) b
  <span class="kw">where</span>
  b [] <span class="fu">=</span> []
  b (x<span class="fu">:</span>xs) <span class="fu">=</span> [<span class="dv">100</span> <span class="fu">*</span> x]  <span class="fu">++</span> mulHundred xs </code></pre>
<p>Running the mulHundred function in ghci:</p>
<pre class="shell"><code>ghci&gt; mulHundred [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[100,200,300,400,500,600,700,800,900,1000]
(0.03 secs, 9592680 bytes)

ghci&gt; mulHundred [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[100,200,300,400,500,600,700,800,900,1000]
(0.02 secs, 8426040 bytes)</code></pre>
<p>We can also apply memoization for quicksort. For example:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Data.MemoCombinators</span> <span class="kw">as</span> <span class="dt">Memo</span>

quicksort <span class="fu">=</span> (Memo.list Memo.integral) quicksort' <span class="kw">where</span>
          quicksort' [] <span class="fu">=</span> []
          quicksort' (p<span class="fu">:</span>xs) <span class="fu">=</span> (quicksort lesser) <span class="fu">++</span> [p] <span class="fu">++</span> (quicksort greater)
                            <span class="kw">where</span>
                            lesser <span class="fu">=</span> <span class="fu">filter</span> (<span class="fu">&lt;</span> p) xs
                            greater <span class="fu">=</span> <span class="fu">filter</span> (<span class="fu">&gt;=</span> p) xs</code></pre>
<p>Subsequent sorting of the input is faster:</p>
<pre class="shell"><code>ghci&gt; let input = [x | x &lt;- [100, 99..1]]
(0.02 secs, 7895376 bytes)

ghci&gt; quicksort input
[1,2,..100]
(0.04 secs, 19918312 bytes)

ghci&gt; quicksort input
[1,2,..100]
(0.01 secs, 7925856 bytes)</code></pre>
<p>If we would like to create a table of results for the AND operation, we could use Memo.bool:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Data.MemoCombinators</span> <span class="kw">as</span> <span class="dt">Memo</span>

andGate <span class="fu">=</span> Memo.bool new
  <span class="kw">where</span>
  new x y <span class="fu">=</span> x <span class="fu">&amp;&amp;</span> y</code></pre>
<p>For example:</p>
<pre class="shell"><code>ghci&gt; False &amp;&amp; True
False
(0.02 secs, 8537120 bytes)

ghci&gt; andGate False True
False
(0.02 secs, 8442648 bytes)

ghci&gt; andGate False True
False
(0.01 secs, 7376560 bytes)</code></pre>]]></description>
    <pubDate>Sat, 15 Dec 2012 08:20:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/12/15/ghc-data-memocombinators/news.html</guid>
</item>
<item>
    <title>OpenStack workshop, Symbiosis, Pune, December 1, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/12/03/openstack-symbiosis-pune-december-2012/news.html</link>
    <description><![CDATA[<p>A workshop on <a href="http://www.openstack.org/">OpenStack</a> was conducted on Saturday, December 1, 2012 at the <a href="http://sicsr.ac.in/">Symbiosis Institute of Computer Studies and Research (SICSR)</a>, Pune, India. Both theory and lab sessions were organized for the students. I started the proceedings using Perry Myers’s presentation on “Introduction and Overview of OpenStack for IaaS (Infrastructure as a Service) Clouds” for the Essex release. The various building blocks of OpenStack with their functionality was explained. An overall big picture of the architecture was presented to them with illustrations.</p>
<img src="http://www.shakthimaan.com/downloads/glv/2012/openstack-symbiosis-2012/openstack-workshop-lab.JPG" alt="OpenStack hands-on session"></img>
<p>The <a href="http://fedorapeople.org/~russellb/openstack-lab-rhsummit-2012/">OpenStack Lab Guide</a> was then given to the participants to setup their own OpenStack private cloud. Some of them had brought their own laptops, while others used the Fedora machines in the labs. We started by setting up the Keystone service, and adding users for authentication. The Glance service was then installed, and configured. A <a href="http://docs.openstack.org/trunk/openstack-compute/admin/content/starting-images.html">Fedora 17 and cirros image</a> were then imported into Glance. The Nova service was then setup, and a SSH keypair was created for testing.</p>
<p>The Horizon dashboard user interface was used to start a virtual machine instance. Using ssh and the created keypair, we were able to login to the virtual machine and use it. curl was used to test the different REST API on the running stack. I also showed them simple Python examples to demonstrate the OpenStack APIs. As a final presentation for the day, I gave an introduction on libvirtd, and KVM.</p>
<p>Thanks to Manoj Aswani for working with me in organizing this workshop. Thanks also to Perry Myers and Mark McLoughlin for permission to use their presentation.</p>]]></description>
    <pubDate>Mon, 03 Dec 2012 16:20:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/12/03/openstack-symbiosis-pune-december-2012/news.html</guid>
</item>
<item>
    <title>ghc-arrows</title>
    <link>http://www.shakthimaan.com/posts/2012/12/01/ghc-arrows/news.html</link>
    <description><![CDATA[<p>Arrows provide a generalization for monads, which was introduced by John Hughes. The <a href="http://hackage.haskell.org/package/arrows">arrows</a> package provides classes that extend the Arrows class. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code>$ sudo yum install ghc-arrows-devel</code></pre>
<p>Consider the identity function defined using the arrows notation:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="ot">{-# LANGUAGE Arrows #-}</span>
 
<span class="kw">import</span> <span class="dt">Control.Arrow</span> (returnA)
 
<span class="ot">idA ::</span> a <span class="ot">-&gt;</span> a
idA <span class="fu">=</span> proc a <span class="ot">-&gt;</span> returnA <span class="fu">-&lt;</span> a</code></pre>
<p>The idA function returns the given input as shown below:</p>
<pre class="shell"><code>*Main&gt; idA 6
6
*Main&gt; idA True
True
*Main&gt; idA &quot;Eureka!&quot;
&quot;Eureka!&quot;</code></pre>
<p>A mulTwo function that multiplies an integer by two can be written as:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="ot">{-# LANGUAGE Arrows #-}</span>
 
<span class="kw">import</span> <span class="dt">Control.Arrow</span> (returnA)

<span class="ot">mulTwo ::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Int</span>
mulTwo <span class="fu">=</span> proc a <span class="ot">-&gt;</span> returnA <span class="fu">-&lt;</span> (a <span class="fu">*</span> <span class="dv">2</span>)</code></pre>
<p>Testing mulTwo with ghci:</p>
<pre class="shell"><code>*Main&gt; mulTwo 4
8
*Main&gt; mulTwo 5
10</code></pre>
<p>We can also use the do notation with arrows. For example:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="ot">{-# LANGUAGE Arrows #-}</span>
 
<span class="kw">import</span> <span class="dt">Control.Arrow</span> (returnA)

<span class="ot">mulFour ::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Int</span>
mulFour <span class="fu">=</span> proc a <span class="ot">-&gt;</span> <span class="kw">do</span> b <span class="ot">&lt;-</span> mulTwo <span class="fu">-&lt;</span> a
                       mulTwo <span class="fu">-&lt;</span> b</code></pre>
<p>Loading mulFour in ghci:</p>
<pre class="shell"><code>*Main&gt; mulFour 2
8
*Main&gt; mulFour 3
12</code></pre>
<p>Arrows also supports the use of conditional statements. An example when used with the if … then … else construct is as follows:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="ot">{-# LANGUAGE Arrows #-}</span>
 
<span class="kw">import</span> <span class="dt">Control.Arrow</span> (returnA)

<span class="ot">condMul ::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Int</span>
condMul <span class="fu">=</span> proc a <span class="ot">-&gt;</span>
               <span class="kw">if</span> a <span class="fu">&lt;</span> <span class="dv">5</span>
               <span class="kw">then</span> returnA <span class="fu">-&lt;</span> (a <span class="fu">*</span> <span class="dv">2</span>)
               <span class="kw">else</span> returnA <span class="fu">-&lt;</span> (a <span class="fu">*</span> <span class="dv">3</span>)                      </code></pre>
<p>The condMul function multiplies the input integer by two if it is less than five, and with three when greater than five:</p>
<pre class="shell"><code>*Main&gt; condMul 2
4
*Main&gt; condMul 6
18</code></pre>]]></description>
    <pubDate>Sat, 01 Dec 2012 16:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/12/01/ghc-arrows/news.html</guid>
</item>
<item>
    <title>SuperLU</title>
    <link>http://www.shakthimaan.com/posts/2012/11/10/SuperLU/news.html</link>
    <description><![CDATA[<p><a href="http://crd-legacy.lbl.gov/~xiaoye/SuperLU/">SuperLU</a> is a library for solving sparse linear system of equations AX = B. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code>$ sudo yum install SuperLU-devel</code></pre>
<p>The superlu.c 5x5 example in the sources demonstrates the use of the SuperLU library:</p>
<pre class="sourceCode c"><code class="sourceCode c"><span class="ot">#include &quot;slu_ddefs.h&quot;</span>

main(<span class="dt">int</span> argc, <span class="dt">char</span> *argv[])
{
    SuperMatrix A, L, U, B;
    <span class="dt">double</span>   *a, *rhs;
    <span class="dt">double</span>   s, u, p, e, r, l;
    <span class="dt">int</span>      *asub, *xa;
    <span class="dt">int</span>      *perm_r; <span class="co">/* row permutations from partial pivoting */</span>
    <span class="dt">int</span>      *perm_c; <span class="co">/* column permutation vector */</span>
    <span class="dt">int</span>      nrhs, info, i, m, n, nnz, permc_spec;
    superlu_options_t options;
    SuperLUStat_t stat;

    <span class="co">/* Initialize matrix A. */</span>
    m = n = <span class="dv">5</span>;
    nnz = <span class="dv">12</span>;
    <span class="kw">if</span> ( !(a = doubleMalloc(nnz)) ) ABORT(<span class="st">&quot;Malloc fails for a[].&quot;</span>);
    <span class="kw">if</span> ( !(asub = intMalloc(nnz)) ) ABORT(<span class="st">&quot;Malloc fails for asub[].&quot;</span>);
    <span class="kw">if</span> ( !(xa = intMalloc(n<span class="dv">+1</span>)) ) ABORT(<span class="st">&quot;Malloc fails for xa[].&quot;</span>);
    s = <span class="fl">19.0</span>; u = <span class="fl">21.0</span>; p = <span class="fl">16.0</span>; e = <span class="fl">5.0</span>; r = <span class="fl">18.0</span>; l = <span class="fl">12.0</span>;
    a[<span class="dv">0</span>] = s; a[<span class="dv">1</span>] = l; a[<span class="dv">2</span>] = l; a[<span class="dv">3</span>] = u; a[<span class="dv">4</span>] = l; a[<span class="dv">5</span>] = l;
    a[<span class="dv">6</span>] = u; a[<span class="dv">7</span>] = p; a[<span class="dv">8</span>] = u; a[<span class="dv">9</span>] = e; a[<span class="dv">10</span>]= u; a[<span class="dv">11</span>]= r;
    asub[<span class="dv">0</span>] = <span class="dv">0</span>; asub[<span class="dv">1</span>] = <span class="dv">1</span>; asub[<span class="dv">2</span>] = <span class="dv">4</span>; asub[<span class="dv">3</span>] = <span class="dv">1</span>;
    asub[<span class="dv">4</span>] = <span class="dv">2</span>; asub[<span class="dv">5</span>] = <span class="dv">4</span>; asub[<span class="dv">6</span>] = <span class="dv">0</span>; asub[<span class="dv">7</span>] = <span class="dv">2</span>;
    asub[<span class="dv">8</span>] = <span class="dv">0</span>; asub[<span class="dv">9</span>] = <span class="dv">3</span>; asub[<span class="dv">10</span>]= <span class="dv">3</span>; asub[<span class="dv">11</span>]= <span class="dv">4</span>;
    xa[<span class="dv">0</span>] = <span class="dv">0</span>; xa[<span class="dv">1</span>] = <span class="dv">3</span>; xa[<span class="dv">2</span>] = <span class="dv">6</span>; xa[<span class="dv">3</span>] = <span class="dv">8</span>; xa[<span class="dv">4</span>] = <span class="dv">10</span>; xa[<span class="dv">5</span>] = <span class="dv">12</span>;

    <span class="co">/* Create matrix A in the format expected by SuperLU. */</span>
    dCreate_CompCol_Matrix(&amp;A, m, n, nnz, a, asub, xa, SLU_NC, SLU_D, SLU_GE);
    
    <span class="co">/* Create right-hand side matrix B. */</span>
    nrhs = <span class="dv">1</span>;
    <span class="kw">if</span> ( !(rhs = doubleMalloc(m * nrhs)) ) ABORT(<span class="st">&quot;Malloc fails for rhs[].&quot;</span>);
    <span class="kw">for</span> (i = <span class="dv">0</span>; i &lt; m; ++i) rhs[i] = <span class="fl">1.0</span>;
    dCreate_Dense_Matrix(&amp;B, m, nrhs, rhs, m, SLU_DN, SLU_D, SLU_GE);

    <span class="kw">if</span> ( !(perm_r = intMalloc(m)) ) ABORT(<span class="st">&quot;Malloc fails for perm_r[].&quot;</span>);
    <span class="kw">if</span> ( !(perm_c = intMalloc(n)) ) ABORT(<span class="st">&quot;Malloc fails for perm_c[].&quot;</span>);

    <span class="co">/* Set the default input options. */</span>
    set_default_options(&amp;options);
    options.ColPerm = NATURAL;

    <span class="co">/* Initialize the statistics variables. */</span>
    StatInit(&amp;stat);

    <span class="co">/* Solve the linear system. */</span>
    dgssv(&amp;options, &amp;A, perm_c, perm_r, &amp;L, &amp;U, &amp;B, &amp;stat, &amp;info);
    
    dPrint_CompCol_Matrix(<span class="st">&quot;A&quot;</span>, &amp;A);
    dPrint_CompCol_Matrix(<span class="st">&quot;U&quot;</span>, &amp;U);
    dPrint_SuperNode_Matrix(<span class="st">&quot;L&quot;</span>, &amp;L);
    print_int_vec(<span class="st">&quot;</span><span class="ch">\n</span><span class="st">perm_r&quot;</span>, m, perm_r);

    <span class="co">/* De-allocate storage */</span>
    SUPERLU_FREE (rhs);
    SUPERLU_FREE (perm_r);
    SUPERLU_FREE (perm_c);
    Destroy_CompCol_Matrix(&amp;A);
    Destroy_SuperMatrix_Store(&amp;B);
    Destroy_SuperNode_Matrix(&amp;L);
    Destroy_CompCol_Matrix(&amp;U);
    StatFree(&amp;stat);
}</code></pre>
<p>Running the program produces the following output:</p>
<pre class="shell"><code>$ ./superlu

CompCol matrix A:
Stype 0, Dtype 1, Mtype 0
nrow 5, ncol 5, nnz 12
nzval: 19.000000  12.000000  12.000000  21.000000  12.000000  12.000000  21.000000  16.000000  21.000000  5.000000  21.000000  18.000000  
rowind: 0  1  4  1  2  4  0  2  0  3  3  4  
colptr: 0  3  6  8  10  12  

CompCol matrix U:
Stype 0, Dtype 1, Mtype 4
nrow 5, ncol 5, nnz 11
nzval: 21.000000  -13.263158  7.578947  21.000000  
rowind: 0  1  2  0  
colptr: 0  0  0  1  4  4  

SuperNode matrix L:
Stype 3, Dtype 1, Mtype 1
nrow 5, ncol 5, nnz 11, nsuper 2
nzval:
0	0	1.900000e+01
1	0	6.315789e-01
4	0	6.315789e-01
1	1	2.100000e+01
2	1	5.714286e-01
4	1	5.714286e-01
1	2	-1.326316e+01
2	2	2.357895e+01
4	2	-2.410714e-01
3	3	5.000000e+00
4	3	-7.714286e-01
3	4	2.100000e+01
4	4	3.420000e+01

nzval_colptr: 0  3  6  9  11  13  
rowind: 0  1  4  1  2  4  3  4  
rowind_colptr: 0  3  6  6  8  8  
col_to_sup: 0  1  1  2  2  
sup_to_col: 0  1  3  5  

perm_r
0	0
1	1
2	2
3	3
4	4</code></pre>
<p>The <a href="http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_ug.pdf">SuperLU User’s Guide</a> provides detailed documentation on the algorithms and usage of three libraries used to solve sparse linear systems.</p>]]></description>
    <pubDate>Sat, 10 Nov 2012 04:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/11/10/SuperLU/news.html</guid>
</item>
<item>
    <title>Fedora Activity Day, RVCE, Bengaluru, October 7, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/10/08/fad-rvce-bengaluru-october-2012/news.html</link>
    <description><![CDATA[<p>A <a href="https://fedoraproject.org/wiki/FAD_Bengaluru_2012">Fedora Activity Day</a> was organized at <a href="http://www.rvce.edu.in/">R. V. College of Engineering</a>, Bengaluru on Sunday, October 7, 2012. The participants were students from the Master of Computer Applications (MCA) department.</p>
<p>I started the day’s proceedings on best <a href="http://shakthimaan.com/downloads.html#i-want-2-do-project-tell-me-wat-2-do">communication practices, project guidelines</a> that need to be followed, and introduced the audience to the various Fedora sub-projects that they can get started with. The next session was on version control systems, and their importance with an <a href="http://shakthimaan.com/downloads.html#di-git-ally-managing-love-letters">introduction to Git</a>. We had a hands-on session where the participants practised simple Git commands.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album84/4_git_session.jpg" alt="Git hands-on session"></img>
<p><a href="https://fedoraproject.org/wiki/User:Kumarpraveen">Praveen Kumar</a> (HP) then spoke about Bugzilla, and how one can file bugs for Fedora. He also explained how to write meaningful bug reports.</p>
<p>Post-lunch, I introduced them to packaging concepts and terminology. Using the <a href="http://shakthimaan.com/downloads.html#packaging-red-hot-paneer-butter-masala">RPM packaging presentation</a>, we taught them how to build, and test RPMs. Praveen Kumar explained the Fedora package review process, and the various tools and infrastructure that we use for the same.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album84/6_pk_bugzilla.jpg" alt="Praveen Kumar on Bugzilla"></img>
<p>The final session of the day was from <a href="https://fedoraproject.org/wiki/User:Charlesrose">Charles Rose</a> (Dell) who introduced the participants to virtualization with KVM on Fedora. He also addressed the basic concepts involved in virtualization with numerous examples. The department lab is planning to move all their backend services to Virtual Machines.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album84/8_qemu_cmd_line.jpg" alt="Charles Rose on Virtualization"></img>
<p>Thanks to Prof. Renuka Prasad for working with us in organizing this workshop.</p>
<p>More photos are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album84">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 08 Oct 2012 10:45:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/10/08/fad-rvce-bengaluru-october-2012/news.html</guid>
</item>
<item>
    <title>ghc-blaze-textual</title>
    <link>http://www.shakthimaan.com/posts/2012/10/02/ghc-blaze-textual/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/blaze-textual">blaze-textual</a> is a library for rendering Haskell data types to bytestrings. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code>$ sudo yum install ghc-blaze-textual-devel</code></pre>
<p>You can import the Text module (for example) using:</p>
<pre class="shell"><code>ghci&gt; :m + Blaze.Text</code></pre>
<p>A simple example of using <strong>digit</strong>, <strong>integral</strong>, and <strong>float</strong> functions is shown below:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Data.ByteString.Lazy</span> <span class="kw">as</span> <span class="dt">L</span>
<span class="kw">import</span> <span class="dt">Blaze.ByteString.Builder</span>

<span class="kw">import</span> <span class="dt">Blaze.Text</span>
<span class="kw">import</span> <span class="dt">Blaze.Text.Int</span>

main <span class="fu">=</span> <span class="kw">do</span>
     <span class="kw">let</span> a <span class="fu">=</span> toLazyByteString <span class="fu">$</span> digit <span class="dv">3</span>
         b <span class="fu">=</span> toLazyByteString <span class="fu">$</span> integral <span class="dv">3</span>
         c <span class="fu">=</span> toLazyByteString <span class="fu">$</span> float <span class="dv">3</span>
     L.putStrLn a
     L.putStrLn b
     L.putStrLn c</code></pre>
<p>You can compile it using:</p>
<pre class="shell"><code>$ ghc --make test.hs
[1 of 1] Compiling Main             ( test.hs, test.o )
Linking test ...</code></pre>
<p>Running <em>test</em> gives:</p>
<pre class="shell"><code>$ ./test
3
3
3.0</code></pre>]]></description>
    <pubDate>Tue, 02 Oct 2012 17:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/10/02/ghc-blaze-textual/news.html</guid>
</item>
<item>
    <title>ghc-HSH</title>
    <link>http://www.shakthimaan.com/posts/2012/09/30/ghc-HSH/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/HSH">HSH</a> package allows you to use shell commands and expressions with Haskell programs. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code>$ sudo yum install ghc-HSH-devel</code></pre>
<p>You can import the HSH module using:</p>
<pre class="shell"><code>ghci&gt; :m + HSH</code></pre>
<p>The <strong>runIO</strong> function can execute a shell command:</p>
<pre class="shell"><code>Prelude HSH&gt; runIO &quot;date&quot;
Sun Sep 30 21:29:50 IST 2012</code></pre>
<p>You can use pipes with multiple commands by separating them with “-|-”:</p>
<pre class="shell"><code>Prelude HSH&gt; runIO $ &quot;date&quot; -|- &quot;wc&quot;
      1       6      29</code></pre>
<p>The <strong>runSL</strong> function takes a command as an argument and returns the first line of the output:</p>
<pre class="shell"><code>Prelude HSH&gt; runSL &quot;cal&quot;
&quot;   September 2012&quot;</code></pre>
<p>The <strong>setenv</strong> function can set an environment variable:</p>
<pre class="shell"><code>Prelude HSH&gt; runIO &quot;echo $TERM&quot;
xterm

Prelude HSH&gt; runIO $ setenv [(&quot;TERM&quot;, &quot;gnome-terminal&quot;)] $ &quot;echo $TERM&quot;
gnome-terminal</code></pre>
<p>The HSH package also provides shell equivalent commands. Few examples are shown below:</p>
<pre class="shell"><code>Prelude HSH&gt; basename &quot;/tmp/tmp/doc&quot;
&quot;doc&quot;

Prelude HSH&gt; dirname &quot;/tmp/tmp/doc&quot;
&quot;/tmp/tmp&quot;

Prelude HSH&gt; pwd
&quot;/tmp&quot;

Prelude HSH&gt; cut 2 ' ' &quot;alpha bravo charlie delta echo&quot;
&quot;charlie&quot;</code></pre>
<p>The <strong>wcL</strong> and <strong>wcW</strong> functions count the lines and words respectively:</p>
<pre class="shell"><code>Prelude HSH&gt; wcL [&quot;hello&quot;, &quot;world&quot;]
[&quot;2&quot;]

Prelude HSH&gt; wcW [&quot;first&quot;, &quot;second&quot;, &quot;third fourth&quot;]
[&quot;4&quot;]</code></pre>]]></description>
    <pubDate>Sun, 30 Sep 2012 18:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/09/30/ghc-HSH/news.html</guid>
</item>
<item>
    <title>ghc-MonadRandom</title>
    <link>http://www.shakthimaan.com/posts/2012/09/23/ghc-MonadRandom/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/MonadRandom">MonadRandom</a> package is a random number generation monad. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code>$ sudo yum install ghc-MonadRandom-devel</code></pre>
<p>The example of simulating a die is shown below:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">Control.Monad.Random</span>

<span class="ot">die ::</span> (<span class="dt">RandomGen</span> g) <span class="ot">=&gt;</span> <span class="dt">Rand</span> g <span class="dt">Int</span>
die <span class="fu">=</span> getRandomR (<span class="dv">1</span>,<span class="dv">6</span>)

<span class="ot">dice ::</span> (<span class="dt">RandomGen</span> g) <span class="ot">=&gt;</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Rand</span> g [<span class="dt">Int</span>]
dice n <span class="fu">=</span> <span class="fu">sequence</span> (<span class="fu">replicate</span> n die)

main <span class="fu">=</span> <span class="kw">do</span>
  values <span class="ot">&lt;-</span> evalRandIO (dice <span class="dv">1</span>)
  <span class="fu">putStrLn</span> (<span class="fu">show</span> values)</code></pre>
<p>Compile it using:</p>
<pre class="shell"><code>$ ghc --make die.hs 
[1 of 1] Compiling Main             ( die.hs, die.o )
Linking die ...</code></pre>
<p>You can run it using:</p>
<pre class="shell"><code>$ ./die 
[3]
$ ./die 
[5]
$ ./die 
[1]
$ ./die 
[1]
$ ./die 
[6]</code></pre>
<p>The fromList function produces a random value from a weighted list:</p>
<pre class="shell"><code>Prelude&gt; :m + Control.Monad.Random
Prelude Control.Monad.Random&gt; fromList [(1,2), (3,4), (5,6)]
5
Prelude Control.Monad.Random&gt; fromList [(1,2), (3,4), (5,6)]
1
Prelude Control.Monad.Random&gt; fromList [(1,2), (3,4), (5,6)]
5
Prelude Control.Monad.Random&gt; fromList [(1,2), (3,4), (5,6)]
3
Prelude Control.Monad.Random&gt; fromList [(1,2), (3,4), (5,6)]
1</code></pre>]]></description>
    <pubDate>Sun, 23 Sep 2012 16:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/09/23/ghc-MonadRandom/news.html</guid>
</item>
<item>
    <title>ghc-show</title>
    <link>http://www.shakthimaan.com/posts/2012/09/21/ghc-show/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/show">show</a> package provides ShowQ, ShowFun and SimpleReflect modules. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-show-devel</code></pre>
<p>To import the ShowQ module (for example), you can use:</p>
<pre class="shell"><code>Prelude&gt; :m + ShowQ</code></pre>
<p>The ShowFun module provides Typeable instances for IO expressions. The ShowQ module includes SmallCheck and QuickCheck support. Example uses of mysmallcheck, myquickcheck and tests functions in ShowQ are shown below:</p>
<pre class="shell"><code>Prelude ShowQ&gt; mysmallcheck (\s -&gt; length (&quot;Hello&quot;) == 5)
Depth 0:
  Completed 1 test(s) without failure.
Depth 1:
  Completed 1 test(s) without failure.
Depth 2:
  Completed 1 test(s) without failure.
Depth 3:
  Completed 1 test(s) without failure.
Depth 4:
  Completed 1 test(s) without failure.
Depth 5:
  Completed 1 test(s) without failure.
Depth 6:
  Completed 1 test(s) without failure.
()

Prelude ShowQ&gt; myquickcheck (\s -&gt; length (&quot;Hello&quot;) == 5)
&quot;+++ OK, passed 100 tests.
OK, passed 100 tests.&quot;

Prelude ShowQ&gt; tests (\s -&gt; length(&quot;Hello&quot;) == 5) 5 [[&quot;a&quot;], [&quot;b&quot;]]
+++ OK, passed 100 tests.
&quot;OK, passed 100 tests.1%b.\n1%a.\n&quot;</code></pre>
<p>The SimpleReflect module expands functions literally, and provides simple reflection of Haskell expressions containing variables. Few examples:</p>
<pre class="shell"><code>Prelude SimpleReflect&gt; foldr f x [1..5]
f 1 (f 2 (f 3 (f 4 (f 5 x))))

Prelude SimpleReflect&gt; sum [1..5] :: Expr
0 + 1 + 2 + 3 + 4 + 5

Prelude SimpleReflect&gt; sum $ map (*x) [1..5]
0 + 1 * x + 2 * x + 3 * x + 4 * x + 5 * x</code></pre>]]></description>
    <pubDate>Fri, 21 Sep 2012 13:45:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/09/21/ghc-show/news.html</guid>
</item>
<item>
    <title>ghc-IOSpec</title>
    <link>http://www.shakthimaan.com/posts/2012/09/20/ghc-IOSpec/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/IOSpec">IOSpec</a> package provides several modules that give a pure specification of functions in the IO monad. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-IOSpec-devel</code></pre>
<p>To import a specific Fork module (for example), you can use:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span><span class="fu">&gt;</span> <span class="fu">:</span>m <span class="fu">+</span> <span class="dt">Test.IOSpec.Fork</span></code></pre>
<p>Test.IOSpec.Teletype provides a pure specification of the getChar and putChar functions. A simple example of echo is shown below:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="ot">{-# LANGUAGE NPlusKPatterns #-}</span>

<span class="kw">import</span> <span class="dt">Prelude</span> <span class="kw">hiding</span> (<span class="fu">getChar</span>, <span class="fu">putChar</span>)
<span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Prelude</span> (<span class="fu">putStrLn</span>)
<span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Data.Stream</span> <span class="kw">as</span> <span class="dt">Stream</span>
<span class="kw">import</span> <span class="dt">Test.IOSpec</span> <span class="kw">hiding</span> (<span class="fu">putStrLn</span>)
<span class="kw">import</span> <span class="dt">Test.QuickCheck</span>
<span class="kw">import</span> <span class="dt">Data.Char</span> (<span class="fu">ord</span>)

<span class="ot">echo ::</span> <span class="dt">IOSpec</span> <span class="dt">Teletype</span> ()
echo <span class="fu">=</span> <span class="fu">getChar</span> <span class="fu">&gt;&gt;=</span> <span class="fu">putChar</span> <span class="fu">&gt;&gt;</span> echo

<span class="ot">copy ::</span> <span class="dt">Effect</span> ()
copy <span class="fu">=</span> <span class="dt">ReadChar</span> (\x <span class="ot">-&gt;</span> <span class="dt">Print</span> x copy)

<span class="ot">takeOutput ::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Effect</span> () <span class="ot">-&gt;</span> <span class="dt">String</span>
takeOutput <span class="dv">0</span> _ <span class="fu">=</span> <span class="st">&quot;&quot;</span>
takeOutput (n <span class="fu">+</span> <span class="dv">1</span>) (<span class="dt">Print</span> c xs) <span class="fu">=</span> c <span class="fu">:</span> takeOutput n xs
takeOutput _ _ <span class="fu">=</span> <span class="fu">error</span> <span class="st">&quot;Echo.takeOutput&quot;</span>

<span class="ot">withInput ::</span> <span class="dt">Stream.Stream</span> <span class="dt">Char</span> <span class="ot">-&gt;</span> <span class="dt">Effect</span> a <span class="ot">-&gt;</span> <span class="dt">Effect</span> a
withInput stdin (<span class="dt">Done</span> x)     <span class="fu">=</span> <span class="dt">Done</span> x
withInput stdin (<span class="dt">Print</span> c e)  <span class="fu">=</span> <span class="dt">Print</span> c (withInput stdin e)
withInput stdin (<span class="dt">ReadChar</span> f) <span class="fu">=</span> withInput (Stream.tail stdin)
                                 (f (Stream.head stdin))

<span class="ot">echoProp ::</span> <span class="dt">Stream.Stream</span> <span class="dt">Char</span> <span class="ot">-&gt;</span> <span class="dt">Property</span>
echoProp input <span class="fu">=</span>
    forAll (choose (<span class="dv">1</span>,<span class="dv">10000</span>)) <span class="fu">$</span> \n <span class="ot">-&gt;</span>
    takeOutput n (withInput input (evalIOSpec echo singleThreaded))
    <span class="fu">==</span> takeOutput n (withInput input copy)

main <span class="fu">=</span> <span class="kw">do</span>
  Prelude.putStrLn <span class="st">&quot;Testing echo...&quot;</span>
  quickCheck echoProp</code></pre>
<p>You can compile it using:</p>
<pre class="shell"><code>$ ghc --make Echo.hs
[1 of 1] Compiling Main             ( Echo.hs, Echo.o )
Linking Echo ...</code></pre>
<p>Test it using:</p>
<pre class="shell"><code>$ ./Echo 
Testing echo...
+++ OK, passed 100 tests.</code></pre>
<p>The Test.IOSpec.IORef provides a pure specification of mutable variables. An example is shown below:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">Test.IOSpec</span>
<span class="kw">import</span> <span class="dt">Test.QuickCheck</span>

<span class="ot">readOnce ::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">IOSpec</span> <span class="dt">IORefS</span> <span class="dt">Int</span>
readOnce x <span class="fu">=</span> <span class="kw">do</span> ref <span class="ot">&lt;-</span> newIORef x
                readIORef ref

<span class="ot">readTwice ::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">IOSpec</span> <span class="dt">IORefS</span> <span class="dt">Int</span>
readTwice x <span class="fu">=</span> <span class="kw">do</span> ref <span class="ot">&lt;-</span> newIORef x
                 readIORef ref
                 readIORef ref

<span class="ot">readIORefProp ::</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Bool</span>
readIORefProp x <span class="fu">=</span>
  <span class="kw">let</span> once  <span class="fu">=</span> evalIOSpec (readOnce x) singleThreaded
      twice <span class="fu">=</span> evalIOSpec (readTwice x) singleThreaded
  <span class="kw">in</span> once <span class="fu">==</span> twice

main <span class="fu">=</span> quickCheck readIORefProp</code></pre>
<p>You can compile it using:</p>
<pre class="shell"><code>$ ghc --make Refs.hs 
[1 of 1] Compiling Main             ( Refs.hs, Refs.o )
Linking Refs ...</code></pre>
<p>Test it using:</p>
<pre class="shell"><code>$ ./Refs 
+++ OK, passed 100 tests.</code></pre>]]></description>
    <pubDate>Thu, 20 Sep 2012 17:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/09/20/ghc-IOSpec/news.html</guid>
</item>
<item>
    <title>ghc-data-inttrie</title>
    <link>http://www.shakthimaan.com/posts/2012/09/19/ghc-data-inttrie/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/data-inttrie">data-inttrie</a> package is a simple lazy, infinite trie for integers. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-data-inttrie-devel</code></pre>
<p>To import the data-inttrie module, use:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span><span class="fu">&gt;</span> <span class="fu">:</span>m <span class="fu">+</span> <span class="dt">Data.IntTrie</span></code></pre>
<p>The Bits class in Data.Bits module defines bitwise operations on integral types, and is defined using:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">class</span> <span class="kw">Num</span> a <span class="ot">=&gt;</span> <span class="dt">Bits</span> a <span class="kw">where</span></code></pre>
<p>The complement function, for example, reverses the bits in the argument:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span><span class="fu">&gt;</span> <span class="fu">:</span>m <span class="fu">+</span> Data.bits
<span class="dt">Prelude</span> <span class="dt">Data.Bits</span><span class="fu">&gt;</span> complement <span class="dv">3</span>
<span class="fu">-</span><span class="dv">4</span></code></pre>
<p>The apply function in Data.IntTrie applies a trie to an argument:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="ot">apply ::</span> (<span class="kw">Ord</span> b, <span class="dt">Bits</span> b) <span class="ot">=&gt;</span> <span class="dt">IntTrie</span> a <span class="ot">-&gt;</span> b <span class="ot">-&gt;</span> a</code></pre>
<p>For example:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span> <span class="dt">Data.IntTrie</span><span class="fu">&gt;</span> <span class="kw">let</span> bits f <span class="fu">=</span> apply (<span class="fu">fmap</span> f identity)
<span class="dt">Prelude</span> <span class="dt">Data.IntTrie</span><span class="fu">&gt;</span> bits (<span class="fu">*</span><span class="dv">3</span>) <span class="dv">4</span><span class="ot"> ::</span> <span class="dt">Int</span>
<span class="dv">12</span></code></pre>]]></description>
    <pubDate>Wed, 19 Sep 2012 05:45:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/09/19/ghc-data-inttrie/news.html</guid>
</item>
<item>
    <title>emacs-identica-mode</title>
    <link>http://www.shakthimaan.com/posts/2012/09/14/emacs-identica-mode/news.html</link>
    <description><![CDATA[<p><a href="https://savannah.nongnu.org/projects/identica-mode/">identica-mode</a> is an Emacs mode to receive and submit updates to laconica microblogging site. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install emacs-identica-mode</code></pre>
<p>To enter into identica-mode in GNU Emacs, you can use:</p>
<pre class="lisp"><code>M-x identica-mode</code></pre>
<p>Or, you can also add the following in your ~/.emacs:</p>
<pre class="lisp"><code>(require 'identica-mode)
(setq identica-username &quot;yourusername&quot;)</code></pre>
<p>To send an update, use C-c C-s within GNU Emacs, or use:</p>
<pre class="lisp"><code>M-x identica-update-status-interactive</code></pre>
<p>To view the public timeline, you can use:</p>
<pre class="lisp"><code>C-c C-a</code></pre>
<p>To view a user’s timeline, you can use:</p>
<pre class="lisp"><code>C-c C-u</code></pre>
<p>To send a direct message to a user, you can use:</p>
<pre class="lisp"><code>C-c C-d</code></pre>
<p>You can press ‘G’ anytime to refresh the timeline in the *identica* buffer. The Identica mode manual has more examples and shortcuts to interact with identi.ca.</p>]]></description>
    <pubDate>Fri, 14 Sep 2012 15:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/09/14/emacs-identica-mode/news.html</guid>
</item>
<item>
    <title>ghc-oeis</title>
    <link>http://www.shakthimaan.com/posts/2012/09/12/ghc-oeis/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/oeis">oeis</a> package provides an interface to the Online Encyclopaedia of Integer Sequences - <a href="http://oeis.org">http://oeis.org</a>. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-oeis-devel</code></pre>
<p>To import the OEIS module, use:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell">ghci<span class="fu">&gt;</span> <span class="fu">:</span>m <span class="fu">+</span> <span class="dt">Math.OEIS</span></code></pre>
<p>Few examples are shown below:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span> <span class="dt">Math.OEIS</span><span class="fu">&gt;</span> getSequenceByID <span class="st">&quot;A000040&quot;</span>
<span class="kw">Just</span> [<span class="dv">2</span>,<span class="dv">3</span>,<span class="dv">5</span>,<span class="dv">7</span>,<span class="dv">11</span>,<span class="dv">13</span>,<span class="dv">17</span>,<span class="dv">19</span>,<span class="dv">23</span>,<span class="dv">29</span>,<span class="dv">31</span>,<span class="dv">37</span>,<span class="dv">41</span>,<span class="dv">43</span>,<span class="dv">47</span>,<span class="dv">53</span>,<span class="dv">59</span>,<span class="dv">61</span>,<span class="dv">67</span>,<span class="dv">71</span>,<span class="dv">73</span>,<span class="dv">79</span>,<span class="dv">83</span>,<span class="dv">89</span>,
<span class="dv">97</span>,<span class="dv">101</span>,<span class="dv">103</span>,<span class="dv">107</span>,<span class="dv">109</span>,<span class="dv">113</span>,<span class="dv">127</span>,<span class="dv">131</span>,<span class="dv">137</span>,<span class="dv">139</span>,<span class="dv">149</span>,<span class="dv">151</span>,<span class="dv">157</span>,<span class="dv">163</span>,<span class="dv">167</span>,<span class="dv">173</span>,<span class="dv">179</span>,<span class="dv">181</span>,<span class="dv">191</span>,
<span class="dv">193</span>,<span class="dv">197</span>,<span class="dv">199</span>,<span class="dv">211</span>,<span class="dv">223</span>,<span class="dv">227</span>,<span class="dv">229</span>,<span class="dv">233</span>,<span class="dv">239</span>,<span class="dv">241</span>,<span class="dv">251</span>,<span class="dv">257</span>,<span class="dv">263</span>,<span class="dv">269</span>,<span class="dv">271</span>]</code></pre>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span> <span class="dt">Math.OEIS</span><span class="fu">&gt;</span> description <span class="ot">`fmap`</span> lookupSequenceByID <span class="st">&quot;A000040&quot;</span>
<span class="kw">Just</span> <span class="st">&quot;The prime numbers.&quot;</span></code></pre>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span> <span class="dt">Math.OEIS</span><span class="fu">&gt;</span> lookupOEIS <span class="st">&quot;2,3,5,7&quot;</span>
[<span class="st">&quot;The prime numbers.&quot;</span>,<span class="st">&quot;[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,</span>
<span class="st">67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,</span>
<span class="st">167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,</span>
<span class="st">269,271]&quot;</span>]</code></pre>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span> <span class="dt">Math.OEIS</span><span class="fu">&gt;</span> extendSequence [<span class="dv">2</span>,<span class="dv">3</span>,<span class="dv">5</span>]
[<span class="dv">2</span>,<span class="dv">3</span>,<span class="dv">5</span>,<span class="dv">7</span>,<span class="dv">11</span>,<span class="dv">13</span>,<span class="dv">17</span>,<span class="dv">19</span>,<span class="dv">23</span>,<span class="dv">29</span>,<span class="dv">31</span>,<span class="dv">37</span>,<span class="dv">41</span>,<span class="dv">43</span>,<span class="dv">47</span>,<span class="dv">53</span>,<span class="dv">59</span>,<span class="dv">61</span>,<span class="dv">67</span>,<span class="dv">71</span>,<span class="dv">73</span>,<span class="dv">79</span>,<span class="dv">83</span>,<span class="dv">89</span>,<span class="dv">97</span>,
<span class="dv">101</span>,<span class="dv">103</span>,<span class="dv">107</span>,<span class="dv">109</span>,<span class="dv">113</span>,<span class="dv">127</span>,<span class="dv">131</span>,<span class="dv">137</span>,<span class="dv">139</span>,<span class="dv">149</span>,<span class="dv">151</span>,<span class="dv">157</span>,<span class="dv">163</span>,<span class="dv">167</span>,<span class="dv">173</span>,<span class="dv">179</span>,<span class="dv">181</span>,<span class="dv">191</span>,
<span class="dv">193</span>,<span class="dv">197</span>,<span class="dv">199</span>,<span class="dv">211</span>,<span class="dv">223</span>,<span class="dv">227</span>,<span class="dv">229</span>,<span class="dv">233</span>,<span class="dv">239</span>,<span class="dv">241</span>,<span class="dv">251</span>,<span class="dv">257</span>,<span class="dv">263</span>,<span class="dv">269</span>,<span class="dv">271</span>]</code></pre>]]></description>
    <pubDate>Wed, 12 Sep 2012 18:10:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/09/12/ghc-oeis/news.html</guid>
</item>
<item>
    <title>ghc-numbers</title>
    <link>http://www.shakthimaan.com/posts/2012/08/10/ghc-numbers/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/numbers">numbers</a> package provides instances of numerical classes for different types of numbers - (computable) real numbers, precison fixed numbers, floating point numbers, differentiable numbers, symbolic numbers, and interval arithmetic. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-numbers-devel</code></pre>
<p>For interval arithmentic, Interval is defined as a type constructor:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">data</span> <span class="dt">Interval</span> a <span class="fu">=</span> <span class="dt">I</span> a a</code></pre>
<p>The ival function two arguments of the same type and returns an Interval a, while, the getIval function takes an interval and returns a pair.</p>
<pre class="shell"><code>ghci&gt; :m + Data.Number.Interval

ghci&gt; ival 1 2
1..2

ghci&gt; getIval (ival 3 4)
(3,4)</code></pre>
<p>The CReal type implements (constructive) real numbers. The showCReal function takes a number of decimals, a real number, and returns a string.</p>
<pre class="shell"><code>ghci&gt; :m + Data.Number.CReal

ghci&gt; showCReal 5 pi
&quot;3.14159&quot;</code></pre>
<p>The Dif type is a type defined for differentiable numbers. The dCon function takes a number and constructs a Dif number with the same value, while the val function does the opposite.</p>
<pre class="shell"><code>ghci&gt; :m + Data.Number.Dif

ghci&gt; dCon 3
3~~

ghci&gt; val (dCon 5)
5</code></pre>
<p>The mkDif function takes a value and a Dif value and makes a Dif number as its derivative.</p>
<pre class="shell"><code>ghci&gt; mkDif 4 (dCon 2)
4~~</code></pre>
<p>The deriv function takes a derivative of a function. For example, if we have an equation f(x)=x<sup>2</sup>, then the first derivative, f’(x)=2x. This can be defined as:</p>
<pre class="shell"><code>ghci&gt; let f x = x * x
ghci&gt; let f' = deriv f

ghci&gt; f 3
9

ghci&gt; f' 3
6</code></pre>]]></description>
    <pubDate>Fri, 10 Aug 2012 17:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/08/10/ghc-numbers/news.html</guid>
</item>
<item>
    <title>ghc-readline</title>
    <link>http://www.shakthimaan.com/posts/2012/08/02/ghc-readline/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/readline">readline</a> is a Haskell binding to the <a href="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</a> library. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-readline-devel</code></pre>
<p>The Readline library provides functions to for line editing, and managing history of commands entered interactively through the command-line. It is Free Software. A simple example of using ghc-readline is demonstrated:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">System.Console.Readline</span>

<span class="ot">readEvalPrintLoop ::</span> <span class="dt">IO</span> ()
readEvalPrintLoop <span class="fu">=</span> <span class="kw">do</span>
   maybeLine <span class="ot">&lt;-</span> readline <span class="st">&quot;% &quot;</span>
   <span class="kw">case</span> maybeLine <span class="kw">of</span> 
    <span class="kw">Nothing</span>     <span class="ot">-&gt;</span> <span class="fu">return</span> () 
    <span class="kw">Just</span> <span class="st">&quot;exit&quot;</span> <span class="ot">-&gt;</span> <span class="fu">return</span> ()
    <span class="kw">Just</span> line <span class="ot">-&gt;</span> <span class="kw">do</span> addHistory line
                    <span class="fu">putStrLn</span> <span class="fu">$</span> <span class="st">&quot;The user input: &quot;</span> <span class="fu">++</span> (<span class="fu">show</span> line)
                    readEvalPrintLoop

main <span class="fu">=</span> <span class="kw">do</span>
     readEvalPrintLoop</code></pre>
<p>Compile it using:</p>
<pre class="shell"><code> $ ghc --make read.hs
Linking read ...</code></pre>
<p>Run it and test it:</p>
<pre class="shell"><code> $ ./read
% 
The user input: &quot;&quot;
% Lorem ipsum
The user input: &quot;Lorem ipsum&quot;
% exit
 $</code></pre>]]></description>
    <pubDate>Thu, 02 Aug 2012 17:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/08/02/ghc-readline/news.html</guid>
</item>
<item>
    <title>unlambda</title>
    <link>http://www.shakthimaan.com/posts/2012/07/27/unlambda/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/unlambda">unlambda</a> package contains an interpreter written in Haskell for the <a href="http://en.wikipedia.org/wiki/Unlambda">Unlambda</a> language. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install unlambda</code></pre>
<p>Unlambda is a “nearly pure” functional programming language. There are no named functions in Unlambda. The s and k primitive functions are part of the core language, and are sufficient to make Unlambda Turing complete. The backquote(`) is used for function application. There are no variables in Unlambda. r prints a newline, and i is the identity function.</p>
<pre class="shell"><code> $ unlambda
`ri

 $</code></pre>
<p>The k combinator takes two arguments (by currying), say X and Y, and is expressed as ``kXY, which evaluates to X (Y is also evaluated). The s combinator takes three arguments and is applied as ``FXYZ, which evaluates to ``XZ`YZ. The .x functions prints the character x to the output. So, the r function is an instance of .x function where x represents the newline character.</p>
<pre class="shell"><code> $ unlambda
```k.Hii

H $</code></pre>
<p>The classic hello world program:</p>
<pre class="shell"><code>$ unlambda
`r```````````.H.e.l.l.o. .w.o.r.l.di
Hello world</code></pre>
<p>The following hello.unl program prints “Hello world!” followed by asterisk symbol, in incremental fashion.</p>
<pre class="shell"><code>```s``sii`ki
 ``s``s`ks	
     ``s``s`ks``s`k`s`kr
               ``s`k`si``s`k`s`k
                               `d````````````.H.e.l.l.o.,. .w.o.r.l.d.!
                        k
	k
  `k``s``s`ksk`k.*</code></pre>
<pre class="shell"><code>$ unlambda &lt; hello.unl

Hello, world!
Hello, world!*
Hello, world!**
Hello, world!***
Hello, world!****
Hello, world!*****
Hello, world!******
Hello, world!*******
Hello, world!********
Hello, world!*********
Hello, world!**********
...</code></pre>]]></description>
    <pubDate>Fri, 27 Jul 2012 12:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/07/27/unlambda/news.html</guid>
</item>
<item>
    <title>ghc-Stream</title>
    <link>http://www.shakthimaan.com/posts/2012/07/20/ghc-Stream/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/Stream">Stream</a> provides functions to create and manipulate infinite lists. It is defined as:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">data</span> <span class="dt">Stream</span> a <span class="fu">=</span> <span class="dt">Cons</span> a (<span class="dt">Stream</span> a)</code></pre>
<p>It is now available on Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-Stream-devel</code></pre>
<p>The fromList function converts an infinite list to a stream. For example:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span><span class="fu">&gt;</span> <span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Data.Stream</span> <span class="kw">as</span> <span class="dt">S</span>
<span class="dt">Prelude</span> <span class="dt">Data.Stream</span><span class="fu">&gt;</span> <span class="kw">let</span> numbers <span class="fu">=</span> S.fromList [<span class="dv">1</span><span class="fu">..</span>]
<span class="dt">Prelude</span> <span class="dt">Data.Stream</span><span class="fu">&gt;</span> S.head numbers
<span class="dv">1</span></code></pre>
<p>There are numerous functions available for building, transforming, extracting, sublisting, indexing streams. Most of them are analogous to the functions in Data.List. Few examples:</p>
<p>The map function applies a function uniformly over all the elements of a stream.</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span> <span class="dt">Data.Stream</span><span class="fu">&gt;</span> S.take <span class="dv">5</span> <span class="fu">$</span> S.map (<span class="fu">*</span><span class="dv">3</span>) numbers
[<span class="dv">3</span>,<span class="dv">6</span>,<span class="dv">9</span>,<span class="dv">12</span>,<span class="dv">15</span>]</code></pre>
<p>The cycle function can return an infinite repetition of a given list.</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span> <span class="dt">Data.Stream</span><span class="fu">&gt;</span> S.take <span class="dv">10</span> <span class="fu">$</span> S.cycle [<span class="dv">1</span>,<span class="dv">2</span>,<span class="dv">3</span>]
[<span class="dv">1</span>,<span class="dv">2</span>,<span class="dv">3</span>,<span class="dv">1</span>,<span class="dv">2</span>,<span class="dv">3</span>,<span class="dv">1</span>,<span class="dv">2</span>,<span class="dv">3</span>,<span class="dv">1</span>]</code></pre>
<p>The take function extracts a sublist of n elements from the stream.</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="dt">Prelude</span> <span class="dt">Data.Stream</span><span class="fu">&gt;</span> S.take <span class="dv">10</span> numbers
[<span class="dv">1</span>,<span class="dv">2</span>,<span class="dv">3</span>,<span class="dv">4</span>,<span class="dv">5</span>,<span class="dv">6</span>,<span class="dv">7</span>,<span class="dv">8</span>,<span class="dv">9</span>,<span class="dv">10</span>]</code></pre>
<p>We can use the (!!) function to return an element at an index n in the stream.</p>
~~~~ {.haskell} Prelude Data.Stream&gt; numbers S.!! 5 6 ~~~~]]></description>
    <pubDate>Fri, 20 Jul 2012 11:10:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/07/20/ghc-Stream/news.html</guid>
</item>
<item>
    <title>ghc-logict</title>
    <link>http://www.shakthimaan.com/posts/2012/07/09/ghc-logict/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/logict">logict</a> is a “continuation-based, backtracking, logic programming monad”. It is a library that provides backtracking computations to a Haskell monad. It is now available on Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-logict-devel</code></pre>
<p>The observeAll function, for example, obtains all the results from a Logic computation:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">Control.Applicative</span> ((<span class="fu">&lt;|&gt;</span>))
<span class="kw">import</span> <span class="dt">Control.Monad.Logic</span> (observeAll)
<span class="kw">import</span> <span class="dt">Control.Monad</span> (filterM)

<span class="ot">powerset ::</span> [a] <span class="ot">-&gt;</span> [[a]]
powerset <span class="fu">=</span> observeAll <span class="fu">.</span> filterM (<span class="fu">const</span> (<span class="fu">return</span> <span class="kw">False</span> <span class="fu">&lt;|&gt;</span> <span class="fu">return</span> <span class="kw">True</span>))</code></pre>
<p>You can compile and run the above example using:</p>
<p>~~~~ {.shell} $ ghci Powerset.hs GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim … linking … done. Loading package integer-gmp … linking … done. Loading package base … linking … done. [1 of 1] Compiling Main ( Powerset.hs, interpreted ) Ok, modules loaded: Main.</p>
*Main&gt; powerset [1,2] Loading package transformers-0.2.2.0 … linking … done. Loading package mtl-2.0.1.0 … linking … done. Loading package logict-0.5.0.1 … linking … done. [[],[2],[1],[1,2]] ~~~~]]></description>
    <pubDate>Mon, 09 Jul 2012 11:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/07/09/ghc-logict/news.html</guid>
</item>
<item>
    <title>Fedora workshop, ICCS, June 30, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/07/02/fedora-workshop-iccs/news.html</link>
    <description><![CDATA[<p>I had organized a one-day Fedora workshop at <a href="http://iccs.ac.in/">Indira College of Commerce and Science</a>, Pune, Maharashtra, India on Saturday, June 30, 2012. The college is affiliated to the <a href="http://www.unipune.ac.in/">University of Pune</a>.</p>
<p>The participants were post-graduate students in computer applications. They were familiar with basic programming in C, C++, Java and PHP. Their syllabus now mandates the use of *nix. Fedora was installed on all their lab machines for students to use and learn.</p>
<p>The forenoon session was lecture-based, where I began with an overview of the system architecture. Installation concepts were discussed, along with common newbie mistakes that are made during installation. I then demoed the Fedora desktop, and showed the various software, and window managers that they can use. The need to use a version control system was emphasized, and also introduced them to the use of git, with few examples.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album83/5_lab_session.jpg" alt="Lab session in progress"></img>
<p>Post-lunch was a lab session, where students worked on shell scripts and C programming exercises. I gave them numerous examples on how they can improve their programs by composing functions that do one thing and do it well. The students were also advised to follow coding guidelines, and learn and improve by reading code from free/open source software projects. I have also given them the latest Fedora .iso images (32-bit and 64-bit).</p>
<p>Thanks to Antriksh Shah for his help in organizing this workshop. Few photos taken during the event are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album83">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 02 Jul 2012 08:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/07/02/fedora-workshop-iccs/news.html</guid>
</item>
<item>
    <title>ghc-lazysmallcheck</title>
    <link>http://www.shakthimaan.com/posts/2012/07/01/ghc-lazysmallcheck/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/lazysmallcheck">lazysmallcheck</a> is a demand-driven testing library for Haskell programs. It requires fewer test cases to verify properties for inputs for a depth. It is now available on Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-lazysmallcheck-devel</code></pre>
<p>The depthCheck function lists the number of fewer tests required at a given depth. For example:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">Test.LazySmallCheck</span>
<span class="kw">import</span> <span class="dt">System</span>

<span class="kw">type</span> <span class="dt">Set</span> a <span class="fu">=</span> [a]

<span class="ot">empty ::</span> <span class="dt">Set</span> a
empty <span class="fu">=</span> []

<span class="ot">insert ::</span> <span class="kw">Ord</span> a <span class="ot">=&gt;</span> a <span class="ot">-&gt;</span> <span class="dt">Set</span> a <span class="ot">-&gt;</span> <span class="dt">Set</span> a
insert a [] <span class="fu">=</span> [a]
insert a (x<span class="fu">:</span>xs)
  <span class="fu">|</span> a <span class="fu">&lt;</span> x <span class="fu">=</span> a<span class="fu">:</span>x<span class="fu">:</span>xs
  <span class="fu">|</span> a <span class="fu">&gt;</span> x <span class="fu">=</span> x<span class="fu">:</span>insert a xs
  <span class="fu">|</span> a <span class="fu">==</span> x <span class="fu">=</span> x<span class="fu">:</span>xs

<span class="ot">set ::</span> <span class="kw">Ord</span> a <span class="ot">=&gt;</span> [a] <span class="ot">-&gt;</span> <span class="dt">Set</span> a
set <span class="fu">=</span> <span class="fu">foldr</span> insert Main.empty

ordered [] <span class="fu">=</span> <span class="kw">True</span>
ordered [x] <span class="fu">=</span> <span class="kw">True</span>
ordered (x<span class="fu">:</span>y<span class="fu">:</span>zs) <span class="fu">=</span> x <span class="fu">&lt;=</span> y <span class="fu">&amp;&amp;</span> ordered (y<span class="fu">:</span>zs)

allDiff [] <span class="fu">=</span> <span class="kw">True</span>
allDiff (x<span class="fu">:</span>xs) <span class="fu">=</span> x <span class="ot">`notElem`</span> xs <span class="fu">&amp;&amp;</span> allDiff xs

isSet s <span class="fu">=</span> ordered s <span class="fu">&amp;&amp;</span> allDiff s

<span class="co">-- Properties</span>

<span class="kw">infixr</span> <span class="dv">0</span> <span class="fu">--&gt;</span>
<span class="kw">False</span> <span class="fu">--&gt;</span> _ <span class="fu">=</span> <span class="kw">True</span>
<span class="kw">True</span> <span class="fu">--&gt;</span> x <span class="fu">=</span> x

<span class="ot">prop_insertSet ::</span> (<span class="dt">Char</span>, <span class="dt">Set</span> <span class="dt">Char</span>) <span class="ot">-&gt;</span> <span class="dt">Bool</span>
prop_insertSet (c, s) <span class="fu">=</span> ordered s <span class="fu">--&gt;</span> ordered (insert c s)

main <span class="fu">=</span> <span class="kw">do</span>
        [d] <span class="ot">&lt;-</span> getArgs
        depthCheck (<span class="fu">read</span> d) prop_insertSet</code></pre>
<p>You can compile and run it using:</p>
<p>~~~~ {.shell} $ ghc –make ListSet.hs [1 of 1] Compiling Main ( ListSet.hs, ListSet.o ) Linking ListSet …</p>
$ ./ListSet 2 OK, required 23 tests at depth 2 ~~~~]]></description>
    <pubDate>Sun, 01 Jul 2012 04:50:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/07/01/ghc-lazysmallcheck/news.html</guid>
</item>
<item>
    <title>ghc-smallcheck</title>
    <link>http://www.shakthimaan.com/posts/2012/06/29/ghc-smallcheck/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/smallcheck">smallcheck</a> is a testing library to verify properties for test cases to a certain depth. The depth for data values refers to the depth of nested constructors, while for functional values, it refers to the depth of nested case analysis and results. The test cases will be generated by smallcheck. It is now available on Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-smallcheck-devel</code></pre>
<p>The following BitAdd.hs example demonstrates the use of smallcheck:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">Test.SmallCheck</span>

and2 (a,b)       <span class="fu">=</span> a <span class="fu">&amp;&amp;</span> b

xor2 (a,b)       <span class="fu">=</span> a <span class="fu">/=</span> b

halfAdd (a,b)    <span class="fu">=</span> (<span class="fu">sum</span>,carry)
  <span class="kw">where</span> <span class="fu">sum</span>      <span class="fu">=</span> xor2 (a,b)
        carry    <span class="fu">=</span> and2 (a,b)

bit <span class="kw">False</span>        <span class="fu">=</span> <span class="dv">0</span>
bit <span class="kw">True</span>         <span class="fu">=</span> <span class="dv">1</span>

num []           <span class="fu">=</span> <span class="dv">0</span>
num (a<span class="fu">:</span><span class="kw">as</span>)       <span class="fu">=</span> bit a <span class="fu">+</span> <span class="dv">2</span> <span class="fu">*</span> num <span class="kw">as</span>

bitAdd a []      <span class="fu">=</span> [a]
bitAdd a (b<span class="fu">:</span>bs)  <span class="fu">=</span> s <span class="fu">:</span> bitAdd c bs
  <span class="kw">where</span> (s,c)    <span class="fu">=</span> halfAdd (a,b)

prop_bitAdd a <span class="kw">as</span> <span class="fu">=</span> num (bitAdd a <span class="kw">as</span>) <span class="fu">==</span> bit a <span class="fu">+</span> num <span class="kw">as</span>

main             <span class="fu">=</span> smallCheck <span class="dv">3</span> prop_bitAdd</code></pre>
<p>We ask smallcheck to run tests to a depth of 3. You can compile and run it using:</p>
<p>~~~~ {.shell} $ ghc –make BitAdd.hs [1 of 1] Compiling Main ( BitAdd.hs, BitAdd.o ) Linking BitAdd …</p>
$ ./BitAdd Depth 0: Completed 2 test(s) without failure. Depth 1: Completed 6 test(s) without failure. Depth 2: Completed 14 test(s) without failure. Depth 3: Completed 30 test(s) without failure. ~~~~]]></description>
    <pubDate>Fri, 29 Jun 2012 13:25:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/06/29/ghc-smallcheck/news.html</guid>
</item>
<item>
    <title>ghc-netlist-to-vhdl</title>
    <link>http://www.shakthimaan.com/posts/2012/06/24/ghc-netlist-to-vhdl/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/netlist-to-vhdl">netlist-to-vhdl</a> converts a Netlist AST (Abstract Syntax Tree) to VHDL (VHSIC Hardware Description Language). It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-netlist-to-vhdl-devel</code></pre>
<p>The genVHDL function accepts a Netlist.AST module and emits VHDL. For example:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="ot">{-# LANGUAGE ParallelListComp #-}</span>

<span class="kw">import</span> <span class="dt">Language.Netlist.AST</span>
<span class="kw">import</span> <span class="dt">Language.Netlist.Util</span>
<span class="kw">import</span> <span class="dt">Language.Netlist.GenVHDL</span>

<span class="ot">t ::</span> <span class="dt">Module</span>
t <span class="fu">=</span> <span class="dt">Module</span> <span class="st">&quot;foo&quot;</span> (f ins) (f outs) [] ds
  <span class="kw">where</span>
    f xs <span class="fu">=</span> [ (x, makeRange <span class="dt">Down</span> sz) <span class="fu">|</span> (x, sz) <span class="ot">&lt;-</span> xs ]
    ins <span class="fu">=</span> [(<span class="st">&quot;clk&quot;</span>, <span class="dv">1</span>), (<span class="st">&quot;reset&quot;</span>, <span class="dv">1</span>), (<span class="st">&quot;enable&quot;</span>, <span class="dv">1</span>), (<span class="st">&quot;x&quot;</span>, <span class="dv">16</span>)]
    outs <span class="fu">=</span> [(<span class="st">&quot;z&quot;</span>, <span class="dv">16</span>)]

<span class="ot">ds ::</span> [<span class="dt">Decl</span>]
ds <span class="fu">=</span> [ <span class="dt">NetDecl</span> <span class="st">&quot;a&quot;</span> (makeRange <span class="dt">Down</span> <span class="dv">16</span>) (<span class="kw">Just</span> (<span class="dt">ExprVar</span> <span class="st">&quot;x&quot;</span>))
     , <span class="dt">NetDecl</span> <span class="st">&quot;b&quot;</span> (makeRange <span class="dt">Down</span> <span class="dv">16</span>) (<span class="kw">Just</span> (sizedInteger <span class="dv">16</span> <span class="dv">10</span>))
     , <span class="dt">MemDecl</span> <span class="st">&quot;c&quot;</span> <span class="kw">Nothing</span> (makeRange <span class="dt">Down</span> <span class="dv">16</span>) <span class="kw">Nothing</span>
     , <span class="dt">ProcessDecl</span> (<span class="dt">Event</span> (<span class="dt">ExprVar</span> <span class="st">&quot;clk&quot;</span>) <span class="dt">PosEdge</span>)
                   (<span class="kw">Just</span> (<span class="dt">Event</span> (<span class="dt">ExprVar</span> <span class="st">&quot;reset&quot;</span>) <span class="dt">PosEdge</span>, 
		   	(<span class="dt">Assign</span> (<span class="dt">ExprVar</span> <span class="st">&quot;c&quot;</span>) (sizedInteger <span class="dv">16</span> <span class="dv">0</span>))))
                   (<span class="dt">If</span> (<span class="dt">ExprVar</span> <span class="st">&quot;enable&quot;</span>)
                         (<span class="dt">Assign</span> (<span class="dt">ExprVar</span> <span class="st">&quot;c&quot;</span>) (<span class="dt">ExprVar</span> <span class="st">&quot;x&quot;</span>))
                         <span class="kw">Nothing</span>)
     ]

main <span class="fu">=</span> <span class="kw">do</span>
        <span class="fu">putStrLn</span> <span class="fu">$</span> genVHDL t [<span class="st">&quot;work.all&quot;</span>]</code></pre>
<p>The above code can be compiled and run using:</p>
<pre class="shell"><code>$ ghc --make Example.hs

$ ./Example</code></pre>
<p>When executed it will generate the following VHDL:</p>
<pre class="shell"><code>library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use work.all;
entity foo is
  port(clk : in std_logic;
       reset : in std_logic;
       enable : in std_logic;
       x : in std_logic_vector(15 downto 0);
       z : out std_logic_vector(15 downto 0));
end entity foo;
architecture str of foo is
  signal a : std_logic_vector(15 downto 0) := x;
  signal b : std_logic_vector(15 downto 0) := &quot;0000000000001010&quot;;
  signal c : std_logic_vector(15 downto 0);
begin
  proc3 : process(clk,reset) is
  begin
    if reset = '1' then
      c &lt;= &quot;0000000000000000&quot;;
    elsif rising_edge(clk) then
      if enable then
        c &lt;= x;
      end if;
    end if;
  end process proc3;
end architecture str;</code></pre>]]></description>
    <pubDate>Sun, 24 Jun 2012 11:05:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/06/24/ghc-netlist-to-vhdl/news.html</guid>
</item>
<item>
    <title>ghc-sized-types</title>
    <link>http://www.shakthimaan.com/posts/2012/06/23/ghc-sized-types/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/sized-types">sized-types</a> provides indices, matrices, signed and unsigned bit vectors. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-sized-types-devel</code></pre>
<p>An n-bit sized type is represented by X<sub>n</sub>. For example, a 4-bit unsigned number can be represented by Unsigned X4. Few examples:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell">ghci<span class="fu">&gt;</span> [<span class="fu">minBound</span> <span class="fu">..</span> <span class="fu">maxBound</span>]<span class="ot"> ::</span> [<span class="dt">X4</span>]
[<span class="dv">0</span>,<span class="dv">1</span>,<span class="dv">2</span>,<span class="dv">3</span>]

ghci<span class="fu">&gt;</span> <span class="dv">100</span><span class="ot"> ::</span> <span class="dt">Unsigned</span> <span class="dt">X4</span>
<span class="dv">4</span>

ghci<span class="fu">&gt;</span> <span class="dv">100</span> <span class="fu">+</span> <span class="dv">100</span><span class="ot"> ::</span> <span class="dt">Signed</span> <span class="dt">X8</span>
<span class="fu">-</span><span class="dv">56</span></code></pre>
<p>The signed and unsigned types can also be used in matrix operations:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell">ghci<span class="fu">&gt;</span> <span class="kw">let</span> n <span class="fu">=</span> matrix [<span class="dv">1</span><span class="fu">..</span><span class="dv">12</span>]<span class="ot"> ::</span> <span class="dt">Matrix</span> (<span class="dt">X3</span>,<span class="dt">X4</span>) <span class="dt">Int</span>
ghci<span class="fu">&gt;</span> n
[ <span class="dv">1</span>, <span class="dv">2</span>, <span class="dv">3</span>, <span class="dv">4</span>, <span class="dv">5</span>, <span class="dv">6</span>, <span class="dv">7</span>, <span class="dv">8</span>, <span class="dv">9</span>, <span class="dv">10</span>, <span class="dv">11</span>, <span class="dv">12</span> ]

ghci<span class="fu">&gt;</span> <span class="fu">print</span> <span class="fu">$</span> tranpose n
[ <span class="dv">1</span>, <span class="dv">5</span>, <span class="dv">9</span>, <span class="dv">2</span>, <span class="dv">6</span>, <span class="dv">10</span>, <span class="dv">3</span>, <span class="dv">7</span>, <span class="dv">11</span>, <span class="dv">4</span>, <span class="dv">8</span>, <span class="dv">12</span> ]

ghci<span class="fu">&gt;</span> <span class="kw">let</span> m <span class="fu">=</span> matrix [<span class="dv">3</span>,<span class="dv">4</span>,<span class="dv">5</span>,<span class="dv">6</span>]<span class="ot"> ::</span> <span class="dt">Matrix</span> <span class="dt">X4</span> <span class="dt">Int</span>
ghci<span class="fu">&gt;</span> m
[ <span class="dv">3</span>, <span class="dv">4</span>, <span class="dv">5</span>, <span class="dv">6</span>]
ghci<span class="fu">&gt;</span> m <span class="fu">!</span> <span class="dv">2</span>
<span class="dv">5</span></code></pre>
<p>These general purpose types are very useful in specifying hardware descriptions, especially when you need fixed-width, irregular size, signed and unsigned numbers.</p>]]></description>
    <pubDate>Sat, 23 Jun 2012 15:55:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/06/23/ghc-sized-types/news.html</guid>
</item>
<item>
    <title>Barcamp Mumbai 9, June 17, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/06/19/barcamp-mumbai-9-2012/news.html</link>
    <description><![CDATA[<p>I attended <a href="http://barcampmumbai.org/index.php/BCM9">Barcamp Mumbai 9</a> at <a href="http://www.vjti.ac.in/">Veermata Jijabai Technological Institute (VJTI)</a>, Mumbai, Maharashtra, India on Sunday, June 17, 2012. After an informal introduction, four parallel tracks were scheduled. Each session was 20 minutes long, and 10 minutes between talks for people to move between the halls. Although most of the talks were non-technical, there were quite a few interesting sessions.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album82/4_vjti_sign_board.jpg" alt="VJTI sign board"></img>
<p>Raj Desai presented on “The Math of Music”. He explained how the rhythms or beats used in music formed a pattern, and how they often use prime numbers. For example, a 5-beat sequence is made from a combination of a 2-3 beat sequence, or, a 7-beat sequence is made from a 2-2-3 or a 3-2-2 beat sequence. He also played the different beats, giving numerous examples.</p>
<p>Krishna Patel played the short movie <a href="http://www.pixar.com/shorts/gg/index.html">“Geri’s Game”</a> in his session on “How To Watch a Movie”, and explained the different aspects in a movie like composition, props, sound, colour etc. He mentioned that one might have to watch a movie several times focusing on just one aspect at a time to observe and learn how they have been used.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album82/6_list_of_talks.jpg" alt="List of talks"></img>
<p>The session on “How to memorise a pack of 52 playing cards in under 2 minutes” by Aniceto Pereira taught how to use two simple mnemonic systems to memorise a pack of cards. For the four suites, we used the letters C (clubs), S (spades), H (hearts), D (diamonds). For each card in a suite, a consonant is assigned. For example, Ace was assigned the letter ’t’ or ‘d’, because there is one vertical line in it, referring to one. The number ‘2’ was assigned the letter ‘n’ because there were two downward strokes in it. So, if we had an Ace (’t’) of clubs (‘c’), we would combine the letter and the consonant to form an image, say “cat”, and associate it with our environment to remember it. For each card that we have, we build a series of images to remember them.</p>
<p><a href="http://web.gnuer.org/blog/index.php">Anurag Patel’s</a> session on “Sh*t people say to a chat bot” was hilarious! He had created <a href="http://rickfare.com">http://rickfare.com</a> to compute Mumbai’s autorickshaw fare calculation, and later added support for other cities as well. There were times when people started to chat with the bot, and he shared quite a few entertaining, priceless conversations from the server logs.</p>
<p>The talk on “Negotiating with VCs - An Entrepreneur’s Legal Guide” by Abhyudaya Agarwal was very informative, and detailed. I had presented <a href="http://shakthimaan.com/downloads.html#qucs-a-qt-love-story">“Quite Universal Circuit Simulator - A Qt Love Story”</a>, an introduction to electrical circuit theory using <a href="http://qucs.sourceforge.net/">Qucs</a>. You can install Qucs on Fedora using:</p>
<pre class="shell"><code>  $ sudo yum install qucs</code></pre>
<p>I also had a chance to stay at <a href="http://en.wikipedia.org/wiki/Anushakti_Nagar">Anu Shakti Nagar</a>, a quiet, serene, beautiful residential township in Mumbai in this visit. Few pictures taken during the trip are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album82">/gallery</a>.</p>]]></description>
    <pubDate>Tue, 19 Jun 2012 08:20:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/06/19/barcamp-mumbai-9-2012/news.html</guid>
</item>
<item>
    <title>Fedora Activity Day, June 2, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/06/04/fad-pune-june-2012/news.html</link>
    <description><![CDATA[<p>A <a href="https://fedoraproject.org/wiki/FAD_Pune_2012_June_02">Fedora Activity Day</a> (FAD) was organized on Saturday, June 2, 2012 at the Red Hat office premises in Pune, India.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album81/5_discussion.jpg" alt="Discussion in progress"></img>
<p>This was an activity based event, where there were no talks. The various topics suggested during the FAD included development, packaging, and documentation work.</p>
<p>The newbies worked on <a href="https://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package">GNU Hello RPM packaging</a>, while others worked on pushing updates to existing packages, and packaging new software.</p>
<p>I had submitted a new <a href="http://embed.cs.utah.edu/csmith/">Csmith</a> package release for review, and packaged and submitted <a href="http://hackage.haskell.org/package/sized-types-0.3.4.0">sized-types</a>, and <a href="http://hackage.haskell.org/package/netlist-to-vhdl-0.3.1">netlist-to-vhdl</a> Haskell packages for review. Lakshmi Narasimhan completed the package review for sized-types.</p>
<p>I had requested Fedora Infrastructure to make <a href="http://www.agilofortrac.com/">Agilo for Trac</a> (Apache license) available. It was made available for testing during the FAD, and I tested the same with the <a href="https://fedorahosted.org/fedora-electronic-lab/">Fedora Electronic Lab</a> trac instance. All the Agilo plugins are now enabled in the trac for use.</p>
<p>We also had an F17 release party during the event, where Rahul Sundaram cut a beautiful, tasty, F17 cake.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album81/1_cake.jpg" alt="F17 cake"></img>
<p>Thanks to Red Hat for hosting the event, sponsoring lunch, and providing the facilities for the FAD.</p>
<p>More photos are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album81">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 04 Jun 2012 12:45:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/06/04/fad-pune-june-2012/news.html</guid>
</item>
<item>
    <title>I Know What You Are Going To Do This Summer 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/06/02/dgplug-summer-training-2012/news.html</link>
    <description><![CDATA[<p>We are happy to announce <a href="http://wiki.dgplug.org/index.php/SummerTraining12">“I know what You Are Going To Do This Summer 2012”</a>, a free (as in freedom), online (<a href="http://fedoraproject.org/wiki/Communicate/IRCHowTo">IRC-based</a>) training program in Free/Libre/Open Source Software at #dgplug on irc.freenode.net.</p>
<p>If you are a prospective candidate, or a mentor, who would like to participate in this year’s sessions, please go through the <a href="http://www.dgplug.org/irclogs/">previous year’s IRC logs</a>.</p>
<p>We will have review, and Q&amp;A sessions, on topics addressed in the previous years before proceeding with new topics for this year.</p>
<p>The session timings are usually after 1900 IST, every day.</p>
<p>To participate, you will need a reliable Internet connection, and any latest distribution installed (Fedora 16/17 preferable).</p>
<p>The program is open to all. If you are interested in participating, please confirm the same by sending an e-mail to kushaldas AT gmail DOT com, or shakthimaan at fedoraproject dot org.</p>
<p>References:</p>
<p>URL: <a href="http://dgplug.org">http://dgplug.org</a></p>
<p>Planet: <a href="http://planet.dgplug.org">http://planet.dgplug.org</a></p>
<p>Wiki: <a href="http://wiki.dgplug.org/">http://wiki.dgplug.org</a></p>
<p>Mailing list group (for queries, discussions): <a href="http://lists.dgplug.org/listinfo.cgi/users-dgplug.org">http://lists.dgplug.org/listinfo.cgi/users-dgplug.org</a></p>]]></description>
    <pubDate>Sat, 02 Jun 2012 15:40:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/06/02/dgplug-summer-training-2012/news.html</guid>
</item>
<item>
    <title>Fort Jadhav Ghad</title>
    <link>http://www.shakthimaan.com/posts/2012/05/27/fort-jadhav-ghad/news.html</link>
    <description><![CDATA[<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album80/3_fort_jadhav_ghad.jpg" alt="Fort Jadhav Ghad"></img><br />
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album80/7_welcome_note.jpg" alt="Welcome note"></img><br />
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album80/13_museum_side.jpg" alt="Museum side"></img><br />
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album80/23_fort_rear_side.jpg" alt="Fort rear, side"></img><br />
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album80/34_swimming_pool.jpg" alt="swimming pool"></img><br />
<p>More photos available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album80">/gallery</a>.</p>]]></description>
    <pubDate>Sun, 27 May 2012 11:45:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/05/27/fort-jadhav-ghad/news.html</guid>
</item>
<item>
    <title>Fedora Activity Day, Red Hat, Pune, June 2, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/05/25/fad-announcement-june-2-2012/news.html</link>
    <description><![CDATA[<p>A <a href="http://fedoraproject.org/wiki/Fedora_Activity_Day_-_FAD">Fedora Activity Day</a> event is scheduled for Saturday, June 2, 2012 at the Red Hat, Pune, India office premises.</p>
<p>Venue:</p>
<pre class="shell"><code>  Red Hat Software Services Pvt Ltd 
  Tower X, Level-1,
  Cybercity, Magarpatta City,
  Hadapsar, Pune 411 013
  Maharashtra
  India</code></pre>
<p>Date : Saturday, June 2, 2012.</p>
<p>Time : 1000 IST onwards.</p>
<p>Entry is free, but, we have limited seats (50). Online registration closes on Tuesday, May 29, 2012, 2359 IST. If you are interested in attending, please add your name to <a href="https://fedoraproject.org/wiki/FAD_Pune_2012_June_02">https://fedoraproject.org/wiki/FAD_Pune_2012_June_02</a>.</p>
<p>There will be no registration on the day of the event.</p>
<p>This is purely an activity based event where you are required to work on Fedora related sub-projects. There will be no talks.</p>
<p>Lunch will be sponsored by Red Hat. We will also have an F17 release party!</p>
<p>Please make sure to bring a valid photo identity card (driving license/voter’s id etc.) to enter the premises.</p>
<p>If you would like to suggest projects/task to work on during the FAD, please feel free to update the wiki page.</p>
<p>You are encouraged to bring your laptop. Please do ensure that you have all the necessary software installed for your work, or atleast:</p>
<pre class="shell"><code>  # yum install @development-tools fedora-packager</code></pre>
<p>There will be Internet access available at the facility.</p>]]></description>
    <pubDate>Fri, 25 May 2012 13:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/05/25/fad-announcement-june-2-2012/news.html</guid>
</item>
<item>
    <title>Blog using Hakyll</title>
    <link>http://www.shakthimaan.com/posts/2012/05/22/blog-using-hakyll/news.html</link>
    <description><![CDATA[<p>I wanted to migrate my blog to a static site generator, and chose <a href="http://jaspervdj.be/hakyll/">Hakyll</a>, since it is written in Haskell. You can install it on Fedora using:</p>
<pre class="shell"><code>$ sudo yum install ghc-hakyll-devel</code></pre>
<p>I started looking at existing sites generated using Hakyll, and chose <a href="http://www.skybluetrades.net/">Ian Ross’s blog</a> as a reference. I began customizing the same during the <a href="http://www.hackfest.in">Hackfest</a> organized by <a href="http://changer.in/">Changer</a> in Pune, India on Saturday, May 5, 2012.</p>
<p>The 2012 posts now have permanent URLs. Posts are tagged. I have retained the CSS, current <a href="http://www.shakthimaan.com/news.xml">RSS feed</a> and <a href="http://www.shakthimaan.com/news.html">blog URL</a> during this migration. You can get the sources from gitorious.org:</p>
<pre class="shell"><code>$ git clone git://gitorious.org/shakthimaan-blog/mainline.git</code></pre>]]></description>
    <pubDate>Tue, 22 May 2012 11:50:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/05/22/blog-using-hakyll/news.html</guid>
</item>
<item>
    <title>Disassembly of HP Pavilion dv6000</title>
    <link>http://www.shakthimaan.com/posts/2012/04/28/Disassembly-of-HP-Pavilion-dv6000/news.html</link>
    <description><![CDATA[<p>Some pictures of a used HP Pavilion dv6000 which had a fried motherboard:</p>
<img alt="Keyboard removed" src="http://shakthimaan.com/downloads/hardware/hp-dv6000/2-without-keyboard.JPG"></img>
<img alt="Keyboard" src="http://shakthimaan.com/downloads/hardware/hp-dv6000/3-keyboard.JPG"></img>
<img alt="Metal casing" src="http://shakthimaan.com/downloads/hardware/hp-dv6000/4-metal-casing.JPG"></img>
<img alt="TFT" src="http://shakthimaan.com/downloads/hardware/hp-dv6000/6-TFT.JPG"></img>
<img alt="Without the TFT" src="http://shakthimaan.com/downloads/hardware/hp-dv6000/5-without-TFT.JPG"></img>
<img alt="Motherboard" src="http://shakthimaan.com/downloads/hardware/hp-dv6000/7-motherboard.JPG"></img>]]></description>
    <pubDate>Sat, 28 Apr 2012 15:40:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/04/28/Disassembly-of-HP-Pavilion-dv6000/news.html</guid>
</item>
<item>
    <title>ghc-data-reify</title>
    <link>http://www.shakthimaan.com/posts/2012/04/25/ghc-data-reify/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/data-reify">data-reify</a> provides a way to turn recursive data structures into graphs. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-data-reify-devel</code></pre>
<p>A list [1,2,3] can be written using Cons, Nil, and In for recursion using:</p>
<pre><code>In (Cons 1 (In (Cons 2 (In (Cons 3 (In Nil))))))</code></pre>
<p>An example when using data-reify for the above is given below:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="ot">{-# LANGUAGE TypeFamilies #-}</span>
<span class="kw">module</span> <span class="dt">Main</span> <span class="kw">where</span>

<span class="kw">import</span> <span class="dt">Control.Applicative</span> <span class="kw">hiding</span> (<span class="dt">Const</span>)

<span class="kw">import</span> <span class="dt">Data.Reify</span>
<span class="kw">import</span> <span class="dt">Control.Monad</span>

<span class="kw">data</span> <span class="dt">List</span> a b <span class="fu">=</span> <span class="dt">Nil</span> <span class="fu">|</span> <span class="dt">Cons</span> a b
  <span class="kw">deriving</span> <span class="kw">Show</span>

<span class="kw">instance</span> <span class="dt">MuRef</span> [a] <span class="kw">where</span>
  <span class="kw">type</span> <span class="dt">DeRef</span> [a] <span class="fu">=</span> <span class="dt">List</span> a 

  mapDeRef f (x<span class="fu">:</span>xs) <span class="fu">=</span> <span class="dt">Cons</span> x <span class="fu">&lt;$&gt;</span> f xs
  mapDeRef f []     <span class="fu">=</span> pure <span class="dt">Nil</span>

main <span class="fu">=</span> <span class="kw">do</span>
        <span class="kw">let</span> g1 <span class="fu">=</span> [<span class="dv">1</span>, <span class="dv">2</span>, <span class="dv">3</span>]
        reifyGraph g1 <span class="fu">&gt;&gt;=</span> <span class="fu">print</span></code></pre>
<p>Compile it using:</p>
<pre class="shell"><code>$ ghc --make Test.hs
[1 of 1] Compiling Main             ( Test.hs, Test.o )
Linking Test ...</code></pre>
<p>Run it using:</p>
<pre class="shell"><code>$ ./Test
let [(1,Cons 1 2),(2,Cons 2 3),(3,Cons 3 4),(4,Nil)] in 1</code></pre>]]></description>
    <pubDate>Wed, 25 Apr 2012 10:10:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/04/25/ghc-data-reify/news.html</guid>
</item>
<item>
    <title>ghc-dotgen</title>
    <link>http://www.shakthimaan.com/posts/2012/04/24/ghc-dotgen/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/dotgen">dotgen</a> provides a a simple interface for generating .dot graph files. It is now available in Fedora. Install it along with graphviz using:</p>
<pre class="shell"><code> $ sudo yum install ghc-dotgen-devel graphviz</code></pre>
<p>A binary search tree example is shown below:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">module</span> <span class="dt">Main</span> <span class="kw">where</span>

<span class="kw">import</span> <span class="dt">Text.Dot</span>

box label <span class="fu">=</span> node <span class="fu">$</span> [ (<span class="st">&quot;shape&quot;</span>,<span class="st">&quot;record&quot;</span>),(<span class="st">&quot;height&quot;</span>,<span class="st">&quot;.1&quot;</span>),(<span class="st">&quot;label&quot;</span>,label) ]

main <span class="fu">=</span> <span class="fu">putStrLn</span> <span class="fu">$</span> showDot <span class="fu">$</span> <span class="kw">do</span>
     c0 <span class="fu">&amp;</span>lt;<span class="fu">-</span> box <span class="st">&quot;&amp;lt;f0&amp;gt; |&amp;lt;f1&amp;gt; G|&amp;lt;f2&amp;gt; &quot;</span>
     c1 <span class="fu">&amp;</span>lt;<span class="fu">-</span> box <span class="st">&quot;&amp;lt;f0&amp;gt; |&amp;lt;f1&amp;gt; E|&amp;lt;f2&amp;gt; &quot;</span>
     c2 <span class="fu">&amp;</span>lt;<span class="fu">-</span> box <span class="st">&quot;&amp;lt;f0&amp;gt; |&amp;lt;f1&amp;gt; B|&amp;lt;f2&amp;gt; &quot;</span>
     c3 <span class="fu">&amp;</span>lt;<span class="fu">-</span> box <span class="st">&quot;&amp;lt;f0&amp;gt; |&amp;lt;f1&amp;gt; F|&amp;lt;f2&amp;gt; &quot;</span>
     c4 <span class="fu">&amp;</span>lt;<span class="fu">-</span> box <span class="st">&quot;&amp;lt;f0&amp;gt; |&amp;lt;f1&amp;gt; R|&amp;lt;f2&amp;gt; &quot;</span>
     c5 <span class="fu">&amp;</span>lt;<span class="fu">-</span> box <span class="st">&quot;&amp;lt;f0&amp;gt; |&amp;lt;f1&amp;gt; H|&amp;lt;f2&amp;gt; &quot;</span>
     c6 <span class="fu">&amp;</span>lt;<span class="fu">-</span> box <span class="st">&quot;&amp;lt;f0&amp;gt; |&amp;lt;f1&amp;gt; Y|&amp;lt;f2&amp;gt; &quot;</span>
     c7 <span class="fu">&amp;</span>lt;<span class="fu">-</span> box <span class="st">&quot;&amp;lt;f0&amp;gt; |&amp;lt;f1&amp;gt; A|&amp;lt;f2&amp;gt; &quot;</span>
     c8 <span class="fu">&amp;</span>lt;<span class="fu">-</span> box <span class="st">&quot;&amp;lt;f0&amp;gt; |&amp;lt;f1&amp;gt; C|&amp;lt;f2&amp;gt; &quot;</span>

     c0 <span class="fu">.-&amp;</span>gt;<span class="fu">.</span> c4
     c0 <span class="fu">.-&amp;</span>gt;<span class="fu">.</span> c1
     c1 <span class="fu">.-&amp;</span>gt;<span class="fu">.</span> c2
     c1 <span class="fu">.-&amp;</span>gt;<span class="fu">.</span> c3
     c2 <span class="fu">.-&amp;</span>gt;<span class="fu">.</span> c8
     c2 <span class="fu">.-&amp;</span>gt;<span class="fu">.</span> c7
     c4 <span class="fu">.-&amp;</span>gt;<span class="fu">.</span> c6
     c4 <span class="fu">.-&amp;</span>gt;<span class="fu">.</span> c5

     <span class="fu">return</span> ()</code></pre>
<p>Compile, and run it using:</p>
<pre class="shell"><code>$ ghc --make Test.hs
[1 of 1] Compiling Main             ( Test.hs, Test.o )
Linking Test ...

$ ./Test &gt; test.dot</code></pre>
<p>You can convert the generated .dot graph file into .png using:</p>
<pre class="shell"><code>$ dot -Tpng test.dot -o test.png</code></pre>
<p>A screenshot of the generated png:</p>
<a href="http://www.shakthimaan.com/downloads/screenshots/binary-search-tree.png"><img alt="binary search tree screenshot" src="http://www.shakthimaan.com/downloads/screenshots/binary-search-tree.png"></img></a>]]></description>
    <pubDate>Tue, 24 Apr 2012 07:40:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/04/24/ghc-dotgen/news.html</guid>
</item>
<item>
    <title>xmonad-gnome</title>
    <link>http://www.shakthimaan.com/posts/2012/04/05/xmonad-gnome/news.html</link>
    <description><![CDATA[<p>I was looking for a tiling window manager to use, and found <a href="http://xmonad.org/">xmonad</a>. It is written in Haskell, and is quite extensible. You can install it on Fedora using:</p>
<pre class="shell"><code>$ sudo yum install xmonad-gnome</code></pre>
<p>Here is a screenshot of the same (click image):</p>
<a href="http://www.shakthimaan.com/downloads/screenshots/xmonad-screenshot.png"><img width="676" height="263" alt="xmonad screenshot" src="http://www.shakthimaan.com/downloads/screenshots/xmonad-screenshot-thumbnail.png"></img></a>
<p>The left ALT key is used by default as the “mod” key in xmonad. Since I use it with GNU Emacs, the Windows key has been reconfigured now to be used as the “mod” key. I also use xmonad with GNOME 3 in fallback mode, which actually looks like GNOME 2. The configuration file ~/.xmonad/xmonad.hs:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">XMonad</span>
<span class="kw">import</span> <span class="dt">XMonad.Config.Gnome</span>
<span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">XMonad.StackSet</span> <span class="kw">as</span> <span class="dt">W</span>
<span class="kw">import</span> <span class="dt">XMonad.Util.EZConfig</span>

main <span class="fu">=</span> <span class="kw">do</span>
     xmonad <span class="fu">$</span> gnomeConfig {
            workspaces <span class="fu">=</span> myWorkspaces
            , modMask <span class="fu">=</span> mod4Mask
     } <span class="ot">`additionalKeysP`</span> myKeys

myWorkspaces <span class="fu">=</span> [<span class="st">&quot;1&quot;</span>, <span class="st">&quot;2&quot;</span>, <span class="st">&quot;3&quot;</span>, <span class="st">&quot;4&quot;</span>, <span class="st">&quot;5&quot;</span>, <span class="st">&quot;6&quot;</span>, <span class="st">&quot;7&quot;</span>, <span class="st">&quot;8&quot;</span>, <span class="st">&quot;9&quot;</span>]

myKeys <span class="fu">=</span> [
 
    <span class="co">-- other additional keys</span>
 
    ] <span class="fu">++</span> <span class="co">-- (++) is needed here because the following list comprehension</span>
         <span class="co">-- is a list, not a single key binding. Simply adding it to the</span>
         <span class="co">-- list of key bindings would result in something like [ b1, b2,</span>
         <span class="co">-- [ b3, b4, b5 ] ] resulting in a type error. (Lists must</span>
         <span class="co">-- contain items all of the same type.)</span>
 
    [ (otherModMasks <span class="fu">++</span> <span class="st">&quot;M-&quot;</span> <span class="fu">++</span> [key], action tag)
      <span class="fu">|</span> (tag, key)  <span class="fu">&amp;</span>lt;<span class="fu">-</span> <span class="fu">zip</span> myWorkspaces <span class="st">&quot;123456789&quot;</span>
      , (otherModMasks, action) <span class="fu">&amp;</span>lt;<span class="fu">-</span> [ (<span class="st">&quot;&quot;</span>, windows <span class="fu">.</span> W.view) <span class="co">-- was W.greedyView</span>
                                      , (<span class="st">&quot;S-&quot;</span>, windows <span class="fu">.</span> W.shift)]
    ]</code></pre>]]></description>
    <pubDate>Thu, 05 Apr 2012 12:30:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/04/05/xmonad-gnome/news.html</guid>
</item>
<item>
    <title>Publican, Document Freedom Day workshop, ISI, Kolkata</title>
    <link>http://www.shakthimaan.com/posts/2012/03/30/publican-dfd-isical-workshop/news.html</link>
    <description><![CDATA[<p>I presented <a href="https://fedorahosted.org/publican/">Publican</a> at the <a href="http://www.ilug-cal.info/index.php?option=com_content&amp;task&amp;=view&amp;id=185">Document Freedom Workshop 2012</a> at the <a href="http://www.isical.ac.in/~cssc/">Computer and Statistical Service Centre (CSSC)</a>, S N Bose Bhavan, <a href="http://www.isical.ac.in/">Indian Statistical Institute, Kolkata</a>, West Bengal, India held between March 28-29, 2012.</p>
<img alt="Poster at registration desk" src="http://www.shakthimaan.com/Mambo/gallery/albums/album79/3_poster_at_registration_desk.jpg"></img>
<p>Day I</p>
<p><a href="http://fedoraproject.org/wiki/User:Amani">A Mani</a> started the day’s proceedings with an introduction to Free/Libre/Open Source Software, and basic shell commands. We had a computer lab with Fedora installed where the participants used the terminal to try out the hands-on exercises.</p>
<p>I then introduced Publican to the audience comprising mostly of students and faculty. <a href="http://fedoraproject.org/wiki/User:Jsmith">Jared Smith</a> had presented Publican during <a href="http://fudcon.in/">FUDCon Pune 2011</a>, and, with his permission, I added more content and a lab section. The participants were able to use Publican to create and build documents with Bengali content!</p>
<img alt="Lab session" src="http://www.shakthimaan.com/Mambo/gallery/albums/album79/11_latex_lab_session.jpg"></img>
<p>After lunch, <a href="http://souravsengupta.com/">Sourav Sen Gupta</a> gave an introduction to <a href="http://www.latex-project.org/">LaTeX</a> and <a href="http://en.wikipedia.org/wiki/Beamer_%28LaTeX%29">Beamer</a> with his “‘Golden Ratio’ for Typesetting - A quick and random introduction to LaTeX and Beamer” presentation. He used the <a href="http://kile.sourceforge.net/">Kile</a> editor to demonstrate LaTeX markups and for generating PDF files. I helped the students with the lab session in writing, and troubleshooting warnings and errors when using Kile with pdflatex.</p>
<p>I also met and spoke with two physicists, <a href="http://en.wikipedia.org/wiki/John_A._Smolin">John Smolin</a> and <a href="http://www.infres.enst.fr/~markham/">Damian Markham</a>, who had come to present at another workshop on <a href="http://www.isical.ac.in/~coec/workshop/quant2012.html">“Information and Security in Quantum World”</a>. John Smolin is an avid Fedora user!</p>
<p>Day II</p>
<p>The first session on the second day was by <a href="http://www.jitrc.com/">Jit Ray Chowdhury</a> on <a href="http://moodle.org/">Moodle</a> CMS. He started with the basics of installing Apache, MySQL and PHP on Fedora, followed by creating a simple HTML, and PHP page. Participants then learnt how to install Drupal, Moodle and configure the same.</p>
<p><a href="http://www.hbcse.tifr.res.in/people/academic/nagarjuna-g">Prof. Nagarjuna</a> then started his session on why document freedom is essential, and gave an introduction to <a href="http://orgmode.org/">Emacs org-mode</a>, with examples. I also met Krishnakant Mane but couldn’t attend his (post-lunch) session on “LibreOffice and Screen Readers” as I had to leave early to catch a flight.</p>
<p>Thanks to the organizing committee: <a href="http://www.isical.ac.in/~mandar/">Prof. Mandar Mitra</a>, A Mani, Partha Pratim Kundu, <a href="http://www.isical.ac.in/~malay_r/">Malay Bhattacharya</a>, and Tanmay Basu for the wonderful hospitality, and to Red Hat for sponsoring my travel.</p>
<p>The <a href="http://shakthimaan.com/downloads.html#publican">publican presentation</a> is available. Few photos taken during the event are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album79">/gallery</a>.</p>]]></description>
    <pubDate>Fri, 30 Mar 2012 19:10:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/03/30/publican-dfd-isical-workshop/news.html</guid>
</item>
<item>
    <title>RubyConf, India, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/03/26/rubyconf-india-2012/news.html</link>
    <description><![CDATA[<p>I attended and also gave a lightning talk at <a href="http://rubyconfindia.org/">RubyConf India 2012</a> at the <a href="http://pune.regency.hyatt.com/hyatt/hotels/index.jsp?null">Hyatt Regency</a>, Pune, Maharashtra, India between March 24-25, 2012.</p>
<img alt="RubyConf India 2012" src="http://www.shakthimaan.com/Mambo/gallery/albums/album78/1_banner.jpg"></img>
<p>Day I</p>
<p>The keynote was delivered by <a href="http://blog.headius.com/">Charles Oliver Nutter</a> on JRuby, and Ruby virtual machines. This was followed by the recorded video keynote by <a href="http://en.wikipedia.org/wiki/Yukihiro_Matsumoto">Yukihiro Matsumoto</a> on Ruby, its history, and his focus on Ruby for embedded and scientific computing for the next couple of years. mruby for embedded systems will be an interesting project to look forward to this summer.</p>
<p>I then attended the talk on “Using Ruby to Craft and Test Beautiful Command Line Applications” by Nikhil Mungel and Shishir Das, who gave useful examples on how to construct meaningful and helpful command line tools. <a href="http://parolkar.com/">Abhishek Parolkar</a>, founder of <a href="http://www.bigdata.sg">BigData.sg</a>, spoke on available Ruby tools, and architectures for processing large volumes of data in the “Ruby for the soul of Big Data nerds” talk.</p>
<p>Post lunch, I attended the session on “Responsive Design: now 90% easier with SASS!” by Arpan CJ, who also designed the RubyConf India 2012 website. He explained how <a href="http://sass-lang.com/">Sass</a> is useful in creating websites that can be quickly made to fit different display dimensions and resolutions across phones, tablets, and PCs.</p>
<p><a href="http://blog.deobald.ca/">Steven Deobald</a> presented on “Clojure is my favourite ruby”. He gave wonderful programming construct examples for Ruby and Clojure, and why he enjoyed Clojure more than Ruby. For the last talk of the day, I attended Sandip Ransing and Shailesh Patil’s talk on “VoIP on Rails in India” where they had developed a call centre Rails front-end application that uses <a href="http://adhearsion.com/">Adhearsion</a>. They have an internal LAN setup for call centres: Rails application -&gt; Adhearsion -&gt; Asterisk -&gt; PRI (Primary Rate Interface) -&gt; PSTN (Public Switched Telephone Network).</p>
<p>There were quite a number of lightning talks at the end of the day. One from <a href="http://www.flipkart.com">flipkart.com</a>, where they mentioned that they use a service oriented architecture with JSON over HTTP, along with RabbitMQ, Padrino and JRuby.</p>
<p>Day II</p>
<p>The second day began with a keynote by <a href="http://lindsaar.net/">Mikel Lindsaar</a> on “How to win”, where he emphasized on defining a purpose/reason to do anything and everything. <a href="http://blog.saush.com/">Chang Sau Sheong</a> presented on using Ruby and R tools for doing population simulation in his “Sex, Money and Evolution - Simulation and Data Analysis with Ruby and R” talk. Niranjan Prabhakar Sarade gave an overview of the internal data structures present in the Ruby MRI virtual machine source code in the “What lies beneath the beautiful code?” talk.</p>
<p>After lunch, I attended the “Smells and patterns in test/spec code” talk by Sidu Ponnappa and Aninda Kundu where they discussed the different patterns and smells of test driven code, and their implications. Karunakar presented on “Large scale Ruby project, challenges and Pitfalls”, sharing his experience on managing and maintaining large scale Ruby projects. For the last talk of the day, I attended <a href="http://matthewkirk.com/">Matthew Kirk’s</a> talk on “‘method_missing’ Should be Missing” where he talked about the overuse of method_missing, “monkey patching”, and eval from his experience.</p>
<p>Lightning talks were scheduled for the second day as well, and I was happy to present <a href="http://shakthimaan.com/downloads.html#nursery-rhymes-rb">nursery_rhymes.rb</a>. Few photos taken during the event are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album78">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 26 Mar 2012 17:10:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/03/26/rubyconf-india-2012/news.html</guid>
</item>
<item>
    <title>Pragyan, NIT, Trichy, India, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/02/27/pragyan-nit-trichy-2012/news.html</link>
    <description><![CDATA[<p>I had presented the (in)famous <a href="http://shakthimaan.com/downloads.html#i-want-2-do-project-tell-me-wat-2-do">“i-want-2-do-project.tell-me-wat-2-do-fedora”</a> presentation as a guest lecturer at <a href="http://www.pragyan.org">“Pragyan 2012”</a>, <a href="http://www.nitt.edu/home/">NIT, Trichy</a>, Tamil Nadu, India on Sunday, February 26, 2012.</p>
<img alt="NIT Trichy" src="http://www.shakthimaan.com/Mambo/gallery/albums/album77/6_nit_trichy.jpg"></img>
<p>Most of the student participants were familiar with the the *nix desktop. I explained to them the various project, communication guidelines, and best practices that they need to follow when working on free/open source software projects. I had also introduced them to the various Fedora sub-projects that they can participate and learn from.</p>
<img alt="Audience" src="http://www.shakthimaan.com/Mambo/gallery/albums/album77/8_audience.jpg"></img>
<p>Four years ago, I was invited by the <a href="http://www.pragyan.org/12/home/pengufest/">Pengufest</a> team of Pragyan, but, I couldn’t make it then. Apparently, my presentation has been circulating among them for quite some time, and they now got to hear it from the horse’s mouth.</p>
<p>On Saturday, as part of the Pengufest track there were sessions held by <a href="http://www.bell-labs.com/user/poosala/">Dr. Viswanath Poosala</a> on “Engineering Innovation - A recipe for coming up with disruptive ideas”, and sessions on “How to be a Hacker?”, “Functional Programming and why it matters”, and “Lisp - God’s own programming language” by <a href="http://www.linuxforu.com/author/vivek-shangari/">Vivek Shangari</a>.</p>
<p>I also attended <a href="http://sunson.livejournal.com/">Suraj Kumar’s</a> talk on “GNU/Linux in large scale Internet based businesses”, where he addressed the different concepts, terminologies and F/OSS tools that people use for large scale web deployments.</p>
<p>I would like to thank Red Hat for sponsoring my travel, and the organizing team of Pragyan 2012 for the wonderful hospitality.</p>
<img alt="Twilight" src="http://www.shakthimaan.com/Mambo/gallery/albums/album77/4_twilight.jpg"></img>
<p>More photos taken during the trip are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album77">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 27 Feb 2012 12:20:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/02/27/pragyan-nit-trichy-2012/news.html</guid>
</item>
<item>
    <title>Karaikudi trip photos</title>
    <link>http://www.shakthimaan.com/posts/2012/02/19/karaikudi-trip-2012/news.html</link>
    <description><![CDATA[<p>Few photos taken on a trip to <a href="http://en.wikipedia.org/wiki/Karaikudi">Karaikudi</a>, Tamil Nadu, India. More photos in my <a href="http://www.shakthimaan.com/Mambo/gallery/album76">/gallery</a>.</p>
<img alt="Street view" src="http://www.shakthimaan.com/Mambo/gallery/albums/album76/1_street_view.jpg"></img>
<img alt="Inside courtyard" src="http://www.shakthimaan.com/Mambo/gallery/albums/album76/4_inside_courtyard.jpg"></img>
<img alt="Chettinad palace" src="http://www.shakthimaan.com/Mambo/gallery/albums/album76/10_chettinad_palace.jpg"></img>]]></description>
    <pubDate>Sun, 19 Feb 2012 14:10:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/02/19/karaikudi-trip-2012/news.html</guid>
</item>
<item>
    <title>ghc-netlist</title>
    <link>http://www.shakthimaan.com/posts/2012/02/19/ghc-netlist/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/netlist">Netlist</a> is a simplified and generic netlist designed to be compatible with Hardware Description Languages (HDLs) like Verilog and VHDL. It is now available in Fedora. Install it using:</p>
<pre class="shell"><code> $ sudo yum install ghc-netlist-devel</code></pre>
<p>An example usage from the sources is given below:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">Language.Netlist.AST</span>
<span class="kw">import</span> <span class="dt">Language.Netlist.Util</span>

<span class="ot">t ::</span> <span class="dt">Module</span>
t <span class="fu">=</span> <span class="dt">Module</span> <span class="st">&quot;foo&quot;</span> (f ins) (f outs) [] ds
  <span class="kw">where</span>
    f xs <span class="fu">=</span> [ (x, makeRange <span class="dt">Down</span> sz) <span class="fu">|</span> (x, sz) <span class="fu">&amp;</span>lt;<span class="fu">-</span> xs ]
    ins <span class="fu">=</span> [(<span class="st">&quot;clk&quot;</span>, <span class="dv">1</span>), (<span class="st">&quot;reset&quot;</span>, <span class="dv">1</span>), (<span class="st">&quot;enable&quot;</span>, <span class="dv">1</span>), (<span class="st">&quot;x&quot;</span>, <span class="dv">16</span>)]
    outs <span class="fu">=</span> [(<span class="st">&quot;z&quot;</span>, <span class="dv">16</span>)]

<span class="ot">ds ::</span> [<span class="dt">Decl</span>]
ds <span class="fu">=</span> [ <span class="dt">NetDecl</span> <span class="st">&quot;a&quot;</span> (makeRange <span class="dt">Down</span> <span class="dv">16</span>) (<span class="kw">Just</span> (<span class="dt">ExprVar</span> <span class="st">&quot;x&quot;</span>))
     , <span class="dt">NetDecl</span> <span class="st">&quot;b&quot;</span> (makeRange <span class="dt">Down</span> <span class="dv">16</span>) (<span class="kw">Just</span> (sizedInteger <span class="dv">16</span> <span class="dv">10</span>))
     , <span class="dt">MemDecl</span> <span class="st">&quot;c&quot;</span> <span class="kw">Nothing</span> (makeRange <span class="dt">Down</span> <span class="dv">16</span>) <span class="kw">Nothing</span>
     , <span class="dt">ProcessDecl</span> (<span class="dt">Event</span> (<span class="dt">ExprVar</span> <span class="st">&quot;clk&quot;</span>) <span class="dt">PosEdge</span>)
                   (<span class="kw">Just</span> (<span class="dt">Event</span> (<span class="dt">ExprVar</span> <span class="st">&quot;reset&quot;</span>) <span class="dt">PosEdge</span>, (<span class="dt">Assign</span> (<span class="dt">ExprVar</span> <span class="st">&quot;c&quot;</span>) (sizedInteger <span class="dv">16</span> <span class="dv">0</span>))))
                   (<span class="dt">If</span> (<span class="dt">ExprVar</span> <span class="st">&quot;enable&quot;</span>)
                         (<span class="dt">Assign</span> (<span class="dt">ExprVar</span> <span class="st">&quot;c&quot;</span>) (<span class="dt">ExprVar</span> <span class="st">&quot;x&quot;</span>))
                         <span class="kw">Nothing</span>)
     ]</code></pre>
<p>Load it using ghci version 7.0.2 gives:</p>
<pre class="shell"><code>$ ghci Test.hs 
GHCi, version 7.0.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( Test.hs, interpreted )
Ok, modules loaded: Main.</code></pre>
<p>You can check the value of ‘ds’ using:</p>
~~~~ {.haskell} <em>Main&gt; ds Loading package array-0.3.0.2 … linking … done. Loading package bytestring-0.9.1.10 … linking … done. Loading package containers-0.4.0.0 … linking … done. Loading package binary-0.5.0.2 … linking … done. Loading package syb-0.3 … linking … done. Loading package netlist-0.3.1 … linking … done. [NetDecl “a” (Just (Range (ExprLit Nothing (ExprNum 15)) (ExprLit Nothing (ExprNum 0)))) (Just (ExprVar “x”)),NetDecl “b” (Just (Range (ExprLit Nothing (ExprNum 15)) (ExprLit Nothing (ExprNum 0)))) (Just (ExprLit (Just 16) (ExprNum 10))),MemDecl “c” Nothing (Just (Range (ExprLit Nothing (ExprNum 15)) (ExprLit Nothing (ExprNum 0)))) Nothing,ProcessDecl (Event (ExprVar “clk”) PosEdge) (Just (Event (ExprVar “reset”) PosEdge,Assign (ExprVar “c”) (ExprLit (Just 16) (ExprNum 0)))) (If (ExprVar “enable”) (Assign (ExprVar “c”) (ExprVar “x”)) Nothing)]</em>Main&gt; ~~~~]]></description>
    <pubDate>Sun, 19 Feb 2012 02:05:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/02/19/ghc-netlist/news.html</guid>
</item>
<item>
    <title>GNUnify, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/02/13/gnunify-pune-2012/news.html</link>
    <description><![CDATA[<p>I attended <a href="http://gnunify.in/">GNUnify 2012</a> on February 10-11, 2012 at <a href="http://sicsr.ac.in/">Symbiosis Institute of Computer Studies and Research</a>, Pune, India.</p>
<p>Day I</p>
<p>The first day first session that I attended was on <a href="http://gnunify.in/2012/KYS/ArunKhan#talk1">“Build your own cloud computing infrastructure”</a> by <a href="http://www.gnunify.in/2012/KYS/ArunKhan">Arun Khan</a>. He addressed the different concepts and tools available for setting up a private computing infrastructure. After the first session, I moved to listen to <a href="http://fedoraproject.org/wiki/User:Tuxdna">Saleem Ansari’s</a> talk on <a href="http://gnunify.in/2012/KYS/SaleemAnsari#talk1">“Torque Box - Ruby App Server”</a>. TorqueBox is small adaptation layer on top of JBoss’s Java application server. I then attended <a href="http://gnunify.in/2012/KYS/SrikantPatnaik">Srikant Patnaik’s</a> talk on <a href="http://gnunify.in/2012/KYS/SrikantPatnaik#talk1">“Web based embedded project design”</a>. He demonstrated a simple example of using an LED with Arduino and controlling it with a Python CGI webserver. He also demonstrated the use of Fritzing to build the demoed circuit. All the tools are available on Fedora:</p>
<pre class="shell"><code> $ sudo yum install fritzing arduino</code></pre>
<p>After lunch, I attended the talk on “Btrfs - The next Generation Filesystem on Linux” by <a href="http://wiki.embeddednirvana.org/User:Neependra">Neependra Khare</a>. He addressed the different problems in the current filesystems, and how Btrfs tries to solve them. For the last talk of the day I attended Dr. Abhijat Vichare’s (from <a href="http://www.crlindia.com/">Computational Research Laboratories</a> Pune) session on “Portability concepts in GCC”. It was a detailed session on the internals of <a href="http://gcc.gnu.org/">GCC</a>.</p>
<p>Day II</p>
<p>I attended <a href="http://fedoraproject.org/wiki/User:Suchakra">Suchakra Sharma’s</a> session on <a href="http://gnunify.in/2012/KYS/SuchakrapaniDattSharma#talk1">“Developing QT Apps on Android”</a>. I then went to assist with the system programming contest organized by Neependra Khare. The participants were given a written test on the first day, and based on the results, few were selected to compete in the programming contest (sponsored by <a href="http://stec-inc.com/">STEC</a>). For the contest, few programming problems were given to the participants to be solved in C within couple of hours time. The first, second and third prices were worth INR 5000, 3000 and 2000 respectively. Kiran Divekar (from <a href="http://www.marvell.com/">Marvell</a>) joined us, and we reviewed the code and chose the winners. After lunch, we announced the winners and the organizers and <a href="http://plug.org.in">PLUG</a> members helped with the prize distribution.</p>
<img alt="Programming contest" src="http://www.shakthimaan.com/Mambo/gallery/albums/album75/5_programming_contest.jpg"></img>
<p>I then went to attend Arun Khan’s session on <a href="http://gnunify.in/2012/KYS/arunkhan#talk2">“Convert your old laptop to an useful network device”</a>. He had illustrated with numerous examples on how he had used old hardware into functional, useful network devices. It is extremely useful for beginners who are interested in getting started in working with inexpensive hardware. I then had a chance to meet and talk with <a href="http://blog.mozilla.com/gen/">Gen Kanai</a> and <a href="http://playingwithsid.blogspot.in/">Rakesh “Arky” Ambati</a> from Mozilla. It was also good to catch up with lot of Wikimedia folks, with whom I went for dinner at the <a href="http://www.vaishalihotel.in/main.html">Vaishali restaurant</a>. Few pictures taken during the event are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album75">/gallery</a>.</p>
<img alt="Wikimedia dinner at Vaishali" src="http://www.shakthimaan.com/Mambo/gallery/albums/album75/7_vaishali_dinner.jpg"></img>]]></description>
    <pubDate>Mon, 13 Feb 2012 16:10:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/02/13/gnunify-pune-2012/news.html</guid>
</item>
<item>
    <title>VLSI Conference, Hyderabad, 2012</title>
    <link>http://www.shakthimaan.com/posts/2012/01/15/vlsi-conference-hyderabad-2012/news.html</link>
    <description><![CDATA[<p>I attended the <a href="http://vlsiconference.com/vlsi2012/">25th International Conference on VLSI Design and 11th International Conference on Embedded Systems</a> between January 7-11, 2012 at the <a href="http://www.hicc.com/">Hyderabad International Convention Centre</a>, Hyderabad, India. The first two days consisted of tutorial sessions, and the next three days had the <a href="http://vlsiconference.com/vlsi2012/conf_schedule.htm">conference presentations</a>. There were also exhibit stalls from different companies.</p>
<img alt="25th VLSID 2012" src="http://shakthimaan.com/downloads/glv/2012/vlsid-jan/vlsid-jan-2012.png"></img>
<p>On the first day I attended the tutorial session on <a href="http://www.systemc-ams.org/">SystemC AMS extensions</a> by <a href="https://www.fp7-smartcode.eu/ecws2/biosketch/damm">Markus Damm</a>, <a href="https://www.ict.tuwien.ac.at/mitarbeiter/adhikari">Sumit Adhikari</a>, and <a href="http://www.lip6.fr/actualite/personnes-fiche.php?ident=P102">François Pecheux</a>. <a href="http://fedoraproject.org/wiki/User:Chitlesh">Chitlesh Goorah</a> had earlier tried to get <a href="http://www.spinics.net/linux/fedora/fedora-electronic-lab/msg00117.html">SystemC into Fedora</a> and <a href="http://spins.fedoraproject.org/fel/">Fedora Electronic Lab</a>, but, due to licensing issues it could not be included. SystemC-AMS is now released under Apache license. Open SystemC Initiative and Accellera Unite have now integrated to become <a href="http://www.accellera.org/home/">Accellera Systems Initiative</a>. We hope to work with them to get their sources under a single free/open source software license. François Pecheux is from <a href="http://www.lip6.fr/index.php?LANG=en">Laboratoire d’Informatique de Paris 6</a>, <a href="http://www.upmc.fr/en/index.html">Pierre &amp; Marie Curie University (UPMC)</a>, Paris, France, and we already ship their free/open source EDA tools in Fedora.</p>
<p>On day two, I attended the tutorial session by <a href="http://people.epfl.ch/arvind.sridhar">Sridhar Arvind</a> on <a href="http://esl.epfl.ch/3d-ice.html">3D-ICE</a>, a free/open source interlayer cooling emulator from <a href="http://esl.epfl.ch">Embedded System Laboratory</a>, <a href="http://www.epfl.ch/index.en.html">Ecole polytechnique fédérale de Lausanne</a>, Switzerland. I have already been working with Sridhar, <a href="http://people.epfl.ch/david.atienza">Prof. David Atienza</a> and <a href="http://people.epfl.ch/alessandro.vincenzi">Alessandro Vincenzi</a> on testing 3D-ICE on Fedora. I had built and tested the dependency <a href="http://crd-legacy.lbl.gov/~xiaoye/SuperLU/">SuperLU</a> library and the 3D-ICE package before the tutorial session. Their software has already been downloaded by over 70 research labs around the world. I will push our tested changes to them. On the later half of the day, I attended a session on verification constraint complexity. <a href="http://www.trusster.com/products/teal/">Teal</a> is a useful verification utility and connection library that has support for constraints and parameter control. The authors of the tool had agreed to release it as free/open source software, and we also ship it in Fedora.</p>
<p>On the following three days of the conference, I attended various paper presentations from different tracks from reconfigurable architectures to methods in AMS optimization. I met <a href="http://www.isical.ac.in/~ssk/">Prof. Susmita Sur-Kolay</a> from the <a href="http://www.isical.ac.in/">Indian Statistical Institute</a>, Kolkata, India where they run Fedora in their labs. They also wished to use the 3D-ICE tool and GPU tools in their labs. I also visited the exhibit stalls meeting different people from the industry and academia. There are quite a few interesting free/open source tools that users can benefit from, and we will work in making them available in Fedora. In 2013, the conference will be held in Pune. Thanks to Red Hat for sponsoring my travel and participation at the conference.</p>]]></description>
    <pubDate>Sun, 15 Jan 2012 13:20:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2012/01/15/vlsi-conference-hyderabad-2012/news.html</guid>
</item>
<item>
    <title>Tux workshop, COEP</title>
    <link>http://www.shakthimaan.com/posts/2011/12/28/tux-workshop-coep/news.html</link>
    <description><![CDATA[<p>I had conducted an introductory session on Fedora as part of the <a href="http://mind-spark.org/tux.php">Tux workshop</a>, MindSpark 2011 at <a href="http://www.coep.org.in/">College of Engineering, Pune</a>, Maharashtra, India on Tuesday, December 27, 2011.</p>
<img alt="Tux workshop" src="http://www.shakthimaan.com/Mambo/gallery/albums/album74/2_poster.jpg"></img>
<p>There were hundred participants distributed between the morning and repeat sessions in the afternoon. I explained about hardware architecture, system boot sequence, and discussed basic installation concepts to the participants. I then gave a demo of installing Fedora using Virtual Machine Manager. I showed them the plethora of F/OSS software that they can use, and also discussed about Fedora sub-projects, and basic project/communication guidelines. I have given them F16 ISO DVD images.</p>
<p>Thanks to Sanket Mehta for working with me for a month in organizing this workshop. Few photos taken at the event are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album74">/gallery</a>.</p>]]></description>
    <pubDate>Wed, 28 Dec 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/12/28/tux-workshop-coep/news.html</guid>
</item>
<item>
    <title>Wai, Mahabaleshwar trip</title>
    <link>http://www.shakthimaan.com/posts/2011/12/13/wai-mahabaleshwar-trip/news.html</link>
    <description><![CDATA[<p>I had been on a weekend trip to <a href="http://en.wikipedia.org/wiki/Wai,_Maharashtra">Wai</a> and <a href="http://en.wikipedia.org/wiki/Mahabaleshwar">Mahabaleshwar</a>, Maharashtra, India. More photos in my <a href="http://www.shakthimaan.com/Mambo/gallery/album73">/gallery</a>.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album73/DSC03186_2.jpg" alt="highway"></img>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album73/DSC03186_40.jpg" alt="Sahyadri hills"></img>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album73/DSC03186_64.jpg" alt="Dhom Dam"></img>]]></description>
    <pubDate>Tue, 13 Dec 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/12/13/wai-mahabaleshwar-trip/news.html</guid>
</item>
<item>
    <title>Fedora workshop, Foresight Institute</title>
    <link>http://www.shakthimaan.com/posts/2011/12/04/fedora-workshop-foresight/news.html</link>
    <description><![CDATA[<p>I had conducted a one-day introductory workshop on Fedora at <a href="http://www.foresightedu.com">Foresight Institute of Management and Research</a>, affiliated to University of Pune, Maharashtra, India on Saturday, December 3, 2011.</p>
<img alt="Foresight Institute" src="http://shakthimaan.com/downloads/glv/2011/foresight-2011/2-foresight.JPG"></img>
<p>I started the day’s proceedings with an introduction to free/open source software. Most of the students who participated were studying towards their bachelor’s programme in computer applications (BCA), and were familiar with C, C++ and Java development. I gave a demo of the Fedora desktop, and also showed them the plethora of software that they can use.</p>
<p>I also introduced them to revision control with examples on using git. I also addressed the various communication tools that we use, the basic communication guidelines, and the Fedora sub-projects that they can participate in.</p>
<img alt="Audience" src="http://shakthimaan.com/downloads/glv/2011/foresight-2011/1-audience.JPG"></img>
<p>During the post-lunch session, I explained to them about copyright, trademarks, and licensing, and how to use them. I explained the basic concepts in installation, and gave them a demo of installation of Fedora. I have given them CD/DVD images of both Fedora 15 and 16.</p>
<p>Thanks to Antriksh Shah for working with me for a month in organizing this workshop.</p>]]></description>
    <pubDate>Sun, 04 Dec 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/12/04/fedora-workshop-foresight/news.html</guid>
</item>
<item>
    <title>Shakthimaan's tweets</title>
    <link>http://www.shakthimaan.com/posts/2011/11/14/shakthimaan-tweets/news.html</link>
    <description><![CDATA[<a href="http://identi.ca/shakthimaan"><img src="http://shakthimaan.com/downloads/companylogos/identi_ca.jpg" alt="identica logo"></img></a>
<a href="http://twitter.com/shakthimaan"><img src="http://shakthimaan.com/downloads/companylogos/twitter.png" alt="twitter logo"></img></a>
<p>Shakthimaan’s tweets are now available for reference at <a href="http://www.shakthimaan.com/links/tweets.html">http://www.shakthimaan.com/links/tweets.html</a>. I use identi.ca and twitter for documentation links, book references, and useful tips. I am now making it available for others as well. You can also get the sources at:</p>
~~~~ {.shell} $ git clone git://gitorious.org/shakthimaan-tweets/mainline.git<br />~~~~]]></description>
    <pubDate>Mon, 14 Nov 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/11/14/shakthimaan-tweets/news.html</guid>
</item>
<item>
    <title>GNU Emacs erc notify</title>
    <link>http://www.shakthimaan.com/posts/2011/11/13/emacs-erc-notify/news.html</link>
    <description><![CDATA[<p>I use the following code in .emacs with Emacs <a href="http://www.emacswiki.org/emacs/ERC">ERC</a> to get notified using notify-send whenever anyone pings me on IRC:</p>
~~~~ {.lisp} (defun erc-global-notify (matched-type nick msg) (interactive) (when (eq matched-type ’current-nick) (shell-command (concat “notify-send -t 8000 -c &quot;im.received&quot; &quot;” (car (split-string nick “!”)) &quot; mentioned your nick&quot; &quot;&quot; msg “&quot;”)))) (add-hook ’erc-text-matched-hook ’erc-global-notify) ~~~~]]></description>
    <pubDate>Sun, 13 Nov 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/11/13/emacs-erc-notify/news.html</guid>
</item>
<item>
    <title>FUDCon Pune badges</title>
    <link>http://www.shakthimaan.com/posts/2011/11/12/fudcon-pune-badges/news.html</link>
    <description><![CDATA[<img alt="FUDCon Pune" src="https://fedoraproject.org/w/uploads/c/cf/Button.png"></img>
<p>As part of the <a href="http://fudcon.in/">FUDCon Pune 2011</a> organizing team, I had volunteered to help with design work. After attending few training sessions on <a href="http://inkscape.org/">Inkscape</a> by <a href="http://fedoraproject.org/wiki/User:Duffy">Máirín Duffy</a>, I decided to give it a try. <a href="http://fedoraproject.org/wiki/User:Ianweller">Ian Weller</a> had written a Python script to create name badges with Inkscape. It would read list of names from a comma separated file (csv) file, and would generate pdfs from the design provided in the svg file. I had customized the script with help from <a href="http://fedoraproject.org/wiki/DaveMalcolm">Dave Malcolm</a>, created csv files for speakers, volunteers and registered delegates, and generated over 400 named badges for the FUDCon event.</p>
<img alt="FUDCon coupons" src="http://shakthimaan.com/downloads/glv/2011/fudcon-2011/registration-desk-name-badges.jpg"></img>
<p>Thanks to <a href="http://fedoraproject.org/wiki/User:Kushal">Kushal Das</a> for the <a href="http://www.flickr.com/photos/kushaldas/sets/72157628097141150">photograph</a>.</p>
<p>Badges printed on green paper would be for volunteers and organizers, while those printed on blue paper were for speakers. Everyone else got their names printed on white paper. We had also printed badges with just the FUDCon Pune logo for people who register at the venue to write their names on it. We decided not to use QR codes. If we had data on the delegates such as t-shirt size, food preference, identi.ca/twitter feed, IRC nick names, we could have printed them on the badge as well. I did leave enough white space, so people could write whatever they want. The scripts, the Inkscape svg design, an example csv and sample pdf generated are available at <a href="http://shakthimaan.fedorapeople.org/docs/fudcon/">http://shakthimaan.fedorapeople.org/docs/fudcon</a>. I had also designed the coupons for lunch, day I and II, and for the FUDPub:</p>
<img alt="FUDCon coupons" src="http://shakthimaan.com/downloads/glv/2011/fudcon-2011/fudcon-coupons.png"></img>]]></description>
    <pubDate>Sat, 12 Nov 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/11/12/fudcon-pune-badges/news.html</guid>
</item>
<item>
    <title>FUDCon Pune QUCS</title>
    <link>http://www.shakthimaan.com/posts/2011/11/08/fudcon-pune-qucs/news.html</link>
    <description><![CDATA[<img alt="FUDCon Pune" src="https://fedoraproject.org/w/uploads/c/cf/Button.png"></img>
<p>As a follow-up to my talk on <a href="http://qucs.sourceforge.net/">QUCS</a> on day II of FUDCon Pune 2011, I wanted to create circuit examples on the final day from a text book that was being followed for basic electrical engineering course work. This would be a supplement that a student can use when learning circuit theory. Anuj More and Payas Awadhutkar joined in, and we worked on schematics from chapter I of <a href="http://www.amazon.ca/Fundamentals-Electrical-Engineering-Leonard-Bobrow/dp/0195105095">‘Fundamentals of Electrical Engineering’</a> by Leonard S. Boborow, a.k.a “Babu Rao” in India. The schematics were created in qucs-0.0.16, and are available from Payas Awadhutkar gitorious repo:</p>
<pre class="shell"><code>$ git clone git://gitorious.org/qucs-baburao/qucs-baburao.git</code></pre>
<p>As a finale to the event, Jared Smith cut the Fedora cake!</p>
<img alt="Jared cutting the cake" src="http://www.shakthimaan.com/Mambo/gallery/albums/album72/39_jared_smith_cake_cutting.jpg"></img>
<p>I would like to thank all the volunteers from <a href="http://www.coep.org.in/">College of Engineering, Pune</a> and <a href="http://www.coep.org.in/index.php?profile=abhijit.comp">Prof. Abhijit A M</a> who coordinated with us in organizing this conference. Thanks also goes to the Fedora contributors who helped in getting things done. Special thanks to <a href="http://www.redhat.com/">Red Hat</a> for sponsoring the event, and for their wonderful support. The COEP volunteers:</p>
<img alt="COEP volunteers" src="http://www.shakthimaan.com/Mambo/gallery/albums/album72/32_coep_volunteers.jpg"></img>
<p>We trained many students over the years as part of the Fedora project. I was very happy to see them as speakers and present on the things that they have been working on, and also help others when required during the conference. This is the best outcome that I take from the event.</p>
<p>All the photos taken at FUDCon Pune 2011 are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album72">/gallery</a>.</p>]]></description>
    <pubDate>Tue, 08 Nov 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/11/08/fudcon-pune-qucs/news.html</guid>
</item>
<item>
    <title>FUDCon Pune Day II</title>
    <link>http://www.shakthimaan.com/posts/2011/11/07/fudcon-pune-day-2/news.html</link>
    <description><![CDATA[<img alt="FUDCon Pune" src="https://fedoraproject.org/w/uploads/c/cf/Button.png"></img>
<p>I arrived early again on day II of <a href="http://fudcon.in/">FUDCon Pune 2011</a>. The day’s proceedings started with a keynote by <a href="http://fedoraproject.org/wiki/User:HarishPillay">Harish Pillay</a> on his thoughts on community work, and on his new role as the lead of <a href="http://fedoraproject.org/wiki/Category:Community_Architecture">Community Architecture</a>. I then attended the <a href="http://fudcon.in/sessions/security-open-source-world">‘Security in the Open Source world!’</a> talk by <a href="http://fedoraproject.org/wiki/User:Eteo">Eugene Teo</a> and <a href="http://fedoraproject.org/wiki/User:Huzaifas">Huzaifa Sidhpurwala</a>. Their talk covered quite a bit on the various security threats, and on how they are handled.</p>
<img alt="Eugene Teo" src="http://www.shakthimaan.com/Mambo/gallery/albums/album72/11_eugene_teo.jpg"></img>
<p>Since I attended the GlusterFS overview talk on the first day, I wanted to follow it up with the <a href="http://fudcon.in/sessions/glusterfs-hacking-howto">‘GlusterFS: Hacking HOWTO’</a> talk by <a href="https://github.com/amarts">Amar Tumballi</a>. He suggested newbies to read on translators as a starting point to work with Gluster, along with few ideas that they could start with. Lunch was again served at 12 noon. After lunch, I headed to Seminar Hall 2 for my talk on <a href="http://fudcon.in/sessions/qucs-qt-love-story">‘Quite Universal Circuit Simulator - A Qt Love Story’</a> (<a href="http://qucs.sourceforge.net/">QUCS</a>). It is an introduction to electrical circuit theory using circuit components as “fictional” men and women. The example circuits were created using qucs-0.0.15. The examples are available at the <a href="https://gitorious.org/qucs-a-qt-love-story/qucs-a-qt-love-story_prj">gitorious repo</a>:</p>
<pre class="shell"><code>$ git clone git://gitorious.org/qucs-a-qt-love-story/qucs-a-qt-love-story_prj.git</code></pre>
<p>After my talk, I went to the auditorium to attend the talk by <a href="http://fedoraproject.org/wiki/User:Amitshah">Amit Shah</a> on <a href="http://fudcon.in/sites/default/files/slides/Virtualization-with-libvirt.pdf">‘Linux Virtualization’</a> followed by <a href="http://fedoraproject.org/wiki/User:Kashyapc">Kashyap Chamarthy’s</a> talk on <a href="http://fudcon.in/sessions/virtualization-libvirt">‘Virtualization with Libvirt’</a>. They had given a good overview of virtualization in the Linux kernel, and available tools that one could use. I do use <a href="https://fedorahosted.org/publican/">Publican</a>, and thus attended Jared Smith’s talk on the same. Publican does insert blank pages to ensure that new chapters start on the right-hand side if the content were to be printed as a book. For the final talk of the day, I attended <a href="http://fedoraproject.org/wiki/User:Sundaram">Rahul Sundaram’s</a> session on <a href="http://fudcon.in/sessions/ask-fedora-community-support-and-knowledge-base">Askbot for Fedora</a>, and the roadmap and features that he is interested in. We then travelled to <a href="http://www.parcestique.com/pune.htm">Hotel Parc Estique</a> for the FUDPub!</p>
<img alt="FUDPub" src="http://www.shakthimaan.com/Mambo/gallery/albums/album72/24_dance_floor.jpg"></img>]]></description>
    <pubDate>Mon, 07 Nov 2011 00:00:10 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/11/07/fudcon-pune-day-2/news.html</guid>
</item>
<item>
    <title>FUDCon Pune Day I</title>
    <link>http://www.shakthimaan.com/posts/2011/11/07/fudcon-pune-day-1/news.html</link>
    <description><![CDATA[<img alt="FUDCon Pune" src="https://fedoraproject.org/w/uploads/c/cf/Button.png"></img>
<p>I arrived early on day I of <a href="http://fudcon.in/">FUDCon Pune 2011</a> to help with the registration desk. We had different counters for speakers and volunteers, and for delegates. A printer was available for us to print badges, directions, or posters as required.</p>
<img alt="Registration desk" src="http://www.shakthimaan.com/Mambo/gallery/albums/album72/3_volunteer_speaker_registration_desk.jpg"></img>
<p>I attended the keynote by <a href="http://fedoraproject.org/wiki/User:Jsmith">Jared Smith</a>, the Fedora Project Leader. The illustrations used in his presentation, <a href="http://fudcon.in/sessions/fedora-state-union-address">‘Fedora “State of the Union” Address’</a> were really good. I then proceeded to the classrooms to attend Ramakrishna Reddy’s talk on <a href="http://fudcon.in/sessions/developer-survival-manual-impatient-developer-guide-groking-source">‘Developer Survivor Manual’</a>. He addressed essential things that newbie developers need to know, and demoed various revision control systems. Fedora banners were placed at various seminar locations on campus to indicate where the talks and sessions were being held.</p>
<img alt="Registration desk" src="http://www.shakthimaan.com/Mambo/gallery/albums/album72/6_banner.jpg"></img>
<p>Lunch was served at 12 noon, and then I moved on to attend the <a href="http://fudcon.in/sessions/fedora-remix-and-community">‘Fedora Remix and the Community’</a> talk by <a href="http://fedoraproject.org/wiki/User:Snavin">Danishka Navin</a>. He shared his experience with the <a href="http://www.hanthana.org/">Hanthana</a> project, which is a Fedora remix that has support for Sinhalese, and Tamil and has been deployed at various schools in Sri Lanka. Fedora is one of the first and largest user of <a href="https://github.com/sitaramc/gitolite">gitolite</a>, and I was happy to meet its author, Sitaram Chamarthy, from TCS Innovation Labs, Hyderabad, India. <a href="http://fudcon.in/sites/default/files/slides/gitolite-at-fudcon-india-2011.pdf">His talk</a> was filled with numerous examples from people using gitolite. The other large users of gitolite are <a href="http://kde.org/">KDE</a> and <a href="http://www.kernel.org">kernel.org</a>. I then attended the <a href="http://fudcon.in/sessions/glusterfs-red-hat-storage-storage-red-hat">‘GlusterFS’</a> talk by Krishna Srinivas from Red Hat, who gave an overview of the Gluster file system, its architecture, and uses.</p>]]></description>
    <pubDate>Mon, 07 Nov 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/11/07/fudcon-pune-day-1/news.html</guid>
</item>
<item>
    <title>FUDCon Pune</title>
    <link>http://www.shakthimaan.com/posts/2011/11/04/fudcon-pune/news.html</link>
    <description><![CDATA[<p>I had filed a ticket year-end of 2009 to <a href="https://fedorahosted.org/fedora-india/">Fedora India</a> to organize a <a href="http://fedoraproject.org/wiki/FUDCon">FUDCon</a> in India. We couldn’t make it in 2010, but it is happening this year!</p>
<img alt="FUDCon Pune" src="https://fedoraproject.org/w/uploads/4/40/Button3-going.png"></img>]]></description>
    <pubDate>Fri, 04 Nov 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/11/04/fudcon-pune/news.html</guid>
</item>
<item>
    <title>Fedora Activity Day II, COEP</title>
    <link>http://www.shakthimaan.com/posts/2011/10/10/fad-2-coep/news.html</link>
    <description><![CDATA[<p>In preparation to <a href="http://fedoraproject.org/wiki/FUDCon:India_2011">FUDCon, Pune 2011</a>, we had organized our <a href="http://fedoraproject.org/wiki/FAD_Pune_2011">second Fedora Activity Day (FAD)</a> at the FOSS Lab, <a href="http://www.coep.org.in/">College of Engineering, Pune, India</a> on Saturday, October 8, 2011. Thanks to COEP for hosting the FAD, and to <a href="http://www.coep.org.in/index.php?profile=abhijit.comp">Prof. Abhijit</a> for working with us in organizing the same. <a href="http://fedoraproject.org/wiki/User:Tuxdna">Saleem Ansari</a> had setup <a href="http://fudcon.in">http://fudcon.in</a> using <a href="http://usecod.com/">Conference Organization Distribution</a>, which we used it for registration at the venue.</p>
<img alt="FOSS Lab audience" src="http://www.shakthimaan.com/Mambo/gallery/albums/album71/1_foss_lab_audience.jpg"></img>
<p><a href="http://fedoraproject.org/wiki/User:Pjp">Prasad Pandit</a> started the day’s proceedings with an <a href="http://pjp.dgplug.org/tools/introduction-python.pdf">introduction to Python</a>. Basic syntax, semantics of Python were covered, and we helped the participants in getting started in writing simple scripts. I then presented an overview of contributing to Fedora using the <a href="http://shakthimaan.com/downloads.html#i-want-2-do-project-tell-me-wat-2-do">i-want-2-do-project. tell-me-wat-2-do-fedora</a> presentation, and the various communication channels that they need to be familiar with to work with the larger Fedora community.</p>
<img alt="communication channels" src="http://www.shakthimaan.com/Mambo/gallery/albums/album71/2a_fedora_contribution.jpg"></img>
<p>We had lunch at the <a href="http://coepboatclub.com/">COEP Boat Club</a> canteen. After lunch, <a href="http://fedoraproject.org/wiki/User:Kashyapc">Kashyap Chamarthy</a> presented <a href="http://kashyapc.fedorapeople.org/Presentations/virtualization-in-fedora.pdf">KVM virtualization</a> in Fedora illustrating examples using libvirt and virt tools. <a href="http://fedoraproject.org/wiki/User:Amitshah">Amit Shah</a> and Kashyap answered queries regarding virtualization. Saleem Ansari then presented an <a href="https://github.com/tuxdna/conf_jmilug">introduction to web development and Django</a>, illustrating the use of model, view and template design. I concluded the day’s sessions with an introduction to git using the <a href="http://shakthimaan.com/downloads.html#di-git-ally-managing-love-letters">di-git-ally managing love letters</a> presentation.</p>
<p>Few photos taken at the event are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album71">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 10 Oct 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/10/10/fad-2-coep/news.html</guid>
</item>
<item>
    <title>Shaastra, IIT Madras</title>
    <link>http://www.shakthimaan.com/posts/2011/10/03/shaastra-iit-madras/news.html</link>
    <description><![CDATA[<p>The Shaastra team has been trying to get me to speak at their event for many years. This year I wanted to make it, and as part of the <a href="http://www.shaastra.org/2011/main/events/Hackfest/">Hackfest at Shaastra 2011</a>, September 28 to October 2, 2011 at <a href="http://www.iitm.ac.in/">IIT-Madras</a>, Chennai, India I had presented the talk on <a href="http://shakthimaan.com/downloads.html#i-want-2-do-project-tell-me-wat-2-do">i-want-2-do-project. tell-me-wat-2-do</a>.</p>
<img alt="Audience" src="http://shakthimaan.com/downloads/glv/2011/shaastra-2011/1-audience.JPG"></img>
<p>Most of the students were interested in participating in the Google Summer of Code program. I was also able to meet and talk with past Google Summer of Code students, who had already been introduced to this presentation.</p>
<p>I visited the IITM Research Expo at the K V grounds on campus where students had presented their research work. There were quite a few interesting <a href="http://www.ee.iitm.ac.in/mems/">papers on MEMS</a>. I also attended the Paper and Poster presentation by students at the <a href="http://respark.iitm.ac.in/">IITM Research Park</a>. A small memento that I received:</p>
<img alt="momento" src="http://shakthimaan.com/downloads/glv/2011/shaastra-2011/3-momento.JPG"></img>]]></description>
    <pubDate>Mon, 03 Oct 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/10/03/shaastra-iit-madras/news.html</guid>
</item>
<item>
    <title>Fedora Activity Day I, Red Hat, Pune</title>
    <link>http://www.shakthimaan.com/posts/2011/09/25/fad-1-redhat-pune/news.html</link>
    <description><![CDATA[<p>In preparation to <a href="http://fedoraproject.org/wiki/FUDCon:India_2011">FUDCon, Pune 2011</a>, we had organized a <a href="https://fedoraproject.org/wiki/FAD_Pune_2011_Sep_24">Fedora Activity Day (FAD) I</a> at Red Hat, Pune, India on Saturday, September 24, 2011.</p>
<img alt="Introductions" src="http://shakthimaan.com/downloads/glv/2011/fad-1-rh-pune-2011/2-introductions.JPG"></img>
<p><a href="https://fedoraproject.org/wiki/User:Sundaram">Rahul Sundaram</a> started the proceedings with a session on how to <a href="http://sundaram.fedorapeople.org/presentations/fedora-how-to-contribute.pdf">contribute to Fedora</a>, and how people can get involved with the community. I showed the various communication channels that people need to use to connect with the large Fedora community.</p>
<img alt="Understanding Fedora" src="http://shakthimaan.com/downloads/glv/2011/fad-1-rh-pune-2011/1-fedora-contribute.JPG"></img>
<p>We then proceeded to do a hands-on session on RPM packaging. We used the <a href="http://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package">GNU Hello RPM packaging</a> example from the fedoraproject.org wiki. Rahul and I explained each section of the .spec file, and showed them how to use rpmbuild. The participants learnt to write the .spec file, and also built, installed, and tested the hello package.</p>
<p>We then took a break for lunch following which I presented a hands-on session on git using the <a href="file:///tmp/news/downloads.html#di-git-ally-managing-love-letters">di-git-ally managing love letters</a> presentation. <a href="http://fedoraproject.org/wiki/User:Siddhesh">Siddhesh Poyarekar</a> then took an introductory hands-on <a href="http://meetbot.fedoraproject.org/fedora-classroom/2010-05-03/autotools_workshop.2010-05-03-13.29.log.html">session on autotools</a>.</p>
<img alt="Autotools session" src="http://shakthimaan.com/downloads/glv/2011/fad-1-rh-pune-2011/3-autotools-siddhesh.JPG"></img>
<p>All the presentations are available in the <a href="https://fedoraproject.org/wiki/FAD_Pune_2011_Sep_24#Agenda">FAD wiki</a> page. Thanks to Red Hat for letting us use their facility, and for sponsoring the pizza! They were able to arrange for ten laptops with Fedora 15 installed for participants who didn’t have laptops.</p>
<p>Thanks also to <a href="http://fedoraproject.org/wiki/User:Kashyapc">Kashyap Chamarthy</a>, <a href="http://fedoraproject.org/wiki/User:Kushal">Kushal Das</a>, <a href="http://fedoraproject.org/wiki/User:Siddhesh">Siddhesh Poyarekar</a> for their help to the participants during the workshop sessions.</p>]]></description>
    <pubDate>Sun, 25 Sep 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/09/25/fad-1-redhat-pune/news.html</guid>
</item>
<item>
    <title>PyCon India</title>
    <link>http://www.shakthimaan.com/posts/2011/09/20/pycon-india/news.html</link>
    <description><![CDATA[<p>I had presented <a href="http://www.shakthimaan.com/downloads.html#from-python-to-silicon">From Python to Silicon: python-myhdl</a> talk at <a href="http://in.pycon.org/2011/">PyCon India 2011</a>, September 16-18, 2011 at Symbiosis, Pune, India.</p>
<img alt="PyCon India sponsors" src="http://www.shakthimaan.com/Mambo/gallery/albums/album70/3_sponsors.jpg"></img>
<p>The first day of the (un)conference was filled with tutorials. I attended the <a href="http://in.pycon.org/2011/talks/4-functional-programming-with-python">Functional Programming with Python</a> talk by Anand Chitipothu. He had illustrated list comprehensions, recursions, higher-order functions, iterators and generators in Python with numerous examples.</p>
<p>On the second day, I attended the keynote by Raymond Hettinger on <a href="http://urtalk.kpoint.in/kapsule/gcc-e7c717db-f77e-43dc-9dc0-255eb47e9dd3">What Makes Python Awesome</a>. It was a very informative talk illustrating the key characteristics of Python, and the community that surrounds it.</p>
<p>I also attended the <a href="http://in.pycon.org/2011/talks/13-python-on-android">Python on Android</a> talk by Sajjad Anwar, who gave simple examples using android-scripting. The <a href="http://in.pycon.org/2011/talks/7-emacs-as-a-python-ide">Emacs as a Python IDE</a> talk by Noufal Ibrahim had useful tips and tricks on using Emacs for development work, and issue tracking using <a href="http://orgmode.org/">org-mode</a>. I also attended the <a href="http://in.pycon.org/2011/talks/43-decorators-as-composable-abstractions">Decorators as Composable Abstractions</a> by Sidhant Godiwala which was an introduction to using decorators in Python.</p>
<p>On the final day of the event, I attended <a href="http://in.pycon.org/2011/talks/35-network-programming-with-umit-project">Network Programming with Umit Project</a> by Narendran Thangaranjan who gave demos on network protocol implementation, and testing in Python using the <a href="http://www.umitproject.org/">Umit project</a>. Jivitesh Singh Dhaliwal gave a demo of using PySerial to control robots in the <a href="http://in.pycon.org/2011/talks/30-python-in-the-real-world-from-everyday-applications-to-advanced-robotics">Python in the Real World: From Blinking LEDs to Advanced Robotics</a> talk.</p>
<p>My presentation slides are <a href="http://www.shakthimaan.com/downloads.html#from-python-to-silicon">available</a>. Thanks to Christopher Felton for his valuable feedback.</p>
<p>Few photos taken during the event are available at my <a href="http://www.shakthimaan.com/Mambo/gallery/album70">/gallery</a>.</p>]]></description>
    <pubDate>Tue, 20 Sep 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/09/20/pycon-india/news.html</guid>
</item>
<item>
    <title>Packaging RPM presentation</title>
    <link>http://www.shakthimaan.com/posts/2011/09/10/packaging-rpm-presentation/news.html</link>
    <description><![CDATA[<p>Released <a href="http://shakthimaan.com/downloads.html#packaging-red-hot-paneer-butter-masala">Packaging RPM</a> (Packaging Red hot, Paneer (butter) Masala) presentation 1.7. The LaTeX sources are available at <a href="https://gitorious.org/packaging-red-hot-paneer-butter-masala">gitorious.org</a>.</p>
~~~~ {.shell} $ git clone git://gitorious.org/packaging-red-hot-paneer-butter-masala/mainline.git ~~~~]]></description>
    <pubDate>Sat, 10 Sep 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/09/10/packaging-rpm-presentation/news.html</guid>
</item>
<item>
    <title>FISAT, GNU Make</title>
    <link>http://www.shakthimaan.com/posts/2011/08/29/fisat-gnu-make/news.html</link>
    <description><![CDATA[<p>I had presented GNU Make, <a href="http://shakthimaan.com/downloads.html#dum-ka-biryani-make-for-each-other">Dum Ka Biryani, Make for each other</a> at <a href="http://icefoss.fisat.ac.in/">ICE-FOSS 2011</a>, August 26-27, 2011 at <a href="http://www.fisat.ac.in/">Federal Institute of Science and Technology</a>, Angamaly, Kerala.</p>
<img alt="FISAT" src="http://www.shakthimaan.com/Mambo/gallery/albums/album69/5_fisat.jpg"></img>
<p>The conference had talks, hands-on workshops, and project demos. There were interesting projects displayed at the stalls by the students varying from Arduino-based hardware projects, to Python mobile application development to games, and applications developed using opencv. Pamphlets were made for each project, and given to the visitors at the stall. I reviewed the projects that were demoed and gave them feedback. The Institute is in the process of migrating their servers, so we should (hopefully) see the sources made available online.</p>
<p>I also had a chance to meet Anvar K Sadath, Executive Director at the <a href="https://www.itschool.gov.in/index.php">IT@School</a> project. They have trained nearly 2 lakh teachers on F/OSS over the years. Their new initiative is <a href="https://www.itschool.gov.in/animation/">animation training</a> using free/open source software.</p>
<p>The Institute does have a cluster setup called “Dakshina” which is used by students, and the faculty. They also do allow other nearby colleges to use the facility on request.</p>
<img alt="Dakshina cluster" width="320" height="427" src="http://www.shakthimaan.com/Mambo/gallery/albums/album69/17_dakshina_cluster.sized.jpg"></img>
<p>Thanks to the Management of FISAT, for sponsoring my travel and for the wonderful hospitality. Photos taken during the trip are available at my <a href="http://www.shakthimaan.com/Mambo/gallery/album69">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 29 Aug 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/08/29/fisat-gnu-make/news.html</guid>
</item>
<item>
    <title>PICT Ruby Rails workshop</title>
    <link>http://www.shakthimaan.com/posts/2011/08/22/pict-ruby-rails/news.html</link>
    <description><![CDATA[<p>I had conducted a session on test driven, behaviour driven development on Saturday, August 20, 2011 at <a href="http://www.pict.edu/">Pune Institute of Computer Technology</a>, Pune, Maharashtra, India using Ruby, Cucumber, and Rails with examples from <a href="https://joindiaspora.com/">Diaspora</a>.</p>
<p>Thanks to <a href="http://www.j4v4m4n.in/">Praveen Arimbrathodiyil</a> for initiating this workshop and <a href="http://fedoraproject.org/wiki/User:Shreyankg">Shreyank Gupta</a> for helping the students during the hands-on session.</p>
<p>Participants were new to Ruby, and we started off with <a href="http://www.ruby-lang.org/en/documentation/quickstart/">Ruby in Twenty Minutes</a>. Using interactive ruby (irb) students were able to understand the language syntax and its usage. We then moved on to writing tests in Ruby, and writing them first before writing code.</p>
<img alt="irc session" src="http://shakthimaan.com/downloads/glv/2011/pict-aug-20-2011/pict-irb-aug-20-2011.JPG"></img>
<p>User stories were introduced with explanation on understanding how features, and step definitions are written. <a href="http://cukes.info">Cucumber</a> was used to run through the features with simple examples. We then moved on to using cucumber with Rails illustrating an <a href="http://asciicasts.com/episodes/155-beginning-with-cucumber">example of a Rails blog application</a>. I had setup Diaspora on my laptop, and had then given them a visual demo of how cucumber runs feature tests with selenium webdriver. <a href="http://www.flickr.com/photos/shreyankg/sets/72157627481625374/">Photos</a> taken from Shreyank’s camera are available.</p>]]></description>
    <pubDate>Mon, 22 Aug 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/08/22/pict-ruby-rails/news.html</guid>
</item>
<item>
    <title>GNU Emacs ERC</title>
    <link>http://www.shakthimaan.com/posts/2011/08/13/gnu-emacs-erc/news.html</link>
    <description><![CDATA[<p><a title="ERC" href="http://www.emacswiki.org/emacs/ERC/">ERC</a> is a modular, extensible Emacs Internet relay chat client. It is available as part of GNU Emacs. You can use it to connect to irc.freenode.net (for example) chat server using:</p>
<pre class="lisp"><code>;; .emacs
(load &quot;/path/to/secrets.el&quot;)

;; erc
(defun erc-freenode-connect ()
  (interactive)
  (erc :server &quot;irc.freenode.net&quot; :port 6667 :full-name &quot;&lt;Firstname Lastname&gt;&quot; 
   :nick &quot;&lt;your-nickname-here&gt;&quot;)
  (require 'erc)
  (require 'erc-match)
  (setq erc-keywords '(&quot;&lt;your-nickname-here&gt;&quot;))
  (setq erc-current-nick-highlight-type 'nick)
  (setq erc-track-exclude-types '(&quot;JOIN&quot; &quot;PART&quot; &quot;QUIT&quot; &quot;NICK&quot; &quot;MODE&quot;))
  (setq erc-track-use-faces t)
  (setq erc-track-faces-priority-list
	'(erc-current-nick-face erc-keyword-face))
  (setq erc-track-priority-faces-only 'all)
  (setq erc-input-line-position -2)
  (setq erc-echo-notices-in-minibuffer-flag t)
  (setq erc-autojoin-channels-alist 
	'((&quot;freenode.net&quot; &quot;#fedora-india&quot; &quot;#fedora-devel&quot; &quot;##linux-india&quot; 
            &quot;#edev&quot; &quot;#fedora-arm&quot; &quot;#fedora-haskell&quot; &quot;#fudcon-planning&quot; &quot;#gcc&quot;
  	    ))))

(defun nickname-freenode-after-connect (server nick)
  (when (and (string-match &quot;freenode\\.net&quot; server)
	     (boundp 'irc-freenode-nick-passwd))
    (erc-message &quot;PRIVMSG&quot; (concat &quot;NickServ identify &quot; irc-freenode-nick-passwd))))
(add-hook 'erc-after-connect 'nickname-freenode-after-connect)</code></pre>
<p>The secrets.el file loads your encrypted files that contain passwords:</p>
<pre class="lisp"><code>;; secrets.el
(load-library &quot;~/pass.el.gpg&quot;)</code></pre>
<p>A sample pass.el.gpg file:</p>
<pre class="lisp"><code>;; pass.el.gpg
(set 'irc-freenode-nick-passwd &quot;your-password&quot;)</code></pre>
<p>The first time you load the above, you will be prompted to create a password for the encryption. Remember it. Whenever you start Emacs thereafter, or when you try to modify the .gpg files, you will be prompted for the password. To initiate connection to irc.freenode.net within Emacs, you can use:</p>
<pre class="lisp"><code>M-x erc-freenode-connect</code></pre>
<p>It should connect to the server, join you to the channels, and identify yourself to NickServ! Each channel is a buffer, and thus Emacs buffer commands work. Whenever someone sends you a message using your nick, you will get a notification in the Emacs status bar. For more ERC commands and options, please refer the <a href="http://mwolson.org/static/doc/erc.html">ERC user manual</a>.</p>]]></description>
    <pubDate>Sat, 13 Aug 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/08/13/gnu-emacs-erc/news.html</guid>
</item>
<item>
    <title>Python workshop, MIT, Pune</title>
    <link>http://www.shakthimaan.com/posts/2011/08/08/python-workshop-mit/news.html</link>
    <description><![CDATA[<p>I had conducted a one-day hands-on “Introduction to Python” programming workshop at <a href="http://mitcoe.edu.in/">Maharashtra Institute of Technology, College of Engineering</a>, Kothrud, Pune, India on Saturday, August 6, 2011.</p>
<p>The participants were engineering students who had some programming experience but were new to Python. I wanted to do a hands-on session so I could help them along the way. I decided to use the presentation <a href="http://www-uxsup.csx.cam.ac.uk/courses/PythonProgIntro/">Python: Introduction for Programmers</a> by Bruce Beckles and Bob Dowling from the University Computing Service, University of Cambridge. I had requested permission to re-use the slides giving credit to the authors, for which they agreed.</p>
<p>Two software labs (I and II) were made available at the venue. Remote desktop was setup so the slides were visible on both the lab projectors. A speaker system was arranged so people could hear me from either lab. Gedit was used to write simple programs.</p>
<img alt="Software Lab I" src="http://www.shakthimaan.com/Mambo/gallery/albums/album68/4_lab_one.jpg"></img>
<p>Thanks to Prof. Reena D. Pagare (MIT, College of Engineering) for working with me during the last few weeks in organizing this workshop.</p>
<p>More photos taken at the venue and during the workshop are available at my <a href="http://www.shakthimaan.com/Mambo/gallery/album68">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 08 Aug 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/08/08/python-workshop-mit/news.html</guid>
</item>
<item>
    <title>GNU Emacs EasyPG</title>
    <link>http://www.shakthimaan.com/posts/2011/08/05/emacs-easypg/news.html</link>
    <description><![CDATA[<p><a title="EasyPG" href="http://epg.sourceforge.jp/">EasyPG</a>, a GnuPG interface is available from Emacs 23 which provides automatic encryption of .gpg files. You can list all the required encrypted .gpg files to be used by Emacs in a secrets.el file (for example):</p>
<pre class="lisp"><code>;; secrets.el
(load-library &quot;~/pass.el.gpg&quot;)</code></pre>
<p>You can then load this file in your Emacs initialization file:</p>
<pre class="lisp"><code>;; .emacs
(load &quot;/path/to/secrets.el&quot;)</code></pre>
<p>The first time you load the above, you will be prompted to create a password for the encryption. Remember it. Whenever you start Emacs thereafter, or when you try to modify the .gpg files, you will be prompted for the password.</p>]]></description>
    <pubDate>Fri, 05 Aug 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/08/05/emacs-easypg/news.html</guid>
</item>
<item>
    <title>GNU Emacs reference card</title>
    <link>http://www.shakthimaan.com/posts/2011/07/18/emacs-reference-card/news.html</link>
    <description><![CDATA[<p><a href="http://www.shakthimaan.com/downloads.html#emacs-a-day-keeps-the-vizing-away">Emacs-a-day-keeps-the-vi-zing-away</a>, a <a href="http://shakthimaan.com/downloads/glv/presentations/emacs-a-day-keeps-the-vi-zing-away.pdf">GNU Emacs reference card</a> is now available under the GNU General Public License. You can get the LaTeX sources from:</p>
~~~~ {.shell} $ git clone git://gitorious.org/emacs-a-day-keeps-the-vi-zing-away/mainline.git ~~~~]]></description>
    <pubDate>Mon, 18 Jul 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/07/18/emacs-reference-card/news.html</guid>
</item>
<item>
    <title>freeDiameter</title>
    <link>http://www.shakthimaan.com/posts/2011/07/07/freediameter/news.html</link>
    <description><![CDATA[<p><a href="http://www.freediameter.net/trac/">freeDiameter</a>, a free/open source <a href="http://en.wikipedia.org/wiki/Diameter_%28protocol%29">Diameter</a> protocol implementation is now available for Fedora/RHEL. Install it using:</p>
<pre class="shell"><code>$ sudo yum install freeDiameter freeDiameter-devel</code></pre>
<p>It fully supports the Diameter Base Protocol as specified in <a href="http://tools.ietf.org/html/rfc3588">RFC 3588</a>, Diameter Extensible Authentication Protocol (EAP) application server from <a href="http://tools.ietf.org/html/rfc4072">RFC 4072</a>, and Diameter Session Initiation Protocol (SIP) application from <a href="http://tools.ietf.org/html/rfc4740">RFC 4740</a>. Thanks to Sebastien Decugis for accepting the upstream patches.</p>]]></description>
    <pubDate>Thu, 07 Jul 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/07/07/freediameter/news.html</guid>
</item>
<item>
    <title>MyHDL</title>
    <link>http://www.shakthimaan.com/posts/2011/07/06/myhdl/news.html</link>
    <description><![CDATA[<p><a href="http://www.myhdl.org/doku.php">MyHDL</a>, a Python hardware description and verification language is now available for Fedora/RHEL. Install it using:</p>
<pre class="shell"><code>$ sudo yum install python-myhdl</code></pre>
<p>A simple example of a D flip-flop is given below:</p>
<pre class="sourceCode python"><code class="sourceCode python"><span class="co">#!/usr/bin/python</span>

<span class="ch">from</span> myhdl <span class="ch">import</span> *
<span class="ch">from</span> random <span class="ch">import</span> randrange
 
<span class="kw">def</span> dff(q, d, clk):
    <span class="ot">@always</span>(clk.posedge)
    <span class="kw">def</span> logic():
        q.<span class="dt">next</span> = d
 
    <span class="kw">return</span> logic
 
<span class="kw">def</span> test_dff():
    q, d, clk = [Signal(<span class="dt">bool</span>(<span class="dv">0</span>)) <span class="kw">for</span> i in <span class="dt">range</span>(<span class="dv">3</span>)]
 
    dff_inst = dff(q, d, clk)
 
    <span class="ot">@always</span>(delay(<span class="dv">10</span>))
    <span class="kw">def</span> clkgen():
        clk.<span class="dt">next</span> = not clk
 
    <span class="ot">@always</span>(clk.negedge)
    <span class="kw">def</span> stimulus():
        d.<span class="dt">next</span> = randrange(<span class="dv">2</span>)
 
    <span class="kw">return</span> dff_inst, clkgen, stimulus
 
<span class="kw">def</span> simulate(timesteps):
    tb = traceSignals(test_dff)
    sim = Simulation(tb)
    sim.run(timesteps)
 
simulate(<span class="dv">2000</span>)</code></pre>
<p>You can run it using:</p>
<pre class="shell"><code>$ python test.py</code></pre>
<p>The generated test_dff.vcd can be viewed in GTKWave:</p>
<img alt="python-myhdl generated .vcd file for d flip-flop" src="http://www.shakthimaan.com/downloads/screenshots/gtkwave-python-myhdl.png"></img>
<p>You can also generate Verilog code using the toVerilog() function. For example:</p>
<pre class="sourceCode python"><code class="sourceCode python"><span class="kw">def</span> convert():
    q, d, clk = [Signal(<span class="dt">bool</span>(<span class="dv">0</span>)) <span class="kw">for</span> i in <span class="dt">range</span>(<span class="dv">3</span>)]
    toVerilog(dff, q, d, clk)
 
convert()</code></pre>
<p>The generated Verilog code looks like:</p>
<pre class="sourceCode verilog"><code class="sourceCode verilog"><span class="ot">`timescale 1ns/10ps</span>

<span class="kw">module</span> dff (
    q,
    d,
    clk
);

<span class="dt">output</span> q;
<span class="dt">reg</span> q;
<span class="dt">input</span> d;
<span class="dt">input</span> clk;

<span class="kw">always</span> @(<span class="kw">posedge</span> clk) <span class="kw">begin:</span><span class="dt"> DFF</span>_LOGIC
    q &amp;lt;= d;
<span class="kw">end</span>

<span class="kw">endmodule</span></code></pre>
<p>Refer their <a href="http://www.myhdl.org/doku.php/start">wiki</a> for more documentation.</p>]]></description>
    <pubDate>Wed, 06 Jul 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/07/06/myhdl/news.html</guid>
</item>
<item>
    <title>Essential Abstractions in GCC</title>
    <link>http://www.shakthimaan.com/posts/2011/07/04/essential-abstractions-in-gcc/news.html</link>
    <description><![CDATA[<p>I have been wanting to attend the <a href="http://www.cse.iitb.ac.in/grc/gcc-workshop-11/index.php">‘Essential Abstractions in GCC’</a> workshop at <a href="http://www.iitb.ac.in/">IIT Bombay</a>, Powai, Mumbai for many years, and I was finally able to make it this year (their fourth), June 30-July 3, 2011. Thanks to <a href="http://www.redhat.com">Red Hat</a> for sponsoring me.</p>
<p>The first day started off with an introduction to the <a href="http://www.cse.iitb.ac.in/grc/">GCC Resource Center</a> at IIT, Bombay, and their primary research interests in program analysis and optimization, translation validation, retargetable compilation, and parallelization and vectorization. They proceeded to give an overview of compiling GCC, and probing techniques used in understanding the functionality of the <a href="http://gcc.gnu.org/">GNU C compiler</a>. Lab sessions were held in the afternoon, and assignments were given to illustrate the concepts discussed. In general, lectures were scheduled in the morning, and lab sessions in the afternoon.</p>
<p>The second day focussed on introducing the control flow in gcc, adding passes to gcc, and manipulating <a href="http://gcc.gnu.org/wiki/GIMPLE">GIMPLE</a> for adding interprocedural and intraprocedural passes. Using simple GIMPLE API in gcc-4.6.0 were illustrated, along with adding static/dynamic plugin passes. The lab sessions were held in the afternoon. Teaching Assistants (students) were present to assist the participants during the lab sessions. There were regular tea breaks provided between breakfast, lunch, and dinner.</p>
<p>The third day began with an introduction to machine descriptions. Examples of retargetability mechanisms in gcc using <a href="http://spimsimulator.sourceforge.net">spim</a>, a MIPS processor simulator were illustrated with examples. The instructions sets were added incrementally at different machine description levels, beginning from assignment operations to arithmetic to pointers and function calls. The issues of retargetability mechanisms in gcc were also discussed.</p>
<p>The final day started with an introduction on parallelization and vectorization, theory, and concepts. Their implementation in gcc-4.6.0 was illustrated, specifically for the case of loops with data dependency diagrams. The use of <a href="http://gcc.gnu.org/wiki/Graphite">graphite</a>, and <a href="http://www.cse.ohio-state.edu/~pouchet/software/pocc/">polyhedral compilation</a> in gcc-4.6.0 were also discussed. We had lab assignments in the afternoon, and the session concluded with a summary of the essential concepts required in understanding the internals of GCC.</p>
<p>The workshop is useful if you have worked with compiler internals. I only wish they would release the sources of their work under a Free/Open Source license for everyone to benefit from.</p>
<p>Few photos taken during the trip are available in my <a href="http://www.shakthimaan.com/Mambo/gallery/album67">/gallery</a>.</p>]]></description>
    <pubDate>Mon, 04 Jul 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/07/04/essential-abstractions-in-gcc/news.html</guid>
</item>
<item>
    <title>ghc-MonadCatchIO-mtl</title>
    <link>http://www.shakthimaan.com/posts/2011/06/29/ghc-MonadCatchIO-mtl/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/MonadCatchIO-mtl">MonadCatchIO-mtl</a>, a monad-transformer version of the Control.Exception.catch function is now available for Fedora. Install it using:</p>
<pre class="shell"><code>$ sudo yum install ghc-MonadCatchIO-mtl ghc-MonadCatchIO-mtl-devel</code></pre>
<p>A simple example to throw or catch an exception that is an instance of the Exception class:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="ot">{-# LANGUAGE DeriveDataTypeable #-}</span>

<span class="kw">import</span> <span class="dt">Control.Monad.CatchIO</span>
<span class="kw">import</span> <span class="dt">Data.Typeable</span>
<span class="kw">import</span> <span class="dt">Prelude</span> <span class="kw">hiding</span> (<span class="fu">catch</span>)

<span class="kw">data</span> <span class="dt">MyException</span> <span class="fu">=</span> <span class="dt">ThisException</span> <span class="fu">|</span> <span class="dt">ThatException</span>
     <span class="kw">deriving</span> (<span class="kw">Show</span>, <span class="dt">Typeable</span>)

<span class="kw">instance</span> <span class="dt">Exception</span> <span class="dt">MyException</span>

main <span class="fu">=</span> <span class="kw">do</span>
     throw <span class="dt">ThisException</span> <span class="ot">`catch`</span> \e <span class="ot">-&gt;</span> <span class="fu">putStrLn</span> (<span class="st">&quot;Caught &quot;</span> <span class="fu">++</span> <span class="fu">show</span> (<span class="ot">e ::</span> <span class="dt">MyException</span>))</code></pre>
<p>Thanks to Daniel Gorín for the upstream changes.</p>]]></description>
    <pubDate>Wed, 29 Jun 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/06/29/ghc-MonadCatchIO-mtl/news.html</guid>
</item>
<item>
    <title>hiredis</title>
    <link>http://www.shakthimaan.com/posts/2011/05/27/hiredis/news.html</link>
    <description><![CDATA[<p><a href="https://github.com/antirez/hiredis">Hiredis</a>, a minimalistic C client library for the <a href="http://redis.io/">Redis</a> database is now available for Fedora/RHEL. Install it using:</p>
<pre class="shell"><code>  $ sudo yum install hiredis hiredis-devel</code></pre>]]></description>
    <pubDate>Fri, 27 May 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/05/27/hiredis/news.html</guid>
</item>
<item>
    <title>ghc-ForSyDe</title>
    <link>http://www.shakthimaan.com/posts/2011/05/25/ghc-ForSyDe/news.html</link>
    <description><![CDATA[<p><a href="http://www.ict.kth.se/forsyde/">Formal System Design</a> (ForSyDe) from <a href="http://www.kth.se/ict?l=en_UK">KTH Royal Institute of Technology</a>, Sweden is now available for Fedora. It is a methodology with the objective to move system design (System on Chip, Hardware and Software systems) to a higher level of abstraction, and to bridge the abstraction gap by transformational design refinement. You can install it using:</p>
<pre class="shell"><code>$ sudo yum install ghc-ForSyDe</code></pre>
<p>It is the 100th Haskell package in Fedora.</p>]]></description>
    <pubDate>Wed, 25 May 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/05/25/ghc-ForSyDe/news.html</guid>
</item>
<item>
    <title>Electronics For You Expo, New Delhi</title>
    <link>http://www.shakthimaan.com/posts/2011/02/22/efy-new-delhi/news.html</link>
    <description><![CDATA[<p>I had participated in the panel discussion on “Free/Open Source Hardware - What it means to Design Engineers” at the <a href="http://www.efyexpo.com/">Electronics For You Expo</a> 2011, <a href="http://en.wikipedia.org/wiki/Pragati_Maidan">Pragati Maidan</a>, New Delhi on Saturday, February 19, 2011 representing <a href="http://fedoraproject.org">Fedora</a>, and <a href="http://spins.fedoraproject.org/fel/">Fedora Electronic Lab</a>. <a href="http://www.massimobanzi.com/about/">Massimo Banzi</a> (Arduino) chaired the session.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album66/4_ajith_kumar.jpg" alt="panel discussion"></img>
<p>The <a href="http://shakthimaan.com/downloads.html#free-open-source-hardware-what-it-means-to-design-engineers">presentation</a> and <a href="http://www.shakthimaan.com/Mambo/gallery/album66">photos</a> are available. It was good to meet up with Massimo Banzi, <a href="http://opencores.org/acc,view,marcus.erlandsson">Marcus Erlandsson</a> (<a href="http://www.opencores.org">OpenCores.org</a>) and <a href="http://www.ifixit.com/User/Contributions/2/Kyle+Wiens">Kyle Wiens</a> (<a href="http://www.ifixit.com">iFixit</a>). Marcus Erlandsson gave a demo of the <a href="http://www.orsoc.se/">ORSoC</a> development board:</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album66/2_orsoc_board.jpg" alt="orsoc board"></img>
<p>I was also able to catch up with few Arduino hackers from Delhi. We had a good discussion about open hardware, licensing, community development, hardware hacking, and of course Fedora Electronic Lab. Special thanks to Electronics For You for sponsoring the travel.</p>]]></description>
    <pubDate>Tue, 22 Feb 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/02/22/efy-new-delhi/news.html</guid>
</item>
<item>
    <title>ghc-parameterized-data</title>
    <link>http://www.shakthimaan.com/posts/2011/02/21/ghc-parameterized-data/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/parameterized-data">parameterized-data</a> is now available for Fedora. Install it using:</p>
<pre class="shell"><code>$ sudo yum install ghc-parameterized-data</code></pre>
<p>A <a href="http://www.ict.kth.se/forsyde/files/tutorial/tutorial.html#FSVec">tutorial</a> illustrating vectors parameterized in size using the above is written by Alfonso Acosta.</p>]]></description>
    <pubDate>Mon, 21 Feb 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/02/21/ghc-parameterized-data/news.html</guid>
</item>
<item>
    <title>GNUnify, GNU Make, Pune</title>
    <link>http://www.shakthimaan.com/posts/2011/02/12/gnunify-gnu-make/news.html</link>
    <description><![CDATA[<p>Presented <a href="http://shakthimaan.com/downloads.html#dum-ka-biryani-make-for-each-other">Dum Ka Biryani, Make for each other</a> at <a href="http://gnunify.in">GNUnify 2011</a>, Symbiosis Institute of Computer Studies and Research, Pune. The presentation is an illustrative, introduction on <a href="http://www.gnu.org/software/make/">GNU Make</a>.</p>
<img src="http://shakthimaan.com/downloads/glv/2011/gnunify/1-dum-biryani-presentation.jpg" alt="make presentation picture"></img>
<p>The <a href="http://shakthimaan.com/downloads/glv/presentations/dum-ka-biryani-make-for-each-other.pdf">pdf</a> and the LaTeX beamer sources are available under the GNU Free Documentation License. You can clone the sources using:</p>
<pre class="shell"><code>$ git clone git://gitorious.org/dum-ka-biryani-make-for-each-other/mainline.git</code></pre>
<p>I had also conducted an introductory workshop on gcc, Makefiles, static, shared libraries for newbies at the (un)conference.</p>
<img src="http://shakthimaan.com/downloads/glv/2011/gnunify/2-c-workshop.jpg" alt="C workshop picture"></img>]]></description>
    <pubDate>Sat, 12 Feb 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/02/12/gnunify-gnu-make/news.html</guid>
</item>
<item>
    <title>CUnit</title>
    <link>http://www.shakthimaan.com/posts/2011/02/09/CUnit/news.html</link>
    <description><![CDATA[<p><a href="http://cunit.sourceforge.net/">CUnit</a>, a lightweight system for writing, administering, and running unit test cases in C is now available for Fedora.</p>
<pre class="shell"><code>  $ sudo yum install cunit</code></pre>
<p>An example code, is given below:</p>
<pre class="sourceCode c"><code class="sourceCode c"><span class="ot">#include &lt;stdio.h&gt;</span>
<span class="ot">#include &lt;string.h&gt;</span>
<span class="ot">#include &quot;CUnit/Basic.h&quot;</span>

<span class="dt">static</span> FILE* temp_file = NULL;

<span class="dt">int</span> init_suite1(<span class="dt">void</span>)
{
   <span class="kw">if</span> (NULL == (temp_file = fopen(<span class="st">&quot;temp.txt&quot;</span>, <span class="st">&quot;w+&quot;</span>))) {
      <span class="kw">return</span> -<span class="dv">1</span>;
   }
   <span class="kw">else</span> {
      <span class="kw">return</span> <span class="dv">0</span>;
   }
}

<span class="dt">int</span> clean_suite1(<span class="dt">void</span>)
{
   <span class="kw">if</span> (<span class="dv">0</span> != fclose(temp_file)) {
      <span class="kw">return</span> -<span class="dv">1</span>;
   }
   <span class="kw">else</span> {
      temp_file = NULL;
      <span class="kw">return</span> <span class="dv">0</span>;
   }
}

<span class="dt">void</span> testFPRINTF(<span class="dt">void</span>)
{
   <span class="dt">int</span> i1 = <span class="dv">10</span>;

   <span class="kw">if</span> (NULL != temp_file) {
      CU_ASSERT(<span class="dv">0</span> == fprintf(temp_file, <span class="st">&quot;&quot;</span>));
      CU_ASSERT(<span class="dv">2</span> == fprintf(temp_file, <span class="st">&quot;Q</span><span class="ch">\n</span><span class="st">&quot;</span>));
      CU_ASSERT(<span class="dv">7</span> == fprintf(temp_file, <span class="st">&quot;i1 = %d&quot;</span>, i1));
   }
}

<span class="dt">void</span> testFREAD(<span class="dt">void</span>)
{
   <span class="dt">unsigned</span> <span class="dt">char</span> buffer[<span class="dv">20</span>];

   <span class="kw">if</span> (NULL != temp_file) {
      rewind(temp_file);
      CU_ASSERT(<span class="dv">9</span> == fread(buffer, <span class="kw">sizeof</span>(<span class="dt">unsigned</span> <span class="dt">char</span>), <span class="dv">20</span>, temp_file));
      CU_ASSERT(<span class="dv">0</span> == strncmp(buffer, <span class="st">&quot;Q</span><span class="ch">\n</span><span class="st">i1 = 10&quot;</span>, <span class="dv">9</span>));
   }
}

<span class="dt">int</span> main()
{
   CU_pSuite pSuite = NULL;

   <span class="co">/* initialize the CUnit test registry */</span>
   <span class="kw">if</span> (CUE_SUCCESS != CU_initialize_registry())
      <span class="kw">return</span> CU_get_error();

   <span class="co">/* add a suite to the registry */</span>
   pSuite = CU_add_suite(<span class="st">&quot;Suite_1&quot;</span>, init_suite1, clean_suite1);
   <span class="kw">if</span> (NULL == pSuite) {
      CU_cleanup_registry();
      <span class="kw">return</span> CU_get_error();
   }

   <span class="co">/* add the tests to the suite */</span>
   <span class="co">/* NOTE - ORDER IS IMPORTANT - MUST TEST fread() AFTER fprintf() */</span>
   <span class="kw">if</span> ((NULL == CU_add_test(pSuite, <span class="st">&quot;test of fprintf()&quot;</span>, testFPRINTF)) ||
       (NULL == CU_add_test(pSuite, <span class="st">&quot;test of fread()&quot;</span>, testFREAD)))
   {
      CU_cleanup_registry();
      <span class="kw">return</span> CU_get_error();
   }

   <span class="co">/* Run all tests using the CUnit Basic interface */</span>
   CU_basic_set_mode(CU_BRM_VERBOSE);
   CU_basic_run_tests();
   CU_cleanup_registry();
   <span class="kw">return</span> CU_get_error();
}</code></pre>
<p>Compile it using:</p>
<pre class="shell"><code>$ gcc test.c -o test -lcunit</code></pre>
<p>Output is given below:</p>
<p>~~~~ {.shell} $ ./test</p>
<pre><code> CUnit - A unit testing framework for C - Version 2.1-2
 http://cunit.sourceforge.net/</code></pre>
<p>Suite: Suite_1 Test: test of fprintf() …passed Test: test of fread() …passed</p>
<p>Run Summary: Type Total Ran Passed Failed Inactive suites 1 1 n/a 0 0 tests 2 2 2 0 0 asserts 5 5 5 0 n/a</p>
Elapsed time = 0.000 seconds ~~~~]]></description>
    <pubDate>Wed, 09 Feb 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/02/09/CUnit/news.html</guid>
</item>
<item>
    <title>ghc-ansi-terminal</title>
    <link>http://www.shakthimaan.com/posts/2011/02/04/ghc-ansi-terminal/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/ansi-terminal-0.5.5">ghc-ansi-terminal</a>, ANSI terminal support for Haskell is now available for Fedora. It allows cursor movement, clearing the screen, coloured output, showing or hiding the cursor, and setting the title.</p>
<pre class="shell"><code>$ sudo yum install ghc-ansi-terminal ghc-ansi-terminal-devel</code></pre>
<p>An example code, ansi.hs is given below:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">System.Console.ANSI</span>

main <span class="fu">=</span> <span class="kw">do</span>
    setCursorPosition <span class="dv">5</span> <span class="dv">0</span>
    setTitle <span class="st">&quot;ANSI Terminal Short Example&quot;</span>

    setSGR [ <span class="dt">SetConsoleIntensity</span> <span class="dt">BoldIntensity</span>
           , <span class="dt">SetColor</span> <span class="dt">Foreground</span> <span class="dt">Vivid</span> <span class="dt">Red</span>
           ]
    <span class="fu">putStr</span> <span class="st">&quot;Hello&quot;</span>
    
    setSGR [ <span class="dt">SetConsoleIntensity</span> <span class="dt">NormalIntensity</span>
           , <span class="dt">SetColor</span> <span class="dt">Foreground</span> <span class="dt">Vivid</span> <span class="dt">White</span>
           , <span class="dt">SetColor</span> <span class="dt">Background</span> <span class="dt">Dull</span> <span class="dt">Blue</span>
           ]
    <span class="fu">putStrLn</span> <span class="st">&quot;World!&quot;</span></code></pre>
<p>A screenshot of the output when the above code is executed:</p>
<img src="http://shakthimaan.com/downloads/screenshots/ghc-ansi-terminal-screenshot.png" alt="ghc-ansi-terminal output screenshot"></img>]]></description>
    <pubDate>Fri, 04 Feb 2011 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2011/02/04/ghc-ansi-terminal/news.html</guid>
</item>
<item>
    <title>flterm</title>
    <link>http://www.shakthimaan.com/posts/2010/11/18/flterm/news.html</link>
    <description><![CDATA[<p>flterm, a serial terminal and firmware download program, part of the <a href="http://www.milkymist.org/">Milkymist VJ SoC</a> is now available on Fedora.</p>
<pre class="shell"><code>  $ sudo yum install flterm</code></pre>
<p>You can run it using:</p>
<p>~~~~ {.shell} $ flterm Serial boot program for the Milkymist VJ SoC - v. 1.1 Copyright (C) 2007, 2008, 2009 Sebastien Bourdeauducq</p>
<p>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.</p>
Usage: flterm –port <port> [–double-rate] –kernel <kernel_image> [–kernel-adr
<address>
] [–cmdline <cmdline> [–cmdline-adr
<address>
]] [–initrd <initrd_image> [–initrd-adr
<address>
<p>]]</p>
Default load addresses: kernel: 0x40000000 cmdline: 0x41000000 initrd: 0x41002000 ~~~~]]></description>
    <pubDate>Thu, 18 Nov 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/11/18/flterm/news.html</guid>
</item>
<item>
    <title>Lavasa</title>
    <link>http://www.shakthimaan.com/posts/2010/11/09/Lavasa/news.html</link>
    <description><![CDATA[<p>Visited <a href="http://www.lavasa.com/high/visiting_lavasa.aspx">Lavasa</a>, Pune, Maharashtra, India for the <a href="http://en.wikipedia.org/wiki/Diwali">Deepavali</a> weekend. More photos are available at my <a href="http://www.shakthimaan.com/Mambo/gallery/album65">/gallery</a>.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album65/13_lavasa_city.jpg" alt="Lavasa view from the top"></img>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album65/22_baji_pasalkar_reservoir.jpg" alt="Baji Pasalkar reservoir"></img>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album65/25_dasve_boulevard.jpg" alt="Dasve boulevard"></img>]]></description>
    <pubDate>Tue, 09 Nov 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/11/09/Lavasa/news.html</guid>
</item>
<item>
    <title>OLPC at Sreenidhi International School</title>
    <link>http://www.shakthimaan.com/posts/2010/10/11/Sreenidhi-school/news.html</link>
    <description><![CDATA[<p>I had visited <a href="http://www.sreenidhiinternational.com/">Sreenidhi International School</a>, Aziznagar, Moinabad, Andhra Pradesh, India to help them with the <a href="http://kmrfoundation.org/">KMR Foundation’s</a> <a href="http://wiki.laptop.org/go/The_OLPC_Wiki">OLPC</a> project. They will soon start using an instance of <a href="http://wordpress.org/">WordPress</a> for their blogs, where you can get to know updates on their OLPC deployment. They already have a blog for their <a href="http://sis.edu.in/blog/">Primary Years Programme (PYP)</a>. I helped them with few software, hardware problems that they were facing with their OLPCs (XO-1).</p>
<img src="http://shakthimaan.com/downloads/glv/hyd/olpc/kmrf-olpc-512.JPG" alt="Dismantling the OLPC"></img>]]></description>
    <pubDate>Mon, 11 Oct 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/10/11/Sreenidhi-school/news.html</guid>
</item>
<item>
    <title>Mepco Schlenk IRC training</title>
    <link>http://www.shakthimaan.com/posts/2010/10/05/Mepco-Schlenk-IRC-training/news.html</link>
    <description><![CDATA[<p>I had scheduled to conduct a one-day Fedora, Free Software workshop at <a href="http://www.mepcoeng.ac.in/">Mepco Schlenk Engineering College, Sivaskasi, Tamil Nadu, India</a> on Saturday, October 2, 2010, but due to the <a href="http://www.thehindu.com/news/national/article800650.ece">Ayodhya verdict</a>, I had to cancel it in the last moment.</p>
<p>I then tried to get <a href="http://fedoraproject.org/wiki/Communicate/IRCHowTo">Internet Relay Chat</a> (IRC) up and running on their college computer labs that were running Fedora. They were using squid proxy, and I had requested the system administrator to <a href="http://fedorasolved.org/Members/realz/squid_IM">configure</a> it to allow IRC connections. He got it working, and we decided to go ahead with online IRC training for the following sessions:</p>
<ul>
<li><a href="http://shakthimaan.com/downloads.html#i-want-2-do-project-tell-me-wat-2-do">i-want-2-do-project. tell-me-wat-2-do-fedora</a></li>
<li><a href="http://shakthimaan.com/downloads.html#di-git-ally-managing-love-letters">di-git-ally managing love letters</a></li>
<li>Q/A session</li>
<li><a href="http://shakthimaan.com/downloads.html#packaging-red-hot-paneer-butter-masala">Packaging RPM</a></li>
</ul>
<p>The <a href="http://shakthimaan.com/downloads/glv/2010/logs/mepco-schlenk-foss-oct-2-2010.log.html">IRC log</a> of the session is available. They were kind enough to take some <a href="http://www.shakthimaan.com/Mambo/gallery/album64">pictures</a> during the sessions and send it across to me.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album64/3_lab.jpg" alt="IRC session in progress"></img>
<p>Thanks to Prof. Shenbagaraj for working with me for the past two months in organizing this workshop. Hopefully, someday, I will meet them in person.</p>]]></description>
    <pubDate>Tue, 05 Oct 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/10/05/Mepco-Schlenk-IRC-training/news.html</guid>
</item>
<item>
    <title>OSI Tech Days 2010</title>
    <link>http://www.shakthimaan.com/posts/2010/09/22/OSI-Tech-Days/news.html</link>
    <description><![CDATA[<p>Attended <a href="http://www.osidays.com">OSI Tech Days</a>, September 19-21, 2010, Chennai to listen to <a href="http://emoglen.law.columbia.edu/">Prof. Eben Moglens’</a> talk on <a href="http://www.softwarefreedom.org/events/2010/freedom-and-web-equality-21st-century/">Freedom and the Web: Equality in the 21st Century</a>. I also manned the <a href="http://www.ilugc.in">ILUGC</a> stall for some time. It was good to catch up with lot of old-timers.</p>
<p>Later in the evening, I was asked to join the panel discussion on “Building a FOSS Ecosystem in India; the role of different players”, and had a chance to meet <a href="http://thelittlesasi.wikidot.com/">Dr. M. Sasikumar</a> (Director, CDAC, Mumbai), <a href="http://www.cse.iitb.ac.in/~siva/">Prof. G. Sivakumar</a> (IIT, Mumbai), V S Raghunathan (Technical Director, <a href="http://www.tn.nic.in/">National Informatics Centre, Tamil Nadu State Centre, Chennai</a>), <a href="http://www.au-kbc.org/cnkpage.htm">Prof. C N Krishnan</a> et. al. A picture of the panel discussion:</p>
<img src="http://shakthimaan.com/downloads/glv/2010/osi-days-2010/osi-days-2010.jpg" alt="FOSS ecosystem panel discussion"></img>]]></description>
    <pubDate>Wed, 22 Sep 2010 00:00:05 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/09/22/OSI-Tech-Days/news.html</guid>
</item>
<item>
    <title>Software Freedom Day, Chennai</title>
    <link>http://www.shakthimaan.com/posts/2010/09/22/SFD-Chennai/news.html</link>
    <description><![CDATA[<p>Attended Software Freedom Day, 2010, at Chennai, on Saturday, September 18, 2010 at Birla Planetarium, organized by <a href="http://www.ilugc.in">ILUGC</a>. <a href="http://www.facebook.com/album.php?aid=38346&amp;id=133359730009404">Photos</a>, courtesy of <a href="http://goinggnu.wordpress.com/">T. Shrinivasan</a>. Two important observations:</p>
<ul>
<li>The number of colleges/universities that participated in the Free/Open Source Software (F/OSS) stalls has increased.</li>
<li>F/OSS awareness programmes are essential, and have their own signficance.</li>
</ul>]]></description>
    <pubDate>Wed, 22 Sep 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/09/22/SFD-Chennai/news.html</guid>
</item>
<item>
    <title>ghc-type-level</title>
    <link>http://www.shakthimaan.com/posts/2010/09/06/ghc-type-level/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/type-level">Type-level</a> programming library is now available on Fedora testing repository. Type-level functions are implemented using functional dependencies of multi parameter type classes. A tutorial on type-level numerals and their usage to implement numerically-parameterized vectors is available at <a href="http://www.ict.kth.se/forsyde/files/tutorial/tutorial.html#FSVec">http://www.ict.kth.se/forsyde/files/tutorial/tutorial.html#FSVec</a>. You can install it on Fedora using:</p>
~~~~ {.shell} $ sudo yum –enablerepo=updates-testing update ghc-type-level ~~~~]]></description>
    <pubDate>Mon, 06 Sep 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/09/06/ghc-type-level/news.html</guid>
</item>
<item>
    <title>Clojure workshop</title>
    <link>http://www.shakthimaan.com/posts/2010/08/30/clojure-workshop/news.html</link>
    <description><![CDATA[<p>A hands-on workshop on <a href="http://clojure.org/">Clojure</a> was organized in <a href="http://www.shakthimaan.com/posts/2010/08/30/clojure-workshop/www.ilughyd.org.in">TwinCLinGs’</a> August months’ meet at <a href="http://www.rhythm.com/india/overview.html">Rhythm &amp; Hues Studios Pvt. Ltd</a>, Hitech City, Hyderabad, India by <a href="http://freegeek.in/blog/">Bhaishampayan Ghose</a>, co-founder and chief geek at <a href="http://infinitelybeta.com/">Infinitely Beta</a>. A picture of the attendees:</p>
<img src="http://shakthimaan.com/downloads/glv/hyd/images/clojure-hyderabad-workshop-aug-29-2010.jpg" alt="clojure meet attendees"></img>
<p>The <a href="http://www.slideshare.net/zaph0d/pune-clojure-course-outline">slides</a> are available. You can install clojure on Fedora using:</p>
<pre class="shell"><code>$ sudo yum install clojure</code></pre>
<p>A clojure programming book is also available at <a href="http://en.wikibooks.org/wiki/Clojure">http://en.wikibooks.org/wiki/Clojure</a> to get started! Thanks to volunteers who sponsored for Bhaishampayan Ghoses’ travel, to and from Pune, India.</p>]]></description>
    <pubDate>Mon, 30 Aug 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/08/30/clojure-workshop/news.html</guid>
</item>
<item>
    <title>KMRF OLPC visit</title>
    <link>http://www.shakthimaan.com/posts/2010/08/22/KMRF-visit/news.html</link>
    <description><![CDATA[<p>Visited <a href="http://www.kmrfoundation.org/">KMRF</a> who needed assistance in installation, troubleshooting, and use of the <a href="http://wiki.laptop.org/go/Home">XO</a> laptops. I had a chance to visit the Government school in Aziznagar, Ranga Reddy district, Andhra Pradesh, India, where they have their XO laptop deployment. Most of the students can speak only in Telugu. They have a chart in the classroom for English-Telugu reference.</p>
<p><img src="http://shakthimaan.com/downloads/glv/hyd/olpc/2-text-reference.jpg" alt="olpc text chart"></img>.</p>
<p><a href="http://www.geekcomix.com/dm/tuxmath/gallery/">Tuxmath</a> was installed, and they enjoy using it a lot:</p>
<img src="http://shakthimaan.com/downloads/glv/hyd/olpc/1-tuxmath.jpg" alt="olpc text chart"></img>]]></description>
    <pubDate>Sun, 22 Aug 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/08/22/KMRF-visit/news.html</guid>
</item>
<item>
    <title>nesC</title>
    <link>http://www.shakthimaan.com/posts/2010/08/17/nesC/news.html</link>
    <description><![CDATA[<p><a href="http://nescc.sourceforge.net/">nesC</a> is now available for Fedora. It is an extension to the C programming language designed for use with <a href="http://www.tinyos.net/">TinyOS</a>, which is used in wireless sensor networks. Install it using:</p>
<pre class="shell"><code>$ sudo yum --enablerepo=updates-testing update nesc</code></pre>
<p>It could not be shipped with Fedora earlier because it used the now deprecated <a href="http://www.opensource.org/licenses/intel-open-source-license.php">Intel Open Source license</a>. Thanks to <a href="http://www.barnowl.org/">David Gay</a> and <a href="http://csl.stanford.edu/~pal/">Philip Levis</a>, it has now been updated with dual BSD/GPL license. There is also support for GNU Emacs with the emacs-nesc package.</p>
<pre class="shell"><code>$ sudo yum --enablerepo=updates-testing update emacs-nesc</code></pre>
<p>Here is a screenshot of GNU Emacs with syntax highlighting in nesc-mode: <img src="http://www.shakthimaan.com/downloads/screenshots/emacs-nesc-screenshot.png" alt="Emacs nesc screenshot"></img></p>]]></description>
    <pubDate>Tue, 17 Aug 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/08/17/nesC/news.html</guid>
</item>
<item>
    <title>Teal</title>
    <link>http://www.shakthimaan.com/posts/2010/08/02/Teal/news.html</link>
    <description><![CDATA[<p><a href="http://www.trusster.com/products/teal/">Teal</a>, the popular verification utility and connection library is now available for Fedora:</p>
<pre class="shell"><code>$ sudo yum install teal</code></pre>
<p>It is a C++ multithreaded library to verify verilog designs. It deals with simulation logging, error reporting, threading, memory model management. It basically provides all the low level building blocks needed to start a verification environment. A simple example:</p>
<pre class="sourceCode cpp"><code class="sourceCode cpp"><span class="ot">#include &lt;teal.h&gt;</span>
<span class="kw">using</span> <span class="kw">namespace</span> teal;
<span class="dt">int</span> verification_top ()
{
  vreg clock (“testbench.clk”);
  vout log (“Chapter <span class="dv">4</span>- Example <span class="dv">1</span>”);
  dictionary::start (“simple_clock_test.txt”);
  <span class="dt">uint</span> number_of_periods (dictionary::find (“number_of_clocks”,<span class="dv">20</span>));
  <span class="kw">for</span> (<span class="dt">int</span> i(<span class="dv">0</span>); i &lt; number_of_periods; ++i)  {
    log &lt;&lt; note &lt;&lt; “i is “ &lt;&lt; i &lt;&lt; clock is &lt;&lt; clock &lt;&lt; endm;
  }
  dictionary::stop ();
  vlog::get (expected) &lt;&lt; “test completed” &lt;&lt; endl;
}</code></pre>
<p>It is released under the Trusster open source license, but, that is incompatible with the GPL. But, thanks to the founders of Trusster.com, <a href="http://www.trusster.com/welcome/about/">Mike Mintz and Robert Ekendahl</a>, who agreed to release the same under the LGPLv2+ and GPLv2+ license for Fedora!</p>]]></description>
    <pubDate>Mon, 02 Aug 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/08/02/Teal/news.html</guid>
</item>
<item>
    <title>Computational Fluid Dynamics General Notation System</title>
    <link>http://www.shakthimaan.com/posts/2010/07/20/CGNS/news.html</link>
    <description><![CDATA[<p>The <a href="http://cgns.sourceforge.net/">Computational Fluid Dynamics General Notation System</a> (CGNS) library is now available in Fedora under the zlib license. Install it using:</p>
<pre class="shell"><code>$ yum install cgnslib</code></pre>
<p>It provides a general, portable, and extensible standard for the storage and retrieval of computational fluid dynamics (CFD) analysis data. It consists of a collection of conventions, and free and open software implementing those conventions. It is self-descriptive, machine-independent, <a href="http://www.grc.nasa.gov/WWW/cgns/user/index.html">well-documented</a>, and administered by an international <a href="http://cgns.sourceforge.net/steering.html">Steering Committee</a>.</p>]]></description>
    <pubDate>Tue, 20 Jul 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/07/20/CGNS/news.html</guid>
</item>
<item>
    <title>Chalmers Lava2000</title>
    <link>http://www.shakthimaan.com/posts/2010/06/30/ghc-chalmers-lava2000/news.html</link>
    <description><![CDATA[<p><a href="http://hackage.haskell.org/package/chalmers-lava2000">Chalmers Lava2000</a>, a hardware description library in Haskell is now available for Fedora. Thanks to <a href="http://www.cse.chalmers.se/~emax/index.html">Emil Axelsson</a> and <a href="http://fedoraproject.org/wiki/JensPetersen">Jens Peterson</a> for their feedback, and package review. You can install the same using:</p>
<pre class="shell"><code>$ sudo yum install ghc-chalmers-lava2000 ghc-chalmers-lava2000-devel ghc-chalmers-lava2000-doc</code></pre>
<p>To illustrate a half adder example with the use of the Lava library, create a Test.hs file:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="kw">import</span> <span class="dt">Lava</span>

halfAdd (a, b) <span class="fu">=</span> (<span class="fu">sum</span>, carry)
  <span class="kw">where</span>
    <span class="fu">sum</span>   <span class="fu">=</span> xor2 (a, b)
    carry <span class="fu">=</span> and2 (a, b)</code></pre>
<p>Load it with ghci (Glasgow Haskell Compiler):</p>
<pre class="shell"><code>$ ghci Test.hs

GHCi, version 6.12.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[1 of 1] Compiling Main             ( Test.hs, interpreted )
Ok, modules loaded: Main.</code></pre>
<p>Test half adder with low, high inputs using:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="fu">*</span><span class="dt">Main</span><span class="fu">&gt;</span> simulate halfAdd(low, high)
<span class="dt">Loading</span> package syb<span class="dv">-0</span><span class="fu">.</span><span class="fl">1.0</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package base<span class="dv">-3</span><span class="fu">.</span><span class="fl">0.3</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package array<span class="dv">-0</span><span class="fu">.</span><span class="fl">3.0</span><span class="fu">.</span><span class="dv">0</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package filepath<span class="dv">-1</span><span class="fu">.</span><span class="fl">1.0</span><span class="fu">.</span><span class="dv">3</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package old<span class="fu">-</span>locale<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.0</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package old<span class="fu">-</span>time<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.0</span><span class="fu">.</span><span class="dv">3</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package unix<span class="dv">-2</span><span class="fu">.</span><span class="fl">4.0</span><span class="fu">.</span><span class="dv">0</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package directory<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.1</span><span class="fu">.</span><span class="dv">0</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package process<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.1</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package time<span class="dv">-1</span><span class="fu">.</span><span class="fl">1.4</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package random<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.0</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package haskell98 <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package chalmers<span class="fu">-</span>lava2000<span class="dv">-1</span><span class="fu">.</span><span class="fl">1.1</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
(high,low)
<span class="fu">*</span><span class="dt">Main</span><span class="fu">&gt;</span> </code></pre>
<p>Testing half adder with high, high inputs gives:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="fu">*</span><span class="dt">Main</span><span class="fu">&gt;</span> simulate halfAdd(high, high)
(low,high)</code></pre>
<p>You can also generate vhdl file using:</p>
<pre class="sourceCode haskell"><code class="sourceCode haskell"><span class="fu">*</span><span class="dt">Main</span><span class="fu">&gt;</span> writeVhdl <span class="st">&quot;halfAdd&quot;</span> halfAdd

<span class="dt">Loading</span> package syb<span class="dv">-0</span><span class="fu">.</span><span class="fl">1.0</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package base<span class="dv">-3</span><span class="fu">.</span><span class="fl">0.3</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package array<span class="dv">-0</span><span class="fu">.</span><span class="fl">3.0</span><span class="fu">.</span><span class="dv">0</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package filepath<span class="dv">-1</span><span class="fu">.</span><span class="fl">1.0</span><span class="fu">.</span><span class="dv">4</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package old<span class="fu">-</span>locale<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.0</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package old<span class="fu">-</span>time<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.0</span><span class="fu">.</span><span class="dv">4</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package unix<span class="dv">-2</span><span class="fu">.</span><span class="fl">4.0</span><span class="fu">.</span><span class="dv">1</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package directory<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.1</span><span class="fu">.</span><span class="dv">1</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package process<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.1</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package time<span class="dv">-1</span><span class="fu">.</span><span class="fl">1.4</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package random<span class="dv">-1</span><span class="fu">.</span><span class="fl">0.0</span><span class="fu">.</span><span class="dv">2</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package haskell98 <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Loading</span> package chalmers<span class="fu">-</span>lava2000<span class="dv">-1</span><span class="fu">.</span><span class="fl">1.1</span> <span class="fu">...</span> linking <span class="fu">...</span> done<span class="fu">.</span>
<span class="dt">Writing</span> to file <span class="st">&quot;halfAdd.vhd&quot;</span> <span class="fu">...</span> <span class="dt">Done</span><span class="fu">.</span></code></pre>
<p>Copy /usr/share/chalmers-lava2000-1.1.1/Vhdl/lava.vhd to your project directory, and you can verify the generated halfAdd.vhd with it using <a href="http://ghdl.free.fr/">ghdl</a>:</p>
<pre class="shell"><code>$ ghdl -a lava.vhd
$ ghdl -a halfAdd.vhd 
$</code></pre>
<p>You are encouraged to read the <a href="http://www.cse.chalmers.se/edu/course/TDA956/Papers/lava-tutorial.ps">“Slightly Revised Tutorial on Lava”</a> by <a href="http://www.chalmers.se/cse/EN/people/claessen-koen">Koen Claessen</a>, and <a href="http://www.cse.chalmers.se/~ms/">Mary Sheeran</a> for more detailed documentation on using the library.</p>]]></description>
    <pubDate>Wed, 30 Jun 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/06/30/ghc-chalmers-lava2000/news.html</guid>
</item>
<item>
    <title>Hardware Complexity Tool</title>
    <link>http://www.shakthimaan.com/posts/2010/06/18/hct/news.html</link>
    <description><![CDATA[<p><a href="http://hct.sourceforge.net/index.html">Hardware Complexity Tool</a> (hct) is now available for Fedora. It generates scores that represent the complexity of the modules of integrated circuit design projects. It uses <a href="http://www.literateprogramming.com/mccabe.pdf">McCabes’ cyclomatic complexity</a> for understanding branch complexity. You can run hct on verilog, vhdl, cdl (computer design language) files or directories that contain these files. For example:</p>
<p>~~~~ {.shell} $ hct verilog Directory: /tmp/verilog</p>
verilog, 18 file(s) +——————–+————–+——+——-+———-+——–+ | FILENAME | MODULE | IO | NET | MCCABE | TIME | +——————–+————–+——+——-+———-+——–+ | Case.v 0 0 18 0.1504 | | case 0 0 18 | +———————————————————————-+ | modules.v 1 0 2 0.0137 | | m1 1 0 1 | | m2 0 0 1 | +———————————————————————-+ | RAM.v 7 0 4 0.1653 | | RAM 7 0 4 | +———————————————————————-+ | hello_world.v 0 0 1 0.0113 | | hello_world 0 0 1 | +———————————————————————-+ | one_day2.v 0 0 2 0.0423 | | one_day2 0 0 2 | +———————————————————————-+ | S430.v 13 4 1 0.2438 | | S430 13 4 1 | +———————————————————————-+ | one_day3.v 0 0 4 0.0305 | | one_day3 0 0 4 | +———————————————————————-+ | first_counter.v 4 3 3 0.0765 | | first<em>~unter 4 3 3 | +———————————————————————-+ | Multiplier.v 7 4 1 0.1646 | | Multiplier 7 4 1 | +———————————————————————-+ | Sys430.v 10 12 9 0.5017 | | Sys430 3 12 5 | | LEDTest 7 0 4 | +———————————————————————-+ | first_counter_tb.v 0 1 1 0.0279 | | first</em>~er_tb 0 1 1 | +———————————————————————-+ | longtest.v 9 5 12 2.1130 | | RAMB16_S9 9 5 12 | +———————————————————————-+ | GPR.v 8 0 3 0.1039 | | GPR 8 0 3 | +———————————————————————-+ | encoder_u~g_case.v 3 0 16 0.1384 | | encode~_case 3 0 16 | +———————————————————————-+ | RAMB16_S9.v 9 5 12 2.0922 | | RAMB16_S9 9 5 12 | +———————————————————————-+ | comment.v 0 0 1 0.0264 | | comment 0 0 1 | +———————————————————————-+ | encoder_using_if.v 3 0 17 0.1941 | | encode~ng_if 3 0 17 | +———————————————————————-+ | MUX2.v 0 0 1 0.0035 | | INV 0 0 1 | +———————————————————————-+ ~~~~]]></description>
    <pubDate>Fri, 18 Jun 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/06/18/hct/news.html</guid>
</item>
<item>
    <title>Dell Vostro 1310 rawhide</title>
    <link>http://www.shakthimaan.com/posts/2010/06/16/dell-vostro-rawhide/news.html</link>
    <description><![CDATA[<p>Have updated my Dell Vostro 1310 to Fedora rawhide. The relevant <a href="http://www.shakthimaan.com/installs/dell-vostro-1310.html">configuration outputs</a> are now made available:</p>
<ul>
<li><a href="http://www.shakthimaan.com/downloads/laptop/dell-vostro-1310/f13/lspci.txt">/sbin/lspci</a></li>
<li><a href="http://www.shakthimaan.com/downloads/laptop/dell-vostro-1310/f13/lsmod.txt">/sbin/lsmod</a></li>
<li><a href="http://www.shakthimaan.com/downloads/laptop/dell-vostro-1310/f13/menu.lst.txt">/boot/grub/menu.lst</a></li>
<li><a href="http://www.shakthimaan.com/downloads/laptop/dell-vostro-1310/f13/dmesg.txt">dmesg</a></li>
</ul>
<p>Updating tcl to tcl-8.5.8-2.fc14 solves <a href="https://bugzilla.redhat.com/show_bug.cgi?id=540296">540296</a>. One can now do:</p>
<pre class="shell"><code>$ tclsh
% package require Tk</code></pre>
<p>Running “mcu8051ide –check-libraries” should now be clean on Fedora:</p>
<pre class="shell"><code>Checking libraries...
	1/9 Checking for library BWidget
		Library present	... YES
		Version 1.7	... YES
	2/9 Checking for library Itcl
		Library present	... YES
		Version 3.4	... YES
	3/9 Checking for library Tcl
		Library present	... YES
		Version 8.2	... YES
	4/9 Checking for library md5
		Library present	... YES
		Version 2.0	... YES
	5/9 Checking for library crc16
		Library present	... YES
		Version 1.1	... YES
	6/9 Checking for library Tk
		Library present	... YES
		Version 8.5	... YES
	7/9 Checking for library img::png
		Library present	... YES
		Version 1.3	... YES
	8/9 Checking for library tdom
		Library present	... YES
		Version 0.8	... YES
	9/9 Checking for library Tclx
		Library present	... YES
		Version 8.0	... YES
RESULTS:
	Number of fails: 0
	Everything seems ok</code></pre>
<p>Pushed recent <a href="http://mcu8051ide.sf.net">mcu8051ide</a> 1.3.7 and <a href="http://vrq.sf.net">vrq</a> 1.0.76 to Fedora repository.</p>]]></description>
    <pubDate>Wed, 16 Jun 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/06/16/dell-vostro-rawhide/news.html</guid>
</item>
<item>
    <title>Blender workshop</title>
    <link>http://www.shakthimaan.com/posts/2010/05/17/blender-workshop/news.html</link>
    <description><![CDATA[<p>Attended May months’ <a href="http://ilughyd.org.in/">Hyderabad user group</a> meeting on Sunday, May 16, 2010 at:</p>
<pre class="shell"><code>Rhythm &amp; Hues Studios India Pvt. Ltd.
The V, Vega Block, 11th Floor,
Left Wing, Plot No - 17, Software Units layout
HITEC City, Madhapur, 
Hyderabad 500 081
India</code></pre>
<p>Satish “iloveblender” Goda gave a very informative talk about the history of the <a href="http://www.blender.org/">Blender</a> project, <a href="http://www.blender.org/features-gallery/blender-open-projects/">animation movies created</a> using the Blender software, pipelines involved in animation movie production, and on how the blender community functions in producing open animation movies with the guidance of <a href="http://www.blender.org/blenderorg/blender-foundation/history/">Ton Roosendaal</a>.</p>
<p>Their open animation movie projects are code named after names of fruits. One interesting aspect is that before starting on a new movie project, one can pay and pre-order the DVD, and your name is added to the credits when the movie is released. This funding also helps the team in producing the movie!</p>
<p>Thanks to the Management of Rhythm &amp; Hues Studios India Pvt. Ltd. for hosting our user group meet at their auditorium. Special thanks to “cheedhu” and “iloveblender” for initiating the effort. We hope to have more sessions of blender and other F/OSS sessions at this venue.</p>
<p>A photo taken at the end of the session:</p>
<img src="http://shakthimaan.com/downloads/glv/hyd/blender-hyderabad-meet-may-16-2010.png" alt></img>]]></description>
    <pubDate>Mon, 17 May 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/05/17/blender-workshop/news.html</guid>
</item>
<item>
    <title>Sreenidhi-KMRF OLPC visit</title>
    <link>http://www.shakthimaan.com/posts/2010/05/08/Sreenidhi-KMRF/news.html</link>
    <description><![CDATA[<p>Visited <a href="http://www.sreenidhiinternational.com/">Sreenidhi International School</a> and members of the <a href="http://www.kmrfoundation.org/">KMR Foundation</a> today, Saturday, May 8, 2010 in Hyderabad. They have <a href="http://laptop.org/en/">OLPC</a> XOs that they are using for class(grade) IV students in a school near their premises at Aziznagar, Ranga Reddy district, Andhra Pradesh, India. They require support for Telugu language and use of XO software for the school students. Here is a screenshot of one of the XOs:</p>
<img alt="olpc xo" src="http://shakthimaan.com/downloads/glv/hyd/olpc/olpc-xo.png"></img>]]></description>
    <pubDate>Sat, 08 May 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/05/08/Sreenidhi-KMRF/news.html</guid>
</item>
<item>
    <title>perl-Sys-CPU</title>
    <link>http://www.shakthimaan.com/posts/2010/05/07/perl-Sys-CPU/news.html</link>
    <description><![CDATA[<p>Pushed <a href="http://search.cpan.org/~mkoderer/Sys-CPU/CPU.pm/">perl-Sys-CPU</a> to Fedora repository. You can use it like:</p>
<p>~~~~ {.perl} use Sys::CPU;</p>
<p>$number_of_cpus = Sys::CPU::cpu_count(); printf(“I have %d CPU’s”, $number_of_cpus);</p>
print &quot; Speed : “, Sys::CPU::cpu_clock(),”“; print” Type : “, Sys::CPU::cpu_type(),”&quot;; ~~~~]]></description>
    <pubDate>Fri, 07 May 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/05/07/perl-Sys-CPU/news.html</guid>
</item>
<item>
    <title>LaTeX \newcommand</title>
    <link>http://www.shakthimaan.com/posts/2010/04/21/latex-newcommand/news.html</link>
    <description><![CDATA[<p>Used \newcommand to abstract the four actor names in <a href="http://shakthimaan.com/downloads.html#di-git-ally-managing-love-letters">di-git-ally managing love letters</a> presentation:</p>
<pre class="sourceCode latex"><code class="sourceCode latex">\newcommand{\oneactor}{pretty-zinta}
\newcommand{\twoactor}{raaani-mukerji}
\newcommand{\threeactor}{nayantaaara}
\newcommand{\fouractor}{aishvarya-ray}</code></pre>
<p>You can now get the <a href="http://gitorious.org/di-git-ally-managing-love-letters">sources from gitorious</a>, and replace the above names to your liking, and rebuild the presentation by invoking <em>make</em> from the sources directory.</p>
<pre class="shell"><code>$ git clone git://gitorious.org/di-git-ally-managing-love-letters/mainline.git</code></pre>]]></description>
    <pubDate>Wed, 21 Apr 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/04/21/latex-newcommand/news.html</guid>
</item>
<item>
    <title>KMRF OLPC</title>
    <link>http://www.shakthimaan.com/posts/2010/01/22/KMRF/news.html</link>
    <description><![CDATA[<p>We will be initiating olpc, Hyderabad for content creation (Telugu) and to support the students, faculty and staff at <a href="http://www.kmrfoundation.org/">KMRF</a> who need assistance. Thanks to my good friend, <a href="http://verma.sfsu.edu/index.php">Dr. Sameer Verma</a> for coordinating with me last few months in this regard. <a href="http://cob.sfsu.edu/cob/directory/faculty_profile.cfm?facid=416">Prof. Humaira Mahi</a> will be having a field deployment through <a href="http://www.kmrfoundation.org/">KMR Foundation</a>. Please do write to me if you are interested in helping them in Hyderabad.</p>]]></description>
    <pubDate>Fri, 22 Jan 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/01/22/KMRF/news.html</guid>
</item>
<item>
    <title>Sandwitch?</title>
    <link>http://www.shakthimaan.com/posts/2010/01/20/sandwitch/news.html</link>
    <description><![CDATA[<p>Witch one did you ask for? at Chennai domestic airport.</p>
<img alt="MAA airport witch" src="http://shakthimaan.com/downloads/clips/maa-airport-witch.jpg"></img>]]></description>
    <pubDate>Wed, 20 Jan 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/01/20/sandwitch/news.html</guid>
</item>
<item>
    <title>Digital Gate Compiler</title>
    <link>http://www.shakthimaan.com/posts/2010/01/12/dgc/news.html</link>
    <description><![CDATA[<p><a href="http://sourceforge.net/projects/dgc/">Digital Gate Compiler (DGC)</a> was written by Oliver Kraus in 2003, who is not with <a href="http://www.uni-erlangen.de/">Universität Erlangen-Nürnberg</a> anymore. The current maintainer of the project is <a href="http://www.lzs.eei.uni-erlangen.de/Mitarbeiter/Dichtl">Tobias Dichtl</a>. His line of scientific research is not the same as that of DGC, but, he said he will be adding “extended burst mode synthesis support” this year. Meanwhile, I had updated the sources with autotools build changes, and released 0.98 for Fedora. The updated changes are available at <a href="http://git.fedorahosted.org/git/dgc.git">dgc.git Fedora Hosted repository</a>.</p>]]></description>
    <pubDate>Tue, 12 Jan 2010 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2010/01/12/dgc/news.html</guid>
</item>
<item>
    <title>LXDE on Asus EEE PC</title>
    <link>http://www.shakthimaan.com/posts/2009/12/29/lxde-on-asue-eee-pc/news.html</link>
    <description><![CDATA[<p>Installed livecd-tools, used livecd-iso-to-disk to write F12 LXDE spin to a USB disk, and used it to boot a Asus EEE PC:</p>
<pre class="shell"><code># yum install livecd-tools</code></pre>
<p><img src="http://shakthimaan.com/downloads/clips/asus_eee_pc_f12_lxde.jpg" alt="Fedora 12 LXDE from USB disk"></img>.</p>]]></description>
    <pubDate>Tue, 29 Dec 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/12/29/lxde-on-asue-eee-pc/news.html</guid>
</item>
<item>
    <title>Fedora workshop, Maharaja Sayajirao University of Baroda</title>
    <link>http://www.shakthimaan.com/posts/2009/12/28/fedora-workshop-msu-baroda/news.html</link>
    <description><![CDATA[<p>I had conducted a one-day Fedora, Free Software workshop at the Bachelor of Computer Applications department, Maharaja Sayajirao University of Baroda (Vadodara), Gujarat, India on Saturday, December 26, 2009.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album60/3a_telescope_dome.jpg" alt="MSU, Baroda"></img>
<p>Thanks to <a href="http://www.vglug.info">VGLUG</a> for coordinating with me for the past few months in organizing this event. I would like to thank the Fedora project for sponsoring the travel.</p>
<p>The BCA department lab systems were equipped to run on Fedora 12, and we used it for couple of the hands-on sessions:</p>
<ul>
<li>Use of git: <a href="http://shakthimaan.com/downloads/glv/presentations/di-git-ally-managing-love-letters.pdf">di-git-ally managing love letters</a>.</li>
<li><a href="http://shakthimaan.com/downloads/glv/presentations/packaging-red-hot-paneer-butter-masala.pdf">Packaging Fedora RPM</a>.</li>
</ul>
<p>I had also addressed the following topics:</p>
<ul>
<li><a href="http://www.shakthimaan.com/downloads/glv/presentations/i-want-2-do-project-tell-me-wat-2-do-fedora.pdf">i-want-2-do-project. tell-me-wat-2-do-fedora</a>.</li>
<li><a href="http://www.shakthimaan.com/downloads/glv/presentations/badam.halwa.of.embedded.systems.pdf">Badam Halwa of Embedded Systems</a>.</li>
</ul>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album60/9_git_session_in_progress.jpg" alt="Git session"></img>
<p>Participants were from the BCA department, and had also come from <a href="http://wikitravel.org/en/Ahmedabad">Ahmedabad</a>. Vadodara (Baroda) connects to Ahmedabad via 95 km <a href="http://en.wikipedia.org/wiki/Indian_National_Expressway_1">National Expressway 1</a>.</p>
<p>Free/Open Source Software is officially included in the Gujarat state school syllabus for higher secondary (XI and XII). In the coming years it is expected to be even introduced from standard VIII.</p>
<p>The Department coordinator and Professor V A Kalamkar is happy to facilitate work between VGLUG, and the students for Free/Open Source Software projects. We hope to have more interaction with them in the future.</p>
<p>VGLUG members are also keen on participating in the Fedora project at various sub-projects of their interests.</p>
<p>Due to the <a href="http://beta.thehindu.com/news/national/article69789.ece">political crisis</a> in Hyderabad, I was uncertain about reaching the Hyderabad airport, and thus making it to the workshop. The bandh was withdrawn for December 25th, and when I made it the airport on the 25th, the scheduled flight was cancelled. So, I had to re-schedule a different flight, but, the airline officials said they couldn’t guarantee if I will make it to my connecting flight in Mumbai. This re-scheduled flight got delayed even further. Luckily, my connecting flight also got delayed, and I finally managed to make it to Vadodara.</p>
<p>As customary, here are some <a href="http://www.shakthimaan.com/Mambo/gallery/album60">photos</a> taken during the trip.</p>]]></description>
    <pubDate>Mon, 28 Dec 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/12/28/fedora-workshop-msu-baroda/news.html</guid>
</item>
<item>
    <title>Poky scripts</title>
    <link>http://www.shakthimaan.com/posts/2009/12/22/poky-scripts/news.html</link>
    <description><![CDATA[<p>Pushed poky-scripts to Fedora repository. <a href="http://pokylinux.org/">Poky</a> is a platform builder tool written in Python that allows you to build toolchains, kernels, rootfs images for different target hardware. Use:</p>
<pre class="shell"><code># yum install poky-scripts</code></pre>
<p>You can test run <a href="http://pokylinux.org/releases/pinky-3.1/">pre-built images</a>, for example from Pinky (3.1.x) releases:</p>
<pre class="shell"><code>$ poky-qemu zImage-2.6.23-pinky-3.1-qemuarm.bin poky-image-sdk-qemuarm-pinky-3.1.rootfs.ext2</code></pre>
<img src="http://shakthimaan.com/downloads/clips/poky-pinky-qemu-arm-screenshot.png" alt="Poky QEMU ARM screenshot"></img>
<p>If you want to build your complete environment, you need to download the latest Poky stable release 3.2.x ‘Purple’ (latest) and extract it to ~/devel. Make sure you have a broadband connection and atleast 3G of disk space as the scripts will fetch, build everything from toolchains, kernels, user space applications. Follow the <a href="http://pokylinux.org/support/">Poky handbook</a> which is very well documented. Supported reference platforms include (to mention a few):</p>
<ul>
<li>Intel Atom devices</li>
<li>Compulab cm-x270 and em-x270</li>
<li>Freescale MX31</li>
<li>ST Nomadik</li>
<li>Marvell Zylonite</li>
<li>QEMU ARM and x86</li>
</ul>]]></description>
    <pubDate>Tue, 22 Dec 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/12/22/poky-scripts/news.html</guid>
</item>
<item>
    <title>FedX</title>
    <link>http://www.shakthimaan.com/posts/2009/12/12/FedX/news.html</link>
    <description><![CDATA[<p>Downloaded Fedora 12 (i386) mirror using <a href="http://gitorious.org/fedx">FedX</a>, written by <a href="http://ratnadeepdebnath.wordpress.com/">Ratnadeep Debnath</a> and myself. I have updated it to rsync from a mirror to a local copy as well as from an external disk to a local directory.</p>
<pre class="shell"><code>  $ git clone git://gitorious.org/fedx/mainline.git</code></pre>
<ul>
<li>Fedora 11 (i386) with rpmfusion repository = 29 GB</li>
<li>Fedora 12 (i386) with rpmfusion repository = 23 GB</li>
</ul>
<p>I assume that this drastic size reduction is due to the switch from gzip compression to XZ (LZMA format). Please refer <a href="https://fedoraproject.org/wiki/Features/XZRpmPayloads">XZRpmPayloads</a> (when the site is back up and running). This Fedora offline repository is very handy when working offline, or when it is required to install packages when using slow Internet connectivity speeds.</p>]]></description>
    <pubDate>Sat, 12 Dec 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/12/12/FedX/news.html</guid>
</item>
<item>
    <title>Sparcy</title>
    <link>http://www.shakthimaan.com/posts/2009/12/06/sparcy/news.html</link>
    <description><![CDATA[<p>Bought the GDL3204 GPS data logger from Sparc Systems Ltd, Mumbai, India for INR 7500 (taxes and shipping charges additional). They use <a href="http://www.gpleda.org/">gEDA (GPL Electronic Design Automation)</a> and <a href="http://pcb.gpleda.org/index.html">Printed Circuit Board (PCB)</a> for their work, and I thought I should support them by buying a unit.</p>
<img src="http://shakthimaan.com/downloads/hardware/GDL3204.jpg" alt="GLD3204 GPS data logger"></img>
<p>It has a serial interface to connect to a computer, and can store 74000 track points on a 4MB non-volatile memory. It can be used for <a href="http://www.openstreetmap.org/">openstreetmap</a> work. You can use the sparcy (command line tool) with it from Fedora.</p>
~~~~ {.shell} # yum install sparcy ~~~~]]></description>
    <pubDate>Sun, 06 Dec 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/12/06/sparcy/news.html</guid>
</item>
<item>
    <title>The Lost Chronicles</title>
    <link>http://www.shakthimaan.com/posts/2009/11/03/the-lost-chronicles/news.html</link>
    <description><![CDATA[<p>We approach technical advisor X and assistant professor Y for a F/OSS unconference at a premier International Institute, and they never respond for weeks. Apparently, we knew the Head of the Institute, who whole-heartedly agrees, having been a user group member during his college years, and asks X and Y to take things further.</p>
<p>Now, X and Y are upset, because we approached the Head of the Institute, and permission was granted. Then X and Y show off their ego, presence, and reciprocate by not communicating at all our requests. Weeks go by, and we still don’t get any prompt response. And we decide to finally call it off with them because it was not helping us progress any further.</p>
<p>End result is that the students/faculty of the Institute are at a big loss for not having the event at their venue for no fault of theirs!</p>
<p>While, I have seen such extreme <em>ego</em> cases in India in most of my attempts to organize Free Software unconferences, I have never shared it with others. Maybe I should write a book – The Adventures of Shakthimaan: The “Lost” Chronicles :)</p>]]></description>
    <pubDate>Tue, 03 Nov 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/11/03/the-lost-chronicles/news.html</guid>
</item>
<item>
    <title>Beam Telecom uses Joomla</title>
    <link>http://www.shakthimaan.com/posts/2009/10/03/beam-telecom-joomla/news.html</link>
    <description><![CDATA[<p><a href="http://beamcablesystem.in/">Beam Telecom</a> (formerly Beam Cable), a popular ISP in Madhapur, Hi-tech area at Hyderabad is <a href="http://shakthimaan.com/downloads/clips/beam-cable-using-joomla.png">using Joomla</a> for their portal. This screenshot was taken before they fixed their database migration :)</p>
<img src="http://shakthimaan.com/downloads/clips/beam-cable-using-joomla.png" alt="Beam Telecom using Joomla"></img>]]></description>
    <pubDate>Sat, 03 Oct 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/10/03/beam-telecom-joomla/news.html</guid>
</item>
<item>
    <title>Software Freedom Day, Hyderabad</title>
    <link>http://www.shakthimaan.com/posts/2009/09/19/SFD-Hyderabad/news.html</link>
    <description><![CDATA[<p>On September 19, 2009, Software Freedom Day at Hyderabad, I visited Devnar Foundation for the Blind, a follow-up to last weekends’ installation.</p>
<p>Most of their systems have been donated. So, there are different motherboards, and brands. Apparently, the local AMC support guy who had come today didn’t have drivers for different proprietary OSes, and for different motherboards. I then migrated their office computers to Fedora 11 :)</p>
<p>Now, they have HCL, Wipro computers running Fedora. I have disabled many start-up services, to boot the systems faster. I also adjusted Orca pitch, rate settings for clarity. It should take them some time to get accustomed to the American accent.</p>
<p>Thanks to Prof. Haasan, Department of Astronomy, Osmania University, I have deployed Fedora 11 repository (29 GB) at one of their department systems.</p>
<p>They are interested in creating a Fedora Spin for Astronomy, and release it, as this is the <a href="http://www.astronomy2009.org">International Year of Astronomy</a>. I have provided Rahul Sundarams’ e-mail contact to them.</p>]]></description>
    <pubDate>Sat, 19 Sep 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/09/19/SFD-Hyderabad/news.html</guid>
</item>
<item>
    <title>Devnar Foundation for the Blind</title>
    <link>http://www.shakthimaan.com/posts/2009/09/13/Devnar-Foundation-for-the-Blind/news.html</link>
    <description><![CDATA[<p>Today, Sunday, September 13, 2009, I deployed Fedora 11, and Fedora 11 offline repository at Devnar Foundation for the Blind, Mayurmarg, Begumpet, Hyderabad, India.</p>
<p>They have been using a proprietary software on a proprietary system, and wanted to explore better alternatives in this regard.</p>
<p>I was given a 256 MB RAM system, with 40 GB hard-disk. This system did not have Internet connectivity. The offline repository really helped. Most of the systems are donated by companies for the school to use. The school follows the Andhra Pradesh State syllabus, and this year they have introduced Intermediate (after Board X). They write their exams on slate or on Braille paper (which I believe, is very expensive). Some students stay in the school hostel, while others’ are day scholars.</p>
<p>They do have one <a href="http://mountbattenbrailler.com/">MountBatten Brailler</a> (costing around 1,00,000 INR) which can produce output to a computer or a printer. It also spells out the input. I didn’t have time to test it with Fedora (serial, parallel ports).</p>
<p>A junior teacher, Miss. Shashi, did try out <a href="http://live.gnome.org/Orca">Orca</a> with the Gnome shortcut keys, listening to Orcas’ audio output. She was able to navigate through the Gnome menus, and use Openoffice.org Writer. They did want spoken American English, which is default in Gnome. It will be good to have those Orca audio recorded in Telugu or other regional languages in India.</p>
<p>There were some very interesting questions like:</p>
<ul>
<li><p>Orca loads only after logging in – which spells out menus, the frame window that is selected, keys pressed etc. So, grub which loads prior to all these doesn’t announce the choice of kernel. So, how does one choose the right kernel?</p></li>
<li><p>A sound can be played after gdm loads? Otherwise, they wouldn’t know if the system booted to gdm or not. If there are multiple user accounts, some application need to spell-out the login names?</p></li>
<li><p>By default there is no shutdown sound in Fedora 11? How to set one?</p></li>
<li><p>Some applications pop-up menus didn’t support tab feature, so one had to remember to use shortcuts like Alt+S to Save, or Alt+C to Cancel.</p></li>
</ul>
<p>I shall check these requests with the Orca project team, and any other queries that they might have as follow-ups.</p>
<p>I would like to thank Padma Shri Dr. A. Saibaba Goud for giving me an opportunity to deploy the solution at their school. Thanks to Rakesh (“arky”) Ambati for introducing me to them, who also works for <a href="http://www.braillewithoutborders.org/ENGLISH/index.html">Braille Without Borders</a>. Eric Ofori from South Africa will be following it up with support for the school staff (about 40 in number). If anyone who is coming to Hyderabad and who would like to help them, please do contact me offline.</p>
<p>With all due respect to the physically challenged, I did not take any photos.</p>]]></description>
    <pubDate>Sun, 13 Sep 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/09/13/Devnar-Foundation-for-the-Blind/news.html</guid>
</item>
<item>
    <title>Fedora workshop, ACE College</title>
    <link>http://www.shakthimaan.com/posts/2009/08/22/Fedora-workshop-ACE-College/news.html</link>
    <description><![CDATA[<p>Today, Saturday, August 22, 2009, I conducted a Fedora workshop at <a href="http://aceec.ac.in/">ACE College of Engineering</a>, Ankushapur, <a href="http://en.wikipedia.org/wiki/Ghatkesar">Ghatkesar</a> Mandal, Ranga Reddy District, Andhra Pradesh, India.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album58/3_ace_college.jpg" alt="ACE college"></img>
<p>I have addressed “i-want-2-do-project. tell-me-wat-2-do-fedora”, “Packaging RPM”, “Badam Halwa of Embedded Systems” <a href="http://shakthimaan.com/downloads.html">presentations</a>. The attendees were Computer Science and Information Technology Department students, and faculty. I would like to thank Mrs. K. Jaya Bharathi, Head of the Computer Science Department, for coordinating with me for the past one month in organizing this workshop.</p>
<p>They don’t yet have a Fedora Lab. I have provided them with Fedora 10, 11 repositories for their offline use (53 GB). I have also given them Fedora 10, 11 DVDs.</p>
<p>Ghatkesar is 25 km from Hyderabad, and one hour drive from Hyderabad through <a href="http://en.wikipedia.org/wiki/National_Highway_7_%28India%29">NH-7</a>.</p>
<p>As customary, here are some <a href="http://www.shakthimaan.com/Mambo/gallery/album58">pictures</a> taken during the visit.</p>]]></description>
    <pubDate>Sat, 22 Aug 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/08/22/Fedora-workshop-ACE-College/news.html</guid>
</item>
<item>
    <title>GNUtsav, NIT, Agartala</title>
    <link>http://www.shakthimaan.com/posts/2009/07/20/GNUtsav-NIT-Agartala/news.html</link>
    <description><![CDATA[<p>I had conducted a Fedora workshop (“GNUtsav”) at National Institute of Technology (NIT), <a href="http://groups.google.co.in/group/nitalug
">Agartala</a>, Tripura, India on July 18-19, 2009.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album57/4_banner.jpg" alt="GNUtsav poster"></img>
<p>I would like to thank the Fedora project for sponsoring the event. Special thanks to the student volunteers who worked hard in organizing the event. Mention must be made for the support of the faculty, Prof. Swapan Debbarma, Prof. Anupam Jamatia (“ajnr” on freenode), and Prof. Dwijen Rudrapal.</p>
<p>My presentation sessions included:</p>
<ul>
<li>i-want-2-do-project. tell-me-wat-2-do-fedora.</li>
<li>Badam Halwa of Embedded Systems</li>
<li>di-git-ally managing love letters</li>
<li>Fedora Electronic Lab (demo)</li>
<li>Packaging RPM – Red hot, Paneer (butter) Masala</li>
</ul>
<p>The presentations are available from <a href="http://www.shakthimaan.com/downloads.html">http://www.shakthimaan.com/downloads.html</a></p>
<p>It has only been two years since this Institution has started. It is 25 km from Agartala city. The Institute has 50% reservation for State students, and 50% for students coming through an All India Engineering Entrance Examination. People speak Hindi, English, Bengali, and Kokborok.</p>
<p>Guwahati, Assam is the main connectivity for this part of the world, or, flying from Kolkatta, West Bengal is the other option. Subsidized rate flights are available from major domestic carriers in India. Helicopter service between North-Eastern States is also available, but, is expensive. Bus journey from Guwahati, Assam to Agartala, Tripura is very tedious, and might take atleast 24 hours. When passing through the dense forests, <a href="http://en.wikipedia.org/wiki/Central_Reserve_Police_Force">CPRF</a> escort is required due to insurgency problems in forest areas.</p>
<p>Students have access to distros at the labs, as well as in the hostel. Power cuts are quite common here. Mobile cell coverage is nil or works at only few places. Internet connectivity is nil or very slow on campus. Hence, we have provided them with an offline Fedora 10 repository (around 24 GB) that they can use in their computers or in the LAN. Special thanks also goes to <a href="http://dgplug.org/intro/">dgplug user group</a> from Durgapur, West Bengal for the offline repos. There are few browsing centers in the city that students can use, but have to travel the distance from the campus. Work is in progress to provide students with a Fedora 11 repository.</p>
<p>Agartala is a very scenic, lush green, and very peaceful place. Hopefully when the construction work on campus is completed in the next six months, they will be better equipped with Internet access for communicating online, and for VoIP sessions.</p>
<p>As customary, here are few <a href="http://www.shakthimaan.com/Mambo/gallery/album57 ">photos</a> that I took during the trip.</p>]]></description>
    <pubDate>Mon, 20 Jul 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/07/20/GNUtsav-NIT-Agartala/news.html</guid>
</item>
<item>
    <title>Fosjam.in, Jaipur</title>
    <link>http://www.shakthimaan.com/posts/2009/05/18/fosjam-jaipur/news.html</link>
    <description><![CDATA[<p>I would like to thank the Free/Open Source Software <a href="http://lugj.in">user group members of Jaipur</a> and the Jaipur Engineering College and Research Centre Foundation for organizing http://fosjam.in between May 16-17, 2009 at their college premises, Jaipur, Rajasthan, India.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album56/7_fosjam_poster.jpg" alt="fosjam poster"></img>
<p>The event has been organized in 10 days time, with heavy discussions on #lug-jaipur on irc.freenode.net. I was overwhelmed by the enthusiasm of the students. The online registration rose to 280+.</p>
<p>We had students coming from outside Jaipur as well, and it was a mad rush. The organizers didn’t have the heart to say “no”, but, they still managed to accommodate 200 people. This, I assume, is the first time that this kinda workshop has been planned at this place. People, there is no need to panic! It is not the end of the world, yet, and this is not the last workshop that we are going to do in Jaipur.</p>
<p>The profiles of the user group members are at http://fosjam.in/about/about-lug-jaipur.</p>
<p>Special thanks to all of them for their energy, spirit, dynamism in organizing the event.</p>
<p>I also met students from Malaviya National Institute of Technology, (MNIT), Swami Keshvanand Institute of Technology (SKIT), Gyan Vihar Institute of Technology et. al.</p>
<p>It was a pleasure to meet the Director of the Institution, Mr. Arpit Agarwal, a young, open-minded entrepreneur, who was very happy and eager to hear students talking about Free/Open Source. His continued support for this cause, is greatly appreciated. He is happy to help us in organizing more workshops for the young minds, or even a national FOSS unconference in Jaipur!</p>
<p>There are about 17+ colleges around Jaipur, and workshops have to be taken to other places like Kota, Udaipur, Jodhpur, Bikaner et. al. Most of them are affiliated to Rajasthan Technical University (RTU).</p>
<p>Some students are fluent in English. Most of them prefer to converse in Hindi. Of course, technical jargon is in English. So, it is mostly <a href="http://en.wikipedia.org/wiki/Hinglish">Hinglish</a>.</p>
<p>A separate IRC session was organized to show people how to login and use IRC.</p>
<p>Lot of them use Fedora or some distribution, and are extremely happy with it. Those who enjoy it have realized the power of Free/Open Source Software. The others have started to realize that there is something important here that they can work with.</p>
<p>My presentations, code, documentation are available at <a href="http://www.shakthimaan.com/downloads.html">http://www.shakthimaan.com/downloads.html</a>.</p>
<p>Some photos taken during the trip are at <a href="http://www.shakthimaan.com/Mambo/gallery/album56">http://www.shakthimaan.com/Mambo/gallery/album56</a></p>
<p>The organizers could possible provide more concrete statistics on the event. Please bear for some time for people to get back their sleep, and you will hear more from blogs, event reports, photos.</p>]]></description>
    <pubDate>Mon, 18 May 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/05/18/fosjam-jaipur/news.html</guid>
</item>
<item>
    <title>Fedora workshop, NBKR Institute</title>
    <link>http://www.shakthimaan.com/posts/2009/05/02/fedora-workshop-nbkr/news.html</link>
    <description><![CDATA[<p>I addressed the following topics for a Free Software workshop at NBKR Institute of Science and Technology, Vidyanagar, Nellore district, Andhra Pradesh, India on Saturday, May 2, 2009:</p>
<ul>
<li>Career opportunities with Free Software</li>
<li>i-want-2-do-project. tell-me-wat-2-fedora</li>
<li>Mailing list guidelines</li>
<li>Communication guidelines</li>
<li>Fedora sub-projects</li>
<li>Embedded Systems concepts</li>
</ul>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album55/11_audience.png" alt="Audience"></img>
<p>I would like to thank Rajesh Sola, Lecturer, for organizing the workshop, and for coordinating with me for the past couple of months for this workshop.</p>
<p>The CS labs have Fedora installed. I have given them Fedora 10 DVDs and stickers (thanks to Rahul Sundaram) which they can distribute to other engineering departments.</p>
<p>Pointers to fedora mailing lists, IRCs have been given to the students.</p>
<p>Some photos taken during this trip and at the venue are available at: <a href="http://www.shakthimaan.com/Mambo/gallery/album55">http://www.shakthimaan.com/Mambo/gallery/album55</a>.</p>]]></description>
    <pubDate>Sat, 02 May 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/05/02/fedora-workshop-nbkr/news.html</guid>
</item>
<item>
    <title>gEDA workshop, GEC, Barton Hill</title>
    <link>http://www.shakthimaan.com/posts/2009/03/23/geda-workshop-gec-barton-hill/news.html</link>
    <description><![CDATA[<p>I would like to thank Prof. Ranjith Kumar, Department of Mechanical Engineering, Government Engineering College (GEC), Barton Hill, Thiruvananthapuram, Kerala, India for coordinating with me for the past one month for the National Seminar event on Embedded Design with GNU/Linux that was held on Saturday, March 21, 2009 <a href="http://fsc.gecbh.ac.in/">http://fsc.gecbh.ac.in</a>.</p>
<img src="http://www.shakthimaan.com/Mambo/gallery/albums/album54/13_poster.png" alt="Poster"></img>
<p>I would also like to thank the Directorate of Technical Education, and Kerala State Council for Science, Technology, and Environment for organizing the event.</p>
<p>I discussed basic concepts of embedded systems, and gave a demo of gEDA tools suite (gschem, pcb, qucs, iverilog, gtkwave) on Fedora 10.</p>
<p>Some photos taken during the visit are available at: <a href="http://www.shakthimaan.com/Mambo/gallery/album54">http://www.shakthimaan.com/Mambo/gallery/album54</a></p>]]></description>
    <pubDate>Mon, 23 Mar 2009 00:00:00 UT</pubDate>
    <guid>http://www.shakthimaan.com/posts/2009/03/23/geda-workshop-gec-barton-hill/news.html</guid>
</item>

    </channel> 
</rss>
