<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Orgmode on Noetic Nought</title>
    <link>https://punchagan.muse-amuse.in/tags/orgmode/</link>
    <description>Recent content in Orgmode on Noetic Nought</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <copyright>© 2006-2026 CC-BY-SA-4.0</copyright>
    <lastBuildDate>Wed, 15 Jul 2026 16:34:00 +0530</lastBuildDate>
    <atom:link href="https://punchagan.muse-amuse.in/tags/orgmode/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Weekly #28 (2026)</title>
      <link>https://punchagan.muse-amuse.in/blog/weekly-28-2026/</link>
      <pubDate>Wed, 15 Jul 2026 16:34:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/weekly-28-2026/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve decided to start posting weeklies inspired by some folks from the &lt;a href=&#34;https://ocaml.org/ocaml-planet&#34;&gt;OCaml&lt;/a&gt;&#xA;and the &lt;a href=&#34;https://blr.indiewebclub.org/&#34;&gt;Bangalore Indie Web&lt;/a&gt; communities.&lt;/p&gt;&#xA;&lt;p&gt;I spent a bunch of time over the weekend updating the setup of &lt;a href=&#34;https://github.com/orgzly-revived/orgzly-android-revived&#34;&gt;Orgzly Revived&lt;/a&gt;&#xA;and &lt;a href=&#34;https://termux.dev/en/&#34;&gt;Termux&lt;/a&gt; and &lt;a href=&#34;https://github.com/punchagan/android-dotfiles/&#34;&gt;my scripts&lt;/a&gt; for syncing everything between my phone and my&#xA;laptop. I hadn&amp;rsquo;t bothered copying over my setup to my current phone since it&#xA;felt too brittle after using it for a few months on my previous phone.&lt;/p&gt;&#xA;&lt;p&gt;With Orgzly being revived and getting continuous improvements, and the&#xA;availability of LLMs to debug and fix annoying breakages that I don&amp;rsquo;t want to&#xA;sink time into, hopefully this time everything will work better&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Hopefully, this will all help me continue to be regular with these weeklies.&lt;/p&gt;&#xA;&lt;!--list-separator--&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Android playstore and F-droid&lt;/p&gt;&#xA;&lt;p&gt;While working on this setup I stumbled on this site &lt;a href=&#34;https://keepandroidopen.org/&#34;&gt;&amp;ldquo;Keep Android Open&amp;rdquo;&lt;/a&gt;. It is&#xA;a site which explains the planned changes to Android&amp;rsquo;s permissions for&#xA;installing apps. The change seems like an iOS-ification of Android where only&#xA;apps by developers registered with Google can be installed, even if they are&#xA;not distributed via the Play Store. I had received a notification from Google&#xA;about deleting my developer account since it was inactive and I didn&amp;rsquo;t pay much&#xA;attention to it. This proposed change is so much wider reaching, though, and&#xA;needs more investigation.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!--list-separator--&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Phones stand in for earthquake sensors in Venezuela&lt;/p&gt;&#xA;&lt;p&gt;I read an article about how &lt;a href=&#34;https://flowingdata.com/2026/06/29/phones-stand-in-for-earthquake-sensors-in-venezuela/&#34;&gt;Google runs an earthquake warning system&lt;/a&gt; that&amp;rsquo;s&#xA;great for countries without a public-funded earthquake warning system. It&amp;rsquo;s the&#xA;first time in a long time that I felt something from Google gave me the &amp;ldquo;Don&amp;rsquo;t&#xA;be evil&amp;rdquo; vibes. For a company that managed to &lt;a href=&#34;https://jackyan.com/blog/2023/09/google-search-is-worse-by-design-internal-memo/&#34;&gt;worsen their search&lt;/a&gt; for&#xA;increasing traffic and ad revenue, this is pleasantly surprising!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!--list-separator--&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Google Summer of Code updates&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m &lt;a href=&#34;https://summerofcode.withgoogle.com/programs/2026/projects/9wY1QssZ&#34;&gt;co-mentoring a student&lt;/a&gt; for GSoC again this year. Last week, we submitted&#xA;his mid-term evaluation and he&amp;rsquo;s good to go for the rest of the GSoC period.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s been an interesting experience mentoring this year, with Zulip maintainers&#xA;allowing and encouraging students to use LLMs for their work. There&amp;rsquo;s a&#xA;detailed AI usage policy here for all contributors, but I think the current&#xA;breed of LLM agents make it easy to fall into the trap of cedeing control to&#xA;them, and letting them drive you. It does need conscious effort from&#xA;contributors to wrestle with the problem they are working on and understand any&#xA;AI generated code well enough to critic, modify, explain and own it. We have&#xA;been trying our best to make sure my mentee doesn&amp;rsquo;t fall into those traps and&#xA;is making the time and space to be thoughtful and deliberate with their AI use.&lt;/p&gt;&#xA;&lt;p&gt;Also, I&amp;rsquo;ve applied to attend the mentor summit for the first time and I&amp;rsquo;ve been&#xA;accepted! If everything goes well, I&amp;rsquo;m hoping to attend the GSoC summit for the&#xA;first time, in October in Berlin!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!--list-separator--&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Home-built Websites for personal needs&lt;/p&gt;&#xA;&lt;p&gt;My fitness trainer has built a website for himself using Lovable and Claude!&#xA;The idea is to ease his workflows to track the progress of everyone who trains&#xA;at the gym (in person or virtually). I could tell at first glance that the&#xA;website is AI generated, but it&amp;rsquo;s pretty cool that he could make the time and&#xA;was able to build something for himself.&lt;/p&gt;&#xA;&lt;p&gt;A couple of weeks ago, an architect friend reached out to me to have a chat&#xA;about a new SaaS startup that she&amp;rsquo;s working on with a friend to help improve&#xA;the workflows for architects to go from first draft sketches to proper&#xA;plans/models. She has a couple of CS students/interns who are &amp;ldquo;vibe-coding&amp;rdquo; the&#xA;first version of their app. They are also training some models for the&#xA;transformation, I believe.&lt;/p&gt;&#xA;&lt;p&gt;Whatever qualms and complaints I have about the use of LLMs for knowledge work&#xA;and all the current buzz and hype around it, I enjoy stories like these of it&#xA;empowering people to build things they need to improve their workflows. I also&#xA;enjoyed &lt;a href=&#34;https://news.ycombinator.com/item?id=48449187&#34;&gt;this thread&lt;/a&gt; (somewhat old, now) from Hacker News of people sharing what&#xA;they are building with LLMs.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!--list-separator--&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ads on Instagram - BBC Documentary&lt;/p&gt;&#xA;&lt;p&gt;I watched this &lt;a href=&#34;https://www.youtube.com/watch?v=6-y726qvZ6Q&#34;&gt;BBC documentary&lt;/a&gt; on how Instagram allows ads promoting child&#xA;abuse. Sadly, I&amp;rsquo;m not surprised by everything that the documentary explained.&#xA;I&amp;rsquo;ve previously come across ads that are phishing scams, crypto scams, etc.,&#xA;and it didn&amp;rsquo;t look like Meta was doing anything to prevent such ads. I wasn&amp;rsquo;t&#xA;surprised to learn that they don&amp;rsquo;t seem to be doing much in this case too. I&#xA;don&amp;rsquo;t think these problems are unsolvable if these platforms care to take&#xA;responsibility, given the tech available today.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!--list-separator--&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Video on the discovery of Nitroplasts&lt;/p&gt;&#xA;&lt;p&gt;I watched &lt;a href=&#34;https://youtu.be/g9B3gBhcwqM&#34;&gt;this video&lt;/a&gt; shared by Chaitu on nitroplasts, the organelle that lets&#xA;Eukaryotes fix atmospheric nitrogen into ammonia. Until this recent discovery,&#xA;it was thought that only Bacteria and Prokaryotes can do this, and this is the&#xA;first instance of an algae (&lt;em&gt;Braarudosphaera bigelowii&lt;/em&gt;) that seemed to have&#xA;&amp;ldquo;engulfed&amp;rdquo; a bacteria that can do this, which eventually turned into an&#xA;organelle (similar to the evolution of mitochondria). This seems like a much&#xA;more recent evolution than mitochondria and chloroplasts and possible provides&#xA;a window into how such organelles get formed. And studying nitroplasts in&#xA;Bigelowii could lead to research that could reduce our dependence on synthetic&#xA;fertilizers, for instance.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!--list-separator--&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Sid&amp;rsquo;s birthday&lt;/p&gt;&#xA;&lt;p&gt;We attended Sid&amp;rsquo;s (nephew) 4th birthday. This was his first birthday after his&#xA;little sister was born. He was so excited by all the toys he got, but also&#xA;wasn&amp;rsquo;t expecting any of us to bring gifts for his sister. He wanted them all,&#xA;but understood on adults explaining it.&lt;/p&gt;&#xA;&lt;p&gt;I like how he was cautiously sharing his new toys with her too. He got a new&#xA;robot which dances with lights and music to Indian songs. He understandably&#xA;didn&amp;rsquo;t want to share it. It had enough moving parts and seemed breakable in his&#xA;little sister&amp;rsquo;s hands. His dad tried to explain that his sister is playing with&#xA;it carefully, and he kept repeating &amp;ldquo;Of course, she will break it!&amp;rdquo;, until he&#xA;saw that this line of argument wasn&amp;rsquo;t working. He came back later saying, &amp;ldquo;It&#xA;is too bright for her&amp;rdquo; (with all the lights that glitter).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!--list-separator--&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Carnatic Cafe&lt;/p&gt;&#xA;&lt;p&gt;I usually avoid eating out at South Indian restaurants in Delhi, but in&#xA;solidarity with Chaitu who ate at a couple of Indian restaruants after we left&#xA;from his place in Vienna, we ended up eating in Carnatic Cafe. I found the Vada&#xA;in Vienna to be better than here, but the Rava Masala Onion Dosa was great!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!--list-separator--&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Penguin Bookfair by Hubhawks&lt;/p&gt;&#xA;&lt;p&gt;We attended the &lt;a href=&#34;https://www.instagram.com/p/Dahu4qZS6Eo/&#34;&gt;Penguin Book Fair by Hubhawks&lt;/a&gt;. I wasn&amp;rsquo;t aware it had a &amp;ldquo;Buy by&#xA;the bag&amp;rdquo; pricing. The available selection of the books didn&amp;rsquo;t seem compelling&#xA;enough to spend more than a few minutes in the small hall filled to the brim&#xA;with people. Many of whom were trying to fill up their bags to the brim, err..&#xA;I mean the zipper, to make the most of the pricing model but &lt;a href=&#34;https://www.reddit.com/r/delhi/comments/1usupo3/buyer_beware_my_bitterly_disappointing_experience/&#34;&gt;frustrated by it&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>GitHub Gists from Emacs Orgmode</title>
      <link>https://punchagan.muse-amuse.in/blog/ox-gist/</link>
      <pubDate>Tue, 26 Apr 2022 12:37:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/ox-gist/</guid>
      <description>&lt;p&gt;TL;DR: I released my first Emacs MELPA package &amp;ndash; &lt;a href=&#34;https://melpa.org/#/ox-gist&#34;&gt;ox-gist&lt;/a&gt; &amp;ndash; An Orgmode backend&#xA;to export and update sub-trees and buffers to GitHub gists.  It was a great&#xA;experience contributing to MELPA.&lt;/p&gt;&#xA;&lt;h2 id=&#34;motivation&#34;&gt;Motivation&lt;/h2&gt;&#xA;&lt;p&gt;I often share bits and pieces of my &lt;code&gt;journal.org&lt;/code&gt; file with others, mostly for&#xA;reading, some times for comments. The file contains different subtrees for each&#xA;day with subtrees for different topics, meetings, articles, etc.&lt;/p&gt;&#xA;&lt;p&gt;Orgmode lets you export subtrees to specific file names using the&#xA;&lt;code&gt;EXPORT_FILE_NAME&lt;/code&gt; property (and &lt;code&gt;FILE_NAME&lt;/code&gt; buffer export option when&#xA;exporting full buffers). It is easy to create these exported files on a&#xA;publicly accessible webserver using the power of &lt;a href=&#34;https://www.gnu.org/software/tramp/&#34;&gt;Emacs TRAMP mode&lt;/a&gt;.  For&#xA;instance, I often set the property to some thing like&#xA;&lt;code&gt;/ssh:muse-amuse.in:~/public_html/&amp;lt;filename&amp;gt;&lt;/code&gt; to publish stuff.&lt;/p&gt;&#xA;&lt;p&gt;But, exporting to HTML is a distraction some times because I start fiddling&#xA;with CSS and styling. Exporting to a simple org file doesn&amp;rsquo;t seem to cut it&#xA;because there&amp;rsquo;s no styling at all, and making longer exports hard to read in a&#xA;web-browser.  Exporting to a GitHub Gist is a nice middle ground because GitHub&#xA;renders Orgmode files reasonably well. Additionally, the comment functionality&#xA;is pretty handy.&lt;/p&gt;&#xA;&lt;p&gt;I could also directly use &lt;a href=&#34;https://github.com/defunkt/&#34;&gt;@defunkt&lt;/a&gt;&amp;rsquo;s excellent &lt;a href=&#34;https://github.com/defunkt/gist.el&#34;&gt;&lt;code&gt;gist.el&lt;/code&gt;&lt;/a&gt; to share stuff as&#xA;Gists.  I&amp;rsquo;ve used it in the past, and it works well when I don&amp;rsquo;t care about&#xA;having the contents of the Gist locally on my machine. It&amp;rsquo;s also quite easy to&#xA;update existing/old Gists in this scenario, since there&amp;rsquo;s a single &amp;ldquo;source of&#xA;truth&amp;rdquo; and &lt;code&gt;gist.el&lt;/code&gt; makes it quite easy to update Gists.&lt;/p&gt;&#xA;&lt;p&gt;But, this isn&amp;rsquo;t good enough when I want to have a &amp;ldquo;synced&amp;rdquo; copy of the text on&#xA;my machine.  Also, it doesn&amp;rsquo;t work very well when I want to share just a&#xA;subtree from my notes file, and not the entire file.  I&amp;rsquo;ve to export the&#xA;subtree to a temporary Orgmode buffer and then create a Gist from that buffer.&lt;/p&gt;&#xA;&lt;h2 id=&#34;hackish-wrapper-around-gist-dot-el&#34;&gt;Hackish wrapper around &lt;code&gt;gist.el&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;A couple or so years ago, I wrote a wrapper around &lt;code&gt;gist.el&lt;/code&gt; to let me post&#xA;Orgmode subtrees as a Gist and also update them when I edited these subtrees&#xA;locally.  There was no support for exporting entire buffers since that wasn&amp;rsquo;t&#xA;my use-case.  This wrapper code was just a part of my &lt;code&gt;.emacs&lt;/code&gt; and worked&#xA;reasonably well for me.&lt;/p&gt;&#xA;&lt;p&gt;A few weeks ago, I ended up procrastinating on writing and sharing notes for a&#xA;discussion with a friend, and extracted this wrapper as a separate package &amp;ndash;&#xA;&lt;code&gt;org2gist&lt;/code&gt; &amp;ndash; to make it easy for other people to use.&lt;/p&gt;&#xA;&lt;h2 id=&#34;melpa-submission-and-feedback&#34;&gt;MELPA submission and feedback&lt;/h2&gt;&#xA;&lt;p&gt;I &lt;a href=&#34;https://github.com/melpa/melpa/pull/7940&#34;&gt;submitted&lt;/a&gt; this as a package to &lt;a href=&#34;https://melpa.org/&#34;&gt;MELPA&lt;/a&gt; while being skeptical about whether it&#xA;would be accepted.  I wasn&amp;rsquo;t sure if my thin wrapper around &lt;code&gt;gist.el&lt;/code&gt; would&#xA;meet MELPA&amp;rsquo;s criteria for a &amp;ldquo;Reasonably innovative package&amp;rdquo;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;MELPA provides a curated set of Emacs Lisp packages, not an exhaustive list&#xA;of every single Emacs Lisp file ever created. By default, MELPA maintainers&#xA;will reject packages that duplicate functionality provided by existing&#xA;packages. Please try to improve existing packages instead of creating new&#xA;ones when possible.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;It was a pleasant surprise to get very helpful reviews from the MELPA&#xA;maintainers.  They not only thought the package was good enough to include in&#xA;MELPA, but also looked at it&amp;rsquo;s code and gave great feedback &amp;mdash; not just basic&#xA;quality checks before accepting the package into MELPA.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m pretty sure mainting a package repository like MELPA is a lot of work, but&#xA;as an end-user it mostly just worked for me and I never really gave it much&#xA;thought.  It was eye-opening to submit the package to MELPA and see first-hand&#xA;the care and effort the maintainers put into what goes into the repository.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/riscy/&#34;&gt;@riscy&lt;/a&gt; (a MELPA maintainer) &lt;a href=&#34;https://github.com/melpa/melpa/pull/7940#issuecomment-1080036663&#34;&gt;suggested&lt;/a&gt; a different approach that I hadn&amp;rsquo;t&#xA;thought of &amp;mdash; turning the wrapper into an &lt;a href=&#34;https://orgmode.org/manual/Exporting.html&#34;&gt;Orgmode Export backend&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;current-version-ox-gist&#34;&gt;Current version: &lt;code&gt;ox-gist&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;It turned out to be a great idea which I ended up implementing.  The user&#xA;interface became much cleaner, since it used the Orgmode Export UI.  And it&#xA;also forced me to &amp;ldquo;complete&amp;rdquo; the feature-set by adding support for exporting&#xA;entire Orgmode buffers to GitHub Gists, not just subtrees.&lt;/p&gt;&#xA;&lt;p&gt;The package now adds an Orgmode export backend that lets you export a subtree&#xA;or the whole buffer as a GitHub Gist, similar to how you&amp;rsquo;d export to HTML or&#xA;LaTeX from Orgmode. The GitHub Gist ID is saved for each exported buffer or&#xA;subtree and is to update a Gist when re-exporting an already exported subtree&#xA;or buffer.&lt;/p&gt;&#xA;&lt;h2 id=&#34;outro&#34;&gt;Outro&lt;/h2&gt;&#xA;&lt;p&gt;The package has now been added to MELPA as &lt;a href=&#34;https://github.com/punchagan/ox-gist&#34;&gt;&lt;code&gt;ox-gist&lt;/code&gt;&lt;/a&gt;.  Feel free to give it a&#xA;spin and give feedback directly to me or on the &lt;a href=&#34;https://github.com/punchagan/ox-gist/issues&#34;&gt;issue tracker&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t know if anyone else would find the package useful and use it, though,&#xA;MELPA tells me that 20-odd people atleast downloaded it.  I&amp;rsquo;m happy this code&#xA;may be to a handful of people.&lt;/p&gt;&#xA;&lt;p&gt;Also, I now have a new found appreciation for MELPA and the work put into it by&#xA;the maintainers.  I&amp;rsquo;m glad I took the time out to submit this package to MELPA.&lt;/p&gt;&#xA;&lt;div style=&#34;font-size:small;&#34; class=&#34;reviewers&#34;&gt;&#xA;&lt;p&gt;Thanks to &lt;a href=&#34;http://baali.muse-amuse.in&#34;&gt;Shantanu&lt;/a&gt; for reading drafts and helping me restructure this post.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Clock in and get-shit-done</title>
      <link>https://punchagan.muse-amuse.in/blog/clock-in-and-get-shit-done/</link>
      <pubDate>Tue, 22 Dec 2015 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/clock-in-and-get-shit-done/</guid>
      <description>&lt;p&gt;I had &lt;a href=&#34;./simple-org-clock-and-gnomepidgin-integration.html&#34;&gt;setup&lt;/a&gt; a couple of hooks about an year ago that turn off all notifications&#xA;while I&amp;rsquo;m clocking in. But, I find myself switching to the browser and jumping&#xA;to twitter, out of habit.  I&amp;rsquo;ve tried &lt;a href=&#34;https://github.com/leftnode/get-shit-done&#34;&gt;get-shit-done&lt;/a&gt; in the past to help myself&#xA;break this habit. But enabling get-shit-done manually is step that quickly&#xA;became a non-habit.&lt;/p&gt;&#xA;&lt;p&gt;So, I hooked up get-shit-done into an &lt;code&gt;org-clock-in-hook&lt;/code&gt;.  The snippet below&#xA;is what I added into a function that is added to this hook.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;with-temp-buffer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/sudo::/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shell-command&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;HOME=/home/punchagan get-shit-done work&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;get-shit-done&lt;/code&gt; needs to be run as &lt;code&gt;root&lt;/code&gt;, since it does things like modifying&#xA;&lt;code&gt;/etc/hosts&lt;/code&gt; and restarting networking.  Just calling &lt;code&gt;get-shit-done&lt;/code&gt; as a&#xA;shell command fails with the error &lt;code&gt;sudo: no tty present and no askpass program specified&lt;/code&gt;.  I found a couple of ways to fix this. The snippet above&#xA;piggy-backs on tramp to allow for a way to enter the password for &lt;code&gt;sudo&lt;/code&gt; to&#xA;use. This also means that I don&amp;rsquo;t need to enter the password, as long as the&#xA;tramp connection is alive.&lt;/p&gt;&#xA;&lt;p&gt;For someone worried about having such an easy way of running something as&#xA;&lt;code&gt;root&lt;/code&gt;, using something like &lt;code&gt;gnome-ssh-askpass&lt;/code&gt; as the askpass program might&#xA;work better.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shell-command&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;SUDO_ASKPASS=\&amp;#34;/usr/lib/openssh/gnome-ssh-askpass\&amp;#34; get-shit-done work&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>org-drill for making it stick!</title>
      <link>https://punchagan.muse-amuse.in/blog/org-drill-for-making-it-stick/</link>
      <pubDate>Sat, 17 Jan 2015 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/org-drill-for-making-it-stick/</guid>
      <description>&lt;p&gt;Those who read the &lt;a href=&#34;https://punchagan.muse-amuse.in/posts/learning-to-use-org-drill.html&#34;&gt;last&lt;/a&gt; &lt;a href=&#34;https://punchagan.muse-amuse.in/posts/learning-about-spaced-repetition-supermemo-org-drill-et-al.html&#34;&gt;few&lt;/a&gt; &lt;a href=&#34;https://punchagan.muse-amuse.in/posts/more-input-sources-for-org-drill.html&#34;&gt;posts&lt;/a&gt; here, would know that I have been&#xA;experimenting with &lt;a href=&#34;http://orgmode.org/worg/org-contrib/org-drill.html&#34;&gt;org-drill&lt;/a&gt; (a spaced repetition extension to &lt;a href=&#34;http://orgmode.org/&#34;&gt;Org mode&lt;/a&gt;).  I&#xA;have been using the system (almost) religiously for the past 2 months, and I do&#xA;find that it has helped a great deal! (in some respects).  I have also spent a&#xA;considerable amount of time trying to reduce the friction to put new stuff into&#xA;the system, and am constantly on the look out for further improvements.&lt;/p&gt;&#xA;&lt;p&gt;Using this system has definitely helped with retention, and I find that I can&#xA;recall quite a few things I have read a few weeks ago, that I would normally&#xA;have been unable to. Though, I can recall a lot of information, I have been&#xA;having a feeling of &amp;ldquo;fragmentation&amp;rdquo;: the feeling of just retaining individual&#xA;bits/fragments of information, while losing out on actually internalizing the&#xA;knowledge; not seeing the big picture, etc.&lt;/p&gt;&#xA;&lt;p&gt;Wozniak (the author of super-memo) &lt;a href=&#34;http://www.supermemo.com/articles/20rules.htm&#34;&gt;warns against&lt;/a&gt; learning without&#xA;understanding, and memorizing before actually learning stuff.  I haven&amp;rsquo;t&#xA;consciously added stuff into the system that I didn&amp;rsquo;t understand (when I added&#xA;it), but, later it does feel like I have lost some connections or the&#xA;understanding, and am only holding onto the fragments of information.&lt;/p&gt;&#xA;&lt;p&gt;The problems as explained in (read: as interpreted by me from) &lt;a href=&#34;http://www.amazon.com/Make-Stick-Science-Successful-Learning/dp/0674729013/ref=sr_1_1/188-6768042-2821103?ie=UTF8&amp;amp;qid=1421439099&amp;amp;sr=8-1&amp;amp;keywords=make+it+stick&amp;amp;pebp=1421439103302&amp;amp;peasin=674729013&#34;&gt;Make it Stick&lt;/a&gt;&#xA;appear to be:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;The understanding (if any) at the time of adding stuff into the&#xA;spaced-repetition system is untested.  It may just be familiarity&#xA;masquerading as understanding.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;The lack of any spaced repetitions for the overall concept/understanding and&#xA;actual repetitions only for individual bits doesn&amp;rsquo;t help retention of the&#xA;understanding (even if there was any, in the first place).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;To work around this, I&amp;rsquo;m going to try adding questions that test understanding,&#xA;to the system.  The Super-memo team strongly recommends keeping the drill items&#xA;small and easy to answer.  This may be helpful in keeping each drill session&#xA;short, but I would really like to add conceptual questions to the system, and&#xA;see how it goes. I hacked &lt;code&gt;org-drill&lt;/code&gt; to allow me to type out answers, before&#xA;looking at the &amp;ldquo;correct&amp;rdquo; ones.  This is an adaptation of a system that a fellow&#xA;Hacker Schooler uses, and shared.  Also, hopefully forcing myself to type out&#xA;the answer will help me get around the problem of sometimes saying &amp;ldquo;yeah I know&#xA;that&amp;rdquo;, then looking at the answer only to reaffirm the feeling of familiarity,&#xA;rather than actually testing myself.  I&amp;rsquo;m still going to continue adding quick&#xA;and short questions that test &amp;ldquo;bits of information&amp;rdquo;, though. But, hopefully the&#xA;additional conceptual questions are going to tie things together and help fill&#xA;in the gaps.  Lets see how this goes!&lt;/p&gt;&#xA;&lt;p&gt;For those interested, my hacks to &lt;code&gt;org-drill&lt;/code&gt; below.  The code is really a&#xA;hack, and welcome any suggestions on cleaning up the code.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;advice-add&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-drill-presentation-prompt&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:around&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;pc/org-drill-presentation-prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pc/org-drill-presentation-prompt&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;old-fun&lt;/span&gt; &lt;span class=&#34;kp&#34;&gt;&amp;amp;rest&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;fmt-and-args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;A presentation prompt that allows capturing answers.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cb&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;current-buffer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;heading&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nth&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-heading-components&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;entry-id&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-entry-get&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;input&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;switch-to-buffer-other-window&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;*org-capture-drill-answer*&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;insert&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;# Hit C-c C-c once you are done answering!\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-insert-heading-respect-content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;insert&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;format&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Answer: %s&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;heading&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-entry-put&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;QUESTION_ID&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;entry-id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;goto-char&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point-max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;insert&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;  &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-time-stamp-inactive&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;insert&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;\n\n  &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;input&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;equal&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;input&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;ignore-errors&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;execute-kbd-macro&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;input&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;read-key-sequence&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;switch-to-buffer-other-window&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;apply&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;old-fun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;fmt-and-args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;advice-add&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-drill-reschedule&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:around&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;pc/org-drill-reschedule&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pc/org-drill-reschedule&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;old-fun&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;Calls the original reschedule, but also archives the answer&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;prog1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;funcall&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;old-fun&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cb&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;current-buffer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;switch-to-buffer-other-window&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;*org-capture-drill-answer*&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;pc/org-refile-to-datetree&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;drill.org_archive&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;buffer-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;switch-to-buffer-other-window&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;kill-buffer&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;*org-capture-drill-answer*&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-datetree&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pc/org-refile-to-datetree&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;Refile an entry to journal file&amp;#39;s date-tree&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;fRefile to: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;expand-file-name&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;date-string&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-entry-get&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;TIMESTAMP_IA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-entry-get&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;TIMESTAMP&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dct&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;decode-time&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;date-string&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-time-string-to-time&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;date-string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                               &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;current-time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;date&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nth&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;dct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nth&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;dct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nth&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;dct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-cut-subtree&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;with-current-buffer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;find-buffer-visiting&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                             &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;find-file-noselect&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;save-excursion&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-datetree-file-entry-under&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;current-kill&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;bookmark-set&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;org-refile-last-stored&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Refiled to %s&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>How I learnt to use Emacs&#39; profiler</title>
      <link>https://punchagan.muse-amuse.in/blog/how-i-learnt-to-use-emacs-profiler/</link>
      <pubDate>Sat, 03 Jan 2015 02:01:17 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/how-i-learnt-to-use-emacs-profiler/</guid>
      <description>&lt;p&gt;I learnt to use Emacs&amp;rsquo; profiler yesterday, after many hours of yak-shaving,&#xA;trying to get &lt;a href=&#34;https://github.com/novoid/Memacs&#34;&gt;Memacs&lt;/a&gt; working.  Memacs is a &lt;a href=&#34;http://en.wikipedia.org/wiki/Memex&#34;&gt;memory extension&lt;/a&gt; system for Emacs&#xA;written by Karl Voit, that I have been meaning to try out for a long time now.&#xA;Seeing lots of review posts at the turn of the year and watching Karl&amp;rsquo;s recent&#xA;&lt;a href=&#34;http://emacslife.com/emacs-chats/chat-karl-voit.html&#34;&gt;Emacs Chat with Sacha Chua&lt;/a&gt; pushed me to try and finally set it up.&lt;/p&gt;&#xA;&lt;p&gt;I started writing a &lt;a href=&#34;https://github.com/punchagan/Memacs/blob/chrome/memacs/chromium.py&#34;&gt;module&lt;/a&gt; to create a Memacs file &amp;ndash; an org archive file &amp;ndash;&#xA;from my browser history.  It was pretty easy to write, and I had it spitting&#xA;out a huge file with 22k entries after about a couple of hours of work.  Then I&#xA;excitedly pulled up my agenda, and turned on the option to view archived&#xA;entries, only to be super-disappointed.  It turned out to be extremely slow!&#xA;Actually, the agenda never came up with the 22k entries file that I had. At&#xA;least not in 5 or so minutes, before I got impatient.  The performance was&#xA;unacceptable even when I reduced it to 5k entries.&lt;/p&gt;&#xA;&lt;p&gt;I was pretty sure it wasn&amp;rsquo;t that slow for Karl in his &lt;a href=&#34;https://www.youtube.com/watch?v=SaKPr4J0K2I#t=999&#34;&gt;demo&lt;/a&gt; and &lt;a href=&#34;https://twitter.com/punchagan/status/550723377871065088&#34;&gt;tweeted&lt;/a&gt; to him,&#xA;asking for a workaround. Meanwhile, I looked at his dot-emacs, but wasn&amp;rsquo;t able&#xA;to dig out what was needed to speed up things. He confirmed that his&#xA;performance was way better than what I was getting.&lt;/p&gt;&#xA;&lt;p&gt;First, I ruled out the possibility of it being because of the SSD, since&#xA;clearly my CPU usage was peaking, and the task was CPU bound and not I/O.&#xA;Next, I tried using the same file on a different machine (with a different&#xA;version of Emacs and org-mode), and it worked blazingly fast.  So, it was&#xA;either the version of Emacs or org-mode that I was using.&lt;/p&gt;&#xA;&lt;p&gt;I should have stopped, thought clearly, and started experimenting with org&#xA;version, but hindsight is 20-20.  I tried Ubuntu&amp;rsquo;s pre-built Emacs and agendas&#xA;were fast!  I suspected my Emacs build, since I recently started building Emacs&#xA;from git.  I built two or three other versions of Emacs, and wasted a lot of&#xA;time, before realizing that I wasn&amp;rsquo;t using the org-mode source bundled inside&#xA;Emacs for the tests, and there were two &amp;ldquo;independent&amp;rdquo; variables.&lt;/p&gt;&#xA;&lt;p&gt;Finally, I began bisecting org-mode&amp;rsquo;s source and found that all hell broke&#xA;loose with an &lt;a href=&#34;http://orgmode.org/w/?p=org-mode.git;a=commitdiff;h=b88c5464db2cb0d90d4f30e43b5e08d2b1c1fcea;hp=8cc4e09950594b2abec2502e9218318570595ac5&#34;&gt;inconspicuous change&lt;/a&gt; around release 8.2.6.  It turns out that&#xA;org-overview was broken before this, and collapsing all the trees in a newly&#xA;opened org-buffer (default option) wasn&amp;rsquo;t working. Once this bug was fixed,&#xA;opening huge org files would slow down by a great deal, in turn causing agenda&#xA;generation to be unbearably slow.&lt;/p&gt;&#xA;&lt;p&gt;All I had to do was add a &lt;code&gt;#+STARTUP: showeverything&lt;/code&gt; to the top of the file.&#xA;This speeded up things by about 50 times!  It turns out, I later found out,&#xA;that all of this is documented on &lt;a href=&#34;http://orgmode.org/worg/agenda-optimization.html&#34;&gt;Worg&lt;/a&gt;. I did try a few search engine queries,&#xA;but sadly none of them brought this up.  Adding the following to my config,&#xA;speeded up agenda generation by about 150-200 times!&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-agenda-inhibit-startup&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; ~50x speedup&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-agenda-use-tag-inheritance&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; 3-4x speedup&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the course of all this debugging, I learnt how to use Emacs&amp;rsquo; profiler.  The&#xA;profile reports along with git bisect, eventually helped me figure out what the&#xA;problem was.&lt;/p&gt;&#xA;&lt;p&gt;To profile the CPU usage, all you have to do is add a call like&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;profiler-start&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;cpu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;;; or M-x profiler-start&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;at the place where you wish to start it.  Emacs will then start collecting&#xA;information about where time is being spent, by sampling every&#xA;&lt;code&gt;sampling-interval&lt;/code&gt; seconds (default 10^6 nanoseconds = 1 milli second).&lt;/p&gt;&#xA;&lt;p&gt;You can view the information being collected, at any point of time using&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;profiler-report&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; or M-x profiler-report&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The report is a nice, interactive tree with the percentage of time spent in&#xA;each call. You can stop profiling by calling &lt;code&gt;(profiler-stop)&lt;/code&gt;.  If you have&#xA;more than one report, you can compare them by hitting &lt;code&gt;=&lt;/code&gt; in one of the report&#xA;buffers.  I&amp;rsquo;m definitely going to use this for other things! (like speeding up&#xA;my startup?)&lt;/p&gt;&#xA;&lt;p&gt;Now that I have Memacs working with reasonably fast agenda views, I&amp;rsquo;m looking&#xA;forward to collecting as much personal information as I can!  Thanks Karl for&#xA;writing Memacs.  I am going to be a pretty heavy user, I think!  There seem to&#xA;be a few rough edges, though, and I hope to help smoothen them out a little&#xA;bit, over the next few weeks.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>More input sources for org-drill</title>
      <link>https://punchagan.muse-amuse.in/blog/more-input-sources-for-org-drill/</link>
      <pubDate>Tue, 04 Nov 2014 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/more-input-sources-for-org-drill/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been trying to use &lt;code&gt;org-drill&lt;/code&gt; regularly for the last few weeks.  I don&amp;rsquo;t&#xA;know how well it&amp;rsquo;s been going but I have been sticking to the routine&#xA;religiously.  I haven&amp;rsquo;t yet really tried out incremental reading, but in an&#xA;attempt to make it as easy as possible, I wanted to have a pdf-reader&#xA;integration, and some kind of integration with Kindle highlights.  Browser&#xA;integration is pretty straight-forward, thanks to some &lt;a href=&#34;http://orgmode.org/worg/org-contrib/org-protocol.html#sec-6&#34;&gt;simple java-script&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I looked for a pdf-reader with some sort of plugin support, but I found nothing&#xA;in Evince or Okular.  I thought about &lt;code&gt;pdfjs&lt;/code&gt; but it seemed slightly clunky to&#xA;open pdfs in a browser, though I might shift to this if I don&amp;rsquo;t like what I&#xA;finally ended up with.  Good old &lt;code&gt;xpdf&lt;/code&gt; seemed to be the only pdf reader that&#xA;had some support for custom keybindings that allowed users to run external&#xA;commands.  With a &lt;a href=&#34;https://github.com/punchagan/dot-emacs/blob/master/xpdf-capture&#34;&gt;little Python&lt;/a&gt;, I was able to setup a work-flow to capture&#xA;snippets from &lt;code&gt;xpdf&lt;/code&gt;, to add to org-drill. Custom key-bindings somehow don&amp;rsquo;t&#xA;seem to work on &lt;code&gt;xpdf&lt;/code&gt; bundled on Ubuntu. So, I ended up downloading and using&#xA;the binary available on the xpdf site.&lt;/p&gt;&#xA;&lt;p&gt;For Kindle highlights support, with minor updates to Thamer Mahmoud&amp;rsquo;s &lt;a href=&#34;https://github.com/punchagan/clip2org&#34;&gt;clip2org&lt;/a&gt;,&#xA;I have a simple way of getting all the &amp;ldquo;new&amp;rdquo; clippings/highlights as org-drill&#xA;headlines.  I haven&amp;rsquo;t really started using this, and once I do, I may end-up&#xA;automating even the merging of these items into the org-drill notes file.  I&amp;rsquo;m&#xA;looking forward to making better use of my Kindle, with this feature!&lt;/p&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t know if it would be useful to have more context information like&#xA;section titles/chapter titles when capturing from html/pdf, but it seems like&#xA;an interesting problem to try to solve.&lt;/p&gt;&#xA;&lt;p&gt;Also, it might be easier(?) if I probably tried to have a DE level keybinding, and&#xA;some code to get selection and file name of the currently active&#xA;window/application.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Simple org-clock and gnome/pidgin integration</title>
      <link>https://punchagan.muse-amuse.in/blog/simple-org-clock-and-gnomepidgin-integration/</link>
      <pubDate>Wed, 22 Oct 2014 16:43:35 -0400</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/simple-org-clock-and-gnomepidgin-integration/</guid>
      <description>&lt;p&gt;&lt;strong&gt;See update &lt;a href=&#34;#orge999abb&#34;&gt;below&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;I have been trying to get back to using org-mode and its clocking&#xA;functionality, more often than not.  I used to use it a lot, a few years ago,&#xA;and haven&amp;rsquo;t been using it, since I had been in my last job.&lt;/p&gt;&#xA;&lt;p&gt;To help with it, I decided to integrate clocking in and out with changing&#xA;status on Pidgin, and turning notifications on and off in Gnome.  Here&amp;rsquo;s a few&#xA;lines of code that does this for me.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defadvice&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-clock-in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;after&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pc/org-clock-in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kp&#34;&gt;&amp;amp;optional&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;select&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;start-time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;Turn gnome notifications off.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dbus-send-signal&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;nb&#34;&gt;:session&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;org.gnome.SessionManager&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;/org/gnome/SessionManager/Presence&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;org.gnome.SessionManager.Presence&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;SetStatus&amp;#34;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shell-command&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;purple-remote setstatus?status=unavailable&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defadvice&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-clock-out&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;after&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pc/org-clock-out&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kp&#34;&gt;&amp;amp;optional&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;switch-to-state&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;fail-quietly&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;at-time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;Turn gnome notifications back on.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dbus-send-signal&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;nb&#34;&gt;:session&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;org.gnome.SessionManager&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;/org/gnome/SessionManager/Presence&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;org.gnome.SessionManager.Presence&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;SetStatus&amp;#34;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shell-command&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;purple-remote setstatus?status=available&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;update-span-class-timestamp-wrapper-span-class-timestamp-and-lt-2014-11-01-sat-and-gt-span-span&#34;&gt;Update &lt;span class=&#34;timestamp-wrapper&#34;&gt;&lt;span class=&#34;timestamp&#34;&gt;&amp;lt;2014-11-01 Sat&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://baali.muse-amuse.in&#34;&gt;@baali&lt;/a&gt; tried to use my code, and it turns out it didn&amp;rsquo;t work for him, because I&#xA;forgot to mention that &lt;code&gt;(ad-activate &#39;org-clock-in)&lt;/code&gt; needs to be run, after the&#xA;&lt;code&gt;defadvice&lt;/code&gt; code.  I have no idea how it worked for me, without doing that.&#xA;May be because I have &lt;code&gt;defadvice&lt;/code&gt; for other functions?&lt;/p&gt;&#xA;&lt;p&gt;Also, while debugging this, I found that &lt;code&gt;defadvice&lt;/code&gt; is a deprecated way of&#xA;doing this, and &lt;code&gt;add-function&lt;/code&gt; is the way to go now.  But, instead of advising&#xA;the function, I decided to make use of &lt;code&gt;org-clock-in-hook&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Here is the new code.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pc/turn-off-notifications&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;Turn gnome notifications off.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dbus-send-signal&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;nb&#34;&gt;:session&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;org.gnome.SessionManager&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;/org/gnome/SessionManager/Presence&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;org.gnome.SessionManager.Presence&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;SetStatus&amp;#34;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shell-command&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;purple-remote setstatus?status=unavailable&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pc/turn-on-notifications&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;Turn gnome notifications back on.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dbus-send-signal&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;nb&#34;&gt;:session&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;org.gnome.SessionManager&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;/org/gnome/SessionManager/Presence&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;org.gnome.SessionManager.Presence&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;SetStatus&amp;#34;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shell-command&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;purple-remote setstatus?status=available&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-clock-in-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;pc/turn-off-notifications&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-clock-out-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;pc/turn-on-notifications&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Learning to use Org-drill</title>
      <link>https://punchagan.muse-amuse.in/blog/learning-to-use-org-drill/</link>
      <pubDate>Tue, 14 Oct 2014 00:07:04 -0400</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/learning-to-use-org-drill/</guid>
      <description>&lt;p&gt;Org-drill is an Org-mode extension that provides spaced-repetition and&#xA;flash-card functionality.  It has a &lt;a href=&#34;http://orgmode.org/worg/org-contrib/org-drill.html&#34;&gt;wonderful documentation on Worg&lt;/a&gt;, but&#xA;somehow I couldn&amp;rsquo;t get myself to read the whole document, and setup org-drill,&#xA;until now.&lt;/p&gt;&#xA;&lt;p&gt;The setup is quite straight forward, once you have org-mode along with the&#xA;&lt;code&gt;contrib&lt;/code&gt; packages.  Just &lt;code&gt;(require &#39;org-drill)&lt;/code&gt;, and you are all set!  To add&#xA;a new card, all you need to do is add a &lt;code&gt;:drill:&lt;/code&gt; tag to the items you wish to&#xA;&amp;ldquo;Org-drill&amp;rdquo;.  You can start a review session with simply &lt;kbd&gt;M-x org-drill&lt;/kbd&gt;.  You&#xA;will be shown flash cards, and you can rate how correct and comfortable you&#xA;were, in answering the questions.  Based on your responses, the cards are&#xA;scheduled for review.  Start another review session, whenever you need one!&lt;/p&gt;&#xA;&lt;p&gt;What I could only understand once I got myself to read the whole document was&#xA;that:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;The default scope of a drill session is the current file.  But, you can start&#xA;sessions with scopes like current tree, current directory, or a specified&#xA;list of files. This is super-useful!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;The review sessions are not automatically scheduled, based on when you&#xA;schedule failed flash-cards.  Scheduling the review for a card only sets a&#xA;due-date for them, and effects, what you are asked in your next session.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cram mode and incremental reading are also things I want to try, as I go along.&lt;/p&gt;&#xA;&lt;p&gt;Happy Learning!&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Recurse Center, 2014-07-21</title>
      <link>https://punchagan.muse-amuse.in/recurse-center/recurse-center-2014-07-21/</link>
      <pubDate>Tue, 22 Jul 2014 10:46:29 -0400</pubDate>
      <guid>https://punchagan.muse-amuse.in/recurse-center/recurse-center-2014-07-21/</guid>
      <description>&lt;h2 id=&#34;yesterday&#34;&gt;Yesterday&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;It was exciting to have so many new Hacker Schoolers in the space.  But, the&#xA;excitement was kinda distracting too.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;I spent most of the day looking at shairport, and libshairport and trying to&#xA;wrap it, so I can use it to get data for the spectrum analyzer via the&#xA;Air-play protocol.  I was able to call it using &lt;code&gt;ctypes&lt;/code&gt;, but it doesn&amp;rsquo;t seem&#xA;discoverable.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;I also briefly looked at Julia and &lt;a href=&#34;http://dwm.suckless.org&#34;&gt;dwm&lt;/a&gt;, to try and port dwm to Julia.  It&#xA;doesn&amp;rsquo;t seem like too much work, but is going to take me a while given how&#xA;comfortable I&amp;rsquo;m with both Julia and C.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Yaron Minsky&amp;rsquo;s talk on distributed systems was a great introduction to&#xA;Distributed systems.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;After the talk, I spent a little time updating my notes from an old org-mode&#xA;workshop to present it at the emacs user group meet up today.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;today&#34;&gt;Today&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;I hope to get the spectrum analyzer to use &lt;code&gt;libshairport&lt;/code&gt; and be able to play&#xA;music sent through Air play.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Spend some time talking to the emacs user group about org-mode.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;If I have any time, after getting this to work, I may play around with the&#xA;dwm port.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Org based posts in Nikola</title>
      <link>https://punchagan.muse-amuse.in/blog/org-based-posts-in-nikola/</link>
      <pubDate>Sun, 20 Apr 2014 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/org-based-posts-in-nikola/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://binchen.org/&#34;&gt;Chen Bin&lt;/a&gt; asked me to share my Nikola+Org work-flow, and share an&#xA;example post.&lt;/p&gt;&#xA;&lt;p&gt;The org source for any post can be found by changing the URL of a post&#xA;from &lt;code&gt;.html&lt;/code&gt; to &lt;code&gt;.org&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t have much of a work-flow, because I don&amp;rsquo;t post too often, but&#xA;here is what I typically do, to make a new post.&lt;/p&gt;&#xA;&lt;p&gt;I start off by creating a new post using&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ nikola new_post&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and then give the post a title and start editing the post in Emacs.&lt;/p&gt;&#xA;&lt;p&gt;I have a simple snippet that lets me insert tags, based on existing&#xA;tags.&lt;/p&gt;&#xA;&lt;script src=&#34;https://gist.github.com/6629020.js&#34;&gt;&lt;/script&gt;&#xA;&lt;p&gt;Once I&amp;rsquo;m happy with the content of a post, I run &lt;code&gt;nikola auto&lt;/code&gt; to&#xA;build the source and serve it locally, and see if the post &amp;ldquo;looks&amp;rdquo;&#xA;reasonable, after being rendered.&lt;/p&gt;&#xA;&lt;p&gt;Once, I&amp;rsquo;m happy with it, I commit the post and deploy it using &lt;code&gt;nikola deploy&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I also have a plugin, that posts captured bookmarks and quotes onto&#xA;the blog, with a single command. I should probably make the sources of&#xA;my blog open, and push it onto GitHub.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update &lt;span class=&#34;timestamp-wrapper&#34;&gt;&lt;span class=&#34;timestamp&#34;&gt;[2015-05-13 Wed]&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;I use my own &lt;a href=&#34;https://plugins.getnikola.com/#orgmode&#34;&gt;plugin&lt;/a&gt; for Nikola which lets me write posts in org-mode.  There&#xA;is a similar &lt;a href=&#34;https://github.com/redguardtoo/org2nikola&#34;&gt;plugin&lt;/a&gt; by Chen Bin, that exports posts to intermediate html,&#xA;that is then used by Nikola.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;The source for my blog is now on &lt;a href=&#34;https://github.com/punchagan/punchagan.muse-amuse.in&#34;&gt;GitHub&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;I also have &lt;a href=&#34;https://github.com/punchagan/dot-emacs/blob/master/punchagan.org#nikola-stuff&#34;&gt;custom elisp&lt;/a&gt; to be able to make a new post, and deploy the site&#xA;from within Emacs.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Bookmarks and Quotes plugin</title>
      <link>https://punchagan.muse-amuse.in/blog/bookmarks-and-quotes-plugin/</link>
      <pubDate>Sat, 19 Oct 2013 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/bookmarks-and-quotes-plugin/</guid>
      <description>&lt;p&gt;I used to have a separate page for bookmarks and quotes on the old&#xA;blog.  They will now be shared as regular posts with 5 or more&#xA;bookmarks/quotes.  I use a bookmarklet in my browser to capture links&#xA;to an org-file using org-capture protocol and then I have a small&#xA;plugin to Nikola, that looks at such captured bookmarks and quotes and&#xA;makes new posts out of them.  This workflow is inspired by Brett&#xA;Trepestra&amp;rsquo;s &lt;a href=&#34;http://brettterpstra.com/2013/01/15/a-web-excursions-system-for-static-blogs/&#34;&gt;web excursions&lt;/a&gt; plugin.&lt;/p&gt;&#xA;&lt;p&gt;The plugin is currently a part of my blog source, and not published to&#xA;Nikola&amp;rsquo;s plugin repository since it is very specific to my setup.  But&#xA;if anybody is interested, I can publish the code somewhere public.&lt;/p&gt;&#xA;&lt;p&gt;If you are interested to get these links and bookmarks into your feed reader,&#xA;you can subscribe to their feed: [quotes], &lt;a href=&#34;https://punchagan.muse-amuse.in/tags/cat_bookmarks.xml&#34;&gt;bookmarks&lt;/a&gt;.  These posts will also&#xA;make it to the main feed, though.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;UPDATE &lt;span class=&#34;timestamp-wrapper&#34;&gt;&lt;span class=&#34;timestamp&#34;&gt;[2015-11-15 Sun 20:45]&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The quotes feed no longer exists!&lt;/li&gt;&#xA;&lt;li&gt;The bookmarks feed doesn&amp;rsquo;t really get too many updates. I use pinboard for my&#xA;bookmarks, now.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Blogging with Nikola and Org-mode</title>
      <link>https://punchagan.muse-amuse.in/blog/blogging-with-nikola-and-org-mode/</link>
      <pubDate>Wed, 16 Oct 2013 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/blogging-with-nikola-and-org-mode/</guid>
      <description>&lt;p&gt;Sigh! I made yet another change to the way this blog gets published.&#xA;But, I have a feeling this mechanism, is here to stay!&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;ve been using Nikola quite regularly for our &lt;a href=&#34;http://ultimatesport.in&#34;&gt;Ultimate site&lt;/a&gt;, and I&#xA;quite like it.  I&amp;rsquo;ve also contributed a bunch of features to Nikola to&#xA;get it to work the way I would like it to.  This weekend I ported my&#xA;blog from &lt;a href=&#34;https://github.com/renard/o-blog&#34;&gt;o-blog&lt;/a&gt; to &lt;a href=&#34;http://getnikola.com&#34;&gt;Nikola&lt;/a&gt;.  The only thing that was stopping me&#xA;from doing it, until now is the fact that all my posts are in&#xA;org markup and porting them over to one of the formats that Nikola&#xA;supports would be a PITA.  So, I wrote a &lt;a href=&#34;http://plugins.getnikola.com/#orgmode&#34;&gt;pretty simple plugin&lt;/a&gt; to&#xA;Nikola to support posting from org files.  And then with a &lt;a href=&#34;https://gist.github.com/punchagan/6970578&#34;&gt;little&#xA;Python&lt;/a&gt;, I was able to move everything over to use Nikola.&lt;/p&gt;&#xA;&lt;p&gt;Hopefully, I&amp;rsquo;ll keep my blog more updated, from here on!&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Org-mode Workshop</title>
      <link>https://punchagan.muse-amuse.in/blog/org-mode-workshop/</link>
      <pubDate>Wed, 22 Jun 2011 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/org-mode-workshop/</guid>
      <description>&lt;p&gt;Well, I&amp;rsquo;m not sure if it&amp;rsquo;s worth writing about.  I conducted my&#xA;first org-mode workshop along with Prof. Venkatesh Choppella at&#xA;IIIT-Hyderabad.  It was a 3 hour demo+talk kind of a thing, with a&#xA;small audience of about 20 people, most of whom were new to&#xA;Emacs.&lt;/p&gt;&#xA;&lt;p&gt;We covered almost all the aspects of Org-mode after giving a brief&#xA;introduction to Emacs.  Outlining and note-taking part was simple&#xA;and easy to understand, but the audience couldn&amp;rsquo;t really&#xA;appreciate the part of keeping TODO lists and agendas and other&#xA;stuff.  I&amp;rsquo;m hoping, the reason was not me taking over from&#xA;Venkatesh.&lt;/p&gt;&#xA;&lt;p&gt;I think the workshop should&amp;rsquo;ve been more hands-on and we should&amp;rsquo;ve&#xA;asked people to try out stuff on the spot, instead of showing off&#xA;the things possible with Emacs.  They probably would&amp;rsquo;ve&#xA;appreciated a few things better, that way.&lt;/p&gt;&#xA;&lt;p&gt;Hopefully, we will be doing more workshops on Org-mode and there&#xA;are surely somethings to take away from this one.  I hope at least&#xA;one of the participants, gets hooked to Org-mode.&lt;/p&gt;&#xA;&lt;p&gt;The talk outline is here.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Git powered wikis improved: My bit</title>
      <link>https://punchagan.muse-amuse.in/blog/git-powered-wikis-improved-my-bit/</link>
      <pubDate>Fri, 04 Feb 2011 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/git-powered-wikis-improved-my-bit/</guid>
      <description>&lt;p&gt;I accidentally came across the blog-post Git-powered wikis&#xA;improved - GitHub. And this particular paragraph caught my&#xA;eye:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The new editor has the capability to support every markup&#xA;language that GitHub Wikis support. If you&amp;rsquo;re a fan of Markdown,&#xA;Textile, pod or RDoc, the function bar buttons (e.g. bold,&#xA;italic, underline, etc.) will now work. We&amp;rsquo;ve even written brand&#xA;new inline help for many of GitHub Wiki&amp;rsquo;s supported markup&#xA;languages.&lt;/p&gt;&#xA;&lt;p&gt;The language definitions the editor uses are JSON-based and easy&#xA;to edit. If you&amp;rsquo;d like us to support a markup language that we&#xA;don&amp;rsquo;t currently support, Gollum, GitHub&amp;rsquo;s wiki software, is&#xA;entirely open source &amp;ndash; fork our code and send us a pull request&#xA;with changes that support your choice language.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;I sent a quick patch for org-mode in the function bar, and it has&#xA;been accepted.  :)&lt;/p&gt;&#xA;&lt;p&gt;If not anything more, I hope, at least a couple of curious people&#xA;will explore org-mode and find it useful.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>CHAGANTI 635888 Emacs</title>
      <link>https://punchagan.muse-amuse.in/blog/chaganti-635888-emacs/</link>
      <pubDate>Thu, 03 Feb 2011 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/chaganti-635888-emacs/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Puneeth Chaganti, hereby agrees as follows:&lt;/p&gt;&#xA;&lt;p&gt;Developer hereby agrees to assign and does hereby assign to FSF&#xA;Developer&amp;rsquo;s copyright in changes and/or enhancements to the suite&#xA;of programs known as GNU EMACS, including any accompanying&#xA;documentation files and supporting files as well as the actual&#xA;program code.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Yay! I can now write code, that can go into Org-mode and Emacs!&#xA;I&amp;rsquo;m looking forward to this!&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Changes to Blog</title>
      <link>https://punchagan.muse-amuse.in/blog/changes-to-blog/</link>
      <pubDate>Wed, 02 Feb 2011 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/changes-to-blog/</guid>
      <description>&lt;p&gt;Well, as you can see, I&amp;rsquo;ve changed my blog a bit.  I had been&#xA;trying to make it gel well with org-mode and looking for ways to&#xA;allow me to share arbit stuff with separate feeds for tags,&#xA;separate pages with independent feeds, etc.&lt;/p&gt;&#xA;&lt;p&gt;I finally got around to tweaking the code of reprise to be able to&#xA;do this.  There are still a few things I would like to change, but&#xA;I&amp;rsquo;ll make the changes gradually.  The looks are also straight from&#xA;uddegal&amp;rsquo;s [[reprise, with a few tiny tweaks.  I hope it is alright&#xA;to be using it.  I really liked the theme.&lt;/p&gt;&#xA;&lt;p&gt;Every tag now has a separate feed. &lt;code&gt;/tags/emacs.atom&lt;/code&gt; will give&#xA;you the feed of &lt;code&gt;emacs&lt;/code&gt; for instance. Also, I plan to have a&#xA;couple of more pages, one for all the interesting links I come&#xA;across and another for interesting quotes.  Both of these pages,&#xA;have their own feeds too (&lt;code&gt;quotes.atom&lt;/code&gt; and &lt;code&gt;links.atom&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;p&gt;In the spirit of minimalism, I got rid of comments.  I&amp;rsquo;ve been&#xA;looking for ways of having comments without all the javascript&#xA;cruft from disqus, but I didn&amp;rsquo;t find any satisfactory way to do&#xA;this.  So, the site will have no comments.  You can write to me,&#xA;in case you&amp;rsquo;ve something to say to me.&lt;/p&gt;&#xA;&lt;p&gt;Adios.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Why I like Org as a markup</title>
      <link>https://punchagan.muse-amuse.in/blog/why-i-like-org-as-a-markup/</link>
      <pubDate>Wed, 12 Jan 2011 18:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/why-i-like-org-as-a-markup/</guid>
      <description>&lt;p&gt;Org-mode, as a mode, is obviously awesome.  The ability to move&#xA;around whole blocks of text, for re-organizing documents and the&#xA;usability of tables are just two brilliant features.&lt;/p&gt;&#xA;&lt;p&gt;But, the org markup itself is such a cool thing.  I&amp;rsquo;ve been&#xA;looking at &lt;code&gt;rst&lt;/code&gt; all day, and it&amp;rsquo;s such a pain to find out where&#xA;your headings are, what level your current sub-heading is at, etc.&#xA;(I&amp;rsquo;ll probably do a bit better, with some getting used to. I&amp;rsquo;m an&#xA;org-addict. ;)).  With org-mode it&amp;rsquo;s so intuitive!  It&amp;rsquo;s so easy&#xA;to find out, with just one quick look!  I don&amp;rsquo;t think any other&#xA;markup has this coolness! Org-mode FTW!&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Pandoc can now do Org</title>
      <link>https://punchagan.muse-amuse.in/blog/pandoc-can-now-do-org/</link>
      <pubDate>Mon, 06 Dec 2010 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/pandoc-can-now-do-org/</guid>
      <description>&lt;p&gt;Pandoc is a haskell library and a command line tool, that can&#xA;convert markup from one to another and it does it pretty well.&#xA;Until now it supported quite a few markups, but not orgmode.  But&#xA;now, Orgmode support has been added! Yay!&lt;/p&gt;&#xA;&lt;p&gt;But, it can only read from other formats and write to org-mode&#xA;format.  The other way around, is not possible, but you can do&#xA;that straight from org-mode, right?&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve often felt the need for an org-importer and hence decided to&#xA;do something about it.  I stumbled upon Pandoc, when I was moving&#xA;my blog, and found it pretty neat.  After, yet another request for&#xA;an importer, on the org-mode mailing list, I decided to look at&#xA;Pandoc.  I was somehow under the impression that it was written in&#xA;Python.  But it turned out, I had to learn Haskell!  A good excuse&#xA;to learn a new language, eh?  I brushed through a tutorial for a&#xA;couple of days (and was blown off by the paradigm of the language)&#xA;and was able to port the RST writer in Pandoc, to an Org&#xA;writer.  :)&lt;/p&gt;&#xA;&lt;p&gt;You can get the latest version from here&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>WP to org-mode &#43; hyde &#43; disqus</title>
      <link>https://punchagan.muse-amuse.in/blog/wp-to-org-mode-hyde-disqus/</link>
      <pubDate>Fri, 22 Oct 2010 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/wp-to-org-mode-hyde-disqus/</guid>
      <description>&lt;p&gt;Hello World!&lt;/p&gt;&#xA;&lt;p&gt;My first post at my new home.  Obviously, it was going to be about the&#xA;move.  You knew it, didn&amp;rsquo;t you? ;)&lt;/p&gt;&#xA;&lt;p&gt;Well, I got some space on the web, along with a few friends.  Thanks to&#xA;my org-mode fanboyism, I now use it to maintain my homepage.  I&amp;rsquo;ve&#xA;successfully completed import of my Wordpress posts and comments. :)&lt;/p&gt;&#xA;&lt;h2 id=&#34;i-now-use&#34;&gt;I now use&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Emacs and Org-mode &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; to write my posts.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;org-hyde.el&lt;/code&gt; &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; to publish &lt;code&gt;html&lt;/code&gt; in a &lt;code&gt;hyde&lt;/code&gt;&#xA;parse-able format.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;hyde&lt;/code&gt; &lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; to convert the &lt;code&gt;html&lt;/code&gt; pages into a blog.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;org-publish&lt;/code&gt; to publish other pages in my home page.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;git&lt;/code&gt; &lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt; and a &lt;code&gt;bash&lt;/code&gt; script for publishing.&lt;/li&gt;&#xA;&lt;li&gt;Disqus &lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; for the comment system.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Yes, I know it sounds rather complicated. :) But, now that I&#xA;have it set up, it&amp;rsquo;s not all that difficult to make a post.&#xA;It&amp;rsquo;s just a matter of one &lt;code&gt;git commit&lt;/code&gt; and &lt;code&gt;push&lt;/code&gt;.  I need to&#xA;fine-tune the shell script a bit, though.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-i-moved&#34;&gt;How I moved&lt;/h2&gt;&#xA;&lt;p&gt;The move definitely wasn&amp;rsquo;t trivial.  I guess, I could&amp;rsquo;ve started&#xA;afresh but, what fun would that have been? ;)&lt;/p&gt;&#xA;&lt;p&gt;This roughly how I did things &amp;ndash; in the order that I did them.&lt;/p&gt;&#xA;&lt;h3 id=&#34;choosing-hyde&#34;&gt;Choosing &lt;code&gt;hyde&lt;/code&gt;&lt;/h3&gt;&#xA;&lt;p&gt;I looked at a handful of options to maintain a blog, using&#xA;org-mode &amp;mdash; &lt;code&gt;blorg&lt;/code&gt;, &lt;code&gt;org-jekyll&lt;/code&gt;, &lt;code&gt;blorgit&lt;/code&gt;, &lt;code&gt;ikiwiki&lt;/code&gt;.&#xA;After some assessment, I decided upon &lt;code&gt;org-jekyll&lt;/code&gt; and&#xA;&lt;code&gt;jekyll&lt;/code&gt;.  But then, I accidentally stumbled upon &lt;code&gt;hyde&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I decided to go with &lt;code&gt;hyde&lt;/code&gt; instead of &lt;code&gt;jekyll&lt;/code&gt; &lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;&#xA;since&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;It&amp;rsquo;s in Python.  I didn&amp;rsquo;t want to start figuring out Ruby,&#xA;now.&lt;/li&gt;&#xA;&lt;li&gt;It uses Django templates &lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;.  And Django is&#xA;something, I wish to learn.  I&amp;rsquo;ve started with that. :)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;clean-up-org-jekyll-to-work-with-hyde-dot&#34;&gt;Clean up &lt;code&gt;org-jekyll&lt;/code&gt; to work with &lt;code&gt;hyde&lt;/code&gt;.&lt;/h3&gt;&#xA;&lt;p&gt;I then &amp;ldquo;ported&amp;rdquo; &lt;code&gt;org-jekyll.el&lt;/code&gt; into &lt;code&gt;org-hyde.el&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;removed stuff like categories and languages, that I was not&#xA;going to use.&lt;/li&gt;&#xA;&lt;li&gt;Added some code w.r.t timestamps, from org2blog, to it, so&#xA;that my older &lt;code&gt;org2blog&lt;/code&gt; posts could be easily ported.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;clean-up-older-org2blog-posts&#34;&gt;Clean up older org2blog posts&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;org2blog&lt;/code&gt; can post either buffers or subtrees.  I had posts in&#xA;both formats.  I converted all of them into subtrees of one&#xA;tree, using some Python.&lt;/p&gt;&#xA;&lt;h3 id=&#34;import-older-posts&#34;&gt;Import older posts&lt;/h3&gt;&#xA;&lt;p&gt;This was the most painful posts.  Importing all the old posts&#xA;from Wordpress.  &lt;code&gt;org-mode&lt;/code&gt; really needs a XHTML/XML importer!&lt;/p&gt;&#xA;&lt;p&gt;I did all sorts of crazy stuff to get this done.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;used pandoc to convert html to &lt;code&gt;markdown&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;wrote some throw away regex code to convert &lt;code&gt;markdown&lt;/code&gt; to&#xA;&lt;code&gt;org-mode&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;wrote more regex code to convert &lt;code&gt;html&lt;/code&gt; to &lt;code&gt;org-mode&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;hacked up a lot of stuff and finally got all the posts into&#xA;&lt;code&gt;org&lt;/code&gt; format! :)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a-workflow-for-publishing&#34;&gt;A workflow for publishing&lt;/h3&gt;&#xA;&lt;p&gt;Set up &lt;code&gt;git&lt;/code&gt; along with some &lt;code&gt;bash&lt;/code&gt; code, to have a mechanism&#xA;to minimize the effort in making a blog post.  All this is&#xA;still a lot of work, compared to the ease with which I used to&#xA;use &lt;code&gt;org2blog&lt;/code&gt;.  That&amp;rsquo;s partly due to &lt;code&gt;ssh&lt;/code&gt; restrictions in my&#xA;hostel.&lt;/p&gt;&#xA;&lt;h3 id=&#34;css-clean-up&#34;&gt;CSS clean-up&lt;/h3&gt;&#xA;&lt;p&gt;I&amp;rsquo;m using the same CSS for &lt;code&gt;org-mode&lt;/code&gt; published files and&#xA;&lt;code&gt;hyde&lt;/code&gt; published files. I had to clean up my &lt;code&gt;hyde&lt;/code&gt; templates&#xA;and the CSS to make both of them look similar.&lt;/p&gt;&#xA;&lt;p&gt;My first tryst with CSS hasn&amp;rsquo;t been all that bad. :)&lt;/p&gt;&#xA;&lt;h3 id=&#34;installing-disqus-and-importing-comments&#34;&gt;Installing disqus and importing comments&lt;/h3&gt;&#xA;&lt;p&gt;Using disqus was one thing, I wasn&amp;rsquo;t sure I wanted to do.  I&#xA;would&amp;rsquo;ve loved it if comments could be managed with org-mode&#xA;too. ;) &lt;sup id=&#34;fnref:8&#34;&gt;&lt;a href=&#34;#fn:8&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Anyway, I finally decided to go with it, and I&amp;rsquo;m quite happy&#xA;with it. :)&lt;/p&gt;&#xA;&lt;p&gt;I loved the ease with which comments could be imported.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Import Wordpress comments using the export &lt;code&gt;xml&lt;/code&gt; file.&lt;/li&gt;&#xA;&lt;li&gt;Generate a CSV file containing the URL map &amp;ndash; mapping the&#xA;newer urls to the older ones.&lt;/li&gt;&#xA;&lt;li&gt;Upload the CSV file and tada!&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;&#xA;&lt;p&gt;I got to learn quite a few things, during all of this.  I also&#xA;have some bits of code, that I can share with you, in case you&#xA;are interested.  Leave a comment, if you wish. :)&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m just hoping to reduce the additional steps required in&#xA;publishing to ensure it doesn&amp;rsquo;t add to my already erratic&#xA;blogging habits.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Org-mode - Homepage&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Org-hyde is a &lt;em&gt;port&lt;/em&gt; of org-jekyll.el&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Hyde - Github&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;Git - Homepage&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:5&#34;&gt;&#xA;&lt;p&gt;Disqus - Homepage&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:6&#34;&gt;&#xA;&lt;p&gt;Github - Jekyll&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:7&#34;&gt;&#xA;&lt;p&gt;Documentation - Django Templates&amp;#160;&lt;a href=&#34;#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:8&#34;&gt;&#xA;&lt;p&gt;I feel it is capable of doing that. It&amp;rsquo;s just my incapability that prevented me from trying it out.&amp;#160;&lt;a href=&#34;#fnref:8&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Some fun from #org-mode</title>
      <link>https://punchagan.muse-amuse.in/blog/some-fun-from-org-mode/</link>
      <pubDate>Sat, 02 Oct 2010 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/some-fun-from-org-mode/</guid>
      <description>&lt;p&gt;This is a conversation from #org-mode, published without&#xA;permission from &lt;code&gt;plovs&lt;/code&gt;, &lt;code&gt;BerntH&lt;/code&gt; and &lt;code&gt;bremner&lt;/code&gt;. If any of you&#xA;want any of the content removed, I will do so.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; hi all&lt;/p&gt;&#xA;&lt;p&gt;&lt;BerntH&gt; hi punchagan   [18:36]&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; BerntH: ever used/tried blorg or blorgit?  [18:47]&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; I like the way org-publish works, but blorg exports one org file as a blog. If blorg were to be re-written on top of org-publish, how should it be done? use one file per post or just one file for the whole blog?  [18:52]&lt;/p&gt;&#xA;&lt;p&gt;&lt;bremner&gt; punchagan: another option is to use ikiwiki and use the org-mode plugin to render pages. This is what i do, although only a bit of the site is in org.  [19:44]&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; bremner: can I have a look at your site?  [19:45]&lt;/p&gt;&#xA;&lt;p&gt;&lt;bremner&gt; sure, it ain&amp;rsquo;t pretty, but: &lt;a href=&#34;https://www.cs.unb.ca/~bremner&#34;&gt;www.cs.unb.ca/~bremner&lt;/a&gt;  [19:46]&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; thanks. I&amp;rsquo;ll keep this in mind.   [19:47]&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; I just loved the way this site looks and behaves &amp;ndash; &lt;a href=&#34;http://julien.danjou.info/projects.html&#34;&gt;http://julien.danjou.info/projects.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;bremner&gt; well, the side bar at least is possible with ikiwiki. Other than that I suppose it is mainly a matter of css  [19:48]&lt;/p&gt;&#xA;&lt;p&gt;&lt;BerntH&gt; punchagan: nope  [19:49]&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; ok BerntH  [19:50]&lt;/p&gt;&#xA;&lt;p&gt;&lt;plovs&gt; punchagan ikiwiki does have an org-mode plugin  [19:56]&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; plovs: yes, bremner told me that and I&amp;rsquo;ve seen on Worg too. :)&lt;/p&gt;&#xA;&lt;p&gt;&lt;plovs&gt; punchagan ah, yes, sorry&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; plovs: it&amp;rsquo;s alright.   [19:59]&lt;/p&gt;&#xA;&lt;p&gt;&lt;plovs&gt; punchagan another possibility is org2blog, which uses wordpress&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; plovs: I&amp;rsquo;m the author of it. :D&lt;/p&gt;&#xA;&lt;p&gt;&lt;plovs&gt; lol, ik, &lt;strong&gt;that&lt;/strong&gt; punchagan   [20:17]&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; lol&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; plovs: were you kidding? or serious?  [20:19]&lt;/p&gt;&#xA;&lt;p&gt;&lt;plovs&gt; punchagan sorry to say i was serious, but it will not happen again :-)&lt;/p&gt;&#xA;&lt;p&gt;&lt;plovs&gt; i really like org2blog, played with it yesterday&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; plovs: no. I was just wondering if you were playing around with me. :P&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; I&amp;rsquo;m happy some one thinks it is useful.&lt;/p&gt;&#xA;&lt;p&gt;&lt;plovs&gt; lol, no, i just didn&amp;rsquo;t recognized your name, although it is kind of hard to miss  [20:21]&lt;/p&gt;&#xA;&lt;p&gt;&lt;punchagan&gt; I hope you don&amp;rsquo;t mind, if I make this anecdote public?&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;</description>
    </item>
    <item>
      <title>org/elisp - sorting list of org-links on description</title>
      <link>https://punchagan.muse-amuse.in/blog/orgelisp-sorting-list-of-org-links-on-description/</link>
      <pubDate>Fri, 20 Aug 2010 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/orgelisp-sorting-list-of-org-links-on-description/</guid>
      <description>&lt;p&gt;A small utility function that I used to sort the names of people&#xA;who commented on my blog.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-get-link-desc-from-list&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&amp;#34; Get link description of a list item containing just links &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;item-beg&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;item-end&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-end-of-item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cur-item&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;buffer-substring-no-properties&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  &lt;span class=&#34;nv&#34;&gt;item-beg&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;item-end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;goto-char&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;item-beg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-columns-compact-links&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cur-item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;sort-lines&lt;/code&gt; wasn&amp;rsquo;t good enough for me, since it was sorting&#xA;alphabetically and it ended up being the sorted order of the urls&#xA;and not the names. This function, when used with&#xA;&lt;code&gt;org-sort-entries-or-items&lt;/code&gt; gave me what I wanted.&lt;/p&gt;&#xA;&lt;p&gt;Thanks to benny (on #org-mode), I also learnt the difference&#xA;between &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;let*&lt;/code&gt;.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Refile to date-tree</title>
      <link>https://punchagan.muse-amuse.in/blog/refile-to-date-tree/</link>
      <pubDate>Fri, 30 Jul 2010 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/refile-to-date-tree/</guid>
      <description>&lt;p&gt;Useful to refile notes to the journal file, which is a&#xA;date-tree. &lt;code&gt;org-refile&lt;/code&gt; isn&amp;rsquo;t convenient to refile stuff to a&#xA;date-tree.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;my/org-refile-to-journal&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;Refile an entry to journal file&amp;#39;s date-tree&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-datetree&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;expand-file-name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;journal.org&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;post-date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post-date&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-entry-get&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;TIMESTAMP_IA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-entry-get&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;TIMESTAMP&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post-date&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nthcdr&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;parse-time-string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post-date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post-date&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cadr&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post-date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;car&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post-date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;caddr&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post-date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-cut-subtree&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;with-current-buffer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;find-buffer-visiting&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                             &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;find-file-noselect&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;save-excursion&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-datetree-file-entry-under&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;current-kill&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post-date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;bookmark-set&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;org-refile-last-stored&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Refiled to %s&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;this-command&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;my/org-refile-to-journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;my/org-agenda-refile-to-journal&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;Refile the item at point to journal.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;marker&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-get-at-bol&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-hd-marker&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-agenda-error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;buffer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;marker-buffer&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;marker&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;marker-position&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;marker&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;with-current-buffer&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;buffer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;save-excursion&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;save-restriction&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;widen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;goto-char&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;marker&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-remove-subtree-entries-from-agenda&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;my/org-refile-to-journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-agenda-redo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-defkey&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-agenda-mode-map&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c C-S-w&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;my/org-agenda-refile-to-journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-defkey&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-mode-map&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c C-S-w&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;my/org-refile-to-journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Enjoy!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update &lt;span class=&#34;timestamp-wrapper&#34;&gt;&lt;span class=&#34;timestamp&#34;&gt;[2016-06-16 Thu]&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;a href=&#34;https://twitter.com/raamdev&#34;&gt;Raam Dev&lt;/a&gt; pointed me to an &lt;a href=&#34;http://emacs.stackexchange.com/questions/21322/preventing-org-cut-subtree-from-appending-subsequent-cuts-to-previous-kill-ring&#34;&gt;issue&lt;/a&gt; and a suggested fix, that&#xA;I have updated the above code with.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>numpy, pacman and me</title>
      <link>https://punchagan.muse-amuse.in/blog/numpy-pacman-and-me/</link>
      <pubDate>Sun, 31 Jan 2010 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/numpy-pacman-and-me/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m now officially a part of the Arch Linux community! Arch Linux&#xA;is a lightweight and flexible Linux® distribution that tries to&#xA;Keep It Simple.&lt;/p&gt;&#xA;&lt;p&gt;I have started using arch from less than a week or so. It took me&#xA;a while, not too long, to realize the beauty of this distro. I was&#xA;trying to tweak the settings of my org-mode&amp;rsquo;s remember (on&#xA;Karmic), trying to make it work the way I liked it. After breaking&#xA;my head with .emacs and lisp for a while, I realized the version&#xA;of my org-mode was way different from the version of the docs, I&#xA;was reading. It didn&amp;rsquo;t take long to figure out, which version of&#xA;org-mode to get. As a matter of curiosity, I checked AUR for the&#xA;version, and true to Arch&amp;rsquo;s reputation it was bleeding edge! I was&#xA;still using Karmic, since I hadn&amp;rsquo;t got my Arch installation&#xA;working the way I like it, yet. Out of laziness. sudo reboot; to&#xA;hell with laziness!&lt;/p&gt;&#xA;&lt;p&gt;I was setting up things I regularly use, tweaking my way&#xA;around. After a day or so, I find python-numpy is out of date. And&#xA;to top it, an orphaned package! I didn&amp;rsquo;t feel one bit good about&#xA;this. After some futile attempts to suppress my discomfort, I sat&#xA;down to work.&lt;/p&gt;&#xA;&lt;p&gt;After an afternoon of effort, I created my first PKGBUILD. :) I&#xA;now have python-numpy installed using pacman! Pleasure to join the&#xA;Arch User Community! Also, thanks to lifeeth and Lynus Vaz, for&#xA;the sparks.&lt;/p&gt;&#xA;&lt;p&gt;PS: I&amp;rsquo;m using Arch with Openbox. It&amp;rsquo;s neat! PPS: org-mode is&#xA;really awesome! It&amp;rsquo;s a world in itself. life in plain text,&#xA;truly!]&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
