<?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: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;Ak8MQHo4eip7ImA9WhRUFk0.&quot;"><id>tag:blogger.com,1999:blog-9453241</id><updated>2012-01-26T15:14:41.432-05:00</updated><category term="news" /><category term="free" /><category term="five-dollar footlong" /><category term="nature" /><category term="regexp" /><category term="Trey Motes" /><category term="kilobyte" /><category term="sustainability" /><category term="summer" /><category term="powershell" /><category term="AI" /><category term="OSU" /><category term="LTI" /><category term="TiVo.com" /><category term="nonlinear control" /><category term="amsmath" /><category term="ADE" /><category term="probability" /><category term="marginal value theorem" /><category term="weddings" /><category term="fraud" /><category term="PMPT" /><category term="OmniView" /><category term="Google+" /><category term="SCM" /><category term="New York" /><category term="figcaps" /><category term="consumerism" /><category term="Mittelbach" /><category term="definitions" /><category term="Brown university" /><category term="apples in stereo" /><category term="networking" /><category term="mouseless" /><category term="preview" /><category term="observer" /><category term="diet" /><category term="Wiimote" /><category term="bookmarklets" /><category term="Firefox" /><category term="iTunes" /><category term="tabls" /><category term="lp" /><category term="mac" /><category term="power" /><category term="design" /><category term="text files" /><category term="mail" /><category term="AMSLaTeX" /><category term="C-clef" /><category term="EEOB" /><category term="abbreviations" /><category term="tex" /><category term="pst-pdf" /><category term="Michigan" /><category term="analog" /><category term="Clem Snide" /><category term="geeks" /><category term="reuters" /><category term="grad school" /><category term="elsart" /><category term="agents" /><category term="TiVo" /><category term="AUC TeX" /><category term="typography" /><category term="rst2html" /><category term="rectangle" /><category term="Interference" /><category term="Adam Smith" /><category term="kilobit" /><category term="JMB" /><category term="LiveJournal" /><category term="apple snails" /><category term="campaigns" /><category term="hot keys" /><category term="code" /><category term="productivity" /><category term="Ben Folds" /><category term="Minus.com" /><category term="Plain TeX" /><category term="del.icio.us" /><category term="POP3" /><category term="gdb" /><category term="northpolemoon" /><category term="robotics" /><category term="2008 movies" /><category term="ICS" /><category term="Spotlight" /><category term="Desktops" /><category term="filters" /><category term="GTD" /><category term="Internet Connection Sharing" /><category term="portfolio theory" /><category term="unix" /><category term="Moonlight" /><category term="elsart-harv" /><category term="MIUI.us" /><category term="entropy" /><category term="index" /><category term="washing machine" /><category term="hockey" /><category term="coffee shops" /><category term="wireless networking" /><category term="Sunflower Market" /><category term="health" /><category term="FETs" /><category term="carlos rubio" /><category term="stephen thompson" /><category term="DVI" /><category term="zero-crossing detection" /><category term="calendar" /><category term="pictures" /><category term="xor" /><category term="backref" /><category term="condoms" /><category term="courses" /><category term="installation" /><category term="finance" /><category term="funny" /><category term="colleges" /><category term="black" /><category term="PandoraBoy" /><category term="Headlights" /><category term="storage" /><category term="NudgeMail" /><category term="relationships" /><category term="quick searches" /><category term="Otixo" /><category term="manuals" /><category term="PandoraJam" /><category term="schools" /><category term="post office" /><category term="hotfixes" /><category term="conniving" /><category term="programing" /><category term="credit cards" /><category term="procrastination" /><category term="music sharing" /><category term="perfect square" /><category term="eqref" /><category term="WiFind" /><category term="control engineering" /><category term="amnatnat" /><category term="Kate Maki" /><category term="cloud storage" /><category term="Ticketmaster" /><category term="pst-eps" /><category term="Wii" /><category term="NYTimes" /><category term="home improvement" /><category term="memos" /><category term="public service announcements" /><category term="Vatican" /><category term="Kuznets curve" /><category term="Vim" /><category term="SlickRun" /><category term="software" /><category term="snails" /><category term="signal processing" /><category term="reminders" /><category term="regular expressions" /><category term="209" /><category term="turtles" /><category term="stories" /><category term="splncsnat" /><category term="WebMD" /><category term="Alaska Grand Casino" /><category term="computing" /><category term="circles" /><category term="internet radio" /><category term="annoyances" /><category term="sun is out" /><category term="Day to Day" /><category term="weight loss" /><category term="comics" /><category term="ECE" /><category term="insects" /><category term="deli" /><category term="help" /><category term="browsers" /><category term="Gentoo" /><category term="PogoPlug" /><category term="SPSS" /><category term="PRS-950" /><category term="geeky" /><category term="pc-pine" /><category term="JTB" /><category term="Krapples" /><category term="windows" /><category term="Lifehacker" /><category term="Ohio State University" /><category term="age" /><category term="d'Feet ALS" /><category term="presentations" /><category term="Csharp" /><category term="polygon" /><category term="operating systems" /><category term="vi" /><category term="personal" /><category term="lineno" /><category term="ICEKey" /><category term="distributions" /><category term="cellular respiration" /><category term="matrices" /><category term="neolithic" /><category term="women's liberation" /><category term="Kenny Timmons" /><category term="hints" /><category term="emerge" /><category term="life" /><category term="wi-fi" /><category term="source" /><category term="mailing lists" /><category term="ntheorem" /><category term="SWRI" /><category term="certification" /><category term="invertebrates" /><category term="lpr" /><category term="quickref" /><category term="OOoLatex" /><category term="Goossens" /><category term="poetry" /><category term="digital" /><category term="Tetraodontidae" /><category term="splncs03" /><category term="Plug computers" /><category term="Fedora Core" /><category term="screen savers" /><category term="tools" /><category term="MacResearch" /><category term="martha stewart" /><category term="Outlook" /><category term="bugs" /><category term="books" /><category term="behavecol" /><category term="Peter Alfonso" /><category term="romeo and juliet" /><category term="lyrics" /><category term="BiBTeX style files" /><category term="safety" /><category term="Ken Timmons" /><category term="Science Friday" /><category term="audio" /><category term="prettyref" /><category term="TonidoPlug" /><category term="xkcd" /><category term="git" /><category term="CSE" /><category term="DVI viewers" /><category term="carbon neutral" /><category term="refcards" /><category term="dating" /><category term="hg" /><category term="fuzzy control" /><category term="Knuth" /><category term="Stauf's" /><category term="apples" /><category term="webradio" /><category term="fidelity" /><category term="elm" /><category term="reading" /><category term="PDFView" /><category term="Google scholar" /><category term="genetics" /><category term="cv" /><category term="PDF" /><category term="Starbucks" /><category term="Google Code" /><category term="rolling release" /><category term="OpenOffice" /><category term="dilbert" /><category term="growth" /><category term="Regina Spektor" /><category term="Spotify" /><category term="doctoral program" /><category term="Perl" /><category term="Hitchhiker's Guide to the Galaxy" /><category term="computers" /><category term="Brennan's" /><category term="CAT-6" /><category term="spec sharp" /><category term="BST" /><category term="optout" /><category term="Google Plus" /><category term="text" /><category term="unsolicited mail" /><category term="opinion" /><category term="Catholics" /><category term="James Taylor" /><category term="Ikea" /><category term="QuickSilver" /><category term="autoref" /><category term="LTWA" /><category term="LaserJet" /><category term="disease" /><category term="MacBook Air" /><category term="natural selection" /><category term="MacVim" /><category term="Python" /><category term="auctex" /><category term="education" /><category term="FutureMe" /><category term="nick cave" /><category term="nutrition" /><category term="first dates" /><category term="kB" /><category term="columbus" /><category term="wenger" /><category term="PDFSync" /><category term="TeXniscope" /><category term="crossdressers" /><category term="police" /><category term="mashups" /><category term="mplayer" /><category term="AOSP" /><category term="roomba" /><category term="GUI" /><category term="lifestyle" /><category term="exterminators" /><category term="KVM" /><category term="merlin.mbs" /><category term="Wikipedia" /><category term="buckeyes" /><category term="Arduino" /><category term="affairs" /><category term="cables" /><category term="gators" /><category term="the pill" /><category term="ps2pdf" /><category term="fire alarms" /><category term="operational amplifiers" /><category term="KDE" /><category term="HP" /><category term="iTickleMe" /><category term="bcs championship" /><category term="golf" /><category term="KVM-12CK" /><category term="Duke" /><category term="natbib" /><category term="championship" /><category term="spmpscinat" /><category term="amphibious fish" /><category term="Google" /><category term="Proquest" /><category term="electronics" /><category term="publishing" /><category term="Skim" /><category term="final exam" /><category term="copyright" /><category term="Microsoft Windows" /><category term="KVMP" /><category term="PRS950" /><category term="varioref" /><category term="men" /><category term="crossover" /><category term="iTeXMac" /><category term="terrafi" /><category term="word processing" /><category term="wedding cake" /><category term="unoconv" /><category term="qualifiers" /><category term="eggs" /><category term="patches" /><category term="XEmacs" /><category term="sinc interpolation" /><category term="NY" /><category term="Service Pack 3" /><category term="mutt" /><category term="PRS 950" /><category term="University of Chicago Press" /><category term="Computer Science and Engineering" /><category term="Conrad Burns" /><category term="PlugApps" /><category term="fossil fuels" /><category term="e-mail" /><category term="shortcuts" /><category term="keyboard" /><category term="ultrabooks" /><category term="science fiction" /><category term="blogs" /><category term="interpolation" /><category term="untrash Ohio" /><category term="food service" /><category term="Plugbox Linux" /><category term="ncaa football" /><category term="verification" /><category term="security" /><category term="simpdftex" /><category term="Equation Editor" /><category term="ePub" /><category term="DAC" /><category term="robots" /><category term="digital rights management" /><category term="equations" /><category term="Comm/SP" /><category term="gravity" /><category term="Blogger" /><category term="labels" /><category term="SpiderOak" /><category term="OFT" /><category term="TeX/LaTeX" /><category term="reStructuredText" /><category term="removing" /><category term="behavioral" /><category term="resume" /><category term="dieting" /><category term="Fortran" /><category term="National Geographic" /><category term="The LaTeX Companion" /><category term="environmental Kuznets curve" /><category term="tutorials" /><category term="meringue" /><category term="makebst" /><category term="reference" /><category term="color" /><category term="plotting" /><category term="Google Music" /><category term="Emacs" /><category term="ISO 4" /><category term="version control" /><category term="JavaScript" /><category term="inverse search" /><category term="control systems" /><category term="examples" /><category term="Gecko" /><category term="hard spaces" /><category term="DPMS" /><category term="circuits" /><category term="dissertation" /><category term="backward search" /><category term="Kindle" /><category term="cref" /><category term="scrobbling" /><category term="quantum field theory" /><category term="lessons" /><category term="digital signal processing" /><category term="alli" /><category term="DSP" /><category term="cheat sheets" /><category term="UCE" /><category term="biofuels" /><category term="environment" /><category term="Gina Trapani" /><category term="buckeye football" /><category term="SAS" /><category term="Ted" /><category term="thunderbird" /><category term="NPR" /><category term="science" /><category term="analog electronics" /><category term="PandoraFM" /><category term="SugarSync" /><category term="non-breaking spaces" /><category term="Jonathan Wainwright" /><category term="Tech-Recipes" /><category term="research" /><category term="ohio" /><category term="public domain" /><category term="programming" /><category term="pufferfish" /><category term="IMAP" /><category term="universities" /><category term="honey" /><category term="Sam Cooke" /><category term="Engineering Applications of Artificial Intelligence" /><category term="Star Trek XI" /><category term="quick reference" /><category term="groceries" /><category term="apologies" /><category term="pacman" /><category term="terminal" /><category term="Firebug" /><category term="jobs" /><category term="latin dance" /><category term="intellectual property" /><category term="MPT" /><category term="IOGEAR" /><category term="switches" /><category term="snow" /><category term="data" /><category term="Lou Gehrig's disease" /><category term="Elsevier" /><category term="profiling" /><category term="beheco" /><category term="Windows XP" /><category term="Fedora" /><category term="bipolar transistors" /><category term="Box.net" /><category term="sparse matrices" /><category term="MiniView" /><category term="Love Affair" /><category term="MIUIAndroid" /><category term="no-breaking spaces" /><category term="mail fraud" /><category term="lawyers" /><category term="DIY" /><category term="latex" /><category term="Creative Commons" /><category term="laboratory" /><category term="conversion" /><category term="Wine" /><category term="Apple" /><category term="Google Books" /><category term="regexps" /><category term="valentines" /><category term="transfer functions" /><category term="optimal foraging theory" /><category term="thermodynamics" /><category term="duplex printing" /><category term="mouse" /><category term="scams" /><category term="MBS" /><category term="bibtex" /><category term="svjour" /><category term="carbon neutrality" /><category term="latex templates" /><category term="Solaris" /><category term="Mac OS X" /><category term="lies" /><category term="email" /><category term="parking" /><category term="DBJ" /><category term="letters" /><category term="nbsp" /><category term="Dropbox" /><category term="Eef Barzelay" /><category term="GMail" /><category term="maturity" /><category term="patch" /><category term="faculty" /><category term="graduate programs" /><category term="rsync.net" /><category term="helicopter" /><category term="bad coffee" /><category term="Subversion" /><category term="engineering" /><category term="Oxford Journals" /><category term="graphics" /><category term="rants" /><category term="apt" /><category term="VIM-LaTeX" /><category term="osudissert96" /><category term="figures" /><category term="carbon" /><category term="ALS" /><category term="flickr" /><category term="TLC2" /><category term="iTerm" /><category term="APM" /><category term="puzzles" /><category term="music videos" /><category term="distillers" /><category term="MP3 players" /><category term="statistics" /><category term="blogging" /><category term="svn" /><category term=".NET" /><category term="Bernoulli trials" /><category term="Vista" /><category term="technology" /><category term="Microsoft" /><category term="SkreemR" /><category term="TeXmacs" /><category term="NYC" /><category term="macosx" /><category term="ohio state" /><category term="splncs" /><category term="cross-references" /><category term="SP3" /><category term="osx" /><category term="OS X" /><category term="song of the day" /><category term="Makefile" /><category term="water" /><category term="McDonald's" /><category term="Journal of Theoretical Biology" /><category term="All Things Considered" /><category term="mammals" /><category term="physics" /><category term="invisible hand" /><category term="yaourt" /><category term="scripts" /><category term="Sony Reader" /><category term="teaching" /><category term="ecology" /><category term="salsa" /><category term="rspublic" /><category term="IP law" /><category term="Memopal" /><category term="Red Queen Hypothesis" /><category term="tricks" /><category term="citations" /><category term="ebooks" /><category term="HiaWWF" /><category term="howto" /><category term="hatred" /><category term="ASCII" /><category term="MVT" /><category term="ssh" /><category term="music" /><category term="Hilbert transform" /><category term="Arch Linux" /><category term="TeXpert" /><category term="libraries" /><category term="macroeconomics" /><category term="oprah" /><category term="Aurora" /><category term="authorindex" /><category term="energy" /><category term="MFC" /><category term="swiss army knife" /><category term="eating" /><category term="evolutionary biology" /><category term="gwTeX" /><category term="Marketplace" /><category term="mathematics" /><category term="standards" /><category term="coffee" /><category term="green tea" /><category term="communications" /><category term="grocery shopping" /><category term="tea" /><category term="dvips" /><category term="writing" /><category term="OpenPogo" /><category term="pandora" /><category term="Silverlight" /><category term="dominance" /><category term="journals" /><category term="mantua" /><category term="custom-bib" /><category term="publications" /><category term="documentation" /><category term="verona" /><category term="web" /><category term="Amazon" /><category term="EMF" /><category term="pcpine" /><category term="bachata" /><category term="puzzle" /><category term="enumitem" /><category term="altruism" /><category term="troubleshooting" /><category term="MDA" /><category term="irobot" /><category term="applications" /><category term="uninstalling" /><category term="typedref" /><category term="Giant Eagle" /><category term="family" /><category term="PDFviewers" /><category term="simpdftexnodel" /><category term="Safari" /><category term="optoutprescreen" /><category term="Mono" /><category term="Price equation" /><category term="quanser" /><category term="Kevin Passino" /><category term="backup" /><category term="Felicity" /><category term="Adobe" /><category term="racism" /><category term="protect" /><category term="mix CD" /><category term="controls" /><category term="tracking" /><category term="curriculum vitae" /><category term="acronyms" /><category term="Delicious" /><category term="furniture" /><category term="fixed spaces" /><category term="ImageMagick" /><category term="KB951446" /><category term="VCS" /><category term="aquaria" /><category term="tweet" /><category term="Kroger" /><category term="Springer" /><category term="carbon dioxide" /><category term="GCS632U" /><category term="PSTricks" /><category term="sanitize" /><category term="MIUI" /><category term="hyperref" /><category term="Freakonomics" /><category term="Douglas Adams" /><category term="document production" /><category term="LNCS" /><category term="virtual desktops" /><category term="GVim" /><category term="articles" /><category term="prejudice" /><category term="Twitter" /><category term="SkyDrive" /><category term="RHEL" /><category term="songs" /><category term="ISSN" /><category term="search engines" /><category term="paralist" /><category term="Lost" /><category term="Reader" /><category term="Windows Update" /><category term="AJAX" /><category term="PNG" /><category term="change" /><category term="marriage" /><category term="Spec#" /><category term="amnat" /><category term="EPSCrop" /><category term="photos" /><category term="globalization" /><category term="rpm" /><category term="xdvi" /><category term="sex" /><category term="social networking" /><category term="class" /><category term="Electrical and Computer Engineering" /><category term="all-patch" /><category term="laptops" /><category term="linear" /><category term="postscript" /><category term="screenshots" /><category term="recommendations" /><category term="masters" /><category term="latex examples" /><category term="spmpsci" /><category term="tweeting" /><category term="biochemistry" /><category term="Microsoft Office" /><category term="fake check" /><category term="Thomas Seeley" /><category term="Fritz" /><category term="Daily" /><category term="George Price" /><category term="bear" /><category term="Smashing Magazine" /><category term="YouTube" /><category term="Ribbit" /><category term="MS" /><category term="valentines day" /><category term="Java" /><category term="dog" /><category term="Blue Jackets" /><category term="MIT" /><category term="C#" /><category term="trash" /><category term="powerdot" /><category term="tags" /><category term="economics" /><category term="rst2man" /><category term="iusethis" /><category term="hacks" /><category term="iTM" /><category term="autonomous vehicles" /><category term="American Naturalist" /><category term="entertainment" /><category term="hobby" /><category term="search" /><category term="desk" /><category term="LetterMeLater" /><category term="command line" /><category term="references" /><category term="bounding box" /><category term="Digital Editions" /><category term="estimation" /><category term="keywords" /><category term="images" /><category term="instant search" /><category term="bcs" /><category term="customer satisfaction" /><category term="weekends" /><category term="movies" /><category term="development" /><category term="last.fm" /><category term="42" /><category term="PDF viewers" /><category term="ass" /><category term="Boomerang" /><category term="Geek squad" /><category term="photosynthesis" /><category term="KB951830" /><category term="cute" /><category term="webmail" /><category term="NGCOA" /><category term="bugfixes" /><category term="locks" /><category term="cell phones" /><category term="virginia tech" /><category term="osudissert10" /><category term="forward search" /><category term="spam" /><category term="PhD" /><category term="video" /><category term="SeeqPod" /><category term="Bitcasa" /><category term="Tuttle Mall" /><category term="work" /><category term="minimum phase" /><category term="cnn" /><category term="teddy bear" /><category term="f90" /><category term="Journal of Mathematical Biology" /><category term="AMSTeX" /><category term="IEEE" /><category term="Vimperator" /><category term="dark matter" /><category term="word processors" /><category term="epstopdf" /><category term="metafile" /><category term="bibliographies" /><category term="ElectricSheep" /><category term="Microsoft Excel" /><category term="oberdiek" /><category term="information" /><category term="engineers" /><category term="shrek 2" /><category term="Spektor" /><category term="memory" /><category term="chemistry" /><category term="schmucks" /><category term="letter" /><category term="document preparation" /><category term="hold times" /><category term="CAN-SPAM" /><category term="coconutWiFi" /><category term="selection" /><category term="insurance" /><category term="puffers" /><category term="oxygen" /><category term="race" /><category term="referrals" /><category term="ps4pdf" /><category term="Star Trek" /><category term="weight" /><category term="behavioral ecology" /><category term="Writer" /><category term="animals" /><category term="thesis" /><category term="freshwater" /><category term="continuous enrollment" /><category term="PoSH" /><category term="iDrive" /><category term="Belkin" /><category term="efficiency" /><category term="SOTD" /><category term="opamps" /><category term="symbiosis" /><category term="Subway" /><category term="electricity" /><category term="macBracket" /><category term="green" /><category term="transistors" /><category term="RedHat" /><category term="rubber" /><category term="reference cards" /><category term="3mindme" /><category term="deals" /><category term="Kevin Schultz" /><category term="shell" /><category term="biology" /><category term="TeXtoEPS" /><category term="licensing" /><category term="purifyeps" /><category term="error messages" /><category term="Ron Wyden" /><category term="artificial intelligence" /><category term="linear systems" /><category term="hardware" /><category term="specsharp" /><category term="math" /><category term="radio" /><category term="drawing" /><category term="New York City" /><category term="justice" /><category term="epslatex" /><category term="grocery stores" /><category term="MP3" /><category term="Grandview" /><category term="bookmarks" /><category term="C sharp" /><category term="Getting Things Done" /><category term="plow" /><category term="archaeology" /><category term="wireless" /><category term="Linux" /><category term="tera-fi" /><category term="honeybees" /><category term="OpenPandora" /><category term="ellipses" /><category term="EPS" /><category term="Ubuntu" /><category term="hotkeys" /><category term="Safari Books Online" /><category term="SunOS" /><category term="bibliography" /><category term="templates" /><category term="SQL" /><category term="doctors" /><category term="comic" /><category term="printing" /><category term="chipmunks" /><category term="solstice" /><category term="TeXShop" /><category term="wedding songs" /><category term="ghostscript" /><category term="Mercurial" /><category term="group selection" /><category term="literal versions" /><category term="men's health" /><category term="knives" /><category term="travel" /><category term="yum" /><category term="EAAI" /><category term="gs" /><category term="tips" /><category term="Toeplitz" /><category term="TextMate" /><category term="DRM" /><category term="dpkg" /><category term="cities" /><category term="population genetics" /><category term="abiword" /><category term="dance" /><category term="humor" /><category term="screensavers" /><category term="terafi" /><category term="Ampullariidae" /><category term="Gadgetwise" /><category term="MySQL" /><category term="reviews" /><category term="advice" /><category term="Sony" /><category term="GIF" /><category term="customer service" /><category term="licenses" /><category term="cloud" /><category term="bash" /><category term="gobblepars" /><category term="TeXnician" /><category term="bees" /><category term="Royal Society" /><category term="social networks" /><category term="people" /><category term="wrappers" /><category term="MATLAB" /><category term="passfile" /><category term="north pole moon" /><category term="terra-fi" /><category term="apacite" /><category term="GNU make" /><category term="cafe" /><category term="copyright protection" /><category term="DVCS" /><category term="PSA" /><category term="phase shift" /><category term="revision control" /><category term="XP" /><category term="AppleScript" /><category term="people ain't no good" /><category term="QVS" /><category term="ALS walk" /><category term="MacAlly" /><category term="David Frum" /><category term="TeXacker" /><category term="evolution" /><category term="fragile" /><category term="Star Trek 11" /><category term="mothers" /><category term="Mozilla" /><category term="internet" /><category term="cleveref" /><category term="ATC" /><category term="Android" /><category term="squirrels" /><category term="corrections" /><category term="iKeySlim" /><category term="texlatex" /><category term="docutils" /><category term="lifehacks" /><category term="back referencing" /><category term="women" /><category term="theoretical biology" /><category term="maxwell's demon" /><category term="CLI" /><category term="aquariums" /><category term="office" /><category term="docstrip" /><category term="conservation" /><category term="George W. Bush" /><category term="law" /><category term="typeography" /><category term="students" /><category term="malls" /><category term="streaming" /><category term="Microsoft Word" /><category term="graduate school" /><category term="synonyms" /><category term="Tickler File" /><category term="Web 2.0" /><category term="book" /><category term="vimlatex" /><category term="caption" /><category term="ncaa" /><category term="Camino" /><category term="florida" /><category term="scooba" /><category term="MIcrosoft Research" /><category term="West Wing" /><category term="food" /><category term="pine" /><category term="fixes" /><category term="ADEPT" /><category term="foraging" /><category term="sampling" /><category term="utilities" /><category term="Apple Mail" /><category term="electrodynamics" /><category term="typesetting" /><title>Phase Portrait</title><subtitle type="html">Personal weblog of Ted Pavlic. Includes lots of MATLAB and LaTeX (computer typesetting) tips along with commentary on all things engineering.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://phaseportrait.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>1143</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/blogspot/Ptiph" /><feedburner:info uri="blogspot/ptiph" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUUARXg9eSp7ImA9WhRUE0k.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-793937300716267998</id><published>2012-01-23T12:14:00.002-05:00</published><updated>2012-01-23T13:27:24.661-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-23T13:27:24.661-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Bitcasa" /><category scheme="http://www.blogger.com/atom/ns#" term="Dropbox" /><category scheme="http://www.blogger.com/atom/ns#" term="free" /><category scheme="http://www.blogger.com/atom/ns#" term="SugarSync" /><category scheme="http://www.blogger.com/atom/ns#" term="lifehacks" /><category scheme="http://www.blogger.com/atom/ns#" term="referrals" /><category scheme="http://www.blogger.com/atom/ns#" term="Memopal" /><category scheme="http://www.blogger.com/atom/ns#" term="Box.net" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="Minus.com" /><category scheme="http://www.blogger.com/atom/ns#" term="backup" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud storage" /><category scheme="http://www.blogger.com/atom/ns#" term="SpiderOak" /><category scheme="http://www.blogger.com/atom/ns#" term="storage" /><category scheme="http://www.blogger.com/atom/ns#" term="SkyDrive" /><category scheme="http://www.blogger.com/atom/ns#" term="Otixo" /><category scheme="http://www.blogger.com/atom/ns#" term="rsync.net" /><category scheme="http://www.blogger.com/atom/ns#" term="iDrive" /><title>Cloud Storage Referral Links (and tips on getting even more space)</title><content type="html">I like to accumulate cloud storage so I can have redundant backups of my files in easily accessible places all over the Internet. Below is a list of referral links to a few services that I've tried. In each case, activating an account via the referral link will bring both you and me a little extra space &lt;em&gt;(if you need help linking them together, check out &lt;a target="_blank" href="https://app.otixo.com/login.jsp#invite/954ea63a-87dc-40b5-bede-a9d23de9b5af;e3e42df6-21e9-4ec3-a2d3-d317ea74dc13"&gt;Otixo&lt;/a&gt;)&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;All of these services have good Windows support, decent OS X support, and at least a hint of Linux support. Some of them are easier to activate using Windows than other platforms.&lt;/em&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a target="_blank" href="http://db.tt/hdEputc"&gt;Dropbox&lt;/a&gt;, an old standard in could storage. The referral link gets you &lt;strong&gt;2.25&amp;nbsp;GB&lt;/strong&gt; of free storage to start with.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://spideroak.com/download/referral/5251d2257fb0f66a8191a4a7e5aac69d"&gt;SpiderOak&lt;/a&gt; will give you 3&amp;nbsp;GB if you join via that link. However, during your account setup, you can then try the promo code &lt;strong&gt;worldbackupday&lt;/strong&gt; to get an &lt;em&gt;additional&lt;/em&gt; 3&amp;nbsp;GB so that you top off at &lt;strong&gt;6&amp;nbsp;GB total&lt;/strong&gt; of free storage for the life of the account. In case you already have a SpiderOak account and didn't know about the promotion code, you can still get the extra 3&amp;nbsp;GB. Just login to the SpiderOak website, click on the "add new space" (it might say "buy new space"), then click to "Change" your account, and then enter the worldbackupday promotion code. Assuming the promotion code hasn't expired, it all should work.&lt;br /&gt;
&lt;br /&gt;
SpiderOak is very similar to Dropbox and yet also very different. It encrypts your files locally so that SpiderOak employees don't even have access to your data. It also does the encryption in a way that ensures that files duplicated across your machines don't take up duplicate space. Plus, you can create encrypted shares where a subset of people have access to storage but no one else. Finally, SpiderOak allows you to select multiple folders to backup on your system rather than just keeping one "dropbox" in sync. You can use it like dropbox by selecting a single folder to be synchronized across your computers, but you don't have to.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://min.us/rAHYziN"&gt;Minus.com&lt;/a&gt; will give you something like &lt;strong&gt;10.2&amp;nbsp;GB&lt;/strong&gt; for clicking on that referral link. It's a relatively new service, and it has a nice on-line interface with plenty of mobile apps. It's easy to upload large files and distribute download links to people. You can mark entire folders as "Public" or "Private", and you can still share download links to private folders or even individual files inside private folders. Just be careful because the default access level is Public. You can change the default to Private in the settings on the web page.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://apps.memopal.com/r/?7e76647f74717c"&gt;Memopal&lt;/a&gt; is a little difficult to setup if you use a non-Windows system. In that case, follow the referral link and register your e-mail. Then follow the link corresponding to your operating system and follow the instructions. I think it will say you'll be getting 3&amp;nbsp;GB for free, but then you'll actually get &lt;strong&gt;3.5&amp;nbsp;GB&lt;/strong&gt; because you registered your e-mail as a referral. One plus of Memopal is that you can guy a whopping &lt;strong&gt;200&amp;nbsp;GB&lt;/strong&gt; for US$50/year, and that rate gets discounted as much as 60% if you purchase several years at once. Unfortunately, I didn't see an easy way to configure &lt;em&gt;what&lt;/em&gt; Memopal backs up. I didn't play with it long, but it may just try and backup every bit of media it can find (and use as much CPU resources as it wants to do so).&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://www.sugarsync.com/referral?rf=bm62xtvystqv0&amp;utm_source=txemail&amp;utm_medium=email&amp;utm_campaign=referral"&gt;SugarSync&lt;/a&gt; gives you around &lt;strong&gt;5&amp;nbsp;GB&lt;/strong&gt; at that referral link. For non-Windows users, you should check your e-mail after going to that link and you'll find an e-mail verification link. That e-mail verification link will bring you to the standard login and a Dropbox-like web interface. Moreover, you can find additional software support there. You get extra space for completing tasks like installing the mobile app or going through the mobile app's demo "game" that leads you through sharing files from SugarSync.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://www.box.net/"&gt;Box.net&lt;/a&gt; has no referral links. However, they often offer &lt;a target="_blank" href="http://support.box.net/entries/20768867-box-50-gb-promotion-faqs"&gt;50&amp;nbsp;GB promotions&lt;/a&gt; that upgrade your free storage from &lt;strong&gt;5&amp;nbsp;GB&lt;/strong&gt; to &lt;strong&gt;50&amp;nbsp;GB&lt;/strong&gt; just for logging in in a special way. For example, back in December, I logged into my Box.net account via someone else's iPad and then logged out. That's all it took for me to get 50&amp;nbsp;GB for the life of the account.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://www.idrive.com/?uid=L0U1I0Z6A6"&gt;iDrive&lt;/a&gt; will give you &lt;strong&gt;5&amp;nbsp;GB&lt;/strong&gt; at that link, but it's easy to add &lt;strong&gt;10&amp;nbsp;GB more&lt;/strong&gt; onto that. Just create a fake e-mail account at &lt;a target="_blank" href="http://www.aol.com/"&gt;Aol.com&lt;/a&gt;. Then add &lt;em&gt;at least&lt;/em&gt; five contacts to the contacts list. Try adding pluses to your own e-mail address username if you want to make sure they're unique. For example, you might use your own e-mail address of &lt;tt&gt;joe@schmoe.com&lt;/tt&gt; as well as &lt;tt&gt;joe+two@schmoe.com&lt;/tt&gt; because most mail servers will omit everything behind the plus sign, and yet it will look like a unique e-mail address. The point is to create what look to be five unique contacts without spamming five unsuspecting individuals. Then &lt;em&gt;log out of Aol.com&lt;/em&gt; and go back to iDrive's referral page. It will give you the ability to enter in your Aol.com username and password so it can access your contacts list. For giving it access to your entire contacts list, you get 10&amp;nbsp;GB of extra storage.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://skydrive.live.com/"&gt;SkyDrive&lt;/a&gt; is Microsoft's cloud storage offering. There are no referral links; everyone gets &lt;strong&gt;25&amp;nbsp;GB&lt;/strong&gt; of free space.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://www.bitcasa.com/"&gt;Bitcasa&lt;/a&gt; is still in beta, and it won't have referral links because every user gets &lt;strong&gt;&lt;em&gt;infinite&lt;/em&gt;&lt;/strong&gt; storage. They use a dubious encryption scheme that prevents duplication &lt;em&gt;across users&lt;/em&gt; so they can maximize on storage efficiency in their end while still keeping stuff encrypted.&lt;/li&gt;
&lt;/ul&gt;If you're interested, Dropbox is usually my go-to service followed up by SpiderOak. I've configured SpiderOak to act just like Dropbox, except that SpiderOak is infinitely more secure than Dropbox. Consequently, a few sensitive documents I backup only to SpiderOak. If I ever need more space than I've accumulated at Dropbox or SpiderOak, I'll have to re-think things a bit. Oh, and I also pay for space at &lt;a target="_blank" href="http://www.rsync.net/"&gt;rsync.net&lt;/a&gt;; the cost for storage is not the cheapest, but it's affordable. More importantly, it's stored on UNIX machines (that support symlinks!) and can be accessed with rsync over ssh. That's worth it to me to pay a little extra. They have student discounts, by the way. If they do ask who referred you, tell them it was &lt;a target="_blank" href="mailto:pavlic.3@osu.edu"&gt;&lt;tt&gt;pavlic.3@osu.edu&lt;/tt&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
By the way, if you open up multiple such accounts and want a central place to manage all of your services, check out &lt;a target="_blank" href="https://app.otixo.com/login.jsp#invite/954ea63a-87dc-40b5-bede-a9d23de9b5af;e3e42df6-21e9-4ec3-a2d3-d317ea74dc13"&gt;Otixo&lt;/a&gt; which can connect to each of your sharing sites and create shared workspaces bridges across storage boundaries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-793937300716267998?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-q8wxj19jJI2QrLdrMRWHGKAqI8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-q8wxj19jJI2QrLdrMRWHGKAqI8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-q8wxj19jJI2QrLdrMRWHGKAqI8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-q8wxj19jJI2QrLdrMRWHGKAqI8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/EOjd0W0gsgY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/793937300716267998/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=793937300716267998" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/793937300716267998?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/793937300716267998?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/EOjd0W0gsgY/cloud-storage-referral-links-and-tips.html" title="Cloud Storage Referral Links (and tips on getting even more space)" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2012/01/cloud-storage-referral-links-and-tips.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcDQHw7fyp7ImA9WhRVFU8.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-830836894125382690</id><published>2012-01-13T17:53:00.001-05:00</published><updated>2012-01-14T00:47:51.207-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-14T00:47:51.207-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="macBracket" /><category scheme="http://www.blogger.com/atom/ns#" term="locks" /><category scheme="http://www.blogger.com/atom/ns#" term="MacBook Air" /><category scheme="http://www.blogger.com/atom/ns#" term="computers" /><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><category scheme="http://www.blogger.com/atom/ns#" term="ultrabooks" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="lifehacks" /><category scheme="http://www.blogger.com/atom/ns#" term="laptops" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><title>Best Idea Ever: "Air Snail" to lock down MacBook Air with Kensington-style lock</title><content type="html">&lt;blockquote&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; It turns out this is not the only bracket available. As &lt;a target="_blank" href="http://macgirl.net/reviews/Reviews/macbookairlockbracket.html"&gt;reviewed by MacGirl.net&lt;/a&gt;, there used to be a bracket sold on an eBay store that slid up through the MacBook Air. Unfortunately, not only was the locking portion in front of the screen, but it could slide around and scratch the device. Then came the &lt;a target="_blank" href="http://macbracket.com/"&gt;&lt;strong&gt;macBracket&lt;/strong&gt;&lt;/a&gt; out of Germany. The macBracket is pretty slick and looks like it is relatively gentle on the MacBook Air. It's a little pricey, but it's not like there's a lot of competition right now.&lt;br&gt;&lt;br&gt;So if you need a good solution right now, check out the &lt;a target="_blank" href="http://macbracket.com/"&gt;&lt;strong&gt;macBracket&lt;/strong&gt;&lt;/a&gt;.&lt;/blockquote&gt;I was surprised to hear that the MacBook Air has no Kensington lock slot. It's too small. Apparently, some of the PC ultrabooks also have this problem. Tablets have this problem, but it's easy to take tablets and phones with you... It's a little harder to carry the MacBook Air everywhere.&lt;br /&gt;
&lt;br /&gt;
There are a ton of alarm solutions (like what you'd expect to see in a BestBuy) that rely on USB connectivity or adhesion or something similar. Those aren't really ideal. A lock is what is really needed. I've seen two locking solutions available for purchase, and both of them are a bit ugly.&lt;ul&gt;&lt;li&gt;The first, from &lt;a target="_blank" href="http://www.maclocks.com/"&gt;MacLocks.com&lt;/a&gt; is a protective case which attaches to the bottom of the MacBook Air with screws. The protective case includes a Kensington lock slot, and so your MacBook Air can be locked down so long as the potential thief doesn't carry around the right screw driver (some sort of security star head or something like that). I suppose they could have used those non-removable screws that only support a driver in the clockwise direction (like in many bathroom stalls), but then you'd be out of luck if you ever wanted to get the case off of your MacBook Air.&lt;/li&gt;
&lt;li&gt;The second, from &lt;a target="_blank" href="http://www.jklocks.com/"&gt;JKLocks.com&lt;/a&gt;, has a few variations. I saw version &lt;a target="_blank" href="http://youtu.be/X3y42xCGqqA"&gt;RL108 on YouTube&lt;/a&gt;, but there are other versions on the company website. It uses 3M command strips to attach a Kensington lock slot to the back of the laptop. When the lock is connected, it covers the ends of the command strips so they cannot be removed. Of course, if you ever try to remove the command strips, you have to be very careful the metal base of the Kensington lock slot doesn't go scratching across the top of the laptop (!!).&lt;/li&gt;
&lt;/ul&gt;So neither solution is really that good. But then I saw &lt;a target="_blank" href="http://www.youtube.com/watch?v=1UkUVvDQETw"&gt;this YouTube video of the &lt;strong&gt;Air Snail&lt;/strong&gt;&lt;/a&gt;, a prototype that was invented before either of those solutions were marketed (I think) and requires no screws or funny adhesives&lt;br /&gt;
&lt;div align="center"&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/1UkUVvDQETw" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;
That's genius! It is just an eared sickle that slides through the hole between the screen and the keyboard; the hinges and lock keep it from sliding out! Unfortunately, the inventor cannot find any partners willing to fabricate it in large quantities and market it. Sure, it would need to be built so it could be tough while not scratching the device (and would need to be fabricated for relatively cheap). However, I think those challenges are not insurmountable.&lt;br /&gt;
&lt;br /&gt;
So do you have some dough laying around and want to market a great idea? If so, contact the inventor and start selling these things! Get them out before there are a lot of ultrabooks on the market -- I'm guessing there will be a demand for this little portable toy!&lt;br /&gt;
&lt;br /&gt;
Meanwhile, you could probably fabricate something similar yourself (e.g., with some coated aircraft cable thin enough to slide through the MacBook Air). It might be hard to make it compatible with a Kensington lock without some fabrication, but you could surely make it compatible with a padlock.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-830836894125382690?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/L9QGGn-sMGji4Nw9sPgOuXIU3X8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L9QGGn-sMGji4Nw9sPgOuXIU3X8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/L9QGGn-sMGji4Nw9sPgOuXIU3X8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L9QGGn-sMGji4Nw9sPgOuXIU3X8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/4ZcRz2Cy0Lk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/830836894125382690/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=830836894125382690" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/830836894125382690?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/830836894125382690?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/4ZcRz2Cy0Lk/best-idea-ever-air-snail-to-lock-down.html" title="Best Idea Ever: &quot;Air Snail&quot; to lock down MacBook Air with Kensington-style lock" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/1UkUVvDQETw/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2012/01/best-idea-ever-air-snail-to-lock-down.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YHSXk8eSp7ImA9WhRTGEw.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-3088173752204286420</id><published>2011-11-08T22:58:00.000-05:00</published><updated>2011-11-08T22:58:58.771-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-08T22:58:58.771-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="screensavers" /><category scheme="http://www.blogger.com/atom/ns#" term="KDE" /><category scheme="http://www.blogger.com/atom/ns#" term="DPMS" /><category scheme="http://www.blogger.com/atom/ns#" term="ElectricSheep" /><category scheme="http://www.blogger.com/atom/ns#" term="screen savers" /><category scheme="http://www.blogger.com/atom/ns#" term="references" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="mplayer" /><category scheme="http://www.blogger.com/atom/ns#" term="Desktops" /><title>Building ElectricSheep on Fedora 16 (and enabling in KDE4)</title><content type="html">&lt;blockquote&gt;&lt;strong&gt;Quick link:&lt;/strong&gt; Updated &lt;a target="_blank" href="http://links.tedpavlic.com/shell_scripts/makeSheepFedora16.sh"&gt;&lt;tt&gt;makeSheepFedora16.sh&lt;/tt&gt;&lt;/a&gt; install script&lt;/blockquote&gt;A while back, I wrote a &lt;a target="_blank" href="http://phaseportrait.blogspot.com/2011/08/electric-sheep-on-kde-465-with-fedora.html"&gt;post summarizing how to get &lt;a target="_blank" href="http://electricsheep.org/"&gt;ElectricSheep&lt;/a&gt; running on &lt;a target="_blank" href="http://fedoraproject.org/"&gt;Fedora&lt;/a&gt;&amp;nbsp;15 with KDE&amp;nbsp;4.6.5&lt;/a&gt;. Today, I "upgraded" to Fedora&amp;nbsp;16 and was surprised to find that library updates were incompatible with ElectricSheep. Symbol mismatches made it impossible to simply symlink old shared libraries to new shared libraries. Moreover, the version of electricsheep that built fine on Fedora 15 would not build on Fedora 16.&lt;br /&gt;
&lt;br /&gt;
So I made some modifications to &lt;a target="_blank" href="http://blog.taiter.com/tech/2009/06/electricsheep-gnome-screensave.html"&gt;Tait Clarridge's&lt;/a&gt; script to fix the build. My hacks seem to work for me so far; hopefully they do not introduce regressions into the already old version of electricsheep.&lt;br /&gt;
&lt;br /&gt;
So to get ElectricSheep running on your Fedora&amp;nbsp;16 system, try downloading and running &lt;strong&gt;my modified &lt;a target="_blank" href="http://links.tedpavlic.com/shell_scripts/makeSheepFedora16.sh"&gt;&lt;tt&gt;makeSheepFedora16.sh&lt;/tt&gt;&lt;/a&gt; script&lt;/strong&gt;. As a bonus, it (hopefully) will install ElectricSheep as a screensaver if you are running KDE. However, the same DPMS caveats about &lt;tt&gt;mplayer&lt;/tt&gt; from &lt;a target="_blank" href="http://phaseportrait.blogspot.com/2011/08/electric-sheep-on-kde-465-with-fedora.html"&gt;old post&lt;/a&gt; still apply until Fedora updates their &lt;tt&gt;mplayer&lt;/tt&gt; to a recent version (why does it take these people so long?).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-3088173752204286420?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jxNp3lVbujD_AIhaGTwHD5IiQho/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jxNp3lVbujD_AIhaGTwHD5IiQho/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jxNp3lVbujD_AIhaGTwHD5IiQho/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jxNp3lVbujD_AIhaGTwHD5IiQho/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/GPpqNFCLVYw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/3088173752204286420/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=3088173752204286420" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/3088173752204286420?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/3088173752204286420?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/GPpqNFCLVYw/building-electricsheep-on-fedora-16-and.html" title="Building ElectricSheep on Fedora 16 (and enabling in KDE4)" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/11/building-electricsheep-on-fedora-16-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUERHwzcCp7ImA9WhdaF04.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-6087717756757422857</id><published>2011-10-27T13:56:00.001-04:00</published><updated>2011-10-27T13:56:45.288-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-27T13:56:45.288-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="apologies" /><category scheme="http://www.blogger.com/atom/ns#" term="IEEE" /><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><category scheme="http://www.blogger.com/atom/ns#" term="humor" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Arduino" /><title>"Your mamma's so dumb she can program in Arduino!"</title><content type="html">Interesting and slightly amusing letter from &lt;em&gt;IEEE Spectrum&lt;/em&gt; Editor-in-Chief ﻿Susan Hassler:&lt;br /&gt;
&lt;blockquote&gt;Dear Members and Readers,&lt;br /&gt;
&lt;br /&gt;
Please accept our sincere apologies for the headline in today's Tech Alert: "With the Arduino, Now Even Your Mom Can Program." The actual title of the article is "The Making of Arduino."&lt;br /&gt;
&lt;br /&gt;
I'm an IEEE member, and a mom, and the headline was inexcusable, a lazy, sexist cliché that should have never seen the light of day. Today we are instituting an additional headline review process that will apply to all future Tech Alerts so that such insipid and offensive headlines never find their way into your in-box.&lt;br /&gt;
&lt;br /&gt;
Spectrum's insistence on editorial excellence applies to all its products, including e-mail alerts. Thank you for bringing this error to our attention. If you have any additional comments or recommendations, do not hesitate to contact me or other members of the editorial staff.&lt;br /&gt;
&lt;br /&gt;
Sincerely yours, &lt;br /&gt;
&lt;br /&gt;
Susan Hassler&lt;br /&gt;
Editor in Chief&lt;br /&gt;
IEEE Spectrum&lt;/blockquote&gt;&lt;em&gt;[ the article that caused the fuss: &lt;a target="_blank" href="http://spectrum.ieee.org/geek-life/hands-on/the-making-of-arduino"&gt;http://spectrum.ieee.org/geek-life/hands-on/the-making-of-arduino&lt;/a&gt; ]&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-6087717756757422857?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xWZpvleqmXATmyw0yPyLLwZMLYw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xWZpvleqmXATmyw0yPyLLwZMLYw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xWZpvleqmXATmyw0yPyLLwZMLYw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xWZpvleqmXATmyw0yPyLLwZMLYw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/xgVhSzGFFTo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/6087717756757422857/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=6087717756757422857" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/6087717756757422857?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/6087717756757422857?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/xgVhSzGFFTo/your-mammas-so-dumb-she-can-program-in.html" title="&quot;Your mamma's so dumb she can program in Arduino!&quot;" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/10/your-mammas-so-dumb-she-can-program-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MAQXw6fCp7ImA9WhdUFkQ.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-8265572141305655468</id><published>2011-09-29T00:40:00.003-04:00</published><updated>2011-10-03T22:30:40.214-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-03T22:30:40.214-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="genetics" /><category scheme="http://www.blogger.com/atom/ns#" term="natural selection" /><category scheme="http://www.blogger.com/atom/ns#" term="biology" /><category scheme="http://www.blogger.com/atom/ns#" term="evolution" /><category scheme="http://www.blogger.com/atom/ns#" term="population genetics" /><category scheme="http://www.blogger.com/atom/ns#" term="evolutionary biology" /><category scheme="http://www.blogger.com/atom/ns#" term="theoretical biology" /><category scheme="http://www.blogger.com/atom/ns#" term="group selection" /><category scheme="http://www.blogger.com/atom/ns#" term="symbiosis" /><category scheme="http://www.blogger.com/atom/ns#" term="selection" /><title>Why symbiosis is not a good example of group selection</title><content type="html">&lt;em&gt;[&amp;nbsp;In a &lt;a target="_blank" href="https://plus.google.com/113718804063927505694/posts/Hq5otQ3ciua"&gt;Google+ post&lt;/a&gt;, someone asked whether &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Symbiosis"&gt;symbiosis&lt;/a&gt; was a good example of &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Group_selection"&gt;group selection&lt;/a&gt;. I responded in a comment, and another comment asked me to expand my response a little bit in &lt;a target="_blank" href="https://plus.google.com/111099133387608816869/posts/bRU7j6bwA9B"&gt;my own post&lt;/a&gt;. So here is a copy of that post (with a few more hyperlinks).&amp;nbsp;]&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Part 1: What is group selection?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Typically "group selection" doesn't cross species boundaries. That is, group selection refers to the proliferation of a particular form of a &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Genes"&gt;gene&lt;/a&gt;, otherwise known as an "&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Allele"&gt;allele&lt;/a&gt;", due to its benefits to groups of individuals which &lt;em&gt;share that allele&lt;/em&gt; despite the individual costs of having that allele. It may help to consider the basic group-selection argument for the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Altruism#Evolutionary_explanations"&gt;evolution of altruism&lt;/a&gt;&amp;nbsp;(i.e., the evolution of behaviors that are costly to an individual and yet beneficial to a different unrelated individual). Before that, consider why we wouldn't expect altruistic alleles to have strong representation in a population.&lt;br /&gt;
&lt;br /&gt;
For every gene or group of genes, there can be many different variations (alleles). Some of those variations will be deleterious to an individual, and so you would expect the relative representation of those deleterious variations to decrease over generations. So imagine if one of those alleles encoded an altruistic trait that caused an individual to do something costly for the benefit of another&amp;nbsp;(e.g., helping a stranger understand group selection with no expectation of future payoff). Individuals with that allele are suckers. Those without that allele instead focus on tasks that return direct benefit to themselves, and that direct benefit would payoff with greater productivity of offspring that share that non-altruistic allele. When an altruist met a non-altruist, the benefit from the altruist would increase the non-altruist's alleles representation in the next population while decreasing its own alleles' representations. So we would expect that altruistic alleles would fade away into obscurity. Moreover, the benefit from all of the altruists would diffuse across the variety of alleles rather than being concentrated on just the altruistic ones.&lt;br /&gt;
&lt;br /&gt;
However, what if that altruistic allele also encoded a behavior that would seek out others with that same allele. This non-random association means that each individual who helps another does actually help to increase the productivity in that allele. That is, even though there is a cost to the individual doing the altruistic task, the benefit going to the other individual is felt by the other copy of the same allele in the different (and unrelated) person. So when these altruists &lt;strong&gt;group&lt;/strong&gt; together, altruistic benefits do not diffuse. They are captured within the group. Moreover, the group's synergy can cause it to be more productive than the remaining groups of non-altruists. Consequently, the altruistic allele not only persists in the population, but its representation can grow because there is a differential benefit between altruistic and non-altruistic &lt;strong&gt;groups.&lt;/strong&gt; It is this &lt;strong&gt;differential benefit between groups&lt;/strong&gt; that is &lt;em&gt;group selection.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Part 2: Symbiosis and Mutualism&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
A symbiotic relationship between members of different species is not group selection (in general) because it does not posit that there is a &lt;em&gt;mutual&lt;/em&gt; allele that may be deleterious in an individual but beneficial in a group. That is, there is no group synergy that is mitigating individual costs by generating benefits elsewhere that help to support alleles that would otherwise naturally decay. When species are mixed within a population of interest, the analysis is a bit different because alleles cannot flow across the species barrier (except for special cases).&lt;br /&gt;
&lt;br /&gt;
For example, consider an allele that existed across species (e.g., an allele for a gene shared between humans and &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Bonobo"&gt;bonobos&lt;/a&gt;), the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Speciation"&gt;&lt;strong&gt;speciation&lt;/strong&gt;&lt;/a&gt; in general would prevent the sort of group selection gains because there would be no way for increased numbers of alleles in one species to transfer to the other species. Imagine that altruists in one species seek out altruists in the other species. The result could lead to more increases in the altruist representation in one species than another, and so there would be an altruist surplus. Those surplus altruists would have no choice but to associate with non-altruists in the other species. However, if the group was all of one species, then there would not be surplus altruists. Altruistic benefit need not diffuse across non-altruists too.&lt;br /&gt;
&lt;br /&gt;
However, most examples of symbiosis are not altruistic. Instead, they are &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Mutualism_(biology)"&gt;mutualistic&lt;/a&gt;. That is, the behavior does benefit another, but that is a possibly unavoidable side effect of an action that benefits the individual doing the behavior. For example, if I'm driving through a parking lot looking for an empty space to park, I am revealing information to my competitors&amp;nbsp;(other drivers) about where empty spots are not. I don't want to help the competing drivers, but it is unavoidable because they can see me go down an isle of the parking lot and not find a spot. Consequently, they do not go down that same isle. Of course, I use their searching behavior to inform my choices of the next isle. So we are doing "cooperative search" only because the behaviors have mutual benefits. The same goes for many symbiotic relationships among individuals of different species.&lt;br /&gt;
&lt;br /&gt;
Consider a &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Remora"&gt;remora&lt;/a&gt;&amp;nbsp;("sharksucker"). It's a small fish that essentially attaches to another host (fish, whale, turtle, etc.). It can receive nutrients from on or around the host. It can also be protected from predators that avoid the host. In some cases, the host could eat the remora, but the remora is so small that it may not be worth the effort. Some hosts actually receive a small benefit (cleaning, for example) from the remora. Regardless, the remora experiences very little cost and plenty of benefit. Moreover, the host experiences very little cost and possibly some benefit. So there's no surprise that this behavior evolved. You don't need any fancy mathematical model to show how this is possible&amp;nbsp;&amp;ndash; when the benefits align like this, it's natural to assume that it is going to be favored by natural selection.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Part 2.5: Symbiosis and Co-evolution&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Having said all of that, symbiosis can lead to elegant examples (or at least suggestions) of &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Coevolution"&gt;&lt;strong&gt;co-evolution&lt;/strong&gt;&lt;/a&gt;, which describes how a change in one species can lead to a change in other species. In particular, natural selection on different species creates a feedback across species. One species is the ecological background for another species, and so as each species changes it creates new niches (and destroys old ones) for other species. So the evolution of one species can guide the evolution in another. But I think this post is long enough. :)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;More information&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a target="_blank" href="http://www.wikipedia.org/"&gt;Wikipedia&lt;/a&gt; does a pretty good job on these particular subjects. Check 'em out there.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;(&amp;nbsp;I have also mirrored this content on &lt;a target="_blank" href="http://www.tedpavlic.com/post_symbiosis_not_group_selection.php"&gt;a post on my website&lt;/a&gt;.&amp;nbsp;)&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-8265572141305655468?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lha-GO7_y6WF1k_xQl5NMztdeXk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lha-GO7_y6WF1k_xQl5NMztdeXk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lha-GO7_y6WF1k_xQl5NMztdeXk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lha-GO7_y6WF1k_xQl5NMztdeXk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/6uW3jBvRNDk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/8265572141305655468/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=8265572141305655468" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/8265572141305655468?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/8265572141305655468?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/6uW3jBvRNDk/why-symbiosis-is-not-good-example-of.html" title="Why symbiosis is not a good example of group selection" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/09/why-symbiosis-is-not-good-example-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMFQ3k6cSp7ImA9WhdVFU4.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-7122989415140742213</id><published>2011-09-20T10:53:00.000-04:00</published><updated>2011-09-20T10:53:32.719-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-20T10:53:32.719-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ghostscript" /><category scheme="http://www.blogger.com/atom/ns#" term="gs" /><category scheme="http://www.blogger.com/atom/ns#" term="hacks" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="ssh" /><category scheme="http://www.blogger.com/atom/ns#" term="unix" /><category scheme="http://www.blogger.com/atom/ns#" term="utilities" /><category scheme="http://www.blogger.com/atom/ns#" term="lifehacks" /><category scheme="http://www.blogger.com/atom/ns#" term="printing" /><category scheme="http://www.blogger.com/atom/ns#" term="postscript" /><category scheme="http://www.blogger.com/atom/ns#" term="lp" /><category scheme="http://www.blogger.com/atom/ns#" term="scripts" /><category scheme="http://www.blogger.com/atom/ns#" term="LaserJet" /><category scheme="http://www.blogger.com/atom/ns#" term="lpr" /><category scheme="http://www.blogger.com/atom/ns#" term="HP" /><category scheme="http://www.blogger.com/atom/ns#" term="duplex printing" /><title>Duplex Printing from the Command Line to an HP LaserJet Printer</title><content type="html">My department has several HP LaserJet printers available to access within the department via LPR and SMB. However, if you are working from a personal laptop connected to the university wireless, those servers will not be available to you. Instead, you must print by piping your documents through SSH to a department server that does have access.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, doing &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Duplex_printing"&gt;duplex printing&lt;/a&gt; (i.e., two-sided printing) to an HP LaserJet printer from the command line is not trivial. So, using the &lt;a target="_blank" href="http://pages.cs.wisc.edu/~ghost/gsview/gsviewen.htm#PostScript_printer"&gt;GSview documentation&lt;/a&gt; as a guide, I put together a small &lt;tt&gt;bash&lt;/tt&gt; script (available for download as &lt;a target="_blank" href="http://links.tedpavlic.com/shell_scripts/hplj_duplex_print"&gt;&lt;tt&gt;hplj_duplex_print&lt;/tt&gt;&lt;/a&gt;) that does the trick.&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;#!/bin/bash

declare -a input_file
if test $# -eq 0; then
    input_file=("-")
else
    input_file=("$@")
fi

( echo -e "\e%-12345X@PJL JOB"
  echo "@PJL ENTER LANGUAGE = POSTSCRIPT"
  echo "&lt;&lt; /Duplex true /Tumble false &gt;&gt; setpagedevice"
  gs -sDEVICE=psmono -sPAPERSIZE=letter -q -sOutputFile=- \
    -dNOPAUSE -dBATCH "${input_file[@]}"
  echo -e "\e%-12345X@PJL EOJ"
  echo -e "\e%12345X"
  ) | lp -d your_HP_printer_spool_name&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;You should replace the &lt;strong&gt;&lt;tt&gt;your_HP_printer_spool_name&lt;/tt&gt;&lt;/strong&gt; with your printer's spool name. You might want to tweak some of the options &lt;em&gt;(details below)&lt;/em&gt;, but the general structure will remain the same. The opening and closing escape sequences communicate to the HP LaserJet printer that a PostScript file is coming. Then the &lt;tt&gt;setpagedevice&lt;/tt&gt; PostScript directive instructs the printer to use its duplex module.&lt;br /&gt;
&lt;br /&gt;
Regarding &lt;em&gt;tweaking:&lt;/em&gt;&lt;ul&gt;&lt;li&gt;Again, make sure to change &lt;tt&gt;your_HP_printer_spool_name&lt;/tt&gt; to your spool name. You may also want to change &lt;tt&gt;lp&lt;/tt&gt; to &lt;tt&gt;lpr&lt;/tt&gt;, but you will likely have to change &lt;tt&gt;-d&lt;/tt&gt; to &lt;tt&gt;-P&lt;/tt&gt; then.&lt;/li&gt;&lt;li&gt;You may want to change the &lt;tt&gt;gs&lt;/tt&gt; (GhostScript) options to suit your purposes. For example, you can change the &lt;tt&gt;psmono&lt;/tt&gt; device to one of the other &lt;a target="_blank" href="http://www.gnu.org/software/ghostscript/devices.html"&gt;GhostScript devices&lt;/a&gt; like &lt;tt&gt;psgray&lt;/tt&gt; or &lt;tt&gt;psrgb&lt;/tt&gt;.&lt;/li&gt;&lt;li&gt;The &lt;strong&gt;&lt;tt&gt;Tumble&lt;/tt&gt;&lt;/strong&gt; switch determines whether to do short-edge (&lt;tt&gt;true&lt;/tt&gt;) or long-edge (&lt;tt&gt;false&lt;/tt&gt;) duplex printing, and so this script defaults to the latter case. If you prefer vertical flipping, change the &lt;tt&gt;/Tumble false&lt;/tt&gt; to &lt;tt&gt;/Tumble true&lt;/tt&gt;. You might also make this a configurable command-line switch on the script.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-7122989415140742213?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f4dkk75hkm-maxSLvyRj2gsFlzE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f4dkk75hkm-maxSLvyRj2gsFlzE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/f4dkk75hkm-maxSLvyRj2gsFlzE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f4dkk75hkm-maxSLvyRj2gsFlzE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/JBtT856Zb5g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/7122989415140742213/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=7122989415140742213" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/7122989415140742213?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/7122989415140742213?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/JBtT856Zb5g/duplex-printing-from-command-line-to-hp.html" title="Duplex Printing from the Command Line to an HP LaserJet Printer" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/09/duplex-printing-from-command-line-to-hp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQNQn4yfCp7ImA9WhdXGUs.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-2258785269237002375</id><published>2011-09-01T15:34:00.002-04:00</published><updated>2011-09-02T08:26:33.094-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-02T08:26:33.094-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="National Geographic" /><category scheme="http://www.blogger.com/atom/ns#" term="news" /><category scheme="http://www.blogger.com/atom/ns#" term="dark matter" /><category scheme="http://www.blogger.com/atom/ns#" term="electrodynamics" /><category scheme="http://www.blogger.com/atom/ns#" term="quantum field theory" /><category scheme="http://www.blogger.com/atom/ns#" term="gravity" /><category scheme="http://www.blogger.com/atom/ns#" term="science" /><category scheme="http://www.blogger.com/atom/ns#" term="physics" /><title>"Dark Matter is an Illusion" summary in National Geographic News gets something a little wrong</title><content type="html">There was an interesting article from &lt;a target="_blank" href="
http://news.nationalgeographic.com/news"&gt;&lt;em&gt;National Geographic News&lt;/em&gt;&lt;/a&gt; yesterday:&lt;blockquote&gt;&lt;a target="_blank" href="http://news.nationalgeographic.com/news/2011/08/110831-dark-matter-proof-gravity-quantum-theory-cern-space-science/"&gt;"Dark Matter Is an Illusion, New Antigravity Theory Says"&lt;/a&gt;&lt;br /&gt;
by Ker Than&lt;/blockquote&gt;I thought I'd post a link to the primary source here. I also wanted to point out that the explanation Ker Than gave got something really important wrong and consequently diminished the elegance of the proposed theory.&lt;br /&gt;
&lt;br /&gt;
Here's the primary source:&lt;blockquote&gt;&lt;a target="_blank" href="http://dx.doi.org/10.1007/s10509-011-0744-4"&gt;"Is dark matter an illusion created by the gravitational polarization of the quantum vacuum?"&lt;/a&gt;&lt;br /&gt;
by Dragan Slavkov Hajdukovic&lt;br /&gt;
&lt;em&gt;Astrophysics and Space Science&lt;/em&gt; 334(2):215--218&lt;br /&gt;
DOI:&amp;nbsp;&lt;a target="_blank" href="http://dx.doi.org/10.1007/s10509-011-0744-4"&gt;10.1007/s10509-011-0744-4&lt;/a&gt;&lt;/blockquote&gt;Ker Than, the &lt;em&gt;National Geographic News&lt;/em&gt; reporter, got it a little mixed up in this part of the NatGeo article:&lt;blockquote&gt;&lt;em&gt;All of these electric dipoles are randomly oriented&amp;mdash;like countless compass needles pointing every which way. But if the dipoles form in the presence of an existing electric field, they immediately align along the same direction as the field.&lt;br /&gt;
&lt;br /&gt;
According to quantum field theory, this sudden snapping to order of electric dipoles, called polarization, generates a secondary electric field that combines with and strengthens the first field.&lt;/em&gt;&lt;/blockquote&gt;This electric analogy states that electric dipoles align and &lt;strong&gt;strengthen&lt;/strong&gt; electric fields, but that's incorrect. Electric dipoles &lt;strong&gt;weaken&lt;/strong&gt; surrounding electric fields. In particular, the positive end of the dipole goes toward the "negative end" of the field and the negative end of the dipole goes toward the "positive end" of the field. So the two fields subtract from each other, not reinforce. This is summarized in the primary source (that I'll quote below).&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;[&amp;nbsp;note that magnetic dipoles align and reinforce surrounding magnetic fields because there are no magnetic monopoles. That is, magnetic field lines are continuous; they don't terminate. Consequently, magnetic dipoles are torqued to align their fields. Electric dipoles are driven by the motion of their monopolar ends&amp;nbsp;]&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
What Ker Than missed was that in this model of "gravitational charge", it is the case that &lt;strong&gt;opposites repel&lt;/strong&gt; and &lt;strong&gt;likes attract&lt;/strong&gt;. That's why you (matter) are attracted to earth (also matter). However, anti-matter and matter would repel each other. Moreover, if you had a matter&amp;ndash;antimatter virtual pair (as quantum field theory says you do in a vacuum of space), that dipole would align because its "positive" end would be pulled &lt;em&gt;toward&lt;/em&gt; the positive end of the gravitational field (and vice versa for its negative end). This alignment would strengthen the resulting field.&lt;br /&gt;
&lt;br /&gt;
Here's the relevant snippet from the bottom of the first column of page 2 of the article:&lt;blockquote&gt;&lt;em&gt;In order to grasp the key difference between the polarization by an electric field and the eventual polarization by a gravitational field, let's remember that, as a consequence of polarization, the strength of an electric field is reduced in a dielectric. For instance, when a slab of dielectric is inserted into a parallel plate capacitor, the electric field between plates is reduced. The reduction is due to the fact that the electric charges of opposite sign attract each other. If, instead of attraction, there was repulsion between charges of opposite sign, the electric field inside a dielectric would be augmented. But, according to our hypothesis, there is such repulsion between gravitational charges of different sign.&lt;/em&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-2258785269237002375?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cxeszcFCOjIn1lDA3wBv6HzQ0fA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cxeszcFCOjIn1lDA3wBv6HzQ0fA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cxeszcFCOjIn1lDA3wBv6HzQ0fA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cxeszcFCOjIn1lDA3wBv6HzQ0fA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/aP2rD2U0xDs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/2258785269237002375/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=2258785269237002375" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/2258785269237002375?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/2258785269237002375?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/aP2rD2U0xDs/dark-matter-is-illusion-summary-in.html" title="&quot;Dark Matter is an Illusion&quot; summary in &lt;em&gt;National Geographic News&lt;/em&gt; gets something a little wrong" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/09/dark-matter-is-illusion-summary-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8DSHk-fSp7ImA9WhdXGEQ.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-2634000335631333818</id><published>2011-09-01T13:22:00.003-04:00</published><updated>2011-09-01T13:24:39.755-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T13:24:39.755-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GMail" /><category scheme="http://www.blogger.com/atom/ns#" term="email" /><category scheme="http://www.blogger.com/atom/ns#" term="mail" /><category scheme="http://www.blogger.com/atom/ns#" term="e-mail" /><category scheme="http://www.blogger.com/atom/ns#" term="labels" /><title>Why GMail's show-if-unread is NOW useless with nested labels</title><content type="html">Once upon a time, when they were both in "GMail Labs", the &lt;strong&gt;show-if-unread&lt;/strong&gt; feature and &lt;strong&gt;nested labels&lt;/strong&gt; features worked together seamlessly.&lt;ul&gt;&lt;li&gt;&lt;strong&gt;nested labels:&lt;/strong&gt; You could create a nested label (like a subfolder) by adding slashes in folder names. You would create two folders called "Parent/ChildA" and "Parent/ChildB", and they would be displayed as "ChildA" and "ChildB" underneath a single "Parent" that you could collapse and expand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;show-if-unread:&lt;/strong&gt; Only labels that had unread messages in them would show up in the left bar. To see all of your labels, you could use the "more" link which would show you a full list.&lt;/li&gt;
&lt;/ul&gt;In the case where a nested label had unread messages in it, it would show up in its flat form (if I recall correctly) in the list. So you'd see "Parent/ChildA" but "ChildB" would still be nested under "Parent" in the "more". That was &lt;strong&gt;fantastic&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
However, eventually both labs features became integrated into production GMail, and they messed it all up. Now, ostensibly to avoid revealing the slash form and to avoid having parent labels repeated in both the unread and read lists, they've made it impossible to apply &lt;strong&gt;show-if-unread&lt;/strong&gt; to nested labels. Consequently, if any nested labels have unread messages in it, the &lt;strong&gt;parent&lt;/strong&gt; and &lt;em&gt;all&lt;/em&gt; of its nested labels show up in the unread list. So you get things like this (click for larger):&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a target="_blank" href="http://2.bp.blogspot.com/-armxMBdlmBY/Tl-9FWBT13I/AAAAAAAAgtQ/SKm0nEsUK2I/s1600/unhidden_subfolders.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="93" src="http://2.bp.blogspot.com/-armxMBdlmBY/Tl-9FWBT13I/AAAAAAAAgtQ/SKm0nEsUK2I/s320/unhidden_subfolders.png" /&gt;&lt;/a&gt;&lt;/div&gt;Obviously, that defeats the whole purpose of &lt;strong&gt;show-if-unread&lt;/strong&gt;. I'm forced to look at all of those read nested labels just because some of their "sublings" are unread.&lt;br /&gt;
&lt;br /&gt;
So Google has gone from taking two nice features and combining them into one terrible and useless and awful thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-2634000335631333818?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jq8bGH7MxjugKa168kuelK_Bm-w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jq8bGH7MxjugKa168kuelK_Bm-w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jq8bGH7MxjugKa168kuelK_Bm-w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jq8bGH7MxjugKa168kuelK_Bm-w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/IrMB1ub_97Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/2634000335631333818/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=2634000335631333818" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/2634000335631333818?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/2634000335631333818?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/IrMB1ub_97Q/why-gmails-show-if-unread-is-now.html" title="Why GMail's show-if-unread is NOW useless with nested labels" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-armxMBdlmBY/Tl-9FWBT13I/AAAAAAAAgtQ/SKm0nEsUK2I/s72-c/unhidden_subfolders.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/09/why-gmails-show-if-unread-is-now.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcGQX07fCp7ImA9WhRTGEg.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-5662822941152699791</id><published>2011-08-31T17:51:00.012-04:00</published><updated>2011-11-09T11:43:40.304-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-09T11:43:40.304-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="screensavers" /><category scheme="http://www.blogger.com/atom/ns#" term="KDE" /><category scheme="http://www.blogger.com/atom/ns#" term="DPMS" /><category scheme="http://www.blogger.com/atom/ns#" term="ElectricSheep" /><category scheme="http://www.blogger.com/atom/ns#" term="screen savers" /><category scheme="http://www.blogger.com/atom/ns#" term="references" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="mplayer" /><category scheme="http://www.blogger.com/atom/ns#" term="Desktops" /><title>Electric Sheep on KDE 4.6.5 with Fedora 15 (using Intel graphics card)</title><content type="html">&lt;hr&gt;&lt;em&gt;This post begins with &lt;strong&gt;a few important updates;&lt;/strong&gt; scroll down to see the bulk of the original post.&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Fedora&amp;nbsp;16 update:&lt;/strong&gt; If you are using Fedora&amp;nbsp;16, then see &lt;a target="_blank" href="http://phaseportrait.blogspot.com/2011/11/building-electricsheep-on-fedora-16-and.html"&gt;updates from a newer post&lt;/a&gt; about how to get ElectricSheep built and running.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;DPMS Update (getting monitors to sleep/standby/suspend/turn off on schedule again):&lt;/strong&gt; It turns out that &lt;tt&gt;electricsheep&lt;/tt&gt; is preventing my monitors from getting DPMS sleep/standby/off signals because of a bug in &lt;tt&gt;mplayer&lt;/tt&gt; that was fixed today in SVN&amp;nbsp;r34074. If you pull down the updated &lt;tt&gt;mplayer&lt;/tt&gt; and build it yourself, your DPMS problems with &lt;tt&gt;electricsheep&lt;/tt&gt; will be fixed. If you aren't willing to pull down the SVN source and build the fixed binary, you could use something like this sample &lt;a target="_blank" href="http://links.tedpavlic.com/shell_scripts/electricsheep-wrapper"&gt;&lt;tt&gt;electricsheep-wrapper&lt;/tt&gt;&lt;/a&gt; script that starts both &lt;tt&gt;electricsheep&lt;/tt&gt; and a secondary process that reads waiting times from &lt;tt&gt;xset&amp;nbsp;q&lt;/tt&gt;, sleeps for those times, and then issues the appropriate &lt;tt&gt;xset dpms force&lt;/tt&gt; commands. To use the hack, all references to &lt;tt&gt;electricsheep&lt;/tt&gt; in KDE or &lt;tt&gt;xscreensaver&lt;/tt&gt; configuration files must be changed to &lt;tt&gt;electricsheep-wrapper&lt;/tt&gt; and the &lt;a target="_blank" href="http://links.tedpavlic.com/shell_scripts/electricsheep-wrapper"&gt;&lt;tt&gt;electricsheep-wrapper&lt;/tt&gt; script&lt;/a&gt; has to be installed in a directory in the &lt;tt&gt;PATH&lt;/tt&gt;. Or, again, you can just wait for &lt;tt&gt;mplayer&lt;/tt&gt; to get patched in your Linux distribution.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;KDE update:&lt;/strong&gt; &lt;tt&gt;electricsheep&lt;/tt&gt;'s &lt;a target="_blank" href="https://electricsheep.svn.sourceforge.net/svnroot/electricsheep/trunk/client"&gt;SourceForge SVN&lt;/a&gt; includes a Desktop file for KDE, and so I've updated the stuff below to use it instead. It's probably a good idea to check out their updated &lt;a target="_blank" href="http://code.google.com/p/electricsheep/source/checkout"&gt;SVN repository at GoogleCode&lt;/a&gt; to see if the support files have improved.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Multiple Monitors update:&lt;/strong&gt; KDE will stretch one &lt;tt&gt;electricsheep&lt;/tt&gt; across all of your monitors. Instead, if you want &lt;tt&gt;electricsheep&lt;/tt&gt; to put a different instance on each monitor, use &lt;a target="_blank" href="http://www.jwz.org/xscreensaver/"&gt;&lt;tt&gt;xscreensaver&lt;/tt&gt;&lt;/a&gt; instead of &lt;tt&gt;kscreensaver&lt;/tt&gt;. To do so, you'll have to follow the &lt;a target="_blank" href="http://www.jwz.org/xscreensaver/man1.html#9"&gt;instructions for using &lt;tt&gt;xscreensaver&lt;/tt&gt; on KDE&lt;/a&gt;, which are also on the &lt;tt&gt;xscreensaver&lt;/tt&gt; &lt;tt&gt;man&lt;/tt&gt; page. I modified step&amp;nbsp;4 to use my own custom system-level &lt;a target="_blank" href="http://links.tedpavlic.com/shell_scripts/kscreenlocker"&gt;&lt;tt&gt;kscreenlocker&lt;/tt&gt;&lt;/a&gt; that doesn't force everyone on the system to use &lt;tt&gt;xscreensaver&lt;/tt&gt;. Additionally, to get &lt;tt&gt;electricsheep&lt;/tt&gt; to show up in the &lt;tt&gt;xscreensaver-demo&lt;/tt&gt; menu, you need to not only install the relevant &lt;tt&gt;electricsheep.xml&lt;/tt&gt; file (find it in the source repo's or built it yourself), but you also have to add a line to your own &lt;tt&gt;~/.xscreensaver&lt;/tt&gt; configuration file. I don't know why the former doesn't generate the latter. On one of my machines, it does. On the other, it doesn't.&lt;/p&gt;&lt;p&gt;Of course, &lt;acronym title="Your Mileage May Vary"&gt;YMMV&lt;/acronym&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;I installed &lt;a target="_blank" href="http://www.electricsheep.org/"&gt;electric sheep&lt;/a&gt; today because I was bored of my &lt;a target="_blank" href="http://www.robobunny.com/projects/asciiquarium/html/"&gt;ASCIIQuarium&lt;/a&gt; &lt;a target="_blank" href="http://www.kde-look.org/content/show.php?content=29207"&gt;KDE screensaver&lt;/a&gt; and not thrilled about the other options (some of which bail out on my dual screen Intel setup).  &lt;em&gt;[&amp;nbsp;If you're not familiar with &lt;a target="_blank" href="http://www.electricsheep.org/"&gt;Electric Sheep&lt;/a&gt;, you should check out the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Electric_Sheep"&gt;Electric Sheep Wikipedia page&lt;/a&gt; which discusses how the screensaver evolves over time. It's a distributed computing project, and the genetic algorithm that guides the evolution actually takes input from Electric Sheep users (well, not me, because I don't have the keyboard support to "up" and "down" the sheep I see). So the screen saver is constantly downloading and processing new AVI's, generating new content, and contributing it back to the network. I like it because it's pretty screen saver diversity at the cost of a few computing cycles and some disk space.&amp;nbsp;]&lt;/em&gt;  &lt;strong&gt;It wasn't so bad, but it also wasn't trouble free.&lt;/strong&gt; Here's what I did (which &lt;em&gt;almost&lt;/em&gt; worked entirely without me having to do anything special):&lt;ol&gt;&lt;li&gt;Use the &lt;a target="_blank" href="http://taiter.com/files/makeSheepFedora.tar.gz"&gt;Fedora-specific script&lt;/a&gt; from &lt;a target="_blank" href="http://blog.taiter.com/tech/2009/06/electricsheep-gnome-screensave.html"&gt;Tait Clarridge's page on downloading and installing electric sheep in Fedora&lt;/a&gt; (if you are running Fedora 16, see &lt;a target="_blank" href="http://phaseportrait.blogspot.com/2011/11/building-electricsheep-on-fedora-16-and.html"&gt;my updated script&lt;/a&gt; instead).&lt;/li&gt;
&lt;li&gt;Learn from &lt;a target="_blank" href="http://n0t3s.wordpress.com/2009/05/06/electricsheep-and-kde/"&gt;Giulio Guzzinati about the need to add an electric sheep KDE Desktop file&lt;/a&gt; to get the screensaver into the KDE Screen Saver configuration tool.&lt;/li&gt;
&lt;/ol&gt;Unfortunately, Giulio Guzzinati's desktop file didn't work for me, and so I had to &lt;s&gt;build my own&lt;/s&gt; use the desktop file inside the &lt;tt&gt;electricsheep&lt;/tt&gt; distribution. Here the file that ended up "working" for me (which is downloadable as &lt;a target="_blank" href="http://www.tedpavlic.com/links/desktop/electricsheep.desktop"&gt;&lt;tt&gt;electricsheep.desktop&lt;/tt&gt;&lt;/a&gt;, but I copied from &lt;a target="_blank" href="https://electricsheep.svn.sourceforge.net/svnroot/electricsheep/trunk/client/electricsheep.desktop.kde"&gt;&lt;tt&gt;electricsheep.desktop.kde&lt;/tt&gt;&lt;/a&gt; in the SVN repo).&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;[Desktop Entry]
Exec=electricsheep
Icon=kscreensaver
Type=Service
X-KDE-ServiceTypes=ScreenSaver
TryExec=xscreensaver
Actions=InWindow;Root;Setup;
X-KDE-Category=Fractals Screen Savers
X-KDE-Type=xv
Name=ElectricSheep

[Desktop Action Setup]
Exec=electricsheep-preferences
Name=Setup...

[Desktop Action InWindow]
Exec=electricsheep -window-id %w
Name=Display in Specified Window
NoDisplay=true

[Desktop Action Root]
Exec=electricsheep -window-id %w
Name=Display in Root Window
NoDisplay=true

X-Ubuntu-Gettext-Domain=desktop_kdeartwork&lt;/pre&gt;&lt;/tt&gt;&lt;/blockquote&gt;As explained in &lt;a target="_blank" href="http://n0t3s.wordpress.com/2009/05/06/electricsheep-and-kde/"&gt;Giulio Guzzinati's post&lt;/a&gt;, you can place that file in&lt;blockquote&gt;&lt;tt&gt;&lt;pre&gt;/usr/share/kde4/services/ScreenSavers/&lt;/pre&gt;&lt;/tt&gt;&lt;/blockquote&gt;You can probably put it in&lt;blockquote&gt;&lt;tt&gt;&lt;pre&gt;~/.kde/share/services/ScreenSavers/&lt;/pre&gt;&lt;/tt&gt;&lt;/blockquote&gt;as well (you might have to create that directory first) if you'd rather do something local.  That put the Electric Sheep across both of my monitors. If you'd rather put a separate &lt;tt&gt;electricsheep&lt;/tt&gt; in each monitor, use &lt;tt&gt;xscreensaver&lt;/tt&gt; instead of KDE's screen saver. If you're having trouble getting your monitors to go to sleep while &lt;tt&gt;electricsheep&lt;/tt&gt; is running, then you need to get an updated &lt;tt&gt;mplayer&lt;/tt&gt; that fixes the bug that causes that problem (see the &lt;strong&gt;updates&lt;/strong&gt; at the top of this post for more information). Alternatively, you can use a hack like this &lt;a target="_blank" href="http://links.tedpavlic.com/shell_scripts/electricsheep-wrapper"&gt;&lt;tt&gt;electricsheep-wrapper&lt;/tt&gt; script&lt;/a&gt; to re-enable DPMS-&lt;em&gt;like&lt;/em&gt; timeouts during the screensaver. To use the hack, all references to &lt;tt&gt;electricsheep&lt;/tt&gt; in KDE or &lt;tt&gt;xscreensaver&lt;/tt&gt; configuration files must be changed to &lt;tt&gt;electricsheep-wrapper&lt;/tt&gt; and the &lt;a target="_blank" href="http://links.tedpavlic.com/shell_scripts/electricsheep-wrapper"&gt;&lt;tt&gt;electricsheep-wrapper&lt;/tt&gt; script&lt;/a&gt; has to be installed in a directory in the &lt;tt&gt;PATH&lt;/tt&gt;. However, it probably won't be too long until the &lt;tt&gt;mplayer&lt;/tt&gt; DPMS fix reaches your Linux distribution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-5662822941152699791?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xcAA42AwS-mp8wXvhlEP7X68zeY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xcAA42AwS-mp8wXvhlEP7X68zeY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xcAA42AwS-mp8wXvhlEP7X68zeY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xcAA42AwS-mp8wXvhlEP7X68zeY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/ucjdXVOksaY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/5662822941152699791/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=5662822941152699791" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/5662822941152699791?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/5662822941152699791?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/ucjdXVOksaY/electric-sheep-on-kde-465-with-fedora.html" title="Electric Sheep on KDE 4.6.5 with Fedora 15 (using Intel graphics card)" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/08/electric-sheep-on-kde-465-with-fedora.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUNQ30zeSp7ImA9WhdXFk8.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-6892786930554128179</id><published>2011-08-29T10:01:00.001-04:00</published><updated>2011-08-29T10:14:52.381-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T10:14:52.381-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NYTimes" /><category scheme="http://www.blogger.com/atom/ns#" term="NudgeMail" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple Mail" /><category scheme="http://www.blogger.com/atom/ns#" term="Outlook" /><category scheme="http://www.blogger.com/atom/ns#" term="thunderbird" /><category scheme="http://www.blogger.com/atom/ns#" term="calendar" /><category scheme="http://www.blogger.com/atom/ns#" term="e-mail" /><category scheme="http://www.blogger.com/atom/ns#" term="lifehacks" /><category scheme="http://www.blogger.com/atom/ns#" term="productivity" /><category scheme="http://www.blogger.com/atom/ns#" term="GMail" /><category scheme="http://www.blogger.com/atom/ns#" term="Getting Things Done" /><category scheme="http://www.blogger.com/atom/ns#" term="GTD" /><category scheme="http://www.blogger.com/atom/ns#" term="reminders" /><category scheme="http://www.blogger.com/atom/ns#" term="Tickler File" /><category scheme="http://www.blogger.com/atom/ns#" term="3mindme" /><title>3mindme is shutting down! Old owner recommends NudgeMail</title><content type="html">Today I received the quoted e-mail below from &lt;a target="_blank" href="dbarrett@quinthar.com"&gt;David Barrett&lt;/a&gt; (&lt;a target="_blank" href="http://www.twitter.com/quinthar"&gt;@quinthar&lt;/a&gt;). His work as CEO of &lt;a target="_blank" href="https://expensify.com/"&gt;Expensify&lt;/a&gt; and some complications with maintaining the longevity of &lt;a target="_blank" href="http://3mindme.com/"&gt;3mindme&lt;/a&gt; have made him decide to &lt;strong&gt;shut down the 3mindme service effective immediately&lt;/strong&gt;. He recommends the very similar but commercially operated service &lt;a target="_blank" href="http://www.nudgemail.com/"&gt;NudgeMail&lt;/a&gt; as a substitute. You can find other substitution options at &lt;a target="_blank" href="http://phaseportrait.blogspot.com/2011/06/delayed-reminder-e-mails-itickleme.html"&gt;an old post of mine discussing these services&lt;/a&gt;.&lt;blockquote&gt;&lt;tt&gt;Hi!  I'm David, the guy who made 3mindme.  I'm very sad to inform you that I'm shutting down the service permanently, starting immediately. I strongly encourage you to check out a similar service at http://nudgemail.com -- it's essentially the same thing as 3mindme, but better.&lt;br /&gt;
&lt;br /&gt;
Q: What will happen to the emails I've scheduled for the future?&lt;br /&gt;
A: After I send this email to all users, I'm going to send all future-dated emails immediately.  My goal has always been to return every email at precisely the right time.  Unfortunately, I'll need to make due with simply returning them at all.&lt;br /&gt;
&lt;br /&gt;
Q: Can I do anything to convince you to keep 3mindme alive?&lt;br /&gt;
A: Probably not.  It's been a fun service to operate these many years, but as CEO of Expensify (&lt;a target="_blank" href="https://expensify.com"&gt;https://expensify.com&lt;/a&gt; - Expense reports that don't suck!) I just don't have the time to devote to 3mindme.&lt;br /&gt;
&lt;br /&gt;
Q: Why now, after years of continuous operation?&lt;br /&gt;
A: Spam.  I recently learned that many users (myself included) were having their emails silently dropped, meaning they got no error response, but the message was never scheduled for future delivery. Solving this problem is very difficult and time consuming, and I'd rather shut down 3mindme than leave it in a non-functioning state.&lt;br /&gt;
&lt;br /&gt;
I think that's all.  If you have any questions, feel free to respond to this email and I'll do what I can to help.  Otherwise, give NudgeMail a shot, and keep Expensify in mind for your next expense report!&lt;br /&gt;
&lt;br /&gt;
-david&lt;br /&gt;
Follow me at &lt;a target="_blank" href="http://twitter.com/quinthar"&gt;http://twitter.com/quinthar&lt;/a&gt;&lt;/tt&gt;&lt;/blockquote&gt;So that is very sad. 3mindme was a nice server-side mail-me-back reminder service that didn't have the ugly commercial taste of pretty much every other alternative.&lt;br /&gt;
&lt;br /&gt;
So bye-bye 3mindme; we'll miss you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-6892786930554128179?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GJe5jIjnutrpsN5eu502xjUu1KU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GJe5jIjnutrpsN5eu502xjUu1KU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GJe5jIjnutrpsN5eu502xjUu1KU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GJe5jIjnutrpsN5eu502xjUu1KU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/A1_lUC9K0H0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/6892786930554128179/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=6892786930554128179" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/6892786930554128179?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/6892786930554128179?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/A1_lUC9K0H0/3mindme-is-shutting-down-old-owner.html" title="3mindme is shutting down! Old owner recommends NudgeMail" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/08/3mindme-is-shutting-down-old-owner.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAESHk5cCp7ImA9WhdXEkQ.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-7237140546162552356</id><published>2011-08-25T14:25:00.000-04:00</published><updated>2011-08-25T14:25:09.728-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-25T14:25:09.728-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="latex" /><category scheme="http://www.blogger.com/atom/ns#" term="gobblepars" /><category scheme="http://www.blogger.com/atom/ns#" term="TeX/LaTeX" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="hacks" /><category scheme="http://www.blogger.com/atom/ns#" term="latex examples" /><category scheme="http://www.blogger.com/atom/ns#" term="cross-references" /><category scheme="http://www.blogger.com/atom/ns#" term="tex" /><title>Using \gobblepars to prevent LaTeX from adding empty lines at gaps</title><content type="html">While searching for something else, I came upon &lt;a target="_blank" href="http://stackoverflow.com/questions/1311991/latex-avoid-new-paragraph/"&gt;a StackOverflow question&lt;/a&gt; from a while ago that asked how to prevent LaTeX from adding a &lt;tt&gt;\par&lt;/tt&gt; at particular blank lines in the source code. The asker didn't want to remove blank spaces everywhere; he just wanted to get rid of the paragraphs at certain spots.&lt;br /&gt;
&lt;br /&gt;
Of course, you can use comments to do this:&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;\somemacro{}
%
Some text&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;However, a lot of people don't like the look of that. Some of the responders on StackOverflow gave some alternatives that seemed ugly and half baked. So I came up with &lt;tt&gt;\gobblepars&lt;/tt&gt;, which is a macro you can add to the end of your own macro definitions to cause them to eat up all trailing pars, or you can use explicitly. For example:&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;\somemacro{}\gobblepars

Some text&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;would do the same as the commented stuff above. Moreover, if you had control over &lt;tt&gt;\somemacro&lt;/tt&gt;, you could build &lt;tt&gt;\gobblepars&lt;/tt&gt; into it &lt;em&gt;(in fact, even if you didn't have control, you could use &lt;tt&gt;\let&lt;/tt&gt; and &lt;tt&gt;\def&lt;/tt&gt; to augment an existing macro with a trailing &lt;tt&gt;\gobblepars&lt;/tt&gt;, but that's a different topic)&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
Here's the simple definition of &lt;tt&gt;\globblepars&lt;/tt&gt; (you put this in the preamble of your LaTeX document):&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;\makeatletter
\newcommand\gobblepars{%
    \@ifnextchar\par%
        {\expandafter\gobblepars\@gobble}%
        {}}
\makeatother&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;So that's pretty simple. It checks for a &lt;tt&gt;\par&lt;/tt&gt; (which includes a blank line in the source) trailing it. If it finds one, it gobbles it up (i.e., gets rid of it) and then calls itself again. This process will continue until it finds something other than a &lt;tt&gt;\par&lt;/tt&gt;. Hence, it "&lt;strong&gt;gobble&lt;/strong&gt;s" strings of "&lt;strong&gt;pars&lt;/strong&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-7237140546162552356?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wv-aMlEEPAL9r2qsTNM28Qs3INI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wv-aMlEEPAL9r2qsTNM28Qs3INI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wv-aMlEEPAL9r2qsTNM28Qs3INI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wv-aMlEEPAL9r2qsTNM28Qs3INI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/_zVcHuvoPVc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/7237140546162552356/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=7237140546162552356" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/7237140546162552356?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/7237140546162552356?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/_zVcHuvoPVc/using-gobblepars-to-prevent-latex-from.html" title="Using \gobblepars to prevent LaTeX from adding empty lines at gaps" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/08/using-gobblepars-to-prevent-latex-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YNQnczeip7ImA9WhdXE0U.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-7775825311242711136</id><published>2011-08-24T01:13:00.006-04:00</published><updated>2011-08-26T13:53:13.982-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-26T13:53:13.982-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="latex" /><category scheme="http://www.blogger.com/atom/ns#" term="curriculum vitae" /><category scheme="http://www.blogger.com/atom/ns#" term="resume" /><category scheme="http://www.blogger.com/atom/ns#" term="TeX/LaTeX" /><category scheme="http://www.blogger.com/atom/ns#" term="texlatex" /><category scheme="http://www.blogger.com/atom/ns#" term="latex examples" /><category scheme="http://www.blogger.com/atom/ns#" term="latex templates" /><category scheme="http://www.blogger.com/atom/ns#" term="tex" /><category scheme="http://www.blogger.com/atom/ns#" term="cv" /><title>Update to my LaTeX CV templates: Space allowed after sections now!</title><content type="html">In preparation for setting up MultiMarkDown (MMD) to write my CV for me, I've been thinking about ways to refactor my old r&amp;eacute;sum&amp;eacute;/CV LaTeX templates to make them look a little cleaner. A fix I came up with tonight should help with that, and I think it will also make the templates easier for others to work with even if they're not doing anything with MMD.&lt;br /&gt;
&lt;br /&gt;
In particular, the &lt;tt&gt;\section&lt;/tt&gt; macro used to be renewed as a &lt;tt&gt;\marginpar&lt;/tt&gt; with some other ugly stuff. Putting the sections in the margins caused problems because people like to put spaces after the sections, which generates a &lt;tt&gt;\par&lt;/tt&gt; that means the section content will not be aligned with the section heading in the margin note. So the old way I got around that problem was to force people not to use spaces between &lt;tt&gt;\section&lt;/tt&gt; and the section content. If they needed visual space in their source code, they could use comments to do that.&lt;br /&gt;
&lt;br /&gt;
Well, I've swapped out that ugly definition for a slightly less ugly one that uses &lt;tt&gt;\llap&lt;/tt&gt; (with a &lt;tt&gt;\smash&lt;/tt&gt;ed &lt;tt&gt;\parbox&lt;/tt&gt;) and some creative gobbling. In particular,&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;% The section headings
%
% Usage: \section{section name}
\renewcommand{\section}[1]{\pagebreak[3]%
    \hyphenpenalty=10000%
    \vspace{1.3\baselineskip}%
    \phantomsection\addcontentsline{toc}{section}{#1}%
    \noindent\llap{\scshape\smash{%
        \parbox[t]{\marginparwidth}{\raggedright #1}}}%
    \vspace{-\baselineskip}\par}&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;The &lt;tt&gt;\vspace&lt;/tt&gt; and &lt;tt&gt;\par&lt;/tt&gt; combination should ensure that an additional &lt;tt&gt;\par&lt;/tt&gt; isn't added by LaTeX. So before you were restricted to things like...&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;\section{Stuff} \begin{bibsection} %...&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;and&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;\section{Stuff}
%
Junk&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;But now you don't have to be so careful about the whitespace. You are allowed:&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;\section{Stuff}

\begin{bibsection} %...&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;and&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;\section{Stuff}

Junk&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;So that's cool. Much more readable.&lt;br /&gt;
&lt;br /&gt;
You can get my most recent LaTeX CV templates at &lt;a target="_blank" href="http://www.tedpavlic.com/post_resume_cv_latex_example.php"&gt;their page on my website&lt;/a&gt;. You can find a detailed history of the source code changes within &lt;a target="_blank" href="http://hg.tedpavlic.com/docs/"&gt;my Mercurial repositories of documents&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;s&gt;&lt;em&gt;(updated: new &lt;tt&gt;\gobblepars&lt;/tt&gt; allows for arbitrary amount of space after each &lt;tt&gt;\section&lt;/tt&gt;)&lt;/em&gt;&lt;/s&gt;&lt;br /&gt;
&lt;em&gt;(updated: replaced &lt;a target="_blank" href="http://phaseportrait.blogspot.com/2011/08/using-gobblepars-to-prevent-latex-from.html"&gt;&lt;tt&gt;\gobblepars&lt;/tt&gt;&lt;/a&gt; with &lt;tt&gt;\par&lt;/tt&gt; hack that still allows for arbitrary amount of space after each &lt;tt&gt;\section&lt;/tt&gt; but also prevents lists from adding a &lt;tt&gt;\par&lt;/tt&gt; when placed directly after a &lt;tt&gt;\section&lt;/tt&gt;; consequently, adjusted all of the &lt;tt&gt;lone&lt;/tt&gt;-lists to get rid of their leading negative vertical space (probably can get rid of them now, actually). I'm trying to shift toward using conventional lists (or perhaps conventional modifications of them from &lt;a target="_blank" href="http://ctan.org/pkg/paralist"&gt;&lt;tt&gt;paralist&lt;/tt&gt;&lt;/a&gt; or &lt;a target="_blank" href="http://ctan.org/pkg/enumitem"&gt;&lt;tt&gt;enumitem&lt;/tt&gt;&lt;/a&gt;))&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-7775825311242711136?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ggp_r9402anM4ZugZc0FguRMlr4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ggp_r9402anM4ZugZc0FguRMlr4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ggp_r9402anM4ZugZc0FguRMlr4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ggp_r9402anM4ZugZc0FguRMlr4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/NwKznwvjvqA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/7775825311242711136/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=7775825311242711136" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/7775825311242711136?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/7775825311242711136?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/NwKznwvjvqA/update-to-my-latex-cv-templates-space.html" title="Update to my LaTeX CV templates: Space allowed after sections now!" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/08/update-to-my-latex-cv-templates-space.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cHR3s4eCp7ImA9WhdXEU4.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-8377782295745819655</id><published>2011-08-23T17:30:00.000-04:00</published><updated>2011-08-23T17:30:36.530-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-23T17:30:36.530-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="matrices" /><category scheme="http://www.blogger.com/atom/ns#" term="MATLAB" /><category scheme="http://www.blogger.com/atom/ns#" term="computers" /><category scheme="http://www.blogger.com/atom/ns#" term="sparse matrices" /><category scheme="http://www.blogger.com/atom/ns#" term="reference" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="mathematics" /><category scheme="http://www.blogger.com/atom/ns#" term="memory" /><category scheme="http://www.blogger.com/atom/ns#" term="math" /><title>The maximum number of matrix dimensions in MATLAB</title><content type="html">&lt;em&gt;[ &lt;strong&gt;Background:&lt;/strong&gt; I was asked what the maximum number of matrix dimensions was in &lt;a target="_blank" href="http://en.wikipedia.org/wiki/MATLAB"&gt;MATLAB&lt;/a&gt; today. I responded as follows. ]&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
You are only limited by the amount of memory available and the maximum number of ELEMENTS (as opposed to dimensions) in a matrix. The actual number of dimensions is just a detail about how the memory is indexed. You can reshape any existing matrix to any number of dimensions (I'll give details below). You can only create a new matrix if it abides by the memory and element limits that vary by computer.&lt;br /&gt;
&lt;br /&gt;
To find out the maximum number of elements for a matrix on your computer, use the MATLAB command "&lt;a target="_blank" href="http://www.mathworks.com/help/techdoc/ref/computer.html"&gt;&lt;font color="blue"&gt;&lt;strong&gt;&lt;tt&gt;computer&lt;/tt&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;" (do "&lt;font color="blue"&gt;&lt;tt&gt;help computer&lt;/tt&gt;&lt;/font&gt;" for details). For example:&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;[&lt;font color="blue"&gt;~&lt;/font&gt;,&lt;font color="magenta"&gt;maxsize&lt;/font&gt;,&lt;font color="blue"&gt;~&lt;/font&gt;]=&lt;font color="blue"&gt;computer&lt;/font&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;tells me that I can have &lt;strong&gt;2.8147e+14&lt;/strong&gt; elements in matrices on my computer. So I better be sure that:&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;font color="red"&gt;(number of rows)&lt;/font&gt;
   &amp;times; &lt;font color="red"&gt;(number of columns)&lt;/font&gt;
   &amp;times; &lt;font color="red"&gt;(number of cubes)&lt;/font&gt;
   &amp;times; &lt;font color="red"&gt;(number of 4-th dimensional thinggies)&lt;/font&gt;
   &amp;times; &lt;font color="red"&gt;(...)&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;is less than that number.&lt;br /&gt;
&lt;br /&gt;
To find out about memory limits on your system see, the command "&lt;a target="_blank" href="http://www.mathworks.com/help/techdoc/ref/memory.html"&gt;&lt;font color="blue"&gt;&lt;strong&gt;&lt;tt&gt;memory&lt;/tt&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;" ("&lt;font color="blue"&gt;&lt;tt&gt;help memory&lt;/tt&gt;&lt;/font&gt;" or "&lt;font color="blue"&gt;&lt;tt&gt;doc memory&lt;/tt&gt;&lt;/font&gt;"). Unfortunately, memory may not be available on your system. Alternatively, you can see:&lt;br /&gt;
&lt;br /&gt;
&lt;a target="_blank" href="http://www.mathworks.com/support/tech-notes/1100/1110.html"&gt;http://www.mathworks.com/support/tech-notes/1100/1110.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
for information about memory limits in MATLAB. For information about the maximum number of elements (and the command "computer" that I discussed above), see:&lt;br /&gt;
&lt;br /&gt;
&lt;a target="_blank" href="http://www.mathworks.com/support/tech-notes/1200/1207.html#15"&gt;http://www.mathworks.com/support/tech-notes/1200/1207.html#15&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Regarding dimensions, you can use the command "&lt;a target="_blank" href="http://www.mathworks.com/help/techdoc/ref/reshape.html"&gt;&lt;font color="blue"&gt;&lt;strong&gt;&lt;tt&gt;reshape&lt;/tt&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;" to re-index any existing matrix. For example, if I start with the column vector:&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;&lt;font color="magenta"&gt;A&lt;/font&gt;=&lt;font color="blue"&gt;ones&lt;/font&gt;(100,1)&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;I can turn it into a row vector:&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;&lt;font color="magenta"&gt;newA&lt;/font&gt; = &lt;font color="blue"&gt;reshape&lt;/font&gt;(&lt;font color="magenta"&gt;A&lt;/font&gt;, 1, 100)&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;or a matrix of any number of dimensions so long as the number of elements is still 100.&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;&lt;font color="magenta"&gt;newA&lt;/font&gt; = &lt;font color="blue"&gt;reshape&lt;/font&gt;( &lt;font color="magenta"&gt;A&lt;/font&gt;, 2, 2, 25 )
&lt;font color="magenta"&gt;newA&lt;/font&gt; = &lt;font color="blue"&gt;reshape&lt;/font&gt;( &lt;font color="magenta"&gt;A&lt;/font&gt;, 1, 1, 1, 1, 1, 1, 1, 1, 1, 100, 1 )
&lt;font color="magenta"&gt;newA&lt;/font&gt; = &lt;font color="blue"&gt;reshape&lt;/font&gt;( &lt;font color="magenta"&gt;A&lt;/font&gt;, 1, 1, 1, 2, 1, 50, 1, 1, 1, 1, 1, 1, 1, 1 )
&lt;font color="green"&gt;% etc.&lt;/font&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;Now, I'm assuming you're using regular MATLAB matrices. Alternatively, you can use &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Sparse_matrix"&gt;&lt;strong&gt;sparse matrices&lt;/strong&gt;&lt;/a&gt; so long as you limit yourself to functions that work with &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Sparse_matrix"&gt;sparse matrices&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;&lt;a target="_blank" href="http://www.mathworks.com/help/techdoc/math/f6-19352.html"&gt;&lt;font color="blue"&gt;help sparfun&lt;/font&gt;&lt;/a&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;A &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Sparse_matrix"&gt;sparse matrix&lt;/a&gt; stores an index with every element. That lets it "skip over" the 0 elements of the matrix. Consequently, you can store VERY large matrices with an abstract number of elements far larger than anything you can work with in MATLAB... however, most of those abstract elements will be 0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-8377782295745819655?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rMoLy8mocGOYt7L5Y010keu9KJ0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rMoLy8mocGOYt7L5Y010keu9KJ0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rMoLy8mocGOYt7L5Y010keu9KJ0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rMoLy8mocGOYt7L5Y010keu9KJ0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/yyEGnUw_cs0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/8377782295745819655/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=8377782295745819655" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/8377782295745819655?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/8377782295745819655?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/yyEGnUw_cs0/maximum-number-of-matrix-dimensions-in.html" title="The maximum number of matrix dimensions in MATLAB" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/08/maximum-number-of-matrix-dimensions-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcCR3s9eCp7ImA9WhdXEU8.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-471273933507150938</id><published>2011-08-23T13:21:00.000-04:00</published><updated>2011-08-23T13:21:06.560-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-23T13:21:06.560-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="streaming" /><category scheme="http://www.blogger.com/atom/ns#" term="reviews" /><category scheme="http://www.blogger.com/atom/ns#" term="MP3" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Amazon" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Music" /><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="music" /><category scheme="http://www.blogger.com/atom/ns#" term="scrobbling" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="storage" /><category scheme="http://www.blogger.com/atom/ns#" term="Spotify" /><title>Spotify, Google Music Beta, and Amazon Cloud Player? My choice is probably Google Music Beta</title><content type="html">Between &lt;strong&gt;Spotify&lt;/strong&gt;, &lt;strong&gt;Google Music Beta&lt;/strong&gt;, and &lt;strong&gt;Amazon Cloud Drive/Player&lt;/strong&gt;, I have had the most fun with &lt;strong&gt;Google Music Beta&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
So &lt;a target="_blank" href="http://www.spotify.com/"&gt;&lt;strong&gt;Spotify&lt;/strong&gt;&lt;/a&gt; is weird and uncomfortable. It&amp;#8217;s cool that I can get easy access to lots of music that I don&amp;#8217;t actually own, and it&amp;#8217;s easy to make playlists. However, it is ugly to be able to both shuffle your whole library &lt;em&gt;and&lt;/em&gt; put songs in multiple playlists without risking over-representing them in your shuffle. Over-representation is generally a major problem if you create artist playlists because one artist might have a whole bunch more songs in the Spotify database than others. It would be nice to &amp;#8220;shuffle artists&amp;#8221; where you&amp;#8217;re guaranteed a balanced selection of artists (e.g., in every set of 30 songs)&amp;#8230; What&amp;#8217;s worse on Spotify is that playlists are static. You might be able to create an artist playlist, but you have to watch out for new songs to add to that playlist. Be careful though &amp;#8211; songs get duplicated in a playlist if you drag them over. &lt;em&gt;Having said all of that&lt;/em&gt;, I certainly have had fun discovering new music with Spotify. The interface is ugly though, and it sucks to have to pay $10/month just to have Linux access (yes, I know I can use Spotify through wine for free now (and $5/month later when the free accounts become limited), but I hate dealing with the headache of local MP3&amp;#8217;s and the wine codec). Moreover, if I want Android access, I&amp;#8217;m stuck with $10/month too. Boo.&lt;br /&gt;
&lt;br /&gt;
&lt;a target="_blank" href="http://music.google.com/"&gt;&lt;strong&gt;Google Music Beta&lt;/strong&gt;&lt;/a&gt; had an easy upload process. It took a while, but not that long. It was strange that it bogged down my entire Internet connection (while Amazon&amp;#8217;s uploader didn&amp;#8217;t affect my downstream at all), which makes me wonder what else Google is doing. However, I could select all of my songs on my Linux machine (no fancy Windows uploader needed) and they all got uploaded. Unfortunately, I cannot download them (unless I make them available offline on my phone and then figure out where and how Google stores them, which may not be tractable). Also, I cannot figure out how to &lt;em&gt;buy&lt;/em&gt; new music (certainly a feature for the future, right?). However, Google randomly adds free music to my library, and that&amp;#8217;s cool. What&amp;#8217;s coolest is the &lt;em&gt;Instant Playlist&lt;/em&gt; feature (which is similar to features in iTunes and other players/services) that builds a good-sized playlist from a single song. I&amp;#8217;ve enjoyed its picks &amp;#8211; even when the song I seeded lists with came from a local artist that it couldn&amp;#8217;t have known much of anything about. Best of all, Google Music Beta gives me all of this for free (up to 20,000 songs) on &lt;em&gt;all&lt;/em&gt; of my systems (including Android). I never need to worry about keeping a Windows machine.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;a target="_blank" href="http://www.amazon.com/"&gt;Amazon&amp;#8217;s&lt;/a&gt; Cloud Drive/Player&lt;/strong&gt; is cool that it gives you 5GB for free and then $1/year/GB up to 1TB after that (starting at $20/year for 20GB). For the moment, if you pay for any storage, you get music storage for free. Any Amazon MP3 purchases can be placed directly in your library. Any song in your library can be downloaded. So Amazon&amp;#8217;s Cloud Drive is a nice archival and music management solution. Almost all of the cool features of the player work on all systems. The only downside is that the MP3 Uploader (which re-organizes your music into Artist/Album/Song and will allow you to select a batch of thousands of songs to upload at once) is only available in Windows (and Mac?). On a Linux machine, you can use the web uploader from Amazon&amp;#8217;s Cloud Drive, but you can only upload contents of one folder at a time (with no subfolders) and you have to organize everything manually. No one has figured out how to automate this through a script as far as I can tell. The Windows uploader does a pretty good job sitting in the background, and it&amp;#8217;s safe to interrupt it in the middle of an upload (however, it may take a while building your upload list when you re-start it). The Amazon Cloud Player is fine. You can build playlists of your music, which is fine. You can shuffle. You can&amp;#8217;t discover new music, but you can easily grow your library at 50 to 99 cents a song.&lt;/p&gt;&lt;br /&gt;
&lt;em&gt;[ Oh, and all three will scrobble to &lt;a target="_blank" href="http://last.fm/"&gt;Last.FM&lt;/a&gt;. It&amp;#8217;s supported natively in Spotify (with no support for &amp;#8220;Love&amp;#8221;), and it&amp;#8217;s supported with 3rd-party Greasemonkey scripts (for Firefox and Chrome (and Safari?)) for &lt;a target="_blank" href="http://www.danielslaughter.com/projects/google-music-with-lastfm/"&gt;Google Music&lt;/a&gt; and &lt;a target="_blank" href="http://www.danielslaughter.com/projects/amazon-cloud-player-with-last-fm-scrobbling-for-greasemonkey/"&gt;Amazon MP3 Player&lt;/a&gt;. ]&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-471273933507150938?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rlNt9O2biMfAujqrChtsrjWf2Rc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rlNt9O2biMfAujqrChtsrjWf2Rc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rlNt9O2biMfAujqrChtsrjWf2Rc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rlNt9O2biMfAujqrChtsrjWf2Rc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/krAbd-DNTCg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/471273933507150938/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=471273933507150938" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/471273933507150938?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/471273933507150938?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/krAbd-DNTCg/spotify-google-music-beta-and-amazon.html" title="Spotify, Google Music Beta, and Amazon Cloud Player? My choice is probably Google Music Beta" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/08/spotify-google-music-beta-and-amazon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMHR3Y7fSp7ImA9WhdXEE4.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-4713477211240590516</id><published>2011-08-22T12:26:00.001-04:00</published><updated>2011-08-22T12:27:16.805-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-22T12:27:16.805-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="conversion" /><category scheme="http://www.blogger.com/atom/ns#" term="metafile" /><category scheme="http://www.blogger.com/atom/ns#" term="unoconv" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="EMF" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="utilities" /><title>Converting an EMF (MetaFile) on Linux using unoconv</title><content type="html">When I needed to convert a graphic from an EMF (&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Windows_Metafile"&gt;Windows Enhanced MetaFile&lt;/a&gt;) on my Linux machine today, all of my Google searchers were turning up with conversion utilities for Windows or wine at best.&lt;br /&gt;
&lt;br /&gt;
Fortunately, it appears as though &lt;a target="_blank" href="http://dag.wieers.com/home-made/unoconv/"&gt;&lt;tt&gt;unoconv&lt;/tt&gt;&lt;/a&gt; converts from EMF and is available in the standard Fedora repositories. I issued:&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;unoconv MYMETAFILE.emf&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;and it spit out a &lt;tt&gt;MYMETAFILE.pdf&lt;/tt&gt;, and I was happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-4713477211240590516?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CyS6wUmiNmarg5E76LtDRoSVFM0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CyS6wUmiNmarg5E76LtDRoSVFM0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CyS6wUmiNmarg5E76LtDRoSVFM0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CyS6wUmiNmarg5E76LtDRoSVFM0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/egNzR8Bo_4c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/4713477211240590516/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=4713477211240590516" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/4713477211240590516?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/4713477211240590516?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/egNzR8Bo_4c/converting-emf-metafile-on-linux-using.html" title="Converting an EMF (MetaFile) on Linux using unoconv" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/08/converting-emf-metafile-on-linux-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EEQ3wzfip7ImA9WhdQFk0.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-3910275312435893025</id><published>2011-08-17T15:30:00.001-04:00</published><updated>2011-08-17T15:33:22.286-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-17T15:33:22.286-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AOSP" /><category scheme="http://www.blogger.com/atom/ns#" term="reviews" /><category scheme="http://www.blogger.com/atom/ns#" term="MIUI.us" /><category scheme="http://www.blogger.com/atom/ns#" term="hacks" /><category scheme="http://www.blogger.com/atom/ns#" term="Trey Motes" /><category scheme="http://www.blogger.com/atom/ns#" term="MIUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Peter Alfonso" /><category scheme="http://www.blogger.com/atom/ns#" term="MIUIAndroid" /><category scheme="http://www.blogger.com/atom/ns#" term="cell phones" /><title>An hour with MIUI Android on my OG DROID</title><content type="html">Last night, I installed the MIUI Android build from on my OG DROID. This is my first experience with MIUI, and it was mixed. I think the build was great (major h/t to &lt;a target="_blank"
href="http://www.twitter.com/TreyMotes"&gt;Trey Motes&lt;/a&gt;), and I think the MIUI devs have done a terrific job showing me that my phone can look drastically different than I'm used to. I've posted links to &lt;a target="_blank" href="http://miuiandroid.com/"&gt;MIUI Android&lt;/a&gt; (where&lt;br /&gt;
you can download a ROM for your phone) as well as &lt;a target="_blank" href="http://miui.us/"&gt;MIUI.us&lt;/a&gt; (where you can also download a ROM for your phone) as well as &lt;a target="_blank"
href="http://en.miui.com/"&gt;MIUI&lt;/a&gt; (where you can read about the official project and their own MIUI phone that recently hit the news).&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Things I liked:&lt;/em&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Clean theme&lt;/strong&gt; made GMail look so much nicer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notifications pull-down included toggles&lt;/strong&gt; for everything I'd want to toggle (WiFi/Bluetooth/etc.)&lt;/li&gt;
&lt;li&gt;Lots of &lt;strong&gt;customizability&lt;/strong&gt; (starting from lock-screen backgrounds and going all the way down to lots of other stuff that you usually only see in 3rd-party launchers and such)&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://www.twitter.com/TreyMotes"&gt;Trey Motes&lt;/a&gt; has bundled lots of useful apps with his distro (ROM Manager, WiFi Tether, etc.) out of the "box"&lt;/li&gt;
&lt;/ul&gt;&lt;em&gt;Things I didn't like:&lt;/em&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;The iOS-style launcher&lt;/strong&gt;&amp;nbsp;&amp;ndash; All of your apps are on the pages of the launcher. You can then create folders to group them together. There's no "app drawer" that shows you all of your apps so that you can only put a select few on your desktop screens. Some people might like this (iOS users sure do), but I've gotten used to Android-y things like using *FolderOrganizer* to tag apps (possibly with multiple tags), and so it's a major departure to go to an iOS-like organization style.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The iOS-style dialer and contacts list&lt;/strong&gt;&amp;nbsp;&amp;ndash; I'm not sure what's smart about the "smart dialer" (but I didn't play too much, and it was too late to call anyone). The contacts list (and other lists on the system) displays the iOS-like letters down the right where you can click on the tiny letter you want. Android's typical way of doing this is displaying a pull-tab on the right that you can drag (opposite semantics as flicking; so more like a Desktop scroll). I like the way Android does it better than iOS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Android Wizard doesn't run&lt;/strong&gt; and &lt;strong&gt;Market didn't sync apps&lt;/strong&gt;&amp;nbsp;&amp;ndash; The wizard that usually runs the first time you boot most ROMs didn't run, and so I had to add my accounts via the settings menu. What was probably worse was that the Market didn't automatically start downloadiing my apps, which is something I've come to appreciate (I know there are 3rd-party ways of backing up and restoring apps, but I don't use them if I don't have to).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Music app didn't integrate with Google Music&lt;/strong&gt;&amp;nbsp;&amp;ndash; The music app follows a bit of the style of the iTunes app in iOS, but it looks markedly different. In fact, it looks different than the stock Android music app too. So it has lots of features, but it's not like anything you're going to expect. It also didn't sync with Google Music, which really sucks after spending so much time uploading songs to the service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;General lack of integration with Google services&lt;/strong&gt;&amp;nbsp;&amp;ndash; The MIUI tries not to be so Google-dependent... Some may find that a strength, and some may find that a weakness.&lt;/li&gt;
&lt;/ul&gt;So I really don't have any complaints about the build or the dev's, but I'm just not sure I'm the intended demographic for the new look and feature set. I really think it's cool, but I just don't think it's something I want to use day to day. So I'm looking forward to whatever else &lt;a target="_blank" href="http://www.peteralfonso.com/"&gt;Peter Alfonso&lt;/a&gt; tells me I need (he's like my new Steve Jobs).&lt;br /&gt;
&lt;br /&gt;
I hear that next week &lt;a target="_blank" href="http://www.twitter.com/TreyMotes"&gt;Trey Motes&lt;/a&gt; will release a MIUIAndroid release for the OG DROID using a version of &lt;a target="_blank" href="http://www.peteralfonso.com/"&gt;Peter Alfonso&lt;/a&gt;'s kernel that is newer than anything you can get pre-built from him on his distro sites (I wonder if it's a 0.4 kernel? If so, I wonder if it has the same bugs that has been concerned about). So I imagine that performance of MIUIAndroid will be much nicer. It was fine when I tried it, but I didn't install many apps.&lt;br /&gt;
&lt;br /&gt;
So give it a shot. When I tried it, I downloaded the ROM from &lt;a target="_blank" href="http://miuiandroid.com/"&gt;MIUIAndroid.com&lt;/a&gt; (ROM Manger's version was a 1.7.x version; I used the 1.8.12 version from MIUIAndroid.com; note that it has a 1.8.12.1 HOTFIX (you'll see it in the forums that it links you too)) and used ROM Manager to backup my existing setup and install MIUIAndroid (you could try &lt;a target="_blank" href="http://miui.us/"&gt;MIUI.us&lt;/a&gt;, but I got the feeling that &lt;a target="_blank" href="http://www.twitter.com/TreyMotes"&gt;Trey Motes&lt;/a&gt; does a fantastic job customizing MIUIAndroid for OG DROID, just like &lt;a target="_blank" href="http://www.peteralfonso.com/"&gt;Peter Alfonso&lt;/a&gt; does with Android/AOSP). When I decided I didn't like it, I used ROM Manager (which comes bundled with MIUIAndroid) to restore my old setup. That was my hour-ish with MIUI.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Links:&lt;/em&gt;&lt;ul&gt;&lt;li&gt;MIUI Android (from inside UK): &lt;a target="_blank" href="http://miuiandroid.com/"&gt;http://miuiandroid.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MIUI.us (alternate English-translation, from inside the US): &lt;a target="_blank" href="http://miui.us/"&gt;http://miui.us/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MIUI (English version of MIUI's official site): &lt;a target="_blank" href="http://en.miui.com/"&gt;http://en.miui.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;@TreyMotes Twitter: &lt;a target="_blank" href="http://www.twitter.com/TreyMotes"&gt;http://www.twitter.com/TreyMotes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MIUIAndroid Twitter: &lt;a target="_blank" href="http://www.twitter.com/MIUIAndroid"&gt;http://www.twitter.com/MIUIAndroid&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-3910275312435893025?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W9Wz8kotCjggkDublv1TOdaIrsA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W9Wz8kotCjggkDublv1TOdaIrsA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W9Wz8kotCjggkDublv1TOdaIrsA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W9Wz8kotCjggkDublv1TOdaIrsA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/DsUhdyi4vVY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/3910275312435893025/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=3910275312435893025" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/3910275312435893025?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/3910275312435893025?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/DsUhdyi4vVY/hour-with-miui-android-on-my-og-droid.html" title="An hour with MIUI Android on my OG DROID" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/08/hour-with-miui-android-on-my-og-droid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUNR3o9cCp7ImA9WhdSEE0.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-5637775624603011341</id><published>2011-07-18T11:12:00.005-04:00</published><updated>2011-07-18T11:34:56.468-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T11:34:56.468-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DIY" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="hacks" /><category scheme="http://www.blogger.com/atom/ns#" term="tips" /><category scheme="http://www.blogger.com/atom/ns#" term="Ikea" /><category scheme="http://www.blogger.com/atom/ns#" term="fixes" /><category scheme="http://www.blogger.com/atom/ns#" term="hardware" /><category scheme="http://www.blogger.com/atom/ns#" term="furniture" /><category scheme="http://www.blogger.com/atom/ns#" term="home improvement" /><title>How we fixed our Ikea wardrobe after the bar fell</title><content type="html">Our apartment has no bedroom closet space. There are two coat closets and a linen closet all clustered in the same wall between the living room and office and near the bathroom, but there is no storage in the bedroom. So a while back, we bought three large &lt;a target="_blank" href="http://www.ikea.com/"&gt;Ikea&lt;/a&gt; wardrobes that fit nicely next to each other down one of the walls of our bedroom. This particular wardrobe model was one of Ikea's budget options (i.e., it was not one of their crazy customizable types; it basically came as a complete unit). The closet bar (shown here without the shelf that is usually above it) should attach to the closet using a plastic insert like this (click on &lt;a target="_blank" href="http://picasaweb.google.com/lh/photo/gIrSF99O9XjdzcjAc3WmxQ?feat=directlink"&gt;the image&lt;/a&gt; for a larger and clearer version):&lt;div align="center"&gt;&lt;a target="_blank" href="http://picasaweb.google.com/lh/photo/gIrSF99O9XjdzcjAc3WmxQ?feat=directlink"&gt;&lt;img src="http://lh3.googleusercontent.com/-5OzYTaxatPk/TiMbW5hILoI/AAAAAAAAf4M/iXiXDZRzbwg/s144/11%252520-%2525204.jpg" width="250"&gt;&lt;/a&gt;&lt;/div&gt;As you may be able to see, there is a large vertical scrape a few inches beneath the plastic insert. That scrape came into our lives when the plastic insert on the left side of the bar failed ("wardrobe malfunction"), which sent the awkward-shaped metal closet bar (and the clothes hanging on it) into the floor of the wardrobe. As you can see, there is a cantilever-type support jutting out from the plastic insert that sheared off (pretty clean cut, actually):&lt;div align="center"&gt;&lt;a target="_blank" href="http://picasaweb.google.com/lh/photo/fYgKFrk4tQ8OzCedWS2J9A?feat=directlink"&gt;&lt;img src="http://lh3.googleusercontent.com/-pssPUXjbHXw/TiMbWiKRFpI/AAAAAAAAf4I/lr2n5RmhZhQ/s144/11%252520-%2525203.jpg" width="250"&gt;&lt;/a&gt;&lt;/div&gt;Ikea often keeps spare parts like this on hand that you can grab for free in bins from the store, but we didn't want to drive all the way to West Chester to look for them, and we were pretty sure these wardrobes were discontinued and these (likely specialized) parts were not available. So we went to &lt;a target="_blank" href="http://www.meijer.com/"&gt;Meijer&lt;/a&gt; instead (it was too late to go to a hardware store to find real closet accessories) to look for a way to hack together a good pre-fabricated furniture fix.&lt;br /&gt;
&lt;br /&gt;
Just before we were about to give up, we found these corner braces that looked like the perfect size and shape for our problem. They were about $2.50 for a pack of 2 (in case any of the other supports ever break later).&lt;div align="center"&gt;&lt;a target="_blank" href="http://picasaweb.google.com/lh/photo/8bZ9YVyRqCLU9tZPJpfQNw?feat=directlink"&gt;&lt;img src="https://lh6.googleusercontent.com/-qrewZ8BQd3k/TiMbWig8ArI/AAAAAAAAf4E/oTDwxgv9CxQ/s144/11%252520-%2525202.jpg" width="250"&gt;&lt;/a&gt;&lt;/div&gt;So here's how we used a corner brace to support the closet bar:&lt;div align="center"&gt;&lt;a target="_blank" href="http://picasaweb.google.com/lh/photo/GbW-EQy0p7CwR3OFL18kTA?feat=directlink"&gt;&lt;img src="http://lh6.googleusercontent.com/-at47SKMpMmU/TiMbWpCg31I/AAAAAAAAf4A/XmyjO2oKcyE/s144/11%252520-%2525201.jpg" width="250"&gt;&lt;/a&gt;&lt;/div&gt;As a bonus, the screws that came with the corner brace were short enough to not protrude out the side of the wardrobe. They were self-tapping screws, but I didn't trust them in the Ikea-style formica-covered particle board, and so I pre-drilled some small holes first, and that worked pretty well. We used a &lt;strong&gt;zip tie&lt;/strong&gt; to fix the bar vertically; however, we also experimented with &lt;a target="_blank"  href="http://www.amazon.com/Binder-Ring-1-50-box/dp/B000J3GCVO?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;binder rings&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=B000J3GCVO" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt; that we had stowed away in our office supplies. The binder rings actually provided a much tighter fit so that the bar didn't wiggle at all; however, as strange as it sounds, the zip ties were a little more discrete as they hugged the corner brace snugly.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;[ I should note that I took off the shelf to get easier access to the closet. That meant pulling out the three small brads/nails attaching the masonite-ish backing. Because the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Second_moment_of_area"&gt;area moment of inertia&lt;/a&gt; of that backing is very high, I think it provides significant support to the closet structure as a whole. So afterward, I pulled the closet out and put the nails back in a different spot. I probably could have left the shelf in through the whole fix. ]&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
I almost like the look of our fix better than the Ikea insert (which looks like it has a tenuous hold on the bar anyway).&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;[ You can also find this post at &lt;a target="_blank" href="http://peripateticpair.blogspot.com/2011/07/how-we-fixed-our-ikea-wardrobe-after.html"&gt;Jessie and Ted's blog&lt;/a&gt;. ]&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-5637775624603011341?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hsWRIhFT5DP07oXdEsy-vB3HtEg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hsWRIhFT5DP07oXdEsy-vB3HtEg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hsWRIhFT5DP07oXdEsy-vB3HtEg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hsWRIhFT5DP07oXdEsy-vB3HtEg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/HMDBuJuOxHw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/5637775624603011341/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=5637775624603011341" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/5637775624603011341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/5637775624603011341?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/HMDBuJuOxHw/how-we-fixed-our-ikea-wardrobe-after.html" title="How we fixed our Ikea wardrobe after the bar fell" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.googleusercontent.com/-5OzYTaxatPk/TiMbW5hILoI/AAAAAAAAf4M/iXiXDZRzbwg/s72-c/11%252520-%2525204.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/07/how-we-fixed-our-ikea-wardrobe-after.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQBQ3c4cSp7ImA9WhdSEEQ.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-8435774190696453803</id><published>2011-07-08T18:30:00.002-04:00</published><updated>2011-07-19T12:52:32.939-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-19T12:52:32.939-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social networking" /><category scheme="http://www.blogger.com/atom/ns#" term="Google+" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Plus" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="social networks" /><title>Well, I have a Google+ account now...</title><content type="html">&lt;blockquote&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; Yes, it does appear like I have &lt;strong&gt;invitations to give out&lt;/strong&gt;. Yes, if you e-mail me, I'll do my best to send you one.&lt;/blockquote&gt;You can my Google+ profile at:&lt;br /&gt;
&lt;br /&gt;
&lt;a target="_blank" href="http://profiles.google.com/ted.pavlic"&gt;http://profiles.google.com/ted.pavlic&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Overall, initial reactions are good. There are some bugs to fix and some things to clean up, but I think I'd "+1" it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-8435774190696453803?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KSWnoZznp3moej4Gxj4yDVgksGI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KSWnoZznp3moej4Gxj4yDVgksGI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KSWnoZznp3moej4Gxj4yDVgksGI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KSWnoZznp3moej4Gxj4yDVgksGI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/XxCtmj9qMyc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/8435774190696453803/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=8435774190696453803" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/8435774190696453803?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/8435774190696453803?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/XxCtmj9qMyc/well-i-have-google-account-now.html" title="Well, I have a Google+ account now..." /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/07/well-i-have-google-account-now.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEER3k5eyp7ImA9WhdTEEo.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-928997627436282095</id><published>2011-07-07T17:36:00.000-04:00</published><updated>2011-07-07T17:36:46.723-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-07T17:36:46.723-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="digital signal processing" /><category scheme="http://www.blogger.com/atom/ns#" term="transfer functions" /><category scheme="http://www.blogger.com/atom/ns#" term="signal processing" /><category scheme="http://www.blogger.com/atom/ns#" term="MATLAB" /><category scheme="http://www.blogger.com/atom/ns#" term="linear systems" /><category scheme="http://www.blogger.com/atom/ns#" term="filters" /><category scheme="http://www.blogger.com/atom/ns#" term="Hilbert transform" /><category scheme="http://www.blogger.com/atom/ns#" term="mathematics" /><category scheme="http://www.blogger.com/atom/ns#" term="minimum phase" /><title>Someone asked me about Hilbert transforming minimum-phase magnitude responses today...</title><content type="html">Someone sent me this e-mail today:&lt;blockquote&gt;Thank you for contributing to the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Minimum_phase"&gt;Wikipedia article about minimum phase&lt;/a&gt;. I gather from &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Minimum_phase#Relationship_of_magnitude_response_to_phase_response"&gt;the article&lt;/a&gt; that I should be able to use the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Hilbert_transform"&gt;Hilbert transform&lt;/a&gt; to compute a &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Phase_response"&gt;phase response&lt;/a&gt; from the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Frequency_response"&gt;amplitude response&lt;/a&gt; of a minimum phase system. Yet when I compute (in &lt;a target="_blank" href="http://en.wikipedia.org/wiki/MATLAB"&gt;Matlab&lt;/a&gt;) the Hilbert transform of the log of the amplitude response of a &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Butterworth_filter"&gt;Butterworth filter&lt;/a&gt; (sampled at uniform frequency intervals), the result is not real and does not resemble the phase response of a Butterworth at all.  I expected that it would equal the phase response of a Butterworth since a Butterworth is minimum phase. What have I missed? Thank you.&lt;/blockquote&gt;So I responded in an e-mail, and I've pasted that e-mail here.&lt;blockquote&gt;Assuming that you are using a high-order filter, are you unwrapping your phase? See the MATLAB function "&lt;a target="_blank" href="http://www.mathworks.com/help/techdoc/ref/unwrap.html"&gt;&lt;tt&gt;unwrap&lt;/tt&gt;&lt;/a&gt;" for details. Another easy fix is to ensure you're using the NATURAL log to extract the exponent of the magnitude as an exponential. In MATLAB, "&lt;a target="_blank" href="http://www.mathworks.com/help/techdoc/ref/log.html"&gt;&lt;tt&gt;log&lt;/tt&gt;&lt;/a&gt;" is &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Natural_logarithm"&gt;natural log&lt;/a&gt; and "&lt;a target="_blank" href="http://www.mathworks.com/help/techdoc/ref/log10.html"&gt;&lt;tt&gt;log10&lt;/tt&gt;&lt;/a&gt;" is &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Common_logarithm"&gt;common log&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If you still have the problem, make sure your filter is truly minimum&lt;br /&gt;
phase. In particular, the transfer function and its inverse must be&lt;br /&gt;
stable and CAUSAL. The causality condition is redundant so long as your&lt;br /&gt;
notion of stability includes poles induced from unmatched zeros. For&lt;br /&gt;
example, the discrete-time filter:&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;z + 0.5&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;is not causal and thus has a pole at infinity. So it does not meet the criteria for being minimum phase. On the other hand, the filter:&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;(z+0.5)/z&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;is minimum phase. So let's take its impulse response. In MATLAB, you could try:&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;h = impulse(tf( [1,0.5], [1,0], 0.1));&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;or...&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;z = tf('z');
h=impulse( (z+0.5)/z );&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;or just read it from the numerator and add as many zeros as you'd like...&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;h=[1,0.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;Then use the FFT:&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;H=fft(h);&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;Then use the discrete-time Hilbert transform of the NATURAL log:&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;X=hilbert(log(abs(H)));&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;Then, to compare, use "&lt;tt&gt;plot&lt;/tt&gt;":&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;plot( 1:length(h), -imag(X)*180/pi, 'o', ...
      1:length(h), angle(H)*180/pi, 'x' )&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;I think you'll find that each x is circled.&lt;br /&gt;
&lt;br /&gt;
To summarize:&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;h=[1,0.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
H=fft(h);
X=hilbert(log(abs(H)));
plot( 1:length(h), -imag(X)*180/pi, 'o', ...
      1:length(h), angle(H)*180/pi, 'x' )&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;Here's another interesting case that won't match as well because of the discrete-time approximation.&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;z = tf('z',1);
H = (z + 0.5)/(z);
[mag,phase,w]=bode(H);
mag=mag(:); phase=phase(:); w=w(:);
X=hilbert(log(mag));
plot(w/pi,-imag(X)*180/pi,w/pi,phase)&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;As you can see, these two match pretty well in the interior region. You can make some interesting observations about the edges where they don't match well.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-928997627436282095?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/N8PbVuJYAfU0q-tfE5L6ABTza1c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N8PbVuJYAfU0q-tfE5L6ABTza1c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/N8PbVuJYAfU0q-tfE5L6ABTza1c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N8PbVuJYAfU0q-tfE5L6ABTza1c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/n1ARJjbg5uY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/928997627436282095/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=928997627436282095" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/928997627436282095?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/928997627436282095?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/n1ARJjbg5uY/someone-asked-me-about-hilbert.html" title="Someone asked me about Hilbert transforming minimum-phase magnitude responses today..." /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/07/someone-asked-me-about-hilbert.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIFSXk5eCp7ImA9WhZbFUQ.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-919856054462345709</id><published>2011-06-20T14:01:00.001-04:00</published><updated>2011-06-20T14:11:58.720-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-20T14:11:58.720-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MIcrosoft Research" /><category scheme="http://www.blogger.com/atom/ns#" term="verification" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="spec sharp" /><category scheme="http://www.blogger.com/atom/ns#" term="specsharp" /><category scheme="http://www.blogger.com/atom/ns#" term="C sharp" /><category scheme="http://www.blogger.com/atom/ns#" term="Csharp" /><category scheme="http://www.blogger.com/atom/ns#" term="Spec#" /><category scheme="http://www.blogger.com/atom/ns#" term="research" /><category scheme="http://www.blogger.com/atom/ns#" term="music" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="C-clef" /><title>Spec# is a terrible name. C-clef would have been better.</title><content type="html">&lt;a target="_blank" href="http://research.microsoft.com/en-us/groups/rise/default.aspx"&gt;Microsoft Research's RiSE&lt;/a&gt; has &lt;a target="_blank" href="http://lambda-the-ultimate.org/node/4285"&gt;another pre-print out on Spec#&lt;/a&gt;. The Spec# specification language is &lt;a target="_blank" href="http://lambda-the-ultimate.org/node/686"&gt;old news&lt;/a&gt; by now, and so it's unfortunate that the name "Spec#" has not been changed because it means it probably is going to stick. Unlike the name "C#", "Spec#" is terribly unimaginative. It's like naming your first child "Hermione" and then naming your second child "Two".&lt;br /&gt;
&lt;br /&gt;
Wouldn't it have made more sense to continue the musical analogy? For example, a &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Clef"&gt;&lt;em&gt;C-clef&lt;/em&gt;&lt;/a&gt; is a conventional symbol from music theory that is used to specify the desired meaning of the lines that follow. Thus, it makes a lot of sense to use it as a name for specification language for C#, right?&lt;br /&gt;
&lt;br /&gt;
Instead, we get Spec# (i.e., "specsharp"), which actually seems quite dull...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-919856054462345709?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rmMju_Jn3Mi67eebeigU33ODkuo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rmMju_Jn3Mi67eebeigU33ODkuo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rmMju_Jn3Mi67eebeigU33ODkuo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rmMju_Jn3Mi67eebeigU33ODkuo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/5q5or2bY1cs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/919856054462345709/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=919856054462345709" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/919856054462345709?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/919856054462345709?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/5q5or2bY1cs/spec-is-terrible-name-c-clef-would-have.html" title="Spec# is a terrible name. C-clef would have been better." /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/06/spec-is-terrible-name-c-clef-would-have.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMNQHs6eCp7ImA9WhdXFk8.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-3558959032638352571</id><published>2011-06-14T12:48:00.004-04:00</published><updated>2011-08-29T10:18:11.510-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T10:18:11.510-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NYTimes" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple Mail" /><category scheme="http://www.blogger.com/atom/ns#" term="FutureMe" /><category scheme="http://www.blogger.com/atom/ns#" term="iTickleMe" /><category scheme="http://www.blogger.com/atom/ns#" term="Outlook" /><category scheme="http://www.blogger.com/atom/ns#" term="thunderbird" /><category scheme="http://www.blogger.com/atom/ns#" term="calendar" /><category scheme="http://www.blogger.com/atom/ns#" term="e-mail" /><category scheme="http://www.blogger.com/atom/ns#" term="lifehacks" /><category scheme="http://www.blogger.com/atom/ns#" term="Gadgetwise" /><category scheme="http://www.blogger.com/atom/ns#" term="Boomerang" /><category scheme="http://www.blogger.com/atom/ns#" term="productivity" /><category scheme="http://www.blogger.com/atom/ns#" term="GMail" /><category scheme="http://www.blogger.com/atom/ns#" term="Getting Things Done" /><category scheme="http://www.blogger.com/atom/ns#" term="GTD" /><category scheme="http://www.blogger.com/atom/ns#" term="reminders" /><category scheme="http://www.blogger.com/atom/ns#" term="LetterMeLater" /><category scheme="http://www.blogger.com/atom/ns#" term="Tickler File" /><category scheme="http://www.blogger.com/atom/ns#" term="3mindme" /><title>Delayed reminder e-mails: iTickleMe, LetterMeLater, FutureMe, 3mindme, and Outlook</title><content type="html">&lt;blockquote&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; On August 27, 2011, &lt;a target="_blank" href="http://3mindme.com/"&gt;3mindme&lt;/a&gt; was shut down. See &lt;a target="_blank" href="http://phaseportrait.blogspot.com/2011/08/3mindme-is-shutting-down-old-owner.html"&gt;a recent post&lt;/a&gt; for more information. The old owner of 3mindme recommends &lt;a target="_blank" href="http://www.NudgeMail.com/"&gt;NudgeMail&lt;/a&gt; as a substitute.&lt;br /&gt;
&lt;hr&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; It looks like there has been an &lt;a target="_blank" href="http://gadgetwise.blogs.nytimes.com/2011/06/14/dear-gmail-labs-part-ii-the-rise-of-boomerang/"&gt;update to the original Gadgetwise post&lt;/a&gt;. Unfortunately, because it seems like &lt;a target="_blank" href="http://www.npr.org/people/2101272/laura-sydell"&gt;all technology writers are born to disappoint&lt;/a&gt;, the author picked a bone-headed client-side solution like &lt;a target="_blank" href="http://www.boomeranggmail.com/"&gt;the Boomerang plugin for Firefox/Chrome&lt;/a&gt; despite so many people pointing out existing server-side solutions. In fact, a bunch of people posted lots of johnny-come-lately server-side applications like &lt;a target="_blank" href="http://goodtodo.com/"&gt;Good Todo&lt;/a&gt;, &lt;a target="_blank" href="http://www.followup.cc/"&gt;FollowUp&lt;/a&gt;, &lt;a target="_blank" href="http://www.followupthen.com/"&gt;FollowUpThen&lt;/a&gt;, and &lt;a target="_blank" href="http://www.nudgemail.com/"&gt;NudgeMail&lt;/a&gt;. Why you would favor any of these over something like &lt;a target="_blank" href="http://3mindme.com/"&gt;3mindme&lt;/a&gt; baffles me, but I guess it's nice to have options. You certainly shouldn't ever need to use Boomerang though!&lt;/blockquote&gt;&lt;a target="_blank" href="http://gadgetwise.blogs.nytimes.com/2011/06/14/dear-gmail-labs/"&gt;This recent &lt;em&gt;NYTimes: Gadgetwise&lt;/em&gt; post&lt;/a&gt; got me thinking about an old functionality I built into my mail server (using procmail and cronjobs) back before I switched over to &lt;a target="_blank" href="http://mail.google.com/"&gt;Gmail&lt;/a&gt;. Basically, I implemented exactly this "delayed reminder" feature in a sort of &lt;a target="_blank" href="http://www.davidco.com/about-gtd"&gt;GTD&lt;/a&gt; &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Tickler_file"&gt;"tickler file"&lt;/a&gt; (&lt;a target="_blank" href="http://wiki.43folders.com/index.php/Tickler_file"&gt;43folders&lt;/a&gt;) way. I think you could already do something similar in GMail, but you'd still come a little short. Let me explain how my old IMAP-based version worked.&lt;br /&gt;
&lt;br /&gt;
I would send myself messages with a subject like:&lt;br /&gt;
&lt;blockquote&gt;tickle10: Ask Joe to return book he borrowed&lt;/blockquote&gt;That is, "on day 10 of this month, remind me to 'Ask Joe to return...'". When my mail server received messages matching that format, it would file them into "tickler files" that were just IMAP folders for each day; each folder had a name like "TICKLE.1" or "TICKLE.25". I then had a script that would run nightly and would move contents of "TICKLE.today_number" into my inbox and mark them unread.&lt;br /&gt;
&lt;br /&gt;
Consequently, this acted exactly like a tickler file with folders. I "drop" a message into the folder for a day later in this month or next month, and each day I empty the folder in the front and move the empty folder to the back. I just had a script do it for me.&lt;br /&gt;
&lt;br /&gt;
You could have GMail do ALMOST all of this for you. That is, you could have it automatically file messages based on subject into tickler folders. The problem would be to automate moving the daily folders back into your inbox. Perhaps you could just manually check today's folder each day. That would be a step in the right direction.&lt;br /&gt;
&lt;br /&gt;
But then I realized that if the NYTimes guy thought of it now, and I thought of it many many many years ago, then maybe other people have thought of it too. So I did a Google search, and it turns out other solutions do now exist. Here's one I just found:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;iTickleMe: &lt;a target="_blank" href="http://www.itickleme.com/"&gt;http://www.itickleme.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
iTickleMe lets you schedule e-mail reminders by sending the service e-mails at addresses like INTERVAL@itickleme.com.&lt;/li&gt;
&lt;/ul&gt;Of course, there is more than one way to skin an cat. Alternatives to iTickleMe include:&lt;ul&gt;&lt;li&gt;LetterMeLater: &lt;a target="_blank" href="http://www.lettermelater.com/"&gt;http://www.lettermelater.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FutureMe: &lt;a target="_blank" href="http://www.futureme.org/"&gt;http://www.futureme.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;But then I found a really simple and elegant non-commercial alternative:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;3mindme: &lt;a target="_blank" href="http://3mindme.com/"&gt;http://3mindme.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
which you can find a little more information about at &lt;a target="_blank" href="http://lifemuncher.blogspot.com/"&gt;Lifemuncher&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;a target="_blank" href="http://lifemuncher.blogspot.com/2007/12/3mindme-reminder-service.html"&gt;http://lifemuncher.blogspot.com/2007/12/3mindme-reminder-service.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
However, I really recommend you just check out &lt;a target="_blank" href="http://3mindme.com/"&gt;3mindme.com&lt;/a&gt; directly; it's self explanatory. I just hope that 3mindme doesn't go under because it's not commercially supported and the author might eventually lose interest.&lt;/li&gt;
&lt;/ul&gt;Finally, apparently Outlook has the ability to schedule e-mails for later delivery. This won't be an option for, say, GMail users who access GMail through the web... or Thunderbird users in general. Does Apple Mail have this feature? Well, in the meanwhile, the on-line reflector services should work pretty well... and, so long as you can count on the server being up, you don't have to worry about your mail client at home crashing and not sending those delayed e-mails while you are away (plus, do you really need to keep your computer on just as a reminder server?).&lt;br /&gt;
&lt;br /&gt;
So go check out &lt;a target="_blank" href="http://3mindme.com/"&gt;3mindme&lt;/a&gt;. I haven't tried it yet. I hope it still works. Sounds great!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-3558959032638352571?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/59u-nSce0jnYg4nScMzmI9_ZoR0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/59u-nSce0jnYg4nScMzmI9_ZoR0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/59u-nSce0jnYg4nScMzmI9_ZoR0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/59u-nSce0jnYg4nScMzmI9_ZoR0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/8GxZ1KleAHY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/3558959032638352571/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=3558959032638352571" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/3558959032638352571?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/3558959032638352571?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/8GxZ1KleAHY/delayed-reminder-e-mails-itickleme.html" title="Delayed reminder e-mails: iTickleMe, LetterMeLater, FutureMe, 3mindme, and Outlook" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/06/delayed-reminder-e-mails-itickleme.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4CQXw5eyp7ImA9WhZUGUU.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-6513075185234669599</id><published>2011-06-13T12:51:00.005-04:00</published><updated>2011-06-13T13:42:40.223-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-13T13:42:40.223-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="recommendations" /><category scheme="http://www.blogger.com/atom/ns#" term="reviews" /><category scheme="http://www.blogger.com/atom/ns#" term="latex" /><category scheme="http://www.blogger.com/atom/ns#" term="TeX/LaTeX" /><category scheme="http://www.blogger.com/atom/ns#" term="reference" /><category scheme="http://www.blogger.com/atom/ns#" term="books" /><category scheme="http://www.blogger.com/atom/ns#" term="advice" /><category scheme="http://www.blogger.com/atom/ns#" term="tex" /><title>Someone asked me for some references on LaTeX today...</title><content type="html">I got an e-mail today asking for some recommended references on &lt;a target="_blank" href="http://en.wikipedia.org/wiki/LaTeX"&gt;LaTeX&lt;/a&gt;. Here is my response, which is a marked-up paste of an e-mail.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;[ This post can also be found on &lt;a target="_blank" href="http://www.tedpavlic.com/post_latex_references.php"&gt;my web page&lt;/a&gt;. ]&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;The reference that I keep handy is:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;a imageanchor="1" target="_blank"  href="http://www.amazon.com/LaTeX-Companion-Techniques-Computer-Typesetting/dp/0201362996?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=bil&amp;camp=213689&amp;creative=392969"&gt;&lt;img alt="The LaTeX Companion (Tools and Techniques for Computer Typesetting)" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;ServiceVersion=20070822&amp;ID=AsinImage&amp;WS=1&amp;Format=_SL160_&amp;ASIN=0201362996&amp;tag=phaseportrait-20" /&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=bil&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0201362996" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a target="_blank"  href="http://www.amazon.com/LaTeX-Companion-Techniques-Computer-Typesetting/dp/0201362996?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;&lt;em&gt;The LaTeX Companion&lt;/em&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0201362996" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;, Second Edition by Mittelbach and Goosens&lt;/div&gt;&lt;br /&gt;
That reference, often called TLC2, is a standard one. You really can't&lt;br /&gt;
go wrong with it. It's dense, includes lots of examples, and is pretty&lt;br /&gt;
easy to use. One other book that came in handy when I started drawing&lt;br /&gt;
graphics in LaTeX is:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;a imageanchor="1" target="_blank"  href="http://www.amazon.com/LaTeX-Graphics-Companion-Michel-Goossens/dp/0321508920?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=bil&amp;camp=213689&amp;creative=392969"&gt;&lt;img alt="LaTeX Graphics Companion, The (2nd Edition)" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;ServiceVersion=20070822&amp;ID=AsinImage&amp;WS=1&amp;Format=_SL160_&amp;ASIN=0321508920&amp;tag=phaseportrait-20" /&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=bil&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0321508920" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a target="_blank"  href="http://www.amazon.com/LaTeX-Graphics-Companion-Michel-Goossens/dp/0321508920?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;&lt;em&gt;The LaTeX Graphics Companion&lt;/em&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0321508920" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt; by Goosens, Rahtz, and Mittelbach&lt;/div&gt;&lt;br /&gt;
That introduced me to things like picture environments and PSTricks. I&lt;br /&gt;
use PSTricks a lot now, and the book really is only meant to be an&lt;br /&gt;
introduction (albeit a nice one) to PSTricks as well as other competing&lt;br /&gt;
(and complementary) tools. Now I typically use the PSTricks&lt;br /&gt;
documentation on the &lt;a target="_blank" href="http://www.tug.org/PSTricks/"&gt;PSTricks home page at TUG&lt;/a&gt; (you can &lt;a target="_blank" href="http://www.google.com/search?q=PSTricks"&gt;google for&lt;br /&gt;
"PStricks"&lt;/a&gt; to find the web page).&lt;br /&gt;
&lt;br /&gt;
A nice small reference to LaTeX is:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;a imageanchor="1" target="_blank"  href="http://www.amazon.com/LaTeX-Document-Preparation-System-2nd/dp/0201529831?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=bil&amp;camp=213689&amp;creative=392969"&gt;&lt;img alt="LaTeX: A Document Preparation System (2nd Edition)" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;ServiceVersion=20070822&amp;ID=AsinImage&amp;WS=1&amp;Format=_SL160_&amp;ASIN=0201529831&amp;tag=phaseportrait-20" /&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=bil&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0201529831" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a target="_blank"  href="http://www.amazon.com/LaTeX-Document-Preparation-System-2nd/dp/0201529831?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;&lt;em&gt;LaTeX: A Document Preparation System&lt;/em&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0201529831" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt; by Lamport&lt;/div&gt;&lt;br /&gt;
A very complete but also intimidating reference for TeX is:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;a imageanchor="1" target="_blank"  href="http://www.amazon.com/Computers-Typesetting-B-TeX-Program/dp/0201134373?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=bil&amp;camp=213689&amp;creative=392969"&gt;&lt;img alt="Computers &amp;amp; Typesetting, Volume B: TeX: The Program" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;ServiceVersion=20070822&amp;ID=AsinImage&amp;WS=1&amp;Format=_SL160_&amp;ASIN=0201134373&amp;tag=phaseportrait-20" /&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=bil&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0201134373" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a target="_blank"  href="http://www.amazon.com/Computers-Typesetting-TeXbook-Donald-Knuth/dp/0201134470?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;&lt;em&gt;The TeXbook&lt;/em&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0201134470" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt; by Knuth&lt;/div&gt;&lt;br /&gt;
Three other notable and popular books on TeX (that are far less&lt;br /&gt;
intimidating) are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a target="_blank"  href="http://www.amazon.com/Tex-Impatient-Paul-W-Abrahams/dp/0201513757?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;&lt;em&gt;TeX for the Impatient&lt;/em&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0201513757" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt; by Abrahams, Berry, and Hargreaves&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank"  href="http://www.amazon.com/Beginners-Book-TEX-Raymond-Seroul/dp/0387975624?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;&lt;em&gt;A Beginner's Book of TeX&lt;/em&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0387975624" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt; by Seroul and Levy&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank"  href="http://www.amazon.com/TeX-Topic-TeXnicians-Victor-Eijkhout/dp/0201568829?ie=UTF8&amp;tag=phaseportrait-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;&lt;em&gt;TeX by Topic: A TeXnician's Reference&lt;/em&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phaseportrait-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0201568829" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt; by Eijkhout&lt;/li&gt;
&lt;/ul&gt;You can still get that last book in print from some sources that print&lt;br /&gt;
out of print books (&lt;a target="_blank" href="http://www.lulu.com/product/paperback/tex-by-topic/3109468"&gt;lulu.com&lt;/a&gt;), but I believe it has been released for free as a PDF as well. Yes, see:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;a target="_blank" href="http://eijkhout.net/texbytopic/texbytopic.html"&gt;http://eijkhout.net/texbytopic/texbytopic.html&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
for the free download link (released under GNU FDL).&lt;br /&gt;
&lt;br /&gt;
[ If you really don't want to get into the nitty gritty details, I would&lt;br /&gt;
recommend sticking to the LaTeX references. ]&lt;br /&gt;
&lt;br /&gt;
Otherwise, I've just done a lot of learning by doing. It helped to&lt;br /&gt;
learn about typesetting in general. A good reference for both things is&lt;br /&gt;
the documentation that comes with the memoir package:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Package: &lt;a target="_blank" href="http://ctan.org/pkg/memoir"&gt;http://ctan.org/pkg/memoir&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Documentation: &lt;a target="_blank" href="http://mirror.ctan.org/macros/latex/contrib/memoir/memman.pdf"&gt;http://mirror.ctan.org/macros/latex/contrib/memoir/memman.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;That documentation link (memman.pdf) is an excellent introduction to all&lt;br /&gt;
of the basic typographical elements of a book... and memoir is a nice&lt;br /&gt;
LaTeX package in general.&lt;br /&gt;
&lt;br /&gt;
After that, see comp.text.tex (available as a Google group) which is&lt;br /&gt;
known simply as "CTT" to insiders...&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;a target="_blank" href="http://groups.google.com/group/comp.text.tex/"&gt;http://groups.google.com/group/comp.text.tex/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
LaTeX and TeX experts watch that group and will answer your questions&lt;br /&gt;
about how to do things. You can also search the group for some previous&lt;br /&gt;
answers to similar questions. You can also see announcements of new&lt;br /&gt;
versions of packages that do cool things. It's a great resource.&lt;br /&gt;
&lt;br /&gt;
Finally, seeing the LaTeX 2e source (implemented in TeX) can be helpful&lt;br /&gt;
to understand exactly what goes on when you do things like a \section.&lt;br /&gt;
"source2e.pdf" is included with the LaTeX distribution. You can also&lt;br /&gt;
view it on-line here:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;a target="_blank" href="http://www.tug.org/texlive/devsrc/Master/texmf-dist/doc/latex/base/source2e.pdf"&gt;http://www.tug.org/texlive/devsrc/Master/texmf-dist/doc/latex/base/source2e.pdf&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
That includes all of the TeX implementations for the LaTeX macros and&lt;br /&gt;
gives you some idea of what goes on when you build a LaTeX document.&lt;br /&gt;
&lt;br /&gt;
Off the top of my head, that's all I can think of. Just go into things&lt;br /&gt;
thinking that LaTeX probably *CAN* do whatever you want it to (including&lt;br /&gt;
solving and plotting differential equations, which pure LaTeX (as&lt;br /&gt;
opposed to PDFLaTeX) can do). Like a sculptor, you just have to figure&lt;br /&gt;
out what to chip away to get it to do it. Keep trying things until&lt;br /&gt;
something is qualitatively similar to what you want, and then tune&lt;br /&gt;
(perhaps with the help of CTT) after that. Eventually you'll come up&lt;br /&gt;
with better and better implementations. If you come up with something&lt;br /&gt;
especially novel, post it on-line. In fact, contributing to CTAN&lt;br /&gt;
directly is usually recommended.&lt;br /&gt;
&lt;br /&gt;
Another thing that helps me is to remember that TeX is really is just a&lt;br /&gt;
giant machine that tokenizes, parses, and expands. It's not a&lt;br /&gt;
"programming language" so much as it is a text "filter" in that a single&lt;br /&gt;
run of LaTeX doesn't necessarily result in what you want. Keeping this&lt;br /&gt;
in the back of my head helps me anticipate the problems I might have&lt;br /&gt;
with certain approaches, and it further helps me figure out how to&lt;br /&gt;
approach LaTeX in order to succeed.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-6513075185234669599?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HxS3vQxjqWPL_7fBklDZzeB8JyI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HxS3vQxjqWPL_7fBklDZzeB8JyI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HxS3vQxjqWPL_7fBklDZzeB8JyI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HxS3vQxjqWPL_7fBklDZzeB8JyI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/8yLswxJgxN8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/6513075185234669599/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=6513075185234669599" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/6513075185234669599?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/6513075185234669599?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/8yLswxJgxN8/someone-asked-me-for-some-references-on.html" title="Someone asked me for some references on LaTeX today..." /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/06/someone-asked-me-for-some-references-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cDR3o_fSp7ImA9WhZXGEQ.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-8053671784621349892</id><published>2011-05-06T18:39:00.006-04:00</published><updated>2011-05-08T18:51:16.445-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-08T18:51:16.445-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="statistics" /><category scheme="http://www.blogger.com/atom/ns#" term="natural selection" /><category scheme="http://www.blogger.com/atom/ns#" term="George Price" /><category scheme="http://www.blogger.com/atom/ns#" term="biology" /><category scheme="http://www.blogger.com/atom/ns#" term="Price equation" /><category scheme="http://www.blogger.com/atom/ns#" term="mathematics" /><category scheme="http://www.blogger.com/atom/ns#" term="evolution" /><category scheme="http://www.blogger.com/atom/ns#" term="population genetics" /><category scheme="http://www.blogger.com/atom/ns#" term="evolutionary biology" /><category scheme="http://www.blogger.com/atom/ns#" term="altruism" /><category scheme="http://www.blogger.com/atom/ns#" term="theoretical biology" /><title>Someone asked me to explain the Price equation today...</title><content type="html">I got an e-mail today asking for help understanding the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Price_equation"&gt;Price equation&lt;/a&gt;, prompted partly by the recent &lt;a target="_blank" href="http://www.radiolab.org/2010/dec/14/equation-good/"&gt;RadioLab about George Price&lt;/a&gt;. The person who e-mailed me made it sound like he was OK with a long explanation, just so long as it explained the ugliness of the mathematics. Here is my response... (pardon the e-mail-esque formatting... I'm just pasting it rather than re-formatting it)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;[ This post can also be found &lt;a target="_blank" href="http://www.tedpavlic.com/post_price_equation.php"&gt;on my web page&lt;/a&gt;. ]&lt;/em&gt;&lt;br /&gt;&lt;blockquote&gt;        You shouldn't believe everything the media tells you about the complexity of the Price equation. I'm always frustrated when I hear someone on the radio read the Price equation out loud as a mathematical statement. It is not meant to be a mathematical statement. It is just a logical justification for something we all think should be true -- traits with higher differential fitness advantage should spread throughout a population (which is a critical aspect of natural selection). Price formalized that statement and then proved that the formalism is a tautology. That's all that's important.&lt;br /&gt;&lt;br /&gt;        It is a very simple idea, and it has almost nothing to do with statistics (because there are no random variables nor data in the price equation). The Price equation is a theoretical statement about the relationship between two sequential generations of a model population. You can use it to predict how the representation of a particular trait will change over time and eventually settle at some fixed distribution. However, again, numerical applications aside, it really is just a mathematical verification of something which makes intuitive sense.&lt;br /&gt;&lt;br /&gt;        Just to get comfortable with the notation, consider a trait like "height" across a population of n=100 individuals. Each individual might have a different height. Let's say that in our population, people basically have two different heights (perhaps due to sexual dimorphism). So we have two groups:&lt;br /&gt;&lt;br /&gt;z_1 = 5 feet&lt;br /&gt;z_2 = 6 feet&lt;br /&gt;&lt;br /&gt;We represent the number of people with each height using the variables:&lt;br /&gt;&lt;br /&gt;n_1 = 50&lt;br /&gt;n_2 = 50&lt;br /&gt;&lt;br /&gt;That is, there are an equal number of 5' tall people and 6' tall people from our 100 person population (note that n_1 + n_2 = n). Further, we find that both 5' tall and 6' tall people tend to have 1 offspring each. That is, they both have an equivalent "fitness" of 1:&lt;br /&gt;&lt;br /&gt;w_1 = 1&lt;br /&gt;w_2 = 1&lt;br /&gt;&lt;br /&gt;Where w_i is the number of offspring an individual of group i will contribute to the next generation. Let's say we also know that offspring from 5' tall people end up also being 5' tall, and offspring of 6' tall people also end up being 6' tall. Then we have:&lt;br /&gt;&lt;br /&gt;z'_1 = 5 feet&lt;br /&gt;z'_2 = 6 feet&lt;br /&gt;&lt;br /&gt;So the value of the trait (height) does not change from generation to generation.&lt;br /&gt;&lt;br /&gt;        Everything above is a parameter of the model. It represents what we know about "height" of individuals in this generation as well as the relationship between the height of an INDIVIDUAL and its offspring. What Price equation does is tell us about how the distribution of height in the POPULATION will change from this generation to the next. It might be helpful to think about Price equation as relating the AVERAGE value of a trait (e.g., height) in one generation to the AVERAGE value of the trait (e.g., height) in the next generation.&lt;br /&gt;&lt;br /&gt;        So now let's add-on the Price equation stuff. To account for the changes in the average value of the trait (height here), we have to worry about two effects -- "background bias [due to individuals]" (my term) and "differential fitness" (a quantity that drives natural selection):&lt;br /&gt;&lt;br /&gt;1.) Imagine that 5' tall parents produced 5' tall offspring (so z'_1=z_1=5 feet, as above), but 6' tall parents produced 10' tall offspring (so z'_2=10 feet in this hypothetical scenario). Then even without worrying about "differential fitness", we might expect an upward shift in AVERAGE height from the parent generation to the offspring generation. This "background bias [due to individuals]" is related to the "E(w_i \delta z_i)" term in the Price equation. It represents the change in a trait at the individual level. I'll give more info about the math later.&lt;br /&gt;&lt;br /&gt;2.) Now, instead, assume that z'_1=z_1 and z'_2=z_2 (so offspring height is the same as parent height) as above. It may still be the case that the average height in the offspring generation changes from the parent generation. This would occur if one height had a higher fitness than the other height. Here, we see that w_1=w_2=1. They both have the same fitness, and so we don't expect any differences IN REPRESENTATION from one generation to the other. Note that if w_1=w_2=5, then each individual would produce 5 offspring. Consequently, the TOTAL population would grow, but the DISTRIBUTION of height would stay the same. To make things more interesting, imagine that w_1=1 and w_2=2. Now each 5' tall person produces one 5' tall offspring, but a 6' tall person produces TWO 6' tall offspring. Consequently, the distribution of height would change from parent to offspring generation. The AVERAGE height would shift toward 6' tall people. The "cov(w_i, z_i)" term aggregates this change. It relates the "differential fitness" of one height to its success into growing the representation of that height in the next generation. I'll give more info about the math in a bit. [NOTE that the average fitness represents the average "background" rate of growth from population to population.]&lt;br /&gt;&lt;br /&gt;        To get ready for an explanation of the actual Price equation, let's get some terminology out of the way.&lt;br /&gt;&lt;br /&gt;        First, we define the "expectation" or "average" height in the current population with:&lt;br /&gt;&lt;br /&gt;E(z_i) = ( n_1 * z_1 + n_2 * z_2 + ... )/n&lt;br /&gt;&lt;br /&gt;That is, "E(z_i)" is the average value of the trait (height above). There are n_1 individuals with z_1 value of the trait, and so we have to multiply n_1 * z_1 to get the total contribution of that value of the trait. We do that for each group. We can do the same for other variables too. Here's average value of the trait in the NEXT (i.e., offspring) generation:&lt;br /&gt;&lt;br /&gt;E(z'_i) = ( n_1 * z'_1 + n_2 * z'_2 + ... )/n&lt;br /&gt;&lt;br /&gt;Here's average fitness:&lt;br /&gt;&lt;br /&gt;E(w_i) = ( n_1 * w_1 + n_2 * w_2 + ... )/n&lt;br /&gt;&lt;br /&gt;For simplicity, let's use symbols "z", "z'", and "w" as a shorthand for those three quantities above. That is:&lt;br /&gt;&lt;br /&gt;z = E(z_i)&lt;br /&gt;z' = E(z'_i)&lt;br /&gt;w = E(w_i)&lt;br /&gt;&lt;br /&gt;Now, "w" is the average fitness, which somehow represents the average rate of population growth. If every w_i is 1, then there will be 1-to-1 replacement of parent by offspring and there will be no population growth; likewise, the average "w" will be 1 reflecting no growth. However, if every w_i is 5, then w will also be 5 and the population will grow 5 fold every generation. &lt;br /&gt;&lt;br /&gt;        Penultimately, let's define "delta" which gives the difference in a variable from the this generation to the next. The difference in the average value of the trait is:&lt;br /&gt;&lt;br /&gt;delta(z) = E(z') - E(z)&lt;br /&gt;&lt;br /&gt;that difference may be due either to differential fitness (i.e., when w_i is not the same as w) or to intrinsic height changes at the individual level. Those intrinsic height changes at the individual level are:&lt;br /&gt;&lt;br /&gt;delta(z_1) = z'_1 - z_1&lt;br /&gt;delta(z_2) = z'_2 - z_2&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;        Finally, let's define this "covariance" formula. For each group i, let's say we have variables A_i and B_i (e.g., z_i and w_i). Let A be the average value of A_i across the population:&lt;br /&gt;&lt;br /&gt;A = ( n_1 A_1 + n_2 A_2 + ... )/n&lt;br /&gt;&lt;br /&gt;and B be the similarly defined average value of B_i across the population. Then we can define the covariance across the POPULATION in a similar way as we defined average. That is:&lt;br /&gt;&lt;br /&gt;cov( A_i, B_i )&lt;br /&gt;=&lt;br /&gt;E( (A_i-A)*(B_i-B) )&lt;br /&gt;=&lt;br /&gt;( n_1*(A_i - A)*(B_i - B) + n_2*(A_2 - A)*(B_2 - B) + ... )/n&lt;br /&gt;&lt;br /&gt;That is, cov(A_i,B_i) is the AVERAGE value of the product of the difference between each A_i and its average A and the difference between each B_i and its average B. We call this the "covariance" because:&lt;br /&gt;&lt;br /&gt;* If A_i doesn't vary across values of i, then A_i=A (no "variance" in A) so there is no "covariance"&lt;br /&gt;&lt;br /&gt;* If B_i doesn't vary, then there is similarly no covariance&lt;br /&gt;&lt;br /&gt;* If whenever A_i is far from its average B_i is close to its average, then there is LOW (i.e., near zero) covariance. That is, both A_i and B_i vary across the population, but they don't vary in the same way.&lt;br /&gt;&lt;br /&gt;* If whenever A_i is far from its average B_i is also far from its average, then there is HIGH (i.e., far from zero) covariance. Both A_i and B_i vary across the population, and they vary in the same way.&lt;br /&gt;&lt;br /&gt;Note that HIGH covariance could be very positive or very negative. In the positive case, A_i and B_i have a similar pattern across values of i. In the negative case, A_i and B_i have mirrored patterns across values of i (i.e., A_i is very positive when B_i is very negative and vice versa). LOW covariance is specifically when the cov() formula is near zero. That indicates that the pattern of A_i has little relationship to the pattern of B_i.&lt;br /&gt;&lt;br /&gt;        Now, let's look at the Price equation more closely. The left-hand side:&lt;br /&gt;&lt;br /&gt;w*delta(z)&lt;br /&gt;&lt;br /&gt;is roughly the amount of new trait ADDED to each "average" individual. So if the average trait shifts (e.g., from 5.5' tall to 6.5' tall, corresponding to a delta(z) of 1'), but the population has GROWN as well (i.e., "w&gt;1"), then amount of height "added" to the parent population to get the offspring population is more than just 1' per person. We scale the 1' per person by the "w" growth rate. Thus, "w delta(z)" captures effects of population growth (which naturally adds trait to a population) and mean change in representation. Note that if the AVERAGE trait did not change ("delta(z)=0") but the population did grow ("w&gt;1"), then we interpret "w delta(z)=0" to mean that even though the "total amount" of trait increased due to population increase, there was no marginal change in each individual's trait (i.e., individuals aren't getting taller; the population is just getting larger).&lt;br /&gt;&lt;br /&gt;        Now let's look at the right-hand side:&lt;br /&gt;&lt;br /&gt;cov(w_i, z_i) + E(w_i*delta(z_i))&lt;br /&gt;&lt;br /&gt;This implies that the amount of new trait added to each average individual is the combination of two components.&lt;br /&gt;&lt;br /&gt;        To parallel the discussion above, let's consider the E() part first:&lt;br /&gt;&lt;br /&gt;E(w_i * delta(z_i))&lt;br /&gt;&lt;br /&gt;we can expand this average to be:&lt;br /&gt;&lt;br /&gt;( n_1*w_1*(z'_1 - z_1) + n_2*w_2*(z'_2 - z_2) + ... )/n&lt;br /&gt;&lt;br /&gt;That is, delta(z_i) gives us the average change from AN INDIVIDUAL to A SINGLE OFFSPRING from z_i to z_i'. The w_i part ACCUMULATES those changes to EACH offspring. For example, if w_1=2, then group 1 parents have 2 offspring. So the total increase in the trait from group 1 is not delta(z_1) but is 2*delta(z_1). So you can see how this is the "BACKGROUND BIAS" representing the "w*delta(z)" component that we get even without worrying about differential fitness. This represents the change in "w*delta(z)" just due to INDIVIDUALS and POPULATION GROWTH.&lt;br /&gt;&lt;br /&gt;        Next, look at the covariance:&lt;br /&gt;&lt;br /&gt;cov(w_i, z_i)&lt;br /&gt;&lt;br /&gt;The covariance of w_i and z_i is a measure of how much the DIFFERENTIAL FITNESS contributes to added trait. Recall the formula for cov(w_i,z_i):&lt;br /&gt;&lt;br /&gt;E( (w_i-w)*(z_i-z) )&lt;br /&gt;&lt;br /&gt;which is equivalent to:&lt;br /&gt;&lt;br /&gt;( n_1*(w_1-w)*(z_1-z) + n_2*(w_2-w)*(z_2-z) + ... )/n&lt;br /&gt;&lt;br /&gt;Here, the quantity (w_i-w) is the "differential fitness" of group i, and the quantity (z_i-z) represents the location of the trait with respect to the average trait. So:&lt;br /&gt;&lt;br /&gt;* if the fitness varies in a similar way as the level of trait across values of i, then the average value of the trait will tend to increase from population to population&lt;br /&gt;&lt;br /&gt;* if the fitness varies in exactly the opposite way as the level of the trait across values of i, then the average value of the trait will tend to decrease from population to population&lt;br /&gt;&lt;br /&gt;* if the fitness varies differently than the level of the trait, then there will be little change in the average trait from population to population&lt;br /&gt;&lt;br /&gt;* if there is no variance in either fitness nor level of the trait, there will be little change in the average trait&lt;br /&gt;&lt;br /&gt;Put in other words:&lt;br /&gt;&lt;br /&gt;* if high differential fitness always comes with high values of the trait and low differential fitness always comes with low values of the trait, then there will be selection toward MORE trait&lt;br /&gt;&lt;br /&gt;* if high differential fitness always comes with to low values of the trait and low differential fitness always comes with high values of the trait, then there will be selection toward LESS trait&lt;br /&gt;&lt;br /&gt;* if differential fitness variation has no relationship to trait level variation, then selection will not change the average value of the trait&lt;br /&gt;&lt;br /&gt;* if there is no variation in the trait or no variation in the fitness, then selection will not change the average value of the trait&lt;br /&gt;&lt;br /&gt;Put in MORE words at a more individual group level:&lt;br /&gt;&lt;br /&gt;If a group i has both a high "differential fitness" (w_i-w) AND a high (z_i-z), then its FITNESS w_i is far above the average fitness w and its level of the trait z_i is far above the average value of the trait z. Either one of those alone would be enough to cause the "total amount" of trait to shift upward. On the other hand, if BOTH (w_i-w) and (z_i-z) are NEGATIVE, then the average population is already far away from this trait value AND has a much higher fitness. Consequently, the motion of the average trait will still be upward, but here upward is AWAY from the trait z_i (because z_i is under the average z). Finally, if (w_i-w) and (z_i-z) have opposite signs, the motion of the average trait z will be negative, which will either be heading toward z_i if w_i&amp;gt;w or away from z_i if w_i&amp;lt;w. The covariance formula takes the average value of (w_i-w)(z_i-z). That average represents the contribution to the amount of trait "added" to each individual due to DIFFERENTIAL FITNESS.&lt;br /&gt;&lt;br /&gt;        So there you have it. Assuming that "w" (average fitness -- which is a growth rate) is not zero (which just assumes that the population does not die out in one generation), then we can divide everything by "w" to get a less complicated (but equivalent) Price equation:&lt;br /&gt;&lt;br /&gt;delta(z) = ( cov(w_i,z_i) + E(w_i*delta(z_i)) )/w&lt;br /&gt;&lt;br /&gt;So now we have an equation representing the average change from parent to offspring population. If you expand all the formulas, you can verify that this statement is equivalent to:&lt;br /&gt;&lt;br /&gt;delta(z) = cov(w_i/w, z_i) + E( (w_i/w)*delta(z_i) )&lt;br /&gt;&lt;br /&gt;The quotient "w_i/w" is a "fractional fitness." It is a measure comparing the fitness of group i with the average fitness, where high differential fitness corresponds to w_i/w &gt; 1 and low differential fitness corresponds to w_i/w &lt; 1. So let's create a new variable&lt;br /&gt;&lt;br /&gt;v_i = w_i/w&lt;br /&gt;&lt;br /&gt;to be the fractional fitness. Then we can rewrite Price's equation to be:&lt;br /&gt;&lt;br /&gt;delta(z) = cov( v_i, z_i ) + E( v_i*delta(z_i) )&lt;br /&gt;&lt;br /&gt;This version gets rid of the need to worry about scaling for population growth. If you think about it, v_i is just a normalized version of w_i where you have "factored out" the background growth rate of the population. So now we basically have:&lt;br /&gt;&lt;br /&gt;AVERAGE_CHANGE&lt;br /&gt;=&lt;br /&gt;POPULATION_CHANGE_DUE_TO_DIFFERENTIAL_FITNESS&lt;br /&gt;+&lt;br /&gt;POPULATION_CHANGE_DUE_TO_INDIVIDUAL_CHANGES&lt;br /&gt;&lt;br /&gt;In other words:&lt;br /&gt;&lt;br /&gt;"the change in the average value of the trait is due to two parts:&lt;br /&gt;&lt;br /&gt;1. The differential fitness of each value represented in the population&lt;br /&gt;&lt;br /&gt;2. The individual change from parent trait level to offspring trait level"&lt;br /&gt;&lt;br /&gt;        So if you wish to go back to the "height" example...&lt;br /&gt;&lt;br /&gt;"The average height increases when:&lt;br /&gt;1. Natural selection favors increases in height&lt;br /&gt;OR&lt;br /&gt;2. Tall people have taller offspring"&lt;br /&gt;&lt;br /&gt;You could create other variations that work as well:&lt;br /&gt;&lt;br /&gt;"The average height DEcreases when:&lt;br /&gt;1. Natural selection favors DEcreases in height&lt;br /&gt;OR&lt;br /&gt;2. Short people have shorter offspring"&lt;br /&gt;&lt;br /&gt;====&lt;br /&gt;&lt;br /&gt;"The average height stays the same when:&lt;br /&gt;1. Natural selection has no preference for height&lt;br /&gt;AND&lt;br /&gt;2. Short people have short offspring and tall people have tall offspring"&lt;br /&gt;&lt;br /&gt;====&lt;br /&gt;&lt;br /&gt;"The average height DEcreases when:&lt;br /&gt;1. Natural selection has no preference for height&lt;br /&gt;AND&lt;br /&gt;2. Short people have short offspring and tall people have short offspring"&lt;br /&gt;&lt;br /&gt;====&lt;br /&gt;&lt;br /&gt;"The average height INcreases when:&lt;br /&gt;1. Natural selection has no preference for height&lt;br /&gt;AND&lt;br /&gt;2. Short people have tall offspring and tall people have tall offspring"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-8053671784621349892?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lBe6HXJwRac0OyXHpOUacQfaa-g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lBe6HXJwRac0OyXHpOUacQfaa-g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lBe6HXJwRac0OyXHpOUacQfaa-g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lBe6HXJwRac0OyXHpOUacQfaa-g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/TtkbvW10AaA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/8053671784621349892/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=8053671784621349892" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/8053671784621349892?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/8053671784621349892?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/TtkbvW10AaA/someone-asked-me-to-explain-price.html" title="Someone asked me to explain the Price equation today..." /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/05/someone-asked-me-to-explain-price.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4NQ3Y_fyp7ImA9Wx9aGEs.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-5242286310503581313</id><published>2011-03-11T11:48:00.003-05:00</published><updated>2011-03-11T12:03:12.847-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-11T12:03:12.847-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programing" /><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="education" /><category scheme="http://www.blogger.com/atom/ns#" term="jobs" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Mono" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer Science and Engineering" /><title>CS Education: C# in Mono / Java</title><content type="html">At least three times this year, I have found myself suggesting that perhaps it would be better to teach component-based software enginereing to young undergraduates using C# (via Mono, of course) as opposed to the more-restrictive Java. I feel a little like Nixon going to China when I say this...&lt;br /&gt;&lt;br /&gt;Having said that, it's probably better to use Java for production code. But I almost think that you need flexibility to experiment at the educational level, and Java has no flexibility (because it is so tightly crafted for security, portability, and stability). C++ has a lot of flexibility, but no one wants students learning C++ anymore (a comment on that in a bit). C# (under Mono, of course) has more flexibility than Java but less than C++. It's relevant, as it is relatively easy to move from C# development to Java develpoment (and there are plenty of companies (or at lest one gigantic one) that are looking for C# developers too). It has preprocessor directives (even though it has no preprocessor), which gives it a customizable presentation for the classroom environment. So it feels like it would be easier to start with C# and then "graduate" to Java (and go to graduate school for Lisp? I dunno. And where does Python fit in? Maybe it takes the place of Logo in 4th grade).&lt;br /&gt;&lt;br /&gt;Regarding the note above about no one wanting students to learn C++ anymore, it is interesting that software interviewers are typically of the age and rank where most of their experience is in C or C++. I was at an interview recently where the interviewer asked questions contrasting addressing individual bytes of a 4-byte unsigned integer using pointers or bitmasks; such a question does not belong in any discussion of Java. Moreover, I heard someone in a nearby cubicle on a phone interview being asked about static variables in C and C++ programs. The graduate student was more familiar with "static" in the context of Java, and so I think he worked htings out sufficiently well, but most students have never heard of this term (likewise, they don't even think to look up "persistent" in their MATLAB documentation). So it seems unfair that undergraduates are being switched over to Java... and will be asked about pointers in some of their first technical interviews. Oh well...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-5242286310503581313?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z8ihWtFuNA4QrxQDV6daaPdWJbM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z8ihWtFuNA4QrxQDV6daaPdWJbM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z8ihWtFuNA4QrxQDV6daaPdWJbM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z8ihWtFuNA4QrxQDV6daaPdWJbM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/GStQ2WM4qwc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/5242286310503581313/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=5242286310503581313" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/5242286310503581313?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/5242286310503581313?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/GStQ2WM4qwc/cs-education-c-in-mono-java.html" title="CS Education: C# in Mono / Java" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/03/cs-education-c-in-mono-java.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QDRXs5fCp7ImA9WhdUFkg.&quot;"><id>tag:blogger.com,1999:blog-9453241.post-4926810551536764108</id><published>2011-03-08T17:54:00.008-05:00</published><updated>2011-10-03T10:16:14.524-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-03T10:16:14.524-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DRM" /><category scheme="http://www.blogger.com/atom/ns#" term="Digital Editions" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="reference" /><category scheme="http://www.blogger.com/atom/ns#" term="Adobe" /><category scheme="http://www.blogger.com/atom/ns#" term="books" /><category scheme="http://www.blogger.com/atom/ns#" term="Gecko" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="reading" /><category scheme="http://www.blogger.com/atom/ns#" term="Reader" /><category scheme="http://www.blogger.com/atom/ns#" term="Sony" /><category scheme="http://www.blogger.com/atom/ns#" term="ePub" /><category scheme="http://www.blogger.com/atom/ns#" term="PDF" /><category scheme="http://www.blogger.com/atom/ns#" term="Wine" /><category scheme="http://www.blogger.com/atom/ns#" term="Sony Reader" /><category scheme="http://www.blogger.com/atom/ns#" term="ADEPT" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Books" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="ADE" /><category scheme="http://www.blogger.com/atom/ns#" term="ebooks" /><title>Installing Adobe Digital Editions on Linux with Wine</title><content type="html">&lt;blockquote&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; I have not had time to address the download issues some people have had when trying to install ADE. However, see the comments on this post for some additional tips on where to find an ADE installer download that you can run inside Wine.&lt;/blockquote&gt;Unfortunately, Adobe does not provide a simple download link for the Windows version of &lt;a target="_blank" href="http://www.adobe.com/products/digitaleditions/"&gt;Digital Editions&lt;/a&gt;, and so if you want to purchase a PDF or ePub e-book with Adobe &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Adept_(disambiguation)"&gt;&lt;acronym title="Adobe Digital Experience Protection Technology"&gt;ADEPT&lt;/acronym&gt;&lt;/a&gt; &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Digital_Rights_Management"&gt;&lt;acronym title="Digital Rights Management"&gt;DRM&lt;/acronym&gt;&lt;/a&gt; protection, it is very difficult to get up and running on Linux even if you have Wine installed. Here's how I did it.&lt;ol&gt;&lt;li&gt;Install Wine on your system. Most Linux distributions provide Wine as an optional install (e.g., &lt;tt&gt;sudo yum install wine&lt;/tt&gt; from the command line on Fedora).&lt;/li&gt;
&lt;li&gt;You will need Gecko extensions available to run the &lt;tt&gt;iexplore.exe&lt;/tt&gt; web browser that comes with Wine. Visit &lt;a target="_blank" href="http://wiki.winehq.org/Gecko"&gt;the Wine Wiki's Gecko page&lt;/a&gt; for information on how to install Gecko. Your Linux distribution may have a "wine-gecko" package. If it doesn't, then follow the simple instructions on the Wine Wiki.&lt;/li&gt;
&lt;li&gt;You will also need Adobe Flash installed on your Wine system, and so you should visit &lt;a target="_blank" href="http://appdb.winehq.org/objectManager.php?sClass=version&amp;iId=14658"&gt;the Wine Wiki's Flash page&lt;/a&gt; to get the &lt;a target="_blank" href="http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player.exe"&gt;&lt;tt&gt;install_flash_player.exe&lt;/tt&gt;&lt;/a&gt; download link. Download the exe and run it in Wine (e.g., &lt;tt&gt;wine install_flash_player.exe&lt;/tt&gt; from the command line).&lt;/li&gt;
&lt;li&gt;Now, start the &lt;tt&gt;iexplore.exe&lt;/tt&gt; browser bundled with Wine. After I ran Wine for the first time, it setup a &lt;tt&gt;.wine&lt;/tt&gt; directory in my home directory (i.e., &lt;tt&gt;~/.wine&lt;/tt&gt;). I found the &lt;tt&gt;iexplore.exe&lt;/tt&gt; in &lt;tt&gt;~/.wine/drive_c/Program Files/Internet Explorer&lt;/tt&gt;. Change to that directory and run &lt;tt&gt;iexplore.exe&lt;/tt&gt; (e.g, &lt;tt&gt;wine iexplore.exe&lt;/tt&gt; from the command line).&lt;/li&gt;
&lt;li&gt;Now you can visit the Digital Editions installer (which is written in Flash). From the Wine Internet Explorer, enter in the URL:&lt;blockquote&gt;&lt;tt&gt;&lt;pre&gt;http://www.adobe.com/products/digitaleditions/ade_web_library.swf&lt;/pre&gt;&lt;/tt&gt;&lt;/blockquote&gt;That should startup a little installer. Follow the prompts to download and install Digital Editions. You will even be able to launch it from there.&lt;ul&gt;&lt;li&gt;The installer will install the single Digital Editions executable to &lt;tt&gt;~/.wine/drive_c/Program Files (x86)/Adobe/Adobe Digital Editions&lt;/tt&gt; as &lt;tt&gt;digitaleditions.exe&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;You can run it again but executing that file through wine (e.g., &lt;tt&gt;wine digitaleditions.exe&lt;/tt&gt; from the command line in that directory)&lt;/li&gt;
&lt;li&gt;Alternatively, you can use the "Digital Editions" shortcuts that the installer probably placed on your desktop.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Once Digital Editions is started, you should be able to drag-and-drop ACSM files you've downloaded from e-Book commerce sites (like &lt;a target="_blank" href="http://books.google.com/ebooks"&gt;Google Books&lt;/a&gt;), and it should download the Adept-DRM'd version of your media.&lt;ul&gt;&lt;li&gt;DRM'd books are stored in the &lt;tt&gt;My Digital Editions&lt;/tt&gt; folder that will be created in your home directory.&lt;/li&gt;
&lt;li&gt;If you want to put them elsewhere, you need to edit the symbolic links in &lt;tt&gt;~/.wine/drive_c/users/USERNAME&lt;/tt&gt; where &lt;tt&gt;USERNAME&lt;/tt&gt; is your Linux username. The &lt;tt&gt;My Documents&lt;/tt&gt; folder was symlinked to my home directory by default. I got rid of the symlink and created a real directory there instead, but you could point the symlink somewhere else if you'd rather. Regardless, the &lt;tt&gt;My Digital Editions&lt;/tt&gt; folder will reside inside the &lt;tt&gt;My Documents&lt;/tt&gt; folder (alongside a &lt;tt&gt;My Books&lt;/tt&gt; folder, but I don't know what gets put in there... maybe non-DRM stuff you put into &lt;acronym title="Adobe Digital Editions"&gt;ADE&lt;/acronym&gt;?).&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;Once you have your DRM'd books, you should be able to transfer them onto devices that have also been authorized with your Adept key (e.g., a Sony Reader that has been authorized with the same account you used inside Digital Editions). I suppose it's possible to get the Digital Editions running inside Wine to notice when your reader is connected, but I haven't tried it (that might involve installing the &lt;a target="_blank" href="http://ebookstore.sony.com/download/"&gt;Sony Reader Library&lt;/a&gt; software within Wine, and I received some ugly errors when I tried to do that (but &lt;acronym title="Your Mileage May Vary"&gt;YMMV&lt;/acronym&gt;)).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9453241-4926810551536764108?l=phaseportrait.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ercq7J-1zUDSa7aTI1G6xfIZLMs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ercq7J-1zUDSa7aTI1G6xfIZLMs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ercq7J-1zUDSa7aTI1G6xfIZLMs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ercq7J-1zUDSa7aTI1G6xfIZLMs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Ptiph/~4/JvAcO14_HRw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phaseportrait.blogspot.com/feeds/4926810551536764108/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9453241&amp;postID=4926810551536764108" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/4926810551536764108?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9453241/posts/default/4926810551536764108?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Ptiph/~3/JvAcO14_HRw/installing-adobe-digital-editions-on.html" title="Installing Adobe Digital Editions on Linux with Wine" /><author><name>Ted</name><uri>http://www.blogger.com/profile/15297790411942050417</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://links.tedpavlic.com/images/small_riley02.png" /></author><thr:total>5</thr:total><feedburner:origLink>http://phaseportrait.blogspot.com/2011/03/installing-adobe-digital-editions-on.html</feedburner:origLink></entry></feed>

