<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>software-engineering on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/software-engineering/</link>
    <description>Recent content in software-engineering on S Anand</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 19 Mar 2026 14:58:26 +0530</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/software-engineering/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AI in SDLC at PyConf</title>
      <link>https://www.s-anand.net/blog/ai-in-sdlc-at-pyconf/</link>
      <pubDate>Thu, 19 Mar 2026 14:58:26 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/ai-in-sdlc-at-pyconf/</guid>
      <description>&lt;p&gt;I was at a panel on &lt;a href=&#34;https://2026.pyconfhyd.org/&#34;&gt;AI in SDLC&lt;/a&gt; at PyConf. Here&amp;rsquo;s the summary of my advice:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Process&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make AI your &lt;em&gt;entire&lt;/em&gt; SDLC loop. Record client calls, feed them to a coding agent to directly build &amp;amp; deploy the solution.&lt;/li&gt;
&lt;li&gt;Record your prompts, run post-mortems, and distill them into &lt;code&gt;SKILLS.md&lt;/code&gt; files for reuse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Prompting&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ask AI to make output &lt;em&gt;more reviewable&lt;/em&gt;. Don&amp;rsquo;t waste time reviewing unclear output.&lt;/li&gt;
&lt;li&gt;Prefer &lt;em&gt;directional&lt;/em&gt; feedback (feeling, emotion, intent) over implementational.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Also&lt;/em&gt; give AI freedom to do things its way. Learn from that - you&amp;rsquo;ll be surprised.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Learning&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefer interns / outsiders over experts. They don&amp;rsquo;t slow the process with preconceptions and leverage AI better.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Stop&lt;/em&gt; learning what AI does well. Learn what AI fails at - using AI. Keep re-assessing these.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Adoption&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developer using AI are &lt;em&gt;still&lt;/em&gt; accountable for their code. (Agents might become accountable in the future.)&lt;/li&gt;
&lt;li&gt;Start with new projects: less competition, fewer preconceptions, lower risk.&lt;/li&gt;
&lt;li&gt;Start in domains where failure is OK, rather than making AI safe enough for high-risk domains.&lt;/li&gt;
&lt;li&gt;Create safe spaces where hallucinations don&amp;rsquo;t matter and run experiments there to learn what AI can do.&lt;/li&gt;
&lt;li&gt;Plan for where AI&amp;rsquo;ll be a year later. It&amp;rsquo;s growing &lt;em&gt;very&lt;/em&gt; rapidly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The full details of the panel discussion are at &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-15-pyconf-ai-in-sdlc/&#34;&gt;Who Owns the Commit?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/talks/2026-03-15-pyconf-ai-in-sdlc/sketchnote.avif&#34;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>If a bot passes your exam, what are you teaching?</title>
      <link>https://www.s-anand.net/blog/if-a-bot-passes-your-exam-what-are-you-teaching/</link>
      <pubDate>Sun, 09 Nov 2025 15:53:58 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/if-a-bot-passes-your-exam-what-are-you-teaching/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;If a bot passes your exam, what are you teaching?&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/calvin-hobbes-exam.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s incredible how far coding agents have come. They can now solve complete exams. That changes what we should measure.&lt;/p&gt;
&lt;p&gt;My Tools in Data Science course has a &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2025-09-roe&#34;&gt;Remote Online Exam&lt;/a&gt;. It was so difficult that, in 2023, it sparked threads titled &amp;ldquo;What is the purpose of an impossible ROE?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Today, despite making the test harder, students solve it easily with &lt;a href=&#34;https://claude.ai/&#34;&gt;Claude&lt;/a&gt;, &lt;a href=&#34;https://chatgpt.com/&#34;&gt;ChatGPT&lt;/a&gt;, etc. Here&amp;rsquo;s today&amp;rsquo;s score distribution:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-14.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;I solved one question with &lt;a href=&#34;https://developers.openai.com/codex/cli/&#34;&gt;Codex CLI&lt;/a&gt;. I ran I &lt;code&gt;chrome --remote-debugging-port=9222&lt;/code&gt; and prompted Codex to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Use CDP to visit &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2025-09-roe&#34;&gt;https://exam.sanand.workers.dev/tds-2025-09-roe&lt;/a&gt; and solve Q4. Click on the “Check” button to verify the solution.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That was it. ~6 minutes and ~50 cents later, it solved the problem.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://asciinema.org/a/xni6OMt38oQSyhYLHLY3fwncS&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://asciinema.org/a/xni6OMt38oQSyhYLHLY3fwncS.svg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This works reliably. It worked 3/3 times.&lt;/p&gt;
&lt;p&gt;This runs in parallel. I can answer different questions in different Codex sessions.&lt;/p&gt;
&lt;p&gt;This is already in use. Several students got 10/10 in 15 minutes - on a 45 minute exam.&lt;/p&gt;
&lt;p&gt;So I need better evaluations. Instead of &amp;ldquo;Can you(r agent) solve this?&amp;rdquo;, I should check if they can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turn a messy brief into an agent-friendly spec + plan&lt;/li&gt;
&lt;li&gt;Set up and connect the right tools&lt;/li&gt;
&lt;li&gt;Solve within a time and cost budget&lt;/li&gt;
&lt;li&gt;Test &amp;amp; debug without a human&lt;/li&gt;
&lt;li&gt;Recover from errors&lt;/li&gt;
&lt;li&gt;Adapt to new situations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, code is the by-product (of AI coding or copying). Learning lives in the &lt;strong&gt;execution logs&lt;/strong&gt;. That&amp;rsquo;s what I should evaluate.&lt;/p&gt;
&lt;p&gt;Point I&amp;rsquo;m pondering: If a bot can pass my exam, what exactly am I teaching?&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/posts/sanand0_its-incredible-how-far-coding-agents-have-activity-7393317571892207616-VCUr&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title></title>
      <link>https://www.s-anand.net/blog/if-you-re-a-seasoned-developer-that-enjoys-working-with-data-have-good-front-end/</link>
      <pubDate>Mon, 08 Apr 2019 10:16:58 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/if-you-re-a-seasoned-developer-that-enjoys-working-with-data-have-good-front-end/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re a seasoned developer that enjoys working with data, have good front-end skills, and are challenged by impossible deadlines, please drop me a note. I&amp;rsquo;d love to work with you at Gramener Mumbai.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/feed/update/urn%3Ali%3Ashare%3A6520962522248511488&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Facts and Fallacies in Software Engineering</title>
      <link>https://www.s-anand.net/blog/facts-and-fallacies-in-software-engineering/</link>
      <pubDate>Tue, 22 Aug 2006 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/facts-and-fallacies-in-software-engineering/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.informit.com/articles/article.asp?p=30091&amp;amp;rl=1&#34;&gt;Facts in Software Engineering&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;People&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The most important factor in software work is the quality of the programmers.&lt;/li&gt;
&lt;li&gt;The best programmers are up to 28 times better than the worst programmers.&lt;/li&gt;
&lt;li&gt;Adding people to a late project makes it later.&lt;/li&gt;
&lt;li&gt;The working environment has a profound impact on productivity and quality.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Tools and Techniques&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Hype (about tools and techniques) is the plague on the house of software.&lt;/li&gt;
&lt;li&gt;New tools/techniques cause an initial loss of productivity/quality.&lt;/li&gt;
&lt;li&gt;Software developers talk a lot about tools, but seldom use them.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Estimation&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;8&#34;&gt;
&lt;li&gt;One of the two most common causes of runaway projects is poor estimation.&lt;/li&gt;
&lt;li&gt;Software estimation usually occurs at the wrong time.&lt;/li&gt;
&lt;li&gt;Software estimation is usually done by the wrong people.&lt;/li&gt;
&lt;li&gt;Software estimates are rarely corrected as the project proceeds.&lt;/li&gt;
&lt;li&gt;It is not surprising that software estimates are bad. But we live and die by them anyway!&lt;/li&gt;
&lt;li&gt;There is a disconnect between software management and their programmers.&lt;/li&gt;
&lt;li&gt;The answer to a feasibility study is almost always &amp;ldquo;yes&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Reuse&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;15&#34;&gt;
&lt;li&gt;Reuse-in-the-small is a well-solved problem.&lt;/li&gt;
&lt;li&gt;Reuse-in-the-large remains a mostly unsolved problem.&lt;/li&gt;
&lt;li&gt;Reuse-in-the-large works best for families of related systems.&lt;/li&gt;
&lt;li&gt;Reusable components are three times as hard to build, and should be tried out in three settings.&lt;/li&gt;
&lt;li&gt;Modification of reused code is particularly error-prone.&lt;/li&gt;
&lt;li&gt;Design pattern reuse is one solution to the problems of code reuse.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Complexity&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;21&#34;&gt;
&lt;li&gt;For every 25 percent increase in problem complexity, there is a 100 percent increase in solution complexity.&lt;/li&gt;
&lt;li&gt;Eighty percent of software work is intellectual. A fair amount of it is creative. Little of it is clerical.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;23&#34;&gt;
&lt;li&gt;One of the two most common causes of runaway projects is unstable requirements.&lt;/li&gt;
&lt;li&gt;Requirements errors are the most expensive to fix during production.&lt;/li&gt;
&lt;li&gt;Missing requirements are the hardest requirements errors to correct.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Design&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;26&#34;&gt;
&lt;li&gt;Explicit requirements &amp;ldquo;explode&amp;rdquo; as implicit (design) requirements for a solution evolve.&lt;/li&gt;
&lt;li&gt;There is seldom one best design solution to a software problem.&lt;/li&gt;
&lt;li&gt;Design is a complex, iterative process. Initial design solutions are usually wrong, and certainly not optimal.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Coding&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;29&#34;&gt;
&lt;li&gt;Designer &amp;ldquo;primitives&amp;rdquo; (solutions they can readily code) rarely match programmer &amp;ldquo;primitives&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;COBOL is a very bad language, but all the others (for business applications) are so much worse.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Error-removal&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;31&#34;&gt;
&lt;li&gt;Error-removal is the most time-consuming phase of the life cycle.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;32&#34;&gt;
&lt;li&gt;Software is usually tested at best at the 55-60 percent (branch) coverage level.&lt;/li&gt;
&lt;li&gt;100 percent coverage is still far from enough.&lt;/li&gt;
&lt;li&gt;Test tools are essential, but many are rarely used.&lt;/li&gt;
&lt;li&gt;Test automation rarely is. Most testing activities cannot be automated.&lt;/li&gt;
&lt;li&gt;Programmer-created, built-in, debug code is an important supplement to testing tools.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Reviews/Inspections&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;37&#34;&gt;
&lt;li&gt;Rigorous inspections can remove up to 90 percent of errors before the first test case is run.&lt;/li&gt;
&lt;li&gt;But rigorous inspections should not replace testing.&lt;/li&gt;
&lt;li&gt;Post-delivery reviews (some call them &amp;ldquo;retrospectives&amp;rdquo;) are important, and seldom performed.&lt;/li&gt;
&lt;li&gt;Reviews are both technical and sociological, and both factors must be accommodated.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Maintenance&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;41&#34;&gt;
&lt;li&gt;Maintenance typically consumes 40-80 percent of software costs. It is probably the most important life cycle phase of software.&lt;/li&gt;
&lt;li&gt;Enhancements represent roughly 60 percent of maintenance costs.&lt;/li&gt;
&lt;li&gt;Maintenance is a solution, not a problem.&lt;/li&gt;
&lt;li&gt;Understanding the existing product is the most difficult task of maintenance.&lt;/li&gt;
&lt;li&gt;Better methods lead to MORE maintenance, not less.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Quality&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;46&#34;&gt;
&lt;li&gt;Quality IS: a collection of attributes.&lt;/li&gt;
&lt;li&gt;Quality is NOT: user satisfaction, meeting requirements, achieving cost/schedule, or reliability.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Reliability&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;48&#34;&gt;
&lt;li&gt;There are errors that most programmers tend to make.&lt;/li&gt;
&lt;li&gt;Errors tend to cluster.&lt;/li&gt;
&lt;li&gt;There is no single best approach to software error removal.&lt;/li&gt;
&lt;li&gt;Residual errors will always persist. The goal should be to minimize or eliminate severe errors.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Efficiency&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;52&#34;&gt;
&lt;li&gt;Efficiency stems more from good design than good coding.&lt;/li&gt;
&lt;li&gt;High-order-language code can be about 90 percent as efficient as comparable assembler code.&lt;/li&gt;
&lt;li&gt;There are tradeoffs between size and time optimization.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;About Research&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;55&#34;&gt;
&lt;li&gt;Many researchers advocate rather than investigate.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;http://www.informit.com/articles/article.asp?p=30032&amp;amp;rl=1&#34;&gt;Fallacies in Software Engineering&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;About Management&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fallacy: You can&amp;rsquo;t manage what you can&amp;rsquo;t measure.&lt;/li&gt;
&lt;li&gt;Fallacy: You can manage quality into a software product.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;People&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Fallacy: Programming can and should be egoless.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Tools and Techniques&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Fallacy: Tools and techniques: one size fits all.&lt;/li&gt;
&lt;li&gt;Fallacy: Software needs more methodologies.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Estimation&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Fallacy: To estimate cost and schedule, first estimate lines of code.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;Fallacy: Random test input is a good way to optimize testing.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Reviews&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;8&#34;&gt;
&lt;li&gt;Fallacy: &amp;ldquo;Given enough eyeballs, all bugs are shallow&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Maintenance&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;9&#34;&gt;
&lt;li&gt;Fallacy: The way to predict future maintenance cost and to make product replacement decisions is to look at past cost data.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;About Education&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;10&#34;&gt;
&lt;li&gt;Fallacy: You teach people how to program by showing them how to write programs.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These are from Robert Glass&amp;rsquo; book &lt;a href=&#34;http://www.amazon.com/gp/product/0321117425/?tag=sanand-20&#34;&gt;Facts and Fallacies in Software Engineering&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Classic texts in computer science</title>
      <link>https://www.s-anand.net/blog/classic-texts-in-computer-science/</link>
      <pubDate>Wed, 21 Jun 2006 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/classic-texts-in-computer-science/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.zafar.se/bkz/wiki/view/43bafac8c8570f4f&#34;&gt;Classic texts in computer science&lt;/a&gt;. Worth reading for the sheer insight.&lt;/p&gt;
&lt;p&gt;Update: The link didn&amp;rsquo;t seem to work in Feb 2007. Here&amp;rsquo;s the list.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.spatial.maine.edu/~worboys/processes/hoare%20axiomatic.pdf&#34;&gt;An axiomatic basis for computer programming&lt;/a&gt; by C. A. R. Hoare&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.usingcsp.com/&#34;&gt;Communicating Sequential Processes (CSP)&lt;/a&gt; by C. A. R. Hoare&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://homepages.inf.ed.ac.uk/gdp/publications/cbn_cbv_lambda.pdf&#34;&gt;Call-by-name, call-by-value, and the lambda calculus&lt;/a&gt; by Gordon Plotkin&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;ftp://ftp.cs.cmu.edu/user/jcr/theotypestr.pdf&#34;&gt;Towards a theory of type structure&lt;/a&gt; by John C. Reynolds&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;ftp://ftp.cs.cmu.edu/user/jcr/defint.ps.gz&#34;&gt;Definitional interpreters for higher-order programming languages&lt;/a&gt; by John C. Reynolds&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.slac.stanford.edu/pubs/slacreports/slac-r-114.html&#34;&gt;An APL Machine 1970&lt;/a&gt; by Philip S. Abrams&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.pipeline.com/~hbaker1/&#34;&gt;Henry Baker&amp;rsquo;s Archive of Research Papers (many classic Lisp papers)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www-db.stanford.edu/pub/papers/google.pdf&#34;&gt;The Anatomy of a Large-Scale Hypertextual Web Search Engin&lt;/a&gt; by Sergey Brin and Lawrence Page&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www-inst.eecs.berkeley.edu/~maratb/readings/NoSilverBullet.html&#34;&gt;No Silver Bullet: Essence and Accidents of Software Engineering&lt;/a&gt; by Frederic P. Brooks, Jr.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.unil.ch/webdav/site/ling/shared/ElementStatText/Shannon1948.pdf&#34;&gt;A Mathematical Theory of Communication&lt;/a&gt; by Claude Shannon&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cs.ucla.edu/~jkong/research/security/shannon1949.pdf&#34;&gt;Communication Theory of Secrecy Systems&lt;/a&gt; by Claude Shannon&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cs.ubc.ca/~murphyk/Bayes/Charniak_91.pdf&#34;&gt;Bayesian Networks without Tears&lt;/a&gt; by Eugene Charniak&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.stanford.edu/class/ee398a/resources/ziv:77-SDC.pdf&#34;&gt;A Universal Algorithm for Sequential Data Compression&lt;/a&gt; by Jacob Ziv and Abraham Lempel&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cs.duke.edu/~junyang/cps216/papers/codd-1970.pdf&#34;&gt;A Relational Model of Data for Large Shared Data Banks 1970&lt;/a&gt; by Edgar F. Codd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://compilers.iecc.com/crenshaw/&#34;&gt;Let&amp;rsquo;s Build a Compiler 1988-1995&lt;/a&gt; by Jack Crenshaw&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://gnowledge.sourceforge.net/damashek-ngrams.pdf&#34;&gt;Gauging Similarity via N-Grams: Language-Independent Sorting, Categorization, and Retrieval of Text&lt;/a&gt; by Marc Damashek&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.dreamsongs.com/WorseIsBetter.html&#34;&gt;Worse Is Better&lt;/a&gt; by Richard P. Gabriel&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cs.berkeley.edu/~necula/cs263/handouts/hoarehints.pdf&#34;&gt;Hints on Programming Language Design&lt;/a&gt; by C.A.R. Hoare&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.math.chalmers.se/~rjmh/Papers/whyfp.pdf&#34;&gt;Why Functional Programming Matters&lt;/a&gt; by John Hughes&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.research.ibm.com/journal/rd/174/ibmrd1704F.pdf&#34;&gt;The Design of APL&lt;/a&gt; by Kenneth E. Iverson&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.metaobject.com/papers/Smallhistory.pdf&#34;&gt;The Early History Of Smalltalk&lt;/a&gt; by Alan Kay&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://fresh.homeunix.net/~luke/misc/knuth-turingaward.pdf&#34;&gt;Computer Programming as an Art&lt;/a&gt; by Donald E. Knuth&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cs.utah.edu/~wilson/compilers/old/papers/p157-landin.pdf&#34;&gt;The next 700 programming languages&lt;/a&gt; by Peter J. Landin&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www-formal.stanford.edu/jmc/recursive.html&#34;&gt;Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I) 1960&lt;/a&gt; by John McCarthy&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cs.wisc.edu/~bolo/shipyard/4th_1970/4th_1970.html&#34;&gt;FORTH - A Language for Interactive Computing&lt;/a&gt; by Charles H.Moore&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.norvig.com/21-days.html&#34;&gt;Teach Yourself Programming in Ten Years 2001&lt;/a&gt; by Peter Norvig&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.nhplace.com/kent/PS/About-PS.html&#34;&gt;Parenthetically Speaking, a collection of essays from the 1990s&lt;/a&gt; by Kent M. Pitman&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;ftp://publications.ai.mit.edu/ai-publications/500-999/AITR-595.ps&#34;&gt;The Definition and Implementation of a Computer Language based on constraints&lt;/a&gt; by Guy Lewis Steele Jr.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cs.umbc.edu/331/resources/papers/gls-grow-lang.pdf&#34;&gt;Growing a Language&lt;/a&gt; by Guy Lewis Steele Jr.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www-pu.informatik.uni-tuebingen.de/users/klaeren/epigrams.html&#34;&gt;Epigrams on Programming&lt;/a&gt; by Alan J. Perlis&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cs.helsinki.fi/u/gionis/cc05/cook.pdf&#34;&gt;The Complexity of Theorem Proving Procedures&lt;/a&gt; by Stephen A. Cook&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://web.media.mit.edu/~minsky/papers/steps.html&#34;&gt;Steps Toward Artificial Intelligence&lt;/a&gt; by Marvin Minsky&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://library.readscheme.org/page1.html&#34;&gt;The Original &amp;lsquo;Lambda Papers&amp;rsquo;&lt;/a&gt; by Guy Steele and Gerald Sussman&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://theory.lcs.mit.edu/~rivest/rsapaper.pdf&#34;&gt;A Method for Obtaining Digital Signatures and Public-Key Cryptosystems&lt;/a&gt; by R.L. Rivest, A. Shamir, and L. Adleman&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://cm.bell-labs.com/cm/cs/who/dmr/cacm.html&#34;&gt;The UNIX Time-Sharing System&lt;/a&gt; by Dennis Ritchie and Ken Thompson&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;jawahar&lt;/strong&gt; &lt;em&gt;6 Feb 2007 5:52 am&lt;/em&gt;:
anand this link is not working !!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://maxviv.wordpress.com/2016/06/05/classic-texts-in-computer-science/&#34;&gt;Classic-texts-in-computer-science – maxviv&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;5 Jun 2016 7:15 pm&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[…] Classic texts in computer science […]&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Why we all sell code with bugs</title>
      <link>https://www.s-anand.net/blog/why-we-all-sell-code-with-bugs/</link>
      <pubDate>Fri, 26 May 2006 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/why-we-all-sell-code-with-bugs/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://technology.guardian.co.uk/weekly/story/0,,1781895,00.html&#34;&gt;Why we all sell code with bugs&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;All the reasons are tied up in one truth: every time you fix a bug, you risk introducing another. Don&amp;rsquo;t we all start out with the belief that software only gets better as we work on it? Nobody on our team intentionally creates new bugs. Yet we have done accidentally.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    <item>
      <title>Top 10 IT Google Videos</title>
      <link>https://www.s-anand.net/blog/top-10-it-google-videos/</link>
      <pubDate>Sun, 25 Dec 2005 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/top-10-it-google-videos/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://chir.ag/tech/?36&#34;&gt;Top 10 IT Google Videos&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Metafor</title>
      <link>https://www.s-anand.net/blog/metafor/</link>
      <pubDate>Tue, 29 Mar 2005 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/metafor/</guid>
      <description>&lt;p&gt;Metafor is a &lt;a href=&#34;http://www.trnmag.com/Stories/2005/032305/Tool_turns_English_to_code_032305.html&#34;&gt;tool that turns English into code&lt;/a&gt;. Check out the &lt;a href=&#34;http://web.media.mit.edu/%7Ehugo/demos/metafor-bartender-simple.mov&#34;&gt;movie demo&lt;/a&gt; and &lt;a href=&#34;http://web.media.mit.edu/~hugo/research/#metafor&#34;&gt;Hugo&amp;rsquo;s Metafor website&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Tips on writing better software</title>
      <link>https://www.s-anand.net/blog/tips-on-writing-better-software/</link>
      <pubDate>Mon, 11 Oct 2004 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/tips-on-writing-better-software/</guid>
      <description>&lt;p&gt;Alan Cox: &lt;a href=&#34;http://www.pingwales.co.uk/software/cox-on-better-software_1.html&#34;&gt;Tips on writing better software&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Outsource your own job</title>
      <link>https://www.s-anand.net/blog/outsource-your-own-job/</link>
      <pubDate>Sat, 21 Aug 2004 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/outsource-your-own-job/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://timesofindia.indiatimes.com/articleshow/769493.cms&#34;&gt;Outsource your own job&lt;/a&gt;. A programmer outsourced his job to an Indian programmer. Salary arbitrage: $67,000 - $12,000 = $55,000. He&amp;rsquo;s planning to get another job and do this again. (It&amp;rsquo;s probably &lt;a href=&#34;http://www.wired.com/wired/archive/12.07/view.html?pg=2&#34;&gt;not true&lt;/a&gt;, though)&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Great Hackers</title>
      <link>https://www.s-anand.net/blog/great-hackers/</link>
      <pubDate>Thu, 29 Jul 2004 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/great-hackers/</guid>
      <description>&lt;p&gt;Excellent article by Paul Graham on &lt;a href=&#34;http://www.paulgraham.com/gh.html&#34;&gt;great hackers&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Blogger at Google</title>
      <link>https://www.s-anand.net/blog/blogger-at-google/</link>
      <pubDate>Sun, 09 Feb 2003 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/blogger-at-google/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.webweavertech.com/ovidiu/weblog/archives/000160.html&#34;&gt;A blogger&amp;rsquo;s first week at Google&lt;/a&gt;. &lt;a href=&#34;http://www.webweavertech.com/ovidiu/weblog/index.html&#34;&gt;Ovidiu Predescu&lt;/a&gt;. &lt;a href=&#34;http://google.blogspace.com/archives/000816&#34;&gt;via GoogleBlog&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Famous software glitches</title>
      <link>https://www.s-anand.net/blog/famous-software-glitches/</link>
      <pubDate>Thu, 12 Sep 2002 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/famous-software-glitches/</guid>
      <description>&lt;p&gt;Speaking of bugs, here are some &lt;a href=&#34;http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugse.html&#34;&gt;famous software glitches&lt;/a&gt; &amp;ndash; right from the Patriot missiles misfiring to the London Millenium bridge wobbling. Some links are broken, though. (&lt;a href=&#34;http://www.cs.tau.ac.il/~nachumd/verify/horror.html&#34;&gt;More glitches&lt;/a&gt; and &lt;a href=&#34;http://www.computergripes.com/Other.Computer.Gripers.html&#34;&gt;links&lt;/a&gt;)&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Music helps identify software bugs</title>
      <link>https://www.s-anand.net/blog/music-helps-identify-software-bugs/</link>
      <pubDate>Thu, 12 Sep 2002 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/music-helps-identify-software-bugs/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.newscientist.com/news/news.jsp?id=ns99992757&#34;&gt;Music helps identify software bugs&lt;/a&gt;. I&amp;rsquo;m sure it can be extended to many other forms of ordered data. DNA sequences, time series, etc.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Joel on Software</title>
      <link>https://www.s-anand.net/blog/joel-on-software/</link>
      <pubDate>Thu, 09 Aug 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/joel-on-software/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.joelonsoftware.com/&#34;&gt;Joel&lt;/a&gt; writes on software. &amp;ldquo;&lt;a href=&#34;http://www.joelonsoftware.com/stories/storyReader$368&#34;&gt;Good software takes 10 years&lt;/a&gt;&amp;rdquo; is a good read.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The Cathedral and the Bazaar</title>
      <link>https://www.s-anand.net/blog/the-cathedral-and-the-bazaar/</link>
      <pubDate>Sun, 11 Feb 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/the-cathedral-and-the-bazaar/</guid>
      <description>&lt;p&gt;Eric has updated &lt;a href=&#34;http://www.tuxedo.org/~esr/writings/cathedral-bazaar/&#34;&gt;The Cathedral &amp;amp; the Bazaar&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Software horror stories</title>
      <link>https://www.s-anand.net/blog/software-horror-stories/</link>
      <pubDate>Thu, 18 Jan 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/software-horror-stories/</guid>
      <description>&lt;p&gt;Software can kill. Literally. Read &lt;a href=&#34;http://www-courses.cs.uiuc.edu/~cs376/horror.html&#34;&gt;software horror stories&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Microsoft interview question</title>
      <link>https://www.s-anand.net/blog/microsoft-interview-question/</link>
      <pubDate>Mon, 15 Jan 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/microsoft-interview-question/</guid>
      <description>&lt;p&gt;&amp;ldquo;Write a one-line C expression to determine if a number is a power of 2&amp;rdquo;. Microsoft is famous for &lt;a href=&#34;http://www-scf.usc.edu/~bondalap/ais/msqs.html&#34;&gt;asking such questions&lt;/a&gt; to their programmers. Or you might want to find out what the assembly code&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;CWD
XOR AX, DX
SUB AX, DX
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;does. &lt;a href=&#34;http://www.ece.utexas.edu/~satti/brainteasers.html&#34;&gt;Satish&amp;rsquo;s site&lt;/a&gt; has the answer, but not the question. More questions: &lt;a href=&#34;http://www.acetheinterview.com/qanda/algorithms.html&#34;&gt;1&lt;/a&gt; &lt;a href=&#34;http://www.eecs.uic.edu/~skishenc/technical/technical4.htm&#34;&gt;2&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
