<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkAFQ3g6eyp7ImA9WhBbGEw.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230</id><updated>2013-05-18T00:55:12.613+05:30</updated><category term="google search web-search tips tricks cheat-sheet stack-overflow" /><category term="freedom-of-speech" /><category term="Scrawl.com" /><category term="scrapy" /><category term="tweetingMachine" /><category term="AVC.com" /><category term="computer-graphics" /><category term="China" /><category term="free" /><category term="Electric-Cloud" /><category term="nature" /><category term="product-pricing" /><category term="free-books" /><category term="video-encoding" /><category term="Unix-utilities-for-Windows" /><category term="sed" /><category term="performance-tuning" /><category term="sustainability" /><category term="primary-keys" /><category term="mesh-networking" /><category term="browser-side-programming" /><category term="chaunk" /><category term="transcoding" /><category term="SwingTIP" /><category term="legacy-apps" /><category term="Python-winsound-module" /><category term="AI-music-apps" /><category term="DuckDuckGo" /><category term="sort" /><category term="Spread-toolkit" /><category term="online-turtle-graphics" /><category term="Google+" /><category term="Fotoblur" /><category term="desktop-application-frameworks" /><category term="PricingWire.com" /><category term="Twython" /><category term="video-processing" /><category term="Text-To-Speech" /><category term="google internet-bus google-internet-bus india education innovation" /><category term="azul-systems java scaling scalability innovation" /><category term="orgs-using-python" /><category term="solum" /><category term="Offline-Wikipedia" /><category term="morse-code" /><category term="infotainment" /><category term="legal" /><category term="web-programming" /><category term="travel-sites" /><category term="networking" /><category term="NumPy" /><category term="Matchmaker" /><category term="AdSense" /><category term="credit-card-offers" /><category term="desktop" /><category term="code-generation" /><category term="program-design" /><category term="Larry-Wall" /><category term="telecommuting" /><category term="2011 predictions JWT" /><category term="mp3" /><category term="we-use-that" /><category term="D-Bus" /><category term="Python-web-servers" /><category term="Amazon-Glacier" /><category term="matplotlib" /><category term="PHP-Hacks" /><category term="Try-OCaml" /><category term="SWIFT-on-Twitter" /><category term="pdf pdf-creation crocodoc acrobat adobe google-apps" /><category term="DSLWiki" /><category term="codingbat.com" /><category term="Repost.us" /><category term="serialization" /><category term="PLT-Scheme" /><category term="IBM-PC-Jr" /><category term="BSD" /><category term="free-AI-course" /><category term="internationalization" /><category term="data-parallel-Python" /><category term="muji design simplicity ipad iphone mobile smartphone" /><category term="OLEDB" /><category term="Trolltech" /><category term="SWIFT" /><category term="PipeController" /><category term="programming-paradigms" /><category term="plotting-in-the-browser" /><category term="online-EPUB-readers" /><category term="podcasts" /><category term="pinger" /><category term="productivity" /><category term="Chrome-Web-store" /><category term="Offline-Wiki" /><category term="Python-Module-Of-The-Week" /><category term="pipes-in-python" /><category term="urllib2" /><category term="python languages programming-languages opinion" /><category term="browser-based-Python" /><category term="Google-Colossus" /><category term="BizPhone" /><category term="AppFog" /><category term="data-mining" /><category term="OpenFlow" /><category term="indexing" /><category term="Gondor" /><category term="PDF-to-EPUB" /><category term="Magcloud" /><category term="Copperhead" /><category term="mathematical-induction" /><category term="Cher-Wang HTC smartphones mobile Android innovation" /><category term="self-publishing" /><category term="XML-RPC" /><category term="Slow-Capital" /><category term="Ruby" /><category term="PyRun" /><category term="Les-Paul" /><category term="PDFTextStream" /><category term="intel apple thunderbolt LightPeak data-transfer usb usb2 usb3 firewire" /><category term="FeedDemon" /><category term="Python-tricks" /><category term="Delicious.com" /><category term="caching" /><category term="libmagic" /><category term="entitlement" /><category term="online-education" /><category term="mobile" /><category term="startup-stories" /><category term="running-code-online" /><category term="Linode" /><category term="Singapore-startups" /><category term="GUI-toolkits" /><category term="power-saving" /><category term="cross-platform-software" /><category term="parottas" /><category term="pip" /><category term="Clojure" /><category term="storage" /><category term="WebKit" /><category term="Windows-utilities" /><category term="installation-tools" /><category term="binary-file-handling" /><category term="outsourcing" /><category term="HTTP" /><category term="Dart-language" /><category term="graphics-libraries" /><category term="gmail email spam techniques tips" /><category term="Enlightenment-group" /><category term="Ars-Technica" /><category term="music indian-music instrumental-music flute bansuri hari-prasad-chaurasia ragas" /><category term="Git" /><category term="Bruce-Eckel" /><category term="Finland" /><category term="Infosys-Cloud-Ecosystem-Hub" /><category term="jon-bentley" /><category term="Africa" /><category term="InPageAnalytics" /><category term="PySiteCreator" /><category term="Mayank-Sharma" /><category term="SoftBank" /><category term="python frameworks web-frameworks" /><category term="Mind-Storm-Software" /><category term="Jeff-Bezos" /><category term="Pamela-Jones" /><category term="messaging-libraries" /><category term="ignore" /><category term="FORTH" /><category term="RPython" /><category term="multi-core" /><category term="jslinux" /><category term="Pandoc" /><category term="NASDAQ" /><category term="RMI" /><category term="SIGPLAN" /><category term="Etsy" /><category term="Indian-web-sites" /><category term="distributed-database" /><category term="RESTful" /><category term="exokernel" /><category term="Google-Dremel" /><category term="Vim" /><category term="innovation scala scala-language JVM funding open-source foss floss heise-effect slashdotted google-translate" /><category term="android" /><category term="Splunk" /><category term="xpdf" /><category term="FAQs" /><category term="pydsh" /><category term="Restlet" /><category term="selling-software" /><category term="O'Reilly-Media" /><category term="Frank-Yan" /><category term="interviews" /><category term="PyRTF" /><category term="Live-CDs" /><category term="HomeSite" /><category term="Story-of-Bageshwori" /><category term="web-content-audit-tools" /><category term="Open-Text-Summarizer" /><category term="Borland" /><category term="x86-64" /><category term="Yottaa" /><category term="FarmLogs" /><category term="command-line-utility" /><category term="photocopying" /><category term="Weebly" /><category term="Visual-Basic" /><category term="picasso" /><category term="PageTrawler" /><category term="Linux-Credit-Card" /><category term="cloud cloud-computing google" /><category term="Go-by-example" /><category term="sys._current_frames" /><category term="PycURL" /><category term="Python-TableFu" /><category term="DreamPie" /><category term="Meego" /><category term="hacker-news" /><category term="PyMob" /><category term="Python-on-GPU" /><category term="mongrel2 mongrel web-servers http-servers zed-shaw innovation C Python" /><category term="consulting" /><category term="solar-energy" /><category term="Hadoop" /><category term="structured-text" /><category term="CRM SnapEngage live-chat innovation" /><category term="Quizlet" /><category term="google google-search-by-number consignment-tracking search web-search" /><category term="marathi" /><category term="Cleverbot" /><category term="ksh" /><category term="Kenneth-Reitz" /><category term="Mark-McGranaghan" /><category term="Ada" /><category term="R-language" /><category term="MOM" /><category term="Mailgun" /><category term="Python-hosting" /><category term="tips-and-tricks" /><category term="web-spiders" /><category term="Planet-Python" /><category term="videos" /><category term="Codepad.org" /><category term="Gumroad" /><category term="wxPython" /><category term="Markdown" /><category term="monitoring-tools" /><category term="Sun-Microsystems" /><category term="iPad" /><category term="file-formats" /><category term="lead-generation" /><category term="test-post" /><category term="C-libraries" /><category term="jokes" /><category term="Peter-Tosh" /><category term="transactional-email" /><category term="knoppix" /><category term="ZeroMQ" /><category term="FORTH-language" /><category term="hacker-news API news-ycombinator unofficial-hacker-news-api" /><category term="contest programming-contest stack-overflow stack-exchange" /><category term="Greylock" /><category term="books" /><category term="grace" /><category term="PRM" /><category term="watch" /><category term="Circus" /><category term="Open-Textbook-Challenge" /><category term="SQLite" /><category term="Pyknon-music-library" /><category term="money-vs-freedom" /><category term="Pyvot" /><category term="AWS-RedShift" /><category term="Google-BigQuery" /><category term="downloading-videos" /><category term="electric-car cleantech ULV" /><category term="Jini" /><category term="web-scraping" /><category term="web-site-performance" /><category term="small-computers" /><category term="Bruce-Schneier" /><category term="PortAudio" /><category term="wellness" /><category term="xhtml2pdf" /><category term="cars" /><category term="mobiquity" /><category term="DARPA" /><category term="text-editing" /><category term="xtopdf-v1.4" /><category term="marketing-automation" /><category term="Infosys" /><category term="fault-tolerant-computing" /><category term="tech-news" /><category term="python-decorators" /><category term="signal-handler" /><category term="home-computers" /><category term="network-monitoring" /><category term="Kaspersky-operating-system" /><category term="python pycon inpycon pycon-india" /><category term="Samuru" /><category term="real-time-news" /><category term="humour" /><category term="baxter-robot" /><category term="OpenOffice" /><category term="Perl" /><category term="LinguaNext" /><category term="lambda" /><category term="online-fund-raising" /><category term="YCombinator NowJS" /><category term="minimalism" /><category term="NATO-phonetic-alphabet-converter" /><category term="Pyto" /><category term="Python-for-academia" /><category term="free-SMS" /><category term="video-download-utilities" /><category term="Sequioa-Capital" /><category term="Don-Libes" /><category term="sitar" /><category term="bsddb" /><category term="content" /><category term="Power-Searching-with-Google" /><category term="pingdom royal-pingdom API REST RESTful uptime performance website-monitoring" /><category term="geo-aware-apps" /><category term="cloud-API-marketplace" /><category term="education" /><category term="format-conversion" /><category term="SramanaMitra" /><category term="software-design" /><category term="online-media" /><category term="ActionScript" /><category term="JVM-langages" /><category term="OCaml" /><category term="command-line-utilities" /><category term="advertising" /><category term="Akira-Kurosawa" /><category term="bullshit" /><category term="twitter UI UX web-UI" /><category term="APISpark" /><category term="couchbase" /><category term="mobile smartphone android android-apps matt-cutts metal-detector led-scroller light-sabre" /><category term="Python-introspection" /><category term="faster-Python" /><category term="low-cost computers" /><category term="Android security iPhone Symbian Gartner mobile Trend-Micro malware antivirus" /><category term="parathas" /><category term="Sailfish-mobile-OS" /><category term="Spanish" /><category term="G+" /><category term="Qt-project" /><category term="markup" /><category term="Scheme" /><category term="usability" /><category term="Cloudee" /><category term="PDF-libraries" /><category term="tech-sites" /><category term="RTF-libraries" /><category term="embedded" /><category term="Python-releases" /><category term="computer-history" /><category term="GoogleAnalytics" /><category term="Nexus-tablets" /><category term="dinner-videos" /><category term="photography" /><category term="PyQt" /><category term="pyreport" /><category term="online-payment-systems" /><category term="DailyHub" /><category term="process-and-socket-manager" /><category term="social-media" /><category term="software-sales" /><category term="long-form-journalism" /><category term="epub3" /><category term="Indeed.com" /><category term="RDBMS" /><category term="python-users" /><category term="dashboard" /><category term="Red-Gate-Software" /><category term="software-quality" /><category term="Chinmaya-Dunster" /><category term="quiz" /><category term="Python3" /><category term="Google" /><category term="system-utilities" /><category term="GigaOm" /><category term="systems-programming" /><category term="TiKL" /><category term="xerox" /><category term="programming-online" /><category term="object-oriented-programming" /><category term="IPC" /><category term="computer-science" /><category term="Housefed" /><category term="epub2" /><category term="Travis-Oliphant" /><category term="geeky-bodhi" /><category term="watchdog-Python-library" /><category term="pygame" /><category term="ICE" /><category term="relational-databases" /><category term="cloud-operating-system" /><category term="docsplit Ruby API library utility text images PDF HTML DOC DOCX PPT XLS ODF RTF SWF SVGF  WPD" /><category term="Degreed" /><category term="m-commerce" /><category term="GUI-programming" /><category term="power-management" /><category term="Python-Launcher-for-Windows" /><category term="binpress lionite selling-software software-sales freemium" /><category term="Appsembler" /><category term="Resolver-Systems" /><category term="StackExchange" /><category term="Novell" /><category term="being-human" /><category term="try-R-online" /><category term="Python-Internet-libraries" /><category term="hackerstream" /><category term="blog-search" /><category term="TTS" /><category term="Google-Caffeine" /><category term="vitess" /><category term="Watsi" /><category term="Wingware" /><category term="Google-retail-stores" /><category term="OpenStack" /><category term="firefox" /><category term="tech-news-readers" /><category term="Khush" /><category term="New-York-Times" /><category term="Linux-books" /><category term="GoogleVentures" /><category term="Mac" /><category term="No-UI" /><category term="National-Geographic" /><category term="social-commerce" /><category term="OData open-data-protocol  REST HTTP Atom JSON" /><category term="Plumbum" /><category term="Internet-of-things" /><category term="virtual-machines" /><category term="Slow-Web" /><category term="natural-beauty" /><category term="dbf-to-pdf" /><category term="Linux-administration" /><category term="Notikum" /><category term="AWK-Programming-Language" /><category term="security" /><category term="CES" /><category term="wristwatch" /><category term="substitution-ciphers" /><category term="css3" /><category term="Hitachi-Data-Systems" /><category term="Amazon-Cloud-Reader" /><category term="robots" /><category term="online-courses" /><category term="Blogger" /><category term="marketing-for-programmers" /><category term="multimedia" /><category term="hiring" /><category term="Windows-development-tools" /><category term="billing" /><category term="operating-systems" /><category term="Writing-Efficient-Programs" /><category term="Saylor-Foundation" /><category term="data-science" /><category term="PySynth" /><category term="HTML" /><category term="kayak.com" /><category term="Google-Spanner" /><category term="Python-pipes" /><category term="air-powered-car" /><category term="product-development outsourcing product-outsourcing persistent-systems anand-deshpande pune" /><category term="JavaScript" /><category term="Red-Hat" /><category term="media" /><category term="Kindle" /><category term="InPyCon" /><category term="triangle-closing" /><category term="raphael.js" /><category term="Udemy" /><category term="Online-Python-Tutor" /><category term="debugging" /><category term="Dorset" /><category term="bootstrapping" /><category term="environment" /><category term="Selenic" /><category term="google transliterate translation languages hindi devanagari" /><category term="sqlite3dbm" /><category term="silverline" /><category term="PDFBuilder" /><category term="Modu" /><category term="Picasa" /><category term="deflationary-economics" /><category term="data visualization" /><category term="wikis" /><category term="Google-Course-Builder" /><category term="pyline" /><category term="Marshall-Kirkpatrick" /><category term="IDLE" /><category term="Scala-language" /><category term="mxODBC" /><category term="HTML5" /><category term="Python-Brochure-Project" /><category term="thinking" /><category term="10000-hours" /><category term="Dassehra" /><category term="Python-job-sites" /><category term="#360cities #images #3d" /><category term="speech-recognition artificial-intelligence speech-synthesis text-to-speech innovation" /><category term="ebook-creation" /><category term="research" /><category term="mobile-plans" /><category term="system-administration" /><category term="C/C++" /><category term="programming" /><category term="CherryPy" /><category term="restaurant-automation" /><category term="Nuitka" /><category term="PatientsLikeMe.com" /><category term="SkillPages" /><category term="foundation-libraries" /><category term="CrowdHired.com" /><category term="sdn" /><category term="Go-Tour" /><category term="shell-scripting" /><category term="Eiffel" /><category term="webinars" /><category term="FusionCharts" /><category term="music-synthesizer" /><category term="SCO-vs-Linux" /><category term="unfwd4-me" /><category term="video tim-bray" /><category term="image-processing" /><category term="URL-shorteners" /><category term="Sepia-Labs" /><category term="jobs" /><category term="Python-in-Excel" /><category term="httplib2" /><category term="machine-learning" /><category term="iRobot" /><category term="Ben-Hur" /><category term="software-jobs" /><category term="data-compression" /><category term="PyYAML" /><category term="REPL" /><category term="NASA" /><category term="PyMQI" /><category term="Python-for-Android" /><category term="mobile-apps" /><category term="Chrome-web-apps" /><category term="Noelios" /><category term="inbound-marketing" /><category term="Python-wave-module" /><category term="Flex-3" /><category term="salaries" /><category term="X-Phone" /><category term="GooglePlus" /><category term="Nexus-7" /><category term="Pylons" /><category term="information-retrieval" /><category term="CSS-editors" /><category term="Apache-web-server" /><category term="Amazon-SES" /><category term="PDF-utilities" /><category term="video-in-cloud" /><category term="Python-IDEs" /><category term="tadka" /><category term="spreadsheets" /><category term="print-on-demand" /><category term="icon-search-engine" /><category term="awk" /><category term="pywhich" /><category term="Osh" /><category term="email" /><category term="MailChimp" /><category term="Apache" /><category term="HTML-to-PDF" /><category term="mechanize" /><category term="Duolingo" /><category term="opera" /><category term="space-shuttle" /><category term="intel openedhand mobile device open-source acquisitions" /><category term="nature earth photos geography bering-strait" /><category term="browser-detection" /><category term="Dwolla" /><category term="Bern" /><category term="fmap()" /><category term="CSS" /><category term="JPEG" /><category term="web-development-tools" /><category term="Gittip" /><category term="graphics" /><category term="google doubleclick invitemedia acquisitions display-advertising real-time-bidding" /><category term="weak-encryption" /><category term="data-formats" /><category term="dexml. ORM" /><category term="message-queues" /><category term="Pocket" /><category term="Python-utilities" /><category term="mobile-thermometer" /><category term="Gnumeric" /><category term="network-management" /><category term="JavaScript-dashboard-gauges" /><category term="simplicity design muji john-maeda" /><category term="Perl-6" /><category term="software-articles" /><category term="how-not-to-ask-dumb-questions" /><category term="pipe-module" /><category term="parallel-computing" /><category term="Koru" /><category term="Nexus-smartphones" /><category term="RTF" /><category term="cross-language-calling" /><category term="kivy" /><category term="overengineering" /><category term="Ravi-Shankar" /><category term="e-learning ruby jruby java online-learning rubylearning" /><category term="technology" /><category term="Semantic-Web" /><category term="Andres-Segovia" /><category term="Microsoft" /><category term="green-tech" /><category term="suckiness" /><category term="Canadian-startups" /><category term="PsUtil" /><category term="Data-Warehousing" /><category term="distributed-search" /><category term="backup-software" /><category term="open-source-funding" /><category term="HackerRank.com" /><category term="cloud-libraries" /><category term="Orbitz" /><category term="bigQuery" /><category term="technology-trends" /><category term="HTML5-boom" /><category term="MQSeries" /><category term="IRC" /><category term="tool-building" /><category term="Rethink-Robotics" /><category term="InPulse" /><category term="Marco-Arment" /><category term="Go-1.1" /><category term="MS-Word" /><category term="Google Gmail GmailLabs GmailBackgroundSend email" /><category term="Jack-Cheng" /><category term="Levenshtein-distance" /><category term="curses" /><category term="black-swan" /><category term="presentation-skills" /><category term="plot.ly" /><category term="ebooks" /><category term="SevenLunches startups food restaurants iPhone Android innovation" /><category term="PyCharm" /><category term="Akirachix" /><category term="google-free-web-hosting" /><category term="music" /><category term="CSV" /><category term="application-launchers" /><category term="Presto-Linux-tablet" /><category term="nature hills anamudi south-india" /><category term="MOOCs" /><category term="Neil-Diamond" /><category term="BDFL" /><category term="Morris.js" /><category term="book-review" /><category term="Midnight-Commander" /><category term="Portable-Python" /><category term="digests" /><category term="IPython-Notebook" /><category term="process-management" /><category term="telephony" /><category term="FFmpeg" /><category term="opa" /><category term="AWS-Data-Pipeline" /><category term="PowerReviews.com" /><category term="mathematics" /><category term="vector-graphics-libraries" /><category term="cloud-computing" /><category term="roti-canai" /><category term="Pokki" /><category term="free-book" /><category term="RAD" /><category term="good-programming-practices tech" /><category term="writing" /><category term="Internet-Architecture-and-Innovation" /><category term="Fools-Die" /><category term="Python-for-finance" /><category term="BPO" /><category term="Android-Market" /><category term="requests" /><category term="website-optimization" /><category term="Sanjay-Ghemawat" /><category term="web-services" /><category term="SICP" /><category term="UPX" /><category term="librato" /><category term="web" /><category term="C" /><category term="Amazon" /><category term="wire-transfer" /><category term="controversy" /><category term="Lulu.com" /><category term="freedom" /><category term="pipe_controller" /><category term="indian-startups" /><category term="SaltOfPincb" /><category term="PDFDocument" /><category term="Python-performance" /><category term="The Hitchhikers-Guide-to-Python" /><category term="Dr-Dobbs" /><category term="sales" /><category term="Python-products" /><category term="Spyder" /><category term="RESTful-APIs" /><category term="software-signal-generator" /><category term="Akamai" /><category term="push-to-talk" /><category term="pyjs" /><category term="Nicira" /><category term="Torbit-Insight" /><category term="sci2ools.org" /><category term="novices" /><category term="Gabriel-Weinberg" /><category term="Python-on-a-stick" /><category term="ImageWorks" /><category term="pyspread" /><category term="UML" /><category term="microprocessors" /><category term="smartphone" /><category term="pingdom" /><category term="Hilary-Mason" /><category term="tiny-core-linux" /><category term="online-advertising" /><category term="WAV-audio" /><category term="food-trucks" /><category term="3D-graphics" /><category term="economic-growth" /><category term="crowdsourcing" /><category term="TextMe" /><category term="google google-services google-products Google-Refine data-cleaning data-journalism ETL" /><category term="open-web-technologies" /><category term="Vimium" /><category term="MDB" /><category term="Analytics" /><category term="BarryWarsaw" /><category term="Miguel-de-Icaza" /><category term="Eren-Bali" /><category term="Tim-OReilly" /><category term="electric-cars" /><category term="mobile phones smartphones android iphone iOS" /><category term="repetitive-strain-injury" /><category term="Unix-utilities" /><category term="Kenyan-startups" /><category term="NetVigil" /><category term="Bottle-framework" /><category term="PyMOTW" /><category term="RPC" /><category term="Udacity" /><category term="GNOME" /><category term="web-to-pdf" /><category term="message-bus" /><category term="B-language" /><category term="concurrent" /><category term="Dorm-Room-Tycoon" /><category term="new-news" /><category term="parsers" /><category term="KBOX" /><category term="mobile-vs-web" /><category term="PyBooklet" /><category term="AVBin" /><category term="web-crawlers" /><category term="KooKoo" /><category term="simplates" /><category term="lightweight-relational-databases" /><category term="free-online-course-hosting" /><category term="Raymond-Hettinger" /><category term="online-calculator" /><category term="audio-tools" /><category term="acquisitions startups tellytopia IPTV video-over-IP Concurrent-Systems" /><category term="JVM" /><category term="Khan-Academy" /><category term="Python-Guide" /><category term="text-to-pdf" /><category term="SaaS-Commerce-Network" /><category term="Matthias-Felleisen" /><category term="office-suites" /><category term="how-to-ask-smart-questions" /><category term="broadband" /><category term="SIGPLAN-2012-award" /><category term="API" /><category term="PlanetPython" /><category term="POCO-project" /><category term="Jack-Herrington" /><category term="venture-capital" /><category term="Google-Groups" /><category term="antivirus" /><category term="Google-Plus" /><category term="GPGPU" /><category term="lean-startups" /><category term="angel-list" /><category term="Red-Shift-theory" /><category term="meteor-framework" /><category term="web-standards" /><category term="search" /><category term="paper.js" /><category term="pdf xtopdf software-freedom-law-center SFLC FOSS FLOSS open-source bates-stamping e-discovery" /><category term="Carl-Sassenrath" /><category term="JollaMobile" /><category term="Brewster-Kahle" /><category term="QPDF" /><category term="moblin intel mobile atom-processor" /><category term="one-liners" /><category term="retrocomputing" /><category term="which-command" /><category term="Joe-Kraus" /><category term="elasticSearch" /><category term="bodhi-linux" /><category term="data-structures" /><category term="man-pages" /><category term="unmarshaling" /><category term="android-development" /><category term="scaling" /><category term="ITA-Software" /><category term="google-docs" /><category term="web-site-tools" /><category term="Tasty-Labs" /><category term="Python-libraries" /><category term="A-VC" /><category term="location-based-apps" /><category term="android-book" /><category term="subreddits" /><category term="Joshua-Schachter" /><category term="Waitress" /><category term="tech-incubators" /><category term="GChat" /><category term="video" /><category term="nosql" /><category term="FineArtAmerica" /><category term="virtual-hosts" /><category term="Starting-FORTH" /><category term="work" /><category term="free-Stanford-AI-course" /><category term="vi-quickstart-tutorial" /><category term="wxWidgets" /><category term="Maemo" /><category term="IBM" /><category term="Python-shells" /><category term="IDPF" /><category term="otto" /><category term="voice-activated-online-calculator" /><category term="noteleaf YC YCombinator startups Google-Calendar Google" /><category term="Digia" /><category term="pypng" /><category term="Kernighan-and-Ritchie" /><category term="python-variants" /><category term="cheat-sheets" /><category term="nature himalayas manali kullu kullu-manali images palani-hills palni-hills kodaikanal shola shola-forests" /><category term="iPhone" /><category term="VMware" /><category term="Django" /><category term="Spain" /><category term="Firefox-OS" /><category term="O'Reilly-books" /><category term="osmeta" /><category term="parallel-processing" /><category term="anti-virus" /><category term="Arachnophilia" /><category term="feeds" /><category term="AWeber" /><category term="Python-development-environments" /><category term="PyTTSx" /><category term="web-performance" /><category term="hackpad" /><category term="protocols" /><category term="D3.js" /><category term="3D-printing" /><category term="rice-plate-is-ready" /><category term="goupx" /><category term="Node.js" /><category term="worlds-youngest-CEO animation" /><category term="Scala" /><category term="amazon amazon-services cloud amazon-sns" /><category term="Google-Books" /><category term="Zipmark" /><category term="Indian-IT" /><category term="ActOn-Software" /><category term="CRM SnapEngage live-chat innovation BootStrapToday" /><category term="Python-to-JavaScript" /><category term="Qt-4" /><category term="Exam-Helper" /><category term="acquisitions EMC GreenPlum analytics large-scale analytics data-warehousing" /><category term="Blaze" /><category term="Google-Ventures" /><category term="Stack-Overflow-Careers" /><category term="language-translation" /><category term="web-hosting" /><category term="hardware" /><category term="Linux-Foundation" /><category term="USB-based-software" /><category term="barter" /><category term="software-radio" /><category term="speed" /><category term="ACM" /><category term="web-dev" /><category term="text-sharing" /><category term="tech-books" /><category term="command-line-books" /><category term="John-Resig" /><category term="virtual-assistants" /><category term="Opera-Software" /><category term="GlenfordMyers" /><category term="IUniverse" /><category term="Python-jobs" /><category term="OpenGarden" /><category term="bitly" /><category term="AWS" /><category term="JavaScript-parser-in-Go" /><category term="corporate-social-responsibility" /><category term="APIs google-labs google-labs-apis google-url-shortener-api programmable-web web-services" /><category term="Hoppr" /><category term="network-programming" /><category term="cleantech" /><category term="Linux" /><category term="HSQLDB HyperSQL Java databases relational-databases RDBMS lightweight-software open-source iText PDF PDF-creation" /><category term="Qt-5" /><category term="Satchmo" /><category term="Dilbert" /><category term="Ubuntu" /><category term="SHA-1" /><category term="indian-cuisine" /><category term="google blekko omgili search search-engines innovation" /><category term="browser-python" /><category term="py" /><category term="gmail email priority-inbox innovation information-overload email-overload" /><category term="Roboy-humanoid-robot" /><category term="Crashlytics" /><category term="mandelbrot-image" /><category term="Sendoid" /><category term="HTTPS" /><category term="dbm" /><category term="Allerta" /><category term="social-logins" /><category term="Google-Photos" /><category term="document-generation" /><category term="TypeSafe" /><category term="Windows-apps" /><category term="Zed-Shaw" /><category term="CNC-milling" /><category term="printing" /><category term="distributed-computing" /><category term="Python-XML-mapper" /><category term="international-students" /><category term="HTTP-status-codes" /><category term="data-archival" /><category term="search-libraries" /><category term="media-nommer" /><category term="DOM" /><category term="RSS" /><category term="Linux-kernel" /><category term="Paul-Graham" /><category term="PyNash-blog" /><category term="thali" /><category term="html5slider" /><category term="server-side-javascript" /><category term="cities" /><category term="guitar" /><category term="Podcasting-Hacks" /><category term="Gmail Google email productivity innovation" /><category term="future" /><category term="marketing inbound-marketing startups onstartups hubspot website-grader twitter-grader" /><category term="Python-one-liners" /><category term="REBOL" /><category term="email-service-providers" /><category term="reviews" /><category term="Pyxll" /><category term="distributed-work" /><category term="binary-file-parsers" /><category term="George-Bush-II" /><category term="Dexpot" /><category term="khosla-ventures" /><category term="fast-food" /><category term="fractals" /><category term="Gmail" /><category term="Raspberry-Pi" /><category term="Caesar-ciphers" /><category term="processing.js" /><category term="bash" /><category term="SuSE" /><category term="Apache-Drill" /><category term="freemium" /><category term="products" /><category term="infosys research awards" /><category term="Stanford" /><category term="YourStory-Pages" /><category term="self-expression" /><category term="jugad2" /><category term="Agustin-Lara" /><category term="jamaica blue-mountains nature forests" /><category term="experimental-tools" /><category term="fun" /><category term="youtube-dl" /><category term="testing" /><category term="plugins" /><category term="web-mining" /><category term="muji" /><category term="pricing" /><category term="DVCS" /><category term="remote-objects" /><category term="utilities digital-clock delphi" /><category term="personal-funding" /><category term="X-Windows" /><category term="uniq" /><category term="Nick-Bradbury" /><category term="Raphael-JS" /><category term="open-source foss floss red-hat" /><category term="web-app-dev" /><category term="Python-internals" /><category term="C++" /><category term="LLVM" /><category term="Gists" /><category term="airline-information-systems" /><category term="BareMetalOS" /><category term="web-apps" /><category term="web-enabling" /><category term="Jolla" /><category term="Balsamiq" /><category term="graphing" /><category term="Inferno" /><category term="PyRSS2Gen" /><category term="smartphones" /><category term="WAV" /><category term="open-source python pdf client server xtopdf reportlab xml-rpc" /><category term="Philip-Guo" /><category term="Ubuntu-for-tablets" /><category term="OpenCourseWare-Consortiom" /><category term="Blogger.com" /><category term="Tomer-Filiba" /><category term="Perl-for-Windows" /><category term="punestartupjobs" /><category term="jonathan-stark" /><category term="marshaling" /><category term="server-side-programming" /><category term="remote-printing" /><category term="ChargeBee" /><category term="PyhonWeekly" /><category term="spanish-music" /><category term="REST" /><category term="BloomReach" /><category term="korma" /><category term="tourism" /><category term="downloading-PyCon-videos" /><category term="mobile tablets devices RIM QNX blackberry blackberry-tablet-os blackberry-playbook POSIX Linux" /><category term="Alexander-Pope" /><category term="uWSGI" /><category term="Python-inspect-module" /><category term="Google-eBookStore" /><category term="book" /><category term="innovation Anand-Mahindra NASSCOM sustainability competing-on-price-alone" /><category term="disaster-management" /><category term="repetitive-stress-injury" /><category term="unofficial-hacker-news-api" /><category term="Sun" /><category term="technical-books" /><category term="Nokia-ResearchCenter" /><category term="food" /><category term="gsutil" /><category term="Slow-Movement" /><category term="ROT13" /><category term="PDF-generation" /><category term="embedded-SQL" /><category term="mxODBC-Connect" /><category term="PyCon13" /><category term="Plexus-Engine" /><category term="Reggae" /><category term="requests-Python-library" /><category term="WiFi" /><category term="Faasos" /><category term="utilities" /><category term="R" /><category term="money" /><category term="xtopdf" /><category term="meteorology" /><category term="software-defined-networking" /><category term="Sage-Notebook" /><category term="microframeworks" /><category term="SVG" /><category term="uruguay" /><category term="cloud-storage" /><category term="jsonpickle" /><category term="Fidelia-Helix" /><category term="epub" /><category term="Kaspersky-Labs" /><category term="academia" /><category term="Hecl" /><category term="OneReceipt" /><category term="AI" /><category term="Linus-Torvalds" /><category term="The-Beatles" /><category term="Python-for-science" /><category term="Tesla-Motors" /><category term="fedex-Python-library" /><category term="oreilly" /><category term="Nik-Software" /><category term="social-networking" /><category term="Google-Chrome" /><category term="Do-The-Right-eXtraction" /><category term="software-services-companies" /><category term="Google-Days-India" /><category term="mininet" /><category term="sh" /><category term="Tim-O'Reilly" /><category term="weather" /><category term="jump-how-high" /><category term="instacalc calculators online-calculators utilities innovation" /><category term="wildfire" /><category term="FOSS" /><category term="android-apps" /><category term="insophia" /><category term="golang" /><category term="HackerBuddy.com" /><category term="Mirumee" /><category term="python pdf xml-rpc xtopdf reportlab client-server pdf-creation" /><category term="haiku" /><category term="Unicode" /><category term="tablets" /><category term="event-driven" /><category term="command-line" /><category term="opera-mini" /><category term="design" /><category term="mypy" /><category term="Terminology" /><category term="Stackato" /><category term="competing-on-price" /><category term="SuperUser" /><category term="Pdf2HtmlEx" /><category term="reverse-karaoke" /><category term="PythonMonk" /><category term="decorators" /><category term="W3C" /><category term="Startup-Chile" /><category term="messaging" /><category term="online-learning" /><category term="waka-waka-africa" /><category term="Marc-Andre-Lemburg" /><category term="RSS2" /><category term="Continuum-Analytics" /><category term="Lisp" /><category term="sendoid ycombinator startups file-transfer file-sharing web-services Adobe-AIR" /><category term="ebook" /><category term="bq" /><category term="multi-language-PaaS" /><category term="MonkeyWrite" /><category term="startups micropreneur microISV" /><category term="PyConUS13" /><category term="newbies" /><category term="PostScript" /><category term="Python-Job-Board" /><category term="desktop-dev" /><category term="sound" /><category term="Practice-of-Programming" /><category term="free-software" /><category term="fulltext" /><category term="IDEs" /><category term="TDV" /><category term="CSV-libraries" /><category term="Leo-Brodie" /><category term="argh-Python-library" /><category term="web-servers" /><category term="Google-credit-cards-for-AdWords" /><category term="SaaS-Markets" /><category term="OOAD" /><category term="VPython" /><category term="granada" /><category term="robotics" /><category term="WordPress" /><category term="stars" /><category term="C42-Engineering" /><category term="google chrome browsers machine-translation language-translation" /><category term="vector-graphics" /><category term="web-frameworks" /><category term="Coursera" /><category term="SnowTide-Inc" /><category term="Yelp.com" /><category term="doug-hellmann" /><category term="musicians" /><category term="video-calls" /><category term="pypyodbc" /><category term="openpyxl" /><category term="Perl-6-spokesbug" /><category term="Kerala-parotta" /><category term="CamlPDF" /><category term="Strawberry-Perl" /><category term="Perl6" /><category term="Racket-language" /><category term="Python-code-module" /><category term="Go-Playground" /><category term="health" /><category term="Net-neutrality" /><category term="incubators" /><category term="flipkart" /><category term="open-source BMW" /><category term="network-utilities" /><category term="Linux-Mint" /><category term="tabular-data" /><category term="google google-labs google-labs-apis google-storage google-storage-for-developers web-services google-services IaaS Amazon-S3" /><category term="freelancing" /><category term="app-stores" /><category term="emergencies" /><category term="Stylizer" /><category term="tawkon" /><category term="duckduckgo2" /><category term="money-transfer" /><category term="survival" /><category term="Revolution-systems" /><category term="encryption" /><category term="Google-Fiberhood" /><category term="devices" /><category term="HTML-generation" /><category term="Twitter-realtime-search" /><category term="icat" /><category term="browsers firefox html5 demos web web-o-wonder" /><category term="Helsinki" /><category term="onlineLearning" /><category term="WinPython" /><category term="performance" /><category term="Google-Translate" /><category term="online-payments" /><category term="Parallella-project" /><category term="web-app-tools" /><category term="Guido-van-Rossum" /><category term="Gow" /><category term="computer-books" /><category term="Zoho" /><category term="selling-online" /><category term="PyP" /><category term="ESR" /><category term="Clink" /><category term="jQuery" /><category term="WebSphereMQ" /><category term="simulating-UNIX-pipes" /><category term="ciphers" /><category term="maths" /><category term="Dersu-Uzala" /><category term="online-privacy" /><category term="real-time-CSS-editing" /><category term="Carnegie-Mellon-University" /><category term="fedex" /><category term="Expect" /><category term="a16z" /><category term="GrainOfSalt" /><category term="software" /><category term="meteor-web-server web-servers http-servers Perl" /><category term="BSD-3-Clause-license" /><category term="Rubiks-Cube" /><category term="SLICK" /><category term="editing" /><category term="Delphi DelphiXE DelphiXEStarterEdition Embarcadero CodeGear Borland Win32 EXEs" /><category term="VNC" /><category term="iText" /><category term="py.exe" /><category term="Runestone-Interactive" /><category term="AI AI-revolution Wired Steven-Levy statistics machine-learning artificlal-intelligence genetic-algorithms Wolfram-Alpha" /><category term="mosh" /><category term="Python-Tutor" /><category term="libharu" /><category term="file-conversion" /><category term="Michael-Jordan" /><category term="charting" /><category term="free-web-hosting" /><category term="OpenStudy" /><category term="online-math-tools" /><category term="Google-Cloud-Print" /><category term="vanu" /><category term="climagic" /><category term="small-Unix-distributions" /><category term="RPyC" /><category term="Google-Compute-Engine" /><category term="America" /><category term="classical-guitar" /><category term="GTar" /><category term="encoding-tools" /><category term="browsers" /><category term="Amazon-Marketplace" /><category term="Dorset-England" /><category term="turtle-graphics" /><category term="TTYtter" /><category term="python-frameworks" /><category term="revenue-models" /><category term="Chrome-extensions" /><category term="Linux-distros" /><category term="Salman-Khan" /><category term="SQLAlchemy" /><category term="storage-tools" /><category term="PiCloud-Notebook" /><category term="webPDF" /><category term="SweetLabs" /><category term="windows" /><category term="RocketDock" /><category term="Ryan-Kelly" /><category term="SupportBee.com" /><category term="Stripe.com" /><category term="fundly" /><category term="Yahoo" /><category term="SteveJobs" /><category term="tinyurl" /><category term="Disco" /><category term="Glassboard" /><category term="mobile-shell" /><category term="agriculture" /><category term="Jolla-Mobile" /><category term="Massive-Open-Online-Courses" /><category term="vi" /><category term="patterns" /><category term="oreilly-OFPS" /><category term="Python-3.3.0" /><category term="WebRTC" /><category term="Silicon-Valley" /><category term="farming" /><category term="Amazon-Elastic-MapReduce" /><category term="Fidelia" /><category term="cloud-printing" /><category term="life" /><category term="PyTTS" /><category term="SOAP" /><category term="SEOMoz" /><category term="GitHub" /><category term="dtrx" /><category term="Unladen-Swallow" /><category term="salesforce dimdim heroku etacts acquisitions startups" /><category term="system-software" /><category term="Go-language" /><category term="selling" /><category term="Derek-Sivers" /><category term="ODBC" /><category term="throughput" /><category term="mozilla" /><category term="mobile-predictions-2013" /><category term="Google-APIs" /><category term="Maestro-Jerard" /><category term="YCombinator" /><category term="Linux-smartphones" /><category term="speech-synthesis" /><category term="Dart" /><category term="indian-bison" /><category term="DataNitro" /><category term="hackerslide" /><category term="functional-programming" /><category term="Scala-libraries" /><category term="TypeScript" /><category term="jugad2-python-subfeed" /><category term="free-Flex-3-book" /><category term="J2ME" /><category term="icons" /><category term="web-development" /><category term="key-value-stores" /><category term="Fred-Wilson" /><category term="bugs" /><category term="DevOps" /><category term="films" /><category term="Google AdSense" /><category term="CMU" /><category term="contracting" /><category term="Got-Your-Back" /><category term="Quicklisp" /><category term="web-site-aggregators" /><category term="FastMail" /><category term="Microdata" /><category term="Stanford-University" /><category term="audio" /><category term="Google Twitter google-accounts-on-twitter" /><category term="Fandalism" /><category term="ServerFault" /><category term="PyConStartupRow" /><category term="object-relational-managers" /><category term="Mozilla-Python-tools" /><category term="Blaast" /><category term="web-bookmarking-systems" /><category term="issue-tracking" /><category term="Flex" /><category term="iOS" /><category term="hg" /><category term="Rob-Pike" /><category term="progressive-jPEG" /><category term="OCR" /><category term="message-oriented-middleware" /><category term="announcements" /><category term="StackOverflow" /><category term="demos" /><category term="free-ebook" /><category term="codingbat" /><category term="hachoir" /><category term="SFLC software-freedom-law-center freedom foss floss open-source george-soros soros-open-society-foundations mishi-choudhary" /><category term="UNIX-signals" /><category term="site24x7" /><category term="Gmail-backup" /><category term="tata-teleservices" /><category term="programmatic-PDF-creation" /><category term="beta" /><category term="PageSpeed" /><category term="programming-languages" /><category term="SCO-vs-IBM" /><category term="GData" /><category term="CrowdHired" /><category term="ps_mem" /><category term="HTTP-daemon" /><category term="Eclipse" /><category term="simulating-pipes" /><category term="OOP" /><category term="marketing" /><category term="web-server-libraries" /><category term="Firebird" /><category term="dal-tadka" /><category term="languages programming-languages emerging-languages" /><category term="carpal-tunnel-syndrome" /><category term="anti-lean" /><category term="Flotype" /><category term="international-payments" /><category term="pastebins" /><category term="PaaS" /><category term="Wordy.com" /><category term="Swiftype" /><category term="Archivas" /><category term="IT-infrastructure-management" /><category term="e-readers" /><category term="nimbula cloud cloud-infrastructure vmware sequoia" /><category term="pisa" /><category term="program-maintenance" /><category term="GeoNames" /><category term="googlecl" /><category term="search-engines" /><category term="GUI" /><category term="free-stanford-online-AI-class" /><category term="acquisitions" /><category term="Free-SMS-via-Gmail" /><category term="JIT" /><category term="command-line-tools" /><category term="La-Bamba" /><category term="instant-pdf" /><category term="About.json" /><category term="Win32" /><category term="Akka" /><category term="ForPune.com" /><category term="WhatsThatProgrammingLanguage" /><category term="e-learning" /><category term="Facebook" /><category term="The-Zen-of-Python" /><category term="Finnix" /><category term="source-code-control-systems" /><category term="Go" /><category term="HP" /><category term="NLP" /><category term="3DPrinting" /><category term="Rajnikanth-facts" /><category term="lightweight-Linux-distributions" /><category term="UNIX-processes" /><category term="sailing-solo-around-the-world" /><category term="e-books" /><category term="Usenet" /><category term="golf-apps" /><category term="real-time" /><category term="Motorola" /><category term="Lissajous-curve" /><category term="databases" /><category term="publishing" /><category term="functools" /><category term="copyright" /><category term="email web-services cloud amazon aws amazon-ses" /><category term="iCopy" /><category term="five-whys" /><category term="udisks" /><category term="winsound-API" /><category term="Numba" /><category term="flyte" /><category term="Paul-Lutus" /><category term="big-data" /><category term="word-processor-for-handwriting" /><category term="automattic" /><category term="peterpings" /><category term="JavaScript-libraries" /><category term="Topaz" /><category term="BBC-micro" /><category term="your-brain" /><category term="Academia.edu" /><category term="the-startup-magazine" /><category term="Coherent-Graphics-UK" /><category term="Paul-Graham-facts" /><category term="cool images 3d" /><category term="roaming-shell" /><category term="Python-graphics" /><category term="cairo-graphics" /><category term="Really-Small-Message-Broker MQTT devices sensors IBM WebSphere-Message-Broker ZigBee" /><category term="online-learning-tools" /><category term="NIST" /><category term="cleantech startups innovation" /><category term="GUI-frameworks" /><category term="mobile-working" /><category term="social-medial" /><category term="shortcuts" /><category term="CrunchBase-for-India" /><category term="seasons-greetings" /><category term="Priceline.com" /><category term="RSI" /><category term="Chris-Hopf" /><category term="webification" /><category term="Amazon-S3" /><category term="HttpBin.org" /><category term="Internet-Communications-Engine" /><category term="jetslide" /><category term="Jig.com" /><category term="ThingWorkx internet-of-things fred-wilson future-manufacturing innovation MES startups" /><category term="egg-cut-parotta" /><category term="BitBucket" /><category term="mobile-development" /><category term="lean-publishing" /><category term="Rails" /><category term="Sage" /><category term="OCW" /><category term="Foxpro" /><category term="universe" /><category term="Linux-in-browser" /><category term="cut-parotta" /><category term="human-interaction" /><category term="App-Store" /><category term="radha-hi-bawari" /><category term="stremor.com" /><category term="Cython" /><category term="PySide" /><category term="BloggerViews" /><category term="screen-saver-with-signature-protection" /><category term="Reid-Hoffman" /><category term="tutorials" /><category term="open-source microsoft OSS FOSS" /><category term="ArtOfSoftwareTesting" /><category term="blue-jeans-network startups video-conferencing cloud" /><category term="scanning" /><category term="Eric-Raymond" /><category term="plotting" /><category term="Qt" /><category term="digital-media" /><category term="startup-reading-material" /><category term="Cirro" /><category term="tethr" /><category term="architecture" /><category term="DigMyData" /><category term="MS-Access" /><category term="CraftJack" /><category term="Pallavi" /><category term="fiber-optics" /><category term="photo-editing" /><category term="PyODBC" /><category term="Google-ebooks" /><category term="Chris-Granger" /><category term="Internet-libraries" /><category term="windowing" /><category term="PiCloud" /><category term="Vint-Cerf" /><category term="dotNet" /><category term="Google-Drive" /><category term="Raphael" /><category term="Opsware" /><category term="web-utilities" /><category term="Indian-IT-industry" /><category term="brython" /><category term="SaaS" /><category term="Nvidia" /><category term="database-libraries" /><category term="Google-Days" /><category term="Metapad" /><category term="Python-in-India" /><category term="Cameron-Laird" /><category term="mobile-dev" /><category term="woodwind-instrument-design-software" /><category term="per-vices" /><category term="OCaml-Labs" /><category term="Groklaw" /><category term="single-column-layout" /><category term="hype" /><category term="science" /><category term="Mozilla-OS" /><category term="Evernote" /><category term="Python-GUI-toolkits" /><category term="Shortcutfoo" /><category term="google android mobile smartphone web" /><category term="executable-pastebins" /><category term="OCaml-libraries" /><category term="Ken-Arnold" /><category term="debugging-utilities" /><category term="Mark-Burgess" /><category term="programmatic-ads" /><category term="SmartBird Festo automation artificial-flight bionics innovation" /><category term="SaaS-enablement-service" /><category term="cross-platform" /><category term="Stack-Overflow" /><category term="BufferBox" /><category term="xlrd" /><category term="mod_pagespeed" /><category term="Sony-Pictures" /><category term="quotes" /><category term="business-models" /><category term="Bangalore-startups" /><category term="Training" /><category term="LaTeX" /><category term="object-orientation" /><category term="Mike-Olsen" /><category term="web-based-plotting" /><category term="stuff-that-matters" /><category term="presentations.software-business" /><category term="The-C-Book" /><category term="Cyrus-IMAP-POP" /><category term="audio-libraries" /><category term="pyxshell" /><category term="google angels angel-investors startups" /><category term="Python-traceback-module" /><category term="Boxee" /><category term="UI" /><category term="John-Ousterhout" /><category term="privacy" /><category term="Loggr Loggr.net cloud startups" /><category term="cashtags" /><category term="DBI" /><category term="algorithms" /><category term="Apple" /><category term="AdWords" /><category term="software-defined-radio" /><category term="Construct3" /><category term="WebROaR" /><category term="LeanPub" /><category term="Docverter" /><category term="PyCon" /><category term="ORM" /><category term="PyCon2013" /><category term="ItsAlmost" /><category term="Calculize" /><category term="python-standard-library" /><category term="WebPlatform.org" /><category term="Dropbox" /><category term="Bentley-Knuth" /><category term="E-la-Carte" /><category term="system-monitoring" /><category term="innovation ergonomics f.lux video-monitor health" /><category term="IPv6" /><category term="IPython" /><category term="Sramana-Mitra" /><category term="setuid" /><category term="Mailman" /><category term="web-to-image" /><category term="Python-data-model" /><category term="one-to-many-file-transfers" /><category term="remote-work" /><category term="APIs" /><category term="clean-tech" /><category term="PyConUS" /><category term="database-access-libraries" /><category term="cURL" /><category term="innovation" /><category term="network-servers" /><category term="Python-Tidy" /><category term="UNIX-style-pipes" /><category term="statistics" /><category term="Dabo" /><category term="blogging" /><category term="object-XML-mapper" /><category term="GUI-architectures" /><category term="open-source" /><category term=".NET" /><category term="facebook facebook-scribe open-source" /><category term="Snapjoy" /><category term="buzzwords" /><category term="virtualization" /><category term="software-products" /><category term="firefox browsers themes" /><category term="brain-deadness" /><category term="bc-Twitter-bot" /><category term="repl.it" /><category term="ARM" /><category term="terminal-emulator" /><category term="real-time-web-apps" /><category term="latency" /><category term="server-side-PDF" /><category term="archive.org" /><category term="AVG" /><category term="PDF-Explained" /><category term="Chas-Emerick" /><category term="Ads" /><category term="mathematics math maths astronomy bhaskaracharya brahmagupta varahahihira indian-mathematicians zero" /><category term="sailthru web-service email-service API REST mongoDB" /><category term="Satchless" /><category term="SlideShare" /><category term="yogthos" /><category term="email-providers" /><category term="frameworks" /><category term="Chrome" /><category term="OpenCourseWare" /><category term="Python-tools" /><category term="animation" /><category term="PythonAnywhere" /><category term="Glances" /><category term="text-mode-UI" /><category term="static-site-generators" /><category term="Eldarion" /><category term="foss open-source gnu cygnus red-hat" /><category term="ChinaAssistant.com" /><category term="PDF-libraries.PDF-text-extraction" /><category term="Pyreverse" /><category term="urllib" /><category term="piano" /><category term="PostDesk" /><category term="India" /><category term="QBASIC" /><category term="decorator-pattern" /><category term="RPy" /><category term="Nirvanix" /><category term="Snapseed" /><category term="food food-blogs cuisine asian-food malaysian-food malaysia rasa-malaysia asian-cuisine" /><category term="Akiban" /><category term="Alan-Cooper" /><category term="source-control" /><category term="blog-monetization" /><category term="conversational-ads" /><category term="6Builder" /><category term="The-Slow-Web" /><category term="python-magic" /><category term="Boost-Graph-Library" /><category term="composite-PDF-creation" /><category term="libraries" /><category term="image-formats" /><category term="epubmaker" /><category term="web-archival" /><category term="programmatic-email" /><category term="Unix-tools" /><category term="online-communities" /><category term="Bokeh" /><category term="UK-computers" /><category term="Visual-Foxpro" /><category term="multi-processing" /><category term="Barack-Obama" /><category term="deserialization" /><category term="inter-language-communication" /><category term="Camelia" /><category term="aspen" /><category term="word-count-program" /><category term="IPython-Notebooks" /><category term="Stripe-chat" /><category term="gadgets" /><category term="suds-SOAP-library" /><category term="jugad" /><category term="Poland-startups" /><category term="process-monitoring" /><category term="library" /><category term="They're-coming-to-America" /><category term="language-learning" /><category term="scrapinghub" /><category term="NATO-phonetic-alphabet" /><category term="LinkedIn" /><category term="Project-Gutenberg" /><category term="wc" /><category term="IP" /><category term="Lua" /><category term="Mono" /><category term="Peter-Norvig" /><category term="proofreading" /><category term="ISPs" /><category term="Adobe" /><category term="SMS" /><category term="ActiveState" /><category term="JFreeChart" /><category term="MobilePress" /><category term="multiprocessing" /><category term="PDF-creation" /><category term="Phaseit" /><category term="e-reader-software" /><category term="Dremel" /><category term="Torbit" /><category term="MobileApps.com" /><category term="XML" /><category term="PyConUS2013" /><category term="free-online-software" /><category term="Google-Blogs" /><category term="large-scale-web-apps" /><category term="FinQloud" /><category term="TechOctave" /><category term="flask python framework microframework WSGI" /><category term="Google-Python-Client-Library" /><category term="Sebastian-Thrun" /><category term="Atlassian" /><category term="pathtools" /><category term="cmd.exe" /><category term="eGenix" /><category term="screen-scraping screen-scrapers ScraperWiki Python" /><category term="Opera-Software-Australia" /><category term="Software-Freedom-Law-Center open-source FOSS" /><category term="Marc-Andreessen" /><category term="skills-trading" /><category term="Twitter" /><category term="rescue-CDs" /><category term="planets" /><category term="startups bootstrapping WhatCounts email entrepreneurship FredWilson DavidGeller" /><category term="full-text-search" /><category term="Trigger" /><category term="Norton-Commander" /><category term="cooper.com" /><category term="mobile-radiation" /><category term="PNG" /><category term="Enthought-Python-Distribution" /><category term="Windows-8" /><category term="Enthought" /><category term="empythoned" /><category term="PDF-tools" /><category term="Alan-Skorkin" /><category term="www.p-nand-q.com" /><category term="Y-Combinator" /><category term="free-online-courses" /><category term="Postmark" /><category term="Ryan-McGrath" /><category term="Unix-Programming-Environment" /><category term="AboutMyBrowser.com" /><category term="Mongoose-web-server" /><category term="sensors" /><category term="free-online-productivity-tools" /><category term="shapeways 3D-printing innovation 2011-trends" /><category term="simplejson" /><category term="programmer-jokes" /><category term="EPD-Free" /><category term="concurrent-programming" /><category term="B-corporation" /><category term="OCWC" /><category term="Microtask" /><category term="Mandrill" /><category term="Python-Auto-Reloader" /><category term="business startups entrepreneurship bootstrapping" /><category term="LinuxFoundation" /><category term="application-servers" /><category term="mobile-app-frameworks" /><category term="Chromebooks" /><category term="database-apps" /><category term="online-scientific-calculator" /><category term="client-server" /><category term="Year-2038-problem" /><category term="Java" /><category term="local-commerce" /><category term="ideone.com" /><category term="Skorks" /><category term="software-reference-cards" /><category term="MIT" /><category term="food cuisine spicy-food hottest-pepper guiness-book-of-records lonely-planet" /><category term="URL-unshorteners" /><category term="YAML" /><category term="Python2" /><category term="Excel-libraries" /><category term="SL4A" /><category term="txt2epub" /><category term="python python-framework python-web-framework RESTful WSGI Jinja Werkzeug" /><category term="Mitch-Garnaat" /><category term="Internet-Archive" /><category term="suckers" /><category term="Google Google-CSE search-engines" /><category term="idea-generator" /><category term="computer-music" /><category term="miro-project video webm mp4 ogg-theora" /><category term="emscripten" /><category term="virtual-desktops" /><category term="C-language" /><category term="Nicholas-Carr" /><category term="e-commerce" /><category term="images" /><category term="programming-books" /><category term="ORM-for-XML" /><category term="OCamlPro" /><category term="pareto-networks networking cloud cloud-based-networking" /><category term="Youtube" /><category term="Lucene" /><category term="android text-messaging android-bugs" /><category term="Union-Square-Ventures" /><category term="hashes" /><category term="ping" /><category term="malware" /><category term="google google-calendar productivity utilities reminders" /><category term="Tarek-Ziadé" /><category term="CreateMyInvoice" /><category term="Devops-Borat" /><category term="Logo-language" /><category term="LeanLaunchLab" /><category term="Peldi" /><category term="vcat" /><category term="Cloudera" /><category term="mobility" /><category term="bottle" /><category term="music-apps" /><category term="google app-engine vmware cloud" /><category term="Skype" /><category term="einztein online-learning e-learning" /><category term="PythonAR" /><category term="Brian-Kernighan" /><category term="Apache-virtual-hosts" /><category term="maestro-gerard" /><category term="Delphi" /><category term="enterprise-software" /><category term="winamp android itunes technologizer techcrunch" /><category term="Mirage-operating-system" /><category term="Amazon-AWS" /><category term="EC2" /><category term="Rodney-Brooks" /><category term="email-newsletters" /><category term="school-of-webcraft" /><category term="authentication" /><category term="Apache-River" /><category term="Smule" /><category term="bob-marley jamaica coffee" /><category term="extensible-software" /><category term="music-sites" /><category term="iA-Writer" /><category term="Startup-Village-Kochi" /><category term="pdf" /><category term="python python-hosting python-web-hosting ep.io mike-driscoll pythonistas mouse-vs-python-blog python-blogs WSGI Django Flash Pylons" /><category term="IconFinder" /><category term="HTTPBin" /><category term="Necessitas" /><category term="OReilly-Bookworm" /><category term="EmberAds" /><category term="startup-ideas" /><category term="time-series" /><category term="humour humor joke statistics" /><category term="chrome google linux browsers open-source" /><category term="google chrome browsers performance" /><category term="Google URL-shortener Google-services" /><category term="British-Library" /><category term="Bruce-Schneier-facts" /><category term="a-little-learning" /><category term="GTalk" /><category term="pyhn" /><category term="pyglet" /><category term="anti-virus-software" /><category term="Excel" /><category term="Eqentia" /><category term="Celtic-Ragas-Band" /><category term="C-and-C++" /><category term="MapReduce" /><category term="unarchivers" /><category term="Dennis-Ritchie" /><category term="sciweavers.org" /><category term="pygrace" /><category term="JavaScript-interpreter-in-Go" /><category term="dotCloud" /><category term="disqus startups blogging blog-comments" /><category term="Posterous" /><category term="Gagan-Biyani" /><category term="the-Next-Big-Thing" /><category term="OpenMP" /><category term="ms-office" /><category term="Google-Search" /><category term="Hortonworks" /><category term="MartinFowler" /><category term="electric-vehicles" /><category term="The-Linux-Command-Line" /><category term="shell" /><category term="pyElasticSearch" /><category term="database-access" /><category term="veritas" /><category term="The-Pi-Hut" /><category term="mobile-Python" /><category term="Wakari" /><category term="Blessings" /><category term="Notepad" /><category term="JSON" /><category term="Google-Native-Client" /><category term="damn-small-linux" /><category term="mailing-list-software" /><category term="Demakein" /><category term="pretty-printers" /><category term="best-practices" /><category term="Atomic-Scala" /><category term="ruby rails books enterprise" /><category term="intellectual-property" /><category term="Bharti-Airtel" /><category term="SilkApp" /><category term="math" /><category term="yspages" /><category term="performance databases RDBMS voltdb scalability" /><category term="JetBrains" /><category term="Kenya" /><category term="IPOs" /><category term="reliance apple girl" /><category term="PowerTOP" /><category term="online-hiring" /><category term="innovation business management google interviews" /><category term="Switzerland" /><category term="JDBC" /><category term="MDBtoPDF" /><category term="e-zines" /><category term="google browsers chrome google-chrome innovation chrome-10 crankshaft security javascript" /><category term="graph-tool" /><category term="FastMail.fm" /><category term="file-system-watcher" /><category term="tablets blackberry blackberry-playbook ipad gadgets QNX innovation" /><category term="servers" /><category term="titanium gadgets makers innovation hardware-innovation hardware 3d-printing creativity" /><category term="import-this" /><category term="CogoLabs" /><category term="map()" /><category term="text-editors" /><category term="VirusTotal" /><category term="read-eval-print-loop" /><category term="Sendy" /><category term="nesoni-framework" /><category term="libcurl" /><category term="toyota" /><category term="Europe" /><category term="Erlang" /><category term="programming-tutorials" /><category term="web-chat" /><category term="TechCofounder" /><category term="Attachmate" /><category term="tripbod" /><category term="SQL" /><category term="LaDiDa" /><category term="python-bug-day" /><category term="Coursera-Verified-Certificates" /><category term="eLearning" /><category term="source-code-formatters" /><category term="CORBA" /><category term="Droolable" /><category term="python-companies" /><category term="C-programming" /><category term="design-patterns" /><category term="Reportlab" /><category term="microblogging" /><category term="image-tools" /><category term="some-local-color" /><category term="Mercurial" /><category term="Mac-OS-X" /><category term="gplus.to" /><category term="Python-DB-API" /><category term="travel" /><category term="enterprise-mobile-apps" /><category term="natural-language-processing" /><category term="eating-your-own-dog-food" /><category term="lightweight-text-editors" /><category term="ease-of-use" /><category term="Mark-Suster" /><category term="scientific-computing" /><category term="NaCl" /><category term="pattern-web-mining-library" /><category term="free-Google-SMS" /><category term="portable-software" /><category term="app-hosting" /><category term="startups" /><category term="Twitter-libraries" /><category term="humor" /><category term="text-processing" /><category term="fswatch" /><category term="business" /><category term="communication-skills" /><category term="MySQL" /><category term="scalability" /><category term="Readium-project" /><category term="Nokia" /><category term="Gmail Google performance-tuning" /><category term="Python-cloud-libraries" /><category term="p2pu" /><category term="Charles-Moore" /><category term="FreeBSD" /><category term="Fabrice-Bellard" /><category term="cloud" /><category term="Doug-Cutting" /><category term="Chinese-startups" /><category term="data-conversion" /><category term="online-sales" /><category term="job-sites" /><category term="DocRaptor" /><category term="quality" /><category term="boto" /><category term="caller-info.py" /><category term="automation" /><category term="PyPy" /><category term="PAWK" /><category term="UNIX" /><category term="wireless-connection-sharing" /><category term="user-interfaces" /><category term="startups web-startups india indian-startups fastest-growing-indian-startups" /><category term="Netflix" /><category term="Pylons-Project" /><category term="Internet-protocols" /><category term="turq" /><category term="Mashape" /><category term="Concert-for-India's-Environment" /><category term="goldenkrishna" /><category term="Dr-Eruch-Bharucha" /><category term="3G" /><category term="USA" /><category term="literate-programming" /><category term="Internet2" /><category term="codes" /><category term="tables" /><category term="lightweight-web-servers" /><category term="pictures images 3d 360cities panorama" /><category term="SMTP" /><category term="python" /><category term="rice-plate" /><category term="internet" /><category term="programmable-web-servers" /><category term="pdf green-tech" /><category term="wxAndroid" /><category term="Caesar-cipher" /><category term="Gmail-tips" /><category term="bloglines feeds OPML" /><category term="HTML-Tidy" /><category term="python python27" /><category term="bots" /><category term="assembly-language" /><category term="Python-in-browser" /><category term="ZeroC" /><category term="Baccara" /><category term="PyAudio" /><category term="Hubspot" /><category term="pulsar" /><category term="law" /><category term="Wikia" /><category term="RackSpace" /><category term="Ben-Mappen" /><category term="Python-debugging" /><category term="entrepreneurship" /><category term="clj-pdf" /><category term="Joe-Gregorio" /><category term="scientific-Python" /><category term="Pholcidae" /><category term="odiogo text-to-speech speech-synthesis audio" /><category term="WSGI" /><category term="jodconverter openoffice openoffice.org java word excel powerpoint pdf wordperfect opendocument rtf flash utilities libraries data-conversion file-formats -file-conversion" /><category term="OReilly-Radar" /><category term="utilities web-dev-utilities network-utilities network-debugging packet-sniffer protocol-analyzer technical tech" /><category term="Python-Weekly" /><category term="PinchOfSalt" /><category term="IaaS" /><category term="3D" /><category term="SEO" /><category term="BCPL" /><category term="peerTransfer.com" /><category term="desktop-apps" /><category term="Cadillac" /><category term="Docx" /><category term="artificial-intelligence" /><category term="online-interactive-interpreters" /><category term="marketing seo inbound-marketing hubspot website-grader dharmesh-shah innovation" /><category term="google-command-line-tool" /><category term="T-Mobile" /><title>jugad2 - Vasudev Ram on software innovation</title><subtitle type="html">jugad2 is Vasudev Ram's blog, tracking software innovation, both open source and proprietary, worldwide. I'm an independent developer with many years experience in many tech areas, and a member of the Python Software Foundation. My biz site is www.dancingbison.com and I tweet @vasudevram .</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://jugad2.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>1197</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Jugad2-VasudevRamOnSoftwareInnovation" /><feedburner:info uri="jugad2-vasudevramonsoftwareinnovation" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><logo>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</logo><feedburner:emailServiceId>Jugad2-VasudevRamOnSoftwareInnovation</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FJugad2-VasudevRamOnSoftwareInnovation" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FJugad2-VasudevRamOnSoftwareInnovation" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FJugad2-VasudevRamOnSoftwareInnovation" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Jugad2-VasudevRamOnSoftwareInnovation" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FJugad2-VasudevRamOnSoftwareInnovation" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FJugad2-VasudevRamOnSoftwareInnovation" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FJugad2-VasudevRamOnSoftwareInnovation" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:browserFriendly>This is my new blog, titled "Vasudev Ram on Software Innovation". My web site is www.dancingbison.com</feedburner:browserFriendly><entry gd:etag="W/&quot;AkAFQn45eSp7ImA9WhBbGEw.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-1619782968768238133</id><published>2013-05-18T00:43:00.001+05:30</published><updated>2013-05-18T00:55:13.021+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-18T00:55:13.021+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python-libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-inspect-module" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Python's inspect module is powerful</title><content type="html">&lt;p&gt;&lt;a href="http://docs.python.org/2/library/inspect.html"&gt;27.13. inspect &amp;#8212; Inspect live objects &amp;#8212; Python v2.7.5 documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The inspect module comes as part of the standard library of Python. It allows you to inspect live objects at run time by using its methods.&lt;/p&gt;
&lt;p&gt;Here is an example:&lt;/p&gt;
&lt;p&gt;import inspect&lt;br&gt;
class Bar( object):&lt;br&gt;
&amp;#160;&amp;#160;&amp;#160; def foo( self ):&lt;br&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; print "in Bar.foo 4"&lt;br&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; self .a = 1&lt;br&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; self .di = { 'b' : 2, 'c' : 3 }&lt;br&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; self .li = [&amp;#160; 4, 5, 6 ]&lt;/p&gt;
&lt;p&gt;bar = Bar()&lt;br&gt;
bar.foo()&lt;br&gt;
for member in inspect.getmembers(bar):&lt;br&gt;
&amp;#160;&amp;#160;&amp;#160; print member&lt;/p&gt;
&lt;p&gt;Running the above code gives this as (partial) output:&lt;/p&gt;
&lt;p&gt;in Bar.foo 4&lt;/p&gt;
&lt;p&gt;('__dict__', {'a': 1, 'li': [4, 5, 6], 'di': {'c': 3, 'b': 2}})&lt;br&gt;
('__doc__', None)&lt;br&gt;
('a', 1)&lt;br&gt;
('di', {'c': 3, 'b': 2})&lt;br&gt;
('foo', bound method Bar.foo of __main__.Bar object at 0x4035bfac)&lt;br&gt;
('li', [4, 5, 6])&lt;/p&gt;
&lt;p&gt;This shows both the bound methods and the member variables of the instance bar.&lt;/p&gt;
&lt;p&gt;The inspect module can do a lot of other things too. Check the docs for it, linked at the top of this post.&lt;/p&gt;
&lt;p&gt;You can also modify and run the above code snippet at this codepad.org URL:&lt;/p&gt;
&lt;p&gt;http://codepad.org/dMLmkhQ6&lt;/p&gt;
&lt;p&gt;It may not last there for too long, though, since they probably delete pastes to make room for new ones.&lt;/p&gt;
&lt;p&gt;- Vasudev Ram&lt;br&gt;
dancingbison.com&lt;br&gt;&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=Z1R4ySx_jgQ:GzP3h_GKUiI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=Z1R4ySx_jgQ:GzP3h_GKUiI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=Z1R4ySx_jgQ:GzP3h_GKUiI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=Z1R4ySx_jgQ:GzP3h_GKUiI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=Z1R4ySx_jgQ:GzP3h_GKUiI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=Z1R4ySx_jgQ:GzP3h_GKUiI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=Z1R4ySx_jgQ:GzP3h_GKUiI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=Z1R4ySx_jgQ:GzP3h_GKUiI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=Z1R4ySx_jgQ:GzP3h_GKUiI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=Z1R4ySx_jgQ:GzP3h_GKUiI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=Z1R4ySx_jgQ:GzP3h_GKUiI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=Z1R4ySx_jgQ:GzP3h_GKUiI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/Z1R4ySx_jgQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/1619782968768238133/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=1619782968768238133" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/1619782968768238133?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/1619782968768238133?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/Z1R4ySx_jgQ/python-inspect-module-is-powerful.html" title="Python&amp;#39;s inspect module is powerful" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/05/python-inspect-module-is-powerful.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQDSHw4fSp7ImA9WhBbFkg.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-7900136898853624048</id><published>2013-05-16T02:04:00.001+05:30</published><updated>2013-05-16T02:09:39.235+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-16T02:09:39.235+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python-libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-wave-module" /><category scheme="http://www.blogger.com/atom/ns#" term="audio-libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="WAV" /><title>Reading WAV file info with Python</title><content type="html">&lt;p&gt;&lt;br&gt;
The Python standard library comes with a module called wave.py. It allows you to read and write WAV format audio files.&lt;/p&gt;
&lt;p&gt;Here is an example of reading WAV file info with Python:&lt;/p&gt;
&lt;p&gt;import wave&lt;/p&gt;
&lt;p&gt;wavf = wave.open('horse.wav', 'r')&lt;br&gt;
print wavf.getnchannels()&lt;br&gt;
print wavf.getsampwidth()&lt;br&gt;
print wavf.getframerate()&lt;br&gt;
print wavf.getnframes()&lt;br&gt;
print wavf.getcompname()&lt;/p&gt;
&lt;p&gt;The above code prints the number of channels (mono or stereo), the sampling width, the frame rate, the number of frames, and the name of the compression type (if any) of the WAV file horse.wav.&lt;/p&gt;
&lt;p&gt;You can also write WAV files, but you need to know what data to write.&lt;/p&gt;
&lt;p&gt;Wikipedia entry for WAV:&lt;/p&gt;
&lt;p&gt;http://en.m.wikipedia.org/wiki/WAV&lt;/p&gt;
&lt;p&gt;- Vasudev Ram&lt;br&gt;
www.dancingbison.com&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=o4GGA9LGEKc:Tr83CoiZM_Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=o4GGA9LGEKc:Tr83CoiZM_Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=o4GGA9LGEKc:Tr83CoiZM_Q:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=o4GGA9LGEKc:Tr83CoiZM_Q:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=o4GGA9LGEKc:Tr83CoiZM_Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=o4GGA9LGEKc:Tr83CoiZM_Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=o4GGA9LGEKc:Tr83CoiZM_Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=o4GGA9LGEKc:Tr83CoiZM_Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=o4GGA9LGEKc:Tr83CoiZM_Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=o4GGA9LGEKc:Tr83CoiZM_Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=o4GGA9LGEKc:Tr83CoiZM_Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=o4GGA9LGEKc:Tr83CoiZM_Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/o4GGA9LGEKc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/7900136898853624048/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=7900136898853624048" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/7900136898853624048?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/7900136898853624048?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/o4GGA9LGEKc/reading-wav-file-info-with-python.html" title="Reading WAV file info with Python" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/05/reading-wav-file-info-with-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQBQnwzeyp7ImA9WhBbEU4.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-2108467779107006485</id><published>2013-05-09T23:04:00.001+05:30</published><updated>2013-05-10T03:22:33.283+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-10T03:22:33.283+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jugad2" /><title>A blogging break for jugad2</title><content type="html">&lt;p&gt;Dear readers,&lt;/p&gt;&lt;p&gt;I'm taking a blogging break for some days, due to less free time while I sort out some issues.&lt;/p&gt;&lt;p&gt;Will be back.&lt;/p&gt;&lt;p&gt;Inconvenience is regretted.&lt;/p&gt;&lt;p&gt;- Vasudev&lt;br /&gt;
dancingbison.com&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=_ebnZwqGm6M:z3Ao55uxMuM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=_ebnZwqGm6M:z3Ao55uxMuM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=_ebnZwqGm6M:z3Ao55uxMuM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=_ebnZwqGm6M:z3Ao55uxMuM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=_ebnZwqGm6M:z3Ao55uxMuM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=_ebnZwqGm6M:z3Ao55uxMuM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=_ebnZwqGm6M:z3Ao55uxMuM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=_ebnZwqGm6M:z3Ao55uxMuM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=_ebnZwqGm6M:z3Ao55uxMuM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=_ebnZwqGm6M:z3Ao55uxMuM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=_ebnZwqGm6M:z3Ao55uxMuM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=_ebnZwqGm6M:z3Ao55uxMuM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/_ebnZwqGm6M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/2108467779107006485/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=2108467779107006485" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2108467779107006485?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2108467779107006485?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/_ebnZwqGm6M/a-blogging-break-for-jugad2.html" title="A blogging break for jugad2" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/05/a-blogging-break-for-jugad2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8MSXY6fSp7ImA9WhBUE0s.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-5481506114242790847</id><published>2013-05-01T03:46:00.002+05:30</published><updated>2013-05-01T05:04:48.815+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-01T05:04:48.815+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PDF-generation" /><category scheme="http://www.blogger.com/atom/ns#" term="xtopdf" /><category scheme="http://www.blogger.com/atom/ns#" term="Bottle-framework" /><category scheme="http://www.blogger.com/atom/ns#" term="microframeworks" /><category scheme="http://www.blogger.com/atom/ns#" term="Reportlab" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="pdf" /><category scheme="http://www.blogger.com/atom/ns#" term="ebooks" /><category scheme="http://www.blogger.com/atom/ns#" term="programmatic-PDF-creation" /><title>PDF in a Bottle - creating PDF using xtopdf, ReportLab, Bottle and Python</title><content type="html">By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/24/Adobe_PDF_Icon.svg/200px-Adobe_PDF_Icon.svg.png" width="10%" height="10%"&gt;&lt;/img&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://bottlepy.org/"&gt;&lt;img src="http://bottlepy.org/docs/dev/_static/logo_nav.png"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;pdf_bottle.py&lt;/b&gt; is a program I wrote that allows you to create a PDF file from text, over the web, by entering your text into a form and submitting it.&lt;br /&gt;
&lt;br /&gt;
Here is the program:&lt;br /&gt;
&lt;pre&gt;# pdf_bottle.py

# Description: Program to generate PDF from text, over the web,
# using xtopdf, ReportLab and the Bottle web framework.
# It can be used to create short, simple PDF e-books.
# Author: Vasudev Ram - http://dancingbison.com
# Copyright 2013 Vasudev Ram 
# Tested with Python 2.7.

# Version: 0.1

# Dependencies:
# xtopdf - https://bitbucket.org/vasudevram/xtopdf
# bottle - http://bottlepy.org
# ReportLab - http://www.reportlab.com/ftp/reportlab-1.21.zip
# Python - http://python.org

from PDFWriter import PDFWriter

from bottle import route, request, run

@route('/edit_book')
def edit_book():
    return '''
    &amp;lt;form action="/save_book" method="post"&amp;gt;
    PDF file name: &amp;lt;input type="text" name="pdf_file_name" /&amp;gt;

    Header: &amp;lt;input type="text" name="header" /&amp;gt;

    Footer: &amp;lt;input type="text" name="footer" /&amp;gt;

    Content:
    &amp;lt;textarea name="content" rows="15"   cols="50"&amp;gt;&amp;lt;/textarea&amp;gt;

    &amp;lt;input type="submit" value="Submit" /&amp;gt;

    &amp;lt;/form&amp;gt;
'''

@route('/save_book', method='POST')
def save_book():
    try:
        pdf_file_name = request.forms.get('pdf_file_name')
        header = request.forms.get('header')
        footer = request.forms.get('footer')
        content = request.forms.get('content')

        pw = PDFWriter(pdf_file_name)
        pw.setFont("Courier", 12)
        pw.setHeader(header)
        pw.setFooter(footer)

        lines = content.split('\n')
        for line in lines:
            pw.writeLine(line)

        pw.savePage()
        pw.close()
        return "Done"
    except Exception:
        return "Not done"

def main():
    run(host='localhost', port=9999)

if __name__ == "__main__":
    main()
&lt;/pre&gt;&lt;br /&gt;
To run it, you need to have &lt;a href="http://python.org"&gt;Python&lt;/a&gt;, the open source version of &lt;a href="http://www.reportlab.com/ftp/reportlab-1.21.zip"&gt;ReportLab&lt;/a&gt;, my &lt;a href="https://bitbucket.org/vasudevram/xtopdf"&gt;xtopdf toolkit&lt;/a&gt; and the &lt;a href="http://bottlepy.org/"&gt;Bottle&lt;/a&gt; Python web framework installed.&lt;br /&gt;
&lt;br /&gt;
Here is a &lt;a href="http://jugad2.blogspot.in/2012/07/guide-to-installing-and-using-xtopdf.html"&gt;guide to installing and using xtopdf&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
For help with installing the other products, consult their respective sites, linked above.&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
Then run the program with this command:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;python pdf_bottle.py&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Then, in a browser window, go to &lt;b&gt;localhost:9999&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Enter the details - PDF file name, header, footer and text content - in the form, then click Submit.&lt;br /&gt;
&lt;br /&gt;
The PDF file will be generated in the same directory from where you ran the Python program.&lt;br /&gt;
&lt;br /&gt;
This is the first version, and has been tested only a bit. It you find any issues, please mention them in the comments.&lt;br /&gt;
&lt;br /&gt;
Various improvements are possible, including sending the generated PDF to the user's browser, or providing a link to download it (better), and I'll work on some of them over time.&lt;br /&gt;
&lt;br /&gt;
P.S. Excerpt from the Bottle framework site:&lt;br /&gt;
&lt;br /&gt;
[&lt;br /&gt;
Bottle is a fast, simple and lightweight WSGI micro web-framework for Python. It is distributed as a single file module and has no dependencies other than the Python Standard Library.&lt;br /&gt;
&lt;br /&gt;
Routing: Requests to function-call mapping with support for clean and dynamic URLs.&lt;br /&gt;
Templates: Fast and pythonic built-in template engine and support for mako, jinja2 and cheetah templates.&lt;br /&gt;
Utilities: Convenient access to form data, file uploads, cookies, headers and other HTTP-related metadata.&lt;br /&gt;
Server: Built-in HTTP development server and support for paste, fapws3, bjoern, Google App Engine, cherrypy or any other WSGI capable HTTP server.&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=zKZBuXcNWus:yd0UWt-A1tc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=zKZBuXcNWus:yd0UWt-A1tc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=zKZBuXcNWus:yd0UWt-A1tc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=zKZBuXcNWus:yd0UWt-A1tc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=zKZBuXcNWus:yd0UWt-A1tc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=zKZBuXcNWus:yd0UWt-A1tc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=zKZBuXcNWus:yd0UWt-A1tc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=zKZBuXcNWus:yd0UWt-A1tc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=zKZBuXcNWus:yd0UWt-A1tc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=zKZBuXcNWus:yd0UWt-A1tc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=zKZBuXcNWus:yd0UWt-A1tc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=zKZBuXcNWus:yd0UWt-A1tc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/zKZBuXcNWus" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/5481506114242790847/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=5481506114242790847" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5481506114242790847?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5481506114242790847?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/zKZBuXcNWus/pdf-in-bottle-creating-pdf-using-xtopdf.html" title="PDF in a Bottle - creating PDF using xtopdf, ReportLab, Bottle and Python" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/05/pdf-in-bottle-creating-pdf-using-xtopdf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEHRX44eyp7ImA9WhBUEks.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-2242070749662622585</id><published>2013-04-30T01:10:00.001+05:30</published><updated>2013-04-30T01:47:14.033+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-30T01:47:14.033+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="e-learning" /><category scheme="http://www.blogger.com/atom/ns#" term="entrepreneurship" /><category scheme="http://www.blogger.com/atom/ns#" term="Udemy" /><category scheme="http://www.blogger.com/atom/ns#" term="interviews" /><category scheme="http://www.blogger.com/atom/ns#" term="startups" /><category scheme="http://www.blogger.com/atom/ns#" term="Eren-Bali" /><category scheme="http://www.blogger.com/atom/ns#" term="Gagan-Biyani" /><title>Interesting interview of Gagan Biyani of Udemy</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://mixergy.com/udemy-gagan-biyani-interview"&gt;Gagan Biyani, Udemy co-founder, interviewed&lt;/a&gt; on Mixergy.&lt;br /&gt;
&lt;br /&gt;
And here is &lt;a href="https://www.udemy.com/blog/democratize-learning-eren-bali/"&gt;the story of Eren Bali&lt;/a&gt;, one of the other co-founders of Udemy.&lt;br /&gt;
&lt;br /&gt;
From the &lt;a href="http://en.wikipedia.org/wiki/Udemy#Reception"&gt;Wikipedia page about Udemy&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
"In February 2010, the Udemy co-founders decided to raise money to fund their idea.[6] They were rejected 30 times" ...&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://www.udemy.com/blog/udemy-fundraising/"&gt;The Udemy Fundraising Story&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=jpvnFJVd6Yc:nOnyylTcW8Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=jpvnFJVd6Yc:nOnyylTcW8Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=jpvnFJVd6Yc:nOnyylTcW8Q:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=jpvnFJVd6Yc:nOnyylTcW8Q:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=jpvnFJVd6Yc:nOnyylTcW8Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=jpvnFJVd6Yc:nOnyylTcW8Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=jpvnFJVd6Yc:nOnyylTcW8Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=jpvnFJVd6Yc:nOnyylTcW8Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=jpvnFJVd6Yc:nOnyylTcW8Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=jpvnFJVd6Yc:nOnyylTcW8Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=jpvnFJVd6Yc:nOnyylTcW8Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=jpvnFJVd6Yc:nOnyylTcW8Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/jpvnFJVd6Yc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/2242070749662622585/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=2242070749662622585" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2242070749662622585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2242070749662622585?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/jpvnFJVd6Yc/interesting-interview-of-gagan-biyani.html" title="Interesting interview of Gagan Biyani of Udemy" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/interesting-interview-of-gagan-biyani.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQGQXw8eCp7ImA9WhBUEUU.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-7679365258675063243</id><published>2013-04-29T02:35:00.003+05:30</published><updated>2013-04-29T02:38:40.270+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-29T02:38:40.270+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Indian-IT-industry" /><category scheme="http://www.blogger.com/atom/ns#" term="presentations.software-business" /><category scheme="http://www.blogger.com/atom/ns#" term="Indian-IT" /><title>Hard-hitting presentation on Indian IT industry</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Seen via a link posted by @sharads on LinkedIn.&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/19544441" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt;&lt;strong&gt; &lt;a href="http://www.slideshare.net/RajeshRajVarma/whats-wrong-with-indian-it-industry" title="Whats Wrong with Indian IT Industry?" target="_blank"&gt;Whats Wrong with Indian IT Industry?&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/RajeshRajVarma" target="_blank"&gt;Rajesh "Raj" Varma&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;&lt;/p&gt;&lt;br /&gt;
Got to say I agree with a lot of it. And I think most people in the know, who are honest, would agree too. Not sure how much is being done about it, on an industry-wide level, though I know of efforts here and there.&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=b3Q_TSiCbZI:Aq48lrzYf8A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=b3Q_TSiCbZI:Aq48lrzYf8A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=b3Q_TSiCbZI:Aq48lrzYf8A:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=b3Q_TSiCbZI:Aq48lrzYf8A:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=b3Q_TSiCbZI:Aq48lrzYf8A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=b3Q_TSiCbZI:Aq48lrzYf8A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=b3Q_TSiCbZI:Aq48lrzYf8A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=b3Q_TSiCbZI:Aq48lrzYf8A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=b3Q_TSiCbZI:Aq48lrzYf8A:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=b3Q_TSiCbZI:Aq48lrzYf8A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=b3Q_TSiCbZI:Aq48lrzYf8A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=b3Q_TSiCbZI:Aq48lrzYf8A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/b3Q_TSiCbZI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/7679365258675063243/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=7679365258675063243" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/7679365258675063243?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/7679365258675063243?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/b3Q_TSiCbZI/hard-hitting-presentation-on-indian-it.html" title="Hard-hitting presentation on Indian IT industry" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/hard-hitting-presentation-on-indian-it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEANQHY4eip7ImA9WhBUEU0.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-2959853516675199757</id><published>2013-04-28T03:18:00.002+05:30</published><updated>2013-04-28T05:23:11.832+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-28T05:23:11.832+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="audio-tools" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="music-synthesizer" /><category scheme="http://www.blogger.com/atom/ns#" term="pyglet" /><category scheme="http://www.blogger.com/atom/ns#" term="PyAudio" /><category scheme="http://www.blogger.com/atom/ns#" term="WAV-audio" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="music" /><category scheme="http://www.blogger.com/atom/ns#" term="audio" /><category scheme="http://www.blogger.com/atom/ns#" term="PySynth" /><category scheme="http://www.blogger.com/atom/ns#" term="NumPy" /><title>PySynth, a pure Python music synthesizer</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://home.arcor.de/mdoege/pysynth/"&gt;PySynth&lt;/a&gt; is a music &lt;a href="http://en.wikipedia.org/wiki/Synthesizer"&gt;synthesizer&lt;/a&gt; library written in Python. (*)&lt;br /&gt;
&lt;br /&gt;
Excerpt from the site:&lt;br /&gt;
&lt;br /&gt;
[ There are three variants: &lt;b&gt;PySynth A&lt;/b&gt; is faster, only needs Python itself, and sounds more like a cross between a &lt;b&gt;flute&lt;/b&gt; and &lt;b&gt;organ&lt;/b&gt;. &lt;b&gt;PySynth B&lt;/b&gt; is more complex in sound and needs &lt;a href="http://en.wikipedia.org/wiki/NumPy"&gt;NumPy&lt;/a&gt;. It's supposed to be a little closer to a &lt;b&gt;piano&lt;/b&gt;. (No competition for Pianoteq of course, but a reasonable fit for keyboard music.) Finally, &lt;b&gt;PySynth S&lt;/b&gt; is more comparable to a &lt;b&gt;guitar&lt;/b&gt;, &lt;b&gt;banjo&lt;/b&gt;, or h&lt;b&gt;arpsichord&lt;/b&gt;, depending on note length and pitch.&lt;br /&gt;
&lt;br /&gt;
The current release of the synthesizer is &lt;b&gt;monophonic&lt;/b&gt;, i.e. it can only play one note at a time. (Although successive notes can overlap in PySynth B and S, but not A.) However, two output files can be mixed together as in the case of the &lt;b&gt;stereo&lt;/b&gt; files below. ]&lt;br /&gt;
&lt;br /&gt;
(*) Interestingly, the &lt;b&gt;Changes&lt;/b&gt; section of the above linked PySynth page seems to indicate that PySynth uses both &lt;b&gt;Pyglet&lt;/b&gt; and &lt;b&gt;PyAudio&lt;/b&gt;, both of which I had blogged about some time ago:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://jugad2.blogspot.in/2009/07/playing-mp3-with-pyglet-and-python-is.html"&gt;Playing an MP3 with pyglet and Python is easy&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://jugad2.blogspot.in/2011/10/pyaudio-and-portaudio-like-odbc-for.html"&gt;PyAudio and PortAudio - like ODBC for sound&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here is &lt;a href="https://github.com/mdoege/PySynth#readme"&gt;PySynth on Github&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
PySynth supports &lt;a href="http://en.wikipedia.org/wiki/Abc_notation"&gt;ABC notation&lt;/a&gt; and can generate &lt;a href="http://en.wikipedia.org/wiki/WAV"&gt;WAV&lt;/a&gt; audio files.&lt;br /&gt;
&lt;br /&gt;
Here is an example tune:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;D D C C B A G&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
and here is a PySynth program to play that tune as a WAV file:&lt;br /&gt;
&lt;pre&gt;# pysynth-ddccbag.py

import pysynth

test = ( ('d', 4), ('d', 4), ('c', 4), ('c', 4), ('b', 4), ('a', 4), ('g', 3) )
pysynth.make_wav(test, fn = "ddccbag.wav")
&lt;/pre&gt;For some reason the last note seems to get partially cut off on my PC. Not sure whether that is a bug or a feature :-) or something to do with my hardware. Maybe the latter, since I'm using my laptop's built-in speakers.&lt;br /&gt;
&lt;br /&gt;
Run that program as:&lt;br /&gt;
&lt;pre&gt;python pysynth-ddccbag.py 
&lt;/pre&gt;&lt;br /&gt;
Then play the generated WAV file &lt;b&gt;ddccbag.wav&lt;/b&gt; in a music player, such as VLC or some other one.&lt;br /&gt;
&lt;br /&gt;
Here are a few better examples of sound synthesis by PySynth - the links are to MP4 files, which you can download and play without needing Python or PySynth:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://home.arcor.de/mdoege/pysynth/sailors_hornpipe.mp4"&gt;The Sailor’s Hornpipe — PySynth S&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://home.arcor.de/mdoege/pysynth/jesu.mp4"&gt;Bach: Jesu, Joy of Man’s Desiring — PySynth S (treble) and B (bass)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Also check my recent post: &lt;a href="http://jugad2.blogspot.in/2013/04/play-piano-on-your-computer-with-python.html"&gt;Play the piano on your computer with Python&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If you want to try it out, note that the program has a couple of bugs, related to the frequencies of notes, since I am not musically trained; I just wrote it for fun and as an experiment. Though some of the post comments gave some background and suggested corrections, they did not seem to be sure, and corrected themselves, so I have not implemented any of those suggestions yet.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
Enjoy.&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=IG-9yyg87Fg:MVtSIf0PRig:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=IG-9yyg87Fg:MVtSIf0PRig:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=IG-9yyg87Fg:MVtSIf0PRig:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=IG-9yyg87Fg:MVtSIf0PRig:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=IG-9yyg87Fg:MVtSIf0PRig:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=IG-9yyg87Fg:MVtSIf0PRig:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=IG-9yyg87Fg:MVtSIf0PRig:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=IG-9yyg87Fg:MVtSIf0PRig:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=IG-9yyg87Fg:MVtSIf0PRig:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=IG-9yyg87Fg:MVtSIf0PRig:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=IG-9yyg87Fg:MVtSIf0PRig:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=IG-9yyg87Fg:MVtSIf0PRig:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/IG-9yyg87Fg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/2959853516675199757/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=2959853516675199757" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2959853516675199757?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2959853516675199757?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/IG-9yyg87Fg/pysynth-pure-python-music-synthesizer.html" title="PySynth, a pure Python music synthesizer" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/pysynth-pure-python-music-synthesizer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYGQ38_cCp7ImA9WhBVGU8.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-5779875095314511873</id><published>2013-04-26T02:03:00.000+05:30</published><updated>2013-04-26T02:05:22.148+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-26T02:05:22.148+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenMP" /><category scheme="http://www.blogger.com/atom/ns#" term="Copperhead" /><category scheme="http://www.blogger.com/atom/ns#" term="data-parallel-Python" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="Nvidia" /><category scheme="http://www.blogger.com/atom/ns#" term="GPGPU" /><category scheme="http://www.blogger.com/atom/ns#" term="PyhonWeekly" /><title>Copperhead: Data Parallel Python from NVIDIA Research</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
News seen via &lt;a href="http://www.pythonweekly.com/"&gt;PythonWeekly&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://copperhead.github.io/"&gt;Copperhead&lt;/a&gt;, from &lt;a href="http://www.nvidia.com/content/research/index.html"&gt;NVIDIA Research&lt;/a&gt;, is a project to bring &lt;b&gt;data parallelism to Python&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Agkistrodon_contortrix"&gt;&lt;img src="http://www.virginiaherpetologicalsociety.com/reptiles/snakes/northern-copperhead/copperhead-top.jpg" width="60%" height="60%"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
From the site (emphasis mine):&lt;br /&gt;
&lt;br /&gt;
[ We define a small functional, &lt;b&gt;data parallel subset of Python&lt;/b&gt;, which we then &lt;b&gt;dynamically compile&lt;/b&gt; and execute on parallel platforms. Currently, we target &lt;b&gt;NVIDIA GPUs&lt;/b&gt;, as well as &lt;b&gt;multicore CPUs&lt;/b&gt; through &lt;b&gt;OpenMP&lt;/b&gt; and &lt;b&gt;Threading Building Block&lt;/b&gt;s (TBB). ]&lt;br /&gt;
&lt;br /&gt;
Soumds interesting.&lt;br /&gt;
&lt;br /&gt;
Also see my recent related post:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://jugad2.blogspot.in/2013/03/python-to-gpu-compiler-coming-from.html"&gt;Python-to-GPU compiler coming from Continuum Analytics and Nvidia&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
About &lt;a href="http://en.wikipedia.org/wiki/Graphics_processing_unit"&gt;GPUs and GPGPUs&lt;/a&gt;.&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=ubv6hySC_W0:mwL5dIBFYic:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=ubv6hySC_W0:mwL5dIBFYic:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=ubv6hySC_W0:mwL5dIBFYic:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=ubv6hySC_W0:mwL5dIBFYic:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=ubv6hySC_W0:mwL5dIBFYic:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=ubv6hySC_W0:mwL5dIBFYic:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=ubv6hySC_W0:mwL5dIBFYic:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=ubv6hySC_W0:mwL5dIBFYic:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=ubv6hySC_W0:mwL5dIBFYic:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=ubv6hySC_W0:mwL5dIBFYic:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=ubv6hySC_W0:mwL5dIBFYic:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=ubv6hySC_W0:mwL5dIBFYic:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/ubv6hySC_W0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/5779875095314511873/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=5779875095314511873" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5779875095314511873?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5779875095314511873?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/ubv6hySC_W0/copperhead-data-parallel-python-from.html" title="Copperhead: Data Parallel Python from NVIDIA Research" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/copperhead-data-parallel-python-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EASXw4fyp7ImA9WhBVF0g.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-7757208111033131334</id><published>2013-04-24T01:34:00.001+05:30</published><updated>2013-04-24T04:57:28.237+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-24T04:57:28.237+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python-in-browser" /><category scheme="http://www.blogger.com/atom/ns#" term="plot.ly" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="browser-based-Python" /><category scheme="http://www.blogger.com/atom/ns#" term="NumPy" /><category scheme="http://www.blogger.com/atom/ns#" term="plotting" /><title>Plot me some randomness</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In this recent post about &lt;a href="https://plot.ly"&gt;plot.ly&lt;/a&gt;,&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://jugad2.blogspot.in/2013/03/plotly-fast-plotting-in-browser.html"&gt;plot.ly, fast plotting in the browser&lt;/a&gt;,&lt;br /&gt;
&lt;br /&gt;
I mentioned that plotting by pasting data worked, but plotting using Python had an issue, and that they said they were fixing it.&lt;br /&gt;
&lt;br /&gt;
The plot.ly people got back to me saying that the Python issue is fixed. &lt;br /&gt;
&lt;br /&gt;
I tried it out again with a couple of simple plotting examples involving random numbers. They worked.&lt;br /&gt;
&lt;br /&gt;
Here are the examples:&lt;br /&gt;
&lt;hr/&gt;&lt;pre&gt;from numpy import *
from random import randint

x = range(1, 10)
y = [ random.randint(1, 10) for i in x ]
plot(x, y)
&lt;/pre&gt;&lt;hr/&gt;&lt;pre&gt;from numpy import *
from random import randint

x = range(1, 20)
y = [ random.randint(1, 10) for i in x ]
plot(x, y)
&lt;/pre&gt;&lt;hr/&gt;(The only difference in the above two scripts is 10 vs 20.)&lt;br /&gt;
&lt;br /&gt;
You can try out that code, or your own, in plot.ly.&lt;br /&gt;
&lt;br /&gt;
Go to &lt;a href="https://plot.ly/plot"&gt;https://plot.ly/plot&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Click on the "tab" labeled "+" near the top left of the screen, then click "Script" from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
Enter your script (no need to Save) and then click Run.&lt;br /&gt;
&lt;br /&gt;
If your code has no errors, your plot will appear in a new tab (not a new browser tab, but a new "tab" within the plot.ly browser tab).&lt;br /&gt;
&lt;br /&gt;
The plot may take 2 to 3 seconds to appear.&lt;br /&gt;
&lt;br /&gt;
plot.ly is beta software, but looks useful. They have many more complex examples in their demos.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=65PwwLsLeoM:PywXvgzuBYo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=65PwwLsLeoM:PywXvgzuBYo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=65PwwLsLeoM:PywXvgzuBYo:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=65PwwLsLeoM:PywXvgzuBYo:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=65PwwLsLeoM:PywXvgzuBYo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=65PwwLsLeoM:PywXvgzuBYo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=65PwwLsLeoM:PywXvgzuBYo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=65PwwLsLeoM:PywXvgzuBYo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=65PwwLsLeoM:PywXvgzuBYo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=65PwwLsLeoM:PywXvgzuBYo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=65PwwLsLeoM:PywXvgzuBYo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=65PwwLsLeoM:PywXvgzuBYo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/65PwwLsLeoM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/7757208111033131334/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=7757208111033131334" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/7757208111033131334?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/7757208111033131334?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/65PwwLsLeoM/plotly-me-some-randomness.html" title="Plot me some randomness" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/plotly-me-some-randomness.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYCQ3YzfSp7ImA9WhBVFks.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-2823061333903037371</id><published>2013-04-22T05:28:00.001+05:30</published><updated>2013-04-23T01:19:22.885+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-23T01:19:22.885+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="image-processing" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="import-this" /><category scheme="http://www.blogger.com/atom/ns#" term="The-Zen-of-Python" /><category scheme="http://www.blogger.com/atom/ns#" term="PNG" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="pypng" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="image-formats" /><title>pypng, pure Python module to encode/decode PNG</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png" height="30%" width="30%"&gt;&lt;/img&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://github.com/drj11/pypng#readme"&gt;pypng&lt;/a&gt; is a pure Python library to read/write &lt;a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics"&gt;PNG&lt;/a&gt; images.&lt;br /&gt;
&lt;br /&gt;
Here are some &lt;a href="http://pythonhosted.org/pypng/ex.html"&gt;code examples&lt;/a&gt; of using pypng. Note: the actual library is called &lt;b&gt;png&lt;/b&gt;.py, not &lt;b&gt;pypng&lt;/b&gt;.py. So &lt;b&gt;import that&lt;/b&gt;, &lt;a href="http://www.python.org/dev/peps/pep-0020/"&gt;not&lt;/a&gt; &lt;a href="http://python-history.blogspot.in/2010/06/import-this-and-zen-of-python.html"&gt;this&lt;/a&gt; :-)&lt;br /&gt;
&lt;br /&gt;
I tried out a few of the examples, and they worked.&lt;br /&gt;
&lt;br /&gt;
The image above uses the transparency feature of PNG.&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=izQMp3aOcjY:rOJA_S86AwA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=izQMp3aOcjY:rOJA_S86AwA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=izQMp3aOcjY:rOJA_S86AwA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=izQMp3aOcjY:rOJA_S86AwA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=izQMp3aOcjY:rOJA_S86AwA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=izQMp3aOcjY:rOJA_S86AwA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=izQMp3aOcjY:rOJA_S86AwA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=izQMp3aOcjY:rOJA_S86AwA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=izQMp3aOcjY:rOJA_S86AwA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=izQMp3aOcjY:rOJA_S86AwA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=izQMp3aOcjY:rOJA_S86AwA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=izQMp3aOcjY:rOJA_S86AwA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/izQMp3aOcjY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/2823061333903037371/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=2823061333903037371" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2823061333903037371?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2823061333903037371?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/izQMp3aOcjY/pypng-pure-python-module-to.html" title="pypng, pure Python module to encode/decode PNG" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/pypng-pure-python-module-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIHQ3kzeCp7ImA9WhBVFEQ.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-3179065225247989640</id><published>2013-04-21T03:55:00.001+05:30</published><updated>2013-04-21T04:08:52.780+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-21T04:08:52.780+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="videos" /><category scheme="http://www.blogger.com/atom/ns#" term="Neil-Diamond" /><category scheme="http://www.blogger.com/atom/ns#" term="music" /><category scheme="http://www.blogger.com/atom/ns#" term="They're-coming-to-America" /><category scheme="http://www.blogger.com/atom/ns#" term="America" /><category scheme="http://www.blogger.com/atom/ns#" term="freedom" /><title>Video: Neil Diamond - They're coming to America</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="640" height="360" src="http://www.youtube.com/embed/FFwSzZQ4MVI?feature=player_detailpage" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p/&gt;&lt;p/&gt;&lt;iframe width="640" height="360" src="http://www.youtube.com/embed/TjBdrk_BcrU?feature=player_detailpage" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p/&gt;&lt;p/&gt;&lt;iframe width="640" height="360" src="http://www.youtube.com/embed/2XdNaHCvP3w?feature=player_detailpage" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p/&gt;&lt;p/&gt;&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XI3IxcV86qk:1RHaJmJKWM0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XI3IxcV86qk:1RHaJmJKWM0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XI3IxcV86qk:1RHaJmJKWM0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=XI3IxcV86qk:1RHaJmJKWM0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XI3IxcV86qk:1RHaJmJKWM0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=XI3IxcV86qk:1RHaJmJKWM0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XI3IxcV86qk:1RHaJmJKWM0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=XI3IxcV86qk:1RHaJmJKWM0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XI3IxcV86qk:1RHaJmJKWM0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XI3IxcV86qk:1RHaJmJKWM0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XI3IxcV86qk:1RHaJmJKWM0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=XI3IxcV86qk:1RHaJmJKWM0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/XI3IxcV86qk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/3179065225247989640/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=3179065225247989640" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/3179065225247989640?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/3179065225247989640?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/XI3IxcV86qk/video-neil-diamond-theyre-coming-to.html" title="Video: Neil Diamond - They're coming to America" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/FFwSzZQ4MVI/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/video-neil-diamond-theyre-coming-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcBRH86eCp7ImA9WhBVFEo.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-7989562657941325075</id><published>2013-04-20T20:10:00.001+05:30</published><updated>2013-04-20T21:04:15.110+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-20T21:04:15.110+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="search-engines" /><category scheme="http://www.blogger.com/atom/ns#" term="Samuru" /><category scheme="http://www.blogger.com/atom/ns#" term="natural-language-processing" /><category scheme="http://www.blogger.com/atom/ns#" term="stremor.com" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="NLP" /><title>Samuru, a new (and smarter?) search engine</title><content type="html">&lt;br /&gt;
&lt;a href="http://www.dancingbison.com"&gt;By Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.samuru.com/"&gt;Samuru&lt;/a&gt; is a new search engine from &lt;a href="http://www.stremor.com"&gt;stremor.com&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;I tried it out a bit and it gave me some interesting results.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.stremor.com/about.html"&gt;About stremor&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.stremor.com/samuru.html"&gt;About Samuru:&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Update in a while, I'm on my mobile at present.&lt;/p&gt;&lt;p&gt;&lt;a href="https://news.ycombinator.com/item?id=5579804"&gt;Hacker News thread about Samuru is interesting&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;- &lt;a href="http://jugad2.blogspot.com/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=muRUkdyfJcA:zsJ2em0COv8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=muRUkdyfJcA:zsJ2em0COv8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=muRUkdyfJcA:zsJ2em0COv8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=muRUkdyfJcA:zsJ2em0COv8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=muRUkdyfJcA:zsJ2em0COv8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=muRUkdyfJcA:zsJ2em0COv8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=muRUkdyfJcA:zsJ2em0COv8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=muRUkdyfJcA:zsJ2em0COv8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=muRUkdyfJcA:zsJ2em0COv8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=muRUkdyfJcA:zsJ2em0COv8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=muRUkdyfJcA:zsJ2em0COv8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=muRUkdyfJcA:zsJ2em0COv8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/muRUkdyfJcA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/7989562657941325075/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=7989562657941325075" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/7989562657941325075?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/7989562657941325075?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/muRUkdyfJcA/samuru-new-and-smarter-search-engine.html" title="Samuru, a new (and smarter?) search engine" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/samuru-new-and-smarter-search-engine.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYBQns8fSp7ImA9WhBVFE8.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-1303487763454683489</id><published>2013-04-20T08:52:00.001+05:30</published><updated>2013-04-20T08:52:33.575+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-20T08:52:33.575+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IDEs" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="PyCharm" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-IDEs" /><category scheme="http://www.blogger.com/atom/ns#" term="JetBrains" /><title>With pleasure develop - JetBrains PyCharm blog</title><content type="html">&lt;p&gt;&lt;a href="http://blog.jetbrains.com/pycharm/2013/04/pycharm-2-7-2-released/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+Pycharm+%28JetBrains+PyCharm+Blog%29"&gt;PyCharm 2.7.2 released | JetBrains PyCharm Blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;you.get(it) ? :-)&lt;br&gt;&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=wor4cpjrgFw:Q-DSx_WoXTI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=wor4cpjrgFw:Q-DSx_WoXTI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=wor4cpjrgFw:Q-DSx_WoXTI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=wor4cpjrgFw:Q-DSx_WoXTI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=wor4cpjrgFw:Q-DSx_WoXTI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=wor4cpjrgFw:Q-DSx_WoXTI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=wor4cpjrgFw:Q-DSx_WoXTI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=wor4cpjrgFw:Q-DSx_WoXTI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=wor4cpjrgFw:Q-DSx_WoXTI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=wor4cpjrgFw:Q-DSx_WoXTI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=wor4cpjrgFw:Q-DSx_WoXTI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=wor4cpjrgFw:Q-DSx_WoXTI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/wor4cpjrgFw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/1303487763454683489/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=1303487763454683489" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/1303487763454683489?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/1303487763454683489?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/wor4cpjrgFw/with-pleasure-develop-jetbrains-pycharm.html" title="With pleasure develop - JetBrains PyCharm blog" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/with-pleasure-develop-jetbrains-pycharm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMNRH8zeSp7ImA9WhBVE08.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-6950389946598220883</id><published>2013-04-19T02:51:00.001+05:30</published><updated>2013-04-19T03:31:35.181+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-19T03:31:35.181+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQLite" /><category scheme="http://www.blogger.com/atom/ns#" term="key-value-stores" /><category scheme="http://www.blogger.com/atom/ns#" term="Amazon-Elastic-MapReduce" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="sqlite3dbm" /><category scheme="http://www.blogger.com/atom/ns#" term="Yelp.com" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="dbm" /><category scheme="http://www.blogger.com/atom/ns#" term="bsddb" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="Hadoop" /><title>sqlite3dbm, an SQLite-backed dbm module</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Saw this today. It seems to be on the &lt;a href="https://github.com/Yelp"&gt;Github account&lt;/a&gt; of &lt;a href="http://en.wikipedia.org/wiki/Yelp,_Inc."&gt;Yelp.com&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
They created it as a tool to help with Hadoop work on Amazon EMR (Elastic Map Reduce).&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://github.com/Yelp/sqlite3dbm#readme"&gt;sqlite3dbm&lt;/a&gt; provides a &lt;a href="http://en.wikipedia.org/wiki/SQLite"&gt;SQLite&lt;/a&gt;-backed dictionary conforming to the &lt;a href="http://docs.python.org/2/library/dbm.html"&gt;dbm&lt;/a&gt; interface, along with a shelve class that wraps the dict and provides serialization for it.&lt;br /&gt;
&lt;br /&gt;
I tried it out, and it worked as &lt;a href="http://pythonhosted.org/sqlite3dbm/"&gt;advertised&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
How to use sqlite3dbm:&lt;br /&gt;
&lt;br /&gt;
Import the module, use its open() method to create an SQLite database, getting back a handle to it, let's call it "db", then use Python dict syntax on db to store data. &lt;br /&gt;
&lt;br /&gt;
Then, either in the same or another program later, you can again fetch and/or modify that data, with dict syntax.&lt;br /&gt;
&lt;br /&gt;
Interesting idea. dbm modules, which implement key-value stores, are less powerful than relational databases (SQL), and were probably developed earlier (think ISAM, etc.), so it looks a bit backwards to implement a dbm-type store on top of SQLite. But the sqlite3dbm project page gives at least some justification for that:&lt;br /&gt;
&lt;br /&gt;
[ This module was born to provide random-access extra data for Hadoop jobs on Amazon’s Elastic Map Reduce (EMR) cluster. We used to use bsddb for this because of its dead-simple dict interface. Unfortunately, bsddb is deprecated for removal from the standard library and also has inter-version compatability problems that make it not work on EMR. sqlite3 is the obvious alternative for a persistent store, but its powerful SQL interface can be too complex when you just want a dict. Thus, sqlite3dbm was born to provide a simple dictionary API on top of the ubiquitous and easily available sqlite3.&lt;br /&gt;
&lt;br /&gt;
This module requres no setup or configuration once installed. Its goal is a stupid-simple solution whenever a persistent dictionary is desired. ]&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=8MDDlP6uXgQ:PbLmuOggZlo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=8MDDlP6uXgQ:PbLmuOggZlo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=8MDDlP6uXgQ:PbLmuOggZlo:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=8MDDlP6uXgQ:PbLmuOggZlo:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=8MDDlP6uXgQ:PbLmuOggZlo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=8MDDlP6uXgQ:PbLmuOggZlo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=8MDDlP6uXgQ:PbLmuOggZlo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=8MDDlP6uXgQ:PbLmuOggZlo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=8MDDlP6uXgQ:PbLmuOggZlo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=8MDDlP6uXgQ:PbLmuOggZlo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=8MDDlP6uXgQ:PbLmuOggZlo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=8MDDlP6uXgQ:PbLmuOggZlo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/8MDDlP6uXgQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/6950389946598220883/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=6950389946598220883" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/6950389946598220883?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/6950389946598220883?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/8MDDlP6uXgQ/sqlite3dbm-sqlite-backed-dbm-module.html" title="sqlite3dbm, an SQLite-backed dbm module" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/sqlite3dbm-sqlite-backed-dbm-module.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIEQ389fCp7ImA9WhBVE0w.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-5448673380461082979</id><published>2013-04-19T00:45:00.000+05:30</published><updated>2013-04-19T00:45:02.164+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-19T00:45:02.164+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Google+" /><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="social-media" /><category scheme="http://www.blogger.com/atom/ns#" term="G+" /><category scheme="http://www.blogger.com/atom/ns#" term="social-networking" /><category scheme="http://www.blogger.com/atom/ns#" term="blogging" /><category scheme="http://www.blogger.com/atom/ns#" term="GooglePlus" /><title>Now, Google+ comments on your Blogger blog</title><content type="html">By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Just saw the news via an email from Google.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://googleblog.blogspot.in/2013/04/bringing-google-comments-to-blogger.html"&gt;Bringing Google+ Comments to Blogger&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Looks like an interesting idea.&lt;br /&gt;
&lt;br /&gt;
Some of the benefits mentioned for this feature:&lt;br /&gt;
&lt;br /&gt;
- View your blog and Google+ comments, all in one place&lt;br /&gt;
&lt;br /&gt;
- Help readers comment and connect with their circles&lt;br /&gt;
&lt;br /&gt;
I enabled the feature for my blog - this one, &lt;a href="http://jugad2.blogspot.com"&gt;jugad2.blogspot.com&lt;/a&gt; . &lt;br /&gt;
&lt;br /&gt;
Let's see how it works out. There may be a few issues initially, but over time those should get fixed.&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=w19z9LDHTfU:TC_OAYf-RTs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=w19z9LDHTfU:TC_OAYf-RTs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=w19z9LDHTfU:TC_OAYf-RTs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=w19z9LDHTfU:TC_OAYf-RTs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=w19z9LDHTfU:TC_OAYf-RTs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=w19z9LDHTfU:TC_OAYf-RTs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=w19z9LDHTfU:TC_OAYf-RTs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=w19z9LDHTfU:TC_OAYf-RTs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=w19z9LDHTfU:TC_OAYf-RTs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=w19z9LDHTfU:TC_OAYf-RTs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=w19z9LDHTfU:TC_OAYf-RTs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=w19z9LDHTfU:TC_OAYf-RTs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/w19z9LDHTfU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/5448673380461082979/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=5448673380461082979" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5448673380461082979?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5448673380461082979?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/w19z9LDHTfU/now-google-comments-on-your-blogger-blog.html" title="Now, Google+ comments on your Blogger blog" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/now-google-comments-on-your-blogger-blog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEHR30-cCp7ImA9WhBVEUk.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-5016885956714042635</id><published>2013-04-17T03:13:00.002+05:30</published><updated>2013-04-17T03:13:56.358+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-17T03:13:56.358+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="databases" /><category scheme="http://www.blogger.com/atom/ns#" term="best-practices" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="primary-keys" /><title>Common DB developer mistake? Using natural instead of surrogate keys</title><content type="html">By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Just saw this StackOverflow article:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/621884/database-development-mistakes-made-by-application-developers?lq=1"&gt;Database development mistakes made by application developers [closed]&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
via &lt;a href="https://mobile.twitter.com/coding_insights/status/324012847816396800?p=v"&gt;this Twitter conversation&lt;/a&gt; between me and @coding_insights.&lt;br /&gt;
&lt;br /&gt;
The article had this as one of the answers:&lt;br /&gt;
&lt;br /&gt;
"3. Using natural rather than surrogate (technical) primary keys"&lt;br /&gt;
&lt;br /&gt;
followed by an explanation of why that person thinks so.&lt;br /&gt;
&lt;br /&gt;
I tend to agree with that comment, based on my own experience working on many database-backed projects.&lt;br /&gt;
&lt;br /&gt;
Though it seems counter-intuitive, using surrogate keys seems to be a better and more robust approach.&lt;br /&gt;
&lt;br /&gt;
The commenter gave many reasons for using surrogate keys instead of natural keys, (and as I said, I've experienced at least some of those reasons), so I won't repeat them here; go take a look at that article.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=GytdsjfkB9s:ivLPE-fgvt4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=GytdsjfkB9s:ivLPE-fgvt4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=GytdsjfkB9s:ivLPE-fgvt4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=GytdsjfkB9s:ivLPE-fgvt4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=GytdsjfkB9s:ivLPE-fgvt4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=GytdsjfkB9s:ivLPE-fgvt4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=GytdsjfkB9s:ivLPE-fgvt4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=GytdsjfkB9s:ivLPE-fgvt4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=GytdsjfkB9s:ivLPE-fgvt4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=GytdsjfkB9s:ivLPE-fgvt4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=GytdsjfkB9s:ivLPE-fgvt4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=GytdsjfkB9s:ivLPE-fgvt4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/GytdsjfkB9s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/5016885956714042635/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=5016885956714042635" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5016885956714042635?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5016885956714042635?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/GytdsjfkB9s/common-db-developer-mistake-using.html" title="Common DB developer mistake? Using natural instead of surrogate keys" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/common-db-developer-mistake-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4BQHg6eSp7ImA9WhBVEUk.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-1168298825183755086</id><published>2013-04-17T01:39:00.000+05:30</published><updated>2013-04-17T01:39:11.611+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-17T01:39:11.611+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AVC.com" /><category scheme="http://www.blogger.com/atom/ns#" term="business-models" /><category scheme="http://www.blogger.com/atom/ns#" term="free" /><category scheme="http://www.blogger.com/atom/ns#" term="GigaOm" /><category scheme="http://www.blogger.com/atom/ns#" term="Fred-Wilson" /><category scheme="http://www.blogger.com/atom/ns#" term="startups" /><category scheme="http://www.blogger.com/atom/ns#" term="freemium" /><title>"Free is only a tactic, though, not a business model." - GigaOm</title><content type="html">By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I saw an interesting post by &lt;a href="http://avc.com"&gt;Fred Wilson&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.avc.com/a_vc/2013/04/tenacity-and-persistence-pays-off.html"&gt;Tenacity And Persistence Pays Off&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Fred's post also had a comment by Philip Sugar, to which I replied, asking for more info, and he replied, with a link in his comment to this post: &lt;a href="http://redeye.firstround.com/2007/03/the_first_penny.html"&gt;The Penny Gap&lt;/a&gt;. That post had an interesting quote from an article on GigaOm:&lt;br /&gt;
&lt;br /&gt;
[ To be fair to these VCs, they’re not advocating doing everything without pay. They’re suggesting free as a tactic towards getting paid in other ways: through advertising, or by premium services (as in a freemium model), or maybe even through being acquired by a company with a large wallet. &lt;b&gt;Free is only a tactic, though, not a business model&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Conflating the two misleads web application developers into thinking they don’t need to do the hard work of figuring out what’s really of value to users before they build and launch their online service. ]&lt;br /&gt;
&lt;br /&gt;
The GigaOm post is here: &lt;a href="http://gigaom.com/2007/03/13/free-a-tactic-not-a-business-model/"&gt;Free: a Tactic, not a Business Model&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=En7Xeuysp64:znIEgEX5WIc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=En7Xeuysp64:znIEgEX5WIc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=En7Xeuysp64:znIEgEX5WIc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=En7Xeuysp64:znIEgEX5WIc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=En7Xeuysp64:znIEgEX5WIc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=En7Xeuysp64:znIEgEX5WIc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=En7Xeuysp64:znIEgEX5WIc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=En7Xeuysp64:znIEgEX5WIc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=En7Xeuysp64:znIEgEX5WIc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=En7Xeuysp64:znIEgEX5WIc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=En7Xeuysp64:znIEgEX5WIc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=En7Xeuysp64:znIEgEX5WIc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/En7Xeuysp64" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/1168298825183755086/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=1168298825183755086" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/1168298825183755086?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/1168298825183755086?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/En7Xeuysp64/free-is-only-tactic-though-not-business.html" title="&quot;Free is only a tactic, though, not a business model.&quot; - GigaOm" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/free-is-only-tactic-though-not-business.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIHQH8zeyp7ImA9WhBWGUU.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-509263396853509104</id><published>2013-04-15T04:17:00.003+05:30</published><updated>2013-04-15T05:05:31.183+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-15T05:05:31.183+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python-Brochure-Project" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>The Python Brochure Project - preview available</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://brochure.getpython.info/"&gt;The Python Brochure Project&lt;/a&gt;, an initiative by the Python Software Foundation, has released a preview of the brochure. The purpose of the Python Brochure is to make the Python language and its benefits and uses more widely known, among other things.&lt;br /&gt;
&lt;br /&gt;
The contents of the Python Brochure are pretty interesting, IMO, and show how widely and diversely Python is being used worldwide by companies, governments and other organizations.&lt;br /&gt;
&lt;br /&gt;
Python may even go to Mars in a few years! Not kidding - see the brochure.&lt;br /&gt;
&lt;br /&gt;
Excerpt from the site:&lt;br /&gt;
&lt;br /&gt;
[ &lt;b&gt;The brochure showcases Python projects with great impact, fascinating aspect and interesting twist&lt;/b&gt; from all application spaces covering use cases in business, science, industry, education, media, government, public sector and charity. ]&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
You can get the &lt;a href="http://brochure.getpython.info/media/releases/prerelases/psf-python-brochure-vol-1-final-content-preview"&gt;Python Brochure preview&lt;/a&gt; (as a PDF file). Scroll a bit down the page if you need to (depending on your monitor size), to see the download link.&lt;br /&gt;
&lt;br /&gt;
I just downloaded it and scanned through it, and it looks quite good.&lt;br /&gt;
&lt;br /&gt;
A minor nitpick is that I wish that they would have made it a  single-column PDF, but that is my personal preference.&lt;br /&gt;
&lt;br /&gt;
Update: Just realized that the two-column format is more suitable for printing (if the columns come on opposing pages), and brochures are printed ... Still wish there was a single-column version for computer viewing, though.&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=FNxT-fno3oI:SQmcrUYRsBU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=FNxT-fno3oI:SQmcrUYRsBU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=FNxT-fno3oI:SQmcrUYRsBU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=FNxT-fno3oI:SQmcrUYRsBU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=FNxT-fno3oI:SQmcrUYRsBU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=FNxT-fno3oI:SQmcrUYRsBU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=FNxT-fno3oI:SQmcrUYRsBU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=FNxT-fno3oI:SQmcrUYRsBU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=FNxT-fno3oI:SQmcrUYRsBU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=FNxT-fno3oI:SQmcrUYRsBU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=FNxT-fno3oI:SQmcrUYRsBU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=FNxT-fno3oI:SQmcrUYRsBU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/FNxT-fno3oI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/509263396853509104/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=509263396853509104" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/509263396853509104?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/509263396853509104?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/FNxT-fno3oI/the-python-brochure-project-preview.html" title="The Python Brochure Project - preview available" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/the-python-brochure-project-preview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QMSHY7eip7ImA9WhBWGEQ.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-5660455061397966025</id><published>2013-04-14T03:51:00.001+05:30</published><updated>2013-04-14T04:53:09.802+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-14T04:53:09.802+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="music" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-winsound-module" /><category scheme="http://www.blogger.com/atom/ns#" term="piano" /><title>Play the piano on your computer with Python</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This program is meant for kids of all ages ...&lt;br /&gt;
&lt;br /&gt;
The program, piano.py (shown below), lets you play music on your computer, something like a piano, by pressing the keys C D E F G A B, as in Western classical music.&lt;br /&gt;
&lt;br /&gt;
I've written various versions of such a program in the past, starting from &lt;a href="http://jugad2.blogspot.in/2012/09/lissajous-hippo.html"&gt;my first home computer&lt;/a&gt;, in different languages (BASIC, Turbo Pascal, Turbo C), for fun.&lt;br /&gt;
&lt;br /&gt;
The program works on Windows and uses the &lt;a href="http://docs.python.org/2/library/winsound.html"&gt;Python winsound module&lt;/a&gt;. I got to know about the winsound module a while ago, and tried it then, and wrote a program like this.&lt;br /&gt;
&lt;br /&gt;
To run this program, you need Windows and Python, and a working  sound system; built-in speakers on a PC or laptop will work, but you will get better sound quality from external speakers.&lt;br /&gt;
&lt;br /&gt;
The program is rudimentary and is not meant to simulate a full piano; that would be much more complex. &lt;br /&gt;
&lt;br /&gt;
Here is the piano program in Python:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# piano.py

# Description: A simple program to make the computer act like 
# a piano. Plays a note for each of the keys C, D, E, F, G, A, B,
# according to the Western music middle octave.

# References:
# http://en.wikipedia.org/wiki/Frequency_of_notes

# Author: Vasudev Ram - http://www.dancingbison.com

import string
from time import sleep
from winsound import Beep
from msvcrt import getch

def play_note(frequency, duration):
    Beep(frequency, duration)

"""
Compute all the frequencies for the notes C D E F G A B,
for the middle C octave, where note A = 400 Hz.

Middle octave note frequencies computed from A = 440 Hz,
using the info at http://en.wikipedia.org/wiki/Frequency_of_notes
(Multiply a note frequency by the square of the twelfth root
of 2 to get the next higher note, and divide it by the same
to get the next lower note).
"""

a = 440
# twelfth_root_2 is the 12th root of 2
twelfth_root_2 = 2 ** (1.0/12.0)
# tr2 is a shorter name for twelfth_root_2
tr2 = twelfth_root_2
# tr2sqrd is tr2 squared
# tr2sqrd is the factor by which to multiply (or divide) the 
# frequency of any note, to get the next higher (or lower) note
# in the same octave.
# E.g. multiplying the frequency for note A in the middle C octave,
# i.e. 440 Hz, by tr2sqrd, gives the frequency for the next higher
# note in the same octave, i.e. note B.
tr2sqrd = tr2 * tr2

b = int(round(a * tr2sqrd))

# C D E F G A B

g = int(round(a / tr2sqrd))
f = int(round(g / tr2sqrd))
e = int(round(f / tr2sqrd))
d = int(round(e / tr2sqrd))
c = int(round(d / tr2sqrd))

"""
print "c =", c, "d =", d, "e =", e, "f =", f
print "g =", g, "a =", a, "b =", b
"""

# Set up the notes dict mapping letter keys to notes to play
notes = {}
notes['c'] = c
notes['d'] = d
notes['e'] = e
notes['f'] = f
notes['g'] = g
notes['a'] = a
notes['b'] = b

print
print "Simple piano program in Python, by Vasudev Ram"
print
print "To play, keep on pressing any of these keys: c d e f g a b"
print "Make sure the Caps Lock light on your keyboard is off"
print
print "Press q to stop"
print
print
print "             The floor is yours, Maestro!"
print chr(7) # bell
print

duration = 300 # milliseconds
note = string.lower(getch())

while True:
    print note,
    if note in notes:
        play_note(notes[note], duration)
    elif note == 'q':
        break
    note = string.lower(getch())

print
print

# And farewell tune ...

sleep(1.5)
for note in ('c', 'c', 'd', 'd', 'g', 'a', 'b'):
    play_note(notes[note], duration)
    sleep(0.1)

sleep(1.5)

for note in ('d', 'd', 'c', 'c', 'b', 'a', 'g'):
    play_note(notes[note], duration)
    sleep(0.1)
print
print "Encore!"
print
#--------------- EOF: piano.py ----------

&lt;/pre&gt;&lt;br /&gt;
You can run the piano program with the command:&lt;br /&gt;
&lt;br /&gt;
python piano.py&lt;br /&gt;
&lt;br /&gt;
It gives instructions on how to use it.&lt;br /&gt;
&lt;br /&gt;
It's easy - just keep pressing any of the keys c d e f g a b, or q to quit.&lt;br /&gt;
&lt;br /&gt;
Enjoy.&lt;br /&gt;
&lt;br /&gt;
Note 1: I computed the frequencies for the notes (C D E F G A B)  from the Wikipedia link (in the code above), but there are multiple notes with almost the same name (even in the same octave), and I don't have much knowledge of music, so sorry if some of the notes are off key. Feel free to give suggestions in the comments, and I'll try to implement them.&lt;br /&gt;
&lt;br /&gt;
Note 2: I just whipped up the code quickly, it can be improved, I may do that later.&lt;br /&gt;
&lt;br /&gt;
Also, if you are into Python and music, check this post:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://jugad2.blogspot.in/2013/01/pyknon-music-library-for-python.html"&gt;Pyknon music library for Python&lt;/a&gt; (MIDI)&lt;br /&gt;
&lt;br /&gt;
I also came across a couple of other music-related Python modules, but that is a subject for another post.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=3pQlUaxKeU0:krZIcR4Hkk4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=3pQlUaxKeU0:krZIcR4Hkk4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=3pQlUaxKeU0:krZIcR4Hkk4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=3pQlUaxKeU0:krZIcR4Hkk4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=3pQlUaxKeU0:krZIcR4Hkk4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=3pQlUaxKeU0:krZIcR4Hkk4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=3pQlUaxKeU0:krZIcR4Hkk4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=3pQlUaxKeU0:krZIcR4Hkk4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=3pQlUaxKeU0:krZIcR4Hkk4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=3pQlUaxKeU0:krZIcR4Hkk4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=3pQlUaxKeU0:krZIcR4Hkk4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=3pQlUaxKeU0:krZIcR4Hkk4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/3pQlUaxKeU0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/5660455061397966025/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=5660455061397966025" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5660455061397966025?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5660455061397966025?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/3pQlUaxKeU0/play-piano-on-your-computer-with-python.html" title="Play the piano on your computer with Python" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/play-piano-on-your-computer-with-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4CQXgycCp7ImA9WhBWGE0.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-3056160630109474352</id><published>2013-04-13T01:58:00.002+05:30</published><updated>2013-04-13T04:52:40.698+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-13T04:52:40.698+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bottle" /><category scheme="http://www.blogger.com/atom/ns#" term="pip" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="pdf" /><title>The pip search command (Python)</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I was checking out the help for Python's &lt;a href="http://en.wikipedia.org/wiki/Pip_(Python)"&gt;pip&lt;/a&gt; tool (an installation tool for Python packages), and came across its search option.&lt;br /&gt;
&lt;br /&gt;
The search option of the pip command lets you search &lt;a href="https://pypi.python.org/pypi"&gt;PyPI, the Python Package Index&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I tried it out with a couple of searches, for the terms &lt;b&gt;bottle&lt;/b&gt; (to get info on more PyPI packages related to 1) the &lt;a href="http://bottlepy.org/"&gt;Bottle&lt;/a&gt; Python web microframework (which I had blogged about a while ago), and 2) &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Portable_Document_Format"&gt;PDF&lt;/a&gt;&lt;/b&gt;, which is &lt;a href="http://jugad2.blogspot.in/2013/04/using-xtopdf-and-pypyodbc-to-publish-ms.html"&gt;one&lt;/a&gt; of &lt;a href="http://jugad2.blogspot.in/2012/11/pdfbuilder-can-now-take-multiple-input.html"&gt;my&lt;/a&gt; areas of &lt;a href="http://jugad2.blogspot.in/2012/07/guide-to-installing-and-using-xtopdf.html"&gt;interest&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Here are the results of those two pip searches of PyPI:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;c:\Python27\Lib\site-packages&gt;pip -v -v -v search bottle
bottle                    - Fast and simple WSGI-framework for small web-
                            applications.
  INSTALLED: 0.11.6 (latest)
bottlenose                - A Python hook into the Amazon.com Product
                            Advertising API
Bottleneck                - Fast NumPy array functions written in Cython
mimerender                - RESTful HTTP Content Negotiation for Flask,
                            Bottle, web.py and webapp2 (Google App Engine)
bottle-cork               - Authentication/Authorization library for Bottle
pasttle                   - Simple pastebin on top of bottle.
bottle-websocket          - WebSockets for bottle
bottle-hotqueue           - FIFO Queue for Bottle built upon HotQueue
Bottle-DebugToolbar       - A port of the Django Debug Toolbar to Bottle
bottle-haml               - UNKNOWN
macaron                   - Simple object-relational mapper for SQLite3,
                            includes plugin for Bottle web framework
bottle-servefiles         - A reusable app that serves static files for bottle
                            apps
bottle-sqlalchemy         - SQLAlchemy integration for Bottle.
bottle-mongodb            - MongoDB integration for Bottle
flaskle                   - bottle-like utility decorators for flask
bottle-redis              - Redis integration for Bottle.
bottle-pystache           - Bottle Pystache template wrappers
bottle-tornado-websocket  - WebSockets for bottle
BottleRack                - BottleRack Markdown HTML Server
Gluino                    - port of web2py libs to bottle, flask, pyramid,
                            tornado (includes copy of modules from the web2py
                            framework)
bottle-request            - Plugin to give bottle a 'stateless' request object
bottle-sqlite             - SQLite3 integration for Bottle.
bottle-renderer           - Renderer plugin for bottle
bottle-memcache           - Memcache integration for Bottle.
bottle-web2pydal          - Web2py Dal integration for Bottle.
Bottle-SSLify             - Force SSL on any Bottle app.
bottle-werkzeug           - Werkzeug integration for Bottle.
bottle-pycassa            - Bottle plugin for Cassandra/Pycassa
bottle_cql                - CQL integration for Bottle.
bottle-extras             - Meta package to install the bottle plugin
                            collection.
bn                        - Lightweight profiling tool to detect performance
                            BottleNecks in Python code.
bottle-agamemnon          - Agamemnon integration for bottle
bottle-flash              - flash plugin for bottle
bottle-tornadosocket      - WebSockets for bottle
bottle-mysql              - MySQL integration for Bottle.
bottle-pgsql              - PgSQL integration for Bottle

c:\Python27\Lib\site-packages&gt;
c:\Python27\Lib\site-packages&gt;pip -v -v -v search pdf
mwlib.rl                  - generate pdfs from mediawiki markup
zopyx.convert             - A Python interface to XSL-FO libraries (Conversion
                            HTML to PDF, RTF, DOCX, WML and ODT)
slc.publications          - A content type to store and parse pdf publications
pdfminer                  - PDF parser and analyzer
zopyx.convert2            - A Python interface for the conversion of HTML to
                            PDF, RTF, DOCX, WML and ODT) - belongs to
                            zopyx.smartprintng.core
pisa                      - PDF generator using HTML and CSS
collective.pdfpeek        - A Plone 4 product that generates image thumbnail
                            previews of PDF files stored on ATFile based
                            objects.
WeasyPrint                - WeasyPrint converts web documents to PDF.
rst2pdf                   - Convert restructured text to PDF via reportlab.
pdfserenitynow            - Create TIFs and JPGs from crappy PDFs
collective.sendaspdf      - An open source product for Plone to download or
                            email a page seen by the user as a PDF file.
Products.SmartPrintNG     - Produce &amp; Publish for Plone - Conversion of Plone
                            content to PDF, RTS, ODT, DOCX and WML
wc.pageturner             - A Plone product that provides the PDF viewer
                            FlexPaper.
PyX                       - Python package for the generation of PostScript
                            and PDF files
PollyReports              - Band-oriented PDF report generation from database
                            query
relatorio                 - A templating library able to output odt and pdf
                            files
pyPdf                     - PDF toolkit
wildcard.pdfpal           - PDF Thumbnail generation, OCR indexing and extra
                            views integrated with plone.app.async
pdfminer3k                - PDF parser and analyzer
pdfparanoia               - pdf watermark remover library for academic papers
template2pdf              - Renders Django/Jinja2 templates into PDF.
ftw.book                  - Produce books with Plone and export them in a high
                            quality PDF.
collective.pdfjs          - pdf.js integration for Plone
ftw.pdfgenerator          - A library for generating PDF representations of
                            Plone objects with LaTeX.
django-wkhtmltopdf        - Converts html to PDF using
                            http://code.google.com/p/wkhtmltopdf/.
TableFactory              - Easily create HTML, spreadsheet, or PDF tables
                            from common Python data sources
paPyro                    - A PDF report generator written in Python
pdfnup                    - Layout multiple pages per sheet of a PDF document.
pdfdocument               - Wrapper for ReportLab which allows easy creation
                            of PDF documents.
xhtml2pdf                 - PDF generator using HTML and CSS
ServPDF                   - ServPDF is a webbased Microsoft Office to PDF
                            Converter
pdfcrowd                  - A client for Pdfcrowd API.
pdfrecycle                - create a PDF file by composing pages from other
                            PDF files.
metapdf                   - A lightweight PDF library optimized for metadata
                            extraction and insertion
tex                       - Convert LaTeX or TeX source to PDF or DVI, and
                            escape strings for LaTeX.
pdfkit                    - Wkhtmltopdf python wrapper to convert html to pdf
                            using the webkit rendering engine and qt
eea.converter             - SVG, PNG, PDF converters using external tools as
                            ImageMagick
pieberry-library-assistant - A program to download pdf documents from public
                            websites, and catalogue them in BibTeX format
InvoiceGenerator          - Library to generate PDF invoice.
pdfserver                 - Pdfserver is a webservice that offers common PDF
                            operations like joining documents, selecting pages
                            or "n pages on one".
rputils                   - An application for dice rolling and reading PDF
                            files.
diffpy.pdfgui             - GUI for PDF simulation and structure refinement.
pyf.components.consumers.rmlpdfwriter - PyF component RML-Based PDF Writer based
 on
                            Z3C.RML and Genshi
django-xhtml2pdf          - A Django app to generate pdfs from templates
aws.pdfbook               - Download Plone content views as PDF
pdfquery                  - Concise and friendly PDF scraper using JQuery or
                            XPath selectors.
OPAF                      - Open PDF Analysis Framework
TecUtils                  - Various utilities for database and config files
                            use. Text to Pdf converter
Products.PDFtoOCR         - PDFtoOCR does OCR processing on PDF documents. The
                            text from OCR is used in the search results.
Flask-WeasyPrint          - Make PDF in your Flask app with WeasyPrint.
pdfmerge                  - Command-line PDF utility.
ftwbook.graphicblock      - Addon for `ftw.book` providing a graphics block
                            for including PDF documents in the book.
pyf.components.consumers.ooowriter - py3o-powered OpenOffice.org ODT Writer for
PyF
                            Framework with support for rendering (pdf, html,
                            doc, docx, etc) on py3o renderservers.
pyjon.reports             - Pyjon.Reports is a module bridging z3c.rml, genshi
                            and pypdf together to provide a simple mean of
                            creating templated pdf documents in python.
django-pdf                - A Django app for managing and processing PDF
                            documents.
gametex-django-print      - Generate PDFs from GameTeX in Django
collective.pdftransform   - A set of portal transform to change pdf into
                            images
pdftools.pdfposter        - Scale and tile PDF images/pages to print on
                            multiple pages.
django-webodt             - ODF template handler and odt to html, pdf, doc,
                            etc converter
slate                     - Extract text from PDF documents easily.
dinbrief                  - PDF renderer for DIN 5008 and DIN 676 compliant
                            letters and invoices
raptus.princexml          - Provides a simple bridge to create PDFs from HTML
                            views using PrinceXML
wallaby-plugin-pdfgenerator - This package provides a PDF generator for wallaby.

z3c.pdftemplate           - PDF Template
wkhtmltopdf               - Simple python wrapper for wkhtmltopdf
diffpy.pdffit2            - PDFfit2 - real space structure refinement program.
pdfid_PL                  - A Python module to analyze and sanitize PDF files,
                            based on Didier Stevens' PDFiD
pypdflib                  - Pango Cairo based Python PDF Library
pdf2zip                   - pdf conversion utility
pyf.components.consumers.xhtmlpdfwriter - XHTML-Based PDF Writer for PyF Framewo
rk based on
                            PISA and Genshi
pdf-link-checker          - Reports broken hyperlinks in PDF documents
scrape-highlighted        - A script to scrape highlighted text from a pdf
                            [Mac only].
pdfgrid                   - Add a grid on top of all pages of a PDF document.
jag-tipdf                 - Combines plain text and images into a single PDF.
HWFormatter               - Format submitted homework assignments from
                            Blackboard into PDFs
collective.pdfLeadImage   - Automatically creates contentleadimage from pdf
                            cover
pdfcat                    - pdf concatenation tool
prynt                     - Generating HTML/PDF directly from your console.
pdfsplit                  - Split a PDF file or rearrange its pages into a new
                            PDF file.
pdfrw                     - Pure Python PDF file reader/writer library
agenda2pdf                - Simple script which generates a book agenda file
                            in PDF format, ready to be printed or to be loaded
                            on a ebook reader
stapler                   - Manipulate PDF documents from the command line
trml2pdf                  - Tiny RML2PDF is a tool to easily create PDF
                            document without programming. It       can be used
                            as a Python library or as a standalone binary. It
                            converts a RML,       an XML dialect that lets you
                            define the precise appearance of a printed
                            document, to a PDF. You can use your existing
                            tools to generate an input file       that exactly
                            describes the layout of a printed document, and
                            RML2PDF converts       it into PDF. RML is a much
                            more powerfull and flexible alternative to XSL:FO.
                            The executable read a RML file to the standard
                            input and output a PDF file to       the standard
                            output.
wsgitrml2pdf              - wsgitrml2pdf is wsgi middleware to convert trml
                            text to pdf.
fpdf.py                   - Simple PDF generation for Python (FPDF PHP port)
DXF-Converter             - Converts Autocad Files v11 and v12 to pdf
JagPDF                    - A library for generating PDF documents.
pdftools.pdfjoin          - Join PDF documents into a single document.
collective.calameo        - Publish your PDF document in Plone with Calameo
PyPDF2                    - PDF toolkit
PDFTron PDFNet SDK for Python - A top notch PDF library for PDF rendering,
                            conversion, content extraction, etc
cubicweb-pdfexport        - export any page as a pdf document
fpdf                      - Simple PDF generation for Python
pywkher                   - wkhtmltopdf for Python on Heroku
PyBooklet                 - Converts PDFs to booklets
pyFPDF                    - generate pdf on python
origapy                   - A Python module to clean PDF files by disabling
                            active content (javascript, launch, etc), using
                            the Ruby Origami PDF parser.
pdftable                  - pdftable: extract tables from PDF files
django-latex              - Django application to generate latex/pdf files.
ttfpdf                    - TrueType support PDF file Generator
pdf2tiff                  - A PDF to TIFF converter for Mac OS X.
cloudooo.handler.pdf      - Python Package to handler PDF documents
pdfbox                    - JCC wrapper for Apache PDFBox
buzzweb2pdf               - An Open Source tool to convert HTML documentation
                            with an index page into a single PDF.
ServPDF and ServPDF-OO    - Web based Office to PDF Converter Server for
                            Microsoft Office and OpenOffice
genenga                   - Generate Nengajo(Japanese new year card) pdf from
                            address list.
&lt;/pre&gt;&lt;br /&gt;
As you can see from the output above, a lot of Python packages were found for those two search terms. In the search for the term "bottle", not all of the packages found were actually related to the Bottle framework, but most were.&lt;br /&gt;
&lt;br /&gt;
The search for "PDF" resulted in many results, some of which I've blogged about in the past, such as pisa/xhtmltopdf, PyPDF, pdfdocument, wkhtml2pdf, and others, and many that I didn't know of before.&lt;br /&gt;
&lt;br /&gt;
So it looks like the pip search command is a useful tool.&lt;br /&gt;
&lt;br /&gt;
As for why I used "pip -v -v -v", see "pip --help" :-)&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=RiuGLmKzZH8:w8pRWSA7M5c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=RiuGLmKzZH8:w8pRWSA7M5c:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=RiuGLmKzZH8:w8pRWSA7M5c:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=RiuGLmKzZH8:w8pRWSA7M5c:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=RiuGLmKzZH8:w8pRWSA7M5c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=RiuGLmKzZH8:w8pRWSA7M5c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=RiuGLmKzZH8:w8pRWSA7M5c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=RiuGLmKzZH8:w8pRWSA7M5c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=RiuGLmKzZH8:w8pRWSA7M5c:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=RiuGLmKzZH8:w8pRWSA7M5c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=RiuGLmKzZH8:w8pRWSA7M5c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=RiuGLmKzZH8:w8pRWSA7M5c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/RiuGLmKzZH8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/3056160630109474352/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=3056160630109474352" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/3056160630109474352?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/3056160630109474352?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/RiuGLmKzZH8/the-pip-search-command-python.html" title="The pip search command (Python)" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/the-pip-search-command-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMNSH06cSp7ImA9WhBWFk8.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-2966265678142996709</id><published>2013-04-10T17:27:00.003+05:30</published><updated>2013-04-11T01:21:39.319+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-11T01:21:39.319+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mxODBC" /><category scheme="http://www.blogger.com/atom/ns#" term="xtopdf" /><category scheme="http://www.blogger.com/atom/ns#" term="MS-Access" /><category scheme="http://www.blogger.com/atom/ns#" term="Reportlab" /><category scheme="http://www.blogger.com/atom/ns#" term="eGenix" /><category scheme="http://www.blogger.com/atom/ns#" term="programmatic-PDF-creation" /><category scheme="http://www.blogger.com/atom/ns#" term="databases" /><category scheme="http://www.blogger.com/atom/ns#" term="mxODBC-Connect" /><category scheme="http://www.blogger.com/atom/ns#" term="ODBC" /><category scheme="http://www.blogger.com/atom/ns#" term="PDF-creation" /><category scheme="http://www.blogger.com/atom/ns#" term="MDB" /><category scheme="http://www.blogger.com/atom/ns#" term="pdf" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="MDBtoPDF" /><title>Using xtopdf and pypyodbc to publish MS Access database data to PDF</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I had blogged about &lt;a href="https://code.google.com/p/pypyodbc/"&gt;pypyodbc&lt;/a&gt;, a &lt;a href="http://jugad2.blogspot.in/2013/03/pypyodbc-pure-python-odbc-library.html"&gt;pure-Python ODBC library&lt;/a&gt;, recently.&lt;br /&gt;
&lt;br /&gt;
Using pypyodbc with my &lt;a href="https://bitbucket.org/vasudevram/xtopdf"&gt;xtopdf toolkit for PDF creation&lt;/a&gt;, you can publish your MS Access database data to PDF. &lt;br /&gt;
&lt;br /&gt;
Here is some example code to publish MS Access data to PDF:&lt;br /&gt;
&lt;br /&gt;
First, the program &lt;b&gt;create_ppo_mdb.py&lt;/b&gt;, shown below, creates an MS Access database called fruits.mdb, then creates a table called fruits in it, and inserts 3 records into the table:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# create_ppo_mdb.py

import pypyodbc 
             
pypyodbc.win_create_mdb('.\\fruits.mdb')
connection_string = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=.\\fruits.mdb'
connection = pypyodbc.connect(connection_string)

SQL = 'CREATE TABLE fruits (id COUNTER PRIMARY KEY, fruit_name VARCHAR(25));'
connection.cursor().execute(SQL).commit()

SQL = "INSERT INTO fruits values (1, 'apple');"
connection.cursor().execute(SQL).commit()

SQL = "INSERT INTO fruits values (2, 'banana');"
connection.cursor().execute(SQL).commit()

SQL = "INSERT INTO fruits values (3, 'orange');"
connection.cursor().execute(SQL).commit()

# Uncomment the 5 lines below make the program also display the data after creating it.

#SQL = 'SELECT * FROM fruits;'
#cursor = connection.cursor().execute(SQL)
#for row in cursor:
#    for col in row:
#        print col,
#    print

cursor.close()
connection.close()
&lt;/pre&gt;&lt;br /&gt;
Next, the program MDBtoPDF.py, shown below, reads the data from the fruits table in the MDB database just created above, and publishes the selected records to PDF:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;#-------------------------------------------------------------------

# MDBtoPDF.py
# Description: A program to convert MS Access .MDB data to PDF format.
# Author: Vasudev Ram - http://www.dancingbison.com

#-------------------------------------------------------------------

# imports

import sys 
import os
import time
import string
import pypyodbc 
from PDFWriter import PDFWriter
             
#-------------------------------------------------------------------

# globals

##------------------------ usage ---------------------------------------

def usage():

 sys.stderr.write("Usage: python " + sys.argv[0] + " MDB_DSN table_name pdf_file\n")
 sys.stderr.write("where MDB_DSN is the ODBC DSN (Data Source Name) for the\n")
 sys.stderr.write("MDB file, table_name is the name of the table in that MDB,\n")
 sys.stderr.write("whose data you want to convert to PDF, and pdf_file is the\n")
 sys.stderr.write("output PDF filename.\n")
 sys.stderr.write(sys.argv[0] + " reads the table data from the MDB and\n")
 sys.stderr.write("writes it to pdf_file.\n")

##------------------------ main ------------------------------------------

def main():

 '''Main program to convert MDB data to PDF.
 '''

 # check for right num. of args
 if (len(sys.argv) != 4):
  usage()
  sys.exit(1)

 # extract MDB DSN, table name and pdf filename from args
 mdb_dsn = sys.argv[1]
 table_name = sys.argv[2]
 pdf_fn = sys.argv[3]

 print "mdb_dsn =", mdb_dsn
 print "table_name =", table_name
 print "pdf_fn =", pdf_fn

    # build connection string
 connection_string_prefix = 'Driver={Microsoft Access Driver (*.mdb)};DBQ='
 connection_string = connection_string_prefix + mdb_dsn
 print "connection_string =", connection_string
 connection = pypyodbc.connect(connection_string)
 print "connection =", connection

 # create the PDFWriter instance
 pw = PDFWriter(pdf_fn)

 # and set some of its fields

 # set the font
 pw.setFont("Courier", 10)

 # set the page header
 gen_datetime = time.asctime()
 pw.setHeader("Generated by MDBtoPDF: Input: " + mdb_dsn + \
 " At: " + gen_datetime)

 # set the page footer
 pw.setFooter("Generated by MDBtoPDF: Input: " + mdb_dsn + \
 " At: " + gen_datetime)

 # create the separator for logical grouping of output
 sep = "=" * 60

 # print the data records section title
 pw.writeLine("MDB Data Records from MDB: %s, table: %s" % (mdb_dsn, 
  table_name))

 # print a separator line
 pw.writeLine(sep)

 # read the input MDB data and write it to the PDF file

 SQL = 'SELECT * FROM fruits;'

 cursor = connection.cursor().execute(SQL)
 for row in cursor:
  str_row = ""
  for col in row:
   str_row = str_row + str(col) + " "
  pw.writeLine(str_row)

 # close the cursor and connection
 cursor.close()
 connection.close()

 # print a separator line
 pw.writeLine(sep)

 # save current page
 pw.savePage()

 # close the PDFWriter
 pw.close()

##------------------------ Global code -----------------------------------

# invoke main

if __name__ == '__main__':
 main()

##------------------------ EOF - MDBto_PDF.py ---------------
&lt;/pre&gt;&lt;br /&gt;
To make the above programs work, you need to have the &lt;a href="http://www.reportlab.com/ftp/reportlab-1.21.zip"&gt;Reportlab toolkit v1.21&lt;/a&gt; and &lt;a href="https://bitbucket.org/vasudevram/xtopdf/downloads"&gt;the xtopdf toolkit&lt;/a&gt; installed, in addition to pypyodbc and Python 2.7. (Click on the "Branches" tab on the xtopdf page linked in the previous sentence to download xtopdf.)&lt;br /&gt;
&lt;br /&gt;
I've had an interest in ODBC ever since I first worked, as team leader, on a middleware software product that used ODBC. The middleware was developed at &lt;a href="http://www.infosys.com"&gt;Infosys Technologies&lt;/a&gt;, where I worked at the time.&lt;br /&gt;
&lt;br /&gt;
Though ODBC itself had a good architecture, many driver implementations of the time (this was some years ago) were rather slow, so one of the main goals of the product was to improve the performance of client-server or desktop applications (written in Visual Basic or C) that used ODBC for database access.&lt;br /&gt;
&lt;br /&gt;
I remember learning ODBC as part of the project (and teaching it to the team), and reading most of the book "Inside ODBC" by Kyle Geiger, one of the architects of ODBC - it was a fascinating book, that gave a detailed look inside the architecture of ODBC, the reasons for certain design decisions that were made, and so on.&lt;br /&gt;
&lt;br /&gt;
We succeeded in meeting all the goals of the project, and that  middleware product was used in many large client-server applications (using VB and Oracle / Sybase) that were developed by Infosys for its clients. I really had a lot of fun working on that project.&lt;br /&gt;
&lt;br /&gt;
Related links:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/ODBC"&gt;ODBC entry on Wikipedia&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.amazon.com/Inside-ODBC-Microsoft-programming-Geiger/dp/1556158157"&gt;Inside ODBC - the book, on Amazon&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.egenix.com/company/news/eGenix-mxODBC-Connect-2.0.3-GA.html"&gt;eGenix mxODBC Connect&lt;/a&gt;, from eGenix, a German Python products company.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.egenix.com/products/python/mxODBC/"&gt;eGenix mxODBC&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.unixodbc.org/"&gt;unixODBC&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.datadirect.com/products/odbc/index.html"&gt;DataDirect ODBC&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.iodbc.org/dataspace/iodbc/wiki/iODBC/"&gt;iODBC&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=28160"&gt;The Microsoft SQL Server ODBC Driver for Linux&lt;/a&gt; - it  provides native connectivity from Linux to Microsoft SQL Server. (Seems to be 64-bit only).&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XojMBMIT9h0:oYTyjbDX_WA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XojMBMIT9h0:oYTyjbDX_WA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XojMBMIT9h0:oYTyjbDX_WA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=XojMBMIT9h0:oYTyjbDX_WA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XojMBMIT9h0:oYTyjbDX_WA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=XojMBMIT9h0:oYTyjbDX_WA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XojMBMIT9h0:oYTyjbDX_WA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=XojMBMIT9h0:oYTyjbDX_WA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XojMBMIT9h0:oYTyjbDX_WA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XojMBMIT9h0:oYTyjbDX_WA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=XojMBMIT9h0:oYTyjbDX_WA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=XojMBMIT9h0:oYTyjbDX_WA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/XojMBMIT9h0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/2966265678142996709/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=2966265678142996709" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2966265678142996709?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/2966265678142996709?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/XojMBMIT9h0/using-xtopdf-and-pypyodbc-to-publish-ms.html" title="Using xtopdf and pypyodbc to publish MS Access database data to PDF" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/using-xtopdf-and-pypyodbc-to-publish-ms.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYHQHk4fip7ImA9WhBWFUk.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-6326485335786058080</id><published>2013-04-10T03:52:00.000+05:30</published><updated>2013-04-10T03:52:11.736+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-10T03:52:11.736+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="10000-hours" /><category scheme="http://www.blogger.com/atom/ns#" term="Peter-Norvig" /><title>It takes only eight hours to learn to code</title><content type="html">&lt;br /&gt;
By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://news.ycombinator.com/item?id=5520036"&gt;It takes only eight hours to learn to code&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Also see the parent link to the link above :-)&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=sHIjNTXMg-o:YCmd5xpvEBk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=sHIjNTXMg-o:YCmd5xpvEBk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=sHIjNTXMg-o:YCmd5xpvEBk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=sHIjNTXMg-o:YCmd5xpvEBk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=sHIjNTXMg-o:YCmd5xpvEBk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=sHIjNTXMg-o:YCmd5xpvEBk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=sHIjNTXMg-o:YCmd5xpvEBk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=sHIjNTXMg-o:YCmd5xpvEBk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=sHIjNTXMg-o:YCmd5xpvEBk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=sHIjNTXMg-o:YCmd5xpvEBk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=sHIjNTXMg-o:YCmd5xpvEBk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=sHIjNTXMg-o:YCmd5xpvEBk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/sHIjNTXMg-o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/6326485335786058080/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=6326485335786058080" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/6326485335786058080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/6326485335786058080?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/sHIjNTXMg-o/it-takes-only-eight-hours-to-learn-to.html" title="It takes only eight hours to learn to code" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/it-takes-only-eight-hours-to-learn-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUNQ3wycSp7ImA9WhBWFUk.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-9123965252892679445</id><published>2013-04-10T00:46:00.001+05:30</published><updated>2013-04-10T02:14:52.299+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-10T02:14:52.299+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python3" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-Module-Of-The-Week" /><category scheme="http://www.blogger.com/atom/ns#" term="doug-hellmann" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-debugging" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="Python2" /><category scheme="http://www.blogger.com/atom/ns#" term="Python-traceback-module" /><category scheme="http://www.blogger.com/atom/ns#" term="PyMOTW" /><category scheme="http://www.blogger.com/atom/ns#" term="sys._current_frames" /><title>Using sys._current_frames() and the Python traceback module for debugging</title><content type="html">By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Python's sys._current_frames() function/method and the &lt;a href="http://docs.python.org/2/library/traceback.html"&gt;traceback module of Python&lt;/a&gt; can be useful for debugging your Python code.&lt;br /&gt;
&lt;br /&gt;
In the example below, I've used &lt;a href="http://jugad2.blogspot.in/2013/04/py-python-launcher-for-windows.html"&gt;py, the Python Launcher for Windows&lt;/a&gt;. It comes with Python 3.3. If you're on Python 2, you can download the &lt;a href="https://bitbucket.org/vinay.sajip/pylauncher/downloads/"&gt;py launcher for Python 2 here&lt;/a&gt;. Use either of the versions (32-bit or 64-bit, as appropriate) called launcher*, not launchwin*, for the commands below.  &lt;br /&gt;
&lt;br /&gt;
The example below works on both Python 2 and Python 3.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;#--------------------------------------------------------
# test_current_frames.py 

import sys, traceback

def foo():

    for thread, frame in sys._current_frames().items():
        print('Thread 0x%x' % thread)
        traceback.print_stack(frame)

def bar():
    foo()

def baz():
    bar()

baz()
#--------------------------------------------------------
&lt;/pre&gt;&lt;br /&gt;
Run the program with any of the following 3 commands:&lt;br /&gt;
&lt;pre&gt;py test_current_frames.py

or

py -2 test_current_frames.py

or

py -3 test_current_frames.py
&lt;/pre&gt;You should get output similar to this:&lt;br /&gt;
&lt;pre&gt;Thread 0x17dc
  File "test_current_frames.py", line 17, in &lt;module&gt;
    baz()
  File "test_current_frames.py", line 15, in baz
    bar()
  File "test_current_frames.py", line 12, in bar
    foo()
  File "test_current_frames.py", line 9, in foo
    traceback.print_stack(frame)
&lt;/pre&gt;&lt;br /&gt;
Also read more about the traceback module on Doug Hellmann's &lt;a href="http://pymotw.com/2/traceback/"&gt;Python Module Of The Week (PyMOTW) site&lt;/a&gt;, a.k.a. PyMOTW.&lt;br /&gt;
&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=lzgusbc0C9w:ZyAv7WTBDkw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=lzgusbc0C9w:ZyAv7WTBDkw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=lzgusbc0C9w:ZyAv7WTBDkw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=lzgusbc0C9w:ZyAv7WTBDkw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=lzgusbc0C9w:ZyAv7WTBDkw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=lzgusbc0C9w:ZyAv7WTBDkw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=lzgusbc0C9w:ZyAv7WTBDkw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=lzgusbc0C9w:ZyAv7WTBDkw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=lzgusbc0C9w:ZyAv7WTBDkw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=lzgusbc0C9w:ZyAv7WTBDkw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=lzgusbc0C9w:ZyAv7WTBDkw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=lzgusbc0C9w:ZyAv7WTBDkw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/lzgusbc0C9w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/9123965252892679445/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=9123965252892679445" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/9123965252892679445?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/9123965252892679445?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/lzgusbc0C9w/using-syscurrentframes-and-python.html" title="Using sys._current_frames() and the Python traceback module for debugging" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/using-syscurrentframes-and-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkECQXw6eSp7ImA9WhBWE0o.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-5229338720830396629</id><published>2013-04-08T04:54:00.000+05:30</published><updated>2013-04-08T05:21:00.211+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-08T05:21:00.211+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python-Launcher-for-Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="py.exe" /><category scheme="http://www.blogger.com/atom/ns#" term="Python3" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="Python2" /><category scheme="http://www.blogger.com/atom/ns#" term="py" /><title>py, the Python Launcher for Windows</title><content type="html">By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;py&lt;/b&gt;, or &lt;b&gt;py.exe&lt;/b&gt;, is the name of a new(ish) &lt;b&gt;Python Launcher for Windows&lt;/b&gt;, which was released as part of Python 3.x.&lt;br /&gt;
&lt;br /&gt;
This is the &lt;a href="http://www.python.org/dev/peps/pep-0397/"&gt;PEP for py&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I tried out Py and it worked okay, for some basic uses.&lt;br /&gt;
&lt;br /&gt;
It lets you launch a specific version of Python, either 2, or 3, or 2.x or 3.x. I tried using it to launch both Python 2.7.3 and Python 3.3.1.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;pre&gt;C:\&gt; py -V
Python 2.7.3
C:\&gt; py -3 -V
Python 3.3.1
c:\Python33\Tools\Scripts&gt; py -2 which.py py.exe
C:\Windows\py.exe
c:\Python33\Tools\Scripts&gt;py -2 which.py cmd.exe
C:\Windows\system32\cmd.exe
&lt;/pre&gt;&lt;br /&gt;
Here is the partial output of running the py --help command:&lt;br /&gt;
&lt;pre&gt;c:\Python33\Tools\Scripts&gt;py --help
Python Launcher for Windows Version 3.3.1150.1013

usage: py [ launcher-arguments ] script [ script-arguments ]

Launcher arguments:

-2     : Launch the latest Python 2.x version
-3     : Launch the latest Python 3.x version
-X.Y   : Launch the specified Python version
-X.Y-32: Launch the specified 32bit Python version
&lt;/pre&gt;&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=vS--vLdQWOY:KPfKQs-zKdo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=vS--vLdQWOY:KPfKQs-zKdo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=vS--vLdQWOY:KPfKQs-zKdo:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=vS--vLdQWOY:KPfKQs-zKdo:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=vS--vLdQWOY:KPfKQs-zKdo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=vS--vLdQWOY:KPfKQs-zKdo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=vS--vLdQWOY:KPfKQs-zKdo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=vS--vLdQWOY:KPfKQs-zKdo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=vS--vLdQWOY:KPfKQs-zKdo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=vS--vLdQWOY:KPfKQs-zKdo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=vS--vLdQWOY:KPfKQs-zKdo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=vS--vLdQWOY:KPfKQs-zKdo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/vS--vLdQWOY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/5229338720830396629/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=5229338720830396629" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5229338720830396629?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/5229338720830396629?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/vS--vLdQWOY/py-python-launcher-for-windows.html" title="py, the Python Launcher for Windows" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/py-python-launcher-for-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYNQ3Y5fyp7ImA9WhBWE0s.&quot;"><id>tag:blogger.com,1999:blog-6692866151143183230.post-1779455090767974456</id><published>2013-04-08T01:03:00.001+05:30</published><updated>2013-04-08T01:03:12.827+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-08T01:03:12.827+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="scientific-computing" /><category scheme="http://www.blogger.com/atom/ns#" term="EPD-Free" /><category scheme="http://www.blogger.com/atom/ns#" term="Enthought" /><category scheme="http://www.blogger.com/atom/ns#" term="Enthought-Python-Distribution" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="plotting" /><category scheme="http://www.blogger.com/atom/ns#" term="graphing" /><title>EPD Free - Enthought Python Distribution, with scientific and other packages</title><content type="html">By &lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The &lt;a href="https://www.enthought.com/products/epd_free.php"&gt;Enthought Free Python Distribution&lt;/a&gt; (EPD Free), is a free Python distribution from &lt;a href="https://www.enthought.com/company/"&gt;Enthought&lt;/a&gt;, which includes  additional Python packages / modules for scientific computing and graphing / plotting, such as SciPy, matplotlib and more.&lt;br /&gt;
&lt;br /&gt;
I downloaded and installed it, and tried out some of the matplotlib examples in the Examples directory of the installation.&lt;br /&gt;
&lt;br /&gt;
They worked fine.&lt;br /&gt;
&lt;br /&gt;
Only tried it out a little so far, but I've known about Enthought for some time now, and it looks like a useful Python distribution for the stated purposes. They also have higher versions, presumably for pay, with support, etc.&lt;br /&gt;
&lt;a href=""&gt;&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://jugad2.blogspot.in/2013/03/dancing-bison-enterprises-profile.html"&gt;Vasudev Ram - Dancing Bison Enterprises&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- AddThis Button BEGIN --&gt; &lt;div class='addthis_toolbox addthis_default_style' expr:addthis:title='data:post.title' expr:addthis:url='data:post.url'&gt;&lt;a href='http://www.addthis.com/bookmark.php?v=250&amp;amp;username=vasudevram' class='addthis_button_compact'&gt;Share&lt;/a&gt; &lt;span class='addthis_separator'&gt;|&lt;/span&gt; &lt;a class='addthis_button_preferred_1'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_2'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_3'&gt;&lt;/a&gt; &lt;a class='addthis_button_preferred_4'&gt;&lt;/a&gt; &lt;/div&gt;&lt;script type="text/javascript"&gt;var addthis_config = {"data_track_clickback":true};&lt;/script&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=vasudevram"&gt;&lt;/script&gt; &lt;!-- AddThis Button END --&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.dancingbison.com"&gt;Vasudev Ram&lt;/a&gt;
&lt;br/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=KgQNRkFvGt4:81BkX-ZlXoE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=KgQNRkFvGt4:81BkX-ZlXoE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=KgQNRkFvGt4:81BkX-ZlXoE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=KgQNRkFvGt4:81BkX-ZlXoE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=KgQNRkFvGt4:81BkX-ZlXoE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=KgQNRkFvGt4:81BkX-ZlXoE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=KgQNRkFvGt4:81BkX-ZlXoE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=KgQNRkFvGt4:81BkX-ZlXoE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=KgQNRkFvGt4:81BkX-ZlXoE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=KgQNRkFvGt4:81BkX-ZlXoE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?a=KgQNRkFvGt4:81BkX-ZlXoE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jugad2-VasudevRamOnSoftwareInnovation?i=KgQNRkFvGt4:81BkX-ZlXoE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~4/KgQNRkFvGt4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jugad2.blogspot.com/feeds/1779455090767974456/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6692866151143183230&amp;postID=1779455090767974456" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/1779455090767974456?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6692866151143183230/posts/default/1779455090767974456?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jugad2-VasudevRamOnSoftwareInnovation/~3/KgQNRkFvGt4/epd-free-enthought-python-distribution.html" title="EPD Free - Enthought Python Distribution, with scientific and other packages" /><author><name>Vasudev Ram</name><uri>https://plus.google.com/100950775342607109133</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-BEfbKAw-m4k/AAAAAAAAAAI/AAAAAAAAAAA/t0c6ywdxf6M/s512-c/photo.jpg" /></author><thr:total>7</thr:total><feedburner:origLink>http://jugad2.blogspot.com/2013/04/epd-free-enthought-python-distribution.html</feedburner:origLink></entry></feed>
