<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Advice on Noetic Nought</title>
    <link>https://punchagan.muse-amuse.in/tags/advice/</link>
    <description>Recent content in Advice on Noetic Nought</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <copyright>© 2006-2026 CC-BY-SA-4.0</copyright>
    <lastBuildDate>Wed, 24 Oct 2018 20:14:00 +0530</lastBuildDate>
    <atom:link href="https://punchagan.muse-amuse.in/tags/advice/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Self-care tips for new developers</title>
      <link>https://punchagan.muse-amuse.in/blog/self-care-tips-for-new-developers/</link>
      <pubDate>Wed, 24 Oct 2018 20:14:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/self-care-tips-for-new-developers/</guid>
      <description>&lt;p&gt;A couple of weeks ago, I was at &lt;a href=&#34;https://in.pycon.org/2018/&#34;&gt;PyCon India&lt;/a&gt; &amp;ndash; the 10th edition, the 8th PyCon I&#xA;was attending. It was great to see so many enthusiastic young developers,&#xA;attending their first PyCon. With each year, as the event gets bigger, you see&#xA;more and more of them. Lot of curiosity, and enthusiasm to become better&#xA;programmers.&lt;/p&gt;&#xA;&lt;p&gt;The conference had a whole bunch of talks, catering to people with varied&#xA;interests, at different stages in their career &amp;ndash; war stories, tips and tricks,&#xA;helpful advice on getting started with a library or tool, thoughts on the&#xA;community culture, etc. With each passing year, there are more and more&#xA;proposals for talks, and a lot of good talks have to be left out due to&#xA;constraints on the number of talks that the conference can accommodate.&lt;/p&gt;&#xA;&lt;p&gt;Having said that, I&amp;rsquo;d have liked to see a talk on self-care tips for developers&#xA;&amp;ndash; advice on staying sane and productive in the long run. It is quite common for&#xA;programmers to get burnt-out. I&amp;rsquo;m sure there are some useful lessons to be&#xA;shared by everyone who has been programming professionally for a while &amp;ndash;&#xA;ranging from about a couple of years to many decades!&lt;/p&gt;&#xA;&lt;p&gt;In a hallway conversation, &lt;a href=&#34;https://twitter.com/noufalibrahim/&#34;&gt;Noufal&lt;/a&gt; was telling some of us about the &lt;a href=&#34;https://en.wikipedia.org/wiki/Okinawan_martial_arts&#34;&gt;Okinawa&#xA;martial art&lt;/a&gt; lessons he&amp;rsquo;s been taking - it was inspiring to see how seriously he&#xA;takes the lessons. A lot of programmers that I know, who have been programming&#xA;for a while, have other interests that they pursue quite seriously, to take time&#xA;off from programming. It would be nice to have someone speak about mental health&#xA;and self care in a talk, rather than hope that people pick it up in hallway&#xA;conversations. Explicit is better than implicit.&lt;/p&gt;&#xA;&lt;p&gt;I was considering doing a lightning talk on this, but I didn&amp;rsquo;t get in touch with&#xA;the organizers early enough to get a slot. So, here&amp;rsquo;s a blog post.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: Not all of these are things I&amp;rsquo;m good at doing consistently, but&#xA;they are things that have at some point helped me. This post is also a way for&#xA;me to write down things that I (or others) can come back to whenever necessary.&lt;/p&gt;&#xA;&lt;h2 id=&#34;take-breaks&#34;&gt;Take breaks&lt;/h2&gt;&#xA;&lt;p&gt;We are often so engrossed in getting something to work, that we lose track of&#xA;time &amp;ndash; slumping in our chairs for hours on end, forgetting to eat, hydrate or&#xA;move around.&lt;/p&gt;&#xA;&lt;p&gt;Our bodies weren&amp;rsquo;t made for this &amp;ndash; we were built to move around. Also, stepping&#xA;away from the problem for a bit, after wrestling with it for a while, brings a&#xA;fresh perspective and new ideas.&lt;/p&gt;&#xA;&lt;p&gt;You could use a tool like &lt;a href=&#34;http://www.workrave.org/&#34;&gt;workrave&lt;/a&gt; to remind you to take regular breaks and&#xA;stretch. Or use a &lt;a href=&#34;https://francescocirillo.com/pages/pomodoro-technique&#34;&gt;Pomodoro timer&lt;/a&gt;. Another trick is to drink keep drinking water&#xA;regularly, so you are forced to get up and take a piss, every once in a while.&lt;/p&gt;&#xA;&lt;h2 id=&#34;hydrate-eat-and-sleep&#34;&gt;Hydrate, Eat and Sleep&lt;/h2&gt;&#xA;&lt;p&gt;Being dehydrated can make one feel tired and sleepy, making it hard to focus&#xA;well. Same goes for being hungry and sleep-deprived. Not having enough glucose&#xA;in your blood has been &lt;a href=&#34;http://www.pnas.org/content/108/17/6889&#34;&gt;shown&lt;/a&gt; to cause people to make bad decisions.&lt;/p&gt;&#xA;&lt;p&gt;Mental work uses up a lot of energy, even if we seem to be just sitting around&#xA;all day, and not expending much more energy than sleeping. It is important to&#xA;feel good physically to work effectively.&lt;/p&gt;&#xA;&lt;p&gt;You could have a bottle of water next to you, that you frequently drink from and&#xA;keep re-filling at breaks. Don&amp;rsquo;t skip on your lunch to use that extra half an&#xA;hour being productive. Keeping some snack accessible for you to eat towards the&#xA;end of the day, when you are tired, helps. Use a sleep tracker or just roughly&#xA;track sleep each night manually. Make sure you are getting enough of it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;invest-in-a-good-set-up&#34;&gt;Invest in a good set-up&lt;/h2&gt;&#xA;&lt;p&gt;We spend around half of our waking time at work - over a life time, that&amp;rsquo;s a lot&#xA;of time! Sitting in a bad posture, or doing a only-slightly-uncomfortable action&#xA;over and over, can easily grow into bigger problems in the long run.&lt;/p&gt;&#xA;&lt;p&gt;You deserve good quality equipment, that &amp;ldquo;fits&amp;rdquo; you well. Get yourself a good&#xA;keyboard and mouse, an external monitor, or whatever it is that you think will&#xA;make your body thank you. If you end-up working a lot from your home office,&#xA;invest in a good chair and a table.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sunlight-and-exercise&#34;&gt;Sunlight &amp;amp; Exercise&lt;/h2&gt;&#xA;&lt;p&gt;Being locked up in our office buildings all day doesn&amp;rsquo;t help with how much&#xA;exposure we get to the sun. Not getting enough sunlight regularly can effect us&#xA;both mentally and physically. Same goes for exercise. Getting some exercise&#xA;everyday has been shown to have significant mental and physical health benefits.&lt;/p&gt;&#xA;&lt;p&gt;You can start playing a sport, if hitting the gym or doing something alone seems&#xA;like a chore. Playing a team sport helps even more since there are other people&#xA;you are accountable to. Try to get some sunlight every morning, even if it is&#xA;just standing out in the sun, while you drink your coffee.&lt;/p&gt;&#xA;&lt;h2 id=&#34;take-vacations&#34;&gt;Take Vacations&lt;/h2&gt;&#xA;&lt;p&gt;Switch off completely, and give your body and mind the rest they deserve. The&#xA;break not only lets you rejuvenate physically, but also gives your brain the&#xA;time to synthesize all the inputs it has, and come back with surprising ideas or&#xA;solutions to problems that have been troubling you for a while.&lt;/p&gt;&#xA;&lt;p&gt;The importance of taking a break is often forgotten, when we have so much to do.&#xA;Honestly, I&amp;rsquo;m not very good at taking regular vacations, myself.&lt;/p&gt;&#xA;&lt;p&gt;But, having a fixed time every year to take a vacation is something that I&amp;rsquo;ve&#xA;seen working. For example, 2 weeks around your birthday every year, you can&#xA;decide to take a vacation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;do-other-things&#34;&gt;Do other things&lt;/h2&gt;&#xA;&lt;p&gt;We get into the game because we are really excited by the things we can build by&#xA;flipping bits. We get so obsessed with it, that we lose ourselves in it,&#xA;oblivious to the world outside. All the people we hangout with are people very&#xA;similar to us.&lt;/p&gt;&#xA;&lt;p&gt;Often, we are building stuff for people very unlike us. It&amp;rsquo;s very helpful to see&#xA;the world from a different perspective than ours. Also, there is only so much we&#xA;can express through code. There is a whole lot of us that can be expressed in&#xA;other ways.&lt;/p&gt;&#xA;&lt;p&gt;Pick up a &lt;a href=&#34;https://thatteidlikaalsoup.team/&#34;&gt;team sport&lt;/a&gt;, do improv/stand-up, draw or paint, write, learn a martial&#xA;art, join a cross fit gym &amp;ndash; anything that you find interesting, other than&#xA;writing code. Hangout with people who do very different things everyday than&#xA;what you do. Their completely different perspective at life will make you a&#xA;better programmer and a better person.&lt;/p&gt;&#xA;&lt;h2 id=&#34;avoid-distractions&#34;&gt;Avoid distractions&lt;/h2&gt;&#xA;&lt;p&gt;The internet can be &lt;a href=&#34;https://xkcd.com/477/&#34;&gt;so distracting&lt;/a&gt;! But, as developers, we tend to be constantly&#xA;connected, leaving ourselves vulnerable to all this distraction. All these&#xA;distractions can lead to very &lt;a href=&#34;https://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt-a-programmer/&#34;&gt;expensive context switches&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve found getting into, and working in flow-states to be enormously satisfying.&#xA;What I&amp;rsquo;m actually working on, doesn&amp;rsquo;t matter very much when I&amp;rsquo;m to deeply focus&#xA;on something I want to be doing.&lt;/p&gt;&#xA;&lt;p&gt;Creating an environment for yourself, where its easy to get into these states,&#xA;is totally worth it. I&amp;rsquo;ve found using &lt;a href=&#34;https://francescocirillo.com/pages/pomodoro-technique&#34;&gt;Pomodoros&lt;/a&gt; to be quite helpful, when I&amp;rsquo;m&#xA;feeling distracted. Shutting off the Internet, or using a tool like&#xA;&lt;a href=&#34;https://github.com/viccherubini/get-shit-done&#34;&gt;get-shit-done&lt;/a&gt; helps with stopping myself from getting distracted by cat videos&#xA;on the internet. Turning off all notifications on my phone and computer is&#xA;another thing that is quite effective I also find it helpful to not be able to&#xA;constantly have sight of the clock on my computer - so I work with all my&#xA;windows full-screen. &lt;a href=&#34;https://www.journals.uchicago.edu/doi/full/10.1086/691462&#34;&gt;Leaving the phone in another room&lt;/a&gt; or in my bag works great,&#xA;too. You can find a lot more tips on the internet, if these tricks aren&amp;rsquo;t up&#xA;your alley.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;If you see your team over-working themselves, and holding exhaustion as a badge&#xA;of honour, please be the person to strike conversations around self care. Your&#xA;team will thank you.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve only listed down some of the things that I&amp;rsquo;ve found helpful. But, I hope&#xA;this serves as a good starting point. Also, do take a look at &lt;a href=&#34;http://selfcare.tech/&#34;&gt;selfcare.tech&lt;/a&gt; for&#xA;more resources and advice.&lt;/p&gt;&#xA;&lt;p&gt;Thanks Akilesh Mani and &lt;a href=&#34;http://baali.muse-amuse.in/&#34;&gt;Shantanu Choudhary&lt;/a&gt; for&#xA;reading drafts of this and giving helpful suggestions.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>PyCon India 2016 - Propose a talk</title>
      <link>https://punchagan.muse-amuse.in/blog/pycon-india-2016-propose-a-talk/</link>
      <pubDate>Tue, 31 May 2016 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/pycon-india-2016-propose-a-talk/</guid>
      <description>&lt;p&gt;CFP for PyCon 2016 is &lt;a href=&#34;https://in.pycon.org/cfp/2016/proposals/&#34;&gt;open&lt;/a&gt; and you should propose a talk!&lt;/p&gt;&#xA;&lt;p&gt;There has been a lot of discussion on trying to improve the talk quality at the&#xA;events. As my bit of contribution to this, below is a re-hash of some good&#xA;advice from the internet on why you should give a talk, and how to submit a&#xA;good proposal.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why&#34;&gt;Why?&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;You &lt;a href=&#34;https://vimeo.com/96692937#t=2m56s&#34;&gt;needn&amp;rsquo;t be an expert&lt;/a&gt; on a topic. If you have enough experience about&#xA;something to help make the next person&amp;rsquo;s experience with it better, you are&#xA;good.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Its a great way to find people who are interested in the same things as you&#xA;are and to get to talk to them.  If you are an introvert, you should&#xA;&lt;a href=&#34;https://emptysqua.re/blog/tech-talks-are-campfires-jesses-three-reasons-you-should-speak-at-pycon/#meet-specialists&#34;&gt;definitely be speaking&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Proposing and giving a talk is about thinking about something hard enough to&#xA;refine your thoughts, and being able to explain it to others. Its a useful&#xA;skill to hone.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;how&#34;&gt;How?&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Talks are &lt;a href=&#34;http://speaking.io/plan/talks-are-entertainment/&#34;&gt;entertainment&lt;/a&gt;. Pick a topic that you are excited about and fascinated&#xA;by. Let it be a general topic that will have a significant number of people&#xA;interested in it.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;What you want the attendees to be telling their friends about your talk,&#xA;after they go back.  Make it the &lt;a href=&#34;http://blog.briancurtin.com/posts/writing-a-pycon-proposal.html&#34;&gt;objective&lt;/a&gt; of your talk.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Submit a complete, clear and compelling proposal. Show the reviewers that you&#xA;are willing to put in the effort to prepare for and to give a great&#xA;talk. Here are a &lt;a href=&#34;https://github.com/akaptur/pycon-proposals/tree/master/accepted&#34;&gt;bunch of proposals&lt;/a&gt; to see and learn from.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Submit an outline along with your talk. Show the talk can be delivered in the&#xA;given time and will be interesting. Include an indication of how much &lt;a href=&#34;https://github.com/akaptur/pycon-proposals/blob/master/accepted/important_decisions_kaptur_2014.md#outline&#34;&gt;time&lt;/a&gt;&#xA;you intend to spend on each part of your talk.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Choose a good title.  The title is what catches the attention of your&#xA;audience when they are trying to pick a talk.  Avoid buzz words.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Get feedback. Like any writing, feedback can be helpful at all stages &amp;ndash;&#xA;brainstorm while choosing topics to getting critique on the full abstract.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Convince the reviewers that you can give a &lt;a href=&#34;https://emptysqua.re/blog/seven-tips-for-pycon/#note-to-the-organizers&#34;&gt;well-rehearsed and entertaining&lt;/a&gt; &amp;ndash;&#xA;link to previous talks you&amp;rsquo;ve given, include links to any testimonials you&amp;rsquo;ve&#xA;received from your audience, etc.  If you don&amp;rsquo;t have a previously recorded&#xA;talk, give a small talk to your friends or colleagues and have it recorded.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;PyCon US has some &lt;a href=&#34;https://us.pycon.org/2016/speaking/talks/&#34;&gt;good advice&lt;/a&gt; on how to submit a proposal and most of it is&#xA;generic enough for you to use for PyCon India, or any other conference.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;These posts (&lt;a href=&#34;https://emptysqua.re/blog/tech-talks-are-campfires-jesses-three-reasons-you-should-speak-at-pycon/&#34;&gt;1&lt;/a&gt; &lt;a href=&#34;https://emptysqua.re/blog/seven-tips-for-pycon/&#34;&gt;2&lt;/a&gt; and &lt;a href=&#34;https://emptysqua.re/blog/tag/conference-tips/&#34;&gt;more&lt;/a&gt;) by Jesse Davis are so so good!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;I also liked &lt;a href=&#34;https://vimeo.com/96692937&#34;&gt;&amp;ldquo;The Talk on Talks&amp;rdquo;&lt;/a&gt; by Zach Holman.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Martin Fowler on Refactoring @ RubyRogues</title>
      <link>https://punchagan.muse-amuse.in/blog/martin-fowler-on-refactoring-rubyrogues/</link>
      <pubDate>Sat, 25 Oct 2014 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/martin-fowler-on-refactoring-rubyrogues/</guid>
      <description>&lt;p&gt;I stumbled on a &lt;a href=&#34;http://rubyrogues.com/178-rr-book-club-refactoring-ruby-with-martin-fowler/&#34;&gt;Ruby Rogues podcast&lt;/a&gt; yesterday, which had &lt;a href=&#34;http://martinfowlwer.com&#34;&gt;Martin Fowler&lt;/a&gt; as the&#xA;guest.  I really enjoyed the discussion on Refactoring (the noun, the verb and&#xA;the book!)&lt;/p&gt;&#xA;&lt;p&gt;Martin clarified in the podcast that refactoring (the verb/process) is a&#xA;sequence of very small refactorings, while you keep making sure that you can&#xA;run the test suite always.  A refactoring (noun) is a change where you change&#xA;the structure of the code without any externally observable changes, with the&#xA;intent of making it easier to understand and cheaper to change in future.&lt;/p&gt;&#xA;&lt;p&gt;I also really liked the metaphor of a &amp;lsquo;healthy code base&amp;rsquo;.  Refactoring is,&#xA;then, the process of keeping healthy &amp;ndash; exercise, speaking metaphorically.  You&#xA;can stack up all the exercise you need to do, until you get really unfit.&#xA;Refactoring, similarly, needs to be done regularly, to keep the code base&#xA;healthy.  This lets you go faster, in the future.&lt;/p&gt;&#xA;&lt;p&gt;I also really liked the advise about trying to push back the mental contexts&#xA;you build, while trying to debug/understand some code that is not very clear,&#xA;by refactoring the code to make it clearer.  Code needn&amp;rsquo;t be one big chunk of&#xA;cryptographic text.  Code is writing.  It should be clear and understandable.&#xA;Or, at least we should strive to make it so!&lt;/p&gt;&#xA;&lt;p&gt;The discussion, as always on this podcast, was very lively, pleasant and&#xA;enjoyable! Enjoy!&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Best Practices for Scientific Computing</title>
      <link>https://punchagan.muse-amuse.in/blog/best-practices-for-scientific-computing/</link>
      <pubDate>Mon, 24 Dec 2012 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/best-practices-for-scientific-computing/</guid>
      <description>&lt;p&gt;Shantanu and I gave a short talk titled &amp;ldquo;Software Carpentry for&#xA;Scientists&amp;rdquo; for the graduate students of Chemical Engineering&#xA;department, IISc, this Friday.  We gave a short introduction to&#xA;Git, TDD, Numpy/Scipy, etc and mentioned a few things from Greg&#xA;Wilson et al&amp;rsquo;s paper.&lt;/p&gt;&#xA;&lt;p&gt;I promised to revert to them with links to a few resources.  I&#xA;figured it would be more beneficial, if I just put it in a&#xA;publicly available place.&lt;/p&gt;&#xA;&lt;p&gt;A summary of the paper by Greg Wilson et. al., is below.&lt;/p&gt;&#xA;&lt;h2 id=&#34;useful-resources&#34;&gt;Useful resources&lt;/h2&gt;&#xA;&lt;h3 id=&#34;software-carpentry&#34;&gt;Software Carpentry&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Paper by Greg Wilson et. al.&lt;/li&gt;&#xA;&lt;li&gt;Software Carpentry&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;git-and-version-control&#34;&gt;Git &amp;amp; version control&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://bit.ly/VfbOww&#34;&gt;http://bit.ly/VfbOww&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://karlagius.com/2009/01/09/version-control-for-the-masses/&#34;&gt;http://karlagius.com/2009/01/09/version-control-for-the-masses/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://try.github.com&#34;&gt;http://try.github.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://betterexplained.com/articles/a-visual-guide-to-version-control/&#34;&gt;http://betterexplained.com/articles/a-visual-guide-to-version-control/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/&#34;&gt;http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;tdd&#34;&gt;TDD&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://software-carpentry.org/4_0/test/index.html&#34;&gt;http://software-carpentry.org/4_0/test/index.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.google.co.in/?q=TDD+matlab&#34;&gt;https://www.google.co.in/?q=TDD+matlab&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;scipy&#34;&gt;SciPy&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://scipy-lectures.github.com&#34;&gt;http://scipy-lectures.github.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;python&#34;&gt;Python&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://docs.python.org/tutorial&#34;&gt;http://docs.python.org/tutorial&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;gui-tools-in-python&#34;&gt;GUI tools in Python&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://code.enthought.com/projects/traits/docs/html/tutorials/traits_ui_scientific_app.html&#34;&gt;http://code.enthought.com/projects/traits/docs/html/tutorials/traits_ui_scientific_app.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://docs.enthought.com/traits&#34;&gt;http://docs.enthought.com/traits&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://docs.enthought.com/traitsui&#34;&gt;http://docs.enthought.com/traitsui&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://docs.enthought.com/enaml&#34;&gt;http://docs.enthought.com/enaml&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;summary-of-paper-by-greg-wilson-et-dot-al-dot&#34;&gt;Summary of paper by Greg Wilson et. al.&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Write programs for people, not computers&#xA;&lt;ul&gt;&#xA;&lt;li&gt;a program should not require its readers to hold more than a&#xA;handful of facts in memory at once.&lt;/li&gt;&#xA;&lt;li&gt;names should be consistent, distinctive and meaningful.&lt;/li&gt;&#xA;&lt;li&gt;code style and formatting should be consistent.&lt;/li&gt;&#xA;&lt;li&gt;all aspects of software development should be broken down&#xA;into tasks roughly an hour long&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Automate repetitive tasks&#xA;&lt;ul&gt;&#xA;&lt;li&gt;rely on the computer to repeat tasks&lt;/li&gt;&#xA;&lt;li&gt;save recent commands in a file for re-use&lt;/li&gt;&#xA;&lt;li&gt;use a build to automate scientific work-flows&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Use the computer to record history&#xA;&lt;ul&gt;&#xA;&lt;li&gt;software tools should be used to track computational work&#xA;automatically.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Make incremental changes&#xA;&lt;ul&gt;&#xA;&lt;li&gt;work in small steps with frequent feedback and course&#xA;correction&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Use version control&#xA;&lt;ul&gt;&#xA;&lt;li&gt;use a version control system&lt;/li&gt;&#xA;&lt;li&gt;everything that has been created manually should be put in&#xA;version control&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Don&amp;rsquo;t repeat yourself (or others)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;every piece of data must have a single authoritative&#xA;representation in the system&lt;/li&gt;&#xA;&lt;li&gt;code should be modularized rather than copied and pasted&lt;/li&gt;&#xA;&lt;li&gt;re-use code instead of rewriting it&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Plan for mistakes&#xA;&lt;ul&gt;&#xA;&lt;li&gt;add assertions to programs to check their operation&lt;/li&gt;&#xA;&lt;li&gt;use an off-the-shelf unit testing library&lt;/li&gt;&#xA;&lt;li&gt;use all available oracles when testing programs&lt;/li&gt;&#xA;&lt;li&gt;turn bugs into test cases&lt;/li&gt;&#xA;&lt;li&gt;use a symbolic debugger&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Optimize software only after it works correctly&#xA;&lt;ul&gt;&#xA;&lt;li&gt;use a profiler to identify bottlenecks&lt;/li&gt;&#xA;&lt;li&gt;write code in the highest-level language possible&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Document design and purpose, not mechanics&#xA;&lt;ul&gt;&#xA;&lt;li&gt;document interfaces and reasons, not implementations&lt;/li&gt;&#xA;&lt;li&gt;refactor code instead of explaining how it works&lt;/li&gt;&#xA;&lt;li&gt;embed the documentation for a piece of software in that software&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Collaborate&#xA;&lt;ul&gt;&#xA;&lt;li&gt;use pre-merge code reviews&lt;/li&gt;&#xA;&lt;li&gt;use pair programming when bringing someone new up to speed&#xA;and when tackling particularly tricky problems&lt;/li&gt;&#xA;&lt;li&gt;use an issue tracking tool&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;</description>
    </item>
    <item>
      <title>Advice - Programming in Elisp</title>
      <link>https://punchagan.muse-amuse.in/blog/advice-programming-in-elisp/</link>
      <pubDate>Fri, 06 Aug 2010 00:00:00 +0530</pubDate>
      <guid>https://punchagan.muse-amuse.in/blog/advice-programming-in-elisp/</guid>
      <description>&lt;p&gt;Below is a mail sent by Eric Schulte to the org-mode mailing list&#xA;answering a query on how to write elisp for org-mode. I am&#xA;reproducing it here, since it is useful advice for me. The actual&#xA;thread is &lt;a href=&#34;http://permalink.gmane.org/gmane.emacs.orgmode/27579&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;The way that I learned how to program in emacs lisp was mainly&#xA;using two commands `elisp-index-search&amp;rsquo; bound to `C-h e&amp;rsquo; on my&#xA;system, and most importantly `describe-function&amp;rsquo; bound to `C-h f&amp;rsquo;.&#xA;With `describe-function&amp;rsquo; you can look at the source code of&#xA;functions whose behavior you are familiar with, you can then copy&#xA;portions of the code to your &lt;strong&gt;scratch&lt;/strong&gt; buffer where they can be&#xA;edited and evaluated with `eval-defun&amp;rsquo; bound to `C-M-x&amp;rsquo;.  Now with&#xA;Babel, instead of doing this in the scratch buffer you could do&#xA;this in emacs-lisp code blocks in an org file, enabling notes and&#xA;hierarchical organization &amp;ndash; it can be nice to have your noodling&#xA;all collected in one file for later reference.&lt;/p&gt;&#xA;&lt;p&gt;If you are going to do any serious work with lisp, I would&#xA;emphatically recommend using paredit-mode, and becoming friends&#xA;with the Sexp movement functions&lt;/p&gt;&#xA;&lt;p&gt;C-M-f&#x9;runs the command paredit-forward&#xA;C-M-b&#x9;runs the command paredit-backward&#xA;C-M-u&#x9;runs the command backward-up-list&#xA;C-M-k&#x9;runs the command kill-sexp&#xA;C-y&#x9;runs the command yank&lt;/p&gt;&#xA;&lt;p&gt;They allow you to manipulate lisp code on the level of logical&#xA;expressions, the utility of which can not be over stated.&lt;/p&gt;&#xA;&lt;p&gt;As for working with Org-mode in particular, I&amp;rsquo;d recommend looking&#xA;at the documentation and source-code of Org-mode functions with&#xA;`describe-function&amp;rsquo;, and then looking for how these functions are&#xA;actually used in the Org-mode code base with `rgrep&#39;.&lt;/p&gt;&#xA;&lt;p&gt;For a more structured learning experience, I&amp;rsquo;ve heard very good&#xA;things about &lt;a href=&#34;http://www.gnu.org/software/emacs/emacs-lisp-intro/&#34;&gt;http://www.gnu.org/software/emacs/emacs-lisp-intro/&lt;/a&gt;,&#xA;although I haven&amp;rsquo;t used it myself.&lt;/p&gt;&#xA;&lt;p&gt;Hope this helps.  Happy Hacking &amp;ndash; Eric&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;</description>
    </item>
  </channel>
</rss>
