<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>Hacker News Personal Blogs 2013 | All Blog Posts</title><link>https://hn-blogs.kronis.dev/feed.xml</link><description>A collection of blog posts from users of Hacker News, based on RSS feeds.</description><language>en-US</language><lastBuildDate>Wed, 20 May 2026 04:03:16 GMT</lastBuildDate><generator>rfeed v1.1.1</generator><docs>https://github.com/svpino/rfeed/blob/master/README.md</docs><item><title>"We Need to Talk About TED"</title><link>https://www.youtube.com/watch?v=Yo5cKRmJaf0</link><description>&lt;p&gt;For everyone waiting on TEDx to release Ben Bratton&amp;#8217;s &amp;#8220;&lt;a href="http://www.bratton.info/projects/talks/we-need-to-talk-about-ted/"&gt;We need to talk about TED&lt;/a&gt;&amp;#8221; video, here you go. &lt;a href="https://zacs.site/blog/we-need-to-talk-about-ted.html"&gt;Since reading his transcript&lt;/a&gt; I have kept the page open in anticipation of TEDx releasing this, and I still managed to miss it by a day. If you enjoyed the transcript, you&amp;#8217;ll love the talk.&lt;/p&gt;


                &lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Yo5cKRmJaf0"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 31 Dec 2013 21:30:11 GMT</pubDate><guid isPermaLink="true">https://www.youtube.com/watch?v=Yo5cKRmJaf0</guid></item><item><title>The case for 3x</title><link>https://zacs.site/blog/the-case-for-3x.html</link><description>&lt;p&gt;The only thing I love more than listening to podcasts is writing about them. During &lt;a href="http://curiousrat.com/the-state-of-podcasting-2013"&gt;the last curfuffle&lt;/a&gt; I wrote &lt;a href="https://zacs.site/blog/podcasting-state-of-the-union.html"&gt;&lt;em&gt;Podcasting State of the Union&lt;/em&gt;&lt;/a&gt; where I did my best to provide counterpoints for the flaws Harry Marks pointed out in the podcasting industry. To my delight, &lt;a href="https://twitter.com/imyke/status/387840995465105408"&gt;many&lt;/a&gt; &lt;a href="https://twitter.com/caseyliss/status/387879318774620160"&gt;agreed&lt;/a&gt; &lt;a href="https://twitter.com/mattalexand/status/387917466325622784"&gt;with&lt;/a&gt; me. After a few days the heat died down though, and I did not expect to have another opportunity to discuss this topic for a while. Then Ben Brooks decided to stir the pot once more with &lt;a href="http://brooksreview.net/2013/12/podcasts-worries/"&gt;&lt;em&gt;Why Tech Podcasts Bother Me&lt;/em&gt;&lt;/a&gt;, and &lt;a href="http://buildingtwenty.net/posts/podcasts"&gt;many&lt;/a&gt; &lt;a href="http://crateofpenguins.com/blog/2013-12-that-podcast-bombshell"&gt;responded&lt;/a&gt; with wildly different opinions. Perhaps most notably, Andrew Clark and Zac Cichy of &lt;a href="http://themenubar.net"&gt;The Menu Bar&lt;/a&gt; surprised me in &lt;a href="http://themenubar.net/podcastfeed/tmb-ep034"&gt;episode thirty-four&lt;/a&gt; by agreeing with the majority of Ben&amp;#8217;s points.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-case-for-3x.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 31 Dec 2013 19:58:31 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-case-for-3x.html</guid></item><item><title>Nerd, Decentralize Thyself</title><link>https://zacs.site/blog/nerd-decentralize-thyself.html</link><description>&lt;p&gt;Back in April &lt;a href="https://zacs.site/blog/email-list-and-rss.html"&gt;I linked to&lt;/a&gt; Rich Stevens&amp;#8217; &lt;a href="http://www.dieselsweeties.com/blog/?p=928"&gt;announcement&lt;/a&gt; of a new newsletter he planned to begin publishing once or twice a week focusing on &amp;#8220;A little business, a little gadgetry, a little art and writing, and a few dick jokes.&amp;#8221; Since then I have enjoyed his seventeen posts immensely, and the latest was no exception: in &lt;em&gt;Nerd, Decentralize Thyself&lt;/em&gt;&lt;sup id="fnref1"&gt;&lt;a href="#fn1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt; Rich Stevens spoke to the recent trend towards relying on platforms such as Tumblr and Twitter, and how despite liking both he would never forfeit ownership of his website. He went on to call for more people devoted to pointing out great work in order to solve the discoverability problem those aforementioned services aim to obviate as a way of decreasing our reliance on third parties to do great work and, hopefully, make building a website back into something cool again. If you find this description at all interesting, subscribe to the newsletter; you will not be disappointed.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/nerd-decentralize-thyself.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 31 Dec 2013 12:13:05 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/nerd-decentralize-thyself.html</guid></item><item><title>We Need Coding in Schools, but Where are the Teachers?</title><link>https://nicolaiarocci.com/we-need-coding-in-schools-but-where-are-the-teachers/</link><description>&lt;p&gt;Maybe instead of Coder Dojos for kids, we should run them for their teachers.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We must build a team of dedicated teachers to support school coding programs. We do not rely on our students to absorb math from textbooks, online videos or math clubs; similarly, we cannot depend on every student to learn to code on their own, by using online tutorials and afterschool clubs. If coding becomes as fundamental as reading and writing, we need to create a system where everyone has an opportunity to learn, not just the few who probably would have learned it on their own anyway.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 31 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/we-need-coding-in-schools-but-where-are-the-teachers/</guid></item><item><title>Principles of good RESTful API Design</title><link>https://thomashunter.name/posts/2013-12-31-codeplanet-principles-of-good-restful-api-design</link><author>Thomas Hunter II</author><pubDate>Tue, 31 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-12-31-codeplanet-principles-of-good-restful-api-design</guid></item><item><title>Responsive Design vs. Mobile-First</title><link>https://www.danstroot.com/posts/2013-12-31-responsive-design-vs-mobile-first</link><description>&lt;img alt="post image" src="https://danstroot.imgix.net/assets/blog/img/mobile-first.png" /&gt;&lt;br /&gt;&lt;br /&gt;I have heard some people speak of "mobile-first" and "responsive design" interchangeably making them sound as if they were one and the same.  However I think there are some subtle differences.  I believe responsive design is the broadest possible definition. It says to me that we are going to target all platforms, screen sizes, pixel densities, etc.  It means that the user experience will be custom tailored to the exact device you just happen to be viewing it with. This should be our ultimate goal, right?&lt;br /&gt;&lt;br /&gt;This post &lt;a href="https://www.danstroot.com/posts/2013-12-31-responsive-design-vs-mobile-first"&gt;Responsive Design vs. Mobile-First&lt;/a&gt; first appeared on &lt;a href="https://www.danstroot.com"&gt;Dan Stroot's Blog&lt;/a&gt;</description><author>Dan Stroot</author><pubDate>Tue, 31 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.danstroot.com/posts/2013-12-31-responsive-design-vs-mobile-first</guid></item><item><title>Testing the Apple Tax</title><link>https://zacs.site/blog/testing-the-apple-tax.html</link><description>&lt;p&gt;Prompted by an article Zach Epstein posted to BGR last Thursday titled &lt;a href="http://bgr.com/2013/12/26/mac-pro-windows-diy-cost/"&gt;&lt;em&gt;Testing the &amp;#8216;Apple tax&amp;#8217;: What would it cost to build a Windows version of the new Mac Pro?&lt;/em&gt;&lt;/a&gt; I planned to link his piece as a smug counterpoint to all the people I know who like saying that they can build a more powerful machine for &amp;#8220;1/3 the cost&amp;#8221;&lt;sup id="fnref1"&gt;&lt;a href="#fn1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt; of my overpriced Apple computer. As I thought more about the notion of an Apple tax though, I realized I had more to say on this topic than a juvenile &amp;#8220;ha ha&amp;#8221;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/testing-the-apple-tax.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 31 Dec 2013 00:08:32 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/testing-the-apple-tax.html</guid></item><item><title>Paranoia</title><link>https://olshansky.info/movie/paranoia/</link><description>Olshansky's review of Paranoia</description><author>🦉 olshansky 🦁</author><pubDate>Mon, 30 Dec 2013 16:02:32 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/paranoia/</guid></item><item><title>How to use Gmail more efficiently</title><link>https://klinger.io/posts/how-to-use-gmail-more-efficiently</link><description>I usually I blog about Angellist but I have shown this “lifehack” to so many people that I thought it’s worth it’s own blogpost...</description><author>Blog posts of Andreas Klinger</author><pubDate>Mon, 30 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://klinger.io/posts/how-to-use-gmail-more-efficiently</guid></item><item><title>Alex Gaynor — About Python 3</title><link>https://nicolaiarocci.com/alex-gaynor-about-python-3/</link><description>&lt;p&gt;A very interesting read if you’re into Python. Eve has been Python 3 compatible for a while and honestl, I would be surprised to find that somebody is running it in production under Python 3.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Why aren’t people using Python 3?&lt;/p&gt;
&lt;p&gt;First, I think it’s because of a lack of urgency. Many years ago, before I knew how to program, the decision to have Python 3 releases live in parallel to Python 2 releases was made. In retrospect this was a mistake, it resulted in a complete lack of urgency for the community to move, and the lack of urgency has given way to lethargy.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Mon, 30 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/alex-gaynor-about-python-3/</guid></item><item><title>Microsoft’s New Systems Language</title><link>https://nicolaiarocci.com/microsofts-new-systems-language/</link><description>&lt;p&gt;Number #3 on Praeclarum’s list hits home for me, but all his points are both valid and strong.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As a programming language nerd I had mixed feelings when Jon Galloway tweeted about Microsoft’s new programming language.&lt;/p&gt;
&lt;p&gt;“Why are your feelings mixed?” I kept asking myself. I love new programming languages. I took an internship at Microsoft just so I could be closer to the people who made C#. I read language specs for fun. I write compilers for fun. I sell a programming language, interpreter, and IDE.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Mon, 30 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/microsofts-new-systems-language/</guid></item><item><title>What Happens When One of Your Coworkers Dies</title><link>https://nicolaiarocci.com/happens-one-coworkers-dies/</link><description>&lt;blockquote&gt;
&lt;p&gt;I barely knew Colin. He sat two offices down from me, but we never worked on anything together, never laid eyes on each other after 5 p.m. Our relationship consisted, in its entirety, of work-related small talk in the break room, his lunch rotating behind us in the microwave. Ding, stir, have a good rest of your day.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;via &lt;!-- raw HTML omitted --&gt;What Happens When One of Your Coworkers Dies | The Billfold&lt;!-- raw HTML omitted --&gt;.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Mon, 30 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/happens-one-coworkers-dies/</guid></item><item><title>How To Be Successful with a Standing Desk</title><link>https://justingarrison.com/blog/2013-12-30-how-to-be-successful-with-a-standing-desk/</link><description>In January 2014 I will have been using a standing desk as my main desk for three years. Here are three tips</description><author>Justin Garrison's Homepage</author><pubDate>Mon, 30 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-12-30-how-to-be-successful-with-a-standing-desk/</guid></item><item><title>Preventing Wine from registering mimetypes</title><link>https://cmetcalfe.ca/blog/preventing-wine-from-registering-mimetypes.html</link><description>&lt;p&gt;When installing &lt;a href="http://winehq.org/"&gt;Wine for Linux&lt;/a&gt;, the install script insists on associating all text files with its built-in notepad.exe&lt;/p&gt;
&lt;p&gt;As someone who uses &lt;a href="http://www.vim.org/"&gt;Vim&lt;/a&gt; almost exculsively, this is definitely not the desired behaviour.&lt;/p&gt;
&lt;p&gt;To stop this from happening, run the following command &lt;em&gt;before&lt;/em&gt; installing Wine.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;WINEDLLOVERRIDES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'winemenubuilder.exe=a'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This sets the path of the winemenubuilder library (the library that creates mimetype associations) to something invalid,
preventing the associations from being made when Wine installs.&lt;/p&gt;
&lt;p&gt;Once Wine is installed, it won't try to associate notepad.exe again. However, if needed,
the library can be properly disabled via the libraries tab of wineconf.&lt;/p&gt;</description><author>Carey Metcalfe</author><pubDate>Sun, 29 Dec 2013 21:37:00 GMT</pubDate><guid isPermaLink="true">https://cmetcalfe.ca/blog/preventing-wine-from-registering-mimetypes.html</guid></item><item><title>Introducing Instapaper Daily</title><link>http://blog.instapaper.com/post/70924183086</link><description>&lt;p&gt;From almost a week ago, midway through my Christmas vacation, Betaworks announced the latest in a slew of great improvements to the Instapaper platform: Instapaper Daily. Although I cannot say it will replace Tweetbot or Reeder as one of my primary sources for news and articles to read, I really like this as a service and as an indicator of the direction Betaworks plans on taking Instapaper.&lt;/p&gt;

&lt;p&gt;In the past I have criticized Betaworks for both &lt;a href="https://zacs.site/blog/instapaper-5.html"&gt;insufficient design sense&lt;/a&gt; in their web ventures and a lack of direction driving their product decisions. With the release of Instapaper Daily they have assuaged these misgivings, at least a little, by continuing to improve upon Instapaper&amp;#8217;s core value proposition&amp;#160;&amp;#8212;&amp;#160;improving one&amp;#8217;s reading experience&amp;#160;&amp;#8212;&amp;#160;and doing so beautifully: whereas Instapaper&amp;#8217;s website remains an eyesore at best, Instapaper Daily presents its information in a clear, concise, and visually attractive manner.&lt;/p&gt;

&lt;p&gt;Good for them.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://blog.instapaper.com/post/70924183086"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 29 Dec 2013 17:06:02 GMT</pubDate><guid isPermaLink="true">http://blog.instapaper.com/post/70924183086</guid></item><item><title>Writer Pro</title><link>https://zacs.site/blog/writer-pro.html</link><description>&lt;p&gt;As soon as Information Architects released Writer Pro shortly before Christmas, I began collecting &amp;#8220;&lt;a href="http://shawnblanc.net/2013/12/first-thoughts-writer-pro-ios/"&gt;first look&lt;/a&gt;&amp;#8221; pieces after &lt;a href="http://writer.pro"&gt;their phenomenal introductory video&lt;/a&gt; nearly caused me to shell out a hefty $40 to have the app on both my Mac and iOS devices sight on seen. Much more cautions after my &lt;a href="https://zacs.site/blog/bad-coin.html"&gt;poor&lt;/a&gt; &lt;a href="https://zacs.site/blog/more-coin.html"&gt;experience&lt;/a&gt; with Coin though, I exercised a bit of restraint in choosing to wait until after Christmas to make my final decision. Nine days and one debacle later, I am very thankful I did.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/writer-pro.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 29 Dec 2013 16:30:27 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/writer-pro.html</guid></item><item><title>Why 'greener' computing is coming soon to Europe</title><link>https://stop.zona-m.net/2004/12/why-greener-computing-is-coming-soon-to-europe/</link><description>(historical note: this is an article I wrote for IT Manager&amp;rsquo;s Journal, which published it at the URL http://management.itmanagersjournal.com/management/04/12/07/2312226.shtml?tid=84 on December 14, 2004. When I rediscovered the original text on my hard drive, on December 29, 2013, I put it back here with the original date as reference, since that whole website was closed years ago)
The Member States of the European Union are getting ready to follow two directives that will have a deep impact on all the electronic industry.</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Sun, 29 Dec 2013 11:15:26 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2004/12/why-greener-computing-is-coming-soon-to-europe/</guid></item><item><title>A basic guide to when and how to deploy HTTPS</title><link>https://nicolaiarocci.com/a-basic-guide-to-when-and-how-to-deploy-https/</link><description>&lt;blockquote&gt;
&lt;p&gt;Many web developers know about SSL, but it is very common to see it only partially deployed, or not deployed where it should be. This basic guide on when and how to deploy SSL will help you avoid the most common mistakes.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;via &lt;!-- raw HTML omitted --&gt;A basic guide to when and how to deploy HTTPS — Erik Romijn&lt;!-- raw HTML omitted --&gt;.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Sun, 29 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/a-basic-guide-to-when-and-how-to-deploy-https/</guid></item><item><title>WarGames Magazine Identified</title><link>https://nicolaiarocci.com/wargames-magazine-identified/</link><description>&lt;blockquote&gt;
&lt;p&gt;On seeing WarGames for the first time in the 1980s, I wondered which magazine it was. Later, after seeing it on TV and on VHS/DVD, the same question kept nagging at me. I believed that I would one day get to the bottom of this matter. I correctly assumed that the magazine was a real world magazine with a fake advertisement added to it. Through some effort and persistence I finally achieved my goal on 2013-02-24 at 5:30pm.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Sun, 29 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/wargames-magazine-identified/</guid></item><item><title>Why Good Programming Projects Go Bad</title><link>https://nicolaiarocci.com/why-good-programming-projects-go-bad/</link><description>&lt;blockquote&gt;
&lt;p&gt;Fred Brooks wrote the software development classic The Mythical Man-Month almost 40 years ago. In this interview, Brooks explains why managers still make the same mistakes.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;via &lt;!-- raw HTML omitted --&gt;Why Good Programming Projects Go Bad&lt;!-- raw HTML omitted --&gt;.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Sun, 29 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/why-good-programming-projects-go-bad/</guid></item><item><title>You Should Change Your Python Shell</title><link>https://nicolaiarocci.com/you-should-change-your-python-shell/</link><description>&lt;blockquote&gt;
&lt;p&gt;If you write Python code, switching to IPython is the number one thing you can do to immediately improve your productivity. Bold words, I know. Let’s look at how IPython can make you a more productive programmer.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;via &lt;!-- raw HTML omitted --&gt;You Should Change Your Python Shell | GrokCode&lt;!-- raw HTML omitted --&gt;.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Sun, 29 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/you-should-change-your-python-shell/</guid></item><item><title>Book Review: Debian 7: System Administration Best Practices</title><link>https://thomashunter.name/posts/2013-12-29-book-review-debian-7-system-administration-best-practices</link><author>Thomas Hunter II</author><pubDate>Sun, 29 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-12-29-book-review-debian-7-system-administration-best-practices</guid></item><item><title>2013 Year in Review</title><link>https://benovermyer.com/blog/2013/12/2013-year-in-review/</link><description>&lt;p&gt;A great deal happened in 2013 for me and my family. Sadly, though, I missed the mark on all six of my goals for the year. Despite that, I think 2013 can be counted a success in general.&lt;/p&gt;
&lt;h1 id="my-goals-for-2013"&gt;My Goals for 2013&lt;/h1&gt;
&lt;p&gt;My first goal for 2013 was to release a computer game. For a variety of reasons, this never came close to completion. I overestimated my free time and, to be honest, my motivation. I ended up spending far more time developing tabletop games. I'll get into that in a second. My second goal was to join a local developer group. Technically, I succeeded at this, since I started going to MNPHP meetups for awhile. However, because I didn't sustain my attendance, I'm counting this one failed. There is promise here, though. My third goal was ambitious - take a vacation to Hawaii. Saving up the money to do so, especially amidst changing jobs, proved too difficult for me. My fourth goal, lead a yoga class, failed for more than just inability to do so. Most yoga schools these days seem to focus solely on the physical side of yoga, with no thought for the spiritual side. I had a moment of clarity when I realized that I couldn't get to the level of proficiency in just a year to be qualified to teach both the physical and spiritual sides. I may revisit this goal some year in the future, but not in the near tense. My fifth goal was well on its way to success when I sabotaged it by re-incorporating Dicejockey into my main site. Though I wanted to reach 1,000 visitors per month for at least one month in 2013, my desire to pull in everything to one destination representing me was greater than my desire to continue a blog dedicated solely to MMORPGs and tabletop RPGs. My sixth and final goal for 2013, to collaborate on a project with my sister Tasha, went fairly well for the first half of the year. Unfortunately, I think I was too ambitious in the project we chose to work on, because my contribution would have been a large number of artworks that my skill level and free time did not allow for. Still, this goal was inspiring, and I'll do something along these lines in 2014.&lt;/p&gt;
&lt;h1 id="major-happenings-of-2013"&gt;Major Happenings of 2013&lt;/h1&gt;
&lt;p&gt;I changed jobs twice this past year. The first time, I left Group 3 Marketing because I felt I was stagnating as a developer. I joined a startup called Sportsdigita and worked heavily on Symfony2 projects. While I certainly grew as a developer at Sportsdigita, the culture was damaging everything else about my life. In August, then, I left that company to work for the Minneapolis Star Tribune, the largest newspaper in Minnesota (and, possibly, the Midwest). The Star Tribune has proved to be a wonderful balance between interesting projects and good culture, and it doesn't hurt that it pays well, too. My contributions to Silver Gryphon Games grew this year. My efforts on the web side increased, and my interest in this side of the business is definitely heating up. I released the first web tool for Ingenium, and it's proved very useful - internally, anyway. I did more writing this year in previous years, releasing no less than three adventures for Ingenium. Two of those I did all the writing for, and the third I contributed a third of the final word count to. This also marked the first year where I managed a convention on my own, using the newly-minted “Booth 2.” All in all, 2013 was a successful year for me. I got back into tabletop gaming in a big way this year. I started what has become my longest-running D&amp;amp;D campaign ever. I started playing Warhammer 40k and Warmachine on a weekly basis with some good friends. I did a lot of miniature painting, and produced some works that I'm actually proud of, which hasn't happened before. I also began writing the rules for my own war game, and that could bode well for Silver Gryphon Games, based on early playtest feedback. I met several new friends and strengthened relationships with others. I've been more social-minded this year than the past couple years. I've definitely gone to more conventions this year than in past years, also.&lt;/p&gt;
&lt;h1 id="closing-thoughts"&gt;Closing Thoughts&lt;/h1&gt;
&lt;p&gt;Many positive things happened this year, but I'm disappointed that I wasn't able to follow through with a single one of my goals. I grew as a developer, a gamer, and a person in general in 2013. Overall, despite the lack of goal completion, I think 2013 was a win for me. Here's to an even better 2014!&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sun, 29 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/12/2013-year-in-review/</guid></item><item><title>Bromptoning it up</title><link>https://liza.io/bromptoning-it-up/</link><description>&lt;p&gt;If you follow me on &lt;a href="http://twitter.com/Lazer"&gt;Twitter&lt;/a&gt; you likely would&amp;rsquo;ve seen my photos of a silly looking contraption with tiny wheels. Meet Deider, the Brompton folding bike:&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sat, 28 Dec 2013 18:14:38 GMT</pubDate><guid isPermaLink="true">https://liza.io/bromptoning-it-up/</guid></item><item><title>Move to S3 and Octopress. Oh and #1GAM</title><link>https://liza.io/move-to-s3-and-octopress.-oh-and-%231gam/</link><description>&lt;h2 id="octopress-and-s3"&gt;Octopress and S3&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve finally moved this site over to Octopress and S3. There is a lot of work to be done, the most pressing of which is fixing leftover broken images, implementing code highlighting, and fixing some theme stuff (like the navigation links), but other than that it&amp;rsquo;s going ok. The move overall was pretty hassle-free with no real problems. I ended up with the following setup:&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sat, 28 Dec 2013 16:28:18 GMT</pubDate><guid isPermaLink="true">https://liza.io/move-to-s3-and-octopress.-oh-and-%231gam/</guid></item><item><title>How has your experience been relating to the use of a bluetooth keyboard with the iPad; specifically with the way iOS requires the activation of Voiceover to increase remote keyboard functionality. Personally I find the accessibility features in iOS second to non both keyboard and voice but wanted to pole for your experience and findings as I and I’m sure others may be interested to learn such things. Frustratingly how to copy and paste code outside of anything but screen or TMUX. Thanks (:</title><link>https://yieldthought.com/post/71331106198</link><description>&lt;p&gt;Hi Edg3e,&lt;/p&gt;&lt;p&gt;I hadn't looked into using Voiceover to activate app switching and so on - that's... interesting. It takes away one of the few things I preferred about the Surface, whilst adding some of its own new annoyances. Progress, I guess?&lt;/p&gt;&lt;p&gt;I sympathize with the copy and paste - often I wanted to take some text from the console and put it into a bug ticket; I ended up writing a small script that uses our bug tracker's API to add a comment containing text from the command-line, and then extending it to automatically include the last stack dump and log file output. Surprisingly, this made me more productive than I had been with manually copying and pasting things all the time. That's something I found a lot while working with the iPad/Linode combination - things that were too uncomfortable to do the 'normal' way ended up being shoehorned into a 'console' way which often resulted in quite a bit of time-saving - and, crucially, attention-saving.&lt;/p&gt;&lt;p&gt;Typing a short command at the console gives me fewer temptations to check my email or notice a support ticket has been updated than switching to the browser does.&lt;/p&gt;&lt;p&gt;Mark&lt;/p&gt;</description><author>Yield Thought</author><pubDate>Fri, 27 Dec 2013 21:27:08 GMT</pubDate><guid isPermaLink="true">https://yieldthought.com/post/71331106198</guid></item><item><title>On What To Call SharePoint Developer-y Type People</title><link>https://98.codes/on-what-to-call-sharepoint-developer-y-type-people/</link><description>&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;&lt;a href="http://greghurlman.com/sharepoint-developers-and-a-name-change/?ref=98.codes"&gt;A little more than a year ago&lt;/a&gt;, I was, as someone looking for .Net developers that knew the SharePoint API, frustrated by the confusion in the SharePoint space between the different kinds of developers that exist in the ecosystem. This confusion persists to this day, much to the detriment of&lt;/p&gt;</description><author>Text(Greg);</author><pubDate>Fri, 27 Dec 2013 16:56:49 GMT</pubDate><guid isPermaLink="true">https://98.codes/on-what-to-call-sharepoint-developer-y-type-people/</guid></item><item><title>The Family</title><link>https://olshansky.info/movie/the_family/</link><description>Olshansky's review of The Family</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 27 Dec 2013 13:07:59 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_family/</guid></item><item><title>Samuel Hulick: User Onboarding Champion</title><link>https://solomon.io/samuel-hulick-user-onboarding-champion/</link><description>Samuel Hulick is a user experience designer and runs useronboard.com. He is currently writing a book called User Onboarding.</description><author>Sam Solomon</author><pubDate>Fri, 27 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/samuel-hulick-user-onboarding-champion/</guid></item><item><title>2013-12-27</title><link>https://ho.dges.online/pictures/2013-12-27/</link><description>&lt;p&gt;The organ hall at Kelvingrove Art Galleries &amp;amp; Museum in Glasgow.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Fri, 27 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-12-27/</guid></item><item><title>Using Beyond Compare 4 Mac Beta with Git</title><link>https://donatstudios.com/Beyond-Compare-Mac-Beta-with-Git-in-OSX</link><description>&lt;p&gt;A little over a year ago I wrote a post about using &lt;a href="https://donatstudios.com/Beyond-Compare-with-Git-in-OSX"&gt;Beyond Compare on Mac&lt;/a&gt; via Wine.  A native version is now in beta and open to everyone! If you haven't tried Beyond Compare, I suggest you do. If you have you already know how awesome it is.&lt;/p&gt;
&lt;p&gt;I've been testing the Alpha for many months now and thought I'd throw together some instructions for getting it going with git.&lt;/p&gt;
&lt;p&gt;You can download the beta here: &lt;a href="https://www.scootersoftware.com/beta.php?zz=beta4_dl"&gt;http://www.scootersoftware.com/beta.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After you have the App installed, the next step is to install the command line tools. All other steps require this.&lt;/p&gt;
&lt;p&gt;From the App, go to the &amp;quot;Beyond Compare&amp;quot; drop down menu and choose &amp;quot;Install Command Line Tools...&amp;quot;. It will then prompt you for your password. After this, you &lt;code&gt;bcomp file1.txt file2.txt&lt;/code&gt; &lt;/p&gt;
&lt;h2&gt;Using with Git CLI&lt;/h2&gt;
&lt;p&gt;The next step is to set it up as a git diff tool and merge tool. Git already has native support for it built in thanks to the Linux client having existed for years now.&lt;/p&gt;
&lt;p&gt;This can be achieved simply by running the following commands.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ git config --global diff.tool bc3
$ git config --global difftool.prompt false
$ git config --global merge.tool bc3&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This simple setup will leave &lt;code&gt;git diff&lt;/code&gt; and &lt;code&gt;git merge&lt;/code&gt; functioning as usual, as well as allowing you to use Beyond Compare for the task by doing &lt;code&gt;git difftool&lt;/code&gt; and &lt;code&gt;git mergetool&lt;/code&gt;. &lt;/p&gt;
&lt;p&gt;I &lt;strong&gt;highly&lt;/strong&gt; recommend giving Beyond Compare a go as a &lt;strong&gt;merge tool&lt;/strong&gt; next time you need to do a merge as it makes it wonderfully simple (when you understand whats going on with the 4 sections anyway).&lt;/p&gt;
&lt;h2&gt;Using with Tower 1.x&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Tower 2.0.6+ include built in support for Beyond Compare which the following instructions will interfere with.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Quit Tower&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;~/Library/Application\ Support/Tower&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Create a &lt;code&gt;CompareScripts&lt;/code&gt; folder if one does not already exist.&lt;/li&gt;
&lt;li&gt;Download &lt;a href="https://jdon.at/3tWV"&gt;bcomp.sh&lt;/a&gt; and place it in the new &lt;code&gt;CompareScripts&lt;/code&gt; folder.&lt;/li&gt;
&lt;li&gt;Make it executable via &lt;code&gt;chmod +x bcomp.sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Download &lt;a href="https://jdon.at/J4cR"&gt;CompareTools.plist&lt;/a&gt; and place it in the &lt;code&gt;~/Library/Application\ Support/Tower&lt;/code&gt; directory. Rename / move any old version that might exist.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Using with SourceTree&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Open SourceTree&lt;/li&gt;
&lt;li&gt;Open &amp;quot;Preferences&amp;quot;  from the SourceTree menu&lt;/li&gt;
&lt;li&gt;Along the top bar, choose the &amp;quot;Diff&amp;quot; tab.&lt;/li&gt;
&lt;li&gt;Under External Diff / Merge
&lt;ol&gt;
&lt;li&gt;for Visual Diff Tool choose &lt;code&gt;Other&lt;/code&gt; then in the Diff Command enter &lt;code&gt;/usr/local/bin/bcomp&lt;/code&gt; and for Arguments enter &lt;code&gt;$LOCAL $REMOTE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;For Merge Tool choose &lt;code&gt;Other&lt;/code&gt; and in Merge Command enter &lt;code&gt;/usr/local/bin/bcomp&lt;/code&gt; and for Arguments enter &lt;code&gt;$LOCAL $REMOTE $BASE $MERGED&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;</description><author>Donat Studios</author><pubDate>Fri, 27 Dec 2013 01:29:40 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/Beyond-Compare-Mac-Beta-with-Git-in-OSX</guid></item><item><title>Catching Fire (The Hunger Games, #2)</title><link>https://apurva-shukla.me/bookshelf/catching-fire-the-hunger-games-2/</link><description>⭐ ⭐ ⭐ ⭐ ⭐ This book was amazing, I was thinking that the amount of pages the book offers wouldn’t be able to tell a good story but this…</description><author>Apurva Shukla's RSS Feed</author><pubDate>Wed, 25 Dec 2013 10:00:00 GMT</pubDate><guid isPermaLink="true">https://apurva-shukla.me/bookshelf/catching-fire-the-hunger-games-2/</guid></item><item><title>Yet Another Vim Setup</title><link>https://blog.tjll.net/yet-another-vim-setup/</link><description>&lt;div class="figure" id="org8b08632"&gt;
&lt;p&gt;&lt;img alt="vim.png" class="righty" src="../assets/images/vim.png" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class="figure-number"&gt;Figure 1: &lt;/span&gt;Sample screenshot editing my .vimrc&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
Vim is an excellent text editor. I've used it for many years and like most vim users, have collected a fairly large collection of settings in my &lt;code&gt;.vimrc&lt;/code&gt; and learned how to grok my vim usage effectively through a lot of trial and error.
&lt;/p&gt;

&lt;p&gt;
To that end, I've tried to assemble a useful overview of my experience with vim.
&lt;/p&gt;

&lt;hr /&gt;
&lt;div class="outline-4" id="outline-container-foreword-why"&gt;
&lt;h4 id="foreword-why"&gt;Foreword: Why?&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org49071a6"&gt;
&lt;p&gt;
Why would you want to even put in the effort to beef up vim?
&lt;/p&gt;

&lt;ul class="org-ul"&gt;
&lt;li&gt;Portability. Carry your IDE everywhere with minimal effort, possibly even in just a single dotfile. (insert plug for &lt;a href="https://github.com/andsens/homeshick"&gt;homeshick&lt;/a&gt; here)&lt;/li&gt;
&lt;li&gt;Performance. Your IDE will start in under a second and you won't lose your mind if it crashes.&lt;/li&gt;
&lt;li&gt;Improved speed and precision. It takes a long time - don't get me wrong - but once you learn how to use vim the way it wants to be used, you'll like it.&lt;/li&gt;
&lt;li&gt;Vibrant community. This is one of hundreds of community resources for vim. If somebody has ever needed to do $task in vim, somebody has probably figured out a good way to do it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-prelude-abide-by-these-principles"&gt;
&lt;h4 id="prelude-abide-by-these-principles"&gt;Prelude: abide by these principles&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org5ddde79"&gt;
&lt;p&gt;
A few things to keep in mind:
&lt;/p&gt;

&lt;ul class="org-ul"&gt;
&lt;li&gt;Stop working with the new-file-new-tab paradigm. Read &lt;a href="http://stackoverflow.com/questions/102384/using-vims-tabs-like-buffers"&gt;this answer&lt;/a&gt; on Stack Overflow for more.&lt;/li&gt;
&lt;li&gt;Don't start with a pre-built/huge &lt;code&gt;.vimrc&lt;/code&gt;. Build gradually to learn what you're doing.&lt;/li&gt;
&lt;li&gt;Learn how to learn vim. Be cognizant of what slows you down, update your &lt;code&gt;.vimrc&lt;/code&gt; with shortcuts you know, rinse, repeat.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-essential-settings"&gt;
&lt;h4 id="essential-settings"&gt;Essential Settings&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org8f38db9"&gt;
&lt;p&gt;
I mentioned not to get ahead of yourself with a massive &lt;code&gt;.vimrc&lt;/code&gt; off the bat, but there are a few settings that you just plain need initially.
&lt;/p&gt;

&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;code&gt;set nocompatible&lt;/code&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;This will get rid of antiquaited backwards-compatability settings and make vim a bit more usable.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set number&lt;/code&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Turn on line numbers. This one is pretty obvious.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set ruler&lt;/code&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Always display the status line at the bottom of the vim window (column, filename, etc.)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;syntax on&lt;/code&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Although other plugins build on this, the basic setting is a must.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-essential-plugins"&gt;
&lt;h4 id="essential-plugins"&gt;Essential Plugins&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orgde3ddf2"&gt;
&lt;p&gt;
These are plugins I use every time I open vim.
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="outline-5" id="outline-container-http-kien-github-io-ctrlp-vim-ctrl-p"&gt;
&lt;h5 id="http-kien-github-io-ctrlp-vim-ctrl-p"&gt;&lt;a href="http://kien.github.io/ctrlp.vim/"&gt;Ctrl-P&lt;/a&gt;&lt;/h5&gt;
&lt;div class="outline-text-5" id="text-org7292142"&gt;
&lt;p&gt;
This will change the way you work with files. Stop browsing/pointing and clicking as you look for files and invoke a fuzzy text search for your file instead. &lt;b&gt;Seriously&lt;/b&gt; handy.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-5" id="outline-container-https-github-com-bling-vim-airline-vim-airline"&gt;
&lt;h5 id="https-github-com-bling-vim-airline-vim-airline"&gt;&lt;a href="https://github.com/bling/vim-airline"&gt;Vim-Airline&lt;/a&gt;&lt;/h5&gt;
&lt;div class="outline-text-5" id="text-org97c3b80"&gt;
&lt;p&gt;
By default vim's interface isn't terribly informative. Vim-airline is much more lightweight than other alternatives (like vim-powerline, which requires a lot of configuring) and offers out-of-the-box usefulness. Note that powerline-fonts can be tricky, but the exchange for your effort is an especially pretty interface.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-good-to-have-plugins"&gt;
&lt;h4 id="good-to-have-plugins"&gt;Good-to-have Plugins&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-good-to-have-plugins"&gt;
&lt;/div&gt;
&lt;div class="outline-5" id="outline-container-https-github-com-gmarik-vundle-vundle"&gt;
&lt;h5 id="https-github-com-gmarik-vundle-vundle"&gt;&lt;a href="https://github.com/gmarik/vundle"&gt;Vundle&lt;/a&gt;&lt;/h5&gt;
&lt;div class="outline-text-5" id="text-orgf342246"&gt;
&lt;p&gt;
There are many ways of managing plugins, namely &lt;a href="https://github.com/tpope/vim-pathogen"&gt;pathogen&lt;/a&gt; and vundle. I used pathogen for a long time but now use Vundle as it can automate things a bit more, but either is a good choice and handy if you use many plugins.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-5" id="outline-container-https-github-com-scrooloose-syntastic-syntastic"&gt;
&lt;h5 id="https-github-com-scrooloose-syntastic-syntastic"&gt;&lt;a href="https://github.com/scrooloose/syntastic"&gt;Syntastic&lt;/a&gt;&lt;/h5&gt;
&lt;div class="outline-text-5" id="text-org8087354"&gt;
&lt;p&gt;
Syntastic offers syntax and style checking without being overly complicated. If you're coding professionally, syntastic is pretty essential as it'll catch dumb mistakes like syntax errors, functionality that is pretty much taken for granted in a traditional IDE.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-5" id="outline-container-https-github-com-xolox-vim-easytags-easytags"&gt;
&lt;h5 id="https-github-com-xolox-vim-easytags-easytags"&gt;&lt;a href="https://github.com/xolox/vim-easytags"&gt;Easytags&lt;/a&gt;&lt;/h5&gt;
&lt;div class="outline-text-5" id="text-orgc7cec3c"&gt;
&lt;p&gt;
Tags are a pretty basic function of vim, but using them right can be challenging. To that end, I use vim-easytags to handle the bulk of what can make tags complicated. Again, for professional software development, it's plum necessary.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-5" id="outline-container-https-github-com-scrooloose-nerdtree-nerdtree"&gt;
&lt;h5 id="https-github-com-scrooloose-nerdtree-nerdtree"&gt;&lt;a href="https://github.com/scrooloose/nerdtree"&gt;NERDTree&lt;/a&gt;&lt;/h5&gt;
&lt;div class="outline-text-5" id="text-orga170cf2"&gt;
&lt;p&gt;
Although I mostly use Ctrl-P for navigating files, NERDTree is good to have around to visualize directory structure or when simply browsing code. vim's built-in netrw has similar functionality but is more finicky.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-putting-it-together"&gt;
&lt;h4 id="putting-it-together"&gt;Putting it together&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orgd5708ff"&gt;
&lt;p&gt;
I've mentioned good plugins and settings, but how does it look?
&lt;/p&gt;

&lt;p&gt;
If I were to hand you a template &lt;code&gt;.vimrc&lt;/code&gt;, I'd start with this:
&lt;/p&gt;

&lt;span class="org-src-tab"&gt;&lt;span&gt;Vimrc&lt;/span&gt;&lt;/span&gt;&lt;div class="org-src-legend"&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="org-string"&gt;Font used to highlight strings.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="org-function-name"&gt;Font used to highlight function names.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="org-constant"&gt;Font used to highlight constants and labels.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="org-vimrc-option"&gt;Font used for Vim&amp;#8217;s configuration options.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="org-vimrc-command"&gt;Font used for Vim Ex commands.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="org-comment"&gt;Font used to highlight comments.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="org-comment-delimiter"&gt;Font used to highlight comment delimiters.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="org-src-container"&gt;
&lt;pre class="src src-vimrc"&gt;&lt;code&gt;&lt;code&gt;&lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Basic settings&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;span class="org-vimrc-command"&gt;set&lt;/span&gt; &lt;span class="org-vimrc-option"&gt;nocompatible&lt;/span&gt;              &lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Eliminate backwards-compatability&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;span class="org-vimrc-command"&gt;set&lt;/span&gt; &lt;span class="org-vimrc-option"&gt;number&lt;/span&gt;                    &lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Enable line numbers&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;span class="org-vimrc-command"&gt;set&lt;/span&gt; &lt;span class="org-vimrc-option"&gt;ruler&lt;/span&gt;                     &lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Turn on the ruler&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;span class="org-vimrc-option"&gt;syntax&lt;/span&gt; &lt;span class="org-vimrc-command"&gt;on&lt;/span&gt;                     &lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Syntax highlighting&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;&lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Plugins&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;span class="org-vimrc-option"&gt;filetype&lt;/span&gt; off                  &lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Req'd for vundle&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;span class="org-vimrc-command"&gt;set&lt;/span&gt; &lt;span class="org-vimrc-option"&gt;rtp&lt;/span&gt;&lt;span class="org-constant"&gt;+=&lt;/span&gt;~/&lt;span class="org-constant"&gt;.&lt;/span&gt;&lt;span class="org-vimrc-command"&gt;vim&lt;/span&gt;/bundle/vundle &lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Vundle prelude&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;span class="org-vimrc-command"&gt;call&lt;/span&gt; vundle#&lt;span class="org-function-name"&gt;rc&lt;/span&gt;&lt;span class="org-rainbow-delimiters-depth-1"&gt;()&lt;/span&gt;              &lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;^&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;Bundle &lt;span class="org-string"&gt;'gmarik/vundle'&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;Bundle &lt;span class="org-string"&gt;'scrooloose/nerdtree'&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;Bundle &lt;span class="org-string"&gt;'kien/ctrlp.vim'&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;Bundle &lt;span class="org-string"&gt;'scrooloose/syntastic'&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;Bundle &lt;span class="org-string"&gt;'bling/vim-airline'&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;Bundle &lt;span class="org-string"&gt;'xolox/vim-misc'&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;Bundle &lt;span class="org-string"&gt;'xolox/vim-easytags'&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;&lt;/code&gt;
&lt;code&gt;&lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Post-vundle&lt;/code&gt;
&lt;code&gt;&lt;/span&gt;&lt;span class="org-vimrc-option"&gt;filetype&lt;/span&gt; plugin indent &lt;span class="org-vimrc-command"&gt;on&lt;/span&gt;     &lt;span class="org-comment-delimiter"&gt;" &lt;/span&gt;&lt;span class="org-comment"&gt;Req'd for vundle&lt;/span&gt;&lt;/code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
Then use vundle to install your bundled plugins:
&lt;/p&gt;

&lt;span class="org-src-tab"&gt;&lt;span&gt;shell&lt;/span&gt;&lt;/span&gt;&lt;div class="org-src-container"&gt;
&lt;pre class="src src-shell"&gt;&lt;code&gt;&lt;code&gt;git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle&lt;/code&gt;
&lt;code&gt;vim +BundleInstall +qall&lt;/code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
You're ready to go. Let's look at a practical example.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-navigating-the-jekyll-codebase"&gt;
&lt;h4 id="navigating-the-jekyll-codebase"&gt;Navigating the Jekyll codebase&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orga060324"&gt;
&lt;p&gt;
Using &lt;a href="http://jekyllrb.com/"&gt;jekyll&lt;/a&gt; (what I'm using to generate this site) as an example, I'll illustrate how this setup works. First, let's get the code, enter the code root, and start up vim. Note that we're starting vim with our working directory at the jekyll root.
&lt;/p&gt;

&lt;span class="org-src-tab"&gt;&lt;span&gt;shell&lt;/span&gt;&lt;/span&gt;&lt;div class="org-src-container"&gt;
&lt;pre class="src src-shell"&gt;&lt;code&gt;&lt;code&gt;&lt;span class="org-builtin"&gt;cd&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;git clone https://github.com/jekyll/jekyll.git jekyll-tmp&lt;/code&gt;
&lt;code&gt;&lt;span class="org-builtin"&gt;cd&lt;/span&gt; jekyll-tmp&lt;/code&gt;
&lt;code&gt;vim&lt;/code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
You're looking at the generic vim splash screen. Vim is extremely task-oriented &amp;ndash; although you could certainly browse around code using NERDTree, let's assume that there's a method you want to refactor in here.
&lt;/p&gt;

&lt;p&gt;
First, recursively generate tags for all files in your current working directory. This only needs to be done once in a new project, every subsequent save you perform will update your global tags file. Thus, within vim:
&lt;/p&gt;

&lt;pre class="example"&gt;
:UpdateTags -R .
&lt;/pre&gt;

&lt;p&gt;
Nice. This uses the easytags plugin. Now, let's assume you're been working on a file called build.rb, changing the way jekyll dynamically regnerates changed files. Use Ctrl-P to perform a fuzzy search for build.rb and jump right to it: Hit control-p, type 'build', and the file will be highlighted - then hit enter.
&lt;/p&gt;

&lt;pre class="example"&gt;
&amp;lt;Ctrl-P&amp;gt; build &amp;lt;Enter&amp;gt;
&lt;/pre&gt;

&lt;p&gt;
Now you're in &lt;code&gt;build.rb&lt;/code&gt;. You know that jekyll uses a method called watch() to observe your template files, regenerating static HTML if anything changes.
&lt;/p&gt;

&lt;p&gt;
You can get to watch() in a couple of different ways:
&lt;/p&gt;

&lt;ul class="org-ul"&gt;
&lt;li&gt;Just search for it. You may have to hit &lt;code&gt;n&lt;/code&gt; a few times to jump to the right "watch" string, but it's simple and works. &lt;code&gt;/watch&amp;lt;Enter&amp;gt;nnn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Use Ctrl-P's builtin fuzzy tag searcher: &lt;code&gt;:CtrlPTag&amp;lt;enter&amp;gt;watch&amp;lt;enter&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Use vim's builtin tag navigator: &lt;code&gt;:tag watch&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Any of those commands will get you to the watch() method. Now, looking inside the method (browse with the &lt;code&gt;hjkl&lt;/code&gt; keys), let's say you want to look more in-depth at the &lt;code&gt;process_site&lt;/code&gt; method. Fine - place your cursor over the method call (line 53, column 16 in my build.rb) and hit &lt;code&gt;Ctrl-]&lt;/code&gt;:
&lt;/p&gt;

&lt;pre class="example"&gt;
/process_site&amp;lt;enter&amp;gt;&amp;lt;Ctrl-]&amp;gt;
&lt;/pre&gt;

&lt;p&gt;
Vim used its tags file as an index to jump to where &lt;code&gt;process_site&lt;/code&gt; is defined. From there you can hit Ctrl-T to jump up one level in the tag stack you're working on.
&lt;/p&gt;

&lt;p&gt;
Back in watch() (use &lt;code&gt;:tags watch&lt;/code&gt; to get back there if you aren't) find a line and create a ruby syntax error (if you want to make the change I did, execute &lt;code&gt;53gg$x&lt;/code&gt; and save the file &lt;code&gt;:w&lt;/code&gt; (my errors have a custom unicode character for errors, your error marker may be different.)
&lt;/p&gt;


&lt;div class="figure" id="orge338dad"&gt;
&lt;p&gt;&lt;img alt="vimerror.png" class="mainline" src="../assets/images/vimerror.png" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class="figure-number"&gt;Figure 2: &lt;/span&gt;Vim errors are highlighted in the sidebar and in vim-airline's status bar&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
If syntastic is working (it should) it'll highlight your syntax error. Many filetypes work by default (like ruby), others like python require more effort (to install the syntax checker binary.) However, that's just a matter of installing a binary in your $PATH like flake8. Look in &lt;code&gt;~/.vim/bundle/syntastic/syntax_checkers&lt;/code&gt; to figure out what syntax checkers syntastic is looking for.
&lt;/p&gt;

&lt;p&gt;
Also note that vim-airline is integrating with syntastic to show you any errors or warnings in its status bar (it denotes a syntax error &amp;ndash; vim-airline will also alert you to whitespace errors and the like.)
&lt;/p&gt;

&lt;p&gt;
As a final demonstration, enter &lt;code&gt;:NERDTree&lt;/code&gt; (note that you can tab-complete these vim commands.) NERDTree will open up and you can browse the directory structure from here to get an overview of the the jekyll project. &lt;code&gt;:q&lt;/code&gt; closes the window.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-post-exercise"&gt;
&lt;h4 id="post-exercise"&gt;Post-exercise&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org32b52c8"&gt;
&lt;p&gt;
This was a contrived example, but you can extrapolate from here. For example, as fuzzy searching for files is useful, fuzzy searching for tags is even moreso. Ctrl-P has a function for this. Here's the steps you'd take to implement a shortcut for yourself.
&lt;/p&gt;

&lt;ul class="org-ul"&gt;
&lt;li&gt;Look at Ctrl-P's help page. &lt;code&gt;:help ctrlp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Search for tag support (search for tags with &lt;code&gt;/tags&amp;lt;enter&amp;gt;&lt;/code&gt; and hit &lt;code&gt;n&lt;/code&gt; a few times before you find what you want)&lt;/li&gt;
&lt;li&gt;You'll find that the command &lt;code&gt;:CtrlPTag&lt;/code&gt; exists which will search available tags.&lt;/li&gt;
&lt;li&gt;Create a nice shortcut to invoke the command. The following snippet will work:&lt;/li&gt;
&lt;/ul&gt;

&lt;span class="org-src-tab"&gt;&lt;span&gt;Vimrc&lt;/span&gt;&lt;/span&gt;&lt;div class="org-src-legend"&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="org-vimrc-command"&gt;Font used for Vim Ex commands.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="org-src-container"&gt;
&lt;pre class="src src-vimrc"&gt;&lt;code&gt;&lt;code&gt;&lt;span class="org-vimrc-command"&gt;nnoremap&lt;/span&gt; &lt;span class="org-constant"&gt;&amp;lt;&lt;/span&gt;leader&lt;span class="org-constant"&gt;&amp;gt;&lt;/span&gt;&lt;span class="org-vimrc-command"&gt;t&lt;/span&gt; :CtrlPTag&lt;span class="org-constant"&gt;&amp;lt;&lt;/span&gt;CR&lt;span class="org-constant"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
Now &lt;code&gt;&amp;lt;leader&amp;gt;t&lt;/code&gt; will open up Ctrl-P's tag search window. Leader commands provide you with a good starting point for custom commands &amp;ndash; by default, &lt;code&gt;&amp;lt;leader&amp;gt;&lt;/code&gt; is mapped to &lt;code&gt;\&lt;/code&gt;. Thus the keystroke &lt;code&gt;\t&lt;/code&gt; while in normal mode will open up the fuzzy tag search window.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-conclusion"&gt;
&lt;h4 id="conclusion"&gt;Conclusion&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orgbbc6d4f"&gt;
&lt;p&gt;
This only scratches the surface of what you can do with vim, and I myself have a big &lt;code&gt;.vimrc&lt;/code&gt; with lots of changes not mentioned here. As I mentioned, start with a basic foundation and gradually build up your &lt;code&gt;.vimrc&lt;/code&gt; as you think of ways to streamline your workflow or run into nice plugins or settings around the Internet.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>Tyblog</author><pubDate>Wed, 25 Dec 2013 09:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.tjll.net/yet-another-vim-setup/</guid></item><item><title>The Heavenly Gift Tag</title><link>http://localhost:4999/articles/2013/12/25/heavenly-gift-tag/</link><description>&lt;blockquote&gt;
&lt;p&gt;For unto you is born this day in the city of David a Savior, who is Christ the Lord... And suddenly there was with the angel a multitude of the heavenly host praising God and saying, (Luke 2:11, 13 ESV)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When one picks a present for a loved one, the shopping and careful research brings joy. Concealing the chosen gift in beautiful wrapping paper can summon a smile as we imagine the look on our loved one's face when they discover and unwrap. The last and perhaps greatest joy is the reading of the tag and presentation of the gift, for the anticipation and joy meet at their highest point.&lt;/p&gt;
&lt;p&gt;The tag and presentation for the Greatest Gift of all occurred two-thousand years ago on the rolling hillsides around Bethlehem. The angelic choirs proclaimed &amp;quot;To: All mankind From: God&amp;quot; to a bleary eyed and wondering group of shepherds, but even they could not fail to recognize the royal print on the wrapping paper and holy handwriting on the note.&lt;/p&gt;
&lt;p&gt;Thank you, Heavenly Father, for the joy and surprise of the gift receiver is ours today and on every Christmas. Let our hearts be filled with warmth and true gratefulness in this season, and may we never set aside the desire for more of that Gospel joy until the day we celebrate in eternity with the Gift-Giver. May we glow with joy and praise as the angels did that night, and may your glory draw all men to yourself. In Jesus' name, amen.&lt;/p&gt;</description><author>trv.rs</author><pubDate>Wed, 25 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/12/25/heavenly-gift-tag/</guid></item><item><title>On GitHub</title><link>https://captnemo.in/blog/2013/12/25/on-github/</link><description>&lt;p&gt;I am an Internet addict. And the website I’m most addicted to is called GitHub. GitHub is a social code hosting website that is totally awesome. Not your general run-of-the-mill awesome, but rather ass-kicking best-thing-in-the-world awesome. If GitHub was a ninja, it would be Po, defeating the evil clutches of SourceForge.&lt;/p&gt;

&lt;p&gt;When Linux was released a couple of decades ago, it was hosted on a university FTP server. Today, the days of FTP are way past, and unless your code is hosted on a code-sharing website like GitHub, it is as good as dead. The last decade has seen an explosive grown in software and the open source movement. Things like GitHub, Linux, Android, Facebook have been made possible due to the combine efforts of millions across the globe following the Unix philosophy of doing one thing well.&lt;/p&gt;

&lt;p&gt;Ahh, I digress. The point I’m trying to make is that it is very hard to explain to a layman how important GitHub  has been to the software community. It has been used as a collaboration platform for writers, law makers, governments, programmers, and even musicians. People have used its issue tracking feature to even plan weddings. And above all, people adore GitHub. It is one of the few startups that have been accorded God status in the community.&lt;/p&gt;

&lt;p&gt;The question here is what makes GitHub tick? As the largest hosting site for code, it obviously makes a huge impact just by virtue of being there. But its tide of features and innovative progression had made it a darling of all. For instance, their 1 click to fork feature has allowed people to contribute to any project so much easier.&lt;/p&gt;

&lt;p&gt;GitHub has an amazing User Experience, making sure it works  perfectly on all devices large or small. Their amazing support makes sure all of its users are happy as possible. Their regular meetups makes sure that GitHub is invested in the software community themselves. And their GitHub Store lets people invest back in GitHub by romoting them via Tees, stickers and  even laptop sleeves.&lt;/p&gt;

&lt;p&gt;My personal experience with GitHub has been overwhelmingly positive. People have stood beside GitHub even as they faced major issues, and for me that is indicative of a trust in GitHub that no money can buy. The GitHub API (which I’ve used more than once) lets developers create their own apps on top of GitHub which others can use to create even more awesome things.&lt;/p&gt;

&lt;p&gt;For me GitHub is more than just a coding website. It is a testament to creativity and the Hacker Way, reminding me every day that anything is possible.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Wed, 25 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2013/12/25/on-github/</guid></item><item><title>Lifting Up My Soul</title><link>http://localhost:4999/articles/2013/12/24/lifting-up-my-soul/</link><description>&lt;p&gt;&lt;img alt="Serenity" src="http://farm4.staticflickr.com/3810/9470330469_427d6a522c_b.jpg" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Let me hear in the morning of your steadfast love, for in you I trust. Make me know the way I should go, for to you I lift up my soul. (Psalm 143:8 ESV)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jesus, this whole Psalm is the song of my heart today and encouragement to my soul. I feel downtrodden and alone, and am wondering where to turn. I feel condemned by my past failures, and am haunted by the ghosts of my sins. They gibber and scream in the corners of my mind, pointing ghastly fingers of accusation at me, dragging me into the pit with guilt and sorrow.&lt;/p&gt;
&lt;p&gt;But I will not fall to this. I &lt;em&gt;will&lt;/em&gt; like David think on your mighty deeds. I will make my mind dwell on the history of your grace throughout all time and your personal mercies to me and my family. How can I doubt such boundless and eternal love when it stretches throughout all of history and extends to giving of yourself for my salvation?&lt;/p&gt;
&lt;p&gt;Do not hide your face from me. The more parched I am, the more I thirst for your goodness. Let me hear in the morning of your steadfast love. Let the first whisper of thought and word in my mind as I awake be “YOU ARE LOVED” and may I rest in this truth, putting to shame the enemies of my soul.&lt;/p&gt;
&lt;p&gt;Image: &lt;a href="http://www.flickr.com/photos/evantravers/9470330469/"&gt;Serenity&lt;/a&gt; by &lt;a href="http://www.flickr.com/photos/evantravers/"&gt;me&lt;/a&gt;&lt;/p&gt;</description><author>trv.rs</author><pubDate>Tue, 24 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/12/24/lifting-up-my-soul/</guid></item><item><title>Solved: Jetty doesn't show errors on web application start-up</title><link>https://www.databasesandlife.com/libjetty-extra/</link><description>&lt;p&gt;From a certain version of the &amp;ldquo;jetty&amp;rdquo; package in Debian Linux, if the web application didn&amp;rsquo;t start up (servlet init() throws an Exception), this error wasn&amp;rsquo;t logged anywhere. The solution is to install the &lt;a href="http://packages.debian.org/search?keywords=libjetty-extra" rel="noopener noreferrer" target="_blank"&gt;libjetty-extra&lt;/a&gt; package.&lt;/p&gt;
&lt;pre&gt;sudo apt-get install libjetty-extra
&lt;/pre&gt;
&lt;p&gt;It took some amount of experimentation to find the solution. I don&amp;rsquo;t know why you&amp;rsquo;d ever want to not log errors; i.e. why the logging of errors is an &amp;ldquo;extra&amp;rdquo;.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Mon, 23 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/libjetty-extra/</guid></item><item><title>Prisoners</title><link>https://olshansky.info/movie/prisoners/</link><description>Olshansky's review of Prisoners</description><author>🦉 olshansky 🦁</author><pubDate>Sun, 22 Dec 2013 15:30:58 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/prisoners/</guid></item><item><title>Drew Magary's Fantastic Interview with Phil Robertson</title><link>https://zacs.site/blog/drew-magarys-fantastic-interview-with-phil-robertson.html</link><description>&lt;p&gt;Recently, Phil Robertson of the sensational cable TV program Duck Dynasty has drawn quite a bit of &lt;a href="http://www.npr.org/blogs/monkeysee/2013/12/19/255430555/duck-and-cover-what-exactly-is-the-point"&gt;flack&lt;/a&gt; for his very Christian views kept largely hidden until now through A&amp;amp;E&amp;#8217;s refusal to air his more candid statements. Setting personal opinions aside though and totally disregard the absurdity of crucifying Phil for his beliefs because today&amp;#8217;s hyper-sensitive, disgustingly entitled society seeks to vilify everyone who challenges their nuanced values, and looking at this from an unbiased standpoint, a very interesting lifestyle emerges in &lt;a href="http://www.gq.com/entertainment/television/201401/duck-dynasty-phil-robertson"&gt;Drew Magary&amp;#8217;s article for GQ&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;incidentally, the article that started this whole debacle. The entire piece is excellent, but if I had to pick my favorite line it came down to Drew&amp;#8217;s revelatory experience toward the end, for I can relate to that very feeling myself:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/drew-magarys-fantastic-interview-with-phil-robertson.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 22 Dec 2013 12:04:59 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/drew-magarys-fantastic-interview-with-phil-robertson.html</guid></item><item><title>Frequency-based improvement</title><link>http://dimitarsimeonov.com/2013/12/22/learning-with-frequency</link><description>&lt;p&gt;When I joined college I was a pretty bad swimmer. During freshman year I took some beginner/intermediate swimming classes and learned proper swimming technique for stomach crawl, breaststroke and butterfly. The next year I saw this class called Master’s swimming,  spoke to the coach and signed up for it. I was by far the weakest swimmer in the class. Everybody else had great stamina and technique.  We would do series of 50 metres swimming for 50 seconds and then 10 seconds break until the  next series. In the course of an hour others would cover around 3km. In the beginning I had such a low stamina I would barely make it past 1. 5km per practice.&lt;/p&gt;

&lt;p&gt;I thought that the coach would tell me to switch to a less demanding class, but to my surprise he never did. Instead he gave me advice how to swim better. Some of his advice was about the technique- “keep your head low when you breathe”,  “insert your hand at an angle when you swim crawl- it takes less energy”. But he also had some mindset advice which I think generalizes very well to other parts of life -“When you are tired focus on performing your  technique correctly” and “Frequency is more important than intensity [of the workout] “&lt;/p&gt;

&lt;p&gt;At the time, both of those advices were counterintuitive to me.  When I was tired I would preserve my energy by being lazy, half-assing my technique and slowing down, barely surviving through the rest of the practice. I thought this wasn’t that bad but the coach got me corrected. When I practiced with improper technique my movements would get worse and worse over time as the improper technique becomes the norm. As I focus on technique, it helped get my mind off the tiredness, and also conscously think about exactly what I was doing. Surprisingly, this also improved my technique even in cases where I thought I had it figured out.&lt;/p&gt;

&lt;p&gt;Regading his second advice, that the frequency is more important than the intensity, I noticed that by going regularly to practice (which for me was twice a week) I would get in a better shape and be able to swim 2+ km per practice. It would also make it easier to keep improving as it would be easier for me to pick up from where I left off. Without regular practice even if we focus on doing quality effort we get off-shape and our muscles atrophy. Thats why I think that the second advice, that frequency is more important than intensity is stronger advice than the first one- focusing on correctness.&lt;/p&gt;

&lt;p&gt;Focusing on correctness could also be possible in situations where it is not very clear what correctness means, but some feedback is available - in this case I would consider regular practice plus feedback to be a better way to learn and improve.&lt;/p&gt;

&lt;p&gt;I’ve read of this study [1] that asked students to make as good of a clay pot as possible. The students were divided into two groups, the ones in the first would make a new pot every day, while the ones in the second would work on one pot for fifty days to reach perfection. The kids that did a new pot everyfday outperformed  that were perfecting their single pot. Their pots had better quality.&lt;/p&gt;

&lt;p&gt;Did the students in the second group only cared about completing their daily assigned pot? But also they had self produced feedback - they could look at the differences in their process and in their results from day to day, learn what makes for better results and improve. They had the benefit of being able to start anew and thus not getting stuck with bad choices. If they thought there was a better design they were free to try it. Going for quantity won over going for quality alone; frequency won over intensity.&lt;/p&gt;

&lt;p&gt;Practicing regularly collects a lot of examples and experience for our brains to learn from. The more varied the experience the better the learning. Focusing on correctness when tired, when reaching our physical or knowledge limits allows us to generate more informative experience, bringing more clarity and skill.&lt;/p&gt;

&lt;p&gt;Whenever, I’m trying to get good at something I try use these m advices for guidance - “frequency is more important than intensity”,  and “focus on doing it correctly”, even though it might feel slower or more painful. There is the hope and the promise that after enough repetitions i will get good at it, just as the kids who built the clay pots got good at them. Starting small and not worrying about perfection helps me keep the frequency high until I gradually improve to the point where I can start focusing on correct technique.&lt;/p&gt;

&lt;p&gt;[1] http://www.lifeclever.com/what-50-pounds-of-clay-can-teach-you-about-design&lt;/p&gt;</description><author>D13V</author><pubDate>Sun, 22 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://dimitarsimeonov.com/2013/12/22/learning-with-frequency</guid></item><item><title>One Game a Month (#1GAM) Done!</title><link>https://liza.io/one-game-a-month-1gam-done/</link><description>&lt;p&gt;Well, One Game a Month is done! I&amp;rsquo;ve managed to complete 12 games for the year. My motivation by the end was lacking, so I took it kind of easy this month and made a very simple and quick game called &lt;a href="http://liza.io/simonsays"&gt;Simon Says&lt;/a&gt;. Last month&amp;rsquo;s game, &lt;a href="http://liza.io/9to5"&gt;9 to 5&lt;/a&gt;, took much longer due to the number of art assets required. I&amp;rsquo;ll write a proper post about the challenge, how everything went, etc later.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 22 Dec 2013 01:23:40 GMT</pubDate><guid isPermaLink="true">https://liza.io/one-game-a-month-1gam-done/</guid></item><item><title>Vagrant vsftp and other tricks</title><link>https://purpleidea.com/blog/2013/12/21/vagrant-vsftp-and-other-tricks/</link><description>&lt;p&gt;&lt;a href="https://purpleidea.com/blog/2013/12/09/vagrant-on-fedora-with-libvirt/" title="Vagrant on Fedora with libvirt"&gt;As I previously wrote, I&amp;rsquo;ve been busy with Vagrant on Fedora with libvirt&lt;/a&gt;, and have even been &lt;a href="https://github.com/mitchellh/vagrant/pull/2677"&gt;submitting&lt;/a&gt;, &lt;a href="https://github.com/fgrehm/vagrant-cachier/pull/68"&gt;patches&lt;/a&gt; and &lt;a href="https://github.com/mitchellh/vagrant/issues/2680"&gt;issues&lt;/a&gt;! (&lt;a href="https://github.com/pradels/vagrant-libvirt/issues/107"&gt;This &amp;ldquo;&lt;em&gt;closed&lt;/em&gt;&amp;rdquo; issue needs solving!&lt;/a&gt;) Here are some of the tricks that I&amp;rsquo;ve used while hacking away.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Default provider&lt;/span&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I should have mentioned this in my earlier article but I forgot: If you&amp;rsquo;re always using the same provider, you might want to set it as the default. In my case I&amp;rsquo;m using &lt;a href="https://github.com/purpleidea/vagrant-libvirt"&gt;vagrant-libvirt&lt;/a&gt;. To do so, add the following to your &lt;code&gt;.bashrc&lt;/code&gt;:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sat, 21 Dec 2013 13:58:49 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/12/21/vagrant-vsftp-and-other-tricks/</guid></item><item><title>The Hangover Part III</title><link>https://olshansky.info/movie/the_hangover_part_iii/</link><description>Olshansky's review of The Hangover Part III</description><author>🦉 olshansky 🦁</author><pubDate>Sat, 21 Dec 2013 04:31:34 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_hangover_part_iii/</guid></item><item><title>Does Facebook Hate Christmas?</title><link>https://kevinohashi.com/21/12/2013/does-facebook-hate-christmas</link><description>&lt;p&gt;Linkbait title aside. This is the story of a holiday card gone wrong because of Facebook's advertising rules.&lt;/p&gt;
&lt;p&gt;Backstory: I work at a co-working space in Washington, DC called &lt;a href="http://affinitylab.com"&gt;Affinity Lab&lt;/a&gt;. This happened to one of my co-workers, Mike who works at a company called ISG.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://kevinohashi.com/sites/default/files/isg original image.png" /&gt;&lt;/p&gt;
&lt;p&gt;His company created a virtual holiday card and shared it on Facebook. It seems innocuous enough. In his words 'it's a no brainer to boost posts for $5, it goes from 10% to 100% for us.' This wasn't the first time he's done this and he's never had any issues. He just wanted all his clients to see the post.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://kevinohashi.com/sites/default/files/facebook post status.png" /&gt;&lt;/p&gt;
&lt;p&gt;And then it wasn't boosted.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://kevinohashi.com/sites/default/files/crappng.png" /&gt;&lt;/p&gt;
&lt;p&gt;And then this notification came through.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://kevinohashi.com/sites/default/files/banned email.png" /&gt;&lt;/p&gt;
&lt;p&gt;So the issue was too much text in a holiday card.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://kevinohashi.com/sites/default/files/reason.png" /&gt;&lt;/p&gt;
&lt;p&gt;So we checked out with Facebook's tool. And it was astonishing how they calculated that it broke the rules. I can imagine a lot of content that is really awesome that you couldn't promote if this rule is really strictly enforced (every infographic ever?). I understand the spirit of the rule, but in practice it seems quite flawed.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://kevinohashi.com/21/12/2013/does-facebook-hate-christmas" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;</description><author>Kevin Ohashi</author><pubDate>Sat, 21 Dec 2013 00:16:28 GMT</pubDate><guid isPermaLink="true">https://kevinohashi.com/21/12/2013/does-facebook-hate-christmas</guid></item><item><title>Python script to check last exec time and exit code of script</title><link>https://www.zufallsheld.de/2013/12/20/python-script-check-last-exec-time-exit-code-script-2/</link><description>&lt;p&gt;I needed a script that&amp;nbsp;checks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whether a &lt;a href="http://en.wikipedia.org/wiki/Cron" title="Cron"&gt;cronjob&lt;/a&gt; ran at its determined date (that means it runs&amp;nbsp;regularly)&lt;/li&gt;
&lt;li&gt;if the cronjob ran&amp;nbsp;successfully&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It should also be monitor-able via &lt;a href="http://www.nagios.org" title="Nagios"&gt;Nagios&lt;/a&gt;. That means, it should
provide a meaningful output for when something went wrong with the
cronjob, e.g. &amp;#8220;&lt;span class="caps"&gt;CRITICAL …&lt;/span&gt;&lt;/p&gt;</description><author>zufallsheld</author><pubDate>Fri, 20 Dec 2013 20:30:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/12/20/python-script-check-last-exec-time-exit-code-script-2/</guid></item><item><title>[12.20.13] Electric Scooter MK01: (WITH SNOW-MODE)</title><link>https://transistor-man.com/electricscooter_mk01.html</link><description>Detailed build log of 7kw electric scooter</description><author>transistor-man.com</author><pubDate>Fri, 20 Dec 2013 10:38:38 GMT</pubDate><guid isPermaLink="true">https://transistor-man.com/electricscooter_mk01.html</guid></item><item><title>Kick-Ass 2</title><link>https://olshansky.info/movie/kick-ass_2/</link><description>Olshansky's review of Kick-Ass 2</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 20 Dec 2013 05:53:47 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/kick-ass_2/</guid></item><item><title>The Wolverine</title><link>https://olshansky.info/movie/the_wolverine/</link><description>Olshansky's review of The Wolverine</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 20 Dec 2013 05:53:36 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_wolverine/</guid></item><item><title>Testing a NAS hard drive over FTP</title><link>https://anisse.astier.eu/testing-a-nas-hard-drive-over-ftp.html</link><description>&lt;p&gt;So I have this NAS made by my ISP, that does a lot of things; but recently, I
started having issues with its behavior. Recorded TV shows had lag/jitter while replaying, and the
same happened with other types of videos I put on it. I narrowed it down to …&lt;/p&gt;</description><author>Linux Engineer's random thoughts</author><pubDate>Fri, 20 Dec 2013 01:00:00 GMT</pubDate><guid isPermaLink="true">https://anisse.astier.eu/testing-a-nas-hard-drive-over-ftp.html</guid></item><item><title>Digging in with Foreign Tables</title><link>/2013/12/19/Digging-in-with-Foreign-Tables/</link><description>&lt;p&gt;I wrote a couple months back about exploring FDWs. Its become quite clear to me, despite still having ample room for improvement, they&amp;rsquo;re not getting enough attention. Foreign data wrappers are perhaps better thought of as a foreign table, or even better yet as a view into some remote data source. They don&amp;rsquo;t take care of auto-updating or syncing data, thats all up to you, but it gives you a straight forward mapping to work with remote data easier.&lt;/p&gt;
&lt;p&gt;The first step in working with FDWs is getting them setup. I wrote an earlier post on how to do this manually. And if you&amp;rsquo;re on Heroku theres an even easier solution if you want to setup a mapping entirely from one DB to another. The &lt;a href=""&gt;pg-extras CLI plugin&lt;/a&gt; has a command &lt;code&gt;fdwsql&lt;/code&gt; which will generate the SQL to map all the tables for you. To run it simply specify the prefix app and database:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;heroku pg:fdwsql yourprefix APP::DATABASE_URL
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will generate a lot of SQL. From here you&amp;rsquo;ll want to connect to the database where you want those foreign tables to be visible. Then run all the SQL. This will create all the foreign tables, this will mostly look just like another view or table to you in &lt;code&gt;\d&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="tips-on-working-with-them"&gt;
&lt;div&gt;
Tips on working with them
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;For the most part you can work with your foreign tables just like any other view or table. You can insert into them, read from them, join against them. Though currently foreign tables have some performance limitations, such as when joining it may return a lot more data than you expect then join. To make your performance a bit more ideal you can follow a few basic principles.&lt;/p&gt;
&lt;p&gt;Lets look at some example tables to highlight this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; \d
users
todos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In this case users is local and the todos are a foreign table. Looking at each of the schemas we have something like you might expect:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; \d users
Table &amp;quot;public.users&amp;quot;
Column | Type | Modifiers
-------------+-----------------------------+-----------
id | integer | not null
email | text |
created_at | timestamp without time zone |
Indexes:
&amp;quot;users_pkey&amp;quot; PRIMARY KEY, btree (id)
&amp;quot;users_created&amp;quot; btree (created_at)
&amp;gt; \d todo
Foreign Table &amp;quot;public.todo&amp;quot;
Column | Type | Modifiers
-------------+-----------------------------+-----------
id | integer | not null
user_id | integer |
desc | text |
created_at | timestamp without time zone |
status | boolean |
Indexes:
&amp;quot;users_pkey&amp;quot; PRIMARY KEY, btree (id)
&amp;quot;todo_created&amp;quot; btree (created_at)
&lt;/code&gt;&lt;/pre&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 19 Dec 2013 22:55:56 GMT</pubDate><guid isPermaLink="true">/2013/12/19/Digging-in-with-Foreign-Tables/</guid></item><item><title>Somewhere to Belong</title><link>https://honestmusings.wordpress.com/2013/12/19/somewhere-to-belong/</link><description>Somewhere to Belong In a place the wind sways, Is a meadow to fritter away, Has a flower to hold  tears, And a shade until the sky clears. Lives a heart to hide a hurt, In the saint of the heart. Somewhere way way back, Near the river of the song, Says a tree of &amp;#8230; &lt;a class="more-link" href="https://honestmusings.wordpress.com/2013/12/19/somewhere-to-belong/"&gt;Continue reading &lt;span class="screen-reader-text"&gt;Somewhere to Belong&lt;/span&gt;&lt;/a&gt;</description><author>Honest Musings</author><pubDate>Thu, 19 Dec 2013 21:35:11 GMT</pubDate><guid isPermaLink="true">https://honestmusings.wordpress.com/2013/12/19/somewhere-to-belong/</guid></item><item><title>Mailbox Updated With Support for iCloud and Yahoo Mail</title><link>http://www.macstories.net/linked/mailbox-for-ios-updated-with-support-for-icloud-and-yahoo-mail/</link><description>&lt;p&gt;Great news. Now, the only reason I have left to keep Apple&amp;#8217;s Mail app around is for the occasional spam message, which Mailbox curiously does not have any way of handling. Once Mailbox builds that functionality in, I can happily say goodbye to Mail.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.macstories.net/linked/mailbox-for-ios-updated-with-support-for-icloud-and-yahoo-mail/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 19 Dec 2013 12:09:21 GMT</pubDate><guid isPermaLink="true">http://www.macstories.net/linked/mailbox-for-ios-updated-with-support-for-icloud-and-yahoo-mail/</guid></item><item><title>What. The. Fuck. Nokia.</title><link>http://www.loopinsight.com/2013/12/18/what-the-fuck-nokia/</link><description>&lt;p&gt;Jim Dalrymple with his characteristically ambiguous thoughts regarding Nokia&amp;#8217;s latest commercial, hot on the tails of Apple&amp;#8217;s &lt;a href="https://zacs.site/blog/misunderstood.html"&gt;spectacular&lt;/a&gt; ad &lt;em&gt;Misunderstood&lt;/em&gt;: &amp;#8220;Kids, this is why you don&amp;#8217;t do drugs while making a TV ad.&amp;#8221; I normally wouldn&amp;#8217;t have linked to such a thing as this, but it illustrates exactly why everyone devoted so much time and attention to &lt;em&gt;Misunderstood&lt;/em&gt; when it came out: with such &amp;#8220;competition&amp;#8221;, how could we not? Jim had one more thought on &lt;em&gt;For Work. For Play.&lt;/em&gt;, which he posted &lt;a href="https://twitter.com/jdalrymple/status/413328786412040193"&gt;to Twitter&lt;/a&gt; shortly after linking it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;So Apple comes out with a TV ad that brings a tear to your eye and Nokia scares the shot out of me.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Precisely.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.loopinsight.com/2013/12/18/what-the-fuck-nokia/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 19 Dec 2013 10:10:20 GMT</pubDate><guid isPermaLink="true">http://www.loopinsight.com/2013/12/18/what-the-fuck-nokia/</guid></item><item><title>Node.js and V8 history</title><link>https://danielpecos.com/2013/12/19/nodejs-v8-history/</link><description>&lt;p&gt;Talking about Node.js history, it&amp;rsquo;s talking a little bit about V8 history. But let&amp;rsquo;s start with a one line definition of what  it is: Node.js is a platform built around Google Chrome V8 Javascript engine, to create lightweight, fast, scalable, event-driven and non-blocking I/O applications. So lets begin talking about Node.js origins, the V8 javascript engine.&lt;/p&gt;
&lt;p&gt;V8 is an opensource project by Google and it is in the very core of Google Chrome browser. Its first public release was on September 2, 2008, same date Chrome&amp;rsquo;s first release was announced. It was a big step forward in browsers&amp;rsquo; performance, and it pushed browsers&amp;rsquo; technology to a new whole level. It&amp;rsquo;s written in C++ and its biggest revolution was that it precompiled the Javascript source code to machine code instead of just interpret it and then applied a JIT process again in runtime to improve dynamic code execution.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Ryan Dahl - Creator of Node.js" class="size-medium" height="172" src="https://danielpecos.com/assets/2013/12/ryan_dahl-300x172.jpg" width="300" /&gt;Ryan Dahl – Creator of Node.js&lt;/p&gt;
&lt;p&gt;Then, around 2009, Ryan Dahl was trying to solve a tough problem in that days: making the browser know how much time of an upload process was left. Inspired by Ruby&amp;rsquo;s Mongrel webserver and by the recent release of Chrome and V8, he decided to give Javascript a chance, creating the seeds that would transform in short time into Node.js.&lt;/p&gt;
&lt;p&gt;The project has been develop and sponsored by Joyent, company where Ryan was working. Nowadays he is still working there, but has stepped back, delegating the gatekeeper position to Isaac Schlueter on January 30, 2012.&lt;/p&gt;
&lt;p&gt;If you are interested in further details about Ryan Dahl and how and why he decided to create Node.js, here you have a video of himself talking about that:&lt;/p&gt;
&lt;p&gt;&lt;span class="embed-youtube" style="text-align: center; display: block;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="line-height: 1.5em;"&gt;Historically, Javascript browser environments are limited to just one execution process / thread, making impossible to update DOM and execute some business logic simultaneously, and this also applied to V8, so, why someone would be interested in such limited and poor performance platform to run in a server environment?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Well, truth is that maybe Javascript is not the most calculation efficient language available, but its event-driven non blocking design, makes Node.js one of the lightweight platforms (runs really well in a RaspberryPI) and more performant web platforms, competing directly with the old JEE Java Platform, PHP and Ruby.&lt;/p&gt;
&lt;p&gt;From a developer perspective, the amount of innovation the Node.js community is creating is simply astonishing, and that&amp;rsquo;s also because one of the three other key tools a Node.js developer must known: NPM.&lt;/p&gt;
&lt;p&gt;But this is a story we will address another day.&lt;/p&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Nodejs"&gt;http://en.wikipedia.org/wiki/Nodejs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/V8"&gt;http://en.wikipedia.org/wiki/V8&lt;/a&gt;_(JavaScript_engine)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.google.com/p/v8/"&gt;https://code.google.com/p/v8/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>GeekWare - Daniel Pecos Martínez</author><pubDate>Thu, 19 Dec 2013 07:15:38 GMT</pubDate><guid isPermaLink="true">https://danielpecos.com/2013/12/19/nodejs-v8-history/</guid></item><item><title>The end of the Facebook era</title><link>http://takeaswig.com/the-end-of-the-facebook-era</link><description>&lt;p&gt;Via &lt;a href="http://brooksreview.net/2013/12/not-soon-enough/"&gt;Ben Brooks&lt;/a&gt;, Chrys Bader takes a very interesting look at where Facebook came from, its current state, and the platform&amp;#8217;s bleak future. With the exception of Twitter I have all but abandoned social networks, including the venerable elder statesman Facebook, so I rarely take any interest in articles examining them. I followed Ben&amp;#8217;s link on a whim though, and I&amp;#8217;m very glad I did.&lt;/p&gt;

&lt;p&gt;Especially damning, I thought, was his comparison of Facebook to LinkedIn: &amp;#8220;Teens likely see Facebook the same way the Facebook generation sees LinkedIn&amp;#160;&amp;#8212;&amp;#160;like a utilitarian place to manage connections.&amp;#8221; Facebook has crossed the Rubicon, so to speak; from here no amount of money will ever bring it back.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://takeaswig.com/the-end-of-the-facebook-era"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 18 Dec 2013 10:06:13 GMT</pubDate><guid isPermaLink="true">http://takeaswig.com/the-end-of-the-facebook-era</guid></item><item><title>Converting from JUnit to TestNG</title><link>https://www.craigpardey.com/post/2013-12-18-converting-from-junit-to-testng/</link><description>&lt;p&gt;The TestNG Eclipse plugin has a feature that will convert your unit tests from
JUnit to TestNG in a few simple clicks, and it works pretty well for the most
part. However, I soon noticed that it was replacing Assert.assertX with
AssertJUnit.assertX. Upon further inspection, this was because TestNG&amp;rsquo;s Assert
uses different argument ordering. For example&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// JUnit  
Assert.assertEquals(message, expected, actual);

// TestNG  
Assert.assertEquals(actual, expected, message);  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Each argument has moved.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Wed, 18 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-12-18-converting-from-junit-to-testng/</guid></item><item><title>On 2013</title><link>https://98.codes/on-2013/</link><description>&lt;!--kg-card-begin: markdown--&gt;&lt;blockquote&gt;
&lt;p&gt;But Greg... you can&amp;apos;t post this stuff yet! Christmas isn&amp;apos;t until, like, Wednesday!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yeah, and Christmas is poised to invade Labor Day next year. Shut up.&lt;/p&gt;
&lt;p&gt;About this time last year, I was just so ready for 2012 to end. It was a terrible, horrible, no&lt;/p&gt;</description><author>Text(Greg);</author><pubDate>Tue, 17 Dec 2013 21:51:28 GMT</pubDate><guid isPermaLink="true">https://98.codes/on-2013/</guid></item><item><title>"We Need to Talk About TED"</title><link>http://www.bratton.info/projects/talks/we-need-to-talk-about-ted/</link><description>&lt;p&gt;I rarely find anything worthwhile on Hacker News&amp;#160;&amp;#8212;&amp;#160;primarily interesting coding projects and the latest NSA story to catch the masses&amp;#8217; attention, rarely anything substantive&amp;#160;&amp;#8212;&amp;#160;but when I do come across something interesting it really is truly exceptional. This article from Benjamin Bratton is one of those excellent pieces, one for the record books. I can&amp;#8217;t wait to watch his talk.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.bratton.info/projects/talks/we-need-to-talk-about-ted/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 17 Dec 2013 17:40:26 GMT</pubDate><guid isPermaLink="true">http://www.bratton.info/projects/talks/we-need-to-talk-about-ted/</guid></item><item><title>The Sweet Setup</title><link>http://thesweetsetup.com/</link><description>&lt;p&gt;&lt;a href="https://twitter.com/thesweetsetup/status/412998256562405376"&gt;Four weeks old today&lt;/a&gt; and I have yet to at least mention Shawn Blanc&amp;#8217;s &lt;a href="http://thesweetsetup.com/"&gt;The Sweet Setup&lt;/a&gt;. For the three people who still have not visited this site, The Sweet Setup collects and reviews best-in-class apps for iOS and OS X alike, with a special focus on interviewing &amp;#8220;internet celebrities&amp;#8221; to discuss their home and mobile computing setups. So far, Shawn Blanc and &lt;a href="http://thesweetsetup.com/colophon/"&gt;his impressive staff&lt;/a&gt; have conducted &lt;a href="http://thesweetsetup.com/category/sweet-setup-interview/"&gt;six of these interviews&lt;/a&gt;. &lt;a href="https://zacs.site/blog/diary-of-a-convert.html"&gt;As a recent Mac convert&lt;/a&gt; I have found this site invaluable in picking great new desktop apps, so if you haven&amp;#8217;t yet, I strongly recommend you check this site out.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://thesweetsetup.com/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 17 Dec 2013 16:55:22 GMT</pubDate><guid isPermaLink="true">http://thesweetsetup.com/</guid></item><item><title>Ben Thompson on Apple's New *Misunderstood* Commercial</title><link>https://zacs.site/blog/ben-thompson-on-misunderstood.html</link><description>&lt;p&gt;Having updated &lt;a href="http://stratechery.com/2013/misunderstood/"&gt;his article on Apple&amp;#8217;s latest ad&lt;/a&gt;, Ben Thompson finally delved in to the reason so many fell in love with this commercial in the first place, and &lt;a href="https://twitter.com/drewcosten/status/412928515395158017"&gt;the reason&lt;/a&gt; so many have talked about it. As I said &lt;a href="https://zacs.site/blog/misunderstood.html"&gt;earlier&lt;/a&gt; this video hits so close to home because it does not focus on feature comparisons or implausible situations necessitating eighteen processors, but instead on the experiences Apple&amp;#8217;s devices enable:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/ben-thompson-on-misunderstood.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 17 Dec 2013 16:32:31 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/ben-thompson-on-misunderstood.html</guid></item><item><title>Misunderstood</title><link>https://zacs.site/blog/misunderstood.html</link><description>&lt;blockquote&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/misunderstood.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 17 Dec 2013 14:14:45 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/misunderstood.html</guid></item><item><title>Add to iCloud Reading List programmatically</title><link>https://caiustheory.com/add-to-icloud-reading-list-programmatically/</link><description>&lt;p&gt;One piece of a larger puzzle I&amp;rsquo;m trying to solve currently, was how to add a given URL to my Apple &amp;ldquo;&lt;a href="http://www.apple.com/uk/safari/#icloud"&gt;Reading List&lt;/a&gt;&amp;rdquo; that is stored in iCloud and synced across all my OS X and iOS devices. More specifically, I wanted to add URLs to the list from my mac running Mavericks (10.9). I had a quick look at the Cocoa APIs and couldn&amp;rsquo;t see anything in OS X to do this. (iOS has an API to do it from Cocoa-land it seems though.)&lt;/p&gt;
&lt;p&gt;I figured &lt;a href="http://www.apple.com/uk/safari/"&gt;Safari.app&lt;/a&gt; was the key to getting this done on OS X, given it has the ability itself to add the current page to the reading list, either via a keyboard command, a menu item, or a button in the address bar. One quick mental leap later, and I was wondering if the engineers at Apple had been nice enough to expose that via Applescript for me to take advantage of.&lt;/p&gt;
&lt;p&gt;One quick stop in &amp;ldquo;Script Editor.app&amp;rdquo; later, and I had the Applescript dictionary open for Safari.app. Lo and behold, there is rather handily an Applescript command called &amp;ldquo;add reading list item&amp;rdquo;, which does &lt;strong&gt;exactly&lt;/strong&gt; what I want. It has a few different options you can call it with, depending on whether you want Safari to go populate the title &amp;amp; preview text, or if you want to specify it yourself at save-time.&lt;/p&gt;
&lt;p&gt;As I want to be able to call this from multiple runtimes, I&amp;rsquo;ve chosen to save it as an executable, which leans on &lt;a href="https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/osascript.1.html"&gt;&lt;code&gt;osascript&lt;/code&gt;&lt;/a&gt; to run the actual Applescript. And here it is:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-applescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#!/usr/bin/env osascript&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nb"&gt;run&lt;/span&gt; &lt;span class="nv"&gt;argv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;count&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;tell&lt;/span&gt; &lt;span class="nv"&gt;app&lt;/span&gt; &lt;span class="s2"&gt;"Safari"&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;reading&lt;/span&gt; &lt;span class="nv"&gt;list&lt;/span&gt; &lt;span class="nb"&gt;item&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;item&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;argv&lt;/span&gt; &lt;span class="k"&gt;as &lt;/span&gt;&lt;span class="nc"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="nb"&gt;run&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save it as whatever you want (eg. &lt;code&gt;add_to_reading_list&lt;/code&gt;), make it executable (&lt;code&gt;chmod +x add_to_reading_list&lt;/code&gt;), and then run it with the URL you want saving as the first argument.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ add_to_reading_list &amp;quot;http://caius.name/&amp;quot;
$ add_to_reading_list &amp;quot;http://google.com/&amp;quot;
# … etc …
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;(Adding support for specifying preview text and title is left as an exercise for the reader!)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Have fun reading later!&lt;/p&gt;</description><author>Caius Theory</author><pubDate>Tue, 17 Dec 2013 00:26:31 GMT</pubDate><guid isPermaLink="true">https://caiustheory.com/add-to-icloud-reading-list-programmatically/</guid></item><item><title>Changes to First Crack</title><link>https://zacs.site/blog/changes-to-first-crack.html</link><description>&lt;p&gt;In &lt;a href="https://zacs.site/blog/disavow-gaming.html"&gt;&lt;em&gt;The One Where I Disavow Gaming&lt;/em&gt;&lt;/a&gt; I outlined two goals I wished to work towards using this newfound time of mine previously wasted &amp;#8220;mindlessly tapping the W, A, S, and D keys for hours on end&amp;#8221;: to write more regularly and code more frequently. A week later the former remains a work in progress, while I can happily report that the latter has gone so well I not only successfully fixed a number of outstanding bugs and implemented quite a few new features in the process, but went on to add some impressive functionality I hadn&amp;#8217;t even considered before then as well. Although this focus only allowed for a single post most days last week, I couldn&amp;#8217;t be happier with the results.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/changes-to-first-crack.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 16 Dec 2013 23:11:02 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/changes-to-first-crack.html</guid></item><item><title>Hello world! Node.js &amp;amp; Javascript blog</title><link>https://danielpecos.com/2013/12/16/hello-world-node-js-javascript-blog/</link><description>&lt;h3 id="wellcome-to-this-new-site-where-youll-find-lots-of-information-about-nodejs-javascript-and-html-5-technologies"&gt;Wellcome to this new site where you&amp;rsquo;ll find lots of information about Node.js, Javascript and HTML 5 technologies!&lt;/h3&gt;
&lt;img alt="Javascript" class="size-thumbnail alignnone" height="150" src="https://danielpecos.com/assets/2013/12/javascript_2-150x150.png" width="150" /&gt;
&lt;img alt="Node.js" class="alignnone" height="150" src="https://danielpecos.com/assets/2013/12/nodejs1-150x150.png" width="150" /&gt;
&lt;img alt="HTML5" class="size-thumbnail alignnone" height="150" src="https://danielpecos.com/assets/2013/12/html5-150x150.png" width="150" /&gt;
&lt;br style="clear: both;" /&gt;
&lt;p&gt;This project is a chance for me to share my passion about these new and amazing technologies, trying to make you easier to step into it and to discuss and enjoy technology talks to whomever who wants to.&lt;/p&gt;
&lt;p&gt;It will be mainly focused on &lt;strong&gt;Node.js&lt;/strong&gt;, but sometimes we will talk about generic Javascript or even frontend Javascript related to HTML5 capabilities.&lt;/p&gt;
&lt;p&gt;And if you consider yourself kind of a Node.js guru or simply would like to participate, please just contact me and you will be very welcome to collaborate.&lt;/p&gt;
&lt;p&gt;Hope you enjoy this content as much as I enjoyed creating it!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pssst!!&lt;/strong&gt; Don&amp;rsquo;t forget to follow us in &lt;a href="http://twitter.com/nodegeek"&gt;twitter&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="https://danielpecos.com/"&gt;Daniel Pecos Martínez&lt;/a&gt; (&lt;a href="http://twitter.com/danielpecos"&gt;@danielpecos&lt;/a&gt;)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;dl class="wp-caption aligncenter" id="attachment_44" style="width: 528px;"&gt;
  &lt;dt class="wp-caption-dt"&gt;
  &lt;/dt&gt;
&lt;/dl&gt;</description><author>GeekWare - Daniel Pecos Martínez</author><pubDate>Mon, 16 Dec 2013 14:35:57 GMT</pubDate><guid isPermaLink="true">https://danielpecos.com/2013/12/16/hello-world-node-js-javascript-blog/</guid></item><item><title>Указ 60 и ЕЭП</title><link>https://avodonosov.blogspot.com/2013/05/60.html</link><description>Давно думаю, не противоречит ли &lt;a href="http://ukaz60.net/node/7"&gt;указ №60&lt;/a&gt;&amp;nbsp;принципам &lt;a href="http://ru.wikipedia.org/wiki/%D0%95%D0%B4%D0%B8%D0%BD%D0%BE%D0%B5_%D1%8D%D0%BA%D0%BE%D0%BD%D0%BE%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE"&gt;Единого экономического пространства &lt;/a&gt;Беларуси, России и Казахстана?&lt;br /&gt;
&lt;br /&gt;
Вроде у нас свобода торговли, и вдруг раз - на территории Беларуси при оказании услуг с помощью информационных систем могут применяться только информационные сети, системы и ресурсы "национального сегмента сети Интернет, размещенных на территории Республики Беларусь и зарегистрированных в установленном порядке". Значит ли это, что например Российским системам, провайдерам хостинга и т.п. вход на Белорусский рынок закрыт?</description><author>blog</author><pubDate>Mon, 16 Dec 2013 10:13:01 GMT</pubDate><guid isPermaLink="true">https://avodonosov.blogspot.com/2013/05/60.html</guid></item><item><title>issue 9999</title><link>https://avodonosov.blogspot.com/2013/09/issue-9999.html</link><description>&lt;p&gt;Have just opened another GAE issue, and it got number &lt;a href="https://code.google.com/p/googleappengine/issues/detail?id=9999"&gt;#9999&lt;/a&gt;&lt;br /&gt;
It's pretty. The next reporter will get number 10000.&lt;/p&gt;</description><author>blog</author><pubDate>Mon, 16 Dec 2013 10:11:19 GMT</pubDate><guid isPermaLink="true">https://avodonosov.blogspot.com/2013/09/issue-9999.html</guid></item><item><title>Github support for org-mode in READMEs is unsatisfying</title><link>https://avodonosov.blogspot.com/2013/04/github-support-for-org-mode-in-readmes.html</link><description>Github support for org-mode in READMEs is unsatisfying - no code coloring and sometimes
it even fails to render to html at all.&lt;br /&gt;
&lt;br /&gt;
I am migrating all my README files to markdown.

Googled also this tool for automatic conversion: &lt;a href="https://github.com/alexhenning/ORGMODE-Markdown"&gt;https://github.com/alexhenning/ORGMODE-Markdown&lt;/a&gt;.
Will try it next time.&lt;br /&gt;
&lt;br /&gt;
Apart from READMEs I also would like to represent TODO.org files online. While org -formatted
READMEs are more or less readable in gitbub's HTML representations, TODO.org files
are not readable at all.</description><author>blog</author><pubDate>Mon, 16 Dec 2013 10:11:19 GMT</pubDate><guid isPermaLink="true">https://avodonosov.blogspot.com/2013/04/github-support-for-org-mode-in-readmes.html</guid></item><item><title>Using Factory Beans in Spring Java Configs</title><link>https://www.craigpardey.com/post/2013-12-16-using-factory-beans-in-spring-java-configs/</link><description>&lt;p&gt;I recently went through an exercise of converting Spring XML configuration
files to Java-based configuration. The process went well for the most part,
but I encountered an oddity around how to use factory beans when using Java
configs.&lt;/p&gt;
&lt;p&gt;In XML, factory beans would be used like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;bean id=&amp;quot;MyDataSource&amp;quot;  
class=&amp;quot;org.springframework.jndi.JndiObjectFactoryBean&amp;quot;  
p:jndiName=&amp;quot;jdbc/MyDataSource&amp;quot;  
p:resourceRef=&amp;quot;false&amp;quot;  
/&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In Java however, this has to be separated into two separate @Beans&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@Bean  
public JndiObjectFactoryBean getJndiObjectFactoryBean() {  
	JndiObjectFactoryBean jndi = new JndiObjectFactoryBean();  
	jndi.setJndiName(&amp;quot;jdbc/MyDataSource&amp;quot;);  
	jndi.setResourceRef(false);  
	return jndi;  
}

@Bean  
public DataSource getSampleDataSource() {  
	return (DataSource) getJndiObjectFactoryBean().getObject();  
}  
&lt;/code&gt;&lt;/pre&gt;</description><author>Craig Pardey</author><pubDate>Mon, 16 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-12-16-using-factory-beans-in-spring-java-configs/</guid></item><item><title>Raspi + SDR + ADS-B = awesome</title><link>https://blog.erethon.com/blog/2013/12/15/raspi--sdr--ads-b-awesome/</link><description>&lt;p&gt;
A lot of people have combined a RasPi and a SDR dongle to get a low
power consumption ADS-B tracker.  &lt;a href="https://twitter.com/tomaszmiklas"&gt;Tomasz Miklas&lt;/a&gt; has created an image
for the Raspberry Pi, that has everything that is needed to run your
own aircraft tracking "service" already set up. I've finally had a
chance to experiment with it and this will be my short review.&lt;/p&gt;</description><author>Erethon's Corner</author><pubDate>Sun, 15 Dec 2013 00:23:17 GMT</pubDate><guid isPermaLink="true">https://blog.erethon.com/blog/2013/12/15/raspi--sdr--ads-b-awesome/</guid></item><item><title>2013-12-14</title><link>https://ho.dges.online/pictures/2013-12-14/</link><description>&lt;p&gt;I spent a lot of school summer holidays in Eastbourne staying with my &lt;a href="../2010-04-02"&gt;grandparents&lt;/a&gt; and spent countless afternoons in the arcade on the pier (my grandparents would decamp to the cafe to escape the noise). Years later, my wife and kids would stay in Eastbourne to visit my grandparents&amp;gt; One rainy evening I sneaked down to the front to try and get a picture of the pier. At first, I thought the rain would spoil the effect, but the reflections of the lights in the puddles actually make it more engaging.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Sat, 14 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-12-14/</guid></item><item><title>Master and Commander</title><link>https://zacs.site/blog/master-and-commander.html</link><description>&lt;p&gt;Last night I &lt;a href="https://zacs.site/blog/more-coin.html"&gt;took Coin to task&lt;/a&gt; for extending their pre-order sale, again, in to the new year rather than allowing it to expire as should have happened sometime today. I briefly explained how this move has further devalued their product by virtually solidifying it at the $50 price point, and then talked about how Coin&amp;#8217;s latest escapade showed a startling lack of respect for the individuals who put their hard-earned cash on the line so that this company could fulfill its one job in life by making a great device. Unlike the causes behind the former though, which I could explain with relatively simple examples, the latter&amp;#160;&amp;#8212;&amp;#160;distilling the relationship between maker and consumer&amp;#160;&amp;#8212;&amp;#160;proved much more difficult. I touched on this topic in &lt;a href="https://zacs.site/blog/thoughts-regarding-coin.html"&gt;my past&lt;/a&gt; articles &lt;a href="https://zacs.site/blog/bad-coin.html"&gt;on Coin&lt;/a&gt;, but have not actively sought to fully flesh out my thoughts on this topic until now.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/master-and-commander.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 13 Dec 2013 09:04:41 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/master-and-commander.html</guid></item><item><title>The Technological Guide to a Foreign Language</title><link>https://blog.steren.fr/2013/12/13/technology-foreign-language/</link><author>Steren's essays</author><pubDate>Fri, 13 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.steren.fr/2013/12/13/technology-foreign-language/</guid></item><item><title>More Coin</title><link>https://zacs.site/blog/more-coin.html</link><description>&lt;p&gt;I feel a bit like a broken record at this point, what with having already talked about Coin &lt;a href="https://zacs.site/blog/thoughts-regarding-coin.html"&gt;twice&lt;/a&gt; &lt;a href="https://zacs.site/blog/bad-coin.html"&gt;before&lt;/a&gt;, but the company&amp;#8217;s latest stunt bears once again picking up my banner and going back off to war: earlier this evening, via their Twitter account, Coin posted a &amp;#8220;BREAKING NEWS!&amp;#8221; announcement that&amp;#160;&amp;#8212;&amp;#160;you guessed it&amp;#160;&amp;#8212;&amp;#160;extended the $50 off early adopter deal into the new year. Surprised? You should&amp;#8217;t be.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/more-coin.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 12 Dec 2013 23:33:52 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/more-coin.html</guid></item><item><title>To Infinity and Beyond</title><link>https://blog.separateconcerns.com/2013-12-12-infinity-beyond.html</link><description>&lt;section id="Goodbye-Moodstocks"&gt;
&lt;h2&gt;Goodbye Moodstocks&lt;/h2&gt;
&lt;p&gt;Friday 20th will be my last day at Moodstocks. I am leaving a company where, after three years and a half, I was the most senior employee. As you may imagine, it was not an easy decision.&lt;/p&gt;
&lt;p&gt;Moodstocks has grown up since I joined it. After several pivots, the founders have assembled a &lt;a href="https://moodstocks.com/humans.txt"&gt;great team&lt;/a&gt; I will miss, and together I dare say we have advanced the state of mobile image recognition. Recently, we have also been looking at other technologies related to mobile.&lt;/p&gt;
&lt;p&gt;We have released two new products. The first one is what &lt;a href="https://blog.separateconcerns.com/2013-06-20-three-years-proprietary-projects.html"&gt;was known as Physalis&lt;/a&gt; and took the commercial name &lt;a href="https://winch.io/"&gt;Winch&lt;/a&gt;. This is what I have been mostly involved with for the last few months. I believe it has the potential to become the reference solution to write native mobile applications that react quickly and work offline.&lt;/p&gt;
&lt;p&gt;The second product is Overlay, a mobile application that lets you buy products from paper catalogs online. Years after Pikadeo and Notes, it is finally time for a real application available in the stores, leveraging Moodstocks’ &lt;a href="https://moodstocks.com/"&gt;image recognition SDK&lt;/a&gt; and Winch, showcasing the best of both technologies. But beyond pure tech, it is also a demonstration of Augmented Reality as we like it: fast, predictable, purposeful. No need for 3D models.&lt;/p&gt;
&lt;p&gt;With those two products in the pipes, choosing to leave was incredibly difficult. But I did nevertheless, because of an opportunity I could not turn down.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Hello-Lima"&gt;
&lt;h2&gt;Hello Lima&lt;/h2&gt;
&lt;p&gt;So, what next for me? After two weeks to see my family, eat too much and have some welcome rest, I &lt;a href="http://www.kickstarter.com/projects/cloud-guys/plug-the-brain-of-your-devices/posts/691351"&gt;will be joining&lt;/a&gt; the team developing &lt;a href="https://blog.separateconcerns.com/2019-02-15-goodbye-lima.html"&gt;the Lima&lt;/a&gt; as a core developer.&lt;/p&gt;
&lt;p&gt;The Lima, which promises no less than to solve the personal data storage problem, is the first hardware product I backed on Kickstarter. I was thinking: “this won’t be easy, but if those guys can do it, I want that device.”&lt;/p&gt;
&lt;p&gt;The Kickstarter went (very) well, so they started looking for help and got in touch. I was curious and decided to meet the founders. After a Saturday morning spent discussing the project at Starbucks, I was convinced: they are the right people to do this.&lt;/p&gt;
&lt;p&gt;For years I have been convinced that ubiquitous computing is one of the next big things in technology and wanted to be part of it. As I see it, Lima gives me this opportunity today.&lt;/p&gt;
&lt;p&gt;So it looks like my short-term future holds some Unix development and a good dusting of my rusty C. I may try to sneak a Lua interpreter in that box at some point, but please don’t tell the others! ;) Severin and Gawen have high expectations and I do not expect much relaxing but hey, it should be fun to live the adventure of Early Stage again.&lt;/p&gt;
&lt;/section&gt;</description><author>Separate Concerns</author><pubDate>Thu, 12 Dec 2013 23:30:00 GMT</pubDate><guid isPermaLink="true">https://blog.separateconcerns.com/2013-12-12-infinity-beyond.html</guid></item><item><title>On responsibility, real and imagined</title><link>https://98.codes/on-responsibility/</link><description>&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;I recently inherited some money, and as a consequence was able to pay off most of my long term, PITA, oh god how are we ever gonna get out of this, debt. The day I went from website to website zeroing everything out was supposed to be a good day;&lt;/p&gt;</description><author>Text(Greg);</author><pubDate>Thu, 12 Dec 2013 22:28:11 GMT</pubDate><guid isPermaLink="true">https://98.codes/on-responsibility/</guid></item><item><title>Lisp parentheses</title><link>https://honza.pokorny.ca/2013/12/lisp-parentheses/</link><description>&lt;p&gt;Perhaps the number one reason why people are afraid to try Lisp or don&amp;rsquo;t like
it is the huge amounts of parentheses cluttering up the code.  It&amp;rsquo;s said to be
hard to read the code when it&amp;rsquo;s full of parentheses.&lt;/p&gt;
&lt;p&gt;Any experienced Lisp programmer will tell you that the parentheses disappear
fairly early on.  After a while, you hardly notice them as something annoying.
In fact, going back to C-family languages will make you feel like you need to
type all kinds of crazy punctuation.&lt;/p&gt;
&lt;p&gt;While Clojure technically doesn&amp;rsquo;t use significant whitespace like Python, in
reality, careful identation is crucial to writing clear code.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-clojure"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;defn &lt;/span&gt;crop-photo &lt;span style="color: #eceff4;"&gt;[&lt;/span&gt;user photo&lt;span style="color: #eceff4;"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;when &lt;/span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #88c0d0;"&gt;authenticated?&lt;/span&gt; user&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;when &lt;/span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #88c0d0;"&gt;admin?&lt;/span&gt; user&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;      &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #88c0d0;"&gt;crop&lt;/span&gt; photo&lt;span style="color: #eceff4;"&gt;))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this snippet, there are four levels of indentation, four nested expressions.
It&amp;rsquo;s easy to quickly scan this function guess what it does.  When a user is
authenticated and when they are an admin, crop the photo.  If any of the
&lt;code&gt;when&lt;/code&gt; expressions return a &lt;em&gt;falsy&lt;/em&gt; value, the whole function will return
&lt;code&gt;nil&lt;/code&gt;.  All of this is possible because Clojure uses prefix notation.  This
means that the first element in the &lt;code&gt;(...)&lt;/code&gt; form is the name of the function.
Therefore, you only need to scan the beginnings of lines to see what functions
are being called.  Also, you never have to pay attention to closing parentheses
because they are all sitting together at the end of the function.&lt;/p&gt;
&lt;p&gt;In Clojure, it&amp;rsquo;s also idiomatic to put function arguments on new lines and
align them.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-clojure"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;or &lt;/span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #88c0d0;"&gt;admin?&lt;/span&gt; user&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #88c0d0;"&gt;staff?&lt;/span&gt; user&lt;span style="color: #eceff4;"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this example, the &lt;code&gt;or&lt;/code&gt; macro usually takes two arguments.  We put each
argument on its own line and align them.  This way it&amp;rsquo;s visually clear what the
code does.&lt;/p&gt;
&lt;p&gt;Finally, when writing Clojure code, you rarely have to worry about matching up
your parentheses.  This is a job for your text editor.  Inserting a new
expression usually involves typing the &lt;code&gt;(&lt;/code&gt; key and having its friend &lt;code&gt;)&lt;/code&gt;
inserted for you.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Thu, 12 Dec 2013 19:44:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/12/lisp-parentheses/</guid></item><item><title>On keeping secrets</title><link>https://98.codes/on-keeping-secrets/</link><description>&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Derek Sivers:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We got two ciders and she patiently waited while I spent 20 minutes reading through it. Pages filled with words about processing family drama, formulating goals, plans for life changes, romantic details, lists of regrets, contemplations, etc.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I was surprised it was all meaningless to me. These pages&lt;/p&gt;&lt;/blockquote&gt;</description><author>Text(Greg);</author><pubDate>Thu, 12 Dec 2013 15:10:12 GMT</pubDate><guid isPermaLink="true">https://98.codes/on-keeping-secrets/</guid></item><item><title>Why Lean Startup sucks for startups.</title><link>https://klinger.io/posts/why-lean-startup-sucks-for-startups</link><description>If you go to Lean Startup events you will find first time founders, consultants, accelerator managers, r&amp;amp;d people, enterprise intr...</description><author>Blog posts of Andreas Klinger</author><pubDate>Thu, 12 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://klinger.io/posts/why-lean-startup-sucks-for-startups</guid></item><item><title>JavaScript and Canvas version of Conway's Game of Life</title><link>https://thomashunter.name/posts/2013-12-12-javascript-and-canvas-version-of-conways-game-of-life</link><author>Thomas Hunter II</author><pubDate>Thu, 12 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-12-12-javascript-and-canvas-version-of-conways-game-of-life</guid></item><item><title>The Week of Code is Here!</title><link>https://xavd.id/blog/post/the-week-of-code-is/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/the-week-of-code-is/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Thu, 12 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/the-week-of-code-is/</guid></item><item><title>Castro</title><link>https://zacs.site/blog/castro.html</link><description>&lt;p&gt;After all the talk of &lt;a href="http://castro.fm"&gt;Castro&lt;/a&gt; in the last twenty-four hours since its release, and as an &lt;a href="https://zacs.site/blog/podcasting-state-of-the-union.html"&gt;avid podcast listener myself&lt;/a&gt;, I couldn&amp;#8217;t help but feel obligated to weigh in. With articles from &lt;a href="http://verynicewebsite.net/2013/12/castro/"&gt;John Moltz&lt;/a&gt;, &lt;a href="http://www.macstories.net/reviews/castro-a-new-podcast-player-for-ios-does-two-things-well/"&gt;Cody Fink&lt;/a&gt;, and &lt;a href="http://thesweetsetup.com/whats-new-noteworthy-world-apps-week/"&gt;Shawn Blanc&lt;/a&gt; waiting unread in my Instapaper queue, I downloaded Castro earlier this evening expecting to burn the midnight oil to get this article out. It came as a great surprise, then, when I tried every one of Castro&amp;#8217;s features and saw every screen within about fifteen minutes.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/castro.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 11 Dec 2013 21:30:21 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/castro.html</guid></item><item><title>Masterless Saltstack</title><link>https://honza.pokorny.ca/2013/12/masterless-saltstack/</link><description>&lt;p&gt;This is a simple guide on how to use Saltstack, the configuration manager, in
masterless mode.  In most scenarios, you will use a Saltstack master to
control many minions.  Saltstack contains a lot of utilities to check the state
of minions, gather information about them, etc.&lt;/p&gt;
&lt;p&gt;However, if you are working on a small, single-server application, Saltstack&amp;rsquo;s
master-minion setup might be overkill.  You can indeed use a single minion.&lt;/p&gt;
&lt;h2 id="a-bit-of-setup-first"&gt;A bit of setup first&lt;/h2&gt;
&lt;p&gt;Your project will need two directories for Saltstack&amp;rsquo;s files.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;pillar/
salt/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;salt&lt;/code&gt; directory will contain the scripts that are responsible for
setting up a particular part of your server, e.g. nginx, postgresql, etc.
&lt;code&gt;pillar&lt;/code&gt; on the other hand will contain the configuration value for each
environment that your app will run in.  So, you might have a &lt;em&gt;staging&lt;/em&gt; and a
&lt;em&gt;production&lt;/em&gt; environment set up there.&lt;/p&gt;
&lt;p&gt;Each of these directories needs a &lt;code&gt;top.sls&lt;/code&gt; file which is what&amp;rsquo;s loaded
first.  For fun, let&amp;rsquo;s just install &lt;code&gt;vim&lt;/code&gt; into a production environment.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;pillar/
    top.sls
    production.sls
salt/
    top.sls
    vim.sls
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="salt"&gt;Salt&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;salt/top.sls&lt;/code&gt; file will have a case-expression-like structure, matching
on hostnames of your app.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-yaml"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1;"&gt;base&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1;"&gt;'production'&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;        - vim
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that &lt;code&gt;sls&lt;/code&gt; files use YAML syntax.&lt;/p&gt;
&lt;p&gt;Here we are installing vim in the production hostname.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;salt/vim.sls&lt;/code&gt; file will look something like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-yaml"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1;"&gt;vim&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1;"&gt;pkg&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;        - installed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This simply says that we want the vim package installed.  Saltstack will
automatically detect your package manager (i.e. apt-get, yum, etc).&lt;/p&gt;
&lt;h2 id="pillar"&gt;Pillar&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;pillar/top.sls&lt;/code&gt; file has the same structure as the main file from the
salt directory.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-yaml"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1;"&gt;base&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1;"&gt;'production'&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;        - production
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When the &lt;code&gt;production&lt;/code&gt; hostname is detected, use the &lt;code&gt;production.sls&lt;/code&gt; file
for configuration.  You can put just about anything you want to the
&lt;code&gt;production.sls&lt;/code&gt; file, be it the servers IP address or the SMTP settings.&lt;/p&gt;
&lt;h2 id="where-to-put-things"&gt;Where to put things&lt;/h2&gt;
&lt;p&gt;After you&amp;rsquo;ve installed Saltstack on your server, you should copy or symlink the
&lt;code&gt;salt/&lt;/code&gt; and &lt;code&gt;pillar/&lt;/code&gt; directories to the &lt;code&gt;/srv&lt;/code&gt; directory&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;/srv/salt
/srv/pillar
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="running-it"&gt;Running it&lt;/h2&gt;
&lt;p&gt;Once the configuration files are in place, you can run the minion&amp;rsquo;s
provisioning command to get everything configured and installed.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;$ salt-call --local state.highstate
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Don&amp;rsquo;t ask me why it&amp;rsquo;s like this.  Makes no sense.&lt;/p&gt;
&lt;p&gt;Saltstack will run everything and then report what happened during the run.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Wed, 11 Dec 2013 20:55:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/12/masterless-saltstack/</guid></item><item><title>The Wolf of Wall Street</title><link>https://olshansky.info/movie/the_wolf_of_wall_street/</link><description>Olshansky's review of The Wolf of Wall Street</description><author>🦉 olshansky 🦁</author><pubDate>Wed, 11 Dec 2013 14:35:53 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_wolf_of_wall_street/</guid></item><item><title>Hercules</title><link>https://olshansky.info/movie/hercules/</link><description>Olshansky's review of Hercules</description><author>🦉 olshansky 🦁</author><pubDate>Wed, 11 Dec 2013 14:25:54 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/hercules/</guid></item><item><title>Changes to the blog and website</title><link>https://cmetcalfe.ca/blog/changes-to-the-blog-and-website.html</link><description>&lt;p&gt;I used to run this site on two different platforms.
There was a static landing page hosted on my server, and a blog hosted on &lt;a href="http://blogger.com"&gt;Blogger&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While the landing page was reasonably nice-looking (screenshot &lt;a href="https://cmetcalfe.ca/images/old_website_screenshot.png"&gt;here&lt;/a&gt;), the blog looked terrible.
Free Blogger templates are generally not the nicest-looking things to look at and the one I used was no exception.&lt;/p&gt;
&lt;p&gt;More importantly though, the Blogger composer made really hard to generate nice-looking articles.
For just writing text posts, it wasn't bad (aside from the crazy HTML it generated), but for inserting code
snippits or doing any kind of advanced formatting it was incredibly frustrating.&lt;/p&gt;
&lt;p&gt;A few weeks ago I finally decided to deal with the situation. My general plan was to find a static site generator
that allowed for writing posts in &lt;a href="http://daringfireball.net/projects/markdown"&gt;Markdown syntax&lt;/a&gt; and use it to create a website that would
host some static content as well as the blog.&lt;/p&gt;
&lt;p&gt;Static sites are exactly what they sound like. Just some static HTML files for a webserver to serve to clients.
No fancy frameworks, databases, or server-side processing involved. This is advantageous primarily because it
makes site blazing fast and very light on server resources.&lt;/p&gt;
&lt;p&gt;After looking at a few static site generators, I decided to go with &lt;a href="http://blog.getpelican.com"&gt;Pelican&lt;/a&gt;.
Pelican is a Python-based static site generator that uses the awesome &lt;a href="http://jinja.pocoo.org/docs"&gt;Jinja2&lt;/a&gt; templating library
and understands content written in a number of formats, including Markdown.
It's extremely easy to set up and requires only a single command to regenerate the entire site.&lt;/p&gt;
&lt;p&gt;Transferring content from the old blog into the *.md files that Pelican reads was also really simple.
Pelican includes a tool called &lt;code&gt;pelican-import&lt;/code&gt; that allows for reading in data from a variety of sources.
I used this tool to pull all my previous posts down from the RSS feed of the old blog.&lt;/p&gt;
&lt;p&gt;After fixing up the imported data (the import tool is good, but not perfect), I started looking into templates.&lt;/p&gt;
&lt;p&gt;Like with Blogger themes, I was having a hard time finding anything I liked, until I came across a template called &lt;a href="https://github.com/giulivo/pelican-svbhack"&gt;svbhack&lt;/a&gt;.
It had a nice page layout and the general aesthetic was good, but needed a fair bit of tweaking.
I forked the repository (+1 for open-source) and over the next few weeks used my limited HTML and CSS knowledge to transform it into the one you see today.&lt;/p&gt;
&lt;p&gt;There are still a bunch of things I want to change/fix/add, but at this point I feel that the site is ready to be released.
The code for the &lt;a href="https://github.com/pR0Ps/pelican-svbhack"&gt;template&lt;/a&gt; and the &lt;a href="https://github.com/pR0Ps/website"&gt;site&lt;/a&gt; is all freely availible on GitHub.&lt;/p&gt;
&lt;p&gt;If you have any comments or suggestions I'd love to hear them!&lt;/p&gt;</description><author>Carey Metcalfe</author><pubDate>Wed, 11 Dec 2013 13:30:00 GMT</pubDate><guid isPermaLink="true">https://cmetcalfe.ca/blog/changes-to-the-blog-and-website.html</guid></item><item><title>Making Steam for Linux close to the system tray</title><link>https://cmetcalfe.ca/blog/making-steam-for-linux-close-to-the-system-tray.html</link><description>&lt;p&gt;Steam for Linux is a little odd in how it handles a user clicking the close button.
Instead of exiting the program or mimimizing the application to the system tray, it just minimizes it to the taskbar.
The developers have said that this is temporary and that it will be changed in the future, but for now, there is a workaround.&lt;/p&gt;
&lt;p&gt;To make Steam always minimize to the system tray, just add &lt;code&gt;STEAM_FRAME_FORCE_CLOSE=1&lt;/code&gt; to your environment.&lt;/p&gt;
&lt;p&gt;For more information see the &lt;a href="https://github.com/ValveSoftware/steam-for-linux/issues/1025"&gt;original GitHub issue&lt;/a&gt;.&lt;/p&gt;</description><author>Carey Metcalfe</author><pubDate>Wed, 11 Dec 2013 13:00:00 GMT</pubDate><guid isPermaLink="true">https://cmetcalfe.ca/blog/making-steam-for-linux-close-to-the-system-tray.html</guid></item><item><title>Godzilla</title><link>https://olshansky.info/movie/godzilla/</link><description>Olshansky's review of Godzilla</description><author>🦉 olshansky 🦁</author><pubDate>Wed, 11 Dec 2013 08:48:27 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/godzilla/</guid></item><item><title>Atomic construction</title><link>https://www.craigpardey.com/post/2013-12-11-atomic-construction/</link><description>&lt;p&gt;Bugs caused by multi-threading can be very difficult to find. Here&amp;rsquo;s one I
encountered recently.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;private static MyObject INSTANCE;

public void init() {  
	if( INSTANCE == null) {  
		initInstance();  
	}  
}

private static synchronized void initInstance() {  
	if( INSTANCE != null) {  
		return;  
	}  
	INSTANCE = new MyObject();  
	INSTANCE.initThis();  
	INSTANCE.initThat();  
}  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At first glance, this code is fine. It uses a synchronized static method to
create the singleton, using double-checked locking to make sure it only gets
created once. But on closer inspection it is possible for the null check in
init() to pass before the INSTANCE has been fully initialized.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Wed, 11 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-12-11-atomic-construction/</guid></item><item><title>Michael Fitzgerald: CEO of Submittable</title><link>https://solomon.io/michael-fitzgerald-ceo-of-submittable/</link><description>Michael Fitzgerald is the CEO of Submittable, a submission management tool with clients such as Playboy and CBS. He is the author of Radiant Days.</description><author>Sam Solomon</author><pubDate>Wed, 11 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/michael-fitzgerald-ceo-of-submittable/</guid></item><item><title>Dear Aunt Rose Comma Thank You for the Speech Recognition Software Exclamation Point.</title><link>http://www.mcsweeneys.net/articles/dear-aunt-rose-comma-thank-you-for-the-speech-recognition-software-exclamation-point</link><description>&lt;p&gt;Linked to &lt;a href="https://twitter.com/shawnblanc/status/410457204450263040"&gt;by Shawn Blanc&lt;/a&gt;, this is absolutely hilarious. Coincidentally Marco just posted an article titled &lt;a href="http://www.marco.org/2013/12/10/siri-accuracy-improving"&gt;&lt;em&gt;Siri Accuracy Continues to Improve&lt;/em&gt;&lt;/a&gt;, where he complained about Siri&amp;#8217;s frequent inability to process his requests. Since I finally upgraded to a 4S last month I have been using Siri daily, and with the exception of a few incorrect words it has worked both flawlessly and exceptionally quickly regardless of my cellular connection strength. I have yet to see see the, &amp;#8220;Sorry, I can&amp;#8217;t take requests right now&amp;#8221; error message.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.mcsweeneys.net/articles/dear-aunt-rose-comma-thank-you-for-the-speech-recognition-software-exclamation-point"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 10 Dec 2013 20:58:15 GMT</pubDate><guid isPermaLink="true">http://www.mcsweeneys.net/articles/dear-aunt-rose-comma-thank-you-for-the-speech-recognition-software-exclamation-point</guid></item><item><title>Heat of the Moment Insurance Policy</title><link>https://zacs.site/blog/heat-of-the-moment-insurance-policy.html</link><description>&lt;p&gt;I have spent the last two or three months occasionally hearing Aaron Mahnke and Dave Caolo talk about an app capable of completely cutting a computer off from a certain set of domains as a means to increase productivity. By making it impossible for one to get distracted, the creators of the aptly-named SelfControl reason, productivity must increase accordingly. I downloaded SelfControl Sunday night, and even in my brief experience with it so far I can attest to its effectiveness.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/heat-of-the-moment-insurance-policy.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 10 Dec 2013 19:00:34 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/heat-of-the-moment-insurance-policy.html</guid></item><item><title>Incredibly High-Level Discourse</title><link>https://zacs.site/blog/incredibly-high-level-discourse.html</link><description>&lt;p&gt;Sunday evening shortly after I wrote &lt;a href="https://zacs.site/blog/disavow-gaming.html"&gt;&lt;em&gt;The One Where I Disavow Gaming&lt;/em&gt;&lt;/a&gt;, as I scrolled through Zite looking for something to read, I happened across a headline that immediately caught my attention: &lt;a href="http://www.valuewalk.com/2013/12/iphone-6-release-date-apple/"&gt;&lt;em&gt;iPhone 6 Release Date And Recent Rumors&lt;/em&gt;&lt;/a&gt;. Given that the article came from a site I had never heard of before and because the Apple sphere has remained relatively quiet with regards to iPhone 6 rumors as of late, I opened the article with low expectations. What could Value Walk know that John Gruber didn&amp;#8217;t? Turns out, absolutely nothing. In fact, the extraordinary simplicity of these rumors and the fact that one would devote an entire section to speculating as to the iPhone 6&amp;#8217;s release date were so absurd that it made me realize something rather profound.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/incredibly-high-level-discourse.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 10 Dec 2013 16:30:43 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/incredibly-high-level-discourse.html</guid></item><item><title>Cerberus 0.5 is out (and it breaks stuff)</title><link>https://nicolaiarocci.com/cerberus-0-5-is-out-and-it-breaks-stuff/</link><description>&lt;p&gt;The new release changes the way validation errors are reported. Please note that these changes will also affect future releases of &lt;a href="http://python-eve.org"&gt;Eve&lt;/a&gt;, the Python REST API Framework.&lt;/p&gt;
&lt;p&gt;What we had before was basically a list of human-readable errors. Each item in the list, while perfectly fine for human reading, wasn&amp;rsquo;t really ideal for algorithmic parsing. Why would you want to parse the errors with an algorithm? A common case would be when your client is using business objects to represent API resources (think a client-side ORM), and would have a hard time binding validation errors to the objects themselves.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 10 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/cerberus-0-5-is-out-and-it-breaks-stuff/</guid></item><item><title>Takua Chair Renders</title><link>https://blog.yiningkarlli.com/2013/12/takua-chair-renders.html</link><description>&lt;p&gt;A while back, I did some test renders with Takua a0.4 to test out the material system. The test model was a model of an Eames Lounge Chair Wood, and the materials were glossy wood and aluminum. Each render was done with a single large, importance sampled area light and took about two minutes to complete.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Dec/eames_aluminum.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Dec/eames_aluminum.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Dec/eames_wood.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Dec/eames_wood.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These renders were the last tests I did with Takua a0.4 before starting the new version. More on that soon!&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Tue, 10 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/12/takua-chair-renders.html</guid></item><item><title>Vagrant on Fedora with libvirt</title><link>https://purpleidea.com/blog/2013/12/09/vagrant-on-fedora-with-libvirt/</link><description>&lt;p&gt;Apparently lots of people are using &lt;a href="https://www.vagrantup.com/"&gt;Vagrant&lt;/a&gt; these days, so I figured I&amp;rsquo;d try it out. I wanted to get it working on Fedora, and without Virtualbox. This is an intro article on Vagrant, and what I&amp;rsquo;ve done. I did this on Fedora 19. Feel free to suggest improvements.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Intro&lt;/span&gt;:&lt;/p&gt;
&lt;p&gt;Vagrant is a tool that easily provisions virtual machines, and then kicks off a configuration management deployment like &lt;a href="https://en.wikipedia.org/wiki/Puppet_%28software%29"&gt;Puppet&lt;/a&gt;. It&amp;rsquo;s often used for development. I&amp;rsquo;m planning on using it to test some &lt;a href="https://github.com/purpleidea/puppet-gluster/" title="puppet-gluster"&gt;Puppet-Gluster&lt;/a&gt; managed GlusterFS clusters.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Mon, 09 Dec 2013 22:14:51 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/12/09/vagrant-on-fedora-with-libvirt/</guid></item><item><title>Now syndicated on “Planet Fedora”</title><link>https://purpleidea.com/blog/2013/12/09/now-syndicated-on-planet-fedora/</link><description>&lt;p&gt;I&amp;rsquo;m now syndicated on the &lt;a href="http://planet.fedoraproject.org/"&gt;Fedora Project planet&lt;/a&gt;. If you haven&amp;rsquo;t read through &lt;a href="https://purpleidea.com/blog/"&gt;my blog&lt;/a&gt; yet, let me introduce myself, I&amp;rsquo;m &lt;a href="http://purpleidea.fedorapeople.org/"&gt;James&lt;/a&gt;, and I write &lt;strong&gt;&lt;a href="https://purpleidea.com/blog/"&gt;The Technical Blog of James&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m a sysadmin, DevOps/Puppet hacker, I.T./network architect and physiologist. Hi! I run Fedora as my primary desktop, but I also use it for servers, particularly for development before future versions of &lt;a href="https://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux"&gt;RHEL&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/CentOS"&gt;CentOS&lt;/a&gt; release.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m most well-known for &lt;a href="https://github.com/purpleidea/puppet-gluster/" title="puppet-gluster"&gt;Puppet-Gluster&lt;/a&gt;, but I&amp;rsquo;ve also written a decent &lt;a href="https://github.com/purpleidea/puppet-ipa"&gt;Puppet-IPA&lt;/a&gt; (&lt;a href="http://www.freeipa.org/"&gt;FreeIPA&lt;/a&gt;) module. I&amp;rsquo;m currently working on porting Puppet-Gluster to Fedora and looking forward to the &lt;a href="https://fedoraproject.org/wiki/Releases/20/Schedule"&gt;upcoming release of Fedora 20&lt;/a&gt;.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Mon, 09 Dec 2013 21:18:56 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/12/09/now-syndicated-on-planet-fedora/</guid></item><item><title>The One Where I Disavow Gaming</title><link>https://zacs.site/blog/disavow-gaming.html</link><description>&lt;p&gt;As I write this I have wasted almost an entire weekend. I got home Friday afternoon and spent the evening collecting gift ideas for my family and playing a video game; Saturday I wrote the first draft of an essay and reviewed three months&amp;#8217; worth of notes for an upcoming exam all before lunchtime, then proceeded to waste five hours playing that same game before cramming &lt;a href="https://zacs.site/blog/missing-the-forest-for-the-trees.html"&gt;an article&lt;/a&gt; in with one foot out the door as I prepared for my girlfriend&amp;#8217;s choir concert that evening. After the concert we went to a party. Sunday morning I dragged myself out of bed for church, and then proceeded to spend the rest of my day playing video games once again. I have probably spent just as much time gaming this weekend as I have sleeping, and I really despise this about myself.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/disavow-gaming.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 08 Dec 2013 23:47:40 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/disavow-gaming.html</guid></item><item><title>Missing the Forest for the Trees</title><link>https://zacs.site/blog/missing-the-forest-for-the-trees.html</link><description>&lt;p&gt;With the release of Tweetbot 3 Tapbots brought a complete user interface overhaul to the beloved Twitter app alongside a whole slew of other improvements and changes. One such change saw the removal of both Tweetbot&amp;#8217;s double- and triple-tap functionality. Citing increased responsiveness as the app would no longer have to wait for iOS to discern whether the user intended multiple taps, Tapbots replaced this feature with a curious swipe gesture. Believing it would work similarly to Mailbox&amp;#8217;s finicky yet workable gestures where swiping different distances invoked different actions, I looked forward to this improvement; however, in this regard Tweetbot 3 fell far short of excellence.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/missing-the-forest-for-the-trees.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 08 Dec 2013 23:47:37 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/missing-the-forest-for-the-trees.html</guid></item><item><title>Lost Trust</title><link>https://zacs.site/blog/lost-trust.html</link><description>&lt;p&gt;Every time I save an article to Instapaper I immediately open the app to make sure it actually went there. Although quite some time has passed since this proved a worthwhile exercise, my unfortunate habit stems from a fear derived of Instapaper&amp;#8217;s past inability to parse &lt;a href="http://freecabinporn.com"&gt;Cabin Porn&lt;/a&gt; URLs. Because I once had faith in the system I happily sent every post I planned to write about over to Instapaper, intending to come back to those articles at a later date. However, this practice came back to bite me when Instapaper failed to accurately record the correct article URLs, much less successfully parse their contents, and I lost several weeks&amp;#8217; worth of effort spent in aggregation. I seem to remember something similar happening with other sites around this time, but Cabin Porn is the sole site that Instapaper consistently failed to handle appropriately.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/lost-trust.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 07 Dec 2013 13:59:17 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/lost-trust.html</guid></item><item><title>Make Hard Things Easier by Removing Friction</title><link>https://josh.works/make-hard-things-easier-by-removing-friction</link><description>&lt;p&gt;Friction resists movement.
Lots of things count as (negative) friction.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Anything that consumes resources (time, energy, money, physical goods.)&lt;/li&gt;
  &lt;li&gt;Anything that causes negative feelings (shame, doubt, guilt, fear.)&lt;/li&gt;
  &lt;li&gt;Anything that could have a downside (losing money, respect, your job.)&lt;/li&gt;
  &lt;li&gt;Anything that may have no benefit. (Joy, money, respect, a better job.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to make something happen in your life, chances are good that you’re not doing it already because of friction.&lt;/p&gt;

&lt;p&gt;Think about it - if you wanted to do something, the benefits were obvious, and the barriers non-existent… wouldn’t you already be doing it?&lt;/p&gt;

&lt;p&gt;So - if you are not content with where you are now, and you have an idea of where you want to be, examine hard the possible sources of friction. If you can eliminate most of that friction, you’ll suddenly find it much, much easier to make that thing happen.&lt;/p&gt;

&lt;p&gt;I have two examples of changes I wanted to make that were impeded by lots of friction.&lt;/p&gt;

&lt;h3 id="creating-a-digital-product"&gt;Creating a digital product&lt;/h3&gt;
&lt;p&gt;I’ve wanted to create a digital product that sells itself for a long time. Sounds perfect, right? People give me their money and, after initially setting everything up, it doesn’t take any additional work on my behalf.&lt;/p&gt;

&lt;p&gt;Here’s all the friction I’ve run into:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;I’ve never done this before. Everyone out there who
hasdone it, has, by definition, done it. So I am quantifiably different from those folks that have done this thing.&lt;/li&gt;
  &lt;li&gt;I don’t have any customers. What if I put all this work out, and can’t get anyone to buy it?&lt;/li&gt;
  &lt;li&gt;I’ve never built a website, or earned money outside of “normal” jobs.&lt;/li&gt;
  &lt;li&gt;There are 1000 different things I could spent my time on related to this project. How do I know I’m spending my time effectively?&lt;/li&gt;
  &lt;li&gt;Most people want to do this, and most people never try. Those that do… most of them fail, right? Why would I do anything different.&lt;/li&gt;
  &lt;li&gt;I already have a full-time job. Why should I spend my limited time finding even
more work?&lt;/li&gt;
  &lt;li&gt;I don’t know anything that unique about anything.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s how I got over all of this friction:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Every single action I take is a learning experience. If something doesn’t work, I’ve learned. (Along those lines - there is no good way to do cold calling.)&lt;/li&gt;
  &lt;li&gt;If I hit a barrier, I figure out a way to either not need it, or get around it. (Call people, get email addresses, email them,
then call again. It’s no longer a cold call.)&lt;/li&gt;
  &lt;li&gt;If I feel out of my element and outside of my comfort zone, I’m doing it right. That stress is now encouragement.&lt;/li&gt;
  &lt;li&gt;My wife is encouraging, That helps a lot.&lt;/li&gt;
  &lt;li&gt;All great products and entrepreneurs have sucked or been unsuccessful at one time (or many times!). I’m just running with it - it’s OK to feel like I’m making it up as I go.&lt;/li&gt;
  &lt;li&gt;I’m not done, and I don’t think I ever will be. But it is all a learning experience.&lt;/li&gt;
&lt;/ul&gt;</description><author>Josh Thompson</author><pubDate>Sat, 07 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/make-hard-things-easier-by-removing-friction</guid></item><item><title>The Blame Apple Game</title><link>http://brooksreview.net/2013/11/the-blame-apple-game/</link><description>&lt;p&gt;Another unsurprisingly great article from Ben Brooks, and my favorite piece of his for quite some time. I absolutely love how he describes PandoDaily&amp;#8217;s post: in a day and age where everyone pulls their punches for fear of offending someone by implying one thing while unconsciously omitting something else and finally ending the sentence with a period, Ben&amp;#8217;s candid characterization is a breath of fresh air. Made all the more worthwhile by his ultimate point, I could not recommend that you go read Ben&amp;#8217;s article and subscribe to his site more strongly. I have been &lt;a href="https://zacs.site/blog/an-annoyance-driven-blog-post.html"&gt;critical&lt;/a&gt; of his &lt;a href="https://zacs.site/blog/goodbye-dropbox.html"&gt;views&lt;/a&gt; in the past, but at the end of the day his site is consistently one of my favorites.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/11/the-blame-apple-game/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 06 Dec 2013 15:47:02 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/11/the-blame-apple-game/</guid></item><item><title>Bad Coin</title><link>https://zacs.site/blog/bad-coin.html</link><description>&lt;p&gt;While neither a fan of DROdio&amp;#8217;s website or the author&amp;#8217;s writing style, &lt;a href="http://danielodio.com/dissecting-coins-massively-successful-product-launch"&gt;&lt;em&gt;Dissecting Coin&amp;#8217;s Massively Successful Product Launch&lt;/em&gt;&lt;/a&gt; nevertheless gives me a way in to talk about Coin once again. Last month, shortly after Coin launched to great fanfare, I condensed some of my thoughts into a post titled &lt;a href="https://zacs.site/blog/thoughts-regarding-coin.html"&gt;&lt;em&gt;Thoughts Regarding Coin&lt;/em&gt;&lt;/a&gt;. I explained the device&amp;#8217;s premise, areas I thought it would excel, and those in which I felt it would fail or needed improvement. I did not, however, go into some of my less tangible concerns with the product; specifically, I did not talk about any of my issues with its marketing and pre-launch strategy. Given that Daniel devoted a significant amount of time to this topic in his article though, I feel now is as good a time as any.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/bad-coin.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 06 Dec 2013 15:25:58 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/bad-coin.html</guid></item><item><title>Three Weeks with Two iPads</title><link>http://shawnblanc.net/2013/12/three-weeks-with-two-ipads/</link><description>&lt;p&gt;&amp;#8220;After 3 weeks, I&amp;#8217;m actually leaning slightly more towards the mini if I had to pick one. Though I do work a lot from my iPad, the iPad is not my main work machine. I still spend most of my time at my desk working from my MacBook Air. And so, for the things I do use an iPad for, the iPad mini is better for about 80-percent of them and &amp;#8216;good enough&amp;#8217; for the other 20-percent. I plan to keep using both iPads, side by side, for at least another month or two, so I&amp;#8217;ll check back in again soon.&amp;#8221;&lt;/p&gt;

&lt;p&gt;As an avid iPad user&amp;#160;&amp;#8212;&amp;#160;although less so &lt;a href="https://zacs.site/blog/diary-of-a-convert.html"&gt;lately after purchasing my MacBook Pro&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;I have followed this discussion with great interest since the retina iPad Mini&amp;#8217;s launch. Of all the articles I have seen so far, Shawn&amp;#8217;s is one of the best.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://shawnblanc.net/2013/12/three-weeks-with-two-ipads/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 06 Dec 2013 13:58:19 GMT</pubDate><guid isPermaLink="true">http://shawnblanc.net/2013/12/three-weeks-with-two-ipads/</guid></item><item><title>Filson 4x4</title><link>http://huckberry.com/blog/posts/filson-4x4</link><description>&lt;p&gt;I love overachievers in the world of cars much more than in person, hence my unbridled enthusiasm when &lt;a href="https://zacs.site/blog/superhero-vehicles.html"&gt;I happened across&lt;/a&gt; Mercedes&amp;#8217; six-wheeled monster the G63 AMG and Ghe-O&amp;#8217;s indomitable Rescue. Something about these &lt;em&gt;trucks&lt;/em&gt;, for their rugged ability to tackle literally any terrain imaginable truly epitomizes the colloquial definition of the term&lt;sup id="fnref1"&gt;&lt;a href="#fn1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;, awakens a visceral desire to pack my backpack and spend a long weekend trekking through uninhabited back country with nothing but my thoughts to keep my company; they ignite within me a base midwestern American desire to go outside and spend time in nature. Unsurprisingly, then, Filson&amp;#8217;s Jeep 4x4 was no exception. My only hesitation in pushing its limits on a narrow mountain trail would be that I tarnish its carefully crafted exterior and spoil the bespoke interior; once I got past that though, I have no doubt it could handle anything I decided to throw at it.&lt;/p&gt;

&lt;p&gt;I don&amp;#8217;t mean to go on a rant, but as a brief aside I do not understand the appeal of such small trucks. I can see the place of cars, vans, SUVs, and F-150-esq trucks in the jobs consumers hire vehicles to do, but when it comes to these small &amp;#8220;trucks&amp;#8221; I am at a loss. Granted, their perpetuated existence indicates continued demand for such a form factor, but I can&amp;#8217;t for the life of my understand its appeal. Perhaps this is the naivety of youth and machismo of a nineteen-year-old speaking, but if I had the need for a flat bed and an additional four miles to each gallon without the bulk of an F-150 or above&amp;#160;&amp;#8212;&amp;#160;the only reasons I could see someone purchasing one of these vehicles&amp;#160;&amp;#8212;&amp;#160;I would swallow my second and third criteria and buy a Ford F-series anyways.&lt;/p&gt;

&lt;p id="fn1"&gt;&lt;a class="fn" href="#fnref1" title="return to article"&gt;&amp;#x21a9;&lt;/a&gt;&amp;nbsp;As opposed to the dinky Ford Rangers that have somehow managed to subsume the moniker.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://huckberry.com/blog/posts/filson-4x4"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 06 Dec 2013 10:12:47 GMT</pubDate><guid isPermaLink="true">http://huckberry.com/blog/posts/filson-4x4</guid></item><item><title>Quora answer about writing a search engine</title><link>https://boyter.org/2013/12/quora-answer-writing-search-engine/</link><description>&lt;p&gt;The following I posted on Quora in response to the question &lt;a href="http://www.quora.com/Search-Engines/I-am-planning-to-make-a-small-scale-search-engine-on-my-local-system-but-I-dont-know-from-where-to-start"&gt;&amp;ldquo;I am planning to make a small scale search engine on my local system, but I don&amp;rsquo;t know from where to start?&amp;rdquo;&lt;/a&gt;. It&amp;rsquo;s a reasonable answer so like my &lt;a href="http://www.boyter.org/2009/01/athlon-64-pc-512-ram-hold-home-server/"&gt;Mahalo&lt;/a&gt; one I thought I would make a copy for myself.&lt;/p&gt;
&lt;p&gt;I agree with Wolf Garbe and that you are better off in your case starting with existing technologies, have a look at &lt;!-- raw HTML omitted --&gt;&lt;a href="http://yacy.net/"&gt;http://yacy.net/&lt;/a&gt;&lt;!-- raw HTML omitted --&gt; and SphinxSearch as well. However if you are doing this to learn and not just deliver a product I can provide a few links for you.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Fri, 06 Dec 2013 03:31:30 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/12/quora-answer-writing-search-engine/</guid></item><item><title>Bezos and His Drones</title><link>https://zacs.site/blog/bezos-and-his-drones.html</link><description>&lt;p&gt;Towards the end of &lt;a href="http://stratechery.com/2013/amazon-benefits-vision/"&gt;&lt;em&gt;Amazon and the Benefits of Vision&lt;/em&gt;&lt;/a&gt; Ben Thompson explained the importance of vision&amp;#160;&amp;#8212;&amp;#160;and the consequences of a deficiency in this department&amp;#160;&amp;#8212;&amp;#160;using many of today&amp;#8217;s top tech companies as examples. At that point not particularly interested in Amazon&amp;#8217;s alleged plans slated for years down the road,, I found this all too brief examination much more fascinating than his actual topic. And then I read &lt;a href="http://nymag.com/daily/intelligencer/2013/12/amazon-drones-and-pre-lobbying.html"&gt;an article by Kevin Roose of the New York Magazine&lt;/a&gt;, which John Gruber linked to &lt;a href="http://daringfireball.net/linked/2013/12/03/amazon-drones-lobbying"&gt;on Tuesday&lt;/a&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/bezos-and-his-drones.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 05 Dec 2013 21:13:00 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/bezos-and-his-drones.html</guid></item><item><title>Let the Right One In</title><link>https://olshansky.info/movie/let_the_right_one_in/</link><description>Olshansky's review of Let the Right One In</description><author>🦉 olshansky 🦁</author><pubDate>Thu, 05 Dec 2013 11:41:30 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/let_the_right_one_in/</guid></item><item><title>Ip Man</title><link>https://olshansky.info/movie/ip_man/</link><description>Olshansky's review of Ip Man</description><author>🦉 olshansky 🦁</author><pubDate>Thu, 05 Dec 2013 11:41:04 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/ip_man/</guid></item><item><title>Good Will Hunting</title><link>https://olshansky.info/movie/good_will_hunting/</link><description>Olshansky's review of Good Will Hunting</description><author>🦉 olshansky 🦁</author><pubDate>Thu, 05 Dec 2013 11:37:33 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/good_will_hunting/</guid></item><item><title>Everything Must Go</title><link>https://olshansky.info/movie/everything_must_go/</link><description>Olshansky's review of Everything Must Go</description><author>🦉 olshansky 🦁</author><pubDate>Thu, 05 Dec 2013 11:37:10 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/everything_must_go/</guid></item><item><title>AngelList is the NASDAQ of our generation.</title><link>https://klinger.io/posts/angellist-is-the-nasdaq-of-our-generation</link><description>It’s fair to say that Angellist is the most exciting (web/mobile) tech startup in 2013. Even before they launched syndicates, earl...</description><author>Blog posts of Andreas Klinger</author><pubDate>Thu, 05 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://klinger.io/posts/angellist-is-the-nasdaq-of-our-generation</guid></item><item><title>Benchmark Analysis Of PHP Array Loops</title><link>https://kernelcurry.com/blog/benchmark-analysis-of-php-array-loops/</link><description>&lt;p&gt;&lt;em&gt;UPDATE:&lt;/em&gt; Migrated from a &lt;a href="https://web.archive.org/web/20140730180731/http://leve.rs:80/blog/benchmark-analysis-of-php-array-loops"&gt;post&lt;/a&gt; I wrote when working on leve.rs&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The last post I wrote provided examples of different ways to use array manipulation in PHP &lt;a href="https://kernelcurry.com/blog/correct-array-manipulation-in-php/"&gt;Link&lt;/a&gt;. An amazing number of people replied with a compelling argument, saying it’s better to use a foreach statement instead of the array_walk function.&lt;/p&gt;
&lt;p&gt;As all comments I receive from my articles, I thought hard on the idea. What is the fastest way achieve the end result?&lt;/p&gt;</description><author>KernelCurry</author><pubDate>Thu, 05 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://kernelcurry.com/blog/benchmark-analysis-of-php-array-loops/</guid></item><item><title>Wrap IDs in objects</title><link>https://www.databasesandlife.com/wrapping-ids-in-objects/</link><description>&lt;p class="intro"&gt;In Java, I like to wrap ID values in objects, rather than just passing them around the code as their native "int" or "long" or "String" values.&lt;/p&gt;
&lt;p&gt;The reasons are twofold why using an object is better:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Code becomes more readable,&lt;/strong&gt; for example &lt;code&gt;foo(LoginId x)&lt;/code&gt; is more readable than &lt;code&gt;foo(long x)&lt;/code&gt;. (Although perhaps neither foo nor x are good names, so perhaps the example over-exaggerates this improvement.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The compiler can do more checking.&lt;/strong&gt; If you pass the ID of one type of object (as a long) to a function expecting the ID of a different type of object (as a long), the compiler cannot warn you of your mistake. This becomes particularly relevant if you have a function taking two IDs and you pass them the wrong way around.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Things to consider when writing such an &amp;ldquo;ID object&amp;rdquo;&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Thu, 05 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/wrapping-ids-in-objects/</guid></item><item><title>Cabin Porn Roundup</title><link>https://zacs.site/blog/cabin-porn-roundup-1113.html</link><description>&lt;p&gt;Starting with November month, I have decided to take a different approach to posting links to cabins I find inspiring, attractive, or otherwise worthy of note: rather than make an individual post each time I come upon such a structure, from here on out I will hold them for the end of the month when I can collect my favorite posts and pictures. This will not only reduce the volume of &amp;#8220;Wow.&amp;#8221; and &amp;#8220;Beautiful.&amp;#8221; one-word link posts I have made a habit of publishing since discovering the Cabin Porn Tumblr last year, but will also allow me to centralize these relevant thoughts into a single monthly post.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/cabin-porn-roundup-1113.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 04 Dec 2013 22:49:33 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/cabin-porn-roundup-1113.html</guid></item><item><title>Thoughts on Bitcoin</title><link>https://zacs.site/blog/thoughts-on-bitcoin.html</link><description>&lt;p&gt;When news of a new currency dubbed &amp;#8220;Bitcoin&amp;#8221; first began circulating, I paid little attention: it seemed like a fad, something no one would remember in a month or two. Instead of fading away though, Bitcoin continued to gain popularity until not a day went by without someone writing an article either glorifying the currency for its upsides or crucifying it for any number of perceived downsides, whether real or not. An interesting parallel could be drawn between these fickle emotions and the manner in which many publications report on certain topics as of late, but I will let sleeping dogs lie.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/thoughts-on-bitcoin.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 04 Dec 2013 22:17:00 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/thoughts-on-bitcoin.html</guid></item><item><title>cell flash cache read hits vs. cell writes to flash cache statistics on Exadata</title><link>https://tanelpoder.com/2013/12/04/cell-flash-cache-read-hits-vs-cell-writes-to-flash-cache-statistics-on-exadata/</link><description>&lt;p&gt;When the Smart Flash Cache was introduced in Exadata, it was caching reads only. So there were only read “optimization” statistics like &lt;strong&gt;cell flash cache read hits&lt;/strong&gt; and &lt;strong&gt;physical read requests/bytes optimized&lt;/strong&gt; in V$SESSTAT and V$SYSSTAT (the former accounted for the read IO requests that got its data from the flash cache and the latter ones accounted the disk IOs avoided both thanks to the flash cache &lt;em&gt;and&lt;/em&gt; storage indexes). So if you wanted to measure the benefit of flash cache only, you’d have to use the &lt;em&gt;cell flash cache read hits&lt;/em&gt; metric.&lt;/p&gt;
&lt;p&gt;This all was fine until you enabled the Write-Back flash cache in a newer version of cellsrv. We still had only the “read hits” statistic in the V$ views! And when investigating it closer, both the read hits &lt;em&gt;and&lt;/em&gt; write hits were accumulated in the same &lt;em&gt;read hits&lt;/em&gt; statistic! (I can’t reproduce this on our patched 11.2.0.3 with latest cellsrv anymore, but it was definitely the behavior earlier, as I demoed it in various places).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Side-note: This is likely because it’s not so easy to just add more statistics to Oracle code within a single small patch. The statistic counters are referenced by other modules using macros with their direct numeric IDs (and memory offsets to v$sesstat array) and the IDs &amp;amp; addresses would change when more statistics get added. So, you can pretty much add new statistic counters only with new full patchsets, like 11.2.0**.4**. It’s the same with instance parameters by the way, that’s why the “spare” statistics and spare parameters exist, they’re placeholders for temporary use, until the new parameter or statistic gets added permanently with a full patchset update.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So, this is probably the reason why both the flash cache read and write hits got initially accumulated under the cell flash cache &lt;strong&gt;read&lt;/strong&gt; hits statistic, but later on this seemed to get “fixed”, so that the &lt;em&gt;read hits&lt;/em&gt; only showed read hits and the flash write hits were not accounted anywhere. You can test this easily by measuring your DBWR’s v$sesstat metrics with snapper for example, if you get way more &lt;em&gt;cell flash cache read hits&lt;/em&gt; than &lt;em&gt;physical read total IO requests,&lt;/em&gt; then you’re probably accumulating both read and write hits in the same metric.&lt;/p&gt;
&lt;p&gt;Let’s look into a few different database versions:&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Wed, 04 Dec 2013 13:57:09 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/12/04/cell-flash-cache-read-hits-vs-cell-writes-to-flash-cache-statistics-on-exadata/</guid></item><item><title>Letting PHP know that its connection behind NGINX is over HTTPS</title><link>https://thomashunter.name/posts/2013-12-03-letting-php-know-that-its-connection-behind-nginx-is-over-https</link><author>Thomas Hunter II</author><pubDate>Tue, 03 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-12-03-letting-php-know-that-its-connection-behind-nginx-is-over-https</guid></item><item><title>Go Binary Sizes Are Growing out of Control</title><link>https://donatstudios.com/Golang-Binary-Sizes</link><description>&lt;p&gt;&lt;strong&gt;Update 2019-07-17:&lt;/strong&gt; I have released a follow up post &lt;a href="https://donatstudios.com/Golang-Binary-Sizes-Part-2"&gt;Go Binary Sizes Are Relatively Stable&lt;/a&gt; which speaks on what's happened in the time since this was published.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is not intended as a &amp;quot;Go Sucks&amp;quot; post. I &lt;strong&gt;&lt;em&gt;love&lt;/em&gt;&lt;/strong&gt; Go. I &lt;strong&gt;am not&lt;/strong&gt; saying the developers are &lt;em&gt;lazy&lt;/em&gt; or &lt;em&gt;dumb&lt;/em&gt; or any of the things Reddit has implied. I am not implying I could build a better compiler. Rob Pike and the Go team are geniuses whom I look up to. The tone of this was intended to be a light &amp;quot;man I wish binaries were smaller&amp;quot; but that is not how Reddit seemed to take it.  Also, the title is &lt;a href="https://en.wikipedia.org/wiki/Hyperbole"&gt;hyperbole&lt;/a&gt; and not meant to literally mean no one has control over it.&lt;/p&gt;
&lt;p&gt;I started toying with Go about two years ago before the 1.0 release. I love the language, it meets me in a comfortable place between C and a scripting languages like PHP. I find it fun to write and an easy way to bust out performant code quickly. The binaries for a simple &lt;code&gt;Hello, 世界&lt;/code&gt; were large  though, around 55KB.  I figured this was something the Go team would work out later; it is a lot of space just to send a string to standard out.&lt;/p&gt;
&lt;p&gt;With the release of Go 1.0 though, I noticed the binary size had grown slightly to 242KB. Discouraging but livable. I was quite hopeful with the 1.1 release, but it had actually nearly doubled in size coming out to a whopping 405KB. Then this morning I compiled it again in the newly release 1.2 and to my horror the ever simple program came out to 557KB.&lt;/p&gt;
&lt;p&gt;What on earth is going on in that binary? I am no expert on compilers but I would imagine the vast majority of what is in there is completely unnecessary and could be optimized out.  Changing the script to &amp;quot;Hello, World&amp;quot; rather than Go's flaunted unicode version has zero effect on binary size, as one would expect but I was hopeful.&lt;/p&gt;
&lt;p&gt;For reference the complete source of my &lt;code&gt;Hello, 世界&lt;/code&gt; follows. Using &lt;code&gt;fmt&lt;/code&gt; comes out even larger.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;package main

func main() {
    println("Hello, 世界")
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here is a collection of binaries compiled in different versions of Go.  Notice how imgavg grows from 1.9MB to 3.7MB. My applications are all small tools.  I can only imagine the effect this has an already large application.&lt;/p&gt;
&lt;img alt="Golang binary sizes grow with each release" src="https://donatstudios.com/assets/48/golangBinarySizes.png" style="display: block; margin: 0 auto; border: 1px solid #aaa;" /&gt;
&lt;p&gt;I really hope something is done about this. I would love to see tiny (&amp;lt;32KB) binaries from Go but right now that doesn't seem to be a priority for them. The fact that &lt;code&gt;Hello, 世界&lt;/code&gt; fills half a floppy means the language is not be useful for lighter or embedded environments.&lt;/p&gt;
&lt;p&gt;As noted in the header there is an addendum to this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://donatstudios.com/Golang-Binary-Sizes-Part-2"&gt;Go Binary Sizes Are Relatively Stable&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Donat Studios</author><pubDate>Tue, 03 Dec 2013 01:25:43 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/Golang-Binary-Sizes</guid></item><item><title>On Why I Still Prefer Traditional Books to eBooks</title><link>https://nicolaiarocci.com/on-why-i-still-prefer-traditional-books-to-ebooks/</link><description>&lt;p&gt;I&amp;rsquo;ve been using a Kindle for a long time now, and I love it. But I keep buying paper books. Lots of them. Actually I buy a &lt;em&gt;lot&lt;/em&gt; more books than ebooks and it doesn&amp;rsquo;t even stop there. Admittedly, I am guilty of repeatedly buying paper editions of ebooks I&amp;rsquo;ve read on the Kindle.&lt;/p&gt;
&lt;p&gt;For a very long time I&amp;rsquo;ve not been able to tell the precise reason why I keep going back to traditional books. It&amp;rsquo;s not about the reading experience or the sexiness of turning physical pages. Well of course that matters too, as I&amp;rsquo;ve always been kind of a book fetishist, but since the very beginning of my love-hate relationship with the Kindle I&amp;rsquo;ve always known there had to be something else, and I couldn&amp;rsquo;t pin it down.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Mon, 02 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/on-why-i-still-prefer-traditional-books-to-ebooks/</guid></item><item><title>See which user accounts hackers try to access on your server the most</title><link>https://thomashunter.name/posts/2013-12-02-see-which-user-accounts-hackers-try-to-access-on-your-server-the-most</link><author>Thomas Hunter II</author><pubDate>Mon, 02 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-12-02-see-which-user-accounts-hackers-try-to-access-on-your-server-the-most</guid></item><item><title>Monthly Review: November</title><link>https://josh.works/growth/home/2013/12/01/monthly-review-november/</link><description>&lt;p&gt;This is my second monthly review, and I’m hooked.
I’ve thought this coming review frequently, but I thought about that as I was conducting my month. This proactive review is in line with 
&lt;a href="http://en.wikipedia.org/wiki/Viktor_Frankl"&gt;Viktor Frankl’s&lt;/a&gt; admonition to “live every day as if it were your second chance to live it.” This simple piece of advice, and another one, are packaged for free and available in the 
&lt;a href="http://storylineblog.com/sps/"&gt;Storyline Productivity Schedule&lt;/a&gt; (it’s free, and worth reading).&lt;/p&gt;

&lt;h2 id="november-review"&gt;November Review&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My marriage&lt;/strong&gt;
 Kristi and I are growing, and as any relationship does, go through ups and downs. The trend is up, and as I have thought and prayed about our relationship, we have both been able to identify a few specifics that we want to work on and improve. We can (usually) converse easily about the health of our relationship, and work together to love each other better. This month we have both gotten to spend time with our respective families, and we have enjoyed ourselves. There had sometimes been friction with each others families, so this is a big win.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Significant relationships&lt;/strong&gt;
 I write this from my parents house in TN, where more of my family has assembled then has been together in at least three years. I called each of my grand parents once last month, which is one time more than I’d called them in months. Positive progress.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Side projects&lt;/strong&gt;
 I’ve been so excited about two side projects I’ve sometimes been unable to fall asleep at night. One is still under wraps, but the other is one I need help with (from all you climbers). I’m writing an e-book about dealing with fear while lead climbing. Last month I said I had to have my edits done by this coming month, and so it’s done. I want to get out and get more feedback, then release it to the world.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This side project has quickly morphed into a complicated beast, but I’ve allowed the total complexity to hinder progress in the small but important ways, like… you know… writing the book. I’m done with the first draft. This is a big deal.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My job&lt;/strong&gt;
 At work we had some of our busiest days of the hear, and in some important ways, at least one day was an almost total failure. It wasn’t my fault at all, but it’s frustrating. I’ve found that working in short bursts with a little break is good (when I’m in the office, a sprint up and down the ten flights of stairs is a life changer). I’ve struggled with hopelessness there, so… I’m still wrestling with that in my head.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Physical goals&lt;/strong&gt;
 My current project is 
handstands. I can hold myself in the handstand position against a door for about 90 seconds, and I can “hold” a freestanding handstand for, at best, five seconds. But that’s five seconds longer than last month. I started with 
&lt;a href="http://chrissalvato.com/"&gt;this blog&lt;/a&gt;, and have branched out from there. I’ve never spent more than five minutes a day practicing. You should give it a shot too.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve encountered another interesting issue - I fear the opinions of others when practicing this kind of stuff. Seriously. Even practicing at home around my wife, I feel like I had to prove I wasn’t insane. She stopped me and said “Josh. You can practice what every you want. You’re not in trouble.”&lt;/p&gt;

&lt;p&gt;Practicing outside is even harder. I’ve also noticed I don’t want to do sprint training in a field by myself, because it will look weird. It’s strange, having all this fear, but it’s nice recognizing it. Onward!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Finances&lt;/strong&gt;
Still an important factor to us. Kristi and I had fun conversation when it turned out our credit card was not automatically synching with our money tracking tool, so all of our non-debit spending was not being accounted for. We’ve fixed that, but we’re still nailing these details down.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Debt reduction (student loans, car loan)&lt;/strong&gt;
Debt reduction ration of 1.0. Sufficient, but far from ideal.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My monthly reviews&lt;/strong&gt;
 On my second monthly review, I’ve felt that this is extremely good for me. I don’t like waiting for a full month, though, so I may toy with a bi-monthly review. Every two weeks. Or maybe a bi-monthly review on some select topics (side projects, finances, and habits being the top candidates). Either way, this reflectivity is extremely helpful. I’d encourage y’all out there to try it. Blogging can be free (I pay $18/yr for the domain, and that’s my only cost. So… we’ll call it $1.50/mo. Pretty cheap) but can encourage a lot of good things.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Habits&lt;/strong&gt;
 I’ve struggled to 
&lt;a href="/blog/2013/04/22/becoming-an-early-riser"&gt;get up early&lt;/a&gt;, because I’m struggling to go to bed early. My evening routine is not a routine at all, and I think this is part of the problem. I also lose control of my early-rising habit when traveling. I think it’ll help me to lay my clothes out in the morning, and have a clear reason for why I am trying to get up early. That will help get me out of bed. (This all ties back to the PM routine.)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes I get up at 5:30, feeling great. Sometimes I can’t get out of bed before 8:00. Not consistent at all.&lt;/p&gt;

&lt;p&gt;For my entire adult life, I’ve been convinced I don’t have dreams, because I never have been aware of any. Then I read 
&lt;a href="http://www.fourhourworkweek.com/blog/2009/09/21/how-to-lucid-dream/"&gt;Tim Ferris’s article on lucid dreaming&lt;/a&gt;, and I decided to give it a shot. I’m still in the “write down what you can remember when you wake up” phase, but I’m now aware that I dream, and have vague memories of them.&lt;/p&gt;

&lt;p&gt;I’ve picked up 
&lt;a href="/blog/2013/05/09/daily-exercise-russian-kettlebells"&gt;kettlebell swings&lt;/a&gt; again. I feel like I’m not challenging myself physically, so I’m back at them. I need more weight - I want to get to 100lb swings, but only have 60lbs of weight to work with. I’ll check out local gyms for discarded plates to see if I can get any more weight.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Significant events&lt;/strong&gt;
Nothing life changing happened in the last few weeks, but there have been lots of little shaping experiences. Serendipitous conversations with important people, or feeling on-the-spot when I didn’t have time to prepare. Opportunities to surprise my wife, or be kind to a stranger. These incidents are the stuff of life, and I don’t want them to pass me by.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This concludes my monthly review. Stay tuned for updates on side projects. If you climb, I will need your help!&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Sun, 01 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/home/2013/12/01/monthly-review-november/</guid></item><item><title>Tips for assembling the O2 (Objective2) Headphone Amplifier Kit</title><link>https://thomashunter.name/posts/2013-12-01-assembling-the-o2-headphone-amplifier-kit</link><author>Thomas Hunter II</author><pubDate>Sun, 01 Dec 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-12-01-assembling-the-o2-headphone-amplifier-kit</guid></item><item><title>Hard Drive Predictive Failures on Linux and Exadata</title><link>https://tanelpoder.com/2013/11/29/hard-drive-predictive-failures-on-exadata/</link><description>&lt;p&gt;&lt;em&gt;This post also applies to non-Exadata systems as hard drives work the same way in other storage arrays too &amp;ndash; just the commands you would use for extracting the disk-level metrics would be different. Scroll down to &lt;strong&gt;smartctl&lt;/strong&gt; if you wan&amp;rsquo;t to skip the Oracle stuff and get straight to the Linux disk diagnosis commands.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I just noticed that one of our Exadatas had a disk put into “predictive failure” mode and thought to show how to measure &lt;em&gt;why&lt;/em&gt; the disk is in that mode (as opposed to just replacing it without really understanding the issue ;-)&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; @exadata/&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/cellpd.sql" target="_blank"&gt;cellpd&lt;/a&gt;
Show Exadata cell versions from V$CELL_CONFIG....

DISKTYPE             CELLNAME             STATUS                 TOTAL_GB     AVG_GB  NUM_DISKS   PREDFAIL   POORPERF WTCACHEPROB   PEERFAIL   CRITICAL
-------------------- -------------------- -------------------- ---------- ---------- ---------- ---------- ---------- ----------- ---------- ----------
FlashDisk            192.168.12.3         normal                      183         23          8
FlashDisk            192.168.12.3         not present                 183         23          8                     3
FlashDisk            192.168.12.4         normal                      366         23         16
FlashDisk            192.168.12.5         normal                      366         23         16
HardDisk             192.168.12.3         normal                    20489       1863         11
HardDisk             192.168.12.3         &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;warning - predictive&lt;/strong&gt;&lt;/span&gt;       1863       1863         &lt;span style="color: #ff0000;"&gt;&lt;strong&gt; 1          1&lt;/strong&gt;&lt;/span&gt;
HardDisk             192.168.12.4         normal                    22352       1863         12
HardDisk             192.168.12.5         normal                    22352       1863         12&lt;/pre&gt;
&lt;p&gt;So, one of the disks in storage cell with IP 192.168.12.3 has been put into predictive failure mode. Let’s find out why!&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Fri, 29 Nov 2013 14:50:00 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/11/29/hard-drive-predictive-failures-on-exadata/</guid></item><item><title>A Perk of Using WebGL</title><link>https://blog.varunramesh.net/posts/a-perk-of-using-webgl/</link><description>WebGL games can use HTML/CSS for GUIs. It's a lot easier to use than most game engine UI frameworks.</description><author>Varun Ramesh's Blog</author><pubDate>Fri, 29 Nov 2013 02:01:00 GMT</pubDate><guid isPermaLink="true">https://blog.varunramesh.net/posts/a-perk-of-using-webgl/</guid></item><item><title>Recent Hackathon Projects</title><link>https://blog.varunramesh.net/posts/recent-hackathon-projects/</link><description>I write about some recent hackathon projects I worked on.</description><author>Varun Ramesh's Blog</author><pubDate>Thu, 28 Nov 2013 23:46:00 GMT</pubDate><guid isPermaLink="true">https://blog.varunramesh.net/posts/recent-hackathon-projects/</guid></item><item><title>kotlin - a new hope</title><link>https://zserge.com/posts/kotlin/</link><description>I&amp;rsquo;ve been looking for Java alternatives since my first days of Android development. I can&amp;rsquo;t say I don&amp;rsquo;t like Java. It&amp;rsquo;s a nice language, very easy to learn and pretty logical. But the lack of proper functional style constructions often inspires me to check what&amp;rsquo;s new in the field of JVM languages.
So far I&amp;rsquo;ve tried (tried, I never learnt these languages properly):
Mirah - a very nice Ruby-translated-to-Java language.</description><author>zserge's blog</author><pubDate>Thu, 28 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://zserge.com/posts/kotlin/</guid></item><item><title>Raspberry Pi Pulling the Plug</title><link>https://peanball.net/2013/11/raspi-pulling-plug/</link><description>&lt;p&gt;While browsing for different breakout boards for the Rover I&amp;rsquo;ve discovered a nice little board that has a push button and logic pin to control a MOSFET.&lt;br /&gt;
This little contraption allows switching on and off the power, say through a USB cable.&lt;/p&gt;</description><author>peanball.net</author><pubDate>Thu, 28 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://peanball.net/2013/11/raspi-pulling-plug/</guid></item><item><title>Making HackerTray</title><link>https://captnemo.in/blog/2013/11/28/making-hackertray/</link><description>&lt;p&gt;A few days back, I found the excellent &lt;a href="http://hackerbarapp.com/"&gt;HackerBarApp&lt;/a&gt; via Hacker News. Hacker News,
for those of you who don’t know, is  tech news website run by &lt;a href="http://ycombinator.com"&gt;YCombinator&lt;/a&gt;.
Hacker Bar was the simplest way of accessing HN stories that I’d ever seen. Unfortunately,
it was only for Mac (made using &lt;a href="http://www.rubymotion.com/"&gt;rubymotion&lt;/a&gt;) and even though the source was available,
it was of no use to me as a Linux User.&lt;/p&gt;

&lt;p&gt;I decided to make a clone of Hacker Bar that would work on Linux. My first choice of the
stack was &lt;a href="https://github.com/rogerwang/node-webkit"&gt;node-webkit&lt;/a&gt;, an application framework that allows you to build cross-platform
applications using HTML, CSS, JS, and modules from the node.js ecosystem. After reading a lot
about node-webkit, I figured out that building this application in node-webkit (as it stands)
would not be possible. Or rather, it would not work under Ubuntu and its derivatives because
of lacking appindicator support in &lt;a href="https://github.com/rogerwang/node-webkit/issues/1087"&gt;node-webkit&lt;/a&gt;. More details &lt;a href="https://groups.google.com/d/topic/node-webkit/FeX7YYwK8jI/discussion"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The next obvious language and stack of choice was Python + Gtk. I’d already played a little bit
with Gtk and Python some time back, so I knew the basics. But I’d never build a real application
with PyGtk, just toys and small scripts. I found a &lt;a href="http://www.eurion.net/python-snippets/snippet/Create%20an%20Application%20Indicator.html"&gt;basic skeleton app&lt;/a&gt;
that was written for AppIndicator and modified it somewhat to form the base of HackerTray.&lt;/p&gt;

&lt;p&gt;The next challenge I faced was keeping the check boxes always checked despite of any number
of clicks after the first. That is, we don’t want any menu item to be “un-checked” at
any moment. A basic idea is to do this (partial code):&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-python"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
	&lt;span class="nf"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_active&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
		&lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_active&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
	&lt;span class="n"&gt;webbrowser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;addItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
	&lt;span class="c1"&gt;#create a new CheckMenuItem (i)
&lt;/span&gt;	&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;activate&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;However, this does not work as expected, because the &lt;code class="language-plaintext highlighter-rouge"&gt;widget.set_active()&lt;/code&gt; call also results
in the &lt;code class="language-plaintext highlighter-rouge"&gt;activate&lt;/code&gt; event being fired, which ultimately calls &lt;code class="language-plaintext highlighter-rouge"&gt;open&lt;/code&gt;. This means on a click to
an unchecked menuItem, the open function is called twice. This results in the browser opening
the link twice.&lt;/p&gt;

&lt;p&gt;As a workaround, I disabled the event handler in case it is a checked menuItem:&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-python"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
	&lt;span class="nf"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_active&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
		&lt;span class="n"&gt;wiget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;signal_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
		&lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_active&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
		&lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;signal_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;activate&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
	&lt;span class="n"&gt;webbrowser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;addItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
	&lt;span class="c1"&gt;#create a new CheckMenuItem (i)
&lt;/span&gt;	&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;activate&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
	&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;signal_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;activate&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The next thing I worked on was a persistent memory for the app. In a nutshell, I needed to
make sure that the tick on an item remained there, even if the app was restarted. This meant
writing a list of all the “viewed” items into a file. After looking at &lt;a href="http://docs.python.org/lib/module-shelve.html"&gt;shelve&lt;/a&gt; for a
bit, I just &lt;a href="https://github.com/captn3m0/hackertray/commit/167397e51f665847400617935653027ebba0b396"&gt;rolled my own implementation&lt;/a&gt;
, based on storing the data into &lt;code class="language-plaintext highlighter-rouge"&gt;~/.hackertray.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;After that I worked on packaging the app into a python package, so that it could be easily installed.
The &lt;a href="https://python-packaging.readthedocs.io/en/latest/"&gt;python packaging tutorial&lt;/a&gt; was an easy to use guide
that let me &lt;a href="https://github.com/captn3m0/hackertray/commit/6ca735ea089d9189f152612ed016d31d72f9c36b"&gt;create the package&lt;/a&gt;
easily and push it to the &lt;a href="https://pypi.python.org/pypi/hackertray/"&gt;Python Package Index&lt;/a&gt;. A few issues in the package
were found, and were fixed quickly thanks to &lt;a href="https://github.com/captn3m0/hackertray/pull/7"&gt;the pull request&lt;/a&gt; by &lt;a href="https://github.com/brunal"&gt;@brunal&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After improving the README a bit, I posted about it on Hacker News, where it failed to get any traction. I re-tried with a link
to the HackerTray website, and that fell flat as well. It was on the next day, when I &lt;a href="https://news.ycombinator.com/item?id=6819042"&gt;posted it to HN&lt;/a&gt;
for the third time, that it took off. After 50 or so upvotes, I found that my instance refused to run because it had
hit the API Rate Limit on the excellent &lt;a href="https://node-hnapi.herokuapp.com/"&gt;node-hnapi&lt;/a&gt;. I quickly &lt;a href="https://github.com/captn3m0/hackertray/commit/8f0b08137b6c4b05ebe63a33029a36c068cfbc05"&gt;pushed a fix&lt;/a&gt;
that used a list of servers to hit as fallback in case it crossed the Rate Limits.&lt;/p&gt;

&lt;p&gt;After a lot of feedback from HN, I started work on a &lt;code class="language-plaintext highlighter-rouge"&gt;node-webkit&lt;/code&gt; based clone of hackertray for Windows. I should be able to release
it in a few more days, if nothing else crops up. Keep watching this space for info. If you have any queries, just &lt;a href="https://github.com/captn3m0/hackertray/issues/new"&gt;file an issue on GitHub&lt;/a&gt;
or &lt;a href="mailto:capt.n3m0@gmail.com"&gt;contact me&lt;/a&gt;.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Thu, 28 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2013/11/28/making-hackertray/</guid></item><item><title>Impressed by a 10 year old desktop computer</title><link>https://jasoneckert.github.io/myblog/impressed-by-a-10-year-old-desktop/</link><description>&lt;p&gt;&lt;img alt="SGI Fuel 1" src="fuel1.png#center" title="SGI Fuel 1" /&gt;
&lt;img alt="SGI Fuel 2" src="fuel2.jpg#right" title="SGI Fuel 2" /&gt;&lt;/p&gt;
&lt;p&gt;Long story short, I scored a free SGI Fuel computer along with the SGI Origin 300 computer I described two posts ago.&lt;/p&gt;
&lt;p&gt;But the SGI Fuel is a much more “usable” computer because it is a powerful single-processor graphical desktop computer (what Silicon Graphics was best known for).&lt;/p&gt;
&lt;p&gt;Here is what it comes with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4GB RAM&lt;/li&gt;
&lt;li&gt;600MHz R14000A MIPS CPU (64-bit)&lt;/li&gt;
&lt;li&gt;Two SCSI hard disks&lt;/li&gt;
&lt;li&gt;DVD writer&lt;/li&gt;
&lt;li&gt;Odyssey video card (DVI) that takes up the entire bottom of the cabinet&lt;/li&gt;
&lt;li&gt;IRIX 6.5 UNIX&lt;/li&gt;
&lt;li&gt;Street cred among UNIX nerds&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To the right is a picture of the case.It’s far larger and heavier than a standard desktop PC case. And no, it’s not pink&amp;hellip;&amp;hellip;it’s fuchsia ;-)&lt;/p&gt;</description><author>Jason Eckert's Website and Blog</author><pubDate>Thu, 28 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://jasoneckert.github.io/myblog/impressed-by-a-10-year-old-desktop/</guid></item><item><title>University Presentation</title><link>https://tomforb.es/blog/university-presentation/</link><description>So I did a presentation on Information Security at University today. I think it went rather well, however I couldn’t show a couple of the demonstrations due to some SkyDrive files only being available online. That sucked because those were my best demonstrations, but overall I was happy. A few peopl...</description><author>Tom Forbes</author><pubDate>Wed, 27 Nov 2013 20:19:28 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/university-presentation/</guid></item><item><title>When do Oracle Parallel Execution Slaves issue buffered physical reads – Part 2?</title><link>https://tanelpoder.com/2013/11/27/when-do-oracle-parallel-execution-slaves-issue-buffered-physical-reads-part-2/</link><description>&lt;p&gt;In the previous post about &lt;a href="https://tanelpoder.com/2013/11/27/when-do-oracle-parallel-execution-slaves-issue-buffered-physical-reads-part-1/" target="_blank"&gt;in-memory parallel execution&lt;/a&gt; I described in which cases the in-mem PX can kick in for your parallel queries.&lt;/p&gt;
&lt;p&gt;A few years ago (around Oracle 11.2.0.2 and Exadata X2 release time) I was helping a customer with their migration to Exadata X2. Many of the queries ran &lt;em&gt;way&lt;/em&gt; slower on Exadata compared to their old HP Superdome. The Exadata system was configured according to the Oracle&amp;rsquo;s &amp;ldquo;best practices&amp;rdquo;, that included setting the &lt;strong&gt;parallel_degree_policy = AUTO&lt;/strong&gt;.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Wed, 27 Nov 2013 13:32:36 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/11/27/when-do-oracle-parallel-execution-slaves-issue-buffered-physical-reads-part-2/</guid></item><item><title>When do Oracle Parallel Execution Slaves issue buffered physical reads – Part 1?</title><link>https://tanelpoder.com/2013/11/27/when-do-oracle-parallel-execution-slaves-issue-buffered-physical-reads-part-1/</link><description>&lt;p&gt;This post applies both to non-Exadata and Exadata systems.&lt;/p&gt;
&lt;p&gt;Before Oracle 11.2 came out, it was true to say that Oracle Parallel Execution slaves &lt;em&gt;always&lt;/em&gt; do direct path reads (bypassing buffer cache) when doing full segment scans. This should not be taken simplistically though. Even when you were doing full table scans, then yes the scanning was done with direct path multiblock reads – but if you had to visit other, additional blocks out of the scanning sequence, then these extra IOs were done with regular buffered reads. For example, next row piece fetching of chained rows or or undo block access for CR reads was done with buffered single block reads, or even buffered multiblock reads, if some form of &lt;a href="https://tanelpoder.com/2012/05/02/advanced-oracle-troubleshooting-guide-part-10-index-unique-scan-doing-multiblock-reads/" target="_blank"&gt;prefetching&lt;/a&gt; kicked in.&lt;/p&gt;
&lt;p&gt;In addition to that, random table/index accesses like index range scans and the following table block fetches are always done in a buffered way both in serial and parallel execution cases.&lt;/p&gt;
&lt;p&gt;Starting from Oracle 11.2 though, Oracle parallel execution slaves can also do the parallel full segment scans via the buffer cache. The feature is called &lt;a href="https://blogs.oracle.com/datawarehousing/entry/in-memory_parallel_execution_i" target="_blank"&gt;In-Memory Parallel Execution&lt;/a&gt;, not to be confused with the Oracle 12c upcoming &lt;a href="http://www.oracle.com/us/corporate/press/2020717" target="_blank"&gt;In-Memory Option&lt;/a&gt; (which gives you a columnar, compressed, in-memory &lt;em&gt;cache&lt;/em&gt; of your on-disk data).&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Wed, 27 Nov 2013 12:32:38 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/11/27/when-do-oracle-parallel-execution-slaves-issue-buffered-physical-reads-part-1/</guid></item><item><title>PostgreSQL - It's kind've a nifty database</title><link>https://www.brightball.com/articles/postgresql-its-kindve-a-nifty-database</link><description>This is a presentation I recently gave to provide an overview of PostgreSQL and some of it's excellent features, including full-text search, multiple built in datatypes, data compression and extensions.  Also, Morgan Freeman is narrating. You're welcome.</description><author>Brightball Articles</author><pubDate>Wed, 27 Nov 2013 11:42:00 GMT</pubDate><guid isPermaLink="true">https://www.brightball.com/articles/postgresql-its-kindve-a-nifty-database</guid></item><item><title>Amateur Hour is Over</title><link>https://zacs.site/blog/amateur-hour-is-over.html</link><description>&lt;p&gt;I love The Verge&amp;#160;&amp;#8212;&amp;#160;I really do. Not long after posting &lt;a href="https://zacs.site/blog/bullies.html"&gt;&lt;em&gt;Credibility and Bullies with Blogs&lt;/em&gt;&lt;/a&gt;, where I took Josh Topolsky to task for his wholly inappropriate reaction to many justifiable criticisms regarding his publication&amp;#8217;s device reviews, I subscribed to The Verge. Today it not only serves as my primary news source, but I also follow The Vergecast and tune in for their live coverage of Apple&amp;#8217;s events. Lately, however, I have been increasingly disappointed with their work.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/amateur-hour-is-over.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Nov 2013 11:25:16 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/amateur-hour-is-over.html</guid></item><item><title>Advanced recursion and memoization in Puppet</title><link>https://purpleidea.com/blog/2013/11/27/advanced-recursion-and-memoization-in-puppet/</link><description>&lt;p&gt;As a follow-up to my original article on &lt;a href="https://purpleidea.com/blog/2012/11/20/recursion-in-puppet-for-no-particular-reason/" title="recursion in puppet (for no particular reason)"&gt;recursion in Puppet&lt;/a&gt;, and in my attempt to &lt;a href="https://purpleidea.com/blog/2013/11/05/pushing-puppet-at-puppet-camp-dc-lisa-2013/" title="Pushing Puppet at Puppet Camp DC, LISA 2013"&gt;Push Puppet (to its limit)&lt;/a&gt;, I&amp;rsquo;ll now attempt some more advanced recursion techniques in Puppet.&lt;/p&gt;
&lt;p&gt;In my original &lt;a href="https://github.com/purpleidea/puppet-pushing/blob/master/standalone/recursion.pp"&gt;recursion example&lt;/a&gt;, the type does recurse, but the &lt;em&gt;callee&lt;/em&gt; cannot return any value to the &lt;em&gt;caller&lt;/em&gt; because it is a type, and not strictly a function. This limitation immediately limits the usefulness of this technique, but I&amp;rsquo;ll try to press on! Let&amp;rsquo;s try to write a &lt;a href="https://en.wikipedia.org/wiki/Fibonacci_number"&gt;Fibonacci series&lt;/a&gt; function in native Puppet.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Wed, 27 Nov 2013 02:03:15 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/11/27/advanced-recursion-and-memoization-in-puppet/</guid></item><item><title>pixelsim</title><link>https://mattkeeter.com/projects/pixelsim</link><description>Squishy pixel-art spaceships on the GPU</description><author>Matt Keeter</author><pubDate>Wed, 27 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://mattkeeter.com/projects/pixelsim</guid></item><item><title>Sound in Python</title><link>https://bastibe.de/2013-11-27-audio-in-python.html</link><description>&lt;p&gt;Have you ever wanted to work with audio data in Python? I know I do. I want to record from the microphone, I want to play sounds. I want to read and write audio files. If you ever tried this in Python, you know it is kind of a pain.&lt;/p&gt;
&lt;p&gt;It's not for a lack of libraries though. You can read sound files using &lt;a href="http://docs.python.org/2/library/wave.html"&gt;wave&lt;/a&gt;, SciPy provides &lt;a href="http://docs.scipy.org/doc/scipy/reference/tutorial/io.html#module-scipy.io.wavfile"&gt;scipy.io.wavfile&lt;/a&gt;, and there is a SciKit called &lt;a href="http://scikits.appspot.com/audiolab"&gt;scikits.audiolab&lt;/a&gt;. And except for &lt;code&gt;scikits.audiolab&lt;/code&gt;, these return the data as raw &lt;code&gt;bytes&lt;/code&gt;. Like, they parse the WAVE header and that is great and all, but you still have to decode your audio data yourself.&lt;/p&gt;
&lt;p&gt;The same thing goes for playing/recording audio: &lt;a href="http://people.csail.mit.edu/hubert/pyaudio/"&gt;PyAudio&lt;/a&gt; provides nifty bindings to &lt;a href="http://www.portaudio.com/"&gt;portaudio&lt;/a&gt;, but you still have to decode your raw &lt;code&gt;bytes&lt;/code&gt; by hand.&lt;/p&gt;
&lt;p&gt;But really, what I want is something different: When I record from the microphone, I want to get a NumPy array, not &lt;code&gt;bytes&lt;/code&gt;. You know, something I can work with! And then I want to throw that array into a sound file, or play it on a different sound card, or do some calculations on it!&lt;/p&gt;
&lt;p&gt;So one fateful day, I was sufficiently frustrated with the state of things that I set out to create just that. Really, I only wanted to play around with &lt;a href="http://cffi.readthedocs.org"&gt;cffi&lt;/a&gt;, but that is beside the point.&lt;/p&gt;
&lt;p&gt;So, lets read some audio data, shall we?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;soundfile&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soundfile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'sad_song.wav'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;done. All the audio data is now available as a NumPy array in &lt;code&gt;data&lt;/code&gt;. Just like that.&lt;/p&gt;
&lt;p&gt;Awesome, isn't it?&lt;/p&gt;
&lt;p&gt;OK, that was easy. So let's read only the first and last 100 frames!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;soundfile&lt;/span&gt;
&lt;span class="n"&gt;first&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soundfile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'long_song.flac'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stop&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;last&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soundfile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This really only read the first and last bit. Not everything in between!&lt;/p&gt;
&lt;p&gt;Note that at no point I did explicitly open or close a file! This is Python! We can do that! When the &lt;code&gt;SoundFile&lt;/code&gt; object is created, it opens the file. When it goes out of scope, it closes the file. It's as simple as that. Or just use &lt;code&gt;SoundFile&lt;/code&gt; in a context manager. That works as well.&lt;/p&gt;
&lt;p&gt;Oh, but I want to use the sound card as well! I want to record audio to a file!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;pysoundcard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Stream&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;pysoundfile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;SoundFile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ogg_file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;write_mode&lt;/span&gt;
&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;Stream&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# opens your default audio device&lt;/span&gt;
    &lt;span class="c1"&gt;# This is supposed to be a new file, so specify it completely&lt;/span&gt;
    &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SoundFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'happy_song.ogg'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sample_rate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample_rate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                  &lt;span class="n"&gt;channels&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;channels&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;ogg_file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                  &lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;write_mode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample_rate&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# one second&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Read from the stream, write to a file. It works the other way round, too!&lt;/p&gt;
&lt;p&gt;And that's really all there is to it. Working with audio data in Python is easy now!&lt;/p&gt;
&lt;p&gt;Of course, there is much more you could do. You could create a callback function and be called every four&lt;sup class="footnote-ref" id="fnref-1"&gt;&lt;a href="#fn-1"&gt;1&lt;/a&gt;&lt;/sup&gt; frames with new audio data to process. You could request your audio data as &lt;code&gt;int16&lt;/code&gt;, because that would be totally awesome! You could use many different sound cards at the same time, and route stuff to and fro to your hearts desire! And you can run all this on Linux using ALSA or Jack, or on Windows using DirectSound or ASIO, or on Mac using CoreAudio&lt;sup class="footnote-ref" id="fnref-2"&gt;&lt;a href="#fn-2"&gt;2&lt;/a&gt;&lt;/sup&gt;. And you already saw that you can read Wave files, OGG, FLAC or MAT-files&lt;sup class="footnote-ref" id="fnref-3"&gt;&lt;a href="#fn-3"&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;You can download these libraries from &lt;a href="https://pypi.python.org/pypi"&gt;PyPi&lt;/a&gt;, or use the binary Windows installers on Github. Or you can look at the source on Github (&lt;a href="https://github.com/bastibe/PySoundFile"&gt;PySoundFile&lt;/a&gt;, &lt;a href="https://github.com/bastibe/PySoundCard"&gt;PySoundCard&lt;/a&gt;), because Open Source is awesome like that! Also, you might find some bugs, because I haven't found them all yet. Then, I would like you to open an issue on Github. Or if have a great idea of how to improve things, please let me know as well.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;UPDATE:&lt;/em&gt; It used to be that you could use indexing on SoundFile objects. For various political reasons, this is no longer the case. I updated the examples above accordingly.&lt;/p&gt;
&lt;section class="footnotes"&gt;
&lt;ol&gt;
&lt;li id="fn-1"&gt;&lt;p&gt;You can use any block size you want. Less than 4 frames per block can be really taxing for your CPU though, so be careful or you start dropping frames.&lt;a class="footnote" href="#fnref-1"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id="fn-2"&gt;&lt;p&gt;More precisely: Everything that &lt;a href="http://www.portaudio.com/"&gt;portaudio&lt;/a&gt; supports.&lt;a class="footnote" href="#fnref-2"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id="fn-3"&gt;&lt;p&gt;More precisely: Everything that &lt;a href="http://www.mega-nerd.com/libsndfile/"&gt;libsndfile&lt;/a&gt; supports.&lt;a class="footnote" href="#fnref-3"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</description><author>bastibe.de</author><pubDate>Wed, 27 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://bastibe.de/2013-11-27-audio-in-python.html</guid></item><item><title>Kirill Zubovsky: Founder of Scoutzie</title><link>https://solomon.io/kirill-zubovsky-founder-of-scoutzie/</link><description>Kirill Zubovsky is the founder of Scoutzie, an online marketplace that connects designers and clients.</description><author>Sam Solomon</author><pubDate>Wed, 27 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/kirill-zubovsky-founder-of-scoutzie/</guid></item><item><title>My Dimension in Rift</title><link>https://benovermyer.com/blog/2013/11/my-dimension-in-rift/</link><description>&lt;p&gt;I started playing Rift again, after trying out Everquest 2 and Guild Wars 2 also. Until Everquest Next Landmark comes out, Rift may be my fantasy MMO of choice. We'll see.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Wed, 27 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/11/my-dimension-in-rift/</guid></item><item><title>Book Two: Spirits</title><link>https://zacs.site/blog/book-two-spirits.html</link><description>&lt;p&gt;Back in May I wrote &lt;a href="https://zacs.site/blog/nickelodeons-experiment.html"&gt;&lt;em&gt;Nickelodeon&amp;#8217;s Experiment&lt;/em&gt;&lt;/a&gt; where I talked about the network&amp;#8217;s hit animated series &lt;em&gt;Avatar: The Last Airbender&lt;/em&gt; and its sequel, &lt;em&gt;Avatar: The Legend of Korra&lt;/em&gt;. Last week the latter&amp;#8217;s show finished its second season with the final episode of &amp;#8220;Book Two: Spirits&amp;#8221;. In preparation for the third, I thought I would post a mid-series update. As with my last article on this topic, spoiler alert, I will give away big parts of the story in this piece; if you haven&amp;#8217;t seen the excellence that is Nickelodeon&amp;#8217;s Avatar franchise, read the next two paragraphs and then go watch it before continuing on.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/book-two-spirits.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 26 Nov 2013 21:51:48 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/book-two-spirits.html</guid></item><item><title>Auto-generating JSON serialization code in Objective C</title><link>https://etodd.io/2013/11/26/auto-generating-json-serialization-code-in-objective-c/</link><description>&lt;p&gt;I wrote this article for the &lt;a href="http://www.sidebolt.com/auto-generating-json-serialization-code-in-objective-c/"&gt;Sidebolt company blog&lt;/a&gt;. Reposting it here for your reading pleasure!&lt;/p&gt;
&lt;p&gt;Our latest game &lt;a href="http://skywardslots.com"&gt;Skyward Slots&lt;/a&gt; makes extensive use of JSON. We send Gigabytes of it flying back and forth haphazardly between client and server over a WebSocket connection. At first, we wrote code by hand to pack and unpack each message. Later on we decided that life is too short for that.&lt;/p&gt;
&lt;p&gt;In the beginning, we just dove into the JSON right where we needed it.&lt;/p&gt;</description><author>Evan Todd</author><pubDate>Tue, 26 Nov 2013 13:10:01 GMT</pubDate><guid isPermaLink="true">https://etodd.io/2013/11/26/auto-generating-json-serialization-code-in-objective-c/</guid></item><item><title>Simulating UIScrollView in Cocos2D</title><link>https://etodd.io/2013/11/26/simulating-uiscrollview-in-cocos2d/</link><description>&lt;p&gt;I wrote this article for the &lt;a href="http://www.sidebolt.com/simulating-uiscrollview-in-cocos2d/"&gt;Sidebolt company blog&lt;/a&gt;. Reposting it here for your reading pleasure!&lt;/p&gt;
&lt;p&gt;We publish our games on both Mac and iOS. Since UIKit is not available on Mac, we have to build all of our UI by hand in Cocos2D. One of the hardest parts to get right was emulating the UIScrollView bouncy scroll formula. Here it is in action:&lt;/p&gt;
&lt;div class="video"&gt;&lt;/div&gt;
&lt;p&gt;There are tons of implementations available in nearly every language and framework, but few of them nail all the important properties of the UIKit scroll:&lt;/p&gt;</description><author>Evan Todd</author><pubDate>Tue, 26 Nov 2013 13:07:40 GMT</pubDate><guid isPermaLink="true">https://etodd.io/2013/11/26/simulating-uiscrollview-in-cocos2d/</guid></item><item><title>GitHub: Convert an issue to a pull request</title><link>https://cmetcalfe.ca/blog/github-convert-issue-to-pull-request.html</link><description>&lt;p&gt;&lt;a href="http://github.com"&gt;GitHub&lt;/a&gt; currently doesn't provide a way to convert an issue to a pull request in their interface.
However, the capability exists in their &lt;a href="http://developer.github.com/v3/pulls/#alternative-input"&gt;Pull Request API&lt;/a&gt;.&lt;/p&gt;
&lt;div class="admonition update"&gt;
&lt;p class="admonition-title"&gt;Update&lt;/p&gt;
&lt;p&gt;I've built a self-hostable webapp called &lt;a href="https://github.com/pR0Ps/gh-i2p"&gt;gh-i2p&lt;/a&gt; that makes this process easier.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;To call the API using a simple &lt;code&gt;curl&lt;/code&gt; command, run the command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;
&lt;span class="normal"&gt;2&lt;/span&gt;
&lt;span class="normal"&gt;3&lt;/span&gt;
&lt;span class="normal"&gt;4&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;curl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;[github username]&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;--request&lt;span class="w"&gt; &lt;/span&gt;POST&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;--data&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'{&amp;quot;issue&amp;quot;: &amp;quot;[issue num]&amp;quot;, &amp;quot;head&amp;quot;: &amp;quot;[branch to merge from]&amp;quot;, &amp;quot;base&amp;quot;: &amp;quot;[branch to merge into]&amp;quot;}'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;https://api.github.com/repos/&lt;span class="o"&gt;[&lt;/span&gt;user&lt;span class="o"&gt;]&lt;/span&gt;/&lt;span class="o"&gt;[&lt;/span&gt;repo&lt;span class="o"&gt;]&lt;/span&gt;/pulls
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For example, to make &lt;code&gt;user1&lt;/code&gt; change issue 13 into a pull request to merge branch &lt;code&gt;test_branch&lt;/code&gt; into
&lt;code&gt;master&lt;/code&gt; in the &lt;code&gt;testing_repo&lt;/code&gt; repository belonging to &lt;code&gt;user2&lt;/code&gt;, the command would be:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;
&lt;span class="normal"&gt;2&lt;/span&gt;
&lt;span class="normal"&gt;3&lt;/span&gt;
&lt;span class="normal"&gt;4&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;curl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'user1'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;--request&lt;span class="w"&gt; &lt;/span&gt;POST&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;--data&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'{&amp;quot;issue&amp;quot;: &amp;quot;13&amp;quot;, &amp;quot;head&amp;quot;: &amp;quot;test_branch&amp;quot;, &amp;quot;base&amp;quot;: &amp;quot;master&amp;quot;}'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;https://api.github.com/repos/user2/testing_repo/pulls
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To specify a fork of a repository to merge from, put the username followed by a semicolon in front
of the branch name like so: &lt;code&gt;"username:branch_name"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;After running the command, you will be prompted for your GitHub password. Enter it and curl should
output the JSON response from the API. Make sure to check this response for errors!&lt;/p&gt;</description><author>Carey Metcalfe</author><pubDate>Tue, 26 Nov 2013 08:46:00 GMT</pubDate><guid isPermaLink="true">https://cmetcalfe.ca/blog/github-convert-issue-to-pull-request.html</guid></item><item><title>Rover with Raspberry Pi</title><link>https://peanball.net/projects/rover-with-raspberry-pi/</link><description/><author>peanball.net</author><pubDate>Tue, 26 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://peanball.net/projects/rover-with-raspberry-pi/</guid></item><item><title>Using the Motor Controller</title><link>https://peanball.net/2013/11/pwm-and-motor-controller/</link><description>&lt;p&gt;The Raspberry Pi has only a single PWM output. The Dagu Rover 5 chassis has 4 motors and 4 optical encoders that need reading as well. So my approach was to get a PWM servo/logic controller that could control the Dagu Motor Controller and additionally some servos for the camera pan/tilt.&lt;/p&gt;</description><author>peanball.net</author><pubDate>Tue, 26 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://peanball.net/2013/11/pwm-and-motor-controller/</guid></item><item><title>New Web Site Skin</title><link>https://peanball.net/2013/11/jekyll-and-the-new-skin/</link><description>&lt;p&gt;I&amp;rsquo;ve updated the skin on the web site for something better looking.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s based on the &lt;a href="http://carlosbecker.com/posts/up-a-jekyll-theme/" rel="noreferrer" target="_blank"&gt;UP&lt;/a&gt; skin.&lt;/p&gt;</description><author>peanball.net</author><pubDate>Mon, 25 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://peanball.net/2013/11/jekyll-and-the-new-skin/</guid></item><item><title>GitLab 6.3 with Apache and Passenger. On an ARM</title><link>https://kyrofa.com/posts/gitlab-6-3-with-apache-and-passenger-on-an-arm/</link><description>As I&amp;rsquo;ve mentioned in previous posts, I run all my websites on a MiraBox&amp;ndash; my nifty, low-power ARM server. As awesome as it is having a low-power server, it does make things more difficult. I&amp;rsquo;m a Ruby on Rails developer, and I run three websites on this thing, along with a gitolite installation so I can host my own code. However, I recently began a few projects collaborating with other people, and as the projects grow, gitolite is not the collaboration platform of success.</description><author>kyrofa's blog</author><pubDate>Mon, 25 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://kyrofa.com/posts/gitlab-6-3-with-apache-and-passenger-on-an-arm/</guid></item><item><title>Visualizing a security disaster, part I</title><link>https://bastian.rieck.me/blog/2013/visualizing_a_security_disaster_part_i/</link><description>&lt;p&gt;The recent security blunder by Adobe (definitely an &lt;em&gt;epic&lt;/em&gt; on the fail scale) should have reached
everyone by now. In case the consequences are &lt;em&gt;still&lt;/em&gt; not clear, I decided to visualize parts of the
leaked database dump. More precisely, I wanted to get a sense of the password hints used by people
in order to see if some trends emerged. I started out by simply counting the frequencies of words
used in the password hints–not removing anything stop words, just a simple frequency analysis.
Here&amp;rsquo;s the (very simple) Python script:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ch"&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;collections&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;word_frequencies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;collections&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s2"&gt;"cred"&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="n"&gt;line&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="n"&gt;line&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="n"&gt;fields&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'-\|-'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;fields&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;fields&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;word&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;fields&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        &lt;span class="n"&gt;word_frequencies&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;pair&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;word_frequencies&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;most_common&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="n"&gt;pair&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\t&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pair&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Afterwards, I used &lt;a href="http://www.wordle.net"&gt;wordle&lt;/a&gt; to generate a word cloud of the password hints.
This is the result (click the image for a larger version):&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://bastian.rieck.me/images/adobe_most_frequent_words.png"&gt;&lt;img height=" alt=" src="https://bastian.rieck.me/images/adobe_most_frequent_words.png" width="400" /&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Not surprisingly, people seem to use &lt;em&gt;names&lt;/em&gt; very often when generating passwords. This is why
&lt;em&gt;spouses&lt;/em&gt; are also mentioned very often, along with pets. Interestingly, &lt;em&gt;dog&lt;/em&gt; was mentioned more
often than &lt;em&gt;cat&lt;/em&gt;. Some lone number either refer to a password scheme, i.e. combining passwords 1 and
2 to form a longer one, or to the actual password–I did not check this for the same reason I
am not releasing any data other than the word cloud. Those poor users already have enough problems
as it is, they do not need one more idiot (yours truly) trying to guess stuff about them.&lt;/p&gt;
&lt;p&gt;There are some appalling things, though: First, note how often the word &lt;em&gt;usual&lt;/em&gt; appears. This is not
a good idea, people! If you use the same &amp;ldquo;usual&amp;rdquo; password for multiple services, all it takes is one
weak link and attackers will be able to compromise large parts of your digital life, and probably at
least some parts of your &lt;em&gt;real&lt;/em&gt; life, as well. Furthermore, there are obviously still many people
who believe that birthdays or social security numbers are good passwords. In short, they don&amp;rsquo;t. In
fact, professional attackers will check those low-hanging fruits first. Checking names for a hubby,
a cat, a dog, or the date of a birthday takes tremendously less time than checking all possible
combination in a, say, 52-character alphabet.&lt;/p&gt;
&lt;p&gt;The security community thus obviously still has some work to do here. First, one should start with
explaining people how to choose secure passwords. Second, incompetence of this scale needs to be
punished. To clarify: The fact that Adobe&amp;rsquo;s data got copied does not bother me as much as their
stupidity in storing it! I again refer you to &lt;a href="http://arstechnica.com/security/2013/11/how-an-epic-blunder-by-adobe-could-strengthen-hand-of-password-crackers"&gt;this very enlightening
article&lt;/a&gt;
about the errors in storing passwords (and password hints) the way Adobe did. This is inexcusable
for a company this large.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 24 Nov 2013 21:11:50 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/visualizing_a_security_disaster_part_i/</guid></item><item><title>Systematic Casting Call</title><link>https://zacs.site/blog/systematic-casting-call.html</link><description>&lt;p&gt;Yesterday morning Brett Terpstra &lt;a href="http://brettterpstra.com/2013/11/22/casting-call-systematic-audition/"&gt;posted an article to his blog&lt;/a&gt; calling for open auditions to guest on his podcast Systematic. Like many, many others I&amp;#8217;m sure, I made a submission. I briefly introduced myself then, in typical Systematic fashion, went on to my top three picks for the &amp;#8220;show&amp;#8221;. Looking to increase my chances of getting the spot, I decided to make an extra effort by posting an article here in case Brett decides to look for further information on my website.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/systematic-casting-call.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 23 Nov 2013 11:36:58 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/systematic-casting-call.html</guid></item><item><title>How to Sell a Blog for $36,200</title><link>http://amandatinney.com/how-to-sell-a-blog-for-36200/</link><description>&lt;p&gt;An interesting story made all the more absorbing by the model Amanda employed in stark contrast to the one nearly all writers in the circles I frequent employ. Whereas we hold the individual&amp;#8217;s reputation on high&amp;#160;&amp;#8212;&amp;#160;&lt;a href="https://zacs.site/blog/a-year-of-firsts.html"&gt;I read people, not websites&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;she takes the opposite approach in impersonally finding, occupying, and ultimately cashing out on an existing niche rather than create her own as I and many others are want to do. A thought-provoking approach, to say the least, and inarguably effective: I can&amp;#8217;t argue with her results.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://amandatinney.com/how-to-sell-a-blog-for-36200/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 23 Nov 2013 09:38:37 GMT</pubDate><guid isPermaLink="true">http://amandatinney.com/how-to-sell-a-blog-for-36200/</guid></item><item><title>Hack things, acquire clothing.</title><link>https://tomforb.es/blog/hack-things-acquire-clothing/</link><description>I discovered an XSS flaw in a website a month ago and reported it to the owners. As a thank you they sent me a hat, a rather large american sized t-shirt and a pair of “DeFeet” socks (guaranteed to stay cooler and drier than any other brand). I didn’t expect them to ship something like that overseas...</description><author>Tom Forbes</author><pubDate>Fri, 22 Nov 2013 18:59:42 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/hack-things-acquire-clothing/</guid></item><item><title>Man of Steel</title><link>https://olshansky.info/movie/man_of_steel/</link><description>Olshansky's review of Man of Steel</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 22 Nov 2013 16:21:16 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/man_of_steel/</guid></item><item><title>It was a Good Week</title><link>https://duncanlock.net/blog/2013/11/22/it-was-a-good-week/</link><description>&lt;figure class="image-block"&gt;&lt;img alt="IMG 20131119 095456 small" src="https://duncanlock.net/images/posts/it-was-a-good-week/IMG_20131119_095456-small.jpg" /&gt;
&lt;figcaption&gt;Figure 1. Taken from my Wife&amp;#8217;s office window, around 10am.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The weather was great this week - crisp and autumnal, with beautiful sunshine all week. It snowed a little on the local mountains and &lt;a href="http://cypressmountain.com/"&gt;Cypress Mountain&lt;/a&gt; has opened for (limited) Skiing already, using the lower temperatures to make lots of extra snow. Whistler also opened this week, along with&amp;nbsp;Grouse.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="https://en.wikipedia.org/wiki/Golden_hour_(photography)"&gt;&lt;img alt="IMG 20131119 161127 small" src="https://duncanlock.net/images/posts/it-was-a-good-week/IMG_20131119_161127-small.jpg" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 2. Taken from my Wife&amp;#8217;s office window in the afternoon, during the Golden Hour, which is now around 4pm.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;In other, even better news, I&amp;#8217;m starting a fantastic new job with &lt;a href="http://www.phemi.com/about-us/"&gt;&lt;span class="caps"&gt;PHEMI&lt;/span&gt; Health Systems&lt;/a&gt; on Monday - allowing me to afford to actually go skiing. I&amp;#8217;ll be working as a front-end web developer, helping to build their healthcare information system, directly helping to improve clinical productivity, patient outcomes and medical research. Very excited to be using my skills for something worthwhile &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; interesting - while working with an amazing group of very smart&amp;nbsp;people.&lt;/p&gt;
&lt;p&gt;I am a very, very luck guy - and I have a lot to be thankful&amp;nbsp;for.&lt;/p&gt;</description><author>duncan­lock­.net</author><pubDate>Fri, 22 Nov 2013 12:57:06 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/11/22/it-was-a-good-week/</guid></item><item><title>A Year of Firsts</title><link>https://zacs.site/blog/a-year-of-firsts.html</link><description>&lt;p&gt;This year marked the first time I have taken any interest in reading long-form hardware and software reviews of any kind. Previously, as I described in &lt;a href="https://zacs.site/blog/diary-of-a-convert.html"&gt;&lt;em&gt;Diary of a Convert&lt;/em&gt;&lt;/a&gt;, I rarely made it past the first few pages; this time around, however, I not only plowed through John Siracusa&amp;#8217;s twenty-four page epic, but many others&amp;#8217; as well. I learned a great deal about Apple&amp;#8217;s latest hardware and software offerings through this process, something I look to repeat from here on out. In preparation for next year, then, I paid great attention to reviewers and their work so that rather than shopping around for yet another iOS 8 review next fall, I can instead read the thoughts of a select few writers and in doing so enable myself to devote much more time and energy to my own work, which trends would indicate will increase once more after Tim Cook closes his keynote address.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/a-year-of-firsts.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 21 Nov 2013 15:28:11 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/a-year-of-firsts.html</guid></item><item><title>Building a Rover</title><link>https://peanball.net/2013/11/building-a-rover/</link><description>&lt;p&gt;Recently I&amp;rsquo;ve started building a remote-controllable rover. The main purpose of this is the exercise of controlling an embedded system and make actual things move with code.&lt;/p&gt;</description><author>peanball.net</author><pubDate>Thu, 21 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://peanball.net/2013/11/building-a-rover/</guid></item><item><title>Hoards Of Novices</title><link>https://98.codes/hoards-of-novices/</link><description>&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Uncle Bob Martin:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Is the software industry trying to write the script for Hamlet by hiring a million monkeys to bang on keyboards? Perhaps we should rethink that strategy and hire one bard instead. Perhaps, instead of hoards of novices, we need a small team of professionals.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://blog.8thlight.com/uncle-bob/2013/11/19/HoardsOfNovices.html?ref=98.codes"&gt;http://blog.8thlight.&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><author>Text(Greg);</author><pubDate>Wed, 20 Nov 2013 15:36:47 GMT</pubDate><guid isPermaLink="true">https://98.codes/hoards-of-novices/</guid></item><item><title>Documentation for Puppet-Gluster</title><link>https://purpleidea.com/blog/2013/11/20/documentation-for-puppet-gluster/</link><description>&lt;p&gt;Ironically, one of the reasons that I started writing Puppet code, was so that I could spend more time designing and building, and less time writing documentation. I suppose I&amp;rsquo;m a victim of my success, because &lt;a href="https://github.com/purpleidea/puppet-gluster/" title="puppet-gluster"&gt;Puppet-Gluster&lt;/a&gt; has grown large enough to warrant its own documentation.&lt;/p&gt;
&lt;p&gt;So I gave in, and put together some documentation.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/purpleidea/puppet-gluster/blob/master/DOCUMENTATION.md"&gt;It&amp;rsquo;s available as markdown&lt;/a&gt;, and, &lt;a href="https://github.com/purpleidea/puppet-gluster/raw/master/puppet-gluster-documentation.pdf"&gt;also as a pdf&lt;/a&gt;. As before, there is an &lt;a href="https://github.com/purpleidea/puppet-gluster/tree/master/examples"&gt;examples/ directory&lt;/a&gt; which you might want to use as additional reference.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Wed, 20 Nov 2013 08:36:19 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/11/20/documentation-for-puppet-gluster/</guid></item><item><title>I Will Do Such Things by William Shakespeare</title><link>https://ho.dges.online/words/commonplace/i-will-do-such-things-by-william-shakespeare/</link><description>&lt;blockquote&gt;
&lt;p&gt;“I will do such things – What they are yet, I know not; but they shall be The terrors of the earth!”_&lt;br /&gt;
King Lear, Act 2, Scene 4&lt;/p&gt;
&lt;/blockquote&gt;</description><author>ho.dges.online</author><pubDate>Wed, 20 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/i-will-do-such-things-by-william-shakespeare/</guid></item><item><title>FTL: A Blend of Narrative and Gameplay</title><link>https://xavd.id/blog/post/ftl-a-blend-of-narrative/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/ftl-a-blend-of-narrative/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Wed, 20 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/ftl-a-blend-of-narrative/</guid></item><item><title>Retrospectively Thankful</title><link>https://zacs.site/blog/retrospectively-thankful.html</link><description>&lt;p&gt;I think about my English classes almost every day when I sit down to write, and even some days when I don&amp;#8217;t. I think about how much I hated them, how I dreaded each pointless class and similarly meaningless assignment, and then I think about the eternal debt of gratitude I owe those three teachers for seeing me through.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/retrospectively-thankful.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 19 Nov 2013 21:44:56 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/retrospectively-thankful.html</guid></item><item><title>New Geek Badge: Soldering</title><link>https://peterlyons.com/problog/2013/11/new-geek-badge:-soldering/</link><description>&lt;p&gt;So after a few months of Chinese holiday delays, my &lt;a href="https://www.massdrop.com/buy/ergodox"&gt;ErgoDox&lt;/a&gt; DIY keyboard kit has finally arrived. There are amazing videos of how to assemble the thing on youtube, and thankfully my roommate was an electrical engineering student at CU and lent me his soldering station. I've started the process of soldering extremely tiny surface mounted diodes to the printed circuit boards. All together the project will require over 300 solder joints by my arithmetic. Pretty ambitious for a first project given my meatspace skills are severely deficient. The SMDs are so tiny that I need a magnifying glass to check they are facing the right direction. The project will for sure be sloppy, but I'm hoping it will indeed function once done. We'll see. I put about 18 SMDs on tonight and by the third row of 6 I was markedly improved from the first few. But there is a real skill to this soldering stuff.&lt;/p&gt;
&lt;p&gt;Anyway, when I get it done, assuming it functions at all, it will be pretty kick-ass and by far the geekiest thing I have ever done. Tomorrow night I'll be taking it with me to the Solid State Depot hacker space open house to work on it some more and maybe get some pro tips.&lt;/p&gt;</description><author>Pete's Points</author><pubDate>Tue, 19 Nov 2013 08:08:35 GMT</pubDate><guid isPermaLink="true">https://peterlyons.com/problog/2013/11/new-geek-badge:-soldering/</guid></item><item><title>How to create thumbnails for PDFs with ImageMagick on Linux</title><link>https://duncanlock.net/blog/2013/11/18/how-to-create-thumbnails-for-pdfs-with-imagemagick-on-linux/</link><description>&lt;p&gt;To create image thumbnails from a &lt;span class="caps"&gt;PDF&lt;/span&gt; document, run this in a terminal&amp;nbsp;window:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;convert &lt;span class="nt"&gt;-thumbnail&lt;/span&gt; x300 &lt;span class="nt"&gt;-background&lt;/span&gt; white &lt;span class="nt"&gt;-alpha&lt;/span&gt; remove input_file.pdf[0] output_thumbnail.png&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The parameters to &lt;a href="http://www.imagemagick.org/script/command-line-options.php"&gt;convert&lt;/a&gt; do the following&amp;nbsp;things:&lt;/p&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 25%;" /&gt;&lt;col style="width: 75%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Parameter&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Effect&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;&lt;code&gt;-thumbnail&lt;/code&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Similar to -resize, but optimized for speed and strips metadata.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;&lt;code&gt;x300&lt;/code&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Make the thumbnail 300px tall, and whatever width maintains the aspect ratio.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;&lt;code&gt;-background white&lt;/code&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Sets the thumbnail background to white.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;&lt;code&gt;-alpha remove&lt;/code&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Removes the alpha channel from the thumbnail output.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;&lt;code&gt;input_file.pdf&lt;/code&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;The &lt;span class="caps"&gt;PDF&lt;/span&gt; file to use as input.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;&lt;code&gt;[0]&lt;/code&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;The page number of the input file to use for the thumbnail.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;&lt;code&gt;output_thumbnail.png&lt;/code&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;The output thumbnail file to create.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;If you want larger thumbnails, just change the &lt;code&gt;x300&lt;/code&gt; parameter to match. If you want to output .jpg&amp;#8217;s (or anything else, like .gif), just change the file extension on the &lt;code&gt;output_thumbnail.png&lt;/code&gt; parameter. If you leave the &lt;code&gt;[0]&lt;/code&gt; off the end of the input filename, you&amp;#8217;ll get a thumbnail for each page, not just the first; setting it to &lt;code&gt;[1]&lt;/code&gt; will get you a thumbnail of the second page, and so&amp;nbsp;on&amp;#8230;&amp;#8203;&lt;/p&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_do_a_whole_folder_at_a_time"&gt;Do a whole folder at a&amp;nbsp;time&lt;/h2&gt;&lt;p&gt;To create thumbnails for a whole folder of &lt;span class="caps"&gt;PDF&lt;/span&gt;&amp;#8217;s, do&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;f &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;.pdf&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;convert &lt;span class="nt"&gt;-thumbnail&lt;/span&gt; x300 &lt;span class="nt"&gt;-background&lt;/span&gt; white &lt;span class="nt"&gt;-alpha&lt;/span&gt; remove &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;0] &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;&lt;span class="p"&gt;%.pdf&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.png"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will create thumbnails with filenames that match the input &lt;span class="caps"&gt;PDF&lt;/span&gt;&amp;#8217;s, except with an extra &lt;code&gt;.pdf&lt;/code&gt; extension.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_requirements"&gt;Requirements&lt;/h2&gt;&lt;p&gt;This requires ImageMagick and Ghostscript, which you can install like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;imagemagick ghostscript&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This technique should also work on a Mac, provided you have these both&amp;nbsp;installed.&lt;/p&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Tue, 19 Nov 2013 06:05:38 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/11/18/how-to-create-thumbnails-for-pdfs-with-imagemagick-on-linux/</guid></item><item><title>MongoDB and REST API go for a picnic (video and slides)</title><link>https://nicolaiarocci.com/mongodb-rest-api-go-picnic-video-slides/</link><description>&lt;p&gt;I had the opportunity to give my &lt;a href="https://speakerdeck.com/nicola/restful-web-api-and-mongodb-go-for-a-pic-nic"&gt;RESTful WeB APIs and MongoDB Go For A Picnic&lt;/a&gt; talk at both &lt;a href="http://www.mongotorino.org/"&gt;MongoTorino&lt;/a&gt; and &lt;a href="http://2013.nosqlday.it/"&gt;NoSQL Day&lt;/a&gt;. The folks at PUG Friuli where so nice to record all the NoSQL Day sessions, so here you have it: the full length &lt;a href="http://vimeo.com/79662146"&gt;video of yours truly speaking&lt;/a&gt; to a fully packed room crowded with 120 very attentive attendees.&lt;/p&gt;
&lt;p&gt;Unfortunately audio is horrible and while all MongoTorino talks were in english, NoSQL Day was an italian-only event. The slide deck is in english however, and is available on both &lt;a href="https://speakerdeck.com/nicola/restful-web-api-and-mongodb-go-for-a-pic-nic"&gt;SpeakerDeck&lt;/a&gt; and &lt;a href="http://www.slideshare.net/nicolaiarocci/rest-web-api-with-mongodb"&gt;SlideShare&lt;/a&gt;.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 19 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/mongodb-rest-api-go-picnic-video-slides/</guid></item><item><title>Cute MailChimp Subscriber Count Buttons</title><link>https://grh.am/2013/cute-mailchimp-subscriber-count-buttons/</link><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;This post is rather outdated now, and so the details contained within are no longer valid. Read with caution.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I recently came across the rather snazzy looking subscriber count button on the &lt;a href="http://www.smashingmagazine.com/the-smashing-newsletter/"&gt;Smashing Magazine&lt;/a&gt; website. A quick Google revealed that these are no longer available after &lt;a href="https://longreply.com/r/84be6ebd"&gt;MailChimp redesigned their service&lt;/a&gt;. Boo!&lt;/p&gt;
&lt;p&gt;An example of the Smashing Magazine counter:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://grh.am/assets/images/smashingmag-count.png" /&gt;&lt;/p&gt;
&lt;p&gt;So, a quick look through the coding on this Smashing Magazine page revealed the following:&lt;/p&gt;</description><author>Graham Stevens – Grh.am</author><pubDate>Tue, 19 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://grh.am/2013/cute-mailchimp-subscriber-count-buttons/</guid></item><item><title>Tumblr as a Subdirectory (On Apache)</title><link>https://grh.am/2013/tumblr-as-a-subdirectory-on-apache/</link><description>&lt;p&gt;Not on nginx, but still want your Tumblr blog in a subdirectory? Henrik Nyh has &lt;a href="http://thepugautomatic.com/octopress/2007/06/tumblr-in-a-subdirectory/"&gt;got your back&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Have not personally used this, being a fan of nginx, but should at least be a good starting point to get you on your way.&lt;/p&gt;</description><author>Graham Stevens – Grh.am</author><pubDate>Tue, 19 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://grh.am/2013/tumblr-as-a-subdirectory-on-apache/</guid></item><item><title>Books I read in 2013</title><link>https://nindalf.com/posts/books-in-2013/</link><description>A list of books read in 2013, including fantasy, historical fiction, and science fiction.</description><author>Krishna's blog</author><pubDate>Tue, 19 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nindalf.com/posts/books-in-2013/</guid></item><item><title>Technology Adoption Curves vs. Birth Year and Life Expectancy</title><link>https://www.danstroot.com/posts/2014-01-03-adoption-curves-vs-life-expectancy</link><description>&lt;img alt="post image" src="https://danstroot.imgix.net/assets/blog/img/adoption_curve.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Asymco has done a fascinating piece of research mapping technology adoption curves, technology refresh rates, and human lifespan, to predict technology lifetime ownership. "...knowing how what innovations become universal and the speed at which these technologies are replaced can give us an idea of what individuals might experience in their lifetimes."&lt;br /&gt;&lt;br /&gt;This post &lt;a href="https://www.danstroot.com/posts/2014-01-03-adoption-curves-vs-life-expectancy"&gt;Technology Adoption Curves vs. Birth Year and Life Expectancy&lt;/a&gt; first appeared on &lt;a href="https://www.danstroot.com"&gt;Dan Stroot's Blog&lt;/a&gt;</description><author>Dan Stroot</author><pubDate>Tue, 19 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.danstroot.com/posts/2014-01-03-adoption-curves-vs-life-expectancy</guid></item><item><title>The power of Big Data and the failures of online advertising</title><link>https://stop.zona-m.net/2013/11/the-power-of-big-data-and-the-failures-of-online-advertising/</link><description>Data is the new oil. Big data is poised to transform society. Soon everybody from individuals to government will be measuring and optimizing everything possible. In the meantime, though, lots of things may go wrong. There is an article out there on this very topic. It says that &amp;ldquo;nothing underscores the consequences of data analysis gone awry more than the story of Robert McNamara&amp;rdquo;. Maybe. As far as I&amp;rsquo;m concerned instead, nothing screams &amp;ldquo;data analysis gone awry&amp;rdquo; like the banner I found in that article and the point where it was placed:</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Tue, 19 Nov 2013 00:27:57 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/11/the-power-of-big-data-and-the-failures-of-online-advertising/</guid></item><item><title>The best Postgres feature you're not using – CTEs aka WITH clauses</title><link>/2013/11/18/best-postgres-feature-youre-not-using/</link><description>&lt;p&gt;SQL by default isn&amp;rsquo;t typically friendly to dive into, and especially so if you&amp;rsquo;re reading someone else&amp;rsquo;s already created queries. For some reason most people throw out principles we follow in other languages &lt;a href="http://www.craigkerstiens.com/2013/07/29/documenting-your-postgres-database/"&gt;such as commenting&lt;/a&gt; and composability just for SQL. I was recently reminded of a key feature in Postgres that most don&amp;rsquo;t use by &lt;a href="http://www.twitter.com/timonk"&gt;@timonk&lt;/a&gt; highlighting it in his AWS Re:Invent Redshift talk. The simple feature actually makes SQL both readable and composable, and even for my own queries capable of coming back to them months later and understanding them, where previously they would not be.&lt;/p&gt;
&lt;p&gt;The feature itself is known as CTEs or common table expressions, you may also here it referred to as &lt;code&gt;WITH&lt;/code&gt; clauses. The general idea is that it allows you to create something somewhat equivilant to a view that only exists during that transaction. You can create multiple of these which then allow for clear building blocks and make it simple to follow what you&amp;rsquo;re doing.&lt;/p&gt;
&lt;p&gt;Lets take a look at a nice simple one:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;WITH users_tasks AS (
SELECT
users.email,
array_agg(tasks.name) as task_list,
projects.title
FROM
users,
tasks,
project
WHERE
users.id = tasks.user_id
projects.title = tasks.project_id
GROUP BY
users.email,
projects.title
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using this I could now just append some basic other query on to the end that references this CTE &lt;code&gt;users_tasks&lt;/code&gt;. Something akin to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT *
FROM users_tasks;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But where it becomes more interesting is chaining these together. So while I have all tasks assigned to each user here, perhaps I want to then find which users are responsible for more than 50% of the tasks on a given project, thus being the bottleneck. To oversimplify this we could do it a couple of ways, total up the tasks for each project, and then total up the tasks for each user per project:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;total_tasks_per_project AS (
SELECT
project_id,
count(*) as task_count
FROM tasks
GROUP BY project_id
),
tasks_per_project_per_user AS (
SELECT
user_id,
project_id,
count(*) as task_count
FROM tasks
GROUP BY user_id, project_id
),
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then we would want to combine and find the users that are now over that 50%:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;overloaded_users AS (
SELECT tasks_per_project_per_user.user_id,
FROM tasks_per_project_per_user,
total_tasks_per_project
WHERE tasks_per_project_per_user.task_count &amp;gt; (total_tasks_per_project / 2)
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now as a final goal I&amp;rsquo;d want to get a comma separated list of tasks of the overloaded users. So we&amp;rsquo;re simply giong to join against that &lt;code&gt;overloaded_users&lt;/code&gt; and our initial list of &lt;code&gt;users_tasks&lt;/code&gt;. Putting it all together it looks somewhat long, but becomes much more readable. And as a bonus I layered in some comments.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--- Created by Craig Kerstiens 11/18/2013
--- Query highlights users that have over 50% of tasks on a given project
--- Gives comma separated list of their tasks and the project
--- Initial query to grab project title and tasks per user
WITH users_tasks AS (
SELECT
users.id as user_id,
users.email,
array_agg(tasks.name) as task_list,
projects.title
FROM
users,
tasks,
project
WHERE
users.id = tasks.user_id
projects.title = tasks.project_id
GROUP BY
users.email,
projects.title
),
--- Calculates the total tasks per each project
total_tasks_per_project AS (
SELECT
project_id,
count(*) as task_count
FROM tasks
GROUP BY project_id
),
--- Calculates the projects per each user
tasks_per_project_per_user AS (
SELECT
user_id,
project_id,
count(*) as task_count
FROM tasks
GROUP BY user_id, project_id
),
--- Gets user ids that have over 50% of tasks assigned
overloaded_users AS (
SELECT tasks_per_project_per_user.user_id,
FROM tasks_per_project_per_user,
total_tasks_per_project
WHERE tasks_per_project_per_user.task_count &amp;gt; (total_tasks_per_project / 2)
)
SELECT
email,
task_list,
title
FROM
users_tasks,
overloaded_users
WHERE
users_tasks.user_id = overloaded_users.user_id
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CTEs won&amp;rsquo;t always be quite as performant as optimizing your SQL to be as concise as possible. In most cases I have seen performance differences smaller than a 2X difference, this tradeoff for readability is a nobrainer as far as I&amp;rsquo;m concerned. And with time the Postgres optimizer should continue to get better about such performance.&lt;/p&gt;
&lt;p&gt;As for the verbosity, yes I could have done this query in probably 10-15 lines of very concise SQL. Yet, most may not be able to understand it quickly if at all. Readability is huge when it comes to SQL to ensure its doing the right thing. SQL will almost always tell you an answer, it just may not be to the question you think you&amp;rsquo;re asking. Ensuring your queries can be reasoned about is critical to ensuring accuracy and CTEs are one great way of accomplishing that.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re looking for a deeper resource on Postgres I recommend the book &lt;a href="https://theartofpostgresql.com/?affiliate=cek"&gt;The Art of PostgreSQL&lt;/a&gt;. It is by a personal friend that has aimed to create the definitive guide to Postgres, from a developer perspective. If you use code CRAIG15 you&amp;rsquo;ll receive 15% off as well.&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Mon, 18 Nov 2013 22:55:56 GMT</pubDate><guid isPermaLink="true">/2013/11/18/best-postgres-feature-youre-not-using/</guid></item><item><title>More on the iPad Pro</title><link>https://zacs.site/blog/more-on-the-ipad-pro.html</link><description>&lt;p&gt;I feel like Gene Munster, where just as he perpetually beats upon his iTV drum so, too, do I &lt;a href="https://zacs.site/blog/the-ipad-pro.html"&gt;all&lt;/a&gt; too &lt;a href="https://zacs.site/blog/clocking-down-the-mini.html"&gt;frequently&lt;/a&gt; return to the iPad Pro. Since Apple&amp;#8217;s iPad event, after receiving my MacBook Pro, and all throughout the ensuing period during which I began to define the different roles this new device and my trusty iPad would fill, this topic and Tim Cook&amp;#8217;s comment to that effect have occupied a great deal of my consciousness. Unfortunately, I could find no written record of Tim Cook referring to such a device despite numerous verbal accounts; however, when questioned before October&amp;#8217;s iPad event as to whether Apple would release an iPad Pro, he responded (with a smile) in saying, &amp;#8220;We already make one: the 11&amp;#8243; MacBook Air.&amp;#8221; I find this statement interesting for a number of reasons.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/more-on-the-ipad-pro.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 18 Nov 2013 10:11:33 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/more-on-the-ipad-pro.html</guid></item><item><title>Rick Knudtson: Co-Founder of Flywheel</title><link>https://solomon.io/rick-knudtson-co-founder-of-flywheel/</link><description>Rick Knudtson is a co-founder of Flywheel, a WordPress hosting and management company built for designers.</description><author>Sam Solomon</author><pubDate>Mon, 18 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/rick-knudtson-co-founder-of-flywheel/</guid></item><item><title>Tumblr as a Subdirectory (On Nginx)</title><link>https://grh.am/2013/tumblr-as-a-subdirectory-on-nginx/</link><description>&lt;p&gt;Tumblr will let you run a blog as a sub-domain (blog.domain.com) rather than using their own URL scheme (username.tumblr.com), allowing your blog to appear much more professional and appear directly linked to your domain/website.&lt;/p&gt;
&lt;p&gt;However, it is argued within the SEO scene that a subdomain is bad practice for maximising your search engine optimisation. This is because subdomains do not always receive the benefits from the root domain they&amp;rsquo;re on. For example, just because tumblr.com is a highly ranked domain, does not mean that this ranking will affect deadblog.tumblr.com or john doe.tumblr.com.&lt;/p&gt;</description><author>Graham Stevens – Grh.am</author><pubDate>Mon, 18 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://grh.am/2013/tumblr-as-a-subdirectory-on-nginx/</guid></item><item><title>Submit Elasticsearch metrics to Graphite</title><link>https://smetj.net/submit-elasticsearch-metrics-to-graphite.html</link><description>&lt;p&gt;If you're running an &lt;a class="reference external" href="http://www.elasticsearch.org"&gt;Elasticsearch&lt;/a&gt; cluster you might want to keep track of
the metrics it produces.  In this article I explain how you can aggregate the
metrics of an Elasticsearch cluster and submit them to Graphite.&lt;/p&gt;
&lt;div class="section" id="prerequisites"&gt;
&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;You need to have following software installed:&lt;/p&gt;
&lt;p&gt;Main software (installable from Pypi …&lt;/p&gt;&lt;/div&gt;</description><author>Jelle Smet</author><pubDate>Sun, 17 Nov 2013 21:36:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/submit-elasticsearch-metrics-to-graphite.html</guid></item><item><title>Fixing fullscreen flash video playback in GNOME 3</title><link>https://bastian.rieck.me/blog/2013/flash_player_gnome3/</link><description>&lt;p&gt;After making the switch to &lt;a href="http://releases.ubuntu.com/saucy"&gt;Ubuntu 13.10 (&lt;em&gt;Saucy Salamander&lt;/em&gt;)&lt;/a&gt;, my
friend&amp;rsquo;s laptop was unable to play flash videos in fullscreen mode with
&lt;a href="http://www.chromium.org"&gt;Chromium&lt;/a&gt;. Taking a closer look at the problem, it seemed as if the window
manager was unable to focus the fullscreen window correctly.  Usually, only the first video would
play in fullscreen mode.&lt;/p&gt;
&lt;p&gt;Scouring the usual places for some answers, we only found the usual &amp;ldquo;helpful&amp;rdquo; suggestions, i.e.
reinstalling the system, replacing the laptop with a better model, sacrificing a goat to the &lt;a href="http://www.canonical.com"&gt;Gods of
Canonical&lt;/a&gt;&amp;hellip;&lt;/p&gt;
&lt;p&gt;Luckily, I remembered similar problems a while back, back in the days of yore, when Metacity was
still the window manager of (then) GNOME 2: Use the excellent &lt;a href="http://www.burtonini.com/blog/computers/devilspie"&gt;Devil&amp;rsquo;s
Pie&lt;/a&gt; to match the flash window and force the
window manager to focus it. This resulted in the following configuration, which should be placed as
&lt;code&gt;fullscreen_flash.ds&lt;/code&gt; in &lt;code&gt;~/.devilspie&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(if
  (is (application_name) &amp;quot;exe&amp;quot;)
    (begin
    (focus)
  )
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While the syntax looks pretty insane, Devil&amp;rsquo;s Pie does an admirable job and forces the window
manager to behave correctly. Note that if you are using &lt;a href="http://www.mozilla.org/firefox"&gt;Mozilla
Firefox&lt;/a&gt;, you should look for &lt;code&gt;plugin-flashcontainer&lt;/code&gt; or something
similar. &lt;code&gt;xwininfo&lt;/code&gt; and related tools are very helpful in this regard.&lt;/p&gt;
&lt;p&gt;To end on a more critical note: While it is certainly nice that Linux gives us the tools to
deal with its deficiencies (see also the &lt;a href="http://xkcd.com/196"&gt;XKCD comic about command line fu&lt;/a&gt;), I
sometimes feel that GNOME has been steadily going downhill for some years now. At work, every Ubuntu
upgrade broke something different in GNOME, finally driving me straight into the arms of KDE (for
now). Configurations have become inconsistent and very complex, while the user interface nowadays
seems extremely constrained. And for a setup with multiple displays, the &amp;ldquo;new&amp;rdquo; desktop environments
(I am looking at you, GNOME 3 and Unity) seem very clunky to me. At home, I long ago ditched GNOME
for the &lt;a href="http://awesome.naquadah.org"&gt;awesome window manager&lt;/a&gt; on my laptop (mostly due to screen
space considerations). My friend is also more or less determined to make the switch (possibly to
&lt;a href="http://xfce.org"&gt;XFCE&lt;/a&gt;). Although she generally likes the look and feel of GNOME 3, her foremost
wish is a stable and consistent system–and at least at the moment, GNOME 3 is neither.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 17 Nov 2013 19:37:30 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/flash_player_gnome3/</guid></item><item><title>Initial Impressions</title><link>https://zacs.site/blog/initial-impressions.html</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/ipad-mini-and-ipad-air-first-impressions.html"&gt;When linking to&lt;/a&gt; Shawn Blanc&amp;#8217;s excellent iPad Mini and Air review I mentioned &lt;a href="https://twitter.com/theloop/statuses/400281801924427776"&gt;Jim and Marco&amp;#8217;s altercation&lt;/a&gt; on Twitter the day before in passing. Brought on when Marco criticized Jim&amp;#8217;s lack of time spent with the Mini preluding an article titled &amp;#8220;review&amp;#8221;, I found the entire exchange humorous and representative of the pair&amp;#8217;s similar personalities. I considered writing this article then at peak relevance, but instead pushed it into Drafts for another time. Four days and two posts later though, the fact that this topic remains at the front of my mind is a testament to the importance of a first impression.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/initial-impressions.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 17 Nov 2013 17:30:05 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/initial-impressions.html</guid></item><item><title>Nootropic selfexperiments</title><link>https://coornail.net/blog/2013/11/17/nootropic-selfexperiments/</link><description>I have always been fascinated by the idea that we can significantly improve our wellbeing by making relatively small changes: exercising, changing our diet, adding some supplements.</description><author>Coornail's Thoughts</author><pubDate>Sun, 17 Nov 2013 10:03:54 GMT</pubDate><guid isPermaLink="true">https://coornail.net/blog/2013/11/17/nootropic-selfexperiments/</guid></item><item><title>Iteration in Puppet</title><link>https://purpleidea.com/blog/2013/11/17/iteration-in-puppet/</link><description>&lt;p&gt;People often ask how to do &lt;a href="https://en.wikipedia.org/wiki/Iteration"&gt;iteration&lt;/a&gt; in &lt;a href="https://en.wikipedia.org/wiki/Puppet_%28software%29"&gt;Puppet&lt;/a&gt;. Most Puppet users have a background in &lt;a href="https://en.wikipedia.org/wiki/Imperative_programming"&gt;imperative programming&lt;/a&gt;, and are already very familiar with &lt;a href="https://en.wikipedia.org/wiki/For_loop"&gt;&lt;em&gt;for&lt;/em&gt;&lt;/a&gt; loops. Puppet is sometimes confusing at first, because it is actually (or technically, contains) a &lt;a href="https://en.wikipedia.org/wiki/Declarative_programming"&gt;declarative&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Domain-specific_language"&gt;domain-specific language&lt;/a&gt;. In general, DSL&amp;rsquo;s aren&amp;rsquo;t always &lt;a href="https://en.wikipedia.org/wiki/Turing_completeness"&gt;Turing complete&lt;/a&gt;, nor do they need to support &lt;a href="https://en.wikipedia.org/wiki/While_loop"&gt;loops&lt;/a&gt;, but this doesn&amp;rsquo;t mean you can&amp;rsquo;t iterate.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://docs.puppetlabs.com/puppet/3/reference/lang_experimental_3_2.html"&gt; Until recently&lt;/a&gt;, Puppet didn&amp;rsquo;t have an explicit looping construct, and it is quite possible to build &lt;a href="https://github.com/purpleidea/puppet-gluster/" title="puppet-gluster"&gt;complex&lt;/a&gt; &lt;a href="https://github.com/purpleidea/puppet-ipa"&gt;modules&lt;/a&gt; without using this new construct. There are even some who believe that the language shouldn&amp;rsquo;t even contain this feature. I&amp;rsquo;ll abstain from that debate for now, but instead, I would like to show you some iteration techniques that you can use to get your desired result.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sun, 17 Nov 2013 06:25:01 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/11/17/iteration-in-puppet/</guid></item><item><title>Napkin tower</title><link>http://dimitarsimeonov.com/2013/11/17/napkin-tower</link><description>&lt;p&gt;I’ve had a few major changes in my life which made me think that there
is no singular self. Me today is a very different person than me 5
years ago. Me now thinks about different things in a different
language than me 5 years ago. Me now have different goals in life than
me 5 years ago. Me now makes much different decisions than me 5 years
ago. Me now has experienced some really bitter moments and lost some
close people. Once I get slapped almost by definition I get a bit less
naive… hopefully.&lt;/p&gt;

&lt;p&gt;I’ve had this thought and concept of multiple selves for a while now,
but just today I thought of a corollary to it. The corollary is that
there is no such thing as “remembering”. There is transfer of
information from the past self to the present self to the future
self. Often that transfer is achieved by storing information in the
brain memory. We have only a limited amount of operating memory that
we use from day to day.  We also have a lot of longer term memory but
is is not super reliable or organized. It is like the past self
communicates by writing important messages on paper napkins and
spreading them around a room, as he exits and lets the current self
enter. Napkins are not very durable and are very light - can be blown
away by the wind from an open window or the vacuum cleaner, or they
can get wet and dissolve.&lt;/p&gt;

&lt;p&gt;Writing down our thoughts on something a little bit more persistent
like a journal, or note taking app or email can capture out thoughts
the way photo camera can capture our smiles and trips. By capturing
our thoughts and our smiles on a durable medium we can share them with
our future self. And also with others! Maybe we can start thinking of
our thoughts as not really belonging to us - just as the photons that
reflect our bodies and enter the camera do not belong to us. We can
capture the photons by wearing black or avoid them by staying in the
dark. The same way we can keep our thoughts to ourselves and forget
them eventually or share them with our future self or other people by
recording them down.&lt;/p&gt;

&lt;p&gt;Sometimes the details of what we were thinking about or working with
are impossible or very hard to remember. For example somebody’s phone
number. We don’t remember everybody phone number. Instead we have a
phone book or a contacts app in out phone. We also have bookmarks bar
for our favorite and useful links and applications to remember our
passwords to various different websites. We might be doing some
detailed calculation in a spreadsheet, and we definitely write the
score down when we play cards. It is just too hard to bother our minds
with too much unnecessary details. Because when we free our minds from
remembering these details we can focus on the higher level concepts. I
think that that I want to call my friend Peter, or that I need to go
to my project wiki page or that I need to login to my bank account
rather than remembering the phone number, the link or the
automatically generated complicated password.&lt;/p&gt;

&lt;p&gt;But we can go beyond using tools to avoid remembering details. When we
start recording our thoughts we can clarify them but also just point
to them and combine them the way we would combine lego blocks. We can
abstract away the specific sentences and start building larger
ideas. We might have few simple thoughts about a given concept but not
necessarily see the connections and relationships between them until
we actually write them on post it notes or notepad.exe or doodle them
in the side field of a notebook. Once we have put our thoughts down
into a something tangible we can then rearrange them in the way we
want, and the way they fit.&lt;/p&gt;</description><author>D13V</author><pubDate>Sun, 17 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://dimitarsimeonov.com/2013/11/17/napkin-tower</guid></item><item><title>Throwback- Holiday Card 2011</title><link>https://blog.yiningkarlli.com/2013/11/throwback-holiday-card-2011.html</link><description>&lt;p&gt;Two years ago, I was asked to create &lt;a href="http://cg.cis.upenn.edu/"&gt;CG@Penn&lt;/a&gt;’s &lt;a href="http://cg.cis.upenn.edu/HappyHolidays2011.htm"&gt;2011 Holiday Card&lt;/a&gt;. Shortly after finishing that particular project, I started writing a breakdown post but for some reason never finished/posted it. While going through old content for the &lt;a href="http://blog.yiningkarlli.com/2013/11/code-and-visuals-version-4.html"&gt;move to Github Pages&lt;/a&gt;, I found some of my old unfinished posts, and I’ve decided to finish up some of them and post them over time as sort of a series of throwback posts.&lt;/p&gt;

&lt;p&gt;This project is particularly interesting because almost every approach I took two years ago to finish this project, I would not bother using today. But its still interesting to look back on!&lt;/p&gt;

&lt;p&gt;Amy and Joe wanted something wintery and nonreligious for the card, since it would be sent to a very wide and diverse audience. They suggested some sort of snowy landscape piece, so I decided to make a snow-covered forest. This particular idea meant I had to figure out three key elements:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Conifer trees&lt;/li&gt;
  &lt;li&gt;Modeling snow ON the trees&lt;/li&gt;
  &lt;li&gt;Rendering snow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since the holiday card had to be just a single still frame and had to be done in just a few days, I knew right away that I could (and would have to!) cheat heavily with compositing, so I was willing to try more unknown elements than I normally would throw into a single project. Also, since the shot I had in mind would be a wide, far shot, I knew that I could get away with less up-close detail for the trees.&lt;/p&gt;

&lt;p&gt;I started by creating a handful of different base conifer tree models in OnyxTree and throwing them directly into Maya/Vray (this was before I had even started working on Takua Render) just to see how they would look. Normally models directly out of OnyxTree need some hand-sculpting and tweaking to add detail for up-close shots, but here I figured if they looked good enough, I could skip those steps. The result looked okay enough to move on:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Nov/basic_trees.jpg"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Nov/basic_trees.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The textures for the bark and leaves were super simple. To make the bark texture’s diffuse layer, I pulled a photograph of bark off of Google, modified it to tile in Photoshop, and adjusted the contrast and levels until it was the color I wanted. The displacement layer was simply the diffuse layer converted to black and white and with contrast and brightness adjusted. Normally this method won’t work well for up close shots, but again, since I knew the shot would be far away, I could get away with some cheating. Here’s a crop from the bark textures:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Nov/bark.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Nov/bark.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The pine needles were also super cheatey. I pulled a photo out of one of my reference libraries, dropped an opacity mask on top, and that was all for the diffuse color. Everything else was hacked in the leaf material’s shader; since the tree would be far away, I could get away with basic transparency instead of true subsurface scattering. The diffuse map with opacity flattened to black looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Nov/pineleaves.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Nov/pineleaves.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the trees roughed in, the next problem to tackle was getting snow onto the trees. Today, I would immediately spin up Houdini to create this effect, but back then, I didn’t have a Houdini license and hadn’t played with Houdini enough to realize how quickly it could be done. Not knowing better back then, I used 3dsmax and a plugin called &lt;a href="http://www.zwischendrin.com/en/detail/261"&gt;Snowflow&lt;/a&gt; (I used the demo version since this project was a one-off). To speed up the process, I used a simplified, decimated version of the tree mesh for Snowflow. Any inaccuracies between the resultant snow layer and the full tree mesh were acceptable, since they would look just like branches and leaves poking through the snow:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Nov/snowflow.jpg"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Nov/snowflow.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I tried a couple of different variations on snow thickness, which looked decent enough to move on with:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Nov/snowtest.jpg"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Nov/snowtest.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step was a fast snow material that would look reasonably okay from a distance, and render quickly. I wasn’t sure if the snow should have a more powdery, almost diffuse look, or if it should have a more refractive, frozen, icy look. I wound up trying both and going with a 50-50 blend of the two:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Nov/snowmaterialtest.png"&gt;&lt;img alt="From left to right: refractive frozen ice, powdery diffuse, 50-50 blend" src="https://blog.yiningkarlli.com/content/images/2013/Nov/snowmaterialtest.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step was to compose a shot, make a very quick, simple lighting setup, and do some test renders. After some iterating, I settled for this render as a base for comp work:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Nov/test4.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Nov/test4.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The base render is very blueish since the lighting setup was a simple, grey-blueish dome light over the whole scene. The shadows are blotchy since I turned Vray’s irradiance cache settings all the way down for faster rendertimes; I decided that I would rather deal with the blotchy shadows in post and have a shot at making the deadline rather than wait for a very long rendertime. I wound up going with the thinner snow at the time since I wanted the trees to be more recognizable as trees, but in retrospect, that choice was probably a mistake.&lt;/p&gt;

&lt;p&gt;The final step was some basic compositing. In After Effects, I applied post-processed DOF using a z-depth layer and Frischluft, color corrected the image, cranked up the exposure, and added vignetting to get the final result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Nov/card.jpg"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Nov/card.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looking back on this project two years later, I don’t think the final result looks really great. The image looks okay for two days of rushed work, but there is enormous room for improvement. If I could go back and change one thing, I would have chosen to use the much heavier snow cover version of the trees for the final composition. Also, today I would approach this project very very differently; instead of ping-ponging between multiple programs for each component, I would favor a almost pure-Houdini pipeline. The trees could be modeled as L-systems in Houdini, perhaps with some base work done in Maya. The snow could absolutely be simmed in Houdini. For rendering and lighting, I would use either my own Takua Render or some other fast physically based renderer (Octane, or perhaps Renderman 18’s iterative pathtracing mode) to iterate extremely quickly without having to compromise on quality.&lt;/p&gt;

&lt;p&gt;So that’s the throwback breakdown of the CG@Penn Holiday 2011 card! I learned a lot from this project, and looking back and comparing how I worked two years ago to how I work today is always a good thing to do.&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Sun, 17 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/11/throwback-holiday-card-2011.html</guid></item><item><title>Code and Visuals Version 4.0</title><link>https://blog.yiningkarlli.com/2013/11/code-and-visuals-version-4.html</link><description>&lt;p&gt;I’d like to introduce the newest version of my computer graphics blog, Code and Visuals! On the surface, everything has been redesigned with a new layer of polish; everywhere, the site is now simpler, cleaner, and the layout is now fully responsive. Under the hood, I’ve moved from Blogger to &lt;a href="http://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;, hosted on &lt;a href="http://pages.github.com/"&gt;Github Pages&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As part of the move to Jekyll, I’ve opted to clean up a lot of old posts as well. This blog started as some combination of a devblog, doodleblog, and photoblog, but quickly evolved into a pure computer graphics blog. In the interest of keeping historical context intact, I’ve ported over most of my older non-computer graphics posts, with minor edits and touchups here and there. A handful of posts I didn’t really like I’ve chosen to leave behind, but they can still be found on the &lt;a href="http://yiningkarlli.blogspot.com"&gt;old Blogger-based version of this blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Atom feed URL for Code and Visuals is still the same as before, so that should transition over smoothly.&lt;/p&gt;

&lt;p&gt;Why the move from Blogger to Jekyll/Github Pages? Here are the main reasons:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Markdown/Github support. Blogger’s posting interface is all kinds of terrible. With Jekyll/Github Pages, writing a new post is super nice: simply write a new post in a Markdown file, push to Github, and done. I love Markdown and I love Github, so its a great combo for me.&lt;/li&gt;
  &lt;li&gt;Significantly faster site. Previous versions of this blog have always been a bit pokey speed-wise, since they relied on dynamic page generators (originally my hand-rolled PHP/MySQL CMS, then Wordpress, and then Blogger). However, Jekyll is a static page generator; the site is converted from Markdown and template code into static HTML/CSS once at generation time, and then simply served as pure HTML/CSS.&lt;/li&gt;
  &lt;li&gt;Easier templating system. Jekyll’s templating system is build on &lt;a href="http://liquidmarkup.org/"&gt;Liquid&lt;/a&gt;, which made building this new theme really fast and easy.&lt;/li&gt;
  &lt;li&gt;Transparency. This entire blog’s source is now &lt;a href="https://github.com/betajippity/betajippity.github.io"&gt;available on Github&lt;/a&gt;, and the theme is separately &lt;a href="https://github.com/betajippity/codeandvisuals-theme"&gt;available here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve been looking to replace Blogger for some time now. Before trying out Jekyll, I was tinkering with &lt;a href="https://ghost.org/"&gt;Ghost&lt;/a&gt;, and even fully built out a working version of Code and Visuals on a self-hosted Ghost instance. In fact, this current theme was originally built for Ghost and then ported to Jekyll after I decided to use Jekyll (both the Ghost and Jekyll versions of this theme are in the Github repo). However, Ghost as a platform is still extremely new and isn’t quite ready for primetime yet; while Ghost’s Markdown support and Node.js underpinnings are nice, Ghost is still missing crucial features like the ability to have an archive page. Plus, at the end of the day, Jekyll is just plain simpler; Ghost is still a CMS, Jekyll is just a collection of text files.&lt;/p&gt;

&lt;p&gt;I intend to stay on a Jekyll/Github Pages based solution for a long time; I am very very happy with this system. Over time, I’ll be moving all of my other couple of non-computer graphics blogs over to Jekyll as well. I’m still not sure if my main website needs to move to Jekyll though, since it already is coded up as a series of static pages and requires a slightly more complex layout on certain pages.&lt;/p&gt;

&lt;p&gt;Over the past few months I haven’t posted much, since over the summer almost all of my Pixar related work was under heavy NDA (and still is and will be for the foreseeable future, with the exception of &lt;a href="http://blog.yiningkarlli.com/2013/07/pixar-optix-lighting-preview-demo.html"&gt;our SIGGRAPH demo&lt;/a&gt;), and a good deal of my work at Cornell’s Program for Computer Graphics is under wraps as well while we work towards paper submissions. However, I have some new personal projects I’ll write up soon, in addition to some older projects that I never posted about.&lt;/p&gt;

&lt;p&gt;With that, welcome to Code and Visuals Version 4.0!&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Sat, 16 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/11/code-and-visuals-version-4.html</guid></item><item><title>2013-11-16/01</title><link>https://ho.dges.online/pictures/2013-11-16-01/</link><description>&lt;p&gt;A picture found literally on my doorstep - this leaf was on my driveway one morning when I opened the front door. The X100&amp;rsquo;s close-focussing capability meant that I could get right in close to it and capture the beads of rain on the leaf.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Sat, 16 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-11-16-01/</guid></item><item><title>2013-11-16/02</title><link>https://ho.dges.online/pictures/2013-11-16-02/</link><description>&lt;p&gt;A close up of the &lt;a href="https://www.atlasobscura.com/places/auld-wives-lifts"&gt;Auld Wives Lifts&lt;/a&gt; on Craigmaddie Muir near Mugdock Park. The boulders sit in a natural ampitheatre and makes it an eerie spot. Nobody is quite sure when the boulders were arranged and the faces carved into the rock. See also &lt;a href="../2013-11-16-03"&gt;2013-11-16-03&lt;/a&gt;.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Sat, 16 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-11-16-02/</guid></item><item><title>2013-11-16/03</title><link>https://ho.dges.online/pictures/2013-11-16-03/</link><description>&lt;p&gt;A wide shot of the &lt;a href="https://www.atlasobscura.com/places/auld-wives-lifts"&gt;Auld Wives Lifts&lt;/a&gt;. See also &lt;a href="../2013-11-16-02"&gt;2013-11-16-02&lt;/a&gt;.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Sat, 16 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-11-16-03/</guid></item><item><title>The Retina iPad Mini's Soft Release</title><link>http://daringfireball.net/linked/2013/11/13/ipad-mini-soft-release</link><description>&lt;p&gt;Recently I have begun exercising more restrain when deciding whether to publish a link post or not, attempting to decrease the lopsided original content to echo piece ratio by posting more of my own work than others&amp;#8217;. I find it somewhat ironic, then, that today&amp;#8217;s first link post goes to John Gruber&amp;#8217;s linked list item commenting on Ed Dale&amp;#8217;s &lt;a href="http://www.eddale.co/general/smart-move-apple"&gt;&lt;em&gt;Smart Move Apple&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://daringfireball.net/linked/2013/11/13/ipad-mini-soft-release"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 15 Nov 2013 17:42:17 GMT</pubDate><guid isPermaLink="true">http://daringfireball.net/linked/2013/11/13/ipad-mini-soft-release</guid></item><item><title>Thoughts Regarding Coin</title><link>https://zacs.site/blog/thoughts-regarding-coin.html</link><description>&lt;p&gt;Yesterday afternoon Benedict Evans &lt;a href="https://twitter.com/BenedictEvans/status/401038000353992704"&gt;had something interesting to say&lt;/a&gt; regarding a new product-service pairing called Coin, questioning why anyone considered it anything more than a toy. Having never heard of the site, I continued scrolling until coming across &lt;a href="https://twitter.com/codyfink/status/401039468821745664"&gt;Cody Fink&amp;#8217;s referral link&lt;/a&gt;, at which point my &amp;#8220;when in doubt wait until more than one person talks about it before taking the bait&amp;#8221; rule kicked in and I opened Coin&amp;#8217;s website. Over the next 1:45 Adam Lisagor serenaded me in a promo video nothing short of beautiful&lt;sup id="fnref1"&gt;&lt;a href="#fn1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt; that brought me&amp;#160;&amp;#8212;&amp;#160;generally very averse to spending any significant amount of money&amp;#160;&amp;#8212;&amp;#160;the closest I have ever come to impulse-buying anything, and especially something in the neighborhood of $50.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/thoughts-regarding-coin.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 15 Nov 2013 12:37:34 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/thoughts-regarding-coin.html</guid></item><item><title>Pythonista Updated for iOS 7</title><link>http://omz-software.com/pythonista/docs-140/ios/new.html</link><description>&lt;p&gt;Shortly after Ole Zorn released Editorial for iPad I adopted a workflow heavily reliant on this and his other&amp;#160;&amp;#8212;&amp;#160;some would say companion&amp;#160;&amp;#8212;&amp;#160;app Pythonista. Employing Editorial for all my writing needs and Pythonista to run a retrofitted version of FirstCrack thus enabling me to post on the go, I read, wrote, and updated my website almost exclusively on my iPad. Although recent months have seen a reversal of that shift in conjunction with my purchase of a new MacBook Pro, certain circumstances still make me thankful for the ability to not only consume but also produce content on such a portable device. Pythonista 1.4 brings a whole host of exciting changes to this already excellent app; perhaps even more exciting, though, is what these changes indicate for the future of Editorial.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://omz-software.com/pythonista/docs-140/ios/new.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 14 Nov 2013 21:17:17 GMT</pubDate><guid isPermaLink="true">http://omz-software.com/pythonista/docs-140/ios/new.html</guid></item><item><title>iPad Mini and iPad Air First Impressions</title><link>http://shawnblanc.net/2013/11/ipad-mini-ipad-air-first-impressions/</link><description>&lt;p&gt;Shawn Blanc posted by far and away the best iPad and iPad Mini first look I have read thus far. I enjoyed &lt;a href="https://twitter.com/theloop/statuses/400281801924427776"&gt;the flame war&lt;/a&gt; over Jim&amp;#8217;s article immensely, &lt;a href="http://www.marco.org/2013/11/13/significantly-hotter"&gt;Marco&amp;#8217;s own &amp;#8220;review&amp;#8221;&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;if it even merits such a designation&amp;#160;&amp;#8212;&amp;#160;had its own humorous high point, but up till now nothing impressed me to the extent that Shawn&amp;#8217;s piece did.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://shawnblanc.net/2013/11/ipad-mini-ipad-air-first-impressions/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 14 Nov 2013 17:41:17 GMT</pubDate><guid isPermaLink="true">http://shawnblanc.net/2013/11/ipad-mini-ipad-air-first-impressions/</guid></item><item><title>The Lord of the Rings</title><link>https://apurva-shukla.me/bookshelf/the-lord-of-the-rings/</link><description>⭐ ⭐ ⭐ ⭐ ⭐ This was an amazing journey for me, the entire storyline seemed amazingly well thought out. The characters were in depth, and…</description><author>Apurva Shukla's RSS Feed</author><pubDate>Thu, 14 Nov 2013 10:00:00 GMT</pubDate><guid isPermaLink="true">https://apurva-shukla.me/bookshelf/the-lord-of-the-rings/</guid></item><item><title>Processes Vs. Goals (or, Systems vs. Accomplishments)</title><link>https://josh.works/2013/11/14/processes-vs-goals-or-systems-vs-accomplishments/</link><description>&lt;p&gt;In this
&lt;a href="http://blog.bufferapp.com/why-having-no-goals-in-our-lives-might-make-us-happier-and-more-successful"&gt;excellent article on systems vs. goals&lt;/a&gt;, James argues that even if you did not pursue any specific goals, with the right
system, you will still go a long way.
This idea has been floating around my head for over a year, now, and I think it’s slowly coalescing into something useful.&lt;/p&gt;

&lt;h2 id="ten-lessons-about-systems"&gt;Ten Lessons About Systems&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Systems are awfully close to habits.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If you can modify, create, and eliminate habits, you can build any sort of system you’d like. (Start this process here: http://tinyhabits.com/)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Reading about things is
completely different than doing things. They don’t even belong on the same continuum.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Reading about things is still a great way to learn and shape your character.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;A goal of “habit change” fails to meet
&lt;a href="http://en.wikipedia.org/wiki/SMART_criteria"&gt;the criteria for setting a good goal.&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Failure is not absolute. Extract the useful, discard the rest.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Create, don’t just consume. This will sharpen you in many ways.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Personal observation: I am most defensive when others do not carefully consider my points of view. I’ve grown to see this better in recent months. Don’t know what to do with it, but I’m happy to have noticed!&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;A good system, even without a goal, is powerful.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="/intentional-habit-building"&gt;Create a space where the desired habit/system is the easy route&lt;/a&gt;, and you’ll be successful. Struggling to build a habit = failure.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I struggle with systems. I am writing this blog post as an excuse to avoid working on a project. Ironic, yes?&lt;/p&gt;

&lt;p&gt;Rather than beating myself over the head for failing to work on a goal that I want to work on, I’m stepping back. What makes this project so distasteful to me? I pursued on my own accord, and still want to go through with it. I think I’m fearful of the undefined, which this thing is. I don’t know an obvious next step. Which means the next step is obvious:&lt;/p&gt;

&lt;p&gt;Determine the next step. Or the next five steps. Then break each one down into little tiny goals. I’ve been using
&lt;a href="https://trello.com/"&gt;Trello&lt;/a&gt; for this, and it’s been helpful.&lt;/p&gt;

&lt;p&gt;Phew.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Thu, 14 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/2013/11/14/processes-vs-goals-or-systems-vs-accomplishments/</guid></item><item><title>Privacy Happens at the Endpoints</title><link>http://tracks.ranea.org/post/66694717184/privacy-happens-at-the-endpoints</link><description>&lt;p&gt;Ben Brooks put it quite well when &lt;a href="http://brooksreview.net/2013/11/privacy-happens-at-the-endpoints/"&gt;he linked to this article&lt;/a&gt;, characterizing it as a &amp;#8220;fantastic post from Watts Martin&amp;#8221;; I wholeheartedly agree. More often than not I consider Ben to have gone off the deep end some time ago, the result of which we see today in his near-constant advocation for privacy &lt;a href="https://zacs.site/blog/goodbye-dropbox.html"&gt;often taken to the extreme&lt;/a&gt;. However, Mr. Martin&amp;#160;&amp;#8212;&amp;#160;and, by extension, Ben in his explicit endorsement of this piece&amp;#160;&amp;#8212;&amp;#160;hit the nail on the head with this one.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://tracks.ranea.org/post/66694717184/privacy-happens-at-the-endpoints"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 14 Nov 2013 00:29:37 GMT</pubDate><guid isPermaLink="true">http://tracks.ranea.org/post/66694717184/privacy-happens-at-the-endpoints</guid></item><item><title>Clocking Down the Mini</title><link>https://zacs.site/blog/clocking-down-the-mini.html</link><description>&lt;p&gt;Yesterday Jason Snell &lt;a href="https://twitter.com/jsnell/status/400363769005486080"&gt;made an interesting tweet&lt;/a&gt; regarding Apple&amp;#8217;s A7 SoC, presumably after reading the MacRumors article &lt;a href="http://www.macrumors.com/2013/11/12/retina-ipad-mini-has-1-3-ghz-a7-processor-with-5x-better-performance-than-original-mini/"&gt;&lt;em&gt;Retina iPad Mini Has 1.3 GHz A7 Processor With 5X the Performance of the Original Mini&lt;/em&gt;&lt;/a&gt;: &amp;#8220;The iPad Air&amp;#8217;s processor is running at 1.39GHz; the iPad mini&amp;#8217;s is clocked down to 1.27GHz.&amp;#8221; Amidst nearly every discussion surrounding the iPad Mini, especially building up to its release earlier today, much of that discourse has lauded synonymous computing power between both devices as enabling those wishing to buy an iPad to make their decision based purely on form factor rather than performance. Today, however, we find that despite possessing identical processors, the Air will outperform the Mini as many suspected it would leading up to last month&amp;#8217;s event.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/clocking-down-the-mini.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 13 Nov 2013 10:09:10 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/clocking-down-the-mini.html</guid></item><item><title>Benchmarking Asynchronous PHP vs NodeJS Properly</title><link>https://kevinohashi.com/13/11/2013/benchmarking-asynchronous-php-vs-nodejs-properly</link><description>&lt;p&gt;I had fun this evening working on this with &lt;a href="http://github.com/strml"&gt;Samuel Reed&lt;/a&gt;. Performance and programming language choice is always a hotly debated topic and it's always fascinating the explore. It was truly interesting to see async php code. I know NodeJS is known for it, but PHP really isn't at all.&lt;/p&gt;
&lt;p&gt;The actual article is here: &lt;a href="http://reviewsignal.com/blog/2013/11/13/benchmarking-asyncronous-php-vs-nodejs-properly/" title="http://reviewsignal.com/blog/2013/11/13/benchmarking-asyncronous-php-vs-nodejs-properly/"&gt;http://reviewsignal.com/blog/2013/11/13/benchmarking-asyncronous-php-vs-...&lt;/a&gt;&lt;/p&gt;</description><author>Kevin Ohashi</author><pubDate>Wed, 13 Nov 2013 09:23:06 GMT</pubDate><guid isPermaLink="true">https://kevinohashi.com/13/11/2013/benchmarking-asynchronous-php-vs-nodejs-properly</guid></item><item><title>They had copied all my articles. No problem</title><link>https://stop.zona-m.net/2013/11/they-had-copied-all-my-articles-no-problem/</link><description>&lt;p&gt;Saturday morning I discovered that a certain Web services company had integrally copied on their own website, without even proper attribution, most of the articles I have written for a magazine. Do they believe&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Wed, 13 Nov 2013 08:08:16 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/11/they-had-copied-all-my-articles-no-problem/</guid></item><item><title>Blogging with Emacs</title><link>https://bastibe.de/2013-11-13-blogging-with-emacs.html</link><description>&lt;p&gt;When I first started blogging, it was on &lt;a href="http://blogger.com"&gt;blogger.com&lt;/a&gt; (on the now-abandoned domain &lt;a href="http://daskrachen.com"&gt;daskrachen.com&lt;/a&gt;). On blogger, writing new posts (back then) involved typing raw HTML into a web form. Not what I would call ideal. This improved somewhat when they introduced a fancy rich text editor that would automatically transform beautiful text into a horrible formatting mess.&lt;/p&gt;
&lt;p&gt;Thus I switched. Getting my blog posts out of blogger was... Let's just say that I lost anything I didn't have a plain-text backup of. And &lt;a href="http://bastibe.de/2012-07-18-blogging-with-pelican.html"&gt;I switched&lt;/a&gt; to &lt;a href="http://pelican.readthedocs.org/en/3.3.0/"&gt;Pelican&lt;/a&gt;, a static site generator written in Python. It worked beautifully, until I updated something, at which point it resorted to just throwing errors. Now I don't have anything in particular against Python stack traces, but these particular traces traced deep into stuff that was (then?) too complex for me to understand.&lt;/p&gt;
&lt;p&gt;Thus I switched again. This time to &lt;a href="https://github.com/redline6561/coleslaw"&gt;C()λ∈slaw■&lt;/a&gt;, a static site generator written in Common Lisp. Mainly because I was interested in Common Lisp at the time. It worked really well. However, this was supposed to give me a chance to delve into Common Lisp, and I failed to understand C()λ∈slaw■'s code. Realistically though, this is probably not C()λ∈slaw■'s fault. My knowledge of Common Lisp is far from perfect.&lt;/p&gt;
&lt;p&gt;Thus it was time to switch again. Having been enamored with Emacs for the last few years, it made sense to blog with Emacs as well. Besides, I am kind of fed up with the many conflicting flavors of Markdown out there and have switched my personal note-taking to &lt;a href="http://orgmode.org/"&gt;Org mode&lt;/a&gt; long ago. So let's set up Emacs and Org as a blogging platform!&lt;/p&gt;
&lt;p&gt;Before we start though, a short disclaimer: This will be a very bare bones blogging engine. It will consist of some articles, a front page, an archive page, and an RSS feed. And you will have to manage the front page and RSS feed semi-manually. No tags, no fancy history. Just what you see here.&lt;/p&gt;
&lt;p&gt;On the plus side, this will be implemented entirely within Emacs and very simple to understand. Writing a new blog post will be as simple as writing an Org file and hitting a key combination! And you will get all of Org's fancy syntax highlighting and export magic for free!&lt;/p&gt;
&lt;p&gt;Getting the pages to work is rather simple: You have to create a &amp;quot;publishing project&amp;quot; that specifies a &lt;code&gt;base-directory&lt;/code&gt; where your Org files live and a &lt;code&gt;publishing-directory&lt;/code&gt;, where the HTML files are going to be stored. Since this is Emacs, you could make your publishing directory any TRAMP path you like and insta-publish your workings!&lt;/p&gt;
&lt;p&gt;(BTW, I am using Org 8.2.2 and I believe you need at least 8.0 for these examples to work)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;'ox-html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;'ox-rss&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;'ox-publish&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;org-publish-project-alist&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-content&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:base-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/posts&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-extension&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:base-extension&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;org&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:publishing-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/publish&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:publishing-function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-html-publish-to-html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:recursive&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="c1"&gt;; descend into sub-folders?&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:section-numbers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;; don't create numbered sections&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:with-toc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="c1"&gt;; don't create a table of contents&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:with-latex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="c1"&gt;; do use MathJax for awesome formulas!&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-head-extra&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c1"&gt;; extra &amp;lt;head&amp;gt; entries go here&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-preamble&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;; this stuff is put before your post&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-postamble&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;; this stuff is put after your post&lt;/span&gt;
&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now hit &lt;code&gt;M-x org-publish&lt;/code&gt;, type in &lt;code&gt;blog-content&lt;/code&gt;, and you have a blog! Awesome! We are done here.&lt;/p&gt;
&lt;p&gt;Well, how about an archive page that lists all your previous blog entries?&lt;/p&gt;
&lt;p&gt;Emacs can auto-generate this for you. Simply add these lines to &lt;code&gt;blog-content&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;:auto-sitemap&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:sitemap-filename&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;archive.org&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:sitemap-title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Archive&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:sitemap-sort-files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;anti-chronologically&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:sitemap-style&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:makeindex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Also, you can put something like&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;archive.html&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Other posts&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;into your &lt;code&gt;:html-postamble&lt;/code&gt; to make every page link to this. You can also add your &lt;a href="https://disqus.com/"&gt;Disqus&lt;/a&gt; snippet there to enable comments.&lt;/p&gt;
&lt;p&gt;Adding a front page is simple, too. My front page is simply a normal page called &lt;em&gt;index.org&lt;/em&gt;, which contains links and slugs for every article I want to have on the front page. For example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nn"&gt;#+TITLE:&lt;/span&gt; RECENT POSTS

&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;* &lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="na"&gt;file:2013-05-30-speeding-up-matplotlib.org&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="nt"&gt;Speeding up Matplotlib&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
 #+include: &amp;quot;~/Projects/blog/posts/2013-05-30-speeding-up-matplotlib.org&amp;quot; :lines &amp;quot;4-9&amp;quot;
 &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="na"&gt;file:2013-05-30-speeding-up-matplotlib.org&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="nt"&gt;read more...&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;But a blog is more than just text. There are images and CSS, too. I keep all that stuff in a separate directory and use a separate publishing project to copy it over to the publishing directory. Just add to your &lt;code&gt;publishing-alist&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-static&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:base-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/static&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:base-extension&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;png\\|jpg\\|css&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:publishing-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/publish/static&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:recursive&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:publishing-function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;org-publish-attachment&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Setting up the RSS feed works similarly. The RSS feed is created from a single Org file. Create a new publishing project and put it into your &lt;code&gt;publishing-alist&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-rss&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:base-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/posts&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:base-extension&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;org&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:publishing-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/publish&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:publishing-function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-rss-publish-to-rss&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:html-link-home&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://bastibe.de/&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:html-link-use-abs-url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:exclude&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;.*&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rss.org&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:with-toc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:section-numbers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Bastis Scratchpad on the Internet&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Make sure to exclude this &lt;code&gt;rss.org&lt;/code&gt; from the &lt;code&gt;blog-content&lt;/code&gt; project by adding it's name to the &lt;code&gt;:exclude&lt;/code&gt; variable though. This &lt;code&gt;rss.org&lt;/code&gt; file should contain headlines for every blog post. Every headline needs a publishing date and a permalink as property and the body of the post as content:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="gh"&gt;* Speeding up Matplotlib&lt;/span&gt;
&lt;span class="nd"&gt; :PROPERTIES:&lt;/span&gt;
&lt;span class="cs"&gt; :RSS_PERMALINK: &amp;quot;http://bastibe.de/2013-05-30-speeding-up-matplotlib.html&amp;quot;&lt;/span&gt;
&lt;span class="cs"&gt; :PUBDATE: &amp;lt;2013-05-30&amp;gt;&lt;/span&gt;
&lt;span class="nd"&gt; :END:&lt;/span&gt;
 #+include: &amp;quot;~/Projects/blog/posts/2013-05-30-speeding-up-matplotlib.org&amp;quot; :lines &amp;quot;4-&amp;quot;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I exclude the first three lines, since they only contain &lt;code&gt;#+title&lt;/code&gt;, &lt;code&gt;#+date&lt;/code&gt;, and &lt;code&gt;#+tags&lt;/code&gt;. You should at least exclude the &lt;code&gt;#+title&lt;/code&gt; line. Otherwise, &lt;code&gt;ox-rss&lt;/code&gt; will get confused about which title to choose for the feed.&lt;/p&gt;
&lt;p&gt;You can even create a meta publishing project that executes all three projects in one fell swoop!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:components&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-content&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-static&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-rss&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;There is one more thing that is kind of fiddly though: As I said, I use Disqus for comments, but I don't want to have comment boxes on the front page or the archive. Thankfully though, &lt;code&gt;ox-html&lt;/code&gt; allows you to set &lt;code&gt;:html-preamble&lt;/code&gt; and &lt;code&gt;:html-postamble&lt;/code&gt; to a function, in which case that function can decide what pre/postamble to draw! The function can take an optional argument that contains a &lt;code&gt;plist&lt;/code&gt; of article metadata. In this case, I decide on the &lt;code&gt;:title&lt;/code&gt; metadata whether to print the archive link and Disqus, only the archive link, or neither:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;:html-postamble&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;lambda&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Do not show disqus for Archive and Recent Posts&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;cond&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nf"&gt;string=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;car&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;plist-get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Archive&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nf"&gt;string=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;car&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;plist-get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Recent Posts&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;div id=\&amp;quot;archive\&amp;quot;&amp;gt;&amp;lt;a href=\&amp;quot;archive.html\&amp;quot;&amp;gt;Other posts&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;div id=\&amp;quot;archive\&amp;quot;&amp;gt;&amp;lt;a href=\&amp;quot;archive.html\&amp;quot;&amp;gt;Other posts&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;     &amp;lt;div id=\&amp;quot;disqus_thread\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;     &amp;lt;script type=\&amp;quot;text/javascript\&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;     ...&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This should get you started! For completeness, here is my complete configuration:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;'ox-html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;'ox-rss&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;'ox-publish&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;org-publish-project-alist&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:components&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-content&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-static&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-rss&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-content&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:base-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/posts&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-extension&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:base-extension&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;org&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:publishing-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/publish&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:publishing-function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-html-publish-to-html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:auto-sitemap&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:sitemap-filename&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;archive.org&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:sitemap-title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Archive&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:sitemap-sort-files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;anti-chronologically&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:sitemap-style&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:makeindex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:recursive&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:section-numbers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:with-toc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:with-latex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-head-include-default-style&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-head-include-scripts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-head-extra&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;link rel=\&amp;quot;alternate\&amp;quot; type=\&amp;quot;appliation/rss+xml\&amp;quot;&lt;/span&gt;
&lt;span class="s"&gt;                href=\&amp;quot;http://bastibe.de/rss.xml\&amp;quot;&lt;/span&gt;
&lt;span class="s"&gt;                title=\&amp;quot;RSS feed for bastibe.de\&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;          &amp;lt;link href='http://fonts.googleapis.com/css?family=Roboto&amp;amp;subset=latin' rel='stylesheet' type='text/css'&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;          &amp;lt;link href='http://fonts.googleapis.com/css?family=Ubuntu+Mono' rel='stylesheet' type='text/css'&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;          &amp;lt;link href= \&amp;quot;static/style.css\&amp;quot; rel=\&amp;quot;stylesheet\&amp;quot; type=\&amp;quot;text/css\&amp;quot; /&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;          &amp;lt;title&amp;gt;Basti's Scratchpad on the Internet&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;          &amp;lt;meta http-equiv=\&amp;quot;content-type\&amp;quot; content=\&amp;quot;application/xhtml+xml; charset=UTF-8\&amp;quot; /&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;          &amp;lt;meta name=\&amp;quot;viewport\&amp;quot; content=\&amp;quot;initial-scale=1,width=device-width,minimum-scale=1\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-preamble&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;div class=\&amp;quot;header\&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;              &amp;lt;a href=\&amp;quot;http://bastibe.de\&amp;quot;&amp;gt;Basti's Scratchpad on the Internet&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;              &amp;lt;div class=\&amp;quot;sitelinks\&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;                  &amp;lt;a href=\&amp;quot;http://alpha.app.net/bastibe\&amp;quot;&amp;gt;alpha.app.net&amp;lt;/a&amp;gt;  | &amp;lt;a href=\&amp;quot;http://github.com/bastibe\&amp;quot;&amp;gt;Github&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;              &amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;          &amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-postamble&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;lambda&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Do not show disqus for Archive and Recent Posts&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;cond&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nf"&gt;string=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;car&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;plist-get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Archive&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nf"&gt;string=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;car&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;plist-get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Recent Posts&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;div id=\&amp;quot;archive\&amp;quot;&amp;gt;&amp;lt;a href=\&amp;quot;archive.html\&amp;quot;&amp;gt;Other posts&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;div id=\&amp;quot;archive\&amp;quot;&amp;gt;&amp;lt;a href=\&amp;quot;archive.html\&amp;quot;&amp;gt;Other posts&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;              &amp;lt;div id=\&amp;quot;disqus_thread\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;              &amp;lt;script type=\&amp;quot;text/javascript\&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;              /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */&lt;/span&gt;
&lt;span class="s"&gt;              var disqus_shortname = 'bastibe';&lt;/span&gt;
&lt;span class="s"&gt;              /* * * DON'T EDIT BELOW THIS LINE * * */&lt;/span&gt;
&lt;span class="s"&gt;              (function() {&lt;/span&gt;
&lt;span class="s"&gt;                var dsq = document.createElement('script');&lt;/span&gt;
&lt;span class="s"&gt;                dsq.type = 'text/javascript';&lt;/span&gt;
&lt;span class="s"&gt;                dsq.async = true;&lt;/span&gt;
&lt;span class="s"&gt;                dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';&lt;/span&gt;
&lt;span class="s"&gt;                (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);&lt;/span&gt;
&lt;span class="s"&gt;                  })();&lt;/span&gt;
&lt;span class="s"&gt;              &amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;              &amp;lt;noscript&amp;gt;Please enable JavaScript to view the&lt;/span&gt;
&lt;span class="s"&gt;                  &amp;lt;a href=\&amp;quot;http://disqus.com/?ref_noscript\&amp;quot;&amp;gt;comments powered by Disqus.&amp;lt;/a&amp;gt;&amp;lt;/noscript&amp;gt;&lt;/span&gt;
&lt;span class="s"&gt;              &amp;lt;a href=\&amp;quot;http://disqus.com\&amp;quot; class=\&amp;quot;dsq-brlink\&amp;quot;&amp;gt;comments powered by &amp;lt;span class=\&amp;quot;logo-disqus\&amp;quot;&amp;gt;Disqus&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:exclude&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rss.org\\|archive.org\\|theindex.org&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-rss&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:base-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/posts&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:base-extension&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;org&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:publishing-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/publish&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:publishing-function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-rss-publish-to-rss&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-link-home&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://bastibe.de/&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:html-link-use-abs-url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:exclude&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;.*&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rss.org&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:with-toc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:section-numbers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Bastis Scratchpad on the Internet&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog-static&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:base-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/static&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:base-extension&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;png\\|jpg\\|css&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:publishing-directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Projects/blog/publish/static&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:recursive&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nb"&gt;:publishing-function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;org-publish-attachment&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;All other sources, including the source code to all blog posts, can be found on &lt;a href="https://github.com/bastibe/bastibe.github.com"&gt;Github&lt;/a&gt; (the &lt;em&gt;master&lt;/em&gt; branch contains HTML, the &lt;em&gt;source&lt;/em&gt; branch contains Org).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Addendum:&lt;/em&gt; I have since discovered that &lt;code&gt;org-rss-publish-to-rss&lt;/code&gt; only handles top-level headlines, but disregards second-level or higher-level headlines. Thus, if you have a post with nested headlines, your RSS feed will only include the text of the top-level one. To fix this, I advised &lt;code&gt;org-rss-publish-to-rss&lt;/code&gt; to use &lt;code&gt;org-html-headline&lt;/code&gt; for non-top-level headlines like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defadvice&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;org-rss-headline&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;around&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;my-rss-headline&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;headline&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;contents&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;activate&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;only use org-rss-headline for top level headlines&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-export-get-relative-level&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;headline&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nv"&gt;ad-do-it&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;ad-return-value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-html-headline&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;headline&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;contents&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now, the RSS feed includes the full text of all articles.&lt;/p&gt;</description><author>bastibe.de</author><pubDate>Wed, 13 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://bastibe.de/2013-11-13-blogging-with-emacs.html</guid></item><item><title>Cracking my iPhone 4</title><link>https://zacs.site/blog/cracking-my-iphone-4.html</link><description>&lt;p&gt;The whole debacle surrounding New York Times writer Catherine Rampell&amp;#8217;s article &lt;a href="http://www.nytimes.com/2013/11/03/magazine/why-apple-wants-to-bust-your-iphone.html"&gt;&lt;em&gt;Cracking the Apple Trap&lt;/em&gt;&lt;/a&gt; holds almost no interest to me. However, after &lt;a href="http://www.muleradio.net/thetalkshow/60/"&gt;yesterday&amp;#8217;s The Talk Show&lt;/a&gt; during which John X. Gruber and very special guest Paul X. Kafasis devoted a fair amount of time to ridiculing the entire enterprise, I feel it at least merits some attention.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/cracking-my-iphone-4.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 12 Nov 2013 17:42:09 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/cracking-my-iphone-4.html</guid></item><item><title>Benedict's Mobile Newsletter</title><link>http://ben-evans.com/newsletter/</link><description>&lt;p&gt;Every Sunday Benedict Evans, whose articles I have linked to &lt;a href="https://zacs.site/blog/benedict-evans-on-simplicity.html"&gt;numerous&lt;/a&gt; &lt;a href="https://zacs.site/blog/benedict-evans-on-amazons-profits.html"&gt;times&lt;/a&gt; in the past, publishes an excellent newsletter providing insightful observations into the tech and mobile industries&amp;#8217; news to a subscriber base growing at an impressive rate of &lt;a href="https://twitter.com/BenedictEvans/statuses/399534830842437633"&gt;1,000 every month&lt;/a&gt;. Every week I look forward to the next installment of this thought-provoking newsletter, and Benedict always exceeds my expectations. If you need more convincing than my own personal endorsement of this invaluable resource though, take not just my word for it but a thousand others as well.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://ben-evans.com/newsletter/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 12 Nov 2013 15:10:09 GMT</pubDate><guid isPermaLink="true">http://ben-evans.com/newsletter/</guid></item><item><title>Fun with Instaparse</title><link>https://johnj.com/posts/fun-with-instaparse/</link><description>&lt;p&gt;





&lt;a href="https://johnj.com/instaparse-example.jpg"&gt;&lt;img class="resize" src="https://johnj.com/instaparse-example_hu_56a7c137cd68f43d.jpg" style="width: 700px; border: 0px solid black;" /&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
One of my favorite talks from this month’s excellent &lt;a href="http://clojure-conj.org/"&gt;Clojure/conj&lt;/a&gt; was
&lt;a href="http://gigasquid.github.io/"&gt;Carin Meier&lt;/a&gt;'s presentation, which combined storytelling, live coding,
philosophy, the history of computing, and flying robotic drones. She
used the relatively new &lt;a href="https://github.com/Engelberg/instaparse"&gt;Instaparse library&lt;/a&gt; to create her own language
to explore something called “Speech Acts” (which I won’t go into here,
but do catch the video of her talk when it goes up).&lt;/p&gt;
&lt;p&gt;
My university work was in physics (and art) rather than CS, but I have
long been interested in the implementation of programming languages,
even going so far as to write a simple parser for Lisp-style math
expressions in Pascal many years ago. Last year I had the opportunity
to take the first “&lt;a href="http://dabeaz.blogspot.com/2012/01/compiler-experiment-begins.html"&gt;write a compiler in Python&lt;/a&gt;” class offered by &lt;a href="http://dabeaz.com/"&gt;David
Beazley&lt;/a&gt; here in Chicago, in which we implemented a subset of the Go
language. His &lt;a href="http://www.dabeaz.com/ply/index.html"&gt;PLY library&lt;/a&gt; is a great way to get started with
implementing language parsers in Python, and the relative ease of
doing so, compared with classic C implementations described in the
infamous &lt;a href="https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools"&gt;Dragon Book&lt;/a&gt;, inspired me to do some further &lt;a href="https://github.com/eigenhombre/PyClojure"&gt;experimentation
of my own&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
With this background, and inspired by Carin’s talk, I have been
waiting for an opportunity to try out Instaparse, which is getting
great press in the Clojure world. Instaparse takes a grammar as input
(in the form of a string), and gives you a parser in the language
specified by that grammar. It will also let you specify rules for
transforming the resulting tree into something your Clojure program
can use more directly (for example, by converting data types or
removing unneeded elements from the parse tree).&lt;/p&gt;
&lt;p&gt;
When the need arose this weekend to read in Python configuration files
into a Clojure program, I decided the time was ripe. I also wanted to
document the journey using some form of &lt;a href="http://en.wikipedia.org/wiki/Literate_programming"&gt;literate programming&lt;/a&gt;. A
library called &lt;a href="https://github.com/gdeer81/marginalia"&gt;Marginalia&lt;/a&gt; (Michael Fogus et. al.) made this pretty
easy.&lt;/p&gt;
&lt;p&gt;
The results are on &lt;a href="https://github.com/eigenhombre/parsepy"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
My impressions, after doing this project in just a few hours, are that
(1) literate programming is great fun; and (2) Instaparse sets a new
standard for power and expressiveness when converting structured text
into abstract syntax trees. If you have a DSL or some other
text-based, formal language you want to parse, and you are either
literate in Clojure or interested in becoming so, Instaparse would be
a great tool to check out.&lt;/p&gt;</description><author>John Jacobsen</author><pubDate>Tue, 12 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/fun-with-instaparse/</guid></item><item><title>Berlin Marathon 2014 Participants</title><link>https://blog.tafkas.net/2013/11/12/berlin-marathon-2014-participants/</link><description>After the 2013 Berlin Marathon sold out in less than four hours, the organizers decided to alter the registration process for 2014. First there was a pre-registration phase followed by a random selection from the pool of registrants to receive a spot. Those who were selected had to register until November 11th, 2013. Any spots that were not confirmed till the 11th would be offered to pre-registered candidates according to the order in which they were randomly selected.</description><author>Tafkas Blog</author><pubDate>Tue, 12 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.tafkas.net/2013/11/12/berlin-marathon-2014-participants/</guid></item><item><title>The biggest lie on the Internet...</title><link>https://stop.zona-m.net/2013/11/the-biggest-lie-on-the-internet/</link><description>&lt;p&gt;is that ridiculous disclaimer plastered over too many clueless websites&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Mon, 11 Nov 2013 22:42:02 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/11/the-biggest-lie-on-the-internet/</guid></item><item><title>Chris Bowler on App Fatigue</title><link>http://chrisbowler.com/journal/app-fatigue</link><description>&lt;p&gt;In the wake of iOS 7&amp;#8217;s release very few developers skipped the godsend of an opportunity to update their apps and charge once more in the process. Unfortunately, interspersed amongst the Tapbots of Apple&amp;#8217;s ecosystem who shipped a product rebuilt from the ground up, others instead chose a shallow strategy Ben Brooks quantified quite well in the title of his article linking to Chris&amp;#8217;s piece, &lt;a href="http://brooksreview.net/2013/11/lets-make-it-2-0-so-we-can-charge-for-it-again/"&gt;&lt;em&gt;Let&amp;#8217;s make it 2.0 so we can charge for it again.&lt;/em&gt;&lt;/a&gt; Like Chris, I had no problem paying for Tweetbot 3; I happily bought Instacast 4 when it came out too. But by and large those two were the exceptions, not the rule.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://chrisbowler.com/journal/app-fatigue"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 11 Nov 2013 20:19:02 GMT</pubDate><guid isPermaLink="true">http://chrisbowler.com/journal/app-fatigue</guid></item><item><title>Restricting Thrift clients to specific IP addresses with Twisted</title><link>https://tomforb.es/blog/restricting-thrift-clients-to-specific-ip-addresses-with-twisted/</link><description>Apache Thrift is pretty awesome - you can build Twisted bindings for your Thrift interface file that work fantastically. There is one thing that took me a while to figure out: I want to restrict clients connecting to the service to a specific set of IP addresses stored in a database. There were thre...</description><author>Tom Forbes</author><pubDate>Mon, 11 Nov 2013 19:17:11 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/restricting-thrift-clients-to-specific-ip-addresses-with-twisted/</guid></item><item><title>Benedict Evans on Amazon's Profits</title><link>http://ben-evans.com/benedictevans/2013/8/8/amazons-profits</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/benedict-evans-on-simplicity.html"&gt;Speaking of Ben Evans and Amazon&lt;/a&gt; back in August&lt;sup id="fnref1"&gt;&lt;a href="#fn1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;, when Amazon was the hot topic of discussion amongst the small circles we tend to frequent, he neatly and concisely explained many of the mysteries surrounding the company. For instance, why does Amazon turn nearly zero profit? And why, for crying out loud, do so many have such considerable faith in this curious company?&lt;/p&gt;

&lt;p id="fn1"&gt;&lt;a class="fn" href="#fnref1" title="return to article"&gt;&amp;#x21a9;&lt;/a&gt;&amp;nbsp;This should give you a general idea as to how good I am at keeping up with my Instapaper queue.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://ben-evans.com/benedictevans/2013/8/8/amazons-profits"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 10 Nov 2013 16:32:16 GMT</pubDate><guid isPermaLink="true">http://ben-evans.com/benedictevans/2013/8/8/amazons-profits</guid></item><item><title>Benedict Evans on Simplicity</title><link>http://ben-evans.com/benedictevans/2013/10/27/simplicity</link><description>&lt;p&gt;From last month but no less applicable now, Benedict Evans takes a few moments to break down the core businesses of Apple, Amazon, and Google. And that&amp;#8217;s all it took: a few moments. If only more &amp;#8220;tech journalists&amp;#8221; would read this before writing&amp;#160;&amp;#8212;&amp;#160;or performing some semblance of the act&amp;#160;&amp;#8212;&amp;#160;their next article.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://ben-evans.com/benedictevans/2013/10/27/simplicity"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 10 Nov 2013 16:00:04 GMT</pubDate><guid isPermaLink="true">http://ben-evans.com/benedictevans/2013/10/27/simplicity</guid></item><item><title>2013-11-10/01</title><link>https://ho.dges.online/pictures/2013-11-10-01/</link><description/><author>ho.dges.online</author><pubDate>Sun, 10 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-11-10-01/</guid></item><item><title>2013-11-10/02</title><link>https://ho.dges.online/pictures/2013-11-10-02/</link><description/><author>ho.dges.online</author><pubDate>Sun, 10 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-11-10-02/</guid></item><item><title>2013-11-10/03</title><link>https://ho.dges.online/pictures/2013-11-10-03/</link><description/><author>ho.dges.online</author><pubDate>Sun, 10 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-11-10-03/</guid></item><item><title>2013-11-10/04</title><link>https://ho.dges.online/pictures/2013-11-10-04/</link><description/><author>ho.dges.online</author><pubDate>Sun, 10 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-11-10-04/</guid></item><item><title>Shall we waste twelve more years promoting Free office suites instead of open office formats?</title><link>https://stop.zona-m.net/2013/11/shall-we-waste-twelve-more-years-promoting-free-office-suites-instead-of-open-office-formats/</link><description>&lt;p&gt;Twelve (TWELVE!!!) years ago I asked OpenOffice users &lt;a href="http://markmail.org/message/6zhofi3lvnxlsdvo"&gt;&amp;ldquo;Are you advocating OO correctly&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Sat, 09 Nov 2013 19:24:37 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/11/shall-we-waste-twelve-more-years-promoting-free-office-suites-instead-of-open-office-formats/</guid></item><item><title>Prove, don't claim</title><link>https://bastian.rieck.me/blog/2013/prove_dont_claim/</link><description>&lt;p&gt;In the wake of Edward Snowden&amp;rsquo;s activities, several new communication services started catering
towards security-minded users. In principle, this is a &lt;em&gt;good&lt;/em&gt; thing. However, these companies need
to take the burden of proof more seriously. It is simply &lt;em&gt;not good enough&lt;/em&gt; to claim that you &amp;ldquo;value
the privacy of your costumers&amp;rdquo;. Quotes such as&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We take your privacy seriously. We will never collect data about you. We use state-of-the-art
encryption to guarantee that your files cannot be accessed by unauthorized persons.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;simply evoke a &amp;ldquo;Huh, I guess that&amp;rsquo;s good for you&amp;rdquo; response from myself. In the worst case, they
might trick users into believing your company without good cause. Why am I being so harsh? A simple
reason: &lt;em&gt;Good cryptography is hard to do right&lt;/em&gt;. Repeat after me: &lt;em&gt;Good cryptography is hard to do
right&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Take the guys from &lt;a href="https://whistle.im"&gt;whistle.im&lt;/a&gt;, for instance. They &amp;ldquo;talk the talk&amp;rdquo; and even
give some insights into their algorithms, yet &lt;a href="http://hannover.ccc.de/~nexus/whistle.en.html"&gt;a detailed analysis by neXus shows that they violated
even the most basic principles of security&lt;/a&gt;. Darn. At
least, I award them some points for being somewhat open about their protocols.&lt;/p&gt;
&lt;p&gt;If your company does not talk openly about the detailed steps you are going to take to ensure that
my data are encrypted properly, I will not even remotely trust you. Sorry. Shannon coined the adage
&amp;ldquo;The enemy knows the system&amp;rdquo;. And at least in the cryptographic context, this is what I am
assuming as well.&lt;/p&gt;
&lt;p&gt;If you are unwilling to prove the security of your algorithms, I will assume that you are incapable
of doing so. To be fair: &lt;em&gt;I&lt;/em&gt; myself am incapable as well. To clarify: I consider myself capable of
using established cryptographic systems such as &lt;a href="https://otr.cypherpunks.ca"&gt;Off-the-Record&lt;/a&gt; and
&lt;a href="http://gnupg.org"&gt;GnuPG&lt;/a&gt;. But it is a very large step from being able to understand the workings
of, say, RSA, to designing and running my own cryptosystem.&lt;/p&gt;
&lt;p&gt;Would that all people and companies were aware of their limitations! As the aftermath of the recent
Adobe hack shows, it is very easy to get things wrong. Adobe, for example, &lt;a href="http://arstechnica.com/security/2013/11/how-an-epic-blunder-by-adobe-could-strengthen-hand-of-password-crackers"&gt;did not hash passwords
properly&lt;/a&gt;.
That is an &lt;em&gt;epic&lt;/em&gt; on the fail scale. Some people are already working on &lt;a href="http://www.hydraze.org/2013/10/some-information-on-adobe-135m-users-leak"&gt;analysing the
passwords&lt;/a&gt; statistically
or &lt;a href="http://filosottile.github.io/analyzing-the-adobe-leaked-passwords"&gt;analysing the security problems in
general&lt;/a&gt;. And it appears that
there is already a &lt;a href="http://stricture-group.com/files/adobe-top100.txt"&gt;list of the top 100 passwords
used&lt;/a&gt;. I very much hope that the majority of the
users did not use the same password for other services. Since their e-mail addresses have been
included in the data dump, this would allow attackers to target things like e-mail accounts,
e-commerce stuff (amazon, eBay, &amp;hellip;), and so on. And what does Adobe have to say? The usual drivel,
it turns out:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We value the trust of our customers. We will work aggressively to prevent these types of events
from occurring in the future. Again, we deeply regret any inconvenience this may cause you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In the &lt;a href="http://blogs.adobe.com/conversations/2013/10/important-customer-security-announcement.html"&gt;official security
announcement&lt;/a&gt;,
there is not a word about their abysmal security practices. Not even an honest summary of the
situation.&lt;/p&gt;
&lt;p&gt;So, if even a large company like Adobe can get something that basic that wrong–why should I
trust &lt;em&gt;your&lt;/em&gt; new &amp;amp; hot startup? If you pretend to care about the privacy of your customers, you are
required to disclose your algorithms completely. Not because somebody should poke fun at them but
rather because you might have overlooked something, which in turn might negatively affect the
efficiency of your encryption schemes. This happens to the best of us. The most recent example is
probably &lt;a href="http://www.thoughtcrime.org/blog/lavabit-critique"&gt;Moxie Marlinkspike&amp;rsquo;s critique of
Lavabit&lt;/a&gt;. &lt;a href="https://crypto.cat"&gt;Cryptocat&lt;/a&gt;, had
its &lt;a href="http://www.wired.com/threatlevel/2012/08/wired_opinion_patrick_ball/all"&gt;share of problems&lt;/a&gt;, as
well.&lt;/p&gt;
&lt;p&gt;To all the people involved in privacy-aware services, be it &lt;em&gt;whistle.im&lt;/em&gt;, &lt;em&gt;Cryptocat&lt;/em&gt;,
&lt;em&gt;myIDkeeper&lt;/em&gt;, &lt;em&gt;Lavabit&lt;/em&gt;, or something else entirely, I say: Thanks for your work and dedication. If
you really want the trust of your users, please disclose your algorithms. &lt;em&gt;Prove&lt;/em&gt; the security to
me, don&amp;rsquo;t just &lt;em&gt;claim&lt;/em&gt; it. Given enough eyeballs, all bugs are shallow. Even those in cryptography.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sat, 09 Nov 2013 11:10:53 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/prove_dont_claim/</guid></item><item><title>On vlogs</title><link>https://www.craigpardey.com/post/2013-11-09-on-vlogs/</link><description>&lt;p&gt;Video blogs, or vlogs, are becoming increasingly popular and if you have a
decent following on Twitter/Facebook/etc then you probably also have a YouTube
channel from which to pontificate.&lt;/p&gt;
&lt;p&gt;Vlogs are great. I get to know you a little better because I can hear your
accent, the tone of your voice, and see all the non-verbal facial expressions
that add so much to any communication.&lt;/p&gt;
&lt;p&gt;But there are several downsides, too.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Sat, 09 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-11-09-on-vlogs/</guid></item><item><title>Overthrowing alcohol</title><link>http://dimitarsimeonov.com/top/2013/11/09/overthrowing-alcohol</link><description>&lt;p&gt;Like most fun stories this one starts with getting drunk. One summer
night I got very drunk at a party. In the morning I hated the hangover
and myself.&lt;/p&gt;

&lt;p&gt;I wanted to try something new. I was going for my first internship the
following week, travelling to California. Getting to a new place, I
decided to try an experiment - try to make it until my birthday
without drinking - month and a half on the dry. I didn’t. I gave in
and watched Batman drinking two bottles of Corona after about 26 days.&lt;/p&gt;

&lt;p&gt;But hey, I still made it 26 days without alcohol. I was proud and
happy for my new personal record. I told myself that next year I will
beat that record. The challenge motivated me. And I did beat it by a
tiny bit.  Six years in a row I have been setting a new personal
best - beating the score from the previous year by few hours or a
day. Now my best is 29 days.&lt;/p&gt;

&lt;p&gt;Most surprising was the observation that I can be having so much fun
without drinking. I reasoned that if there are people who don’t drink
but are always ready to laugh, dance or do something crazy, then I
want to be one of them. I didn’t want no-drinking to make me boring.
Alcohol makes it easier to start and keep partying but I thought that
since the brain is the one deciding what to do, then maybe I can tell
my brain to party without alcohol. I tricked myself to imagine that I
was buzzed and to act accordingly. And it worked for me - I could
relax and dance, make jokes and enjoy the party.&lt;/p&gt;

&lt;p&gt;It all happened very slowly and gradually. Dancing on the sober was
pretty hard to start, but easier to keep once I had started. I pushed
myself to dance for a couple of minutes even if I didn’t feel like it,
and then I just kept it going.  And the rest of the party felt
different when I had my head working and could think more clearly than
when intoxicated.&lt;/p&gt;

&lt;p&gt;I noticed that after putting myself in fun mode at parties without
booze, it become easier to put myself in fun mode in my everyday
life. By changing the way I party, I got more out of my non-party
time. As a result I now drink less on average because I value my sober
and non-hangover time more, and every time I drink it costs me few
hours to a day. I still love a nice cold beer in a hot day, or a glass
of red wine with a tasty meal. I’ll never go completely boozeless,
because I don’t want to. Overthrowing alcohol didn’t mean killing it,
but rather getting an improved, more balanced relation with it. I’ve
increased my enjoyment threshold for alcohol. It better be really good
or it wouldn’t be worth it.&lt;/p&gt;</description><author>D13V</author><pubDate>Sat, 09 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://dimitarsimeonov.com/top/2013/11/09/overthrowing-alcohol</guid></item><item><title>Anything to MQTT</title><link>https://smetj.net/anything-to-mqtt.html</link><description>&lt;p&gt;In this blog post I would like to demonstrate the how easy it is to setup a
Wishbone server which allows you to send data from bash to a MQTT broker.&lt;/p&gt;
&lt;p&gt;To install Wishbone you can follow the instructions found in the project
&lt;a class="reference external" href="http://wishbone.readthedocs.org/en/latest/installation.html"&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;div class="section" id="our-setup"&gt;
&lt;h2&gt;Our setup&lt;/h2&gt;
&lt;p&gt;Have a server up …&lt;/p&gt;&lt;/div&gt;</description><author>Jelle Smet</author><pubDate>Sat, 09 Nov 2013 00:00:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/anything-to-mqtt.html</guid></item><item><title>Monsters, Inc.</title><link>https://olshansky.info/movie/monsters_inc./</link><description>Olshansky's review of Monsters, Inc.</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 08 Nov 2013 13:59:48 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/monsters_inc./</guid></item><item><title>Monsters University</title><link>https://olshansky.info/movie/monsters_university/</link><description>Olshansky's review of Monsters University</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 08 Nov 2013 13:59:36 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/monsters_university/</guid></item><item><title>Monthly Review: October</title><link>https://josh.works/growth/home/2013/11/08/monthly-review-october/</link><description>&lt;p&gt;This is my first monthly review. I’ll spend some time fleshing out the why and the how, and then get right to it. If you don’t want to read a lot of introspective Josh, stop reading. I use the word “I” dozens of times. Consider yourself warned.
For a long time I have feared life passing me by, and after years have passed, I will be largely the same person that I was years ago. I know my temptation is to be passive, so these reviews are an experiment to encourage me to be proactive.
more&lt;/p&gt;

&lt;h2 id="categories-for-monthly-review-and-why-they-made-the-list"&gt;Categories for Monthly Review (and why they made the list)&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My marriage&lt;/strong&gt;
 (Kristi is more important to me than everything else on this list, and as my marriage is strong, these other projects go well. If my marriage saps my energy, nothing else moves forward. My marriage brings joy. Everything else can make me happy, but not joyful.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Significant relationships&lt;/strong&gt;
 “Josh, there are two kinds of people in the world. Those who pick up the phone and call people, and those who don’t have long-term relationships with their family.” - Paraphrase of my uncle, who called me every Thursday while I was in college. I want to build that sort of intentionality into important relationships in my life.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Side projects&lt;/strong&gt;
 Side projects are the most significant method of personal development a person can do, without making it their full-time gig. It is a “safe” way to test ideas, and if any pan out, they can turn into extra forms of income. Money is not, however, the primary goal. This blog is a side project.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My job&lt;/strong&gt;
 My job provides my primary income, and I need to do well at it. I also should figure out how to develop myself as much as possible within the role, but my job is hardly the most important thing in my life. That would be bad for me 
and my employer.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Physical goals&lt;/strong&gt;
 I enjoy being physically active, and I like improving/learning, so I’m going to always try to have a tangible goal on the horizon. (Right now I’m working on learning handstands, for example.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Finances&lt;/strong&gt;
Money is sort of like oxygen. You notice when it’s gone, but more than a certain amount and it doesn’t do much for you. Kristi and I want to be wise stewards of our resources, and be generous. It is obvious that finances (no matter how much or how little we earn) are important.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Debt reduction (student loans, car loan)&lt;/strong&gt;
A sub-component of finances. I want to be debt-free, and I want it badly. Since I don’t want to reveal tons of details of our finances (I’m not sure why) I will talk about debt reduction as a decimal based off of payments made:minimum payments. If we 
have to make a $100 payment, and do so, we are 1:1 on debt for the month. If we make a $200 payment on a $100 minimum payment, we’re 2:1 on debt, or 2.0. The higher the number the better. As we reduce our debt, we should be able to sustain higher and higher numbers.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My monthly reviews&lt;/strong&gt;
 I’ve never done a monthly review before. I need to make them effective, so I’ll always reflect on the quality and utility of the review.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Habits&lt;/strong&gt;
 Habits are the way we live at least 95% of our life. It’s foolishness to try to make big changes to your life without looking at your habits. I want to make big changes, so I’m monitoring my habits.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Significant events&lt;/strong&gt;
Sometimes big things happen. I don’t want to live my life from big event to big event, but I’m not going to skip over it either.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="how-do-i-remember-my-month"&gt;How do I remember my month?&lt;/h2&gt;

&lt;p&gt;Since I don’t remember my day-to-day very well, I will rely upon pretty regular entries in 
&lt;a href="http://750words.com/"&gt;750words.com&lt;/a&gt;. It’s a tool that simply encourages you to write 750 words a day. I don’t always write every day, but for the last two weeks, I’ve missed only a few days. It’s an accurate snapshot of my day.&lt;/p&gt;

&lt;p&gt;I plan projects (sometimes) in a physical journal, and will refer to that as well.&lt;/p&gt;

&lt;h2 id="october-review"&gt;October Review&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;My marriage&lt;/strong&gt;
 Kristi and I did well. Few memorable disagreements, and we handled those while still being loving to each other. (
&lt;a href="/blog/2013/07/18/rules-for-fighting-fair"&gt;Conflict management is a key quality indicator&lt;/a&gt;, remember?)&lt;/p&gt;

&lt;p&gt;Our relationship is so much more than just not arguing, though. She felt like I delighted in her, and we did a lot of things together. Kristi’s picked up running, as she’s training for a five mile race in a few weeks. We went to Krav Maga together at least once a week. We went on dates. All-in-all, we have enjoyed each other and are growing together. I am blessed to be married to her.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Side Projects&lt;/strong&gt;
 Lots of progress here, but I have too many, which allows me to follow one side project until it gets hard, then I’ll jump to another project until THAT gets hard, then move to another one. I “consulted” a few times with the Krav Maga DC Training Center (it’s ongoing) and I’m working on tools to help people learn to belay, and deal with fear in lead belaying. I want to keep my projects to just those.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Significant relationships&lt;/strong&gt;
I made almost zero attempts to reach out to those important to me. There is infinite room for improvement here. Stay tuned for November’s review, where I will have progress to report.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;My job&lt;/strong&gt;
 I have learned my roll just fine, and I’ve been able to teach a lot of what we do to two newly-hired staff. I had lunch with one of them, and really enjoyed building that relationship. There’s room for improvement, though. I struggle with feeling content when it feels like key elements of my job are completely out of my control. Stay tuned.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Physical goals&lt;/strong&gt;
I went to the New River Gorge for a weekend, and while I have lost a lot of strength, I managed to send Toxic Hueco (11d), and was pretty happy about that, since I’ve not trained or done a pull-up almost since June.&lt;/p&gt;

&lt;p&gt;I have started learning handstands. I can hold a handstand against a wall for a minute and a half, and I can do little mini-pushups. I want to do a free-standing handstand pushup. So far, I have to build a lot of strength, but I’m ready to take the next steps. I need to learn how to fall out of a handstand, so I can get away from the wall.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Finances&lt;/strong&gt;
More money went out this month than came in, because I put a fair chunk of change into paying off our car loan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;**Debt reduction (student loans, car loan)&lt;/strong&gt;**
 3.5 (ratio of debt paid off:minimum payment) This is a great number. Definitely not going to happen this month.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;My monthly reviews&lt;/strong&gt;
This is my first review. It’s been helpful so far. Probably tons of room for improvement, but I’m not concerned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Habits&lt;/strong&gt;
I’ve been using 750words regularly. It’s helpful in me planning my day. I’ve done ~5 minutes of hand-stand training every day. I have been in Krav Maga twice a week, but I’d like to get that up to three times most weeks.&lt;/p&gt;

&lt;p&gt;I am trying to get back into using my “hangboard” door frame, but have not systematized that yet. This coming month we’ll see improvement, I hope.&lt;/p&gt;

&lt;p&gt;I’ve not been able to reliably wake up early (before 6:00), especially after Krav Maga in the evenings. I’m still experimenting with how to firm up my morning routine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Significant events&lt;/strong&gt;
Nothing major here. A few minor things that caused me great elation followed by disappointment, so the lesson learned is either 1) be wary of false expectations or 2) don’t get so excited and disappointed. I don’t like squashing my emotions, though, so this is not a good option.&lt;/p&gt;

&lt;h3 id="summary-and-going-forward"&gt;Summary, and going forward&lt;/h3&gt;

&lt;p&gt;October was a good month, but not very intentional. Everything I did just sort of happened. I really want to make progress with building intentional relationships with my family (by calling them. Hi Mom!) and I want to drill down my focus on building the climbing-related tools. More on that later.&lt;/p&gt;

&lt;p&gt;And here ends my first monthly review, only a week after the end of the month. This has been a useful tool, just writing and categorizing and thinking hard about my month. This makes it easier to make good choices going forward, knowing that I’ll be analyzing my decisions in three weeks. If any of you are thinking about doing a similar review, I strongly recommend it!&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Fri, 08 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/home/2013/11/08/monthly-review-october/</guid></item><item><title>Submit Nagios metrics to Graphite with ModGearman and MetricFactory revisited</title><link>https://smetj.net/submit-nagios-metrics-to-graphite-with-modgearman-and-metricfactory-revisited.html</link><description>&lt;p&gt;When it comes down to monitoring Nagios is still the weapon of choice for
many. &amp;nbsp;I would have abandoned it if there weren't projects like &lt;a class="reference external" href="http://mathias-kettner.de/checkmk_livestatus.html"&gt;Livestatus&lt;/a&gt;,
&lt;a class="reference external" href="http://labs.consol.de/lang/en/nagios/mod-gearman/"&gt;Mod_Gearman&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a class="reference external" href="http://www.thruk.org/"&gt;Thruk&lt;/a&gt;&amp;nbsp;which to my opinion should never be missing from
any Nagios setup.  Mod_Gearman, the framework which makes Nagios scalable, has
a …&lt;/p&gt;</description><author>Jelle Smet</author><pubDate>Fri, 08 Nov 2013 00:00:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/submit-nagios-metrics-to-graphite-with-modgearman-and-metricfactory-revisited.html</guid></item><item><title>The 512 Mavericks Review</title><link>http://512pixels.net/2013/10/mavericks-review/</link><description>&lt;p&gt;Amidst all the hubbub that invariably follows every Apple event as embargoes lift and reviews flood the internet, as writers formulate, present, and respond to thoughts and opinions regarding Apple&amp;#8217;s latest moves, it&amp;#8217;s easy to lose a diamond in the rough. The problem is further compounded when amongst other diamonds, to continue stretching this metaphor, such as John Siracusa&amp;#8217;s famous &lt;a href="http://arstechnica.com/apple/2013/10/os-x-10-9/"&gt;Mavericks review&lt;/a&gt;. Such was the case when Stephen Hackett posted his own article reviewing OS X 10.9, which I just now got around to reading more than two weeks after its publication. While it will not replace John&amp;#8217;s in-depth analysis and historical perspective I enjoy so much, Stephen&amp;#8217;s much quicker pace and more jovial approach did earn his annual review a spot among those I will look out for and read every year from here on out.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://512pixels.net/2013/10/mavericks-review/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 07 Nov 2013 23:34:21 GMT</pubDate><guid isPermaLink="true">http://512pixels.net/2013/10/mavericks-review/</guid></item><item><title>John Gruber on Apple's October Event</title><link>http://daringfireball.net/2013/10/this_weeks_ipad_event</link><description>&lt;p&gt;I realize I have come late to the party, but after just two weeks that does not change the relevancy of John Gruber&amp;#8217;s article written in the wake of Apple&amp;#8217;s October iPad event. Many wrote about a single aspect: Marco &lt;a href="http://www.marco.org/2013/10/24/off"&gt;chimed in on the presentation itself&lt;/a&gt;, and I devoted an entire article to the notion of &lt;a href="https://zacs.site/blog/the-ipad-pro.html"&gt;an upcoming iPad Pro&lt;/a&gt;; others, &lt;a href="http://www.loopinsight.com/2013/10/22/thoughts-on-the-apple-event/"&gt;such as Jim Dalrymple&lt;/a&gt;, attempted the more monumental task of tackling the entire event; still others put forth more opinion-based pieces, such as Shawn Blanc&amp;#8217;s &lt;a href="http://shawnblanc.net/2013/10/best-in-class-built-to-last/"&gt;&lt;em&gt;Best in Class, Built to Last&lt;/em&gt;&lt;/a&gt;. None, however, did such a good job as John in not only conveying his thoughts and observations regarding the event, but presenting both those ideas and Apple&amp;#8217;s announcements in context born from years of experience in this industry.&lt;/p&gt;

&lt;p&gt;This is why John Gruber is so famous amongst the generation of writers, and why so many respect him; this is why I read Daring Fireball, for these impressively insightful pieces that inspire me to become a better writer myself. John gives me a bar to strive for, and one that I someday hope to reach.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://daringfireball.net/2013/10/this_weeks_ipad_event"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 07 Nov 2013 21:11:47 GMT</pubDate><guid isPermaLink="true">http://daringfireball.net/2013/10/this_weeks_ipad_event</guid></item><item><title>Instapaper for iPad Receives a Facelift</title><link>https://zacs.site/blog/instapaper-facelift.html</link><description>&lt;p&gt;This completely blindsided me. I had the lack of foresight to uninstall the betas after Instapaper 5 hit the market, so I had no idea a revamped iPad app was in the works until coming across the announcement in my Twitter feed late yesterday evening. Thanks iOS 7&amp;#8217;s automatic update feature, I got to experience Betaworks&amp;#8217; latest revision firsthand as soon as I opened the app; and as I said &lt;a href="https://twitter.com/zacjszewczyk/statuses/398276792198238209"&gt;on Twitter&lt;/a&gt;, I really like the new design. The folks over at Betaworks also implemented the much-acclaimed sorting and filtering abilities Instapaper 5 for iPhone shipped with three months ago, along with some other, more minor tweaks and updates. For a full list, head on over to the blog post: &lt;a href="http://blog.instapaper.com/post/66190518154"&gt;&lt;em&gt;Redesigned Instapaper for iPad&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/instapaper-facelift.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 07 Nov 2013 14:56:01 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/instapaper-facelift.html</guid></item><item><title>Harry Marks Interviews Matt Alexander</title><link>https://zacs.site/blog/harry-marks-interviews-matt-alexander.html</link><description>&lt;p&gt;When I started writing &lt;a href="https://zacs.site/blog/harry-marks-interviews-matt-alexander-on-need.html"&gt;&lt;em&gt;Need, Fashion, and Matt Alexander&lt;/em&gt;&lt;/a&gt; I began with the title &amp;#8220;Harry Marks Interviews Matt Alexander on Need&amp;#8221;. Those curious can look to the post&amp;#8217;s URL for confirmation, which still reads as described despite the fact that I changed its title. I set out with such a headline intending to make a short congratulatory post linking to Harry Marks&amp;#8217; article &lt;a href="http://www.curiousrat.com/interview-with-needs-matt-alexander"&gt;&lt;em&gt;Interview with Matt Alexander of Need&lt;/em&gt;&lt;/a&gt;&lt;em&gt;;&lt;/em&gt; however, ambition got the better of me and I ended up writing something I feel quite proud of as one of my better think pieces in a while. Those original motifs I pushed to the wayside still clamored for attention though, attention that I will grant them in this follow-up piece.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/harry-marks-interviews-matt-alexander.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 07 Nov 2013 14:36:58 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/harry-marks-interviews-matt-alexander.html</guid></item><item><title>Load a Github Gist with Composer</title><link>https://donatstudios.com/Load-Gist-With-Composer</link><description>&lt;p&gt;Composer is amazing for pulling in packages, but what if you find a Gist that isn't Composer aware? Fear not, as Composer has the magical ability to pull in repositories not explicitly set up in Packagist by defining them in the &amp;quot;repositories&amp;quot; section. &lt;/p&gt;
&lt;p&gt;But what if you wanted to load a single class from a git gist? &lt;/p&gt;
&lt;p&gt;You can add the following &lt;code&gt;repositories&lt;/code&gt; section to your &lt;code&gt;composer.json&lt;/code&gt; file, adjusting &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;url&lt;/code&gt; as necessary. The &lt;code&gt;name&lt;/code&gt; should be a &lt;code&gt;vendor/package&lt;/code&gt; (all lower) style name you make up for it, and &lt;code&gt;url&lt;/code&gt; will be from the &lt;em&gt;Clone this gist&lt;/em&gt; box on GitHub. &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;"repositories": [
    {
        "type":"package",
        "package": {
            "name": "turin86/wssoapclient",
            "version": "master",
            "source": {
                "url": "https://gist.github.com/5569152.git",
                "type": "git",
                "reference":"master"
            },
            "autoload": {
                "classmap": ["."]
            }
        }
    }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then in your require section, add your selected &lt;code&gt;name&lt;/code&gt; as follows.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;"require": {
    "turin86/wssoapclient": "dev-master"
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If the name of the class doesn't match the filename in a friendly autoload-able manner, you'll have to replace &lt;code&gt;"classmap": ["."]&lt;/code&gt; with &lt;code&gt;"files": ["ClassToAutoload.php"]&lt;/code&gt; replacing &lt;code&gt;ClassToAutoload.php&lt;/code&gt; with the filename. More info on autoloading can be found &lt;a href="https://getcomposer.org/doc/04-schema.md#autoload"&gt;here&lt;/a&gt;. Note that if you are experimenting with autoload settings you may need to remove your vendor directory and &lt;code&gt;composer install&lt;/code&gt;, as updates to the autoload were not reflected for me after a &lt;code&gt;composer update&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;After this, just run &lt;code&gt;composer update&lt;/code&gt; and voilà, you are loading a gist with Composer.&lt;/p&gt;</description><author>Donat Studios</author><pubDate>Thu, 07 Nov 2013 04:36:45 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/Load-Gist-With-Composer</guid></item><item><title>Diagnosing buffer busy waits with the ash_wait_chains.sql script (v0.2)</title><link>https://tanelpoder.com/2013/11/06/diagnosing-buffer-busy-waits-with-the-ash_wait_chains-sql-script-v0-2/</link><description>&lt;p&gt;In my previous post ( &lt;a href="https://tanelpoder.com/2013/09/11/advanced-oracle-troubleshooting-guide-part-11-complex-wait-chain-signature-analysis-with-ash_wait_chains-sql/" target="_blank"&gt;Advanced Oracle Troubleshooting Guide – Part 11: Complex Wait Chain Signature Analysis with ash_wait_chains.sql&lt;/a&gt; ) I introduced an experimental script for analysing performance from “top ASH wait chains” perspective. The early version (0.1) of the script didn’t have the ability to select a specific user (session), SQL or module/action performance data for analysis. I just hadn’t figured out how to write the SQL for this (as the blocking sessions could come from any user). So it turns out it was just matter of using “START WITH ” in the connect by loop. Now the paramter 2 of this script (whose activty to measure) actually works.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Thu, 07 Nov 2013 03:54:01 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/11/06/diagnosing-buffer-busy-waits-with-the-ash_wait_chains-sql-script-v0-2/</guid></item><item><title>Comparing ExpressJS Session Stores</title><link>/posts/comparing-expressjs-session-stores/</link><description>For my next project, I was exploring the session storages for ExpressJS, and I found a question on StackOverflow, but I was frustrated with the accepted and 30 upvoted answer, which compares local in memory session store with remote session stores. The answer is very misleading, there is no chance that remote storage can beat local storage, even if the in-memory solution does O(n^9) calculations, it would be faster than going to web.</description><author>Mustafa Akın</author><pubDate>Thu, 07 Nov 2013 00:11:21 GMT</pubDate><guid isPermaLink="true">/posts/comparing-expressjs-session-stores/</guid></item><item><title>Need, Fashion, and Matt Alexander</title><link>https://zacs.site/blog/harry-marks-interviews-matt-alexander-on-need.html</link><description>&lt;p&gt;In the works for &lt;a href="http://mykehurley.net/blog/need"&gt;nearly a year&lt;/a&gt;, Matt Alexander&amp;#8217;s new startup Need addresses a fascinating deficiency of not just fashion, but any degree of concern with respect to one&amp;#8217;s physical appearance all too prevalent in today&amp;#8217;s society, especially amongst young people. At nineteen a young person myself, I speak from first-hand experience: you would not believe the things I see my peers wearing, especially on a college campus. I am not wholly exempt in this respect&amp;#160;&amp;#8212;&amp;#160;I have worn my fair share of tattered jeans and undershirts in public&amp;#160;&amp;#8212;&amp;#160;but I also have enough sense to realize my shortcomings in this area. And acceptance is the first step towards recovery, right?&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/harry-marks-interviews-matt-alexander-on-need.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 06 Nov 2013 20:56:23 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/harry-marks-interviews-matt-alexander-on-need.html</guid></item><item><title>Redefining Success</title><link>https://josh.works/growth/2013/11/06/redefining-success/</link><description>&lt;p&gt;It’s been pretty quiet around here lately. It’s been almost a month since my last entry. I thought about writing something here almost every day, but here is why I didn’t:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I want to produce “content” that is helpful and relevant to those who might read it.&lt;/strong&gt;
I felt like nothing I had done or experienced in the last few weeks, even if expertly documented, could help anyone. I have a few big projects that will be 
awesome when they are done, but that requires that 1) I finish them, and 2) they are awesome.&lt;/p&gt;

&lt;p&gt;Here’s why this is still worth reading: 
&lt;strong&gt;No one can be a failure for failing to meet a few specific goals, because failing is a necessary component of success. &lt;/strong&gt;
I have often felt like I have failed. Failures don’t have anything interesting to say, right?&lt;/p&gt;

&lt;p&gt;I had that attitude that I should pipe up only when I’ve figured out some cool way to make money on the side, or when I’ve created this really cool website. (I can’t code worth crap, by the way. “Creating a really cool website” is 
not around the corner.)&lt;/p&gt;

&lt;p&gt;I am human, but I want to create this persona that looks like me, 
but has no weaknesses and makes no mistakes.Fortunately, everyone that knows that this is not true.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Wed, 06 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/2013/11/06/redefining-success/</guid></item><item><title>A Fair Trade</title><link>http://localhost:4999/articles/2013/11/06/a-fair-trade/</link><description>&lt;p&gt;&lt;img alt="" src="https://images.evantravers.com/articles/2013/11/terebinthia.jpg" /&gt;&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;And after you have suffered a little while, the God of all grace, who has called you to his eternal glory in Christ, will himself restore, confirm, strengthen, and establish you. (1 Peter 5:10)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;O Lord. Let this verse sink into my soul and take deep root in my thinking. This is the hope to which we were called. Thank you for calling us to yourself in Christ, that we might experience your love and grace. The troubles of this present life should be regarded as nothing compared to the surpassing glories described:&lt;/p&gt;
&lt;p&gt;To be &lt;em&gt;restored&lt;/em&gt; by you. O to be remade! To have all the sin, hurt, fear burned away and reforged into a new creation. When I bewail my current state of doublemindedness, when I feel the old and new man tugging at my mind, fighting for mastery, this verse will bring me courage. Restored is defined as “bringing back a previous state, to reinstate.” I will be made whole, without a touch of the old broken self. To walk with you in the new heavens and new earth, talking with you. Come quickly Lord.&lt;/p&gt;
&lt;p&gt;To be &lt;em&gt;confirmed&lt;/em&gt;. To be taken gently by the hand, and told that we are safe. There is no guarantee here in this brief and tumultous life, but this… this is a promise to which to look forward. To be confirmed is described as to be “firmly established in a particular habit, belief, or way of life and unlikely to change.” Hallelujah.&lt;/p&gt;
&lt;p&gt;To be &lt;em&gt;strengthened&lt;/em&gt;. To never again worry and doubt, or feel victimized and terrorized by sin within and without. To be buoyed up by the power and strength of our Savior, never to falter or fall again.&lt;/p&gt;
&lt;p&gt;To be &lt;em&gt;established&lt;/em&gt;. I love this one. To be established is to be “set up in a firm or permanent basis.” We are going to be in your glory for all eternity… what more firm or permanent basis can I ask for? Life may change, friends come and go, positions and jobs fall out from under my feet but my soul is established in you, now and forever.&lt;/p&gt;
&lt;p&gt;I will take this trade, Lord. I will exchange the suffering for a short while for a permament, established, strengthened, perfect existence with you. Whisper this promise in my ear as I'm tempted to despair today. Allow me to live as one who has traded &lt;em&gt;everything&lt;/em&gt; for this one, precious pearl, and not as one grasping for grip on a house made of sand. I pray this for myself, and for the ones I love in your precious name, amen.&lt;/p&gt;
&lt;p&gt;Image: &lt;a href="http://instagram.com/p/gGohz_jrdF/"&gt;Terebithia&lt;/a&gt; by &lt;a href="http://instagram.com/evantravers"&gt;me&lt;/a&gt;&lt;/p&gt;</description><author>trv.rs</author><pubDate>Wed, 06 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/11/06/a-fair-trade/</guid></item><item><title>Diary of a Convert</title><link>https://zacs.site/blog/diary-of-a-convert.html</link><description>&lt;p&gt;Following Apple&amp;#8217;s event last week and after I ordered a top of the line 15&amp;#8220; Retina MacBook Pro, I sat down to read John Siracusa&amp;#8217;s &lt;a href="http://arstechnica.com/apple/2013/10/os-x-10-9/"&gt;famous Mavericks review&lt;/a&gt;. I started last year&amp;#8217;s &lt;a href="http://arstechnica.com/apple/2011/07/mac-os-x-10-7/"&gt;Lion review&lt;/a&gt; with good intentions, but without any incentive to finish I only read a few pages. This year though, with a shiny new Mac already on its way from China, I finally had more of a reason to persevere than simply to say that I had. Surprisingly, that gray &amp;#8221;24&amp;#8220; page marker&amp;#160;&amp;#8212;&amp;#160;for I read it on Ars just as &lt;a href="http://hypercritical.co/2013/10/22/mavericks"&gt;John suggested&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;turned up much faster than I expected it to after more than 24,000 words; unsurprisingly, &lt;a href="http://www.marco.org/2013/10/30/siracusa-mavericks"&gt;I enjoyed every minute of John&amp;#8217;s epic&lt;/a&gt;. Less than a week later, I received a FedEx email whose subject line told me everything I needed to know: &amp;#8221;FedEx shipment delivered".&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/diary-of-a-convert.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 05 Nov 2013 21:07:26 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/diary-of-a-convert.html</guid></item><item><title>End of an Era</title><link>https://98.codes/end-of-an-era/</link><description>&lt;!--kg-card-begin: markdown--&gt;&lt;h4 id="greg10"&gt;Greg 1.0&lt;/h4&gt;
&lt;p&gt;Born in the Bronx. Grew up in upper middle class suburban New Jersey. College at Virginia Tech: went in a Computer Science major, came out with a B.A. in Interdisciplinary Studies. College summers working at Walt Disney World, first at &lt;a href="https://disneyworld.disney.go.com/dining/magic-kingdom/cosmic-ray-starlight-cafe/?ref=98.codes"&gt;Cosmic Ray&amp;apos;s Starlight Cafe&lt;/a&gt;&lt;/p&gt;</description><author>Text(Greg);</author><pubDate>Tue, 05 Nov 2013 18:43:26 GMT</pubDate><guid isPermaLink="true">https://98.codes/end-of-an-era/</guid></item><item><title>Pushing Puppet at Puppet Camp DC, LISA 2013</title><link>https://purpleidea.com/blog/2013/11/05/pushing-puppet-at-puppet-camp-dc-lisa-2013/</link><description>&lt;p&gt;Hi there,&lt;/p&gt;
&lt;p&gt;I hope you enjoyed my &amp;ldquo;&lt;strong&gt;Pushing Puppet&lt;/strong&gt; (to its limit)&amp;rdquo; talk and demos from &lt;a href="https://puppetcampdc2013.eventbrite.com/"&gt;Puppet Camp D.C., LISA 2013&lt;/a&gt;. As requested, I&amp;rsquo;ve posted the code and slides.&lt;/p&gt;
&lt;p&gt;Here is the code:
&lt;a href="https://github.com/purpleidea/puppet-pushing"&gt;&lt;a href="https://github.com/purpleidea/puppet-pushing"&gt;https://github.com/purpleidea/puppet-pushing&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This module will require three modules as dependencies. The dependencies are:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;span style="text-decoration: underline;"&gt;My Puppet-Common module&lt;/span&gt;
&lt;a href="https://github.com/purpleidea/puppet-common"&gt;https://github.com/purpleidea/puppet-common&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span style="text-decoration: underline;"&gt;My Puppet-Runonce module&lt;/span&gt;
&lt;a href="https://github.com/purpleidea/puppet-runonce"&gt;https://github.com/purpleidea/puppet-runonce&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;My Puppet-FSM module
&lt;a href="https://github.com/purpleidea/puppet-fsm"&gt;https://github.com/purpleidea/puppet-fsm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Each example doesn't require all the dependencies, so if you're only interested in the &lt;a href="https://en.wikipedia.org/wiki/Finite-state_machine"&gt;FSM&lt;/a&gt;, you only need that module.
&lt;p&gt;Here are the slides:
&lt;a href="https://github.com/purpleidea/puppet-pushing/blob/master/talks/pushing-puppet.pdf"&gt;&lt;a href="https://github.com/purpleidea/puppet-pushing/blob/master/talks/pushing-puppet.pdf"&gt;https://github.com/purpleidea/puppet-pushing/blob/master/talks/pushing-puppet.pdf&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 05 Nov 2013 17:00:19 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/11/05/pushing-puppet-at-puppet-camp-dc-lisa-2013/</guid></item><item><title>Gluster Community Day, LISA 2013, Monday</title><link>https://purpleidea.com/blog/2013/11/05/gluster-community-day-lisa-2013-monday/</link><description>&lt;p&gt;I&amp;rsquo;m here at LISA 2013 at the &lt;a href="http://glusterday-lisa.eventbrite.com/"&gt;Gluster Community Day&lt;/a&gt;. I&amp;rsquo;ve been asked by &lt;a href="https://twitter.com/jzb"&gt;Joe Brockmeier&lt;/a&gt; to give a little recap about what&amp;rsquo;s been going on. So here it is!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/wphotos"&gt;Wesley Duffee-Braun&lt;/a&gt; started off with a nice overview talk about &lt;a href="http://www.gluster.org/"&gt;GlusterFS&lt;/a&gt;. The great thing about his talk was that he gave a live demo, running on virtual machines, on his laptop. If you&amp;rsquo;re a new GlusterFS user, this is good exposure to help you get started. He also has the nicest slides I&amp;rsquo;ve ever seen. Someone needs to send me the .&lt;em&gt;odp&lt;/em&gt; template!&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 05 Nov 2013 03:30:05 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/11/05/gluster-community-day-lisa-2013-monday/</guid></item><item><title>Javascript Allongé: a review</title><link>https://danielpecos.com/2013/11/04/javascript-allonge-review/</link><description>&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/B00FLKRCVO/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B00FLKRCVO&amp;amp;linkCode=as2&amp;amp;tag=geekware-20&amp;amp;linkId=ZPIPTVEH3LP5UJCO"&gt;&lt;img alt="javascript_allonge" class=" alignleft" height="233" src="https://danielpecos.com/assets/2013/11/javascript_allonge.jpg" width="181" /&gt;&lt;/a&gt;&lt;a href="https://leanpub.com/javascript-allonge?a=3ErUYtQxnDzhImL2jSakU-"&gt;&lt;strong&gt;Javascript Allongé&lt;/strong&gt;&lt;/a&gt;&lt;a href="https://twitter.com/raganwald"&gt;@raganwald&lt;/a&gt; is one of the more refreshing coding books I have read in a big while. Usually when I face a programming language book, I skip the beginner chapters (if I already know the language, of course) and go directly for the juicy ones, but with this one I tried to follow it from end to end because I read some comments on twitter telling that the way basics are explained, become a really solid base for the language, so I gave it a chance.&lt;/p&gt;
&lt;p&gt;And they were right! This book is not the usual &lt;em&gt;Learn the language in 24 hours&lt;/em&gt; or something like that. It&amp;rsquo;s actually a very sharp and deep reading about Javascript and function composition.&lt;/p&gt;
&lt;p&gt;The way the author explains how to create really simple functions and use them to build more complex ones just blowed my mind. The resulting code is so clear and easy follow that is almost impossible to imagine a better way to express that functionality.&lt;/p&gt;
&lt;p&gt;This book is a total recommendation if you deal with Javascript in your day-to-day. I bought a digital copy in &lt;a href="https://leanpub.com/javascript-allonge"&gt;Leanpub&lt;/a&gt;, but recently the author &lt;a href="http://braythwayt.com/2013/10/01/javascript-allonge-is-free.html"&gt;made it opensource&lt;/a&gt;, so you&amp;rsquo;re free to get a copy of it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Buy it: &lt;a href="https://leanpub.com/javascript-allonge?a=3ErUYtQxnDzhImL2jSakU-"&gt;https://leanpub.com/javascript-allonge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Buy it (Kindle): &lt;a href="http://www.amazon.com/gp/product/B00FLKRCVO/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B00FLKRCVO&amp;amp;linkCode=as2&amp;amp;tag=geekware-20&amp;amp;linkId=ZPIPTVEH3LP5UJCO"&gt;Amazon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Read it online: &lt;a href="https://leanpub.com/javascript-allonge/read"&gt;https://leanpub.com/javascript-allonge/read&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Get the sources: &lt;a href="https://github.com/raganwald/javascript-allonge"&gt;https://github.com/raganwald/javascript-allonge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>GeekWare - Daniel Pecos Martínez</author><pubDate>Mon, 04 Nov 2013 17:02:50 GMT</pubDate><guid isPermaLink="true">https://danielpecos.com/2013/11/04/javascript-allonge-review/</guid></item><item><title>Some python idioms</title><link>https://xenodium.com/some-python-idioms</link><description>&lt;ul&gt;
&lt;li&gt;Prefer double quotes if escaping single quotes.&lt;/li&gt;
&lt;li&gt;Prefer string interpolation over join. Eg. &amp;quot;'%s'&amp;quot; % member_default.&lt;/li&gt;
&lt;li&gt;Prefer double underscore for privates.&lt;/li&gt;
&lt;li&gt;Prefer with statement to implicitly close file.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;with open(path, 'r') as text_file:
    text = text_file.read()
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Prefer list comprehensions to filter.&lt;/li&gt;
&lt;li&gt;Prefer using separate modules over classes if only using for separation.&lt;/li&gt;
&lt;li&gt;Keep in mind: &amp;quot;eafp vs lbyl&amp;quot; (ie. just let it throw).&lt;/li&gt;
&lt;li&gt;Prefer exceptions over assertions.&lt;/li&gt;
&lt;li&gt;Throw ValueError for wrong input.&lt;/li&gt;
&lt;li&gt;Return explicit False if remaining case is always false.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[^1]: Been using powder milk since lockdown, end-result's been tasty.&lt;/p&gt;
&lt;p&gt;[^2]: The app's been fairly stable, but who knows… please backup your org file before feeding it to the lion.&lt;/p&gt;
&lt;p&gt;[^3]: The app's been fairly stable, but who knows… please backup your org file before feeding it to the lion.&lt;/p&gt;
&lt;p&gt;[^4]: The app's been fairly stable, but who knows… please backup your org file before feeding it to the lion.&lt;/p&gt;
&lt;p&gt;[^5]: Yes, this post was written in &lt;a href="https://orgmode.org/"&gt;org mode&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;[^6]: Been using powder milk since lockdown, end-result's been tasty.&lt;/p&gt;
&lt;p&gt;[^7]: Only tried raw honey so far.&lt;/p&gt;
&lt;p&gt;[^8]: Can likely use ground cardamom. I enjoy the scents while crushing.&lt;/p&gt;</description><author>xenodium.com @alvaro</author><pubDate>Mon, 04 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://xenodium.com/some-python-idioms</guid></item><item><title>The Lean Startup</title><link>https://june.kim/lean-startup/</link><author>june.kim</author><pubDate>Mon, 04 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://june.kim/lean-startup/</guid></item><item><title>Speaking at LISA 2013 about Puppet and GlusterFS</title><link>https://purpleidea.com/blog/2013/11/03/speaking-at-lisa-2013-about-puppet-and-glusterfs/</link><description>&lt;p&gt;I&amp;rsquo;m speaking at &lt;a href="https://www.usenix.org/conference/lisa13"&gt;LISA 2013&lt;/a&gt;, the &amp;ldquo;Large Installation System Administration&amp;rdquo; conference. This conference runs all week in &lt;a href="https://en.wikipedia.org/wiki/Washington,_DC"&gt;Washington&lt;/a&gt;. I&amp;rsquo;ll be giving two talks during the week, and attending at least one BOF.&lt;/p&gt;
&lt;p&gt;My first talk is on Monday during the &lt;a href="https://www.usenix.org/conference/lisa13/gluster-community-day"&gt;Gluster Community Day&lt;/a&gt;. I&amp;rsquo;ll be speaking about &lt;a href="https://github.com/purpleidea/puppet-gluster/" title="puppet-gluster"&gt;puppet-gluster&lt;/a&gt;, and giving a live demo. I&amp;rsquo;ll be showing some new features too. If you&amp;rsquo;d like to talk more about puppet-gluster, or want to attend the talk, give me a shout, or sign up at the above &lt;em&gt;Gluster Community Day&lt;/em&gt; link.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sun, 03 Nov 2013 21:40:08 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/11/03/speaking-at-lisa-2013-about-puppet-and-glusterfs/</guid></item><item><title>Tiny Tiny RSS on CentOS with nginx and MYSQL</title><link>https://www.zufallsheld.de/2013/11/03/tiny-tiny-rss-centos-nginx-mysql/</link><description>&lt;p&gt;Today I want to present my Tiny Tiny &lt;span class="caps"&gt;RSS&lt;/span&gt;-installation, running on my own &lt;span class="caps"&gt;VPS&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="tinytinyrss-logo" src="https://www.zufallsheld.de/images/tinytinyrss-logo.png" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://tt-rss.org"&gt;tt-rss&lt;/a&gt; is &amp;#8220;an &lt;a href="http://en.wikipedia.org/wiki/Open_source" title="Open source"&gt;open source&lt;/a&gt; web-based news feed (&lt;span class="caps"&gt;RSS&lt;/span&gt;/Atom)
reader and aggregator, designed to allow you to read news from any
location, while feeling as close to a real desktop application as&amp;nbsp;possible.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;

&lt;h2 id="preface"&gt;Preface …&lt;/h2&gt;</description><author>zufallsheld</author><pubDate>Sun, 03 Nov 2013 18:34:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/11/03/tiny-tiny-rss-centos-nginx-mysql/</guid></item><item><title>JS Error using X-Editable?</title><link>https://www.mattcrampton.com/blog/js_error_using_x-editable/</link><description>JS Error using X-Editable If you're trying to use X-Editable and getting a JS error similar to this... TypeError: $.fn.popover.defaults is undefined It may be because you're using Bootstrap 3 and using their CDN urls for including their JS and CSS. Their CDN currently only hosts their Bootstrap 2 code. To use it with Bootstrap 3, you need to download their repository and host it locally.</description><author>MattCrampton.com</author><pubDate>Sun, 03 Nov 2013 07:00:00 GMT</pubDate><guid isPermaLink="true">https://www.mattcrampton.com/blog/js_error_using_x-editable/</guid></item><item><title>Nucleotide Repetition Lengths</title><link>https://johnj.com/posts/nucleotide-repetition-lengths/</link><description>&lt;p&gt;
After a long hiatus, let’s continue &lt;a href="https://johnj.com/posts/exploratory-genomics-with-clojure"&gt;our foray into amateur genomics
with Clojure&lt;/a&gt;, in which we continue to encounter elegant expressions of
Clojure’s power as well as a few additional wrinkles in the Clojure
ecosystem (in this case, Incanter).&lt;/p&gt;
&lt;p&gt;
In &lt;a href="https://johnj.com/posts/updating-the-genome-decoder-resulting-consequences"&gt;our last post&lt;/a&gt; we upgraded our genome decoder and used it to show
frequencies of the four nucleotides, illustrating &lt;a href="http://en.wikipedia.org/wiki/Chargaff's_rules"&gt;Chargaff’s Rule&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
Another simple question to be asked of the data is, What is the
distribution of nucleotide repetition lengths? In other words, if we
represent the number of times any nucleotide is repeated as a
histogram, then &lt;code class="verbatim"&gt;AAGGCATTTT&lt;/code&gt; would yield two entries for 1, two entries
for 2, zero for 3, and one for 4. What does this distribution look
like for the entire human or yeast genome?&lt;/p&gt;
&lt;p&gt;
As a “null hypothesis”, consider the likelihood of getting $N$ A’s
when drawing at random from A, G, C or T. The probability for the
first selection to be A is 25%; for the first two draws to be AA the
probability is $P(AA) = {1 \over {4^2}} = 0.625$, and for $N$
consecutive draws, $P(A \times N) = 4^{-N}$.&lt;/p&gt;
&lt;p&gt;
You can easily simulate (“&lt;a href="http://en.wikipedia.org/wiki/Monte_Carlo_method"&gt;Monto Carlo&lt;/a&gt;”) such a situation using a
purely random sequence:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn randgenome []
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (repeatedly #(rand-nth [:A :G :C :T])))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
This function yields a sequence like &lt;code class="verbatim"&gt;(:A :A :C :A :T :G :G :T :G :A :C :C ...)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;
To convert this into repetition lengths, we can first divide the
sequence up into repeating elements using &lt;code class="verbatim"&gt;partition-by&lt;/code&gt; and the
&lt;code class="verbatim"&gt;identity&lt;/code&gt; function:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(partition-by identity (randgenome))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;;=&amp;gt; ((:A :A) (:C) (:A) (:T) (:G :G) (:T) (:G) (:A) (:C :C) ...)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Extracting the lengths is then trivial: just map &lt;code class="verbatim"&gt;count&lt;/code&gt; over the
sequences:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn get-lengths [s]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (-&amp;gt;&amp;gt; s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (partition-by identity)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (map count)))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(get-lengths (randgenome))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;;=&amp;gt; (2 1 1 1 2 1 1 1 2 ...)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
(Note: running these functions unmodified will hang your REPL, since
&lt;code class="verbatim"&gt;randgenome&lt;/code&gt; yields an infinite sequence! Wrap them with &lt;code class="verbatim"&gt;take&lt;/code&gt; if
needed.)&lt;/p&gt;
&lt;div class="outline-3" id="outline-container-headline-1"&gt;
&lt;h3 id="headline-1"&gt;
Histogramming the data
&lt;/h3&gt;
&lt;div class="outline-text-3" id="outline-text-headline-1"&gt;
&lt;p&gt;
The plots in my previous posts were made by the &lt;del&gt;simple&lt;/del&gt; easy
expedient of copying data into a Numbers spreadsheet on my Mac. We’d
like to eventually do some more ambitious plotting, however, so let’s
investigate a Clojure-based solution.&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://incanter.org/"&gt;Incanter&lt;/a&gt; provides a broad set of Clojure-based utilities for data
analysis, including matrices and linear algebra operations,
statistical distributions, and so on. Built on top of &lt;a href="http://www.jfree.org/jfreechart/"&gt;JFreeChart&lt;/a&gt;, it
implements several different kinds of plots, including histograms, and
it should be an obvious candidate for displaying our length
distribution histogram.&lt;/p&gt;
&lt;p&gt;
Unfortunately, because of &lt;a href="https://github.com/liebke/incanter/issues/210"&gt;two&lt;/a&gt; &lt;a href="https://github.com/liebke/incanter/issues/211"&gt;issues&lt;/a&gt; I discovered, Incanter will not
work for our purposes. To make a long story short, it &lt;a href="https://github.com/liebke/incanter/issues/210"&gt;does not handle
empty (zero) entries&lt;/a&gt; in histograms properly when displaying on a
logarithmic scale, and it &lt;a href="https://github.com/liebke/incanter/issues/211"&gt;generates out-of-memory errors&lt;/a&gt; when given
more than a million or so entries. (Coming from high energy physics,
where such histograms are extremely common, these both seem like
serious flaws to me, which I hope will be remedied in the next
Incanter release.)&lt;/p&gt;
&lt;p&gt;
I wound up using the &lt;a href="http://www.jfree.org/jfreechart/api/javadoc/index.html"&gt;JFreeChart API&lt;/a&gt; directly, though this was very
time consuming, as the API has approximately the same complexity as
the entire US space program or the Large Hadron Collider. (In what
follows below I elide details about false starts, descriptions of hair
pulling, and expletives.)&lt;/p&gt;
&lt;p&gt;
First, I needed to convert the lengths from &lt;code class="verbatim"&gt;get-lengths&lt;/code&gt; into a
histogram with arbitrarily many entries:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn make-hist
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Convert seq of input xs into a histogram of nbins bins, from xmin to
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  xmax.  Discard overflows or underflows
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [xmin xmax nbins xs]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (let [;; "base" histogram (zeros):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        zero-map (into (sorted-map)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                       (map (fn [x] [x 0]) (range nbins)))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        ;; get actual bin values for every input in xs:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        xbins (map #(int (* nbins (/ (- % xmin)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                     (- xmax xmin))))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                   xs)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        ;; strip out undeflows &amp;amp; overflows:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        no-overflows (-&amp;gt;&amp;gt; xbins
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                          (remove #(&amp;lt; % 0))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                          (remove #(&amp;gt;= % nbins)))]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    ;; yield histogram as array of [ibin, height] pairs:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (into [] (reduce #(update-in %1 [%2] inc) zero-map no-overflows))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Supplying the minimum and maximum value ahead of time simplifies the
histogramming code substantially and allows us to choose the same
range for multiple plots, as will be shown below.&lt;/p&gt;
&lt;p&gt;
Armed with this transformation, the generation of the histogram plot
is as follows:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(ns jenome.graphs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (:import [org.jfree.data.xy XYSeriesCollection XYSeries]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;           [org.jfree.chart ChartFrame JFreeChart]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;           [org.jfree.chart.plot XYPlot]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;           [org.jfree.chart.axis NumberAxis]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;           [org.jfree.chart.renderer.xy XYBarRenderer StandardXYBarPainter]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;           [org.jfree.chart.renderer.category]))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn trim-zeros 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Convert zeros (or negatives) to small positive values to allow for
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  graphing on log scale
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [vals]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (map (fn [[x y]] [x (if (&amp;gt; y 0) y 0.0001)]) vals))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn draw-hist
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Draw histogram of bins as generated by make-hist
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [x-label values]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (let [renderer (XYBarRenderer.)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        painter (StandardXYBarPainter.)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        series (XYSeries. [])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        blue (java.awt.Color. 0x3b 0x6c 0x9d)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        coll (XYSeriesCollection. series)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        y-axis (org.jfree.chart.axis.LogarithmicAxis. "Entries")
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        plot (XYPlot. coll (NumberAxis. x-label) y-axis renderer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        panel (JFreeChart. plot)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        frame (ChartFrame. "Histogram" panel)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (doto plot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setBackgroundAlpha 0.0)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setRangeGridlinesVisible false)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setDomainGridlinesVisible false))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (doto renderer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setBarPainter painter)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setPaint blue)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setDrawBarOutline true)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setOutlinePaint blue)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setOutlineStroke (java.awt.BasicStroke. 1))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setShadowVisible false))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (doseq [[x y] values]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.add series (+ x 0.5) y))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (.setLowerBound y-axis 0.5)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (.setVisible (.getLegend panel) false)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (doto frame
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setSize 800 250)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.setVisible true))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
I will omit a detailed explanation of how &lt;code class="verbatim"&gt;draw-hist&lt;/code&gt; works because I’m
still not a JFreeChart expert (though if I do many more blog posts on
this topic I may be forced to become one, however reluctantly). The
principal difference with the Incanter implementation of histograms is
that we provide our own set of bin heights and simply plot those. This
follows a better separation of concerns anyways: our fairly simple
binning function remains separate from the visual presentation of the
bin positions and heights (we could, for example, add the counting of
overflows and underflows – this is left as an exercise to the reader).&lt;/p&gt;
&lt;p&gt;
(&lt;code class="verbatim"&gt;trim-zeros&lt;/code&gt; exists to transform bin values of zero to small positive
numbers to avoid taking the logarithm of zero, which is undefined.)&lt;/p&gt;
&lt;p&gt;
Armed with these tools, we can now make our first distribution:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(-&amp;gt;&amp;gt; (randgenome)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (take 1000000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     get-lengths
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (make-hist 0.5 60.5 60)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     trim-zeros
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (draw-hist "Repeat Lengths, random hypothesis"))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;figure&gt;





&lt;a href="https://johnj.com/random-repeat-lengths.png"&gt;&lt;img class="resize" src="https://johnj.com/random-repeat-lengths_hu_881e08ea0182744b.png" style="width: 700px; border: 0px solid black;" /&gt;&lt;/a&gt;


&lt;figcaption&gt;
Nucleotide repetition lengths for the random hypothesis
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
As expected by our analysis above, this shows the falling “&lt;a href="http://en.wikipedia.org/wiki/Power_law"&gt;power-law&lt;/a&gt;”
distribution of randomly-occuring nucleotide repetitions. Compare this
with the genome for the yeast &lt;em&gt;S. Cerviciae&lt;/em&gt;:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(-&amp;gt;&amp;gt; (genome-sequence yeast)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     get-lengths
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (make-hist 0.5 60.5 60)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     trim-zeros
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (draw-hist "Repeat Lengths, S. Cerviciae"))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;figure&gt;





&lt;a href="https://johnj.com/yeast-repeat-lengths.png"&gt;&lt;img class="resize" src="https://johnj.com/yeast-repeat-lengths_hu_bd0821e6f373b4ee.png" style="width: 700px; border: 0px solid black;" /&gt;&lt;/a&gt;


&lt;figcaption&gt;
Nucleotide repetition lengths for the yeast S. Cerviciae
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
And, for humans (here we did not wait for the result for the entire genome):&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(-&amp;gt;&amp;gt; (genome-sequence human)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (take 10000000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     get-lengths
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (make-hist 0.5 60.5 60)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     trim-zeros
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (draw-hist "Repeat Lengths, human genome"))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;figure&gt;





&lt;a href="https://johnj.com/human-repeat-lengths.png"&gt;&lt;img class="resize" src="https://johnj.com/human-repeat-lengths_hu_23fe744369465141.png" style="width: 700px; border: 0px solid black;" /&gt;&lt;/a&gt;


&lt;figcaption&gt;
Nucleotide repetition lengths for humans
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
The actual genome data clearly deviate from our null hypothesis of
randomness, as one might expect. However, these graphs raise more
questions than they answer. In particular, note that there is a sort
of bimodal characteristic or extended, secondary bump in the data for
humans, with hints of an outlier feature on the tail which may or may
not just be a statistical fluctuation.&lt;/p&gt;
&lt;p&gt;
One complicating factor we neglected is the role of “N-blocks”, which
should be eliminated without introducing artificially longer lengths;
e.g. &lt;code class="verbatim"&gt;ANNNNA&lt;/code&gt; with the Ns removed should be considered two 1-blocks
rather than a two-block &lt;code class="verbatim"&gt;AA&lt;/code&gt; group. This simple modification to
&lt;code class="verbatim"&gt;get-lengths&lt;/code&gt; is left as another exercise to the reader (the change does
not affect the resulting distributions).&lt;/p&gt;
&lt;p&gt;
A real biologist could no doubt tell us a lot about these
distributions. Meanwhile, &lt;a href="https://github.com/eigenhombre/jenome"&gt;the latest code&lt;/a&gt; has been pushed to GitHub.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>John Jacobsen</author><pubDate>Sun, 03 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/nucleotide-repetition-lengths/</guid></item><item><title>Load balance and high availability patterns using Wishbone</title><link>https://smetj.net/loadbalance-and-ha-patterns-using-wishbone.html</link><description>&lt;p&gt;In this article I would like to explore the possibilities of creating a TCP
based event proxy which balances events to one or more TCP backends.  For this
we will run through a couple of scenarios in which we highlight different
approaches.&lt;/p&gt;
&lt;div class="section" id="installation"&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;For the below mentioned scenarios we need …&lt;/p&gt;&lt;/div&gt;</description><author>Jelle Smet</author><pubDate>Sat, 02 Nov 2013 23:48:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/loadbalance-and-ha-patterns-using-wishbone.html</guid></item><item><title>'City of Ashes' Back in Development</title><link>http://www.filmschoolrejects.com/news/city-of-ashes-back-in-development.php</link><description>&lt;p&gt;I hesitate to pass judgement just yet, but after the first I can&amp;#8217;t say I&amp;#8217;m all too hopeful for a sequel. Taking a more adult approach in production will certainly help, but then again the first film didn&amp;#8217;t exactly set a high bar.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.filmschoolrejects.com/news/city-of-ashes-back-in-development.php"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 02 Nov 2013 16:18:17 GMT</pubDate><guid isPermaLink="true">http://www.filmschoolrejects.com/news/city-of-ashes-back-in-development.php</guid></item><item><title>WeeHouse</title><link>http://cabinporn.com/post/65233607726</link><description>&lt;p&gt;I could certainly spend a winter here in Minnesota, bitterly cold or not.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/65233607726"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 02 Nov 2013 10:44:52 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/65233607726</guid></item><item><title>Captain Phillips</title><link>https://olshansky.info/movie/captain_phillips/</link><description>Olshansky's review of Captain Phillips</description><author>🦉 olshansky 🦁</author><pubDate>Sat, 02 Nov 2013 05:34:44 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/captain_phillips/</guid></item><item><title>Mental travels</title><link>http://dimitarsimeonov.com/2013/11/02/mental-travels</link><description>&lt;p&gt;I haven’t been to too many countries, but I’ve been to a few. I love
exploring new places as I never know what I will discover, and how
will I feel then.  Every new place brings up a completely new kind of
advertures. My life is more interesting when I can see historical
landmarks such as Chichen Itsa or the Acropolis, or speak to strangers
in San Diego or to enjoy a glass of wine on a university square in
Rome. My life is also richer when I get home and can bring the new
perspective to many previously mundane aspects of my life.&lt;/p&gt;

&lt;p&gt;I have perceived reality in different ways once in USA as a resident,
once in Italy as a tourist, once in Bulgaria as a resident, once in
Bulgaria as a tourist. These are different projections of the reality
based on my perspective of perception in the world - both geographical
and cultural. Reality is a big fat multidimensional beast and we only
get to see small parts of it at a time.  If it were an elephant,
depending on which side of it you have access to you might deduce that
it is soft and round (hobot), soft and flat (ear) or hard and round
(tusk). And there are always new and surprising aspects and parts of
it.&lt;/p&gt;

&lt;p&gt;To me hacking on software projects feels similar to traveling to a
territory I’ve never seen before, and exposes me to a new perspective
on the ways we process information. Sometimes it is about dealing with
a tool that is well standardized and documented and which has plenty
of tutorials. In such case there are many opportunities to build
something interesting, but it is still up to me to make it
fun. Sometimes I’d venture into an area that is not very well
explored, or maybe it is not well documented, or maybe is a completely
new technology that hasn’t had the time to mature. These are usually
really exciting projects as they bring in a lot of uncertainty. Trying
to do something that I don’t know whether it is feasible or not, feels
to me like an adventure. With both young and mature technologies, I am
having a great time because it feels almost like a game, and I might
even be learning something useful.&lt;/p&gt;

&lt;p&gt;To me, travel for the mind is as exciting as the physical travel. And
it is way more affordable in terms of time and often in terms of money
as well. I am lucky that as a software engineer my job often makes me
travel to a new mind destinations.&lt;/p&gt;</description><author>D13V</author><pubDate>Sat, 02 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://dimitarsimeonov.com/2013/11/02/mental-travels</guid></item><item><title>2013-11-02</title><link>https://ho.dges.online/pictures/2013-11-02/</link><description>&lt;p&gt;&lt;strong&gt;Negative Lightning&lt;/strong&gt;&lt;br /&gt;
My first real success with long-exposure photography. I&amp;rsquo;d seen this tree from the road many times driving by but didn&amp;rsquo;t get the chance to stop and photgraph it for a long time. It&amp;rsquo;s not perfect - it ended up a big darker than I wanted and the tree in the bottom right slightly spoils the effect, but this picture gave me the spur to try more long exposures.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Sat, 02 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-11-02/</guid></item><item><title>The No-Frills Guide to PGP on OS X</title><link>http://blog.untrod.com/2013/11/the-no-frills-guide-to-pgp-on-mac-os-x.html</link><description>&lt;p&gt;Want to get started using PGP on your Mac, but confused by the morass of
&lt;a href="http://contemporary-home-computing.org/prof-dr-style/"&gt;professor-doctor&lt;/a&gt;
style sites with seemingly out-of-date software and plugins? Have no
fear! I'll have you up and running in minutes with this handy guide.
You'll learn how to use public key servers and how to …&lt;/p&gt;</description><author>Untrod</author><pubDate>Fri, 01 Nov 2013 09:09:00 GMT</pubDate><guid isPermaLink="true">http://blog.untrod.com/2013/11/the-no-frills-guide-to-pgp-on-mac-os-x.html</guid></item><item><title>Only Push/Pull Current GIT Branch</title><link>https://thomashunter.name/posts/2013-11-01-only-pushpull-current-git-branch</link><author>Thomas Hunter II</author><pubDate>Fri, 01 Nov 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-11-01-only-pushpull-current-git-branch</guid></item><item><title>Moving on</title><link>https://www.craigpardey.com/post/2013-10-31-moving-on/</link><description>&lt;p&gt;Today is my last day at CIBC and that makes me sad. It&amp;rsquo;s been an honour and a
privilege to work with &lt;a href="http://ca.linkedin.com/pub/michael-salvagna/0/a26/a8a"&gt;Mike Salvagna&lt;/a&gt;
and his fantastic development team for the last 18 months.
Mike has assembled one of the best development teams in Toronto that, in his
words, &amp;ldquo;can build anything&amp;rdquo;. I believe he&amp;rsquo;s right.&lt;/p&gt;
&lt;p&gt;Tomorrow I start at &lt;a href="http://intelliware.com"&gt;Intelliware&lt;/a&gt; where I&amp;rsquo;ll be
leading another FX project. I&amp;rsquo;m looking forward to the challenges that this
new position will bring, but I can&amp;rsquo;t help feeling down about leaving behind
such a great team at CIBC.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Thu, 31 Oct 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-10-31-moving-on/</guid></item><item><title>Array Manipulation in PHP, The Correct Way</title><link>https://kernelcurry.com/blog/correct-array-manipulation-in-php/</link><description>&lt;p&gt;&lt;em&gt;UPDATE:&lt;/em&gt; Migrated from a &lt;a href="https://web.archive.org/web/20140718092350/http://leve.rs:80/blog/correct-array-manipulation-in-php/"&gt;post&lt;/a&gt; I wrote when working on leve.rs&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;More often than not, when PHP developers debug others’ code, the majority of each method is taken up by array manipulations. Spending this much time on array manipulations is a huge hassle when trying to understand any given method.&lt;/p&gt;
&lt;p&gt;In order to speed up the debugging process, it’s important to start writing array manipulations the correct way, first. Here are a few examples of code I have either written myself or had to fix in the past. It is time every PHP developer knows how to manipulate arrays properly!&lt;/p&gt;</description><author>KernelCurry</author><pubDate>Thu, 31 Oct 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://kernelcurry.com/blog/correct-array-manipulation-in-php/</guid></item><item><title>Introduction</title><link>https://kernelcurry.com/blog/introduction/</link><description>&lt;p&gt;&amp;ldquo;The plumber always has plumbing problems at home.&amp;rdquo; &amp;hellip; &amp;ldquo;Carpenters buy their furniture at IKEA.&amp;rdquo; &amp;hellip; &amp;ldquo;The developers never has a good website&amp;rdquo;&amp;hellip;&lt;/p&gt;
&lt;p&gt;For years I did not only &amp;ldquo;not have a good website&amp;rdquo;, but I didn&amp;rsquo;t have a website at all. finally, I decided to make something. It may not be the prettiest thing in the world, but hey&amp;hellip; at least it is a website.&lt;/p&gt;
&lt;p&gt;This site will be used as a gateway to all of my projects and discoveries over the years. I hope that these posts will educate and inspire.&lt;/p&gt;</description><author>KernelCurry</author><pubDate>Wed, 30 Oct 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://kernelcurry.com/blog/introduction/</guid></item><item><title>Mikael Cho: Founder of Ooomf</title><link>https://solomon.io/mikael-cho-founder-of-ooomf/</link><description>Mikael Cho is the founder of Ooomf, which is an online marketplace that connects awesome projects with world-class designers and developers.</description><author>Sam Solomon</author><pubDate>Wed, 30 Oct 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/mikael-cho-founder-of-ooomf/</guid></item><item><title>Take You To the Candy Box</title><link>https://xavd.id/blog/post/take-you-to-the-candy/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/take-you-to-the-candy/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Wed, 30 Oct 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/take-you-to-the-candy/</guid></item><item><title>Apple's Astounding Capital Expenditures</title><link>https://www.danstroot.com/posts/2013-10-30-apples-astounding-capital-spending</link><description>&lt;img alt="post image" src="https://danstroot.imgix.net/assets/blog/img/iSpaceship.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Apple’s most recent 10-K filing with the U.S. Securities and Exchange Commission shows the company has budgeted $11 billion in capital expenditures for fiscal 2014. This is more than 5 times Apple's capital expenditure in 2010 and 57 percent more than the $7 billion it spent in 2013. What is Apple planning to do with all that additional money?&lt;br /&gt;&lt;br /&gt;This post &lt;a href="https://www.danstroot.com/posts/2013-10-30-apples-astounding-capital-spending"&gt;Apple's Astounding Capital Expenditures&lt;/a&gt; first appeared on &lt;a href="https://www.danstroot.com"&gt;Dan Stroot's Blog&lt;/a&gt;</description><author>Dan Stroot</author><pubDate>Wed, 30 Oct 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.danstroot.com/posts/2013-10-30-apples-astounding-capital-spending</guid></item><item><title>Embedded Linux Conference Europe 2013 notes</title><link>https://anisse.astier.eu/embedded-linux-conference-europe-2013-notes.html</link><description>&lt;p&gt;So I was in Edinburgh this year, and I took notes as I usually do. These are intended for personal consumption (do no expect LWN-style reports), but as more people were asking me to share them, I thought why not do it in public ?&lt;/p&gt;
&lt;h1&gt;Embedded Linux timeline&lt;/h1&gt;
&lt;p&gt;by Chris Simmonds …&lt;/p&gt;</description><author>Linux Engineer's random thoughts</author><pubDate>Wed, 30 Oct 2013 01:00:00 GMT</pubDate><guid isPermaLink="true">https://anisse.astier.eu/embedded-linux-conference-europe-2013-notes.html</guid></item><item><title>On Hiring: Trial Week - Yay or Nay?</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/on-hiring-trial-week-yay-or-nay</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Tue, 29 Oct 2013 14:09:00 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/on-hiring-trial-week-yay-or-nay</guid></item><item><title>Ultrasonic 3D scanner fail</title><link>https://ericonotes.blogspot.com/2013/10/ultrasonic-3d-scanner-fail.html</link><description>&lt;p dir="ltr"&gt;Weeks ago I tried to make a ultrasonic radar like, but things didn't work out very well. I will post everything here soon. &lt;/p&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt; &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9UpL7iiQF36C_7ROgWF7m2zzdAAv3YmFau26Qq6uUwv_j6SglEaV1hZnkFo_arlMG9iAVUf9fAe2nda3oYOI3voX20a5sIqL46J-e092j8Q7h7dahiVHa4Zo-V6jXQMexOAtsRaVNq2xF/s1600/20130924_235628.jpg" style="margin-left: 1em; margin-right: 1em;"&gt; &lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9UpL7iiQF36C_7ROgWF7m2zzdAAv3YmFau26Qq6uUwv_j6SglEaV1hZnkFo_arlMG9iAVUf9fAe2nda3oYOI3voX20a5sIqL46J-e092j8Q7h7dahiVHa4Zo-V6jXQMexOAtsRaVNq2xF/s640/20130924_235628.jpg" /&gt; &lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt; &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-qvs3H8VUf3HxkuJ5Pqhn78HpOCqHX6Pyf7DpuoNMobIcXEDMAiBa7bJ21-ZdeBbyWjJDB-GranzB6IJmZc8ZhW8kcteZLxy94rJHF8JOPrXz9aLEA3TiSka4ZItiX5NlgIuUPIMzVabs/s1600/20130924_235642.jpg" style="margin-left: 1em; margin-right: 1em;"&gt; &lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-qvs3H8VUf3HxkuJ5Pqhn78HpOCqHX6Pyf7DpuoNMobIcXEDMAiBa7bJ21-ZdeBbyWjJDB-GranzB6IJmZc8ZhW8kcteZLxy94rJHF8JOPrXz9aLEA3TiSka4ZItiX5NlgIuUPIMzVabs/s640/20130924_235642.jpg" /&gt; &lt;/a&gt; &lt;/div&gt;</description><author>Erico Notes</author><pubDate>Mon, 28 Oct 2013 04:26:51 GMT</pubDate><guid isPermaLink="true">https://ericonotes.blogspot.com/2013/10/ultrasonic-3d-scanner-fail.html</guid></item><item><title>Remove OpenDNS from Linux Mint</title><link>https://thomashunter.name/posts/2013-10-28-remove-opendns-from-linux-mint</link><author>Thomas Hunter II</author><pubDate>Mon, 28 Oct 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-10-28-remove-opendns-from-linux-mint</guid></item><item><title>The Zombie iPad 2</title><link>https://zacs.site/blog/the-zombie-ipad-2.html</link><description>&lt;p&gt;In my last article, &lt;a href="https://zacs.site/blog/the-ipad-pro.html"&gt;&lt;em&gt;The iPad Pro&lt;/em&gt;&lt;/a&gt;, I promised to write about Apple&amp;#8217;s perpetuation of its second-generation tablet. I actually set out to discuss both the iPad 2 and a hypothetical Pro model in that piece, but long-windedness got the better of me and I had to push it off until now. Given that these points have already been made in parts elsewhere, I will keep this brief.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-zombie-ipad-2.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 27 Oct 2013 22:28:50 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-zombie-ipad-2.html</guid></item><item><title>commitease, a tool for grading the readability of git commits</title><link>https://bastian.rieck.me/blog/2013/commitease/</link><description>&lt;p&gt;I recently started learning &lt;a href="http://python.org"&gt;Python&lt;/a&gt;. As a simple
starting project, I created a tool that grades the readability of git
commit messages. I am using the &lt;a href="https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests"&gt;&amp;ldquo;Flesch reading ease score&amp;rdquo;&lt;/a&gt; to
determine how easy a commit message may be understood.&lt;/p&gt;
&lt;p&gt;For now, the script only supports walking through git repositories, using &lt;code&gt;git log&lt;/code&gt; to obtain a
pseuo-&lt;a href="http://yaml.org"&gt;YAML&lt;/a&gt; output. It should easily be possible to support more revision control
systems, but I am most familiar with &lt;code&gt;git&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;An orthogonal and equally interesting problem would be to grade the &lt;em&gt;information&lt;/em&gt; of a given commit.
A slew of commits of the form &amp;ldquo;update&amp;rdquo; are certainly less informative than commits of the form
&amp;ldquo;Fixed bug 23 by applying the Foo-bar filter to some data sets&amp;rdquo;. Maybe I will add this functionality
later on.&lt;/p&gt;
&lt;p&gt;Example usage:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ git clone http://github.com/Pseudomanifold/commitease
$ ./commitease.py 
Mean readability value for Bastian Rieck: 96.35095238095242
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See the &lt;a href="http://github.com/Pseudomanifold/commitease"&gt;git repository of &lt;code&gt;commitease&lt;/code&gt;&lt;/a&gt; for more information.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 27 Oct 2013 20:27:04 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/commitease/</guid></item><item><title>Empowering</title><link>http://dimitarsimeonov.com/2013/10/27/empowering</link><description>&lt;p&gt;I wanted to think about what the things that I value. The first
thought that came into my mind was “learning”. I really like learning
new things, whether it would be facts or techniques, or how to use a
certain tool. But why do I value learning these things. Well, because
it feels to be empowered to do things like edit code faster by knowing
and practicing emacs shortcuts or eat healthier by knowing a.little
bit aboht how different components of the food get processed by my
body. So what I really value is empowering.&lt;/p&gt;

&lt;p&gt;But why do I value empowering? For once because it correlates with
freedom, as in having the right to do something. The more freedom you
have the more empowered you are… kind of. What is the difference
between freedom and empowering. It is hard to say right up front but
an example is empowering could enable you to achieve something you
were allowed to do but couldn’t, like speaking up to a TSA officer
without getting harrased or delayed. So empowering can work in
situations where freedom is given to do something but the means of how
to do that thing were not available, or not affordable.&lt;/p&gt;

&lt;p&gt;This is empowering within freedom, but there is also empowering ouside
of freedom. Suppose that you are in a country where certain things are
forbidden by law, but you believe they are very desirable. Then you
could use technology to conspire agains the rulers and organize
citizen movement to oppose these laws.&lt;/p&gt;

&lt;p&gt;Empowering could also be much more personal. There are many cases of
home violence where for example a man would beat his wife or act in an
irresponsible way, drinking away all the money and destroying hopes
for better life. These make me incredibly sad to hear every time, and
it is not because of the pain and violence, even though they are
terrible, but because of the helplessness of the victim. They may not
have anyone to turn to for help or even if help exist it may be beyond
the reach. Empowering in this situation would be to make it easier
for the victim to escape.&lt;/p&gt;

&lt;p&gt;There is yet another face to empowering and that is empowering into
the unknown. there could be some things that dont have freedem defined
for them but suddenly become within reach. Robotics research had a
great jump in 2011 because of the Microsoft Kinect. The Kinect opened
a lot of new 3D sensing possible, affordable and easy. A lot
researchers mixed in 3D sensing to enable a whole lot of new twists to
their projects.&lt;/p&gt;

&lt;p&gt;So, yes, empowering is a value for me. For me it is a way of thinking
and judging actions. Would I like to do a certain thing? Is it fun, or
empowering in any aspect. For example, I have signed up for an Improv
class after few weeks. I am hoping it will empower me to communicate
more clearly in an instant, as opposed to waiting for my thoughts to
clear up. Watching TV? This usually doesn’t empower me. If I am
watching an interesting movie, such as “Inception” or “Gataca” then I
might be empowered to think about a parallel universe where certain
gray aspects of the current life are presented in black and white -
you could say it enables me to project my observations of the
surrounding world into a different context where it is easier to judge
them.&lt;/p&gt;</description><author>D13V</author><pubDate>Sun, 27 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://dimitarsimeonov.com/2013/10/27/empowering</guid></item><item><title>The iPhone is the holy grail for Pokmon nerds</title><link>http://www.dailydot.com/lifestyle/pokemon-pokodex-wolphram-alpha-siri-iphone/</link><description>&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Siri can get confused, of course, as every iPhone owner knows. For example, searching for the Pokmon &amp;#8216;Charmander&amp;#8217; kept autocorrecting to Mander. But this can be excused. It&amp;#8217;s a freaking Pokdex. In your pocket. Just think about how your 10-year-old self would feel about that.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Back in my day...&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.dailydot.com/lifestyle/pokemon-pokodex-wolphram-alpha-siri-iphone/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 27 Oct 2013 01:06:12 GMT</pubDate><guid isPermaLink="true">http://www.dailydot.com/lifestyle/pokemon-pokodex-wolphram-alpha-siri-iphone/</guid></item><item><title>Easier strace of scripts with pidof -x</title><link>https://purpleidea.com/blog/2013/10/26/easier-strace-of-scripts-with-pidof-x/</link><description>&lt;p&gt;Here&amp;rsquo;s a &lt;span style="text-decoration: underline;"&gt;one minute read&lt;/span&gt;, about a trick which I discovered today:&lt;/p&gt;
&lt;p&gt;When running an &lt;em&gt;strace&lt;/em&gt;, it&amp;rsquo;s common to do something like:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;strace -p&amp;lt;pid&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Smarter hackers know that they can use some bash magic and do:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;strace -p`pidof &amp;lt;process name&amp;gt;`
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, if you&amp;rsquo;re tracing a script named &lt;em&gt;foo.py&lt;/em&gt;, this won&amp;rsquo;t work because the real process is the script&amp;rsquo;s interpreter, and &lt;em&gt;pidof python&lt;/em&gt;, might return other unrelated python scripts.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;strace -p`pidof foo.py` # won't work
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;[failure]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;[user sifting through ps output for real pid]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;[computer explodes]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The trick is to use the &lt;em&gt;-x&lt;/em&gt; flag of &lt;em&gt;pidof&lt;/em&gt;. This will let you pass in your script&amp;rsquo;s name, and &lt;em&gt;pidof&lt;/em&gt; will take care of the rest:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sat, 26 Oct 2013 19:02:12 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/10/26/easier-strace-of-scripts-with-pidof-x/</guid></item><item><title>Mill Valley Cabins</title><link>http://cabinporn.com/post/64899853920</link><description>&lt;p&gt;Beautiful.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/64899853920"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 26 Oct 2013 18:35:44 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/64899853920</guid></item><item><title>The iPad Pro</title><link>https://zacs.site/blog/the-ipad-pro.html</link><description>&lt;p&gt;Shortly after Apple&amp;#8217;s keynote earlier this week, &lt;a href="https://twitter.com/apollozac/status/392726531560443904"&gt;Zac Hall made an interesting and thought-provoking quip&lt;/a&gt; on Twitter:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-ipad-pro.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 26 Oct 2013 12:47:08 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-ipad-pro.html</guid></item><item><title>Core Values</title><link>http://shawnblanc.net/2013/10/core-values/</link><description>&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;My grandfather lived to be 100 years old. If the Blanc blood running through my veins holds up like my grandfather&amp;#8217;s did, then I&amp;#8217;ve still got 68 years to go. Do I really want to spend one ounce of energy trying to make random people on the internet like me? Will that matter at all in six decades from now? I&amp;#8217;d rather spend that energy strengthening my own core values, dating my wife, building life-long relationships with my sons, serving my friends, and doing the best creative work I can possibly do.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://shawnblanc.net/2013/10/core-values/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 26 Oct 2013 01:40:22 GMT</pubDate><guid isPermaLink="true">http://shawnblanc.net/2013/10/core-values/</guid></item><item><title>Podcast App Playback Speeds</title><link>http://www.marco.org/2013/10/18/podcast-app-playback-speeds</link><description>&lt;p&gt;&amp;#8220;Overcast will use speed-accurate labels. I&amp;#8217;ll take the heat in reviews.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Excellent. Instacast&amp;#8217;s inaccurate, &amp;#8220;legacy-style&amp;#8221; labels have always annoyed me, especially when trying to decide whether I had enough time to play the latest episode of Roderick on the Line.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.marco.org/2013/10/18/podcast-app-playback-speeds"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 26 Oct 2013 01:39:58 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/10/18/podcast-app-playback-speeds</guid></item><item><title>SGA bigger than the amount of HugePages configured (Linux – 11.2.0.3)</title><link>https://tanelpoder.com/2013/10/25/sga-bigger-than-than-the-amount-of-hugepages-configured-linux-11-2-0-3/</link><description>&lt;p&gt;I just learned something new yesterday when demoing large page use on Linux during my AOT seminar.&lt;/p&gt;
&lt;p&gt;I had 512 x 2MB hugepages configured in Linux ( 1024 MB ). So I set the &lt;a href="http://docs.oracle.com/cd/E16655_01/server.121/e17615/refrn10320.htm" target="_blank"&gt;USE_LARGE_PAGES&lt;/a&gt; = TRUE (it actually is the default anyway in 11.2.0.2+). This &lt;em&gt;allows&lt;/em&gt; the use of large pages (it doesn’t force, the ONLY option would force the use of hugepages, otherwise the instance wouldn’t start up). Anyway, the previous behavior with hugepages was, that if Oracle was not able to allocate the entire SGA from the hugepages area, it would silently allocate _the entire SGA _from small pages. It was all or nothing. But to my surprise, when I set my SGA_MAX_SIZE bigger than the amount of allocated hugepages in my testing, the instance started up _and _the hugepages got allocated too!&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Fri, 25 Oct 2013 16:23:24 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/10/25/sga-bigger-than-than-the-amount-of-hugepages-configured-linux-11-2-0-3/</guid></item><item><title>Iteration II</title><link>https://sam.hooke.me/game/iteration-ii/</link><description>&lt;p&gt;The step-based time-travelling sequel to Iteration: make every move count as you send short-lived clones into the past.&lt;/p&gt;
&lt;p&gt;Think in 2+1D (2 spatial + 1 time dimension) as you incrementally re-write the past.&lt;/p&gt;
&lt;p&gt;Iteration II takes a very different approach to Iteration. By being step-based (rather than time ticking automatically as in Iteration) it allows for more precise and complex puzzles. To aid you, a timeline is shown at the bottom of the screen with the status of each clone.&lt;/p&gt;</description><author>Sam Hooke</author><pubDate>Thu, 24 Oct 2013 00:27:00 GMT</pubDate><guid isPermaLink="true">https://sam.hooke.me/game/iteration-ii/</guid></item><item><title>Installing the PHP "memcached" Extension</title><link>https://donatstudios.com/OS-X-Mavericks-Memcached-PHP-Extension-Installation</link><description>&lt;h3&gt;Please Note&lt;/h3&gt;
&lt;p&gt;This tutorial only covers the &lt;strong&gt;default PHP installation&lt;/strong&gt; that ships with Mac OS X / macOS. If you have installed a new installation this does not cover you. &lt;/p&gt;
&lt;p&gt;For those using brew, you can simply &lt;code&gt;brew install&lt;/code&gt; the &lt;a href="https://github.com/Homebrew/homebrew-php/blob/49cb525f2dd836ac1fe79905d9f094931d7b02ba/Formula/php55-memcached.rb"&gt;appropriate brew formula&lt;/a&gt; for the extension.&lt;/p&gt;
&lt;p&gt;These directions are verified to work with Mac OS X 10.9 Mavericks through macOS 10.14 Mojave.&lt;/p&gt;
&lt;fieldset&gt;&lt;legend&gt;System Integrity Protection&lt;/legend&gt;

&lt;p&gt;If you are running OS X El Capitan or &lt;strong&gt;newer&lt;/strong&gt; you will need to disable System Integrity Protection to modify system files and directories.&lt;/p&gt;
&lt;p&gt;To disable System Integrity Protection, boot into recovery mode by restarting and then holding &lt;code&gt;⌘R&lt;/code&gt; as you hear the startup chime. Then start the Terminal from the Utilities menu.&lt;/p&gt;
&lt;p&gt;Run the following command&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ csrutil disable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then reboot. You are good to go.&lt;/p&gt;
&lt;p&gt;If you wish to turn it back on, follow the instructions above but instead use:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ csrutil enable&lt;/code&gt;&lt;/pre&gt;

Click &lt;a href="https://donatstudios.com/Disable-macOS-System-Integrity-Protection"&gt;here&lt;/a&gt; for a full post on the topic.

&lt;/fieldset&gt;
&lt;p&gt;The first step is to install the latest version of Xcode. On modern versions of MacOS this can be done from the App Store.&lt;/p&gt;
&lt;p&gt;After this, install the Xcode developer tools. &lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ xcode-select --install&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Special note to Mojave users&lt;/strong&gt; if the following steps fail, you may need to reinstall your Xcode header files. Instructions for that can be found &lt;a href="https://donatstudios.com/MojaveMissingHeaderFiles"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next we will need to install the required dependencies before we can build the extension. If you are not already using &lt;a href="https://brew.sh/"&gt;Homebrew&lt;/a&gt; you should be. &lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ brew install wget autoconf pkg-config libmemcached&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You will also want to make sure you have PEAR installed; full instructions can be found &lt;a href="https://pear.php.net/manual/en/installation.getting.php"&gt;here&lt;/a&gt; but can be summarized as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ wget http://pear.php.net/go-pear.phar
$ php go-pear.phar&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then in the &lt;code&gt;/tmp&lt;/code&gt; directory we will create a folder we can work in.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ cd /tmp
$ mkdir memcached-work
$ cd memcached-work&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next we will use pecl, part of pear, to fetch the current version of the extension.  &lt;/p&gt;
&lt;p&gt;The version of the memcached extension will vary so you will need to update the paths accordingly.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ pecl download memcached
$ open memcached-{{version}}.tgz
$ cd memcached-{{version}}/memcached-{{version}}
$ phpize
$ ./configure
$ make
$ sudo make install&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally you will need to add the following line to your php.ini&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;extension = memcached.so&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can verify your installation with the following:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ php --info | grep memcached\\.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Depending on your setup now you may want to restart apache. &lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ sudo apachectl restart&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should be all set to go!&lt;/p&gt;</description><author>Donat Studios</author><pubDate>Wed, 23 Oct 2013 13:42:40 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/OS-X-Mavericks-Memcached-PHP-Extension-Installation</guid></item><item><title>How to: Disable macOS System Integrity Protection</title><link>https://donatstudios.com/Disable-macOS-System-Integrity-Protection</link><description>&lt;p&gt;If you are running OS X El Capitan or &lt;strong&gt;newer&lt;/strong&gt; you will need to disable System Integrity Protection to modify system files and directories.&lt;/p&gt;
&lt;p&gt;To disable System Integrity Protection, boot into recovery mode by restarting and then holding &lt;code&gt;⌘R&lt;/code&gt; as you hear the startup chime. Then start the Terminal from the Utilities menu.&lt;/p&gt;
&lt;p&gt;Run the following command&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ csrutil disable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then reboot. You are good to go.&lt;/p&gt;
&lt;p&gt;If you wish to turn it back on, follow the instructions above but instead use:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ csrutil enable&lt;/code&gt;&lt;/pre&gt;</description><author>Donat Studios</author><pubDate>Wed, 23 Oct 2013 13:42:40 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/Disable-macOS-System-Integrity-Protection</guid></item><item><title>Wolfram|Alpha's New Data about Pokmon</title><link>http://blog.wolframalpha.com/2013/10/10/gotta-compute-em-all-wolframalphas-new-data-about-pokemon/</link><description>&lt;p&gt;I would have loved to have this back when I played Pokmon LeafGreen and Pokmon Saphire. Instead I had Prima Games&amp;#8217; &lt;a href="http://www.amazon.com/Pokemon-Pokedex-Collectors-Edition-Official/dp/0761547614/ref=sr_1_1?ie=UTF8&amp;amp;qid=1382496492&amp;amp;sr=8-1&amp;amp;keywords=pokedex+collectors+edition"&gt;&lt;em&gt;Pokmon Pokedex Collector&amp;#8217;s Edition&lt;/em&gt;&lt;/a&gt; which, although a great book for its time, simply cannot compare to the power Wolfram|Alpha will afford its users. I don&amp;#8217;t even play the game any more and I&amp;#8217;m still excited.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://blog.wolframalpha.com/2013/10/10/gotta-compute-em-all-wolframalphas-new-data-about-pokemon/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 23 Oct 2013 01:54:10 GMT</pubDate><guid isPermaLink="true">http://blog.wolframalpha.com/2013/10/10/gotta-compute-em-all-wolframalphas-new-data-about-pokemon/</guid></item><item><title>How to make money with your podcast</title><link>http://blog.lexfriedman.com/post/2856721103/money-podcast-step-great-podcast</link><description>&lt;p&gt;Although ostensibly about monetizing a podcast, Lex Friedman&amp;#8217;s article also does an excellent job of setting out some great guidelines for creating exceptional shows, many of which align with the suggestions I outlined in &lt;a href="https://zacs.site/blog/podcasting-state-of-the-union.html"&gt;&lt;em&gt;Podcasting State of the Union&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://blog.lexfriedman.com/post/2856721103/money-podcast-step-great-podcast"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 23 Oct 2013 01:05:15 GMT</pubDate><guid isPermaLink="true">http://blog.lexfriedman.com/post/2856721103/money-podcast-step-great-podcast</guid></item><item><title>Local .vimrc's</title><link>https://bfontaine.net/2013/10/22/local-vimrcs/</link><description>&lt;p&gt;I &lt;a href="http://damien.lespiau.name/blog/2009/03/18/per-project-vimrc/"&gt;discovered&lt;/a&gt; a great feature in Vim today. While we generally
use the same Vim settings everywhere, we sometimes (have to) contribute to
projects with a coding style different of ours, and because nobody wants to
edit their &lt;code class="language-plaintext highlighter-rouge"&gt;.vimrc&lt;/code&gt; everytime to switch between configurations, Vim allows you
to have per project &lt;code class="language-plaintext highlighter-rouge"&gt;.vimrc&lt;/code&gt;’s.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;This feature can be enabled with one line in your &lt;code class="language-plaintext highlighter-rouge"&gt;.vimrc&lt;/code&gt;:&lt;/p&gt;

&lt;div class="language-vim highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;exrc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When you start Vim, it begins by looking at some predefined locations for a
configuration file (the first one is &lt;code class="language-plaintext highlighter-rouge"&gt;$HOME/.vimrc&lt;/code&gt;).  The &lt;code class="language-plaintext highlighter-rouge"&gt;exrc&lt;/code&gt; option,
disabled by default, tell to Vim to not only load your personal &lt;code class="language-plaintext highlighter-rouge"&gt;.vimrc&lt;/code&gt;, but
also to look in the current directory to check if there’s another &lt;code class="language-plaintext highlighter-rouge"&gt;.vimrc&lt;/code&gt; file,
which will be loaded &lt;em&gt;after&lt;/em&gt; your personal one. You can then use it to override
your settings and/or add specific ones for this directory.&lt;/p&gt;

&lt;p&gt;Additionally, if you share the local &lt;code class="language-plaintext highlighter-rouge"&gt;.vimrc&lt;/code&gt; with others (e.g. in a Git
repository), you may want to set the &lt;code class="language-plaintext highlighter-rouge"&gt;secure&lt;/code&gt; option at the end of your personal
&lt;code class="language-plaintext highlighter-rouge"&gt;.vimrc&lt;/code&gt;:&lt;/p&gt;

&lt;div class="language-vim highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;secure&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This disallow shell and write commands in the &lt;code class="language-plaintext highlighter-rouge"&gt;.vimrc&lt;/code&gt; of the local directory.
On &lt;span class="sc"&gt;unix&lt;/span&gt;-like OSes, this option is set by default if
you’re not the owner of the file.&lt;/p&gt;

&lt;p&gt;For more Vim gems, check my &lt;code class="language-plaintext highlighter-rouge"&gt;.vimrc&lt;/code&gt; on &lt;a href="https://github.com/bfontaine/Dotfiles/blob/master/.vimrc"&gt;GitHub&lt;/a&gt;!&lt;/p&gt;</description><author>Baptiste Fontaine’s Blog</author><pubDate>Tue, 22 Oct 2013 22:53:00 GMT</pubDate><guid isPermaLink="true">https://bfontaine.net/2013/10/22/local-vimrcs/</guid></item><item><title>Opportunity cost</title><link>http://dimitarsimeonov.com/2013/10/22/opportunity-cost</link><description>&lt;p&gt;I probably wouldn’t have gotten into the Bulgarian National Math team
and after that into MIT if I had followed commands. It happened when I
was 7th grade and my school was selecting a team to compete in a
national mathlete competition.  The days the team selection exam was
supposed to happen, there was also a literature exam, part of the
standard curriculum, which my mother told me to attend to. After a
brief argument, I said I will, but proceeded to go to the math team
selection instead.&lt;/p&gt;

&lt;p&gt;I qualified to one of four spots, out of about twenty students and
proceeded to go to my first math competition in a different city
called Varna. During the competition we did OK, we weren’t the best,
but overall I really liked traveling and bonded with the other kids on
the team. I was hooked and decided I wanted to go to more
competitions. I did OK, but wasn’t making it towards the top.&lt;/p&gt;

&lt;p&gt;After a couple of years I got an advice from a member of the national
team. He said “Read 10 math books over the summer vacation, and you
might get to the level of the National Team.” I followed his advice,
really enjoyed learning hire about geometry, number theory,
combinatorics and inequalities, and as a result the next year I made
it to first the extended national team of 12 people and then to the
national team for the International Math Olympiad - the most
prestigious competition.&lt;/p&gt;

&lt;p&gt;I never had any idea about all the benefits and the opportunities I
would get from potentially getting into the national team when I
disobeyed my mom’s order to go to the literature exam. I just did it
because I was feeling that math is my strong side and wanted to see if
I were any good at it. All I knew at the time of making the decision
was that will have to probably retake the exam, but might win a trip
to Varna, and that I can test my math skills. I didn’t know that I
will become more excited about learning math and that I will find
other students who feel the same way and that will push each other to
get better. The opportunity cost of not applying for the math team
could have been that I end up never discovering math’s beauty and
never making it to the national team and MIT.&lt;/p&gt;

&lt;p&gt;While missing the literature exam, testing my math skills and winning
a trip to Varna were known knowns and know unknowns about my decision,
becoming a part of math community, and potentially qualifying for
international math olympiads was unknown unknown to me at this time. I
majorly undervalued the potential upside of my decision, because I
just really had no idea what good might come of it.&lt;/p&gt;

&lt;p&gt;Currently, I’m trying to tell myself more that whenever facing a
decision that involves exploring something new, the opportunity cost
of not doing it is beyond my understanding - I rarely have any
intuition about what I might discover when I do the exploration, and
while a lot of time it might be nothing, sometimes it is a gem, and
every once in while - a treasure.&lt;/p&gt;</description><author>D13V</author><pubDate>Tue, 22 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://dimitarsimeonov.com/2013/10/22/opportunity-cost</guid></item><item><title>Superhero Vehicles</title><link>https://zacs.site/blog/superhero-vehicles.html</link><description>&lt;p&gt;Ever since reading Craig Hockenberry&amp;#8217;s article &lt;a href="http://furbo.org/2013/09/11/sonderklasse/"&gt;&lt;em&gt;Sonderklasse&lt;/em&gt;&lt;/a&gt;, an article ostensibly about the iPhone 5S, I have waited for an opportunity to write about something I came across in the process of reading that piece: the Mercedes G63 AMG.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/superhero-vehicles.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 21 Oct 2013 11:23:39 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/superhero-vehicles.html</guid></item><item><title>first release of puppet-shorewall</title><link>https://purpleidea.com/blog/2013/10/21/first-release-of-puppet-shorewall/</link><description>&lt;p&gt;Oh, hi there.&lt;/p&gt;
&lt;p&gt;In case you&amp;rsquo;re interested, I&amp;rsquo;ve just made a &lt;a href="https://github.com/purpleidea/puppet-shorewall"&gt;first release of my puppet-shorewall module&lt;/a&gt;. This isn&amp;rsquo;t meant as an exhaustive shorewall module, but it does provide most of the usual functionality that most users need.&lt;/p&gt;
&lt;p&gt;In particular, it&amp;rsquo;s the module dependency that I use for many of &lt;a href="https://github.com/purpleidea/puppet-gluster/" title="puppet-gluster"&gt;my&lt;/a&gt; &lt;a href="https://github.com/purpleidea/puppet-ipa"&gt;other&lt;/a&gt; &lt;a href="https://github.com/purpleidea/puppet-nfs"&gt;puppet&lt;/a&gt; &lt;a href="https://github.com/purpleidea/puppet-cobbler"&gt;modules&lt;/a&gt; that provide firewalling. This is probably where you&amp;rsquo;re most likely to consume it.&lt;/p&gt;
&lt;p&gt;In general most modules just implement &lt;em&gt;shorewall::rule&lt;/em&gt;, so if you really don&amp;rsquo;t want to use this code, you can implement that signature yourself, or not use automatic firewalling. The &lt;em&gt;shorewall::rule&lt;/em&gt; type has two main signatures, so have a &lt;a href="https://github.com/purpleidea/puppet-shorewall"&gt;look at the source&lt;/a&gt;, or a &lt;a href="https://github.com/purpleidea/puppet-shorewall/blob/master/examples/misc-example.pp"&gt;simple example&lt;/a&gt; if you want to get more familiar with the specifics. Using this module is highly recommended, specifically with &lt;a href="https://github.com/purpleidea/puppet-gluster/" title="puppet-gluster"&gt;puppet-gluster&lt;/a&gt;.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Mon, 21 Oct 2013 03:07:06 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/10/21/first-release-of-puppet-shorewall/</guid></item><item><title>Enable Emoji fonts on Debian / Ubuntu / Mint Linux</title><link>https://thomashunter.name/posts/2013-10-21-enable-emoji-fonts-on-debian-ubuntu-mint-linux</link><author>Thomas Hunter II</author><pubDate>Mon, 21 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-10-21-enable-emoji-fonts-on-debian-ubuntu-mint-linux</guid></item><item><title>The Slow Fade</title><link>https://zacs.site/blog/the-slow-fade.html</link><description>&lt;p&gt;Last week Ben Thompson of Stratechery wrote &lt;a href="http://stratechery.com/2013/open-source-apps/"&gt;&lt;em&gt;Open Source Apps&lt;/em&gt;&lt;/a&gt;, where he explained the &amp;#8220;inevitable&amp;#8221; shift from paid-up-front to free apps monetized through other means. From his article:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-slow-fade.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 20 Oct 2013 23:25:51 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-slow-fade.html</guid></item><item><title>Testing Graphite with MetricFactory revisited</title><link>https://smetj.net/testing-graphite-with-metricfactory-revisited.html</link><description>&lt;p&gt;In this post we revisit a previously posted article on how we can test and
stress test a Graphite setup. This is basically a rewrite of that article
since the Wishbone and MetricFactory software have meanwhile changed
enough to dedicate a new article to it.&lt;/p&gt;
&lt;p&gt;Our end-goal still stands.  We …&lt;/p&gt;</description><author>Jelle Smet</author><pubDate>Sun, 20 Oct 2013 21:42:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/testing-graphite-with-metricfactory-revisited.html</guid></item><item><title>The Better Figures &amp;amp; Images Pelican plugin now supports Figure Numbering</title><link>https://duncanlock.net/blog/2013/10/19/the-better-figures-images-pelican-plugin-now-supports-figure-numbering/</link><description>&lt;figure class="image-block"&gt;&lt;img alt="A dummy placeholder image, 200x200 pixels square." src="https://duncanlock.net/images/posts/better-figures-images-plugin-for-pelican/dummy-200x200.png" /&gt;
&lt;figcaption&gt;Figure 1. This figure has automatic figure numbering.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I had a feature request for automatic figure numbering, like latex. I was revamping this plugin for Pelican 3.3 anyway - and this didn&amp;#8217;t seem too hard - so I decided to add&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;So, the &lt;a href="https://duncanlock.net/blog/2013/05/29/better-figures-images-plugin-for-pelican/"&gt;Better Figures &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Images plugin&lt;/a&gt; now supports automatic figure numbering. To enable this for all posts, just add this to your config&amp;nbsp;file:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="n"&gt;FIGURE_NUMBERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you want to enable this per post, just add this to the metadata at the top of the&amp;nbsp;post:&lt;/p&gt;
&lt;p&gt;for restructuredText add&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;:figure_numbers: true&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and for Markdown add&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;figure_numbers: true&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;section class="admonition-block caution"&gt;&lt;h6 class="block-title label-only"&gt;&lt;span class="title-label"&gt;Caution: &lt;/span&gt;&lt;/h6&gt;&lt;p&gt;Can you have Figures in&amp;nbsp;Markdown?&lt;/p&gt;
&lt;p&gt;I use reStructuredText for this site, and I&amp;#8217;m not sure if you can even &lt;em&gt;have&lt;/em&gt; Figures in Markdown documents - and I haven&amp;#8217;t tested it, so caveat&amp;nbsp;emptor.&lt;/p&gt;&lt;/section&gt;
&lt;p&gt;It adds&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"fig_num"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"fig_X"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Figure X: &lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;to the start of the figure captions, where &lt;code&gt;X&lt;/code&gt; is the current figure number. It only does this to figures that already have captions - it&amp;#8217;ll skip figures without. It completely ignores images, even it they have captions - it only affects&amp;nbsp;figures.&lt;/p&gt;
&lt;p&gt;The markup it outputs looks something like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"figure"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 250px; max-width: 100%; height: auto;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 250px; max-width: 100%; height: auto;"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/images/image.jpg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"caption"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"fig_num"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"fig_1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Figure 1: &lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;This is the caption of the figure.
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"legend"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua.
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The figure number on it&amp;#8217;s own looks something like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"fig_num"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"fig_1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Figure 1: &lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This allows you to style it in &lt;span class="caps"&gt;CSS&lt;/span&gt; using the class and to link to it using the id/&lt;code&gt;#fig_1&lt;/code&gt; anchor.&lt;/p&gt;
&lt;aside class="admonition-block note"&gt;&lt;h6 class="block-title label-only"&gt;&lt;span class="title-label"&gt;Note: &lt;/span&gt;&lt;/h6&gt;&lt;p&gt;Automatic Figure numbering is new and isn&amp;#8217;t upstream yet - check out the &lt;code&gt;figure_numbers&lt;/code&gt; branch from my git repo, &lt;a href="https://github.com/dflock/pelican-plugins/tree/figure_numbers"&gt;here&lt;/a&gt; if you want to use&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;While we&amp;#8217;re on that subject, this plugin &lt;a href="https://duncanlock.net/blog/2013/10/18/how-i-upgraded-this-website-to-pelican-33/"&gt;does work with Pelican 3.3&lt;/a&gt;, but that&amp;#8217;s not upstream yet either - the &lt;code&gt;figure_numbers&lt;/code&gt; branch includes those fixes&amp;nbsp;too.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m trying to get this upstream soonest - and will update here when&amp;nbsp;done.&lt;/p&gt;&lt;/aside&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_the_results_look_like_this"&gt;The results look like&amp;nbsp;this&lt;/h2&gt;&lt;p&gt;Here are a few working examples, showing the results of using the plugin. The original rst source for these are available in the plugins &lt;code&gt;/test&lt;/code&gt; folder:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="dummy 800x300" src="https://duncanlock.net/images/posts/better-figures-images-plugin-for-pelican/dummy-800x300.png" /&gt;
&lt;figcaption&gt;Figure 2. This image is wider than the column it&amp;#8217;s in - try resizing the browser window. Because of the max-width: 100%, the image is resized to fit the column.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna&amp;nbsp;aliqua.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="A dummy placeholder image" src="https://duncanlock.net/images/posts/better-figures-images-plugin-for-pelican/dummy-200x200.png" width="200x200 pixels square." /&gt;
&lt;figcaption&gt;Figure 3. This image is only 200px wide - smaller that the column it&amp;#8217;s in. The max-width: 100% doesn&amp;#8217;t stretch the image, because it&amp;#8217;s also got a width: 200px - making it shrink to fit.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla&amp;nbsp;pariatur.&lt;/p&gt;
&lt;section class="paragraph"&gt;&lt;h6 class="block-title"&gt;This is the third image caption. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do&amp;nbsp;eiusmod&lt;/h6&gt;&lt;p class="align-right"&gt;tempor incididunt ut labore et dolore magna aliqua.
image::{static}/images/posts/better-figures-images-plugin-for-pelican/dummy-250x300.png[map to buried treasure&amp;nbsp;2]&lt;/p&gt;&lt;/section&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est&amp;nbsp;laborum.&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="dummy 200x200" src="https://duncanlock.net/images/posts/better-figures-images-plugin-for-pelican/dummy-200x200.png" /&gt;&lt;/div&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est&amp;nbsp;laborum.&lt;/p&gt;
&lt;section class="paragraph"&gt;&lt;h6 class="block-title"&gt;This is the fourth image caption. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do&amp;nbsp;eiusmod&lt;/h6&gt;&lt;p class="align-right"&gt;tempor incididunt ut labore et dolore magna aliqua.
image::{static}/images/posts/better-figures-images-plugin-for-pelican/dummy-250x300.png[map to buried treasure&amp;nbsp;3]&lt;/p&gt;&lt;/section&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est&amp;nbsp;laborum.&lt;/p&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est&amp;nbsp;laborum.&lt;/p&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Sun, 20 Oct 2013 08:08:26 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/10/19/the-better-figures-images-pelican-plugin-now-supports-figure-numbering/</guid></item><item><title>My wishlist for a Star Wars Galaxies 2</title><link>https://benovermyer.com/blog/2013/10/my-wishlist-for-a-star-wars-galaxies-2/</link><description>&lt;p&gt;Star Wars Galaxies 2 will most likely never happen, owing to the fact that SOE has publicly stated that it will never work on an MMO based on an external IP again. Whether that's true or not, if somehow this project were to be conceived, here are the changes from the original that I'd personally want to see in a sequel.&lt;/p&gt;
&lt;h1 id="modern-graphics-engine"&gt;Modern Graphics Engine&lt;/h1&gt;
&lt;p&gt;This is the most obvious one. My personal choice for SWG2's engine would be Unreal Engine 4, owing to its extremely impressive technology. The “Infiltrator” demo video for UE4 shows that it would be perfect for the realistic art style of the Star Wars: Galaxies franchise, as compared to the more stylized art direction of Star Wars: The Old Republic.&lt;/p&gt;
&lt;h1 id="a-return-to-skill-based-character-progression"&gt;A Return to Skill-Based Character Progression&lt;/h1&gt;
&lt;p&gt;Like most SWG veterans, I lamented the loss of the skill tree progression system when the New Game Experience took over. With SWG2, I'd want to see it return with a vengeance. Particularly, I'd like to see the depth and breadth of trees expand, allowing for greater freedom than even the original. Several aspects of the Star Wars universe were never fully explored in the first game, or were only given light treatment, such as slicing or smuggling.&lt;/p&gt;
&lt;h1 id="more-player-races"&gt;More Player Races&lt;/h1&gt;
&lt;p&gt;The selection of available races in the original was good, allowing for most of the popular choices. I would like to see the Togruta, Chiss, and Devaronian races make a core appearance in SWG2. I'd also like to see droids as a player race, though that might be too complicated to balance against other races' gameplay.&lt;/p&gt;
&lt;h1 id="bigger-worlds"&gt;Bigger Worlds&lt;/h1&gt;
&lt;p&gt;The original SWG planets were pretty big, but they frequently felt empty. The expansion worlds had stronger design, but felt smaller. I'd want to see planets in SWG2 be more expansive than the original SWG planets, but have more points of interest throughout each. For example, the planets in the first SWG felt a lot like the same planet given a different skin each time. While I don't want quests to provide a meta plot, I would like to see localized content that gives each world its own character.&lt;/p&gt;
&lt;h1 id="greater-freedom-of-movement"&gt;Greater Freedom of Movement&lt;/h1&gt;
&lt;p&gt;Let's face it, movement was pretty horrible in the original SWG. You couldn't jump or fly over obstacles, and it was completely possible to walk straight up a sheer cliff face. While we don't necessarily need the full parkour aspects of EverQuest Next, I do want the ability to jump over things, be prevented from walking up impossible surfaces, and be able to climb, swim, and otherwise move as a person should be able to move.&lt;/p&gt;
&lt;h1 id="atmospheric-vehicles"&gt;Atmospheric Vehicles&lt;/h1&gt;
&lt;p&gt;I know these were added to the original SWG, but it came only in the last few months of the game's life. Given how important they are to the Star Wars universe in general, it would be a crime not to include these from the beginning in SWG2. I want to be able to bullseye womp rats in a T-16, over take a cruise over the highlands of Corellia in my own YT-1300. I also want shuttle transports to actually have real transit time, and not be a wait-and-teleport affair like they were in the original.&lt;/p&gt;
&lt;h1 id="player-factions"&gt;Player Factions&lt;/h1&gt;
&lt;p&gt;While it was great to have Imperial and Rebel affiliations in the original, to really ramp up the sandboxy nature of Star Wars Galaxies, the sequel would need to have player factions. This is particularly important if the game is set in a time period after the fall of the Empire, where a billion new factions would be vying for power. I see player factions being akin to massive alliances of Player Associations, rather than just an enormous PA. They'd also have to be able to influence planetary politics, like how Imperial and Rebel players were able to influence things towards the end of the original SWG.&lt;/p&gt;
&lt;h1 id="a-player-exchange"&gt;A Player Exchange&lt;/h1&gt;
&lt;p&gt;Unlike the auction house format of current MMORPGs, I'd like to see something closer to the original vendor system in SWG. You'd be able to search available items on a local, planetary, or galactic level, as well as purchase them, but you'd need to physically travel to the vendor in order to pick up the item or items. This is important for two reasons: to encourage exploration and travel, and to support the possibility of player deliverymen - “FedEx” quests that actually matter. I want to have to travel to Tosche station to pick up some power converters.&lt;/p&gt;
&lt;h1 id="greater-visual-customization-of-crafted-items"&gt;Greater Visual Customization of Crafted Items&lt;/h1&gt;
&lt;p&gt;I liked that crafters could dye armor in SWG, but a sequel would need to take it to a new level. Item appearance should be further separated from item game mechanics than in the original. There is a vast variety of armor appearances in Star Wars, for example, and that should be reflected in SWG2. I don't want just a dozen different kinds of armor in different colors. I want several dozen, if not more. If World of Warcraft can do it, so can SWG2. Involving the Player Studio could help defray the cost of developing new models and textures for components of items.&lt;/p&gt;
&lt;h1 id="vehicular-combat"&gt;Vehicular Combat&lt;/h1&gt;
&lt;p&gt;If we can fly in the atmosphere, we should be able to fight in it also. I'd want to see hover tanks finally make an appearance, among other things. If PlanetSide 2 can balance heavy armor against infantry, Star Wars Galaxies can do it too. This list could be even longer, but the above are my biggest wishes for a Star Wars Galaxies 2. How about yours? What would you want to see in a sequel?&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sun, 20 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/10/my-wishlist-for-a-star-wars-galaxies-2/</guid></item><item><title>Hello, World!</title><link>https://anisse.astier.eu/hello-world.html</link><description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Update&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;: I updated the information below with the &lt;a href="blog-update.html"&gt;2020 tech&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So I finally did it. You're reading it right now. My personnal website/blog.&lt;/p&gt;
&lt;p&gt;I should be posting here about things that cross my mind as well as various projects I've been working on. And maybe even new projets I …&lt;/p&gt;</description><author>Linux Engineer's random thoughts</author><pubDate>Sun, 20 Oct 2013 01:00:00 GMT</pubDate><guid isPermaLink="true">https://anisse.astier.eu/hello-world.html</guid></item><item><title>How I upgraded this website to Pelican 3.3</title><link>https://duncanlock.net/blog/2013/10/18/how-i-upgraded-this-website-to-pelican-33/</link><description>&lt;p&gt;There are &lt;a href="https://github.com/getpelican/pelican/issues?milestone=5&amp;amp;state=closed"&gt;quite a few changes&lt;/a&gt; in &lt;a href="http://blog.getpelican.com/pelican-3.3-released.html"&gt;Pelican 3.3&lt;/a&gt; - most of them minor, but a few which might mean making some changes to your site in order to upgrade. This is what I did to move my site from Pelican 3.2 to&amp;nbsp;3.3.&lt;/p&gt;
&lt;p&gt;The change that had the biggest impact and took the most work was around image linking - caused by a combination of things. I think I was doing it wrong before and things changed in a way that meant this no longer worked. I also had to update my &lt;a href="https://duncanlock.net/blog/2013/05/29/better-figures-images-plugin-for-pelican/"&gt;Better Figures &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Images plugin&lt;/a&gt; to take this into&amp;nbsp;account.&lt;/p&gt;
&lt;p&gt;Previously, I&amp;#8217;d been linking to my images like this, both in my&amp;nbsp;theme:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Theme CSS Image Link */&lt;/span&gt;
&lt;span class="nt"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;#2&lt;/span&gt;&lt;span class="nt"&gt;C71B8&lt;/span&gt; &lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="o"&gt;(/&lt;/span&gt;&lt;span class="nt"&gt;static&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;images&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;blueprint-background&lt;/span&gt;&lt;span class="nc"&gt;.png&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;repeat&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;{# Theme HTML/Jinja image link #}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"twitter:image"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;SITEURL&lt;/span&gt; &lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;/static/images/favicon-128x128.png"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and in my&amp;nbsp;content:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;.. image:: /static/images/dunc_smiling_192x192.jpg

.. figure:: /static/images/pages/404-error.png&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is linking to the output location of the final images, in the &lt;code&gt;/output/static/images&lt;/code&gt; folder. I don&amp;#8217;t think this is the way you&amp;#8217;re supposed to do it - and it doesn&amp;#8217;t appear to work with Pelican&amp;nbsp;3.3.&lt;/p&gt;
&lt;p&gt;The way you&amp;#8217;re supposed to do it, I think, is to use a place-holder for the first bit of the path and, effectively, link to the source location of the file, not the destination. The &lt;a href="http://docs.getpelican.com/en/3.3.0/getting_started.html#linking-to-internal-content"&gt;relevant documentation is here&lt;/a&gt; - and the above examples now look like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Theme CSS Image Link - not processed, so no place-holder */&lt;/span&gt;
&lt;span class="nt"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;#2&lt;/span&gt;&lt;span class="nt"&gt;C71B8&lt;/span&gt; &lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="o"&gt;(/&lt;/span&gt;&lt;span class="nt"&gt;images&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;blueprint-background&lt;/span&gt;&lt;span class="nc"&gt;.png&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;repeat&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;{# Theme HTML/Jinja image link - not processed, so no place-holder #}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"twitter:image"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;SITEURL&lt;/span&gt; &lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;/images/favicon-128x128.png"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;.. image:: {static}/images/dunc_smiling_192x192.jpg

.. figure:: {static}/images/pages/404-error.png&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_theme_changes"&gt;Theme&amp;nbsp;Changes&lt;/h2&gt;&lt;p&gt;The theme changes were the same: I removed the &lt;code&gt;/static&lt;/code&gt; from the start of any image links. Because the theme files aren&amp;#8217;t content, they don&amp;#8217;t get processed by Pelican, so you don&amp;#8217;t use the &lt;code&gt;{static}&lt;/code&gt; place-holder here. All the changes looked something like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gd"&gt;- &amp;lt;meta name="twitter:image" content="{{ SITEURL }}/static/images/test.png"&amp;gt;
&lt;/span&gt;&lt;span class="gi"&gt;+ &amp;lt;meta name="twitter:image" content="{{ SITEURL }}/images/test.png"&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can see the Git commit with all the theme changes &lt;a href="https://github.com/dflock/blueprint/commit/bae678828b4535fcece8327c0f2dbae63bf4c92f"&gt;here&lt;/a&gt;, &lt;a href="https://github.com/dflock/blueprint"&gt;in the Blueprint Theme Repository&lt;/a&gt;.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_content_changes"&gt;Content&amp;nbsp;Changes&lt;/h2&gt;&lt;div class="quote-block"&gt;&lt;blockquote&gt;&lt;p&gt;The syntax for linking to source content has been changed in order to ensure compatibility with Markdown and reST extensions. For example, the new syntax for Markdown: &lt;code&gt;[a link relative to content root]({static}/article1.md)&lt;/code&gt;
The previous &lt;code&gt;|filename|/article1.md&lt;/code&gt; syntax will continue to be supported for backwards compatibility.&amp;#8201;&amp;#8211;&amp;#8201;&lt;a href="http://blog.getpelican.com/pelican-3.3-released.html"&gt;Pelican&amp;nbsp;Blog&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt;Again, this is the related to image linking - and is the same change as above.&amp;nbsp;This:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;.. image:: /static/images/dunc_smiling_192x192.jpg

.. figure:: /static/images/pages/404-error.png
    :target: /static/images/pages/404-error.png&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;becomes&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;.. image:: {static}/images/dunc_smiling_192x192.jpg

.. figure:: {static}/images/pages/404-error.png
    :target: {static}/images/pages/404-error.png&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You need to do this in every post that has images. Fortunately this was simple to search &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; replace. On some posts I also have an extra piece of metadata called &lt;code&gt;thumbnail&lt;/code&gt;, that also needed updating. This isn&amp;#8217;t processed by Pelican, so no place-holder&amp;nbsp;here:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gd"&gt;-:thumbnail: /static/images/posts/post-name/image.jpg
&lt;/span&gt;&lt;span class="gi"&gt;+:thumbnail: /images/posts/post-name/image.jpg&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_configuration_changes"&gt;Configuration&amp;nbsp;Changes&lt;/h2&gt;&lt;p&gt;Since the &lt;code&gt;FILES_TO_COPY&lt;/code&gt; setting has been deprecated, you should replace it with the &lt;code&gt;STATIC_PATHS&lt;/code&gt; and &lt;code&gt;EXTRA_PATH_METADATA&lt;/code&gt; &lt;a href="http://docs.getpelican.com/en/3.3.0/settings.html#basic-settings"&gt;settings&lt;/a&gt;. The relevant part of my settings file changed like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt; # static paths will be copied under the same name
&lt;span class="gd"&gt;-STATIC_PATHS = ["images"]
&lt;/span&gt;&lt;span class="gi"&gt;+STATIC_PATHS = [
+    'images',
+    'extras'
+]
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt; # A list of extra files to copy from the source to the destination
&lt;span class="gd"&gt;-FILES_TO_COPY = (
-    ('extras/.htaccess', '.htaccess'),
-    ('extras/robots.txt', 'robots.txt'),
-    ('extras/favicon.ico', 'favicon.ico'),
-)
&lt;/span&gt;&lt;span class="gi"&gt;+EXTRA_PATH_METADATA = {
+    'extras/.htaccess': {'path': '.htaccess'},
+    'extras/robots.txt': {'path': 'robots.txt'},
+    'extras/favicon.ico': {'path': 'favicon.ico'},
+}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can see the Git commit with all the &lt;a href="https://github.com/dflock/duncanlock.net/commit/bcee8b830d45daad00ea9428a339459689a27cf5"&gt;content &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; configuration changes here&lt;/a&gt;, in the &lt;a href="https://github.com/dflock/duncanlock.net"&gt;site repository&lt;/a&gt;.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_plugin_changes"&gt;Plugin&amp;nbsp;Changes&lt;/h2&gt;&lt;p&gt;A special case for me is the {static}/posts/tech/better-figures-and-images-plugin-for-pelican.adoc[Better Figures &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Images plugin]. I use this plugin and I also wrote it - and it stopped&amp;nbsp;working.&lt;/p&gt;
&lt;p&gt;In order to debug it, I first added in some logging support. I added this at the top with the other&amp;nbsp;imports:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;logging&lt;/span&gt;
&lt;span class="n"&gt;logger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getLogger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and then some of this further down to output the paths that the plugin was&amp;nbsp;seeing:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Better Fig. PATH: %s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'PATH'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Better Fig. img.src: %s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'src'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This made it easier to figure out what I needed to change. The path handling code in the plugin was never very good, so I changed it from this&amp;nbsp;mess:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c1"&gt;# TODO: Pretty sure this isn't the right way to do this, too hard coded.
# There must be a setting that I should be using?
&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'PATH'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;'/images/'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'src'&lt;/span&gt;&lt;span class="p"&gt;])[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;#src = instance.settings['PATH'] + '/images/' + os.path.split(img['src'])[1]
&lt;/span&gt;
&lt;span class="c1"&gt;# The method mentioned above is only working if the images are really in the "images" folder.
# It's also not working on subdirectories inside the image folder
# Both issues are fixed:
# Changed the static "/images/" string to the proper path which is extracted from the 'split' tuple
# The first 7 letters are cutted ("/static") to get a valid link.
# Somehow the static folder isn't created in the output folder. It's only on the server after 'make ftp_upload'
&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'PATH'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'src'&lt;/span&gt;&lt;span class="p"&gt;])[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;'/'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'src'&lt;/span&gt;&lt;span class="p"&gt;])[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;to this slightly more robust&amp;nbsp;mess:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Better Fig. PATH: %s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'PATH'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Better Fig. img.src: %s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'src'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="n"&gt;img_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img_filename&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'src'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Better Fig. img_path: %s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Better Fig. img_fname: %s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img_filename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Strip off {static}, |filename| or /static
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;img_path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="s"&gt;'{static}'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'|filename|'&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;
    &lt;span class="n"&gt;img_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;img_path&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;img_path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'/static'&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;img_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;img_path&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;warning&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Better Fig. Error: img_path should start with either {static}, |filename| or /static'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Build the source image filename
&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'PATH'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;img_path&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;'/'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;img_filename&lt;/span&gt;

&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Better Fig. src: %s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;access&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;R_OK&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;
    &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Better Fig. Error: image not found: {}'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This code basically strips the leading &lt;code&gt;{static}&lt;/code&gt;, &lt;code&gt;|filename|&lt;/code&gt; or &lt;code&gt;/static&lt;/code&gt; from the image path, then looks for the original source image inside the current content folder (as set by the &lt;code&gt;PATH&lt;/code&gt; setting in your config). This new code also contains lots more logging for debugging and reporting any errors or warnings. You can see the complete Git commit for the &lt;a href="https://github.com/dflock/pelican-plugins/commit/259147e4da6474c128c4dd09c3a51c64453343af"&gt;plugin changes here&lt;/a&gt; and the &lt;a href="https://duncanlock.net/blog/2013/05/29/better-figures-images-plugin-for-pelican/"&gt;full article on the plugin here&lt;/a&gt;.&lt;/p&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Sat, 19 Oct 2013 03:08:14 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/10/18/how-i-upgraded-this-website-to-pelican-33/</guid></item><item><title>First post</title><link>https://nindalf.com/posts/first-post/</link><description>A personal blog about mundane observations on reading, programming, and gaming, with occasional updates and vain attempts to drive traffic to the blog.</description><author>Krishna's blog</author><pubDate>Sat, 19 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nindalf.com/posts/first-post/</guid></item><item><title>Desktop Notifications for Irssi in Screen through SSH in Gnome Terminal</title><link>https://purpleidea.com/blog/2013/10/18/desktop-notifications-for-irssi-in-screen-through-ssh-in-gnome-terminal/</link><description>&lt;p&gt;I&amp;rsquo;m usually on &lt;a href="https://libera.chat/"&gt;IRC&lt;/a&gt;, but I don&amp;rsquo;t often notice incoming pings until after the fact. I had to both write, and modify various scripts to get what I wanted, but now it&amp;rsquo;s all done, and you can benefit from my hacking by following along&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;The Setup&lt;/span&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Laptop -&amp;gt; Gnome-Terminal -&amp;gt; SSH -&amp;gt; Screen -&amp;gt; Irssi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This way, I&amp;rsquo;m connected to IRC, even when my laptop isn&amp;rsquo;t. I run &lt;a href="http://irssi.org/"&gt;irssi&lt;/a&gt; in a &lt;a href="https://www.gnu.org/software/screen/"&gt;screen&lt;/a&gt; session on an SSH server that I manage, and I use &lt;a href="https://en.wikipedia.org/wiki/GNOME_Terminal"&gt;gnome-terminal&lt;/a&gt; on my laptop. If you don&amp;rsquo;t understand this setup, then you&amp;rsquo;ll need to get more comfortable with these tools first.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Fri, 18 Oct 2013 09:00:49 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/10/18/desktop-notifications-for-irssi-in-screen-through-ssh-in-gnome-terminal/</guid></item><item><title>Quick Tips for Setting Up TLS</title><link>https://peterlyons.com/problog/2013/10/quick-tips-for-setting-up-tls/</link><description>&lt;p&gt;Here's a few quick links that I found really helpful setting up an nginx web site to use a TLS certificate.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.mozilla.org/Security/Server_Side_TLS"&gt;Server Side TLS&lt;/a&gt; on the Mozilla wiki&lt;/li&gt;
&lt;li&gt;Qualys SSL Labs &lt;a href="https://www.ssllabs.com/projects/best-practices/index.html"&gt;SSL Deployment Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Qualys's &lt;a href="https://www.ssllabs.com/ssltest/index.html"&gt;SSL Server Test&lt;/a&gt;. If you follow the Mozilla guidelines, you should score an "A" on this test.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nginxlibrary.com/"&gt;nginx library&lt;/a&gt; has a few useful sample nginx configuration files. It's stale and only has a few posts, but it was a nice idea in theory if not in execution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some commands for reference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;generate a new 2048-bit RSA private key, named with hostname and year
&lt;ul&gt;
&lt;li&gt;Adding the year will make replacing the certificate when it expires an easy symlink swap operation and avoid confusion. Install the new files then swap the symlinks when ready&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openssl genrsa -out example.com-2013.key 2048&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;lock down its filesystem permissions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chown root:root example.com-2013.key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chmod 400 example.com-2013.key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;symlink it for convenience&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ln -nsf example.com-2013.key example.com.key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create a certificate signing request&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openssl req -new -sha256 -nodes -key example.com.key -out example.com-2013.csr&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;paste that into &lt;a href="http://namecheap.com"&gt;NameCheap&lt;/a&gt; or whichever vendor you prefer to have them sign it&lt;/li&gt;
&lt;li&gt;when the certificate arrives, unzip it and concatenate it as follows&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cat example_com.crt PositiveSSLCA2.crt AddTrustExternalCARoot.crt &amp;gt; example.com-2013.bundle.crt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;symlink that for convenience&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ln -nsf example.com-2013.bundle.crt example.com.crt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;generate a dhparam file&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openssl dhparam -out example.com-2013.dhparam.pem 2048&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ln -nsf example.com-2013.dhparam.pem example.com.dhparam.pem&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For express.js, make sure your session middleware has &lt;code&gt;proxy: true, secure: true, httpOnly: true&lt;/code&gt; options set.&lt;/p&gt;</description><author>Pete's Points</author><pubDate>Thu, 17 Oct 2013 21:46:14 GMT</pubDate><guid isPermaLink="true">https://peterlyons.com/problog/2013/10/quick-tips-for-setting-up-tls/</guid></item><item><title>Nick Heer's Predictions for Apples October Event</title><link>http://shawnblanc.net/2013/10/heer-october-spitballs/</link><description>&lt;p&gt;Shawn Blanc on Nick Heer&amp;#8217;s predictions for Apple&amp;#8217;s event next week: &amp;#8220;From my armchair, I say Nick is probably pretty close to the money here.&amp;#8221; I really hope so: I have been holding out for a new MacBook Pro since before Apple unveiled the new Airs; it would be a huge disappointment if I had to continue waiting until January.&lt;/p&gt;

&lt;p&gt;On the tablet front, I may also consider purchasing a new iPad along with a MacBook Pro and a new iPhone. Widely rumored to ship with Apple&amp;#8217;s new Touch ID functionality, this upgrade in conjunction with the A7X processor Nick expects the iPad 5 to ship with might just be enough to entice me to buy a new one Especially coming from an iPad 3 with the A6X, the speed boost would be a welcome one.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://shawnblanc.net/2013/10/heer-october-spitballs/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 17 Oct 2013 17:05:10 GMT</pubDate><guid isPermaLink="true">http://shawnblanc.net/2013/10/heer-october-spitballs/</guid></item><item><title>Border Patrol Saga</title><link>https://thomashunter.name/posts/2013-10-17-border-patrol-saga</link><author>Thomas Hunter II</author><pubDate>Thu, 17 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-10-17-border-patrol-saga</guid></item><item><title>Empty Hands</title><link>http://localhost:4999/articles/2013/10/16/empty-hands/</link><description>&lt;img src="http://farm8.staticflickr.com/7385/9935706866_f8d7553b82_b.jpg" /&gt;
&lt;blockquote&gt;
&lt;p&gt;And his disciples answered him, “How can one feed these people with bread here in this desolate place?” And he asked them, “How many loaves do &lt;em&gt;&lt;strong&gt;you&lt;/strong&gt;&lt;/em&gt; have?” They said, “Seven.” And he directed the crowd to sit down on the ground. And he took the seven loaves, and having given thanks, he broke them and gave them to his disciples to set before the people; and they set them before the crowd. And they had a few small fish. And having blessed them, he said that these also should be set before them. And they ate and were satisfied. And they took up the broken pieces left over, seven baskets full.&lt;/p&gt;
&lt;p&gt;(Mark 8:4-8 ESV, emphasis mine)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thank you that you are the great provider.  Thank you for reminding me in this story, that the options that show themselves to me are not all the options you hold. I may only have seven loaves, an impossibly small amount to fix the problems I'm faced with, but you are the infinite Bread of Life. May I look at my hands, realize that they are empty and powerless, and immediately look to your arms for provision and strength. I am nothing, you are everything. Teach me your way today, allow me to fear you and worship nothing or no one else.&lt;/p&gt;
&lt;p&gt;Image: &lt;a href="http://www.flickr.com/photos/evantravers/9935706866"&gt;Fall by evantravers&lt;/a&gt;&lt;/p&gt;</description><author>trv.rs</author><pubDate>Wed, 16 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/10/16/empty-hands/</guid></item><item><title>What the Hell is a Python?</title><link>https://xavd.id/blog/post/what-is-a-python/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/what-is-a-python/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Wed, 16 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/what-is-a-python/</guid></item><item><title>Adding tail-call optimization to Python</title><link>https://tomforb.es/blog/adding-tail-call-optimization-to-python/</link><description>Tail-call optimization is a trick many languages and compilers use to avoid creating excess stack frames when dealing with recursive code like this:...</description><author>Tom Forbes</author><pubDate>Tue, 15 Oct 2013 22:04:05 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/adding-tail-call-optimization-to-python/</guid></item><item><title>GNOME Montreal Summit</title><link>https://purpleidea.com/blog/2013/10/15/gnome-montreal-summit/</link><description>&lt;p&gt;This October 12th to 14th Montreal hosted the &lt;a href="https://www.gnome.org/"&gt;GNOME&lt;/a&gt; &lt;del&gt;boston&lt;/del&gt; summit. Many thanks to &lt;a href="http://www.canonical.com/"&gt;Canonical&lt;/a&gt; for sponsoring breakfast, &lt;a href="http://www.savoirfairelinux.com/en/"&gt;Savoir Faire Linux&lt;/a&gt; for hosting a great &lt;em&gt;&lt;a href="https://en.wikipedia.org/wiki/Cinq_%C3%A0_sept"&gt;6 à 10&lt;/a&gt;&lt;/em&gt; with fancy snacks, and &lt;a href="http://www.redhat.com/"&gt;RedHat&lt;/a&gt; for sponsoring a &lt;a href="https://en.wikipedia.org/wiki/Pool_%28cue_sports%29"&gt;pool&lt;/a&gt; night. What follows is some technical commentary about stuff that went on.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;JHBuild&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wiki.gnome.org/Jhbuild"&gt;JHBuild&lt;/a&gt; is a tool to make it easy to download/clone (from git) and compile all the GNOME modules and applications. It was easy to get going. I (mostly) followed the steps listed on the &lt;a href="https://wiki.gnome.org/HowDoI/Jhbuild"&gt;JHBuild HowDoI wiki page&lt;/a&gt;. I kept my &lt;em&gt;.jhbuildrc&lt;/em&gt; in my home directory instead of &lt;em&gt;~/.config/&lt;/em&gt;. On my Fedora 19 machine, I found certain unlisted dependencies were missing to build everything. You can figure these out yourself when your builds fail, or just run the following command to install them beforehand:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 15 Oct 2013 19:52:29 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/10/15/gnome-montreal-summit/</guid></item><item><title>FSR Reviews Homeland</title><link>https://zacs.site/blog/fsr-reviews-homeland.html</link><description>&lt;p&gt;Film School Rejects&amp;#8217; Inkoo Kang has been posting fantastic reviews of each new Homeland episode shortly after their premiere. Now at three articles, one whole review for each of the three episodes out to date, I have been thoroughly enjoying her examination of the plot lines, undertones, direction, and parallels present in this show almost as much as I enjoy watching each episode.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/fsr-reviews-homeland.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 15 Oct 2013 16:32:33 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/fsr-reviews-homeland.html</guid></item><item><title>Run while you have to, stop when you can</title><link>http://brettterpstra.com/2013/10/12/run-while-you-have-to-stop-when-you-can/</link><description>&lt;p&gt;&amp;#8220;Ive come to a point in my life where I can afford nice computers, good scotch and a great view of the leaves changing colors across the hills and bluffs of Southeastern Minnesota. My wife and I can afford to take good care of our pets, and I can afford to take better care of myself. I honestly never would have guessed Id get to this point.&amp;#8221;&lt;/p&gt;

&lt;p&gt;This article by Brett Terpstra has already made its rounds on many of the popular blogs, and for good reason, but I just couldn&amp;#8217;t resist linking it as well.&lt;/p&gt;

&lt;p&gt;Someday I hope to reach a similar place as Brett. Maybe without the life-threatening experiences along the way, but it is those that make us the people we are today.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brettterpstra.com/2013/10/12/run-while-you-have-to-stop-when-you-can/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 15 Oct 2013 16:00:59 GMT</pubDate><guid isPermaLink="true">http://brettterpstra.com/2013/10/12/run-while-you-have-to-stop-when-you-can/</guid></item><item><title>Hillside cabin in Italy</title><link>http://cabinporn.com/post/64039458648/hillside-cabin-in-friuli-venezia-giulia-italy</link><description>&lt;p&gt;What a beautiful mountain range.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/64039458648/hillside-cabin-in-friuli-venezia-giulia-italy"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 15 Oct 2013 15:58:49 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/64039458648/hillside-cabin-in-friuli-venezia-giulia-italy</guid></item><item><title>Thanks NSA for your great help. No, seriously!</title><link>https://stop.zona-m.net/2013/10/thanks-nsa-for-your-great-help-no-seriously/</link><description>&lt;p&gt;Sometimes support comes in the most unexpected ways. Today the NSA, the super-secret spy agency that intercepts countless digital communications worldwide, greatly helped me, by providing evidence that a little project of mine is a really great idea that is sorely needed NOW.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Tue, 15 Oct 2013 12:24:00 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/10/thanks-nsa-for-your-great-help-no-seriously/</guid></item><item><title>Cozy Cloud and percloud: a comparison</title><link>https://stop.zona-m.net/2013/10/cozy-cloud-and-percloud-a-comparison/</link><description>&lt;p&gt;Shortly after launching my proposal for a &lt;a href="http://per-cloud.com"&gt;personal, p2p replacement of Facebook, Gmail and similar services&lt;/a&gt; I was contacted by the developers of Cozy Cloud. We had a very interesting discussion, which ended with their proposal to write a post for their blog, to explain what similarities, differences and possible synergies I see between the two projects. Here I am, looking forward to your feedback!&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Tue, 15 Oct 2013 09:19:17 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/10/cozy-cloud-and-percloud-a-comparison/</guid></item><item><title>Mac Terminal WiFi Commands</title><link>https://www.mattcrampton.com/blog/managing_wifi_connections_using_the_mac_osx_terminal_command_line/</link><description>Mac Terminal WIFI Commands I'm seeing over a thousand people a day show up here looking for the mac terminal WiFi commands. The OSX terminal has several command line tools that allow you to manage your WiFi settings. Connecting, disconnecting and scanning for available WiFi networks is easy once you know which command does what. Hopefully this list of command line wifi tools is helpful... #1. Turn off wifi on your macbook from the Mac OSX terminal command line: &amp;gt; networksetup -setairportpower en0 off #2. Turn on wifi on your macbook from the Mac OSX terminal command line: &amp;gt; networksetup -setairportpower en0 on #3. List available wifi networks from the Mac OSX terminal command line: &amp;gt; /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport scan #4. Join a wifi network from the Mac OSX terminal command line: &amp;gt; networksetup -setairportnetwork en0 WIFI_SSID_I_WANT_TO_JOIN WIFI_PASSWORD #5. Find your network interface name: &amp;gt; networksetup -lista...</description><author>MattCrampton.com</author><pubDate>Tue, 15 Oct 2013 08:00:00 GMT</pubDate><guid isPermaLink="true">https://www.mattcrampton.com/blog/managing_wifi_connections_using_the_mac_osx_terminal_command_line/</guid></item><item><title>Intrinsic Bias</title><link>https://www.danstroot.com/posts/2013-10-15-intrinsic-bias</link><description>&lt;img alt="post image" src="https://danstroot.imgix.net/assets/blog/img/bias.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;As a CIO in a large, publicly owned financial services company I held the responsibility of keeping our clients (and our corporate) data safe and secure.  As the economics of cloud services became compelling the largest hurdle to adoption was "potential security risks", by a large measure.&lt;br /&gt;&lt;br /&gt;This post &lt;a href="https://www.danstroot.com/posts/2013-10-15-intrinsic-bias"&gt;Intrinsic Bias&lt;/a&gt; first appeared on &lt;a href="https://www.danstroot.com"&gt;Dan Stroot's Blog&lt;/a&gt;</description><author>Dan Stroot</author><pubDate>Tue, 15 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.danstroot.com/posts/2013-10-15-intrinsic-bias</guid></item><item><title>Sherlocking Everyone Else</title><link>https://zacs.site/blog/sherlocking-everyone-else.html</link><description>&lt;p&gt;The last few years have seen a great proliferation of linkblogs, by far and away the most popular topic of which is technology and, specifically, Apple. Nevertheless the likes of John Gruber&amp;#160;&amp;#8212;&amp;#160;who did not, despite many erroneous beliefs, invent either the format or topic&amp;#160;&amp;#8212;&amp;#160;and Shawn Blanc have made their mark as entrants to a space established long before their arrival. This not only happens in the blogging space, but the podcasting industry as well where interview shows like Daniel Jalkut&amp;#8217;s &lt;em&gt;Bitsplitting&lt;/em&gt; came in and &lt;em&gt;sherlocked&lt;/em&gt;&amp;#160;&amp;#8212;&amp;#160;ugh&amp;#160;&amp;#8212;&amp;#160;the existing space, which already had &lt;em&gt;plenty&lt;/em&gt; of interview programs, with a really great show.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/sherlocking-everyone-else.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 14 Oct 2013 19:43:16 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/sherlocking-everyone-else.html</guid></item><item><title>Ben Thompson Leaves The Cubed Podcast</title><link>http://stratechery.com/2013/site-announcement-im-leaving-cubed-podcast/</link><description>&lt;p&gt;This is how one should leave a podcast, respectful of both his listeners and co-hosts alike. &lt;a href="https://zacs.site/blog/regarding-the-talk-show.html"&gt;Not that I&amp;#8217;m pointing any fingers&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;This isn&amp;#8217;t the end of the road for me on the podcasting front; I&amp;#8217;ll still appear as a guest on various shows, and have ideas on what might make sense for stratechery in both the near and short term. In the meantime, though, I&amp;#8217;ll simply be a listener and a learner of Cubed, not a host.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;My thanks to both Ben Bajarin and Benedict Evans for the opportunity.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://stratechery.com/2013/site-announcement-im-leaving-cubed-podcast/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 14 Oct 2013 19:00:31 GMT</pubDate><guid isPermaLink="true">http://stratechery.com/2013/site-announcement-im-leaving-cubed-podcast/</guid></item><item><title>5 Things I Do Not Miss about San Francisco</title><link>https://huphtur.nl/5-things-i-do-not-miss-about-san-francisco/</link><description>&lt;p&gt;&lt;a href="http://instagram.com/p/eNG_e#"&gt;&lt;img alt="streetspam." src="https://huphtur.nl/images/streetspam.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://twitter.com/KarlTheFog"&gt;Karl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=qcdNaajKExs"&gt;Recycling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bikesnobnyc.blogspot.com/2011/05/probing-for-answers-cat-6-racing-boom.html"&gt;Cat 6 racing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://instagram.com/p/eNG_e/"&gt;Street spam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/wednesdaynight/status/389028925344473089"&gt;Layer programming&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><author>huphtur</author><pubDate>Mon, 14 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://huphtur.nl/5-things-i-do-not-miss-about-san-francisco/</guid></item><item><title>Tooling for Simple but Informative Emails</title><link>/2013/10/13/Tooling-for-Simple-but-Informative-Emails/</link><description>&lt;p&gt;Emails are one of my favorite methods of communicating with users. Its works as a quick test for product validation. It works well at one-&amp;gt;some-&amp;gt;many-&amp;gt; all. Its still highly effective even as much noise as we receive in our inboxes. Over the years I&amp;rsquo;ve tried a lot of email tools from custom built solutions, to newer entrants that help around drip actions (&lt;a href="http://www.intercom.io"&gt;intercom.io&lt;/a&gt; and &lt;a href="http://www.customer.io"&gt;customer.io&lt;/a&gt;), to more &amp;ldquo;enterprise&amp;rdquo; tools such as Marketo. While I have varying opinions on all of those, I still find myself coming back to a simple one off script setup to deliver clear concise emails.&lt;/p&gt;
&lt;h3 id="getting-the-data"&gt;
&lt;div&gt;
Getting the Data
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;The first step of any email is deciding what you want to do, but hopefully you know that already. The part that is usually a bit more effort is actually getting the list to send it to and formatting it appropriately. I usually opt for SQL. While the specifics of the query of course always vary it common follows a general structure:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;WITH initial_data AS (
SELECT
email,
app_name,
information_about_app
FROM
users,
apps
WHERE users.id = apps.user_id
AND some_filter_to_limit_data
),
candidates_for_email AS ... --- likely to have additional CTEs
--- Finally I build up the list
SELECT email,
array_to_string(array_agg(data_for_email), '
') --- an important note is to add a newline or not here depending on how you wish to format it
FROM candidates_for_email
GROUP BY email;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The query structure you&amp;rsquo;ll want is first column email, second column whatever data you want to include in your email.&lt;/p&gt;
&lt;p&gt;From here I usually create a dataclip of it. This makes it easy to allow my data to change over time. If I&amp;rsquo;m testing an email for data over the last 7 days I just come back in 7 days and I have new data. It also lets me easily share and iterate on the data. The nice part is there&amp;rsquo;s an easy way to click a button and get the data as a CSV which is what you want for sending.&lt;/p&gt;
&lt;p&gt;Once you download the CSV you&amp;rsquo;ll want to remove the header line as its not needed for the script.&lt;/p&gt;
&lt;h3 id="sending-the-mail"&gt;
&lt;div&gt;
Sending the Mail
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;To actually send the email you&amp;rsquo;ll need this script, which is largely credited to &lt;a href="http://www.twitter.com/leinweber"&gt;@leinweber&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;require 'mail'
require 'csv'
FILE = ARGV[0]
Mail.defaults do
delivery_method :smtp, {
address: 'smtp address',
port: 587,
domain: 'gmail.com',
user_name: 'craig.kerstiens@gmail.com',
password: ENV.fetch('EMAIL_PASSWORD'),
authentication: :plain,
enable_starttls_auto: true
}
end
def send_email(address, app)
mail = Mail.new do
to address
from 'Craig Kerstiens &amp;lt;craig.kerstiens@gmail.com&amp;gt;'
subject &amp;quot;Your email subject in here&amp;quot;
body generate_body(app)
end
end
def generate_body(app)
%Q(
Hi,
Your list of apps:
#{app}
Various email content in here...
)
end
CSV.parse(File.read(FILE)).each do |line|
address = line[0]
app = line[1]
m = send_email(address, app)
puts m.to_s
p m.deliver!
puts
puts
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;You&amp;rsquo;ll want to make sure to export the PW of your email provider with EXPORT EMAIL_PASSWORD=pw_here&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You can easily download this script from off of &lt;a href="https://gist.github.com/craigkerstiens/6922897"&gt;Github&amp;rsquo;s Gist&lt;/a&gt;. I&amp;rsquo;d recommend using an email service provider other than Gmail in sending your emails such as &lt;a href="http://www.mailgun.com"&gt;mailgun&lt;/a&gt; as they&amp;rsquo;re built to handle sending a large amount of emails. Finally send your emails:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ruby email.rb nameofyourfile.csv
&lt;/code&gt;&lt;/pre&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Sun, 13 Oct 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/10/13/Tooling-for-Simple-but-Informative-Emails/</guid></item><item><title>The Ultimate Plot Intensifier</title><link>https://zacs.site/blog/the-ultimate-plot-intensifier.html</link><description>&lt;p&gt;The question of whether Clark Kent as Superman should or should not kill is an extremely interesting one, and one I have spent quite a bit of time thinking about since seeing &lt;em&gt;Man of Steel&lt;/em&gt; a few weeks ago. For the uninitiated, the controversy sprang up when Superman killed General Zod to save a family after destroying the whole of Metropolis throughout the course of their battle.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-ultimate-plot-intensifier.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 13 Oct 2013 21:21:57 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-ultimate-plot-intensifier.html</guid></item><item><title>First foray into Unity</title><link>https://liza.io/first-foray-into-unity/</link><description>&lt;p&gt;I haven&amp;rsquo;t posted here in a while because I&amp;rsquo;ve been lazy and there hasn&amp;rsquo;t really been enough happening to warrant a full post. A quick recap.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 13 Oct 2013 03:11:14 GMT</pubDate><guid isPermaLink="true">https://liza.io/first-foray-into-unity/</guid></item><item><title>True Awe</title><link>http://localhost:4999/articles/2013/10/13/true-awe/</link><description>&lt;img alt="Climb Every Mountain" src="http://farm5.staticflickr.com/4142/4741860071_3110aaf431_b.jpg" /&gt;
&lt;p&gt;Holy, holy, holy, holy is the Lord God Almighty, who was, who is, and who is to come.&lt;/p&gt;
&lt;p&gt;Forgive us Lord, for I fear we have lost the awe due the Lord of tempests, fjords, canyons, and quasars. Too often we allow our devotion to be constrained by the glorified conference rooms in which we worship. As the PowerPoint clicks to the next slide in the popular worship song we forget that the God we address from our comfortable office chair holds the world in His hands and propels the wind and sea with His voice.&lt;/p&gt;
&lt;img alt="Glory in the Rotunda" src="http://farm6.staticflickr.com/5294/5506310688_ab85b5b782_b.jpg" /&gt;
&lt;p&gt;We forget that ancient man, confronted with your infinite nature and with your immense creation devoted his life and the life of his children's children to the building of cathedrals, temples, pagodas, and palaces dedicated to bloodthirsty false gods and demons. Yet we sit, smugly sipping our Starbucks, and wishing that the collection fund would go to better upholstery.&lt;/p&gt;
&lt;p&gt;Forgive us. Forgive me.&lt;/p&gt;
&lt;p&gt;I have forgotten that the night sky above my head is illumined by ten million nuclear explosions that you have named and carefully placed to speak your majesty until the day the universe ends. I do not call to mind the vast wastes of rock and tree that you have placed in perfect compositions to create landscapes of beauty that can only be captured and never reimagined by man. I overlook the wonder that is my own existence, that the simplest cells within my body are more perfectly engineered and crafted than the most extravagant robotic marvel of mankind.&lt;/p&gt;
&lt;p&gt;In this democratic age, we remember what it is to serve a God of love and mercy, but we have forgotten what it is to fall down before the God of majesty and awe.&lt;/p&gt;
&lt;img alt="Untitled" src="http://farm4.staticflickr.com/3473/3262291513_ca1d5105ec_b.jpg" /&gt;
&lt;p&gt;So capture our hearts. Let us peek behind the curtain and spy with shaking and terrified eyes the vast Crystal Sea, to hear the booming praise of the twenty four elders resonate in the murmuring throng of ten thousand redeemed souls from every tribe and tongue, worshipping ceaselessly as they honor The Lamb.&lt;/p&gt;
&lt;p&gt;How can we sit in indolent and sleepy silence when our entire eternity is shaped by this one fact: that the Most High God reigns, and that He actually cares for and loves us.&lt;/p&gt;
&lt;img alt="Garden of Eden" src="http://farm3.staticflickr.com/2842/9267511521_4e18024484_b.jpg" /&gt;
&lt;p&gt;Let the truth of your majesty pierce and take root in my heart. May my worship be deepened by my knowledge of how absolutely incomprehensible it is that one as great as you take notice of me and my needs. Glory be to your name.&lt;/p&gt;
&lt;p&gt;All photos from my photostream, &lt;a href="http://flickr.com/evantravers/"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><author>trv.rs</author><pubDate>Sun, 13 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/10/13/true-awe/</guid></item><item><title>Protip: Unsync the "Index" Folder of Sublime Text 3 from Dropbox</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/protip-unsync-the-index-folder-of-sublime-text-3-from-dropbox</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Sat, 12 Oct 2013 07:26:30 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/protip-unsync-the-index-folder-of-sublime-text-3-from-dropbox</guid></item><item><title>My Uni's timetable system sucks, so I built a better one.</title><link>https://tomforb.es/blog/my-uni-s-timetable-system-sucks-so-i-built-a-better-one-1/</link><description>tl;dr The timetable system sucks, so I made one that works Getting your timetable sorted at Uni has never been fun. In years 1 and 2 of my study the department posted a timetable for each year showing all modules and students were expected to remove the classes they did not take, which while not the...</description><author>Tom Forbes</author><pubDate>Sat, 12 Oct 2013 02:05:09 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/my-uni-s-timetable-system-sucks-so-i-built-a-better-one-1/</guid></item><item><title>Objective-C</title><link>https://3059274a.danpalmer-me.pages.dev/2013-10-12-objective-c/</link><description>&lt;p&gt;If I mentioned that I like C, C++ or Python to other students on my course, or colleagues, there would be no reaction. There are things you can criticise about each one, but they are all very safe bets. When I tell people that I enjoy writing Objective-C however, they are confused and often quite hostile towards the language.&lt;/p&gt;
&lt;p&gt;I am by no means an Objective-C expert, but I&amp;rsquo;ve been thinking through the reasons &lt;em&gt;why&lt;/em&gt; I like it, so this is a random collection of reasons why I enjoy using the language.&lt;/p&gt;</description><author>Dan Palmer</author><pubDate>Sat, 12 Oct 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://3059274a.danpalmer-me.pages.dev/2013-10-12-objective-c/</guid></item><item><title>"New Game!!!": Great email exchange from my flatshare</title><link>https://www.databasesandlife.com/new-game/</link><description>&lt;p&gt;&lt;em&gt;I am writing this blog post in October 2012; this will get published automatically in one year, like government secrets published 50 years after the event. But this just &lt;strong&gt;cannot&lt;/strong&gt; not be shared.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;One of my flatmates has just written an email to all:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Subject: New Game!!!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s time for a little Game called&amp;hellip; &amp;hellip; &amp;hellip;  &amp;ldquo;Clean your dishes and live in peace&amp;rdquo; !!&lt;/p&gt;
&lt;p&gt;Few assertions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Human being has to live in an hygenic place&lt;/li&gt;
&lt;li&gt;Everyone is respectful&lt;/li&gt;
&lt;li&gt;Time to:  putting your plates, glasses, cutleries in the dishwasher + clean by yourself pan, saucepan(Yes, because as you know hot water is expensive and Earth ask us to do not waste it)  =  takes no more than 5 minutes&lt;/li&gt;
&lt;li&gt;A clean kitchen is an area where everyone can go and enjoy it (because currently it&amp;rsquo;s not really welcoming)&lt;/li&gt;
&lt;li&gt;Live in a sharing flat is also comply with basics rules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If anyone is not interested about this &amp;ldquo;game&amp;rdquo; we are all enough mature to talk about it.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Fri, 11 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/new-game/</guid></item><item><title>Show current git branch in PS1 when branch is not master</title><link>https://purpleidea.com/blog/2013/10/10/show-current-git-branch-in-ps1-when-branch-is-not-master/</link><description>&lt;p&gt;Short post, long command&amp;hellip;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve decided to start showing the current &lt;a href="http://github.com/purpleidea/" title="git"&gt;git&lt;/a&gt; branch in my &lt;em&gt;PS1&lt;/em&gt;. However, since I don&amp;rsquo;t want to know when I&amp;rsquo;m on &lt;em&gt;master&lt;/em&gt;, I had to write a new PS1 that I haven&amp;rsquo;t yet seen anywhere. Add the following to your &lt;em&gt;.bashrc&lt;/em&gt;:
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-bash"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #b8860b;"&gt;PS1&lt;/span&gt;&lt;span style="color: #666;"&gt;=&lt;/span&gt;&lt;span style="color: #b44;"&gt;'${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #a2f; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #666;"&gt;[&lt;/span&gt; -e /usr/share/git-core/contrib/completion/git-prompt.sh &lt;span style="color: #666;"&gt;]&lt;/span&gt;; &lt;span style="color: #a2f; font-weight: bold;"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    . /usr/share/git-core/contrib/completion/git-prompt.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #b8860b;"&gt;PS1&lt;/span&gt;&lt;span style="color: #666;"&gt;=&lt;/span&gt;&lt;span style="color: #b44;"&gt;'${debian_chroot:+($debian_chroot)}\u@\h:\w$([ "$(__git_ps1 %s)" != "" -a "$(__git_ps1 %s)" != "master" ] &amp;amp;&amp;amp; (echo -e " (\[33[32m\]"$(__git_ps1 "%s")"\[33[0m\])") || echo "")\$ '&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #a2f; font-weight: bold;"&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Fri, 11 Oct 2013 01:16:28 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/10/10/show-current-git-branch-in-ps1-when-branch-is-not-master/</guid></item><item><title>An Ode to Sachin Tendulkar</title><link>https://honestmusings.wordpress.com/2013/10/10/an-ode-to-sachin-tendulkar/</link><description>The slight tickle off the face, The fierce knock in subtle grace, The quickest rumble in the race, The enemies did, bow and brace. The wildest tornado in the calmest sea, The orbs of fire in a gentle spree, The lord of wind in the mountain&amp;#8217;s lee, The knights did, scrum yet flee. The Demon &amp;#8230; &lt;a class="more-link" href="https://honestmusings.wordpress.com/2013/10/10/an-ode-to-sachin-tendulkar/"&gt;Continue reading &lt;span class="screen-reader-text"&gt;An Ode to Sachin&amp;#160;Tendulkar&lt;/span&gt;&lt;/a&gt;</description><author>Honest Musings</author><pubDate>Thu, 10 Oct 2013 16:40:19 GMT</pubDate><guid isPermaLink="true">https://honestmusings.wordpress.com/2013/10/10/an-ode-to-sachin-tendulkar/</guid></item><item><title>Percloud crowdfunding, Albanian Translation</title><link>https://stop.zona-m.net/2013/10/percloud-crowdfunding-albanian-translation/</link><description>&lt;p&gt;&lt;em&gt;(this is a translation in Albanian of my &lt;a href="http://www.indiegogo.com/projects/personal-cloud-free-software"&gt;percloud crowdfunding call&lt;/a&gt;, kindly provided by Gagi Berani. An Italian translation is &lt;a href="http://yanfry.wordpress.com/2013/09/23/percloud-il-cloud-personale-con-freesoftware-come-alternativa-ai-servizi-centralizzati/"&gt;here&lt;/a&gt;. Thanks in advance to whoever may provide translations in other languages)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Permbledhje e shkurte&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Unë jam një autor freelance, hulumtues, dhe aktivist që punon në çeshtjet e të drejtave digjitale dhe të Softuerit të lirë. Mund të lexoni lidhur më punën dhe background-in tim &lt;a href="http://mfioretti.com"&gt;këtu&lt;/a&gt;.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Thu, 10 Oct 2013 10:44:38 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/10/percloud-crowdfunding-albanian-translation/</guid></item><item><title>PHP: The slums of the Programming World?</title><link>http://jrgns.net/blog/2013/10/10/is-php-the-slums-of-the-programming-world.html</link><description>&lt;p&gt;I presented this at &lt;a href="http://www.tech4africa.com"&gt;Tech4Africa 2013&lt;/a&gt;. The slides can be found &lt;a href="http://jrgns.net/talks/phpslums"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h1 id="quick-history-of-php"&gt;Quick History of PHP&lt;/h1&gt;

&lt;p&gt;PHP was initially created by Rasmus Lerdorf when he got irritated by repetitive coding of CGI calls. He consolidated a number of
functions into a C library and created a parser which would call these functions out of HTML. And so PHP was born! Versions
2 and 3 were formalizations and extensions of the libraries, still using Rasmus’ parser.&lt;/p&gt;

&lt;p&gt;The Zend Engine replaced Rasmus’ parser for version 4, introducing OOP capabilities, and in Version 5 Zend Engine 2 was
introduced. Recent versions of PHP saw even more improvements, most notable namespaces in 5.3 and a built in web server
and traits in 5.4&lt;/p&gt;

&lt;p&gt;There’s no ideology or design philosophy, except that it should be a &lt;a href="http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html"&gt;simple tool to solve problems&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“I’ve never thought of PHP as more than a simple tool to solve problems”&lt;/p&gt;

  &lt;p&gt;&lt;a href="https://twitter.com/rasmus/status/1938080214814720"&gt;Rasmus Lerdorf 2010&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id="lies-damned-lies-and-"&gt;Lies, Damned Lies and …&lt;/h1&gt;

&lt;p&gt;&lt;img alt="TIOBE Language trends" src="/img/tiobe-language-trends.png" /&gt;&lt;/p&gt;

&lt;p&gt;Despite a worsening reputation, the language hasn’t decreased in popularity.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Web Language Trends" src="/img/web-language-trends.png" /&gt;&lt;/p&gt;

&lt;p&gt;Less searches are being done for PHP.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Framework Trends" src="/img/framework-trends.png" /&gt;&lt;/p&gt;

&lt;p&gt;If you look at the JavaScript vs JQuery trends, JavaScript is also decreasing, but JQuery is increasing. It seems like
the programming community is realising that frameworks are a good idea.&lt;/p&gt;

&lt;p&gt;&lt;img alt="PHP Framework Trends" src="/img/php-framework-trends.png" /&gt;&lt;/p&gt;

&lt;p&gt;So if you look at PHP frameworks, searches on them are also increasing, especially after 2013 when Zend 2 and Symfony 2
were released.&lt;/p&gt;

&lt;p&gt;&lt;img alt="PHP Usage" src="/img/php-usage.png" /&gt;&lt;/p&gt;

&lt;p&gt;No shortage of hosts offering PHP.&lt;/p&gt;

&lt;h1 id="who-uses-it"&gt;Who uses it?&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;User facing portion of Facebook through HipHop PHP (which generates C++)&lt;/li&gt;
  &lt;li&gt;Wordpress - Application turned framework&lt;/li&gt;
  &lt;li&gt;Yahoo (for now). They are replacing it with Node.&lt;/li&gt;
  &lt;li&gt;Wikipedia / Mediawiki&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id="embrace-the-cactus"&gt;Embrace the Cactus&lt;/h1&gt;

&lt;p&gt;It’s easy to create insecure / buggy code in PHP:&lt;/p&gt;

&lt;div class="language-php highlighter-rouge"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;    mysql_query("SELECT * FROM `users` WHERE `username` = $_GET['username']");
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;PHP accounts for only 18% of applications covered by the &lt;abbr class="Common Vulnerabilities and Exposures"&gt;&lt;a href="http://www.coelho.net/php_cve.html"&gt;CVE&lt;/a&gt;&lt;/abbr&gt;, but accounts for almost 29% of the  vulnerabilities&lt;/p&gt;

&lt;p&gt;It’s developed a bad reputation in the programming community:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Bringing a knife to a gun fight is like bringing PHP to a modern web stack.&lt;/p&gt;

  &lt;p&gt;&lt;a href="https://twitter.com/iamdevloper/status/380285502580338688"&gt;@iamdevloper&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Settings such as &lt;code class="highlighter-rouge"&gt;register_globals&lt;/code&gt; and &lt;code class="highlighter-rouge"&gt;magic_quotes&lt;/code&gt; that defaulted to &lt;code class="highlighter-rouge"&gt;on&lt;/code&gt; opened up a lot of security holes&lt;/p&gt;

&lt;p&gt;No unified community. In general, the community is great. In the rare cases where the PHP documentation (or even the language) is insufficient,
you can usually find something of value in the comments. Yet, there is a lot of conflict in both the official (like PHP internals) and
the unofficial (like &lt;a href="http://www.php-fig.org/"&gt;PHP-FIG&lt;/a&gt;) communities.&lt;/p&gt;

&lt;p&gt;If you look at the debate on what to use for indentation, &lt;a href="http://philsturgeon.co.uk/blog/2013/04/psr2-the-tough-decision"&gt;tabs&lt;/a&gt; vs &lt;a href="https://github.com/php-fig/fig-standards/pull/35"&gt;spaces&lt;/a&gt;, the community is in total disarray.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Tabs Not Spaces Slugfest" src="/img/tabs-not-spaces.png" /&gt;&lt;/p&gt;

&lt;p&gt;Inconsistencies in naming functions:&lt;/p&gt;

&lt;div class="language-php highlighter-rouge"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;strrev     // String Function
str_repeat // String Function
explode    // String Function
// At least somewhat consistent
strpos($haystack, $needle)
array_key_exists($needle, $haystack)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Object Oriented, or just Object Capable? - &lt;a href="http://michaelkimsal.com/blog/php-is-not-object-oriented/"&gt;Michael Kimsal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So you can do Object Oriented Programming as well as Procedural and Functional Programming in PHP (especially PHP 5.3 and later).&lt;/p&gt;

&lt;h1 id="see-you-on-the-flip-side"&gt;See you on the flip side…&lt;/h1&gt;

&lt;h2 id="php-53"&gt;PHP 5.3&lt;/h2&gt;

&lt;p&gt;PHP 5.3 is for me a watershed version on PHP’s history - It introduced a number of features / capabilities that made it possible
for some of the other factors I’ll mention to come into existence. The most notable feature is namespaces, making it easier
to name classes in a sane way. A lot of people welcomed the introduction of lambda functions and closures.&lt;/p&gt;

&lt;p&gt;I think the PHP developers and community realized that PHP was becoming outdated and had a lot of valid issues that needed
to be addressed. For me 5.3 was a definite step in the right direction. It introduced (amongst other things):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Namespaces&lt;/li&gt;
  &lt;li&gt;Closures and Lambda functions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="php-fig"&gt;PHP-FIG&lt;/h2&gt;

&lt;p&gt;Although it seems to generate a lot of conflict, the PHP-FIG has managed to at least get the different frameworks talking.
It’s an unofficial (as in not sponsored by PHP) group formed by various frameworks and projects whose aim it is to get
the projects talking and to find ways to work together. It’s not always plain sailing, but it seems to get to valuable
decisions. Eventually.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md"&gt;PSR-0&lt;/a&gt; has enabled the creation of packaging software such as composer / packagist&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md"&gt;PSR-1&lt;/a&gt; and &lt;a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md"&gt;PSR-2&lt;/a&gt; generated a lot of conflict, but at least all of the participating frameworks partially agreed on coding standards&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md"&gt;PSR-3&lt;/a&gt; and &lt;a href="https://github.com/php-fig/fig-standards/blob/master/proposed/psr-4-autoloader/psr-4-autoloader.md"&gt;PSR-4&lt;/a&gt; aren’t momentous decisions, but they at least pave the way forward for increased collaboration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="packagist--composer"&gt;Packagist / Composer&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://getcomposer.org/"&gt;Composer&lt;/a&gt; is a tool to manage dependencies for a project, and manages and installs dependencies on a per project
basis. Very much on par with node’s npm and ruby’s bundler. &lt;a href="https://packagist.org/"&gt;Packagist&lt;/a&gt; is a repository for composer packages and
makes it dead simple to find a package / library that will address your specific need. Before this, we had PEAR, but
that was usually a headache to set up and version properly locally, not to mention on a shared host.
Now it’s as simple as doing&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;    composer require &lt;span class="s2"&gt;"vendor/library"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;To a certain extent the improvements in PHP 5.3 and some of the work from PHP-FIG made this possible, although composer
could have existed without them.&lt;/p&gt;

&lt;h2 id="modern-frameworks"&gt;Modern Frameworks&lt;/h2&gt;

&lt;p&gt;The combination of PHP 5.3 (specifically namespaces and proper OO support), the work of the PHP-GIH and the development
of Composer made it possible to not only create frameworks such as Symfony2, Zend2 and Laravel, but also to reuse components
from these frameworks in other projects. Drupal 8 uses a lot of Symfony2’s components. PPI is a framework built using
both Zend2 and Symfony2 components. You can now easily choose and combine libraries without having to manage class names
or dependencies. This has at least two direct advantages for project developers:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Instant access to a whole range of precoded, quality, libraries.&lt;/li&gt;
  &lt;li&gt;No more wasting time on managing dependencies and name clashes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id="so-slum-or-diamond-in-the-rough"&gt;So, Slum or Diamond in the Rough?&lt;/h1&gt;

&lt;blockquote&gt;
  &lt;p&gt;Good systems cater for users’ mistakes, great systems also cater for developers’ mistakes…&lt;/p&gt;

  &lt;p&gt;&lt;a href="https://twitter.com/jrgns/status/365357629469499392"&gt;Jrgns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My opinion is, there is no right answer. To a certain extent, PHP can be described as a horrible language that makes it
very easy to introduce bugs and security issues. It doesn’t give you guidance on how to do anything, and can’t seem to
decide if it’s procedural or object oriented. In the same breath, it gives you a lot of freedom to code according to your
style, and makes a lot of common coding tasks very easy to do. Successful business have been built and are still running
on PHP.&lt;/p&gt;

&lt;p&gt;If you’ve never coded anything but PHP and have no formal programming education (including good programming books), you’re
probably coding crappy PHP. Probably. I’d suggest you start reading up on good programming practices, start reading code
that’s of a high quality, and start learning other programming languages, especially stricter ones like Java, or start
using frameworks such as Symfony2 and Laravel that at least guides you in the right direction. Speaking multiple natural
languages keeps your brain sharp and young. Coding in &lt;a href="http://www.sciencemag.org/content/330/6002/332.summary"&gt;multiple languages&lt;/a&gt; makes you a better coder.&lt;/p&gt;

&lt;p&gt;If you know what you’re doing and you perhaps have some extra experience in a more structured language such as Java or Ruby,
you’re probably coding quality PHP. It’s un-opinionated, so, as long as you know what you’re doing, it can be a great tool.
Don’t discount the language just because it’s lost it’s coolness factor. You can write quality code in PHP.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Sheer Iron WIlled Discipline" src="/img/sheer-iron-willed-discipline.png" /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you can pull it off, you’re badass as hell, but most of the time you’re only going to end up stabbing yourself.&lt;/p&gt;

  &lt;p&gt;&lt;a href="https://twitter.com/ohpalmer/status/380290678502461440"&gt;ohpalmer&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><author>Jurgens du Toit</author><pubDate>Thu, 10 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://jrgns.net/blog/2013/10/10/is-php-the-slums-of-the-programming-world.html</guid></item><item><title>Belgian egg house</title><link>http://www.theverge.com/2013/10/6/4809670/belgian-egg-house-combines-bed-bath-and-kitchen-in-self-contained-unit</link><description>&lt;p&gt;While it seems the photographer did his best to portray the house as much larger than it actually is, this Belgian &amp;#8220;egg house&amp;#8221; is nevertheless a very impressive and interesting alternative structure.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/10/6/4809670/belgian-egg-house-combines-bed-bath-and-kitchen-in-self-contained-unit"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 10 Oct 2013 00:38:21 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/10/6/4809670/belgian-egg-house-combines-bed-bath-and-kitchen-in-self-contained-unit</guid></item><item><title>The Samsung Galaxy Curve: The Greatest Thing since Sliced PVC</title><link>https://zacs.site/blog/the-samsung-galaxy-curve-the-greatest-thing-since-sliced-pvc.html</link><description>&lt;p&gt;A few days ago I watched a strange article from The Verge titled &lt;a href="http://www.theverge.com/2013/10/7/4811508/lg-flexible-oled-mass-production-announcement"&gt;&lt;em&gt;LG starts producing curved displays to cure dull phone design&lt;/em&gt;&lt;/a&gt; scroll by in my RSS reader, but paid it little attention. Then, last night, another item caught my eye: &lt;a href="http://www.theverge.com/2013/10/8/4817564/samsung-curved-smartphone-leaked-image"&gt;&lt;em&gt;Is this Samsung&amp;#8217;s curved smartphone?&lt;/em&gt;&lt;/a&gt; Although still unconvinced as to the form factor&amp;#8217;s upsides, I nevertheless opened the article. Shortly thereafter, to my delight, the last piece confirmed the rumor: &lt;a href="http://www.theverge.com/2013/10/8/4818572/samsung-galaxy-round-curved-oled-smartphone-official"&gt;&lt;em&gt;Samsung announces the Galaxy Round, a smartphone with a curved OLED display&lt;/em&gt;&lt;/a&gt;. From Sam Byford&amp;#8217;s article:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-samsung-galaxy-curve-the-greatest-thing-since-sliced-pvc.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 09 Oct 2013 23:19:30 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-samsung-galaxy-curve-the-greatest-thing-since-sliced-pvc.html</guid></item><item><title>Here is how the percloud would work, in practice</title><link>https://stop.zona-m.net/2013/10/here-is-how-the-percloud-would-work-in-practice/</link><description>&lt;p&gt;I just got an email by somebody asking how the Free Software alternative to corporate social networks that I call &lt;a href="http://per-cloud.com"&gt;percloud&lt;/a&gt; would work. I answered that&amp;hellip;&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Wed, 09 Oct 2013 11:55:36 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/10/here-is-how-the-percloud-would-work-in-practice/</guid></item><item><title>A Sober Cannibal (From Moby Dick)</title><link>https://ho.dges.online/words/commonplace/a-sober-cannibal-from-moby-dick/</link><description>&lt;p&gt;Better sleep with a sober cannibal than a drunken Christian.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Herman Melville, Moby Dick&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>ho.dges.online</author><pubDate>Wed, 09 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/a-sober-cannibal-from-moby-dick/</guid></item><item><title>Habbo You Tell Me How to Act</title><link>https://xavd.id/blog/post/habbo-you-tell-me-how/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/habbo-you-tell-me-how/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Wed, 09 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/habbo-you-tell-me-how/</guid></item><item><title>Podcasting State of the Union</title><link>https://zacs.site/blog/podcasting-state-of-the-union.html</link><description>&lt;p&gt;As a huge fan of the medium myself, over the last two weeks I have followed a burgeoning discussion on the podcasting industry with great interest. Across the board, the discourse has remained almost universally positive: &lt;a href="http://512pixels.net/2013/09/because-podcasts-awesome/"&gt;Stephen Hacket&lt;/a&gt;, &lt;a href="http://unretrofied.com/blog/2013/9/26/ios-7-and-the-state-of-podcast-apps"&gt;Chris Gonzales&lt;/a&gt;, &lt;a href="http://www.macstories.net/linked/ios-7-and-podcast-apps/"&gt;Federico Viticci&lt;/a&gt;, and &lt;a href="http://512pixels.net/2013/10/hurley-podcasting/"&gt;Myke Hurley&lt;/a&gt; have all expressed considerable enthusiasm for the changes iOS 7 in particular signals for this space, and great hope for its future. Unsurprisingly, not all share these positive sentiments.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/podcasting-state-of-the-union.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 08 Oct 2013 22:26:10 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/podcasting-state-of-the-union.html</guid></item><item><title>The real problem that the percloud wants to solve, and why it's still necessary</title><link>https://stop.zona-m.net/2013/10/the-real-problem-that-the-percloud-wants-to-solve-and-why-its-still-necessary/</link><description>&lt;p&gt;Believe it or not, I only discovered arKos last Friday, through this &lt;a href="http://linux.slashdot.org/story/13/10/04/0338239/arkos-building-the-anti-cloud-on-a-raspberry-pi"&gt;Slashdot announcement&lt;/a&gt;: a project (apparently) very similar to the &lt;a href="http://per-cloud.com"&gt;percloud&lt;/a&gt;, which is my own proposal for a Free Software alternative to Facebook, Gmail &amp;amp;C.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Tue, 08 Oct 2013 00:59:16 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/10/the-real-problem-that-the-percloud-wants-to-solve-and-why-its-still-necessary/</guid></item><item><title>Why doesn’t ALTER SYSTEM SET EVENTS set the events or tracing immediately?</title><link>https://tanelpoder.com/2013/10/07/why-doesnt-alter-system-set-events-set-the-events-or-tracing-immediately/</link><description>&lt;p&gt;I received a question about ALTER SYSTEM in the comments section of another blog post recently.&lt;/p&gt;
&lt;p&gt;The question was that while &lt;strong&gt;ALTER SESSION SET EVENTS ‘10046 … ‘&lt;/strong&gt; enabled the SQL Trace for the current session immediately, &lt;strong&gt;ALTER SYSTEM&lt;/strong&gt; on the other hand didn&amp;rsquo;t seem to do anything at all for &lt;em&gt;other&lt;/em&gt; sessions in the instance.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s an important difference in the behavior of ALTER SYSTEM when changing paramters vs. setting events.&lt;/p&gt;
&lt;p&gt;For example, ALTER SYSTEM SET optimizer_mode = CHOOSE would change the value of this &lt;em&gt;parameter&lt;/em&gt; immediately, for:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Your own session&lt;/li&gt;
&lt;li&gt;All new sessions that will log in will pick up the new parameter value&lt;/li&gt;
&lt;li&gt;All other &lt;em&gt;existing&lt;/em&gt; sessions&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;However, when you issue an ALTER SYSTEM SET EVENTS ‘10046 TRACE NAME CONTEXT FOREVER, LEVEL 12&amp;rsquo;, the event changes in only #1 and #2 will happen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Your own session&lt;/li&gt;
&lt;li&gt;All new sessions that will log in will pick up the new event settings&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This means that the existing, already logged in sessions, will not pick up any of the events set via ALTER &lt;em&gt;SYSTEM&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Update 1:&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;Note that since Oracle 11g there&amp;rsquo;s a parameteter “&lt;strong&gt;_evt_system_event_propagation&lt;/strong&gt;” (default TRUE) and it makes Oracle to propagate the “ALTER SYSTEM” events into existing sessions too. So this problem described above applies only up to Oracle 10.2.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Update 2:&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;Oracle 12.2 seems to have a bug that prevents some events (at least one &lt;strong&gt;ALTER SYSTEM SET sql_trace&lt;/strong&gt; example with a SQL_ID qualifier) from being propagated correctly to other database sessions (&lt;a href="https://www.freelists.org/post/oracle-l/tracing-specific-sql-id-in-122" rel="noopener" target="_blank"&gt;link&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Update 3:&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;Apparently in Oracle 18.3 the abovementioned bug is &lt;a href="https://nenadnoveljic.com/blog/event-propagation-in-oracle-12-2/"&gt;fixed&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This hopefully explains why sometimes the debug events don&amp;rsquo;t seem to work. But more importantly, this also means that when you disable an event (by setting it to “OFF” or to level 0) with ALTER SYSTEM, it does not affect the existing sessions who have this event enabled! So, you think you&amp;rsquo;re turning the tracing off for all sessions and go home, but really some sessions keep on tracing – until the filesystem is full (and you&amp;rsquo;ll get a phone call at 3am).&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Mon, 07 Oct 2013 18:23:22 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/10/07/why-doesnt-alter-system-set-events-set-the-events-or-tracing-immediately/</guid></item><item><title>Marie in France pt. 4</title><link>https://walkabout165.blogspot.com/2013/10/marie-in-france-pt-4.html</link><description>&lt;div class="MsoNormal"&gt;
&lt;u&gt;Strasbourg, September 17&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
I should be studying right now, but I’m compelled to add
some more notes to my journal, especially since it’s so easy to forget one’s
activities after a few days.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Friday I showed up for the last class of the week, according
to the guide pedagogique emploi du temps, and found two others of our little
quartet waiting for the instructor of Seminaire Pratiques &lt;a href=""&gt;d’ecriture&lt;/a&gt;&lt;span class="MsoCommentReference"&gt;&lt;span style="font-size: 8.0pt; line-height: 107%;"&gt;&lt;!--[if !supportAnnotations]--&gt;&lt;a class="msocomanchor" href="file:///C:/Users/Rick/Desktop/Strasbourg%20-%209-17-13%20edited.docx#_msocom_1" id="_anchor_1" name="_msoanchor_1"&gt;[MS1]&lt;/a&gt;&lt;!--[endif]--&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;:
traductions adaptations, Lea and Julie, both francaises.&amp;nbsp; Fifteen minutes later,&amp;nbsp; I was not at all surprised that she still
hadn’t appeared. So off we went again to HQ, slowly traversing the corridor,
checking all the panneaux for some sort of communication as to why the class
did not take place.&amp;nbsp; After some time we
found a message stating that the class was in session for three hours for each
of four days (12 hours total).&amp;nbsp; But the
days were not indicated.&amp;nbsp; This was
supposedly a “trasversaux” or “sem-transversaux” class involving other
disciplines. Lea, the most self-assertive of our little group, considered it
scandaleux that evidently the other disciplines were notified of the days but
ours was not.&amp;nbsp; We both sent an email to
the instructress at the generic email address, with copies to each other. I
politely, but pointedly, asked her what in blazes was going on.&amp;nbsp; Lea’s message was a little more pointed.&amp;nbsp; &amp;nbsp;As of
today I have not had a reply, I will have to ask Lea if she replied to her
email.&amp;nbsp; The following Monday we were
assembled for our afternoon class with our director, who hadn’t a clue as to
the schedule of Mme-la-prof.&amp;nbsp; Fortunately
one of the second year students, obviously more in touch with the faculty, had
the dates. It turns out all my Fridays are free until November 8.&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
I suspect this is more for the benefit of the
instructors than the students.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Saturday morning I checked out a place which the beauteous
Audrey had set up for me.&amp;nbsp; It was
depressing.&amp;nbsp; Enough said.&amp;nbsp; This was followed by a trip to Place Kleber
for books and supplies.&amp;nbsp; Returning to the
Rue du bon Pasteur, I exercised for the first time since leaving San Francisco,
running in the Parc de l’Orangerie which is quite nearby. Sunday, with the help
of my Mme. Cazenave, Airbnb hostess I checked out apartment rentals, saw one,
not bad but which would not work, no kitchen equipee (stove, oven, sink, etc).
But I did get an appointment for Monday evening for an apartment very nearby,
which would&amp;nbsp; be perfect.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Monday my first class was an elective, Arabic, writing and
speaking. I’ve always wanted to study Arabic, and I think I can do OK with the
speaking, but the writing?&amp;nbsp; Wow.&amp;nbsp; Regardless, &amp;nbsp;I picked up the text at Place Kleber.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
The transportation system in Strasbourg is very
interesting.&amp;nbsp; When boarding the trams you
buy a ticket at the individual stations, then you validate them at a machine
nearby.&amp;nbsp; Or, if you start on a bus, you
can buy the ticket (1.60 euros one way or double that for a round trip), and
you validate the ticket on the bus. You can make a connection between bus/tram
or vice versa, but it has to be within an hour.&amp;nbsp;
At every place you board you have to validate your ticket.&amp;nbsp; I was told the system was strictly regulated,
a fact I found hard to understand since it seemed that you could board a tram
with ease without paying, there was nothing to stop you. &amp;nbsp;Regardless, being a law-abiding individual, I
followed the rules.&amp;nbsp; On the return from
Place Kleber I learned differently. For the first time I saw a ticket agent,
who I guess boards the trams at random times.&amp;nbsp;
He checked everyone’s ticket, including mine, which of course was
perfectly validated.&amp;nbsp; Don’t know what
would have happened had I not had a valid ticket, maybe I would&amp;nbsp; be writing this journal from my jail cell.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Monday afternoon my class was “Theatralites”. The subject
matter is as vague as the title, and cynic that I am, I suspect that it’s an
invention of the faculty to plump up the program.&amp;nbsp; But it’s going to be an important part of the
program, so I better get with it.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Headed for 22 Rue de Johann Sebastian Bach to see the
apartment.&amp;nbsp; Yes it’s perfect, but I was
semi-candid in advising the bailleur (landlord) how long I was going to stay,
definitely a point not in my favor. He had a couple of other people who were
interested, and I will know tomorrow.&amp;nbsp;
Today I sent him an email offering some little incentives which
hopefully will put me in a better light.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Tuesday morning there was a presentation on Cervantes, in
Spanish,&amp;nbsp; by a Spanish professor and
author, Senor Galicio, very interesting, even though I probably understood only
about 70%. In the afternoon I had my Spanish lit class – plays of the Siglo de
Oro – more theater. But I did find out that my copy of Don Juan was probably
not going to work optimally, and that there was a third bookstore at Place
Kleber at the Aubette, a sort of upscale galleria, where I would probably find
a more informative edition – this from a student, as it seems a universal law
that no faculty member is a source of any practical information.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Mme. Cazenave, my Airbnb hostess is working on a certificate
in speech therapy. She was married to a physicist who worked not only at the
University, but also in China, England, the US and elsewhere, and she is fairly
knowledgeable about the university system in France.&amp;nbsp; She tells me that on dit (they say) that the
professors of non-scientific studies are much less serious than the professors
of scientific studies.&amp;nbsp; I don’t doubt it.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Our group at Rue du Bon Pasteur has expanded to four, with
the arrival of Sabrina, a charming flamande, who is in Strasbourg on some sort
of teaching internship.&amp;nbsp; Laure
(francaise) is studying biology at a 2 year vocational institution, which
sounds pretty rigorous from what she tells me.&amp;nbsp;
The two of them are probably similar in age.&amp;nbsp; My hostess, a mature, experienced mother and
grandmother, is still young enough to be my daughter.&amp;nbsp; Regardless, I hope we will become good
friends.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
The nice M. Schneider has sent my helpful hostess an email
with the name and contact of another agent immobilier.&amp;nbsp; If the apartment I’m interested in does not
work out I will give her a call.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
So much for studying. Tomorrow is another day.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="msocomtxt" id="_com_1"&gt;

&lt;!--[if !supportAnnotations]--&gt;&lt;/div&gt;
&lt;!--[endif]--&gt;&lt;/div&gt;
&lt;/div&gt;</description><author>The Walkabout Blog</author><pubDate>Mon, 07 Oct 2013 11:03:04 GMT</pubDate><guid isPermaLink="true">https://walkabout165.blogspot.com/2013/10/marie-in-france-pt-4.html</guid></item><item><title>Marie in Strasbourg part 2</title><link>https://walkabout165.blogspot.com/2013/10/marie-in-strasbourg-part-2.html</link><description>&lt;div class="MsoNormal"&gt;
&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;u&gt;Strasbourg, Tuesday, September 10, 2013&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA9Y8osHAW2o-1jRGUb2vOMME354mikc-S5H_j5WOOTSysj11UPfioVoKTHCOGfb-DfG2Z5jvvzUFS7nab9z7WRlQezF-GCCCsXPGGUT2ajwCqkN-pR9llOQzZBqpem_DlME6r6JuUay59/s1600/strasbourg+aime+ses+etudiants+autobus.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA9Y8osHAW2o-1jRGUb2vOMME354mikc-S5H_j5WOOTSysj11UPfioVoKTHCOGfb-DfG2Z5jvvzUFS7nab9z7WRlQezF-GCCCsXPGGUT2ajwCqkN-pR9llOQzZBqpem_DlME6r6JuUay59/s320/strasbourg+aime+ses+etudiants+autobus.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Sunday morning was a rush getting my bags packed, having
breakfast, checking out of the hotel and supervising my luggage into a taxi
waiting for me per prearrangement. There were now three pieces, plus the
backpack, the third being a huge one weighing over 20 kilos (over 45 pounds)
which had been fed-exed the week before.&amp;nbsp;
My hostess greeted me warmly on my arrival, we managed all the luggage
into her very spacious unit (I think it’s the French equivalent of a co-op),
and then I immediately crashed for a couple of hours. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
My room is spacious, I have a huge deck right outside,
private shower and sink, toilet off of the hallway.&amp;nbsp; Everything is modern, nicely tiled
floor.&amp;nbsp; Mme. Was also kind enough to
allow me the use of a huge glass table just outside my room on which I promptly
installed my PC and various documents relating to banking, school and finding
my way around Strasbourg.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Sunday everything was closed, except for some restaurants,
so I went exploring in search of dinner armed with a large map of Strasbourg.
After about half a mile I found a place that seemed marginally serviceable
(hamburgers).&amp;nbsp; On entering I saw an open
bottle of Black Label on the bar. Johnny Walker Black is not my scotch of
choice, but there being no Dewars I ordered a glass.&amp;nbsp; The Black Label had much less of a bite than
the Black Label I have tasted in the US, but I drank it regardless, ate the
hamburger (the fries were good), and returned chez moi with a headache.&amp;nbsp; Highly unlikely that I will order another
Scotch for a while, even if I can find an establishment which sells it.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Mme. had no problem signing the address verification, so
armed with her attestation, my passport and some traveler’s checks I presented
myself at the Société Générale Monday moring, fully confident of having a
checking account following a few formalities.&amp;nbsp;
Monsieur there was very courteous, and after going over the documents
presented told me that all that was needed was an attestation from the taxing
authority of my city or state validating the fact that I had paid my taxes for
2012.&amp;nbsp; Seeing my blank stare he suggested
that I might write to this organization, explain the situation, and request the
attestation. He wasn’t certain that a copy of my tax return, which was in any
case locked up in San Francisco, would be sufficient.&amp;nbsp; I thought Oh sure, Dear IRS, I am a student
in Strasbourg unable to open a bank account without proof that I have paid last
year’s taxes, so could you please send same ASAP. Needless to say I still don’t
have a checking account -- but I haven’t given up.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
On to the Orange store to upgrade my cell service, then to
the Apple store where I waited for a hour before seeing a very nice tech who
found nothing wrong with my Iphone, finally showed up for my 3:00 class.&amp;nbsp; Madame-l’instructrice was late (no surprise),
but instead of going into the course on Théatralités she spent the time
explaining the very complicated curriculum for the next two years (I only want
to understand the first semester) and fielding questions from my group.&amp;nbsp; There are four of us in this group, une
francaise, a young woman from Colombia, an Italian signorina (I think) and
myself. A lot of explanation results in a small increase in my understanding of
what’s going on, so I continue to ask questions of whomever and whenever I can.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Tuesday morning the Secretariat was finally open again, so I
got there early to pay my deposit of 250 euros.&amp;nbsp;
Wrong place.&amp;nbsp; I was sent to
another building where a cashier took my money, so I was finally “administrativement
inscrite.”&amp;nbsp; I was astonished to learn
that this is all I’m going to be charged for the entire year.&amp;nbsp; This explains much of what I have observed in
the last few days.&amp;nbsp; The school budget has
its limits, different disciplines may be combined if the subject permits, the
Secretariat personnel are probably paid for only three days a week (hence the
Friday and Monday closures).&amp;nbsp; The
restrooms are for both men and women, there are plenty of stalls, they are
clean (this is Strasbourg after all), but – there are no toilet seats.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
I took the bus back (buses were running despite a 24 hour
greve, ie. Strike).&amp;nbsp; On entering I asked
the driver in French if he was going to the Rue d’Ypres.&amp;nbsp; His reply was “Bonjour, Madame.”&amp;nbsp; I asked the question again, and his reply again
was “Bonjour, Madame.”&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Lightbulb moment – I said “Bonjour, Monsieur, est-ce que
vous allez a la Rue d’Ypres?”&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
“Eh bien, oui, Madame.” &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Another lesson learned in France.&amp;nbsp; Greet the bus driver.&amp;nbsp; In fact greet anyone you interact with.&amp;nbsp; Everybody does.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Like Monday, Tuesday is pretty light, I had a one-hour
course at 4pm again with la Mme-l’instructrice.&amp;nbsp;
This is Spanish lit (15&lt;sup&gt;th&lt;/sup&gt;-18&lt;sup&gt;th&lt;/sup&gt; century) and
because her background is theater we are studying Spanish drama, beginning with
Don Juan, el Burlador (libertine, seducer) de Sevilla by Tirso de Molina (17&lt;sup&gt;th&lt;/sup&gt;
Century) – should be interesting.&amp;nbsp; The
class is conducted in both French and Spanish, Mme. Switches back and forth
between the two.&amp;nbsp; I understand the French
more than the Spanish, regardless I understand neither 100%.&amp;nbsp; There is no central bookstore on campus.&amp;nbsp; I will have to go to&amp;nbsp; the International Bookstore at Place Kleber (home
of the Orange ad Apple stores) &amp;nbsp;to buy
the texts.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
The streets in the center of town are small, and shared by
cars, pedestrians and bicyclists.&amp;nbsp; The
cars are very careful, the pedestrians politely try to stay out of their way,
it is the bicyclists who think they own the road. Outside of the center the
streets are wide enough to allow cars their own space, the sidewalks are
divided into a marked bicycle section, and an unmarked pedestrian section.&amp;nbsp; Neither the bicyclists nor the pedestrians
make it a point to stay in their own section.&amp;nbsp;
Sometimes cars are parked on the sidewalk, which results in a catch as
catch can situation.&amp;nbsp; But I am staying is
a fairly upscale section, and everyone is pretty polite.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;</description><author>The Walkabout Blog</author><pubDate>Mon, 07 Oct 2013 10:54:26 GMT</pubDate><guid isPermaLink="true">https://walkabout165.blogspot.com/2013/10/marie-in-strasbourg-part-2.html</guid></item><item><title>Guest post from Marie abroad in Strasbourg</title><link>https://walkabout165.blogspot.com/2013/09/guest-post-from-marie-abroad-in.html</link><description>I'm very pleased and proud to be putting up this guest post on behalf of my mother, Marie. &amp;nbsp;Ever since our visit together in France in 2008 (described towards the beginning of this blog) we've been planning to get her set up in France to study abroad here. &amp;nbsp;You see, she's 70 years old, and happily very fit and also just retired. And get this,when she was in undergrad in the 1960's, she *majored* in French, and so despite having excelled in this language, she's only ever visited a couple times since and at most just for a few weeks! So with a bit of help, she applied (and got into!) a program in University of Strasbourg called "monde roman et neohellinique parcours d'etudes iberiques et latino-americaine", which while roughly translating to "Roman and Neo-Hellenic World- &amp;nbsp;Program of Iberian and Latin-American Studies" actually has her studying languages including Arabic and Spanish (though she's already fluent in Spanish), along with (I believe) cultural and history courses. &amp;nbsp;With course paths for professional translators and for researchers, she's taking the researcher route. It's a two year program, and she's there for at least a year of it maintaining option to stick around for a second year if she wants to. &lt;br /&gt;
&lt;br /&gt;
And wonderfully she's gone ahead and been writing up her own journal and taking her own iPhone photos and emailing them over, and so with her permission here it is for the internet :) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSeVf5JkBQTGjB_ooZJioi00HNJN3aFqgdWV6esqj-VWfCAWiyIdBhl8Fk0tF0NLlinz5svQwfiGRCiZbjftdXLHfLjjVMYBSIIZSd5TK3zxnKRC13YLu8mUHlPOP8oyWLRmIz2U8bHgSV/s1600/Strasbourg.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSeVf5JkBQTGjB_ooZJioi00HNJN3aFqgdWV6esqj-VWfCAWiyIdBhl8Fk0tF0NLlinz5svQwfiGRCiZbjftdXLHfLjjVMYBSIIZSd5TK3zxnKRC13YLu8mUHlPOP8oyWLRmIz2U8bHgSV/s320/Strasbourg.JPG" width="239" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;Strasbourg, Saturday, September 7, 2013&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;It’s 2:00 in the afternoon, the first time I’ve had some downtime and not been tired since I left San Francisco. &amp;nbsp;I spent a couple of days with Teddy in Boston. &amp;nbsp;Monday we walked (and walked and walked) from Brookline to the North End where we had dinner. &amp;nbsp;Tuesday I had lunch with Celina Valadao, who used to be a rep for Continental, and is now a fundraiser for the Huntington Theater near Berklee. &amp;nbsp;Hopefully we will stay in contact.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;I arrived at Logan around 6:30 pm Tuesday for my 9:00 flight on Aer Lingus. &amp;nbsp;Turns out they were overbooked and offered me $650 to give up my seat. &amp;nbsp;I declined saying I had to be in Paris the next morning. &amp;nbsp;So then they asked if I could go on Air France, which left at 10:30 pm but arrived in Paris an hour earlier (no changing planes in Dublin). &amp;nbsp;This was acceptable, the exchange was made, I bought a suspense paperback to read on the plane and waited til boarding at ten. &amp;nbsp;The flight was very comfortable, I had an aisle seat in a middle row with two empty seats next to me and was served champagne with dinner (no extra charge). &amp;nbsp;I finally slept for a couple of hours, and when I woke up we were about to land at CDG.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;After passport control I taxied from CDG to the Gare de l”Est, and it was there, as expected, that I encountered my first issue with the luggage. &amp;nbsp;Pulling &amp;nbsp;the medium sized roller, the small roller, and the backpack heavy with electronics, I had to go up 5 steps to get to the station. &amp;nbsp;Seeing my struggles, a Frenchman pulled them up for me. &amp;nbsp;After that I managed reasonably well, but was always grateful for offers of assistance. &amp;nbsp;These came from people other than the French. &amp;nbsp;A couple of nice African girls helped me download the bags from the train at Strasbourg, and a Tunisian young man helped me tour around the station looking for the taxi stand (on exiting I &amp;nbsp;had made a left instead of a right).&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Made it to the hotel. The room is tiny, but adequate, with plenty of outlets for electronics. &amp;nbsp;After setting up the machines I realized my mouse wasn’t working which was embêtant. &amp;nbsp;&amp;nbsp;In French bête means stupid, and embêtant means pain in the neck. &amp;nbsp;But I can’t think of an English translation using one single word, so I like this word and you will see me using it a lot. &amp;nbsp;Bottom line is I had to use the touchpad. &amp;nbsp;Got settled, had dinner, fell asleep at midnight and woke up at 4 am Thursday morning wide awake. &amp;nbsp;During the previous 39 hours I had had a total of 6 hours of sleep.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;My orientation meeting was at 10 am in Salle 4307 at the Patio (pronounced pash-she-o). &amp;nbsp;The campus wasn’t hard to get to, about a &amp;nbsp;12 minute walk from the hotel. &amp;nbsp;&amp;nbsp;&amp;nbsp;Finding the room was something else altogether. &amp;nbsp;As I eventually found out, the number means building 4, third floor, room 7. &amp;nbsp;Fortunately I had left the hotel early, so I had plenty of time to wander from pillar to post asking questions. &amp;nbsp;&amp;nbsp;Got to the meeting in time, &amp;nbsp;met my director, and after spending the two full hours there, determined that I should really be at the meeting the next day. &amp;nbsp;Saw my director later on that afternoon with more questions, answers to which I did not fully understand.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;As I have said several times, the program I &amp;nbsp;am registered in is entitled Roman and Neo-Hellenic World &amp;nbsp;Survey of Iberian and Latin-America Studies. Within this program are divisions, sub-divisions, and sub sub-divisions, with names like formation, parcours, specialites&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, and &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;composantes. &amp;nbsp;I have yet to find out what these words really mean. &amp;nbsp;For example Carole Egger is my Directeur de Parcours, and another lady is my Directeur de Specialités, but Carole is the one I will be most in contact with. &amp;nbsp;The Thursday meeting was for people who want to teach, and since I don’t want to teach I should be in EMOS (Etudes Mediterraneennes Orientales et Slaves) which I think stands for Mediterranean Eastern and Slavic Languages. &amp;nbsp;That orientation meeting was on Friday morning so I was there Friday as well.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The “curriculum” for two years is printed on three 8-1/2” x 11” papers, folded in half, to resemble a small booklet with a colored cover entitled “Guide Pedagogique”, etc. &amp;nbsp;It could have been printed by one of the faculty members, although I doubt it, since they all seem more interested in their vacations than tending to business. &amp;nbsp;Half of the classes for M1 S1 (first year, first semester) have names like Théatralités, Documents Iconographiques, and Methodologie de la Recherche, and one can only wonder how much Spanish is involved. &amp;nbsp;The departments seem enclaves unto themselves, with very little connection with, or even understanding of who is actually running, &amp;nbsp;the university.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;I still don’t know how much this is going to cost. &amp;nbsp;Rick did some preliminary checking for me and the information he got was 760 euros or thereabouts, which seems incredible. I have to go to the Secretariat and pay my 249.10 euros entrance fee. &amp;nbsp;At that time I can get some more administrative information, find out how to get on the school internet, and hopefully determine what the cost will be for the semester. &amp;nbsp;The Secretariat is closed on Mondays and Fridays. &amp;nbsp;I guess by now you must be getting some idea of how they do things (or not) at the University of Strasbourg.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Classes start Monday afternoon. &amp;nbsp;I will be asking more questions and hopefully get a little more understanding of what I’m supposed to be doing. &amp;nbsp;At the meeting on Friday the word “obligatoire” was used several times. &amp;nbsp;There is an EMOS website, which we were all exhorted to telecharger (download). &amp;nbsp;I guess that’s a start.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The rest of Thursday and Friday was spent doing laundry and trying to open a bank account. I say trying because It is not easy. &amp;nbsp;You can’t just walk into a bank and say you want to open up an account, &amp;nbsp;you have to make an appointment first. &amp;nbsp;I finally had an appointment with BNP Paribas, &amp;nbsp;one of the largest banks in France. &amp;nbsp;I spent quite a lot of time with Mlle. Michel, &amp;nbsp;going over my documentation and the various &amp;nbsp;options available to verify my address. &amp;nbsp;One cannot open an account without this verification, so I was prepared to wait a few days for this last requirement to be completed. After some 45 minutes and having selected one of the address verification options, Mlle. Walked off with a handful of papers only to return a few minutes later informing me she was desolee, but I could not open an account with BNP Paribas because I had no regular income. I was stunned.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Mlle. Referred me to a bank across the street whose requirements I guess are less stringent. &amp;nbsp;I have an appointment with them Monday morning. &amp;nbsp;I am to arrive with a document they gave me, signed by Mme Marques (the lady I am staying with for two weeks) stating that she has the honour to “heberger Mlle. Marie Sheridan” at such and such an address, that she will advise whoever when this arrangement changes, and that if the contents of this attestation are inexact, she is liable for punishment of up to a year in prison and a fine of 15,000 euros.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;This morning was spent on electronics. &amp;nbsp;First I went to the “Orange” store to get a cell phone number. &amp;nbsp;After a contentious encounter with some burly tech behind a counter who refused to talk to me, kept waving his arms in the air and saying “no English, no English” (I wasn’t about to speak to him in French, he was so brutally rude), one of the customers told me in English I had to register first. &amp;nbsp;Which I did. &amp;nbsp;Ten minutes later I was sitting down with one of the more civilized techs who set up a cell phone number for me for one month. &amp;nbsp;I have to recharge it every month. &amp;nbsp;I cannot get a subscription for more than one month. &amp;nbsp;Impossible. &amp;nbsp;I don’t have a bank account.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Next I went to FNAC, sort of a Best Buy. &amp;nbsp;My first inquiry had to do with my wireless mouse which no longer worked. &amp;nbsp;After hearing my story and thinking about it for a few minutes, this nice young man took the battery out and replaced it, removed the pin from the USB port in my PC and reinserted it, and showed me how to turn off the mouse to save battery life. &amp;nbsp;The mouse works fine now. &amp;nbsp;This is one of the nicer things that have happened to me in the last few days.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Then I bought a transformateur. &amp;nbsp;All the communication devices have dual voltage, so all you need is an adapter to plug into the wall. &amp;nbsp;But my electric toothbrush (or hair dryer, water-pik, or some other personal care device) has only 110, so if you just plugged it into the wall with an adapter it would fry. &amp;nbsp;The transformer, which is also an adapter, takes in the 220 volts in France, and outputs 110 volts for my non dual voltage device. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;I have spoken to Mme Cazenave, and tomorrow at 11:00 &amp;nbsp;I arrive at her doorstep via taxi &amp;nbsp;with all my luggage. &amp;nbsp;The next stage begins and I have to start seriously looking for an apartment. &lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;My French gets better every day. &amp;nbsp;I understand everything I read in the newspapers, and even if there is a word or two that I’m not familiar with, I can figure out what it means from the context. &amp;nbsp;Then when I try and verify it in my 50 year old Larousse, it may or may not be there. I had thought that everyone in Strasbourg who serves the tourists spoke some English, but this is not the case. &amp;nbsp;Consequently I am speaking in French with). the bankers, the techs at Orange and FNAC, and people on the street from whom I ask directions. &amp;nbsp;If the conversation gets too technical I ask them to slow down and explain a word to me in French. &amp;nbsp;I also speak French to the faculty at the University. &amp;nbsp;But I’m not yet ready to ask them to slow down and explain a particular word to me, so I just have to wing it. Thus I’m getting more and more comfortable with the language. &amp;nbsp;This was my goal, and I am content.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.0791666666666666; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;There is a Mass at the Cathedral is about 20 minutes, and I will be going there. &amp;nbsp;It is abour 50 meters away, facing my hotel. The Cathedral is as I remember it, &amp;nbsp;truly awesome (and I use that word in its original meaning) &amp;nbsp;&amp;nbsp;The sound and light show is over for the season, too bad. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;</description><author>The Walkabout Blog</author><pubDate>Mon, 07 Oct 2013 10:52:39 GMT</pubDate><guid isPermaLink="true">https://walkabout165.blogspot.com/2013/09/guest-post-from-marie-abroad-in.html</guid></item><item><title>Marie in France - pt 3</title><link>https://walkabout165.blogspot.com/2013/10/marie-in-france-pt-3.html</link><description>&lt;div class="MsoNormal"&gt;
&lt;u&gt;Strasbourg, September 12, 2013&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8POVE3dAIDLPtB6ki-MjtP24xqFLoclQxXGAx64be6Xh57t-3hyS3QJJqNY7P5umb4AY2GH-xhHrnq38MjOPTMsAGLIKbBDUldpcp2OV7DJQVZ9wwZfVjvnX2-0cmkZoUacTHPBefxORN/s1600/Fromagerie_in_Chavignol.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8POVE3dAIDLPtB6ki-MjtP24xqFLoclQxXGAx64be6Xh57t-3hyS3QJJqNY7P5umb4AY2GH-xhHrnq38MjOPTMsAGLIKbBDUldpcp2OV7DJQVZ9wwZfVjvnX2-0cmkZoUacTHPBefxORN/s320/Fromagerie_in_Chavignol.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Before I start the next set of events, I want to mention
once incident which took place the same day I had the encounter with the bus
driver (Tuesday September 10).&amp;nbsp; I did
some food shopping at a good-sized market in the neighborhood, and on my list
was some cheese.&amp;nbsp; I am very partial to Bel
Paese (Italian) but the lady at the cheese counter had never heard of it.&amp;nbsp; Another shopper overheard our conversation
and remarked that she also liked the Bel Paese, but the French cheeses were
even better, and she recommended such and such cheese.&amp;nbsp; So I said to the attendant, "Bon, Mme. has recommended
this cheese and I will take it".&amp;nbsp; Well, I
didn’t like it.&amp;nbsp; The next day I returned
to the market and this time I asked for Emmenthaler, which was promoted on most
of the menus I had seen in the last few days.&amp;nbsp;
The same girl asked me how I liked the other cheese, I replied “Pas
trop” (not so much).&amp;nbsp; And she said Hein
(hah) and Mme. Thinks she can make a good recommendation.&amp;nbsp; This particular scenario made me feel like I
was beginning to be a part of the community.&amp;nbsp;
The focal point was not that I was an American who needed help, but that
Mme. What’s-her-name overstepped her expertise in cheese recommendations.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Yesterday I had a double class with my director.&amp;nbsp; French/Spanish translation is in one
building, Spanish/French translation is in another.&amp;nbsp; You only have to take one or the other, but
you have the option to take both, which I am.&amp;nbsp;
But I think I will only take the exam in one.&amp;nbsp; In the first class the door was locked, there
were a number of us waiting, and then the instructor showed up with the
key.&amp;nbsp; Somehow there were already others
in the classroom.&amp;nbsp; This is where the EMOS
students (of which I am one) take the same class as the students who want to be
teachers, and there are both M1 and M2 (first year and second year) students. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
When the French/Spanish portion was over I followed the
crowd to the sous-sol (basement)&amp;nbsp;
batiment 4 for the Spanish/French portion. There were about 30 of us
waiting outside another locked door, but I didn’t see the instructor.&amp;nbsp; We waited about 20 minutes before she finally
showed up.&amp;nbsp; She had been looking (who
knows where) for a key to open the door.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
My airbnb hostess had referred me to a friend of hers, an
agent immobilier (real estate agent) who did not do rentals but who referred me
to his colleague Audrey, a beautiful blonde francaise, very nice girl. At this
point I realized if I wanted a furnished unit, it would most likely be a
studio, and anything larger would be unfurnished.&amp;nbsp; So I began thinking in terms of unfurnished
apartments and furniture rentals. I showed up at their office at 2:30, &amp;nbsp;Audrey and I talked about various
options.&amp;nbsp; Quickly enough we realized that
because I did not have a bank account I could not rent an apartment in France,
clearly I could not do anything in France without a bank account.&amp;nbsp; Audrey made a few phone calls to banks
without success, the agent and another colleague got into the act, and for the
next half hour the three of them were making telephone calls and checking the
Internet, all the while the agent was telling me “We will find a solution.” &amp;nbsp;Bottom line is the agent made an appointment
for me the next day with a bank near where I’m staying, and this banker, based
on the information he received from the agent (whom he did not know) agreed
that he could open an account for me.&amp;nbsp;
Although not convinced that this would happen, I was hopeful and left
their office thanking them profusely.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Meanwhile Audrey had given me an option (once I got the bank
account) of a hotel/apartment rental in Petite France, a lovely section of
Strasbourg.&amp;nbsp; But the units themselves
were small and sort of non-descript. Audrey had told me that apartment owners
would only rent for two or three years, so I presumed this was my only option
(I have since learned differently).&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
My first class this morning (8:00 am) was a seminaire transversal
(combination of students in other disciplines) on Renaissance myths and the
medieval Mediterannean.&amp;nbsp; I hope this
class will turn out to be as interesting as it sounds.&amp;nbsp; I say will, because the instructors never
showed up.&amp;nbsp; There were four of us
waiting, finally after fifteen minutes, one of the second year students took
the lead and suggested we go back to Monde Roman headquarters (in another
building of course) and find out what the problem was.&amp;nbsp; So off we trekked to Batiment 4, troisieme
etage, and slowly made our way down the hall looking for signs of human
life.&amp;nbsp; I spied a female functionary in
one of the rooms and asked her where this new instructor was.&amp;nbsp; She said he wasn’t here this week, and he had
posted a message on the panneau (glass panel) down the hall.&amp;nbsp; We must have checked about a dozen panels
full of postings, and finally found an 8-1/2 x 11 piece of paper&amp;nbsp; informing one and all that this instructor was
out of town this week.&amp;nbsp; Not too far away
was a similar message regarding yet another instructor, the other half of this
invisible team.&amp;nbsp; So with a sigh, further
discussion on the various programs, and an exchange of emails, we all went off
to whatever else we had to do.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
My "else" was a 9:00 meeting with a retail banker (about 25)
at the Banque Populaire d’Alsace.&amp;nbsp; He had
had some concern that I did not speak much French, but seemed gratified that we
were able to conduct our business in French.&amp;nbsp;
He spent some 45 minutes with me, explaining everything slowly and
clearly, about 90% of which I understood.&amp;nbsp;
Long story short, I walked out with a bank account, transferred some
money on line from San Francisco, and returned in the afternoon to conclude the
transactions and sign the papers.&amp;nbsp; I now
have a stack of documents in French which I have no intention of reading, but I
am assured that everything is in place for me to negotiate an apartment rental (carte
bancaire, assurance, etc.) sans souci.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Back to the apartment.&amp;nbsp;
My airbnb hostess explained to me that even if one rented an apartment
for two or three years, the renter had the right to terminate the agreement
with three months’ notice.&amp;nbsp; My bank representative
confirmed this, although there are of course certain procedures which have to
be observed.&amp;nbsp; I will need more
explanation on this, but in any case tomorrow I will check out the units at the
Petite Marie, a really lovely part of Strasbourg.&amp;nbsp; I also have to go to the Place Kleber
(Orange, Apple, International bookstore) and pick up a copy of Don Juan by
Tirso de Molina, and Robert’s French/Spanish dictionary (I have Larousse French/English
and Cassell’s Spanish/English which I will undoubtedly have to refer to).&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
My only class tomorrow is 2-5, entitled Seminaire Pratiques
d’Ecriture: Traductions Adaptation &amp;nbsp;(the
French really seem to like long titles).&amp;nbsp;
I hope this instructor shows up.&amp;nbsp;
On time.&amp;nbsp; With a key.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;</description><author>The Walkabout Blog</author><pubDate>Mon, 07 Oct 2013 10:04:57 GMT</pubDate><guid isPermaLink="true">https://walkabout165.blogspot.com/2013/10/marie-in-france-pt-3.html</guid></item><item><title>Purchasing a £30,000 numberplate for the price of a bus ticket</title><link>https://tomforb.es/blog/purchasing-a-30000-numberplate-for-the-price-of-a-bus-ticket/</link><description>Regtransfers.co.uk is a website that allows you to purchase customized numberplates for your car or motorbike. They boast a large number of famous clients and short numberplates are often on sale for upwards of £20,000 (the plate ABC 4 is up for £30,000). While playing with their site I discovered a...</description><author>Tom Forbes</author><pubDate>Mon, 07 Oct 2013 04:40:33 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/purchasing-a-30000-numberplate-for-the-price-of-a-bus-ticket/</guid></item><item><title>How to fly… like a boss</title><link>https://josh.works/growth/2013/10/07/how-to-fly-like-a-boss/</link><description>&lt;p&gt;I am in a quest to 
&lt;a href="/epic-quest"&gt;level up my life&lt;/a&gt;. Free flights is a big part of this. I’ve not gotten too many of those yet, but the next best thing is free seat upgrades. I’m not talking about first class - that’s beyond me, at the moment. I’m talking about getting stuck in the back of the plane, jammed against someone else, with zero space.
There’s plenty of room for improvement.
more&lt;/p&gt;

&lt;p&gt;Short of being moved to first class and getting a personal waiter to attend to every creature comfort, you’re best option is getting bumped up to an exit row. After seven hours of your knees bumping into the seat in front of you, an extra six inches of leg room would be better than a four course meal.&lt;/p&gt;

&lt;p&gt;When you buy your ticket, you can usually choose what seat you want. Except exit row seats. Those cost extra. No one wants to shell out an extra $40 or $100 for that, so you accept the back-seat-middle option, and head to the airport.&lt;/p&gt;

&lt;p&gt;Here’s how I’ve managed to upgrade, for free to the exit row (with it’s extra leg room, and often no one sitting beside you) on six of the last seven flights I’ve taken.&lt;/p&gt;

&lt;dl&gt;
  &lt;dt&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;Inquire at the ticket counter, if there is one. (The ticket counter will be near your gate, but is 
 the kiosk sitting beside the gate.)&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;Be polite. Put yourself in their shoes. Then act like a decent human being. It’s not hard.&lt;/p&gt;

&lt;p&gt;Here’s the script:&lt;/p&gt;

&lt;p&gt;You: “Hello - is this the right place to ask about a seat upgrade?”&lt;/p&gt;

&lt;p&gt;Them: “Yes.”&lt;/p&gt;

&lt;p&gt;You: “Awesome. I was wondering if there are any exit row seats available on 1107 to Dallas.”&lt;/p&gt;

&lt;p&gt;Them: “Let me check”… typing… “Yes, there are. You may upgrade for $40 dollars.”&lt;/p&gt;

&lt;p&gt;You: “OK - thanks for checking. I’m trying to spend as little as possible on this flight, so I’ll pass on the upgrade right now, but thanks again for checking.”&lt;/p&gt;

&lt;p&gt;OK - no luck at the ticket counter. This isn’t a surprise, because the ticket counter is sort of like upgrading via the website - if they’d charge you on the website, they’ll charge you at the ticket counter.&lt;/p&gt;

&lt;dl&gt;
  &lt;dt&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;Inquire at the gate-side kiosk. Again, be friendly. Even if the answer is no, you should have still brightened their day a bit.&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;There are three options here:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;No seats available. Walk away. The seats are all full, so no dice today.&lt;/li&gt;
  &lt;li&gt;Seats available, but you have to pay. Walk away - there’s still hope.&lt;/li&gt;
  &lt;li&gt;Seats available, but the agent has to either let everyone else board, or needs to finalize the roster before giving you the upgrade. Let them know you’re interested, give them your ticket if needed, and wait until they call you back up or everyone has boarded.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This last option has been the most common for me. I have to wait a few minutes, or let everyone board, and the ticket agent hands me a new ticket for the exit row. Success!&lt;/p&gt;

&lt;dl&gt;
  &lt;dt&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;Make the switch once you’re on the plane. By this point, you should know for sure if there is an exit row seat, and if you asked, you’ll know which one. (If it’s the middle seat between two people, and you’re assigned an isle seat elsewhere on the plane, it may not be worth making the switch.&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;But if it’s a desirable seat, here’s what you do…&lt;/p&gt;

&lt;p&gt;Take your assigned seat, and wait for everyone to get on the plane. As soon as flight attendants start shutting the overhead compartments, locate one and say “I noticed an open exit row seat. Would you mind if I swapped into that one real quick?”&lt;/p&gt;

&lt;p&gt;They will 
 say “go for it.”&lt;/p&gt;

&lt;p&gt;Success! Sitting in an exit row seat, possibly with no one besides you. I’m writing this right now in an exit row seat with an empty seat beside me. It’s great, and quite worth while.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Bother?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are two reasons why this is something worth doing:&lt;/p&gt;

&lt;p&gt;First, flying is uncomfortable. Any extra room for comfort increases the quality of the hours you’ll spend sitting there. This upgrade hurts no one, so why not try for it?&lt;/p&gt;

&lt;p&gt;Second, you will start learning to ask for things in a polite but reasonable manner. 
&lt;a href="http://www.entresting.com/blog/100-days-of-rejection-therapy/"&gt;I have suspicions that a 
 of things can be had by just asking kindly&lt;/a&gt;, so why not start learning to do so?&lt;/p&gt;

&lt;p&gt;Please give this a shot next time you take a flight. Let me know how it goes!&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Mon, 07 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/2013/10/07/how-to-fly-like-a-boss/</guid></item><item><title>2013-10-06</title><link>https://ho.dges.online/pictures/2013-10-06/</link><description>&lt;p&gt;Taken lying flat on the ground under Central Station in Glasgow. I was so focussed on getting the shot lined up that it wasn&amp;rsquo;t until I sat up that I noticed that I&amp;rsquo;d been joined on the ground by a drunk who seemed to have assumed that I was settling down for the evening!&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Sun, 06 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-10-06/</guid></item><item><title>And Then Steve Said, 'Let There Be an iPhone'</title><link>http://www.nytimes.com/2013/10/06/magazine/and-then-steve-said-let-there-be-an-iphone.html?pagewanted=all</link><description>&lt;p&gt;As a rule I try not to link an article unless I have something meaningful to add to the surrounding conversation, and especially in cases where all the popular tech sites have already picked up said article. Occasionally, in exceptional circumstances I break that rule however, as I couldn&amp;#8217;t help but link Fred Vogelstein&amp;#8217;s New York Times piece chronicling the advent of the first iPhone. An exceptional read, to put it lightly.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.nytimes.com/2013/10/06/magazine/and-then-steve-said-let-there-be-an-iphone.html?pagewanted=all"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 04 Oct 2013 19:40:58 GMT</pubDate><guid isPermaLink="true">http://www.nytimes.com/2013/10/06/magazine/and-then-steve-said-let-there-be-an-iphone.html?pagewanted=all</guid></item><item><title>[10.4.13] 3D-PRINT-ARM: SCARA 3D Printer UPGRADE</title><link>https://transistor-man.com/3dprinter_upgrade1.html</link><description>Detailed Upgrades of Scara 3D Printer Robot</description><author>transistor-man.com</author><pubDate>Fri, 04 Oct 2013 11:38:38 GMT</pubDate><guid isPermaLink="true">https://transistor-man.com/3dprinter_upgrade1.html</guid></item><item><title>Writing deterministic tests</title><link>https://www.craigpardey.com/post/2013-10-04-writing-deterministic-tests/</link><description>&lt;p&gt;Non-deterministic unit tests are like kryptonite for an automated build. They
cause intermittent build failures and the development team becomes accustomed
to ignoring a failing build. This is a Bad Thing.&lt;/p&gt;
&lt;p&gt;Thread.sleep(x) in a unit test is a recipe for non-deterministic behaviour.
Think about what happens when this test is run on a slow machine. How big does
X need to be?&lt;/p&gt;
&lt;p&gt;I often see this anti-pattern in multi-threaded code where the test case is
waiting for some asynchronous task to complete, and the test case has to guess
at how long the task will take, and then asserts on some condition that the
task was supposed to change.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Fri, 04 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-10-04-writing-deterministic-tests/</guid></item><item><title>Work Like Hell</title><link>https://www.danstroot.com/posts/2013-10-04-work-like-hell</link><description>&lt;img alt="post image" src="https://danstroot.imgix.net/assets/blog/img/elon-musk.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;If other people are putting in 40-hour workweeks, and you're putting in 100-hour workweeks, then, even if you're doing the same thing, you will achieve in four months what it takes them a year to achieve.&lt;br /&gt;&lt;br /&gt;This post &lt;a href="https://www.danstroot.com/posts/2013-10-04-work-like-hell"&gt;Work Like Hell&lt;/a&gt; first appeared on &lt;a href="https://www.danstroot.com"&gt;Dan Stroot's Blog&lt;/a&gt;</description><author>Dan Stroot</author><pubDate>Fri, 04 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.danstroot.com/posts/2013-10-04-work-like-hell</guid></item><item><title>Fulfilling the Dream</title><link>https://zacs.site/blog/fulfilling-the-dream.html</link><description>&lt;p&gt;Exactly a week ago today Chris Gonzales of Unretrofied wrote an article called &lt;a href="http://unretrofied.com/blog/2013/9/26/ios-7-and-the-state-of-podcast-apps"&gt;&lt;em&gt;iOS 7 and the State of Podcast Apps&lt;/em&gt;&lt;/a&gt;, a rather presumptuous title given the article&amp;#8217;s actual contents, that I initially did not plan on linking to or writing anything about. At the very bottom of his article though, Chris tacked on a bracket-thetical that gave me pause:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/fulfilling-the-dream.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 04 Oct 2013 00:51:10 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/fulfilling-the-dream.html</guid></item><item><title>Cabin Porn Roundup</title><link>https://zacs.site/blog/cabin-porn-roundup.html</link><description>&lt;p&gt;Over the last few weeks, as I scrolled through my RSS reader and came across a particularly interesting or attractive cabin, I would send the page to Instapaper. Unfortunately, most of those cabins got lost in translation, so to speak, and never made it to this site for one reason or another. I&amp;#8217;m not here to assign blame though, but instead to show off some really great cabins.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/cabin-porn-roundup.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 03 Oct 2013 21:59:39 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/cabin-porn-roundup.html</guid></item><item><title>Evolution 2013 presentation, notes and slides</title><link>https://jonathanchang.org/blog/evolution-2013-presentation-notes-and-slides/</link><description>&lt;p&gt;&lt;img alt="Fish landmarks" src="/uploads/2013/10/fish-landmarks.png" /&gt;&lt;/p&gt;
  &lt;p&gt;Our pilot study worked! Over a dozen Mechanical Turk workers helped to digitize our pilot study sample of fishes. For more details and results, &lt;a href="/uploads/2013/06/chang.evolution.2013.pdf"&gt;check out the slides I presented at Evolution&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;This was my first year attending Evolution, and it was exciting showing my work with the Encyclopedia of Life to an amazing group of scientists.  I got lots of great feedback from people interested in my idea and methods. Based on this feedback, the next larger experiment is going to incorporate a semi-landmark approach, where workers will outline a shape, such as the curve of the dorsal fin that then gets subsampled down into a series of points. Additionally, the study will include a much larger number of landmarks, particularly those that more closely correspond to functional and performance aspects of fish anatomy. These are steps that I plan to take after discussions with several people, including Matt McGee and Thomas Claverie of the Wainwright lab, and Bruno Frederich, a visiting scholar in the Alfaro lab from the University of Liege.&lt;/p&gt;
  &lt;p&gt;I’m currently working hard on writing the code and protocols for the next study. As always, all of the study materials are freely available &lt;a href="https://github.com/jonchang/eol-mturk-landmark"&gt;online at GitHub&lt;/a&gt;&lt;/p&gt;</description><author>Jonathan Chang</author><pubDate>Thu, 03 Oct 2013 07:53:03 GMT</pubDate><guid isPermaLink="true">https://jonathanchang.org/blog/evolution-2013-presentation-notes-and-slides/</guid></item><item><title>Decoding NASA's NOAA weather satellite signals with RTL-SDR</title><link>https://shyamjos.com/decoding-noaa-weather-satellite-apt-signals-with-rtl-sdr/</link><description>&lt;p&gt;NOAA satellite is a series of weather satellites launched by NASA. It carries a suite of instruments that provides data for weather and climate predictions, everyday multiple NOAA weather satellites pass above us. Each NOAA weather satellite broadcasts an Automatic Picture Transmission (APT) signal (137MHZ), which contains a live weather image of our area. RTL-SDR dongle combined with a good antenna and programs like GQRX, sdrsharp and WXtoImg we can decode this signals.







 
 
&lt;figure&gt;&lt;img alt="rtlsdr dvb dongle image" class="mx-auto my-0 rounded-md" src="https://shyamjos.com/assets/img/noaa/rtlsdr-dongle.jpg" /&gt;
&lt;/figure&gt;

If you are not familiar with RTL-SDR, RTL-SDR is a very cheap software defined radio that uses a DVB-T TV tuner dongle based on the realtek RTL2832U chipset. Basically , this means that a cheap $20 TV tuner USB dongle with the RTL2832U chipset can be used as a computer controlled radio scanner.&lt;/p&gt;
&lt;p&gt;After a long trial and error process with different antennas finally I am surprised with APT signal reception from my simple ground plane antenna which is made from coat hanger.I don&amp;rsquo;t no more technical stuff about antennas, My GP antenna have 22 inch long radials ( slant down at an angle of 45 degrees) &lt;a href="http://i.imgur.com/rq3t1W1.jpg" rel="noreferrer" target="_blank"&gt;close up photo of antenna&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;






 
 
&lt;figure&gt;&lt;img alt="rtlsdr ground plane antenna" class="mx-auto my-0 rounded-md" src="https://shyamjos.com/assets/img/noaa/ground-plane-antenna-rtlsdr.jpg" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The 4 radials are connected to metal base plate and the center radial is wrapped in an insulation tape (no contact with metal plate or other 4 radials ) I used a 75 ohm coax cable for the feed line and it is less than 5 meter long, center copper wire of coax is connected to the center radial and silver wires to the metal base plate.&lt;/p&gt;
&lt;h2 class="relative group" id="software-setup"&gt;Software setup &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" href="#software-setup"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Software used is sdrsharp (RF gain 100% ,40~42khz bandwidth,90% AF gain,Sample Rate: 1,024 MSPS,audio sample rate: 48000) and the audio is piped to WXtoImg via Virtual Audio Cable (48000 sample rate output).&lt;/p&gt;
&lt;p&gt;






 
 
&lt;figure&gt;&lt;img alt="sdr#" class="mx-auto my-0 rounded-md" src="https://shyamjos.com/assets/img/noaa/rtlsdr-dongle-noaa.jpg" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 class="relative group" id="decoded-images"&gt;Decoded Images &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" href="#decoded-images"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h3 class="relative group" id="noaa-18"&gt;NOAA 18 &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" href="#noaa-18"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;






 
 
&lt;figure&gt;&lt;img alt="NOAA 18 india image" class="mx-auto my-0 rounded-md" src="https://shyamjos.com/assets/img/noaa/noaa-18-image.jpg" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 class="relative group" id="noaa-19"&gt;NOAA 19 &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" href="#noaa-19"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;






 
 
&lt;figure&gt;&lt;img alt="NOAA 19 india image" class="mx-auto my-0 rounded-md" src="https://shyamjos.com/assets/img/noaa/noaa-19-rlsdr-image.jpg" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 class="relative group" id="noaa-15"&gt;NOAA 15 &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" href="#noaa-15"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;






 
 
&lt;figure&gt;&lt;img alt="NOAA 15 india image" class="mx-auto my-0 rounded-md" src="https://shyamjos.com/assets/img/noaa/noaa-15-image-rtlsdr.jpg" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 class="relative group" id="noaa-15---sea-surface-temperature"&gt;NOAA 15 - Sea surface temperature &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" href="#noaa-15---sea-surface-temperature"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;






 
 
&lt;figure&gt;&lt;img alt="NOAA 15 india Sea surface temperature image" class="mx-auto my-0 rounded-md" src="https://shyamjos.com/assets/img/noaa/noaa-sea-level-rtlsdr.jpg" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;discussion on &lt;a href="https://www.reddit.com/r/RTLSDR/comments/1no5sh/received_noaa_images_using_my_coat_hanger_ground/" rel="noreferrer" target="_blank"&gt;reddit &lt;/a&gt;.&lt;/p&gt;</description><author>Shyam Jos</author><pubDate>Thu, 03 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://shyamjos.com/decoding-noaa-weather-satellite-apt-signals-with-rtl-sdr/</guid></item><item><title>Why BlackBerry failed</title><link>https://jasoneckert.github.io/myblog/why-blackberry-failed/</link><description>&lt;p&gt;&lt;img alt="failure" src="failure.png#right" title="failure" /&gt;&lt;/p&gt;
&lt;p&gt;To be honest, I really didn’t want to do another BlackBerry-related post.  It just doesn’t feel like something that interests me anymore.  But today I decided to do one anyways for several reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I’ve been a long-time BlackBerry user and author of their academic textbooks  - as a result, I know their technology inside-out, and have worked closely with the organization.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I have lived and taught computer science in the K-W region for the past 15 years, so many of my friends and past students have worked for (or still work for) RIM.&lt;/p&gt;</description><author>Jason Eckert's Website and Blog</author><pubDate>Thu, 03 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://jasoneckert.github.io/myblog/why-blackberry-failed/</guid></item><item><title>Nice to have: YoutubeCenter</title><link>https://www.zufallsheld.de/2013/10/02/nice-to-have-youtubecenter/</link><description>&lt;p&gt;Via &lt;a href="http://allanmcrae.com/2013/10/interesting-links-september-2013/"&gt;Allan McRae&lt;/a&gt; I found out about &lt;a href="https://github.com/YePpHa/YouTubeCenter/wiki"&gt;YoutubeCenter&lt;/a&gt;, a
&lt;a href="http://www.greasespot.net/" title="Greasemonkey"&gt;userscript&lt;/a&gt; and/or add-on for &lt;a href="http://www.mozilla.com/firefox/" title="Firefox"&gt;Firefox&lt;/a&gt; and &lt;a href="http://www.google.com/chrome" title="Google Chrome"&gt;Chrome&lt;/a&gt;.&lt;/p&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;

&lt;p&gt;&lt;img alt="youtubecenter" src="https://www.zufallsheld.de/images/youtubecenter.png" /&gt;&lt;/p&gt;
&lt;p&gt;This script come with many handy features that make the &lt;a href="http://www.youtube.com/" title="YouTube"&gt;Youtube&lt;/a&gt;
experience way&amp;nbsp;nicer!&lt;/p&gt;
&lt;p&gt;Some really nice features I used&amp;nbsp;are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remove&amp;nbsp;ads&lt;/li&gt;
&lt;li&gt;Resize the&amp;nbsp;player&lt;/li&gt;
&lt;li&gt;Buffer the video even when&amp;nbsp;paused&lt;/li&gt;
&lt;li&gt;Provides …&lt;/li&gt;&lt;/ul&gt;</description><author>zufallsheld</author><pubDate>Wed, 02 Oct 2013 18:14:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/10/02/nice-to-have-youtubecenter/</guid></item><item><title>Who will make the percloud happen? Traditional FOSS advocates, or everybody else?</title><link>https://stop.zona-m.net/2013/10/who-will-make-the-percloud-happen-traditional-foss-advocates-or-everybody-else/</link><description>&lt;p&gt;A reader of &lt;a href="https://stop.zona-m.net/2013/09/how-linux-owns-the-internet-is-so-wrong-and-bad-but-luckily/"&gt;my critique to the &amp;ldquo;Linux owns the Internet&amp;rdquo; slogan&lt;/a&gt; just made the &lt;a href="https://stop.zona-m.net/2013/09/how-linux-owns-the-internet-is-so-wrong-and-bad-but-luckily/#comment-17191"&gt;comment&lt;/a&gt; integrally copied here:&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Wed, 02 Oct 2013 10:33:35 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/10/who-will-make-the-percloud-happen-traditional-foss-advocates-or-everybody-else/</guid></item><item><title>Simulations, Simulated</title><link>https://xavd.id/blog/post/simulations-simulated/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/simulations-simulated/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Wed, 02 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/simulations-simulated/</guid></item><item><title>Many Changes</title><link>http://localhost:4999/articles/2013/10/01/many-changes/</link><description>&lt;p&gt;So many things have changed very quickly, I barely have time to catch up, or write a blog post.&lt;/p&gt;
&lt;p&gt;I have left my position at Luckie, and after a brief stay at another advertising agency, I have parted ways with established business (for the time being) and have been freelancing for about a month now. It's been scary, exhilirating, and an amazing opportunity to trust the Lord with what happens next, because I have no idea what is going to happen next week.&lt;/p&gt;
&lt;p&gt;But that's ok.&lt;/p&gt;
&lt;p&gt;I'm open to suggestions for now. Barring a great position opening that grabs ahold of me, I'm going to continue working from home and freelancing where I can. If you know of a position, contract, or job that you think my very particular set of skills would be a great fit, &lt;a href="/hire-me"&gt;hire me&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Whatever happens, I'm just going to be grateful for the journey, and leave the destination up to God. I covet your prayers for wisdom and peace. If you see me lounging around town in some coffee shop, come over and say hello. I'd love to share what I'm learning in development and otherwise.&lt;/p&gt;</description><author>trv.rs</author><pubDate>Tue, 01 Oct 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/10/01/many-changes/</guid></item><item><title>RaspberryPi shutdown button</title><link>https://danielpecos.com/2013/09/30/raspberrypi-custom-command-button/</link><description>&lt;p&gt;Last Friday I got some spare time (finally!) and, with the help and tools of my friend &lt;a href="https://twitter.com/aprades"&gt;Alfredo&lt;/a&gt;, we placed a button in the RaspberryPi case so, when I push it, a custom command its executed on the RaspberryPi, like for example, a clean system shutdown.&lt;/p&gt;
&lt;p&gt;First lets start with some pictures of the final result:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://danielpecos.com/assets/2013/09/2013-09-30-19.42.31.jpg"&gt;&lt;img class="alignleft" src="https://danielpecos.com/assets/2013/09/2013-09-30-19.42.31-150x150.jpg" /&gt;&lt;/a&gt;
&lt;a href="https://danielpecos.com/assets/2013/09/2013-09-30-19.43.02.jpg"&gt;&lt;img class="alignleft" src="https://danielpecos.com/assets/2013/09/2013-09-30-19.43.02-150x150.jpg" /&gt;&lt;/a&gt;
&lt;a href="https://danielpecos.com/assets/2013/09/2013-09-30-19.47.33.jpg"&gt;&lt;img class="alignleft" src="https://danielpecos.com/assets/2013/09/2013-09-30-19.47.33-150x150.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br style="clear: both;" /&gt;
&lt;p&gt;And now the schematics (pins used in the schematics are 3.3v, GND and GPIO):&lt;/p&gt;
&lt;p&gt;&lt;a href="https://danielpecos.com/assets/2013/09/raspberry_gpio_button-809x1024.png"&gt;&lt;img alt="raspberry_gpio_button" class="aligncenter" height="266" src="https://danielpecos.com/assets/2013/09/raspberry_gpio_button-809x1024.png" width="210" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We mainly followed this &lt;a href="http://www.cl.cam.ac.uk/~db434/raspi/buttons_and_switches/"&gt;post&lt;/a&gt;, but used a different GPIO port, we soldered the components (once we tested the schematics on a protyping board) and modified the code to launch a custom command. This is the resulting code we used to do a &lt;strong&gt;system&lt;/strong&gt; &lt;strong&gt;shutdown&lt;/strong&gt; (I removed some comments from the original code of the post):&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;import os
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.IN)

prev_input = 0
while True:
  input = GPIO.input(4)
  if ((not prev_input) and input):
    os.system("sudo halt")
  prev_input = input
  #slight pause to debounce
  time.sleep(0.05)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The line highlighted is the one you should modify to set your custom command. To test it, you have to execute it as &lt;em&gt;root&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo python gpio_button.py
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and press the button. Finally, to launch this code in the startup process, just add it to &lt;em&gt;/etc/rc.local&lt;/em&gt; (just before the &lt;em&gt;exit 0&lt;/em&gt;):&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo vi /etc/rc.local
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Easy peasy!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Next steps&lt;/em&gt;&lt;/strong&gt;: modify the program to detect single click, double-click and long click.&lt;/p&gt;</description><author>GeekWare - Daniel Pecos Martínez</author><pubDate>Mon, 30 Sep 2013 17:57:55 GMT</pubDate><guid isPermaLink="true">https://danielpecos.com/2013/09/30/raspberrypi-custom-command-button/</guid></item><item><title>"How Linux owns the Internet" is SO wrong. And bad. But luckily...</title><link>https://stop.zona-m.net/2013/09/how-linux-owns-the-internet-is-so-wrong-and-bad-but-luckily/</link><description>&lt;p&gt;Have you seen that article titled &lt;a href="http://www.thetechgoggles.com/2013/09/how-linux-owns-internet.html"&gt;&amp;ldquo;How Linux owns the Internet&amp;rdquo;&lt;/a&gt;?&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Mon, 30 Sep 2013 14:52:40 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/09/how-linux-owns-the-internet-is-so-wrong-and-bad-but-luckily/</guid></item><item><title>Python Backup Script with rsync</title><link>https://www.zufallsheld.de/2013/09/29/python-backup-script-with-rsync/</link><description>&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;: I rewrote the whole script. You can find it &lt;a href="https://www.zufallsheld.de/2014/01/25/python-backup-script-revisited/"&gt;here&lt;/a&gt;!&lt;/em&gt;
&lt;br /&gt;&lt;br /&gt;
I wanted to get into Python recently and to have a reason to actually
learn the language, I thought to myself, why not replace the
bash-scripts I use on my private computer. I started with my backup
script, that …&lt;/p&gt;</description><author>zufallsheld</author><pubDate>Sun, 29 Sep 2013 21:13:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/09/29/python-backup-script-with-rsync/</guid></item><item><title>[9.28.13] Motorola S305 Bluetooth headphone revival Jig</title><link>https://transistor-man.com/bluetooth_headset_repair.html</link><description>Quick guide for repairing Motorola S305 Bluetooth headphones</description><author>transistor-man.com</author><pubDate>Sat, 28 Sep 2013 11:38:38 GMT</pubDate><guid isPermaLink="true">https://transistor-man.com/bluetooth_headset_repair.html</guid></item><item><title>Finite state machines in puppet</title><link>https://purpleidea.com/blog/2013/09/28/finite-state-machines-in-puppet/</link><description>&lt;p&gt;In my attempt to &lt;a href="https://purpleidea.com/blog/2012/11/14/setting-timed-events-in-puppet/" title="setting timed events in puppet"&gt;push puppet to its limits&lt;/a&gt;, (for &lt;a href="https://purpleidea.com/blog/2012/11/20/recursion-in-puppet-for-no-particular-reason/" title="recursion in puppet (for no particular reason)"&gt;no particular reason&lt;/a&gt;), to &lt;a href="https://purpleidea.com/blog/2013/06/04/collecting-duplicate-resources-in-puppet/" title="Collecting duplicate resources in puppet"&gt;develop more powerful puppet modules&lt;/a&gt;, to&lt;a href="https://purpleidea.com/blog/2012/08/23/how-to-avoid-cluster-race-conditions-or-how-to-implement-a-distributed-lock-manager-in-puppet/" title="How to avoid cluster race conditions or: How to implement a distributed lock manager in puppet"&gt; build in a distributed lock manager&lt;/a&gt;, and to &lt;a href="https://purpleidea.com/blog/2013/01/16/dynamically-including-classes-in-puppet/" title="Dynamically including classes in puppet"&gt;be more dynamic&lt;/a&gt;, I&amp;rsquo;m now attempting to build a &lt;a href="https://en.wikipedia.org/wiki/Finite-state_machine"&gt;Finite State Machine&lt;/a&gt; (FSM) in puppet.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sat, 28 Sep 2013 09:09:08 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/28/finite-state-machines-in-puppet/</guid></item><item><title>Installing Oracle Java 7 SDK on the Raspberry Pi</title><link>https://blog.tafkas.net/2013/09/28/installing-oracle-java-7-sdk-on-the-raspberry-pi/</link><description>Two days ago the official hard-float Oracle Java 7 JDK has been announced on the official Raspberry Pi blog. Prior to this there was only the OpenJDK implementation which was lacking performance.
Furterhmore the Raspberry Pi Foundation announced that future Raspbian images would ship with. Oracle Java by default.
If you want to give it a spin you can install the JDK with:
$ sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install oracle-java7-jdk</description><author>Tafkas Blog</author><pubDate>Sat, 28 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.tafkas.net/2013/09/28/installing-oracle-java-7-sdk-on-the-raspberry-pi/</guid></item><item><title>33 Of The Most Hilariously Terrible First Sentences In Literature History</title><link>http://thoughtcatalog.com/2013/33-hilariously-terrible-novel-sentences-you-need-to-read/</link><description>&lt;p&gt;Number ten, Tonya Lavel&amp;#8217;s, and the eleventh, David Pepper&amp;#8217;s, were reasonably good. With those two exceptions though, these were almost universally both terrible and utterly hilarious.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://thoughtcatalog.com/2013/33-hilariously-terrible-novel-sentences-you-need-to-read/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 27 Sep 2013 13:13:02 GMT</pubDate><guid isPermaLink="true">http://thoughtcatalog.com/2013/33-hilariously-terrible-novel-sentences-you-need-to-read/</guid></item><item><title>Turning 30</title><link>https://justingarrison.com/blog/2013-09-27-turning-30/</link><description>I just turned 30. I wanted to share 30 things I’ve learned in the past 30 years. Or at least the things I</description><author>Justin Garrison's Homepage</author><pubDate>Fri, 27 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-09-27-turning-30/</guid></item><item><title>No Ads!</title><link>https://purpleidea.com/blog/2013/09/26/no-ads/</link><description>&lt;p&gt;I just shelled out to wordpress.com to buy the No Ads upgrade. I think they&amp;rsquo;re good people. I hope you all appreciate it. Let me know if you do.&lt;/p&gt;
&lt;p&gt;Happy hacking,&lt;/p&gt;
&lt;p&gt;James&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://m9rx.com/" target="_blank"&gt;hire James&lt;/a&gt; and his team at &lt;a href="https://m9rx.com/" target="_blank"&gt;m9rx corporation&lt;/a&gt;.&lt;/i&gt;

&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://mastodon.social/@purpleidea" target="_blank"&gt;follow James on Mastodon&lt;/a&gt; for more frequent updates and other random thoughts.&lt;/i&gt;

&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://twitter.com/intent/follow?screen_name=purpleidea" target="_blank"&gt;follow James on Twitter&lt;/a&gt; for more frequent updates and other random thoughts.&lt;/i&gt;

&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://github.com/sponsors/purpleidea/" target="_blank"&gt;support James on GitHub&lt;/a&gt; if you'd like to help sustain this kind of content.&lt;/i&gt;

&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://www.patreon.com/purpleidea" target="_blank"&gt;support James on Patreon&lt;/a&gt; if you'd like to help sustain this kind of content.&lt;/i&gt;
&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Fri, 27 Sep 2013 02:18:34 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/26/no-ads/</guid></item><item><title>Why We're Shutting Off Our Comments</title><link>http://www.popsci.com/science/article/2013-09/why-were-shutting-our-comments</link><description>&lt;p&gt;An excerpt from the Popular Science article in which they laid out their reasoning behind turning comments off. As &lt;a href="http://daringfireball.net/linked/2013/09/24/popsci-comments"&gt;John Gruber said&lt;/a&gt;, it&amp;#8217;s hard to believe it took them this long.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;A politically motivated, decades-long war on expertise has eroded the popular consensus on a wide variety of scientifically validated topics. Everything, from evolution to the origins of climate change, is mistakenly up for grabs again. Scientific certainty is just another thing for two people to &amp;#8216;debate&amp;#8217; on television. And because comments sections tend to be a grotesque reflection of the media culture surrounding them, the cynical work of undermining bedrock scientific doctrine is now being done beneath our own stories, within a website devoted to championing science.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the point where I pick up my weary banner and resume railing against faux-feminists, for I see a strong resemblance in the difficulty Popular Science faces in maintaining intelligent discourse and the apparent inability for the vast majority of those wanting to challenge misogynistic behavior to do so either appropriately or intelligently, much less both. Popular Science faces a highly politicized discussion in a field that should, ideally, operate without such ponderous constraints, much like the discussions around misogyny has devolved into an unproductive, highly-emotional flame war. Popular Science could turn off its comments and at the very least curb this behavior in their small corner of the internet; unfortunately, we have no such remedy for the writings of faux-feminists.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.popsci.com/science/article/2013-09/why-were-shutting-our-comments"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 26 Sep 2013 15:52:33 GMT</pubDate><guid isPermaLink="true">http://www.popsci.com/science/article/2013-09/why-were-shutting-our-comments</guid></item><item><title>Installing missing GNOME games</title><link>https://purpleidea.com/blog/2013/09/26/installing-missing-gnome-games/</link><description>&lt;p&gt;I just realized that my Fedora 19 installation didn&amp;rsquo;t have any of the GNOME games installed by default any more. I guess there&amp;rsquo;s no love for &lt;a href="https://en.wikipedia.org/wiki/Nibbles_%28video_game%29"&gt;nibbles&lt;/a&gt;. Here&amp;rsquo;s a quick one-liner to get them all back:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-gdscript3"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;$&lt;/span&gt; sudo yum search game &lt;span style="color: #666;"&gt;|&lt;/span&gt; grep gnome &lt;span style="color: #666;"&gt;|&lt;/span&gt; awk &lt;span style="color: #b44;"&gt;'{print $1}'&lt;/span&gt; &lt;span style="color: #666;"&gt;|&lt;/span&gt; xargs sudo yum install &lt;span style="color: #666;"&gt;-&lt;/span&gt;y
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Loaded plugins: etckeeper, langpacks, refresh&lt;span style="color: #666;"&gt;-&lt;/span&gt;packagekit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Package gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;nibbles&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;0&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 already installed &lt;span style="color: #a2f; font-weight: bold;"&gt;and&lt;/span&gt; latest version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Resolving Dependencies
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;--&amp;gt;&lt;/span&gt; Running transaction check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;---&amp;gt;&lt;/span&gt; Package gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;chess&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;--&amp;gt;&lt;/span&gt; Processing Dependency: gnuchess &lt;span style="color: #a2f; font-weight: bold;"&gt;for&lt;/span&gt; package: gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;chess&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;---&amp;gt;&lt;/span&gt; Package gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;hearts&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;0.3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;12.&lt;/span&gt;fc19 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;---&amp;gt;&lt;/span&gt; Package gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;klotski&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;2&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;---&amp;gt;&lt;/span&gt; Package gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mahjongg&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;0&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;---&amp;gt;&lt;/span&gt; Package gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mines&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;---&amp;gt;&lt;/span&gt; Package gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;robots&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;---&amp;gt;&lt;/span&gt; Package gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;sudoku&lt;span style="color: #666;"&gt;.&lt;/span&gt;noarch &lt;span style="color: #666;"&gt;1&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;---&amp;gt;&lt;/span&gt; Package gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;tetravex&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;--&amp;gt;&lt;/span&gt; Running transaction check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;---&amp;gt;&lt;/span&gt; Package gnuchess&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;6.0&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;1.&lt;/span&gt;fc19 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;--&amp;gt;&lt;/span&gt; Finished Dependency Resolution
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Dependencies Resolved
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;================================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; Package               Arch          Version                Repository     Size
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;================================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Installing:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;chess           x86_64        &lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19           fedora        &lt;span style="color: #666;"&gt;2.6&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;hearts          x86_64        &lt;span style="color: #666;"&gt;0.3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;12.&lt;/span&gt;fc19            fedora        &lt;span style="color: #666;"&gt;365&lt;/span&gt; k
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;klotski         x86_64        &lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;2&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19           fedora        &lt;span style="color: #666;"&gt;1.2&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mahjongg        x86_64        &lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;0&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19           fedora        &lt;span style="color: #666;"&gt;3.8&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mines           x86_64        &lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19           fedora        &lt;span style="color: #666;"&gt;2.7&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;robots          x86_64        &lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19           fedora        &lt;span style="color: #666;"&gt;1.4&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;sudoku          noarch        &lt;span style="color: #666;"&gt;1&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19         fedora        &lt;span style="color: #666;"&gt;2.5&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;tetravex        x86_64        &lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19           fedora        &lt;span style="color: #666;"&gt;1.7&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Installing &lt;span style="color: #a2f; font-weight: bold;"&gt;for&lt;/span&gt; dependencies:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; gnuchess              x86_64        &lt;span style="color: #666;"&gt;6.0&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;1.&lt;/span&gt;fc19           fedora        &lt;span style="color: #666;"&gt;2.6&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Transaction Summary
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;================================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Install  &lt;span style="color: #666;"&gt;8&lt;/span&gt; Packages (&lt;span style="color: #666;"&gt;+&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt; Dependent package)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Total download size: &lt;span style="color: #666;"&gt;19&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Installed size: &lt;span style="color: #666;"&gt;54&lt;/span&gt; M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Downloading packages:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;(&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt;): gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;chess&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64&lt;span style="color: #666;"&gt;.&lt;/span&gt;rpm                 &lt;span style="color: #666;"&gt;|&lt;/span&gt; &lt;span style="color: #666;"&gt;2.6&lt;/span&gt; MB   &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;04&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;(&lt;span style="color: #666;"&gt;2&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt;): gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mines&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64&lt;span style="color: #666;"&gt;.&lt;/span&gt;rpm                 &lt;span style="color: #666;"&gt;|&lt;/span&gt; &lt;span style="color: #666;"&gt;2.7&lt;/span&gt; MB   &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;05&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;(&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt;): gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;klotski&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;2&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64&lt;span style="color: #666;"&gt;.&lt;/span&gt;rpm               &lt;span style="color: #666;"&gt;|&lt;/span&gt; &lt;span style="color: #666;"&gt;1.2&lt;/span&gt; MB   &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;05&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;(&lt;span style="color: #666;"&gt;4&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt;): gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;robots&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64&lt;span style="color: #666;"&gt;.&lt;/span&gt;rpm                &lt;span style="color: #666;"&gt;|&lt;/span&gt; &lt;span style="color: #666;"&gt;1.4&lt;/span&gt; MB   &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;01&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;(&lt;span style="color: #666;"&gt;5&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt;): gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;tetravex&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64&lt;span style="color: #666;"&gt;.&lt;/span&gt;rpm                                                                                          &lt;span style="color: #666;"&gt;|&lt;/span&gt; &lt;span style="color: #666;"&gt;1.7&lt;/span&gt; MB  &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;03&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;(&lt;span style="color: #666;"&gt;6&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt;): gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;hearts&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;0.3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;12.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64&lt;span style="color: #666;"&gt;.&lt;/span&gt;rpm                                                                                             &lt;span style="color: #666;"&gt;|&lt;/span&gt; &lt;span style="color: #666;"&gt;365&lt;/span&gt; kB  &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;10&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;(&lt;span style="color: #666;"&gt;7&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt;): gnuchess&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;6.0&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;1.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64&lt;span style="color: #666;"&gt;.&lt;/span&gt;rpm                                                                                                &lt;span style="color: #666;"&gt;|&lt;/span&gt; &lt;span style="color: #666;"&gt;2.6&lt;/span&gt; MB  &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;04&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;(&lt;span style="color: #666;"&gt;8&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt;): gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mahjongg&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;0&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64&lt;span style="color: #666;"&gt;.&lt;/span&gt;rpm                                                                                          &lt;span style="color: #666;"&gt;|&lt;/span&gt; &lt;span style="color: #666;"&gt;3.8&lt;/span&gt; MB  &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;11&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;(&lt;span style="color: #666;"&gt;9&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt;): gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;sudoku&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;noarch&lt;span style="color: #666;"&gt;.&lt;/span&gt;rpm                                                                                            &lt;span style="color: #666;"&gt;|&lt;/span&gt; &lt;span style="color: #666;"&gt;2.5&lt;/span&gt; MB  &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;06&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;--------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Total                                                                                                                         &lt;span style="color: #666;"&gt;1.5&lt;/span&gt; MB&lt;span style="color: #666;"&gt;/&lt;/span&gt;s &lt;span style="color: #666;"&gt;|&lt;/span&gt;  &lt;span style="color: #666;"&gt;19&lt;/span&gt; MB     &lt;span style="color: #666;"&gt;00&lt;/span&gt;:&lt;span style="color: #666;"&gt;12&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Running transaction check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Running transaction test
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Transaction test succeeded
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Running transaction
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;etckeeper: pre transaction commit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Installing : gnuchess&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;6.0&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;1.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                               &lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Installing : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;chess&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                            &lt;span style="color: #666;"&gt;2&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Installing : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;klotski&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;2&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                          &lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Installing : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;tetravex&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                         &lt;span style="color: #666;"&gt;4&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Installing : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mines&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                            &lt;span style="color: #666;"&gt;5&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Installing : &lt;span style="color: #666;"&gt;1&lt;/span&gt;:gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;sudoku&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;noarch                                                                                                         &lt;span style="color: #666;"&gt;6&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Installing : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;hearts&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;0.3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;12.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                            &lt;span style="color: #666;"&gt;7&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Installing : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mahjongg&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;0&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                         &lt;span style="color: #666;"&gt;8&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Installing : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;robots&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                           &lt;span style="color: #666;"&gt;9&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;etckeeper: post transaction commit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Verifying  : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;chess&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                            &lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Verifying  : gnuchess&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;6.0&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;1.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                               &lt;span style="color: #666;"&gt;2&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Verifying  : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;robots&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                           &lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Verifying  : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mahjongg&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;0&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                         &lt;span style="color: #666;"&gt;4&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Verifying  : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;hearts&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;0.3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;12.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                            &lt;span style="color: #666;"&gt;5&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Verifying  : &lt;span style="color: #666;"&gt;1&lt;/span&gt;:gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;sudoku&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;noarch                                                                                                         &lt;span style="color: #666;"&gt;6&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Verifying  : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mines&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                            &lt;span style="color: #666;"&gt;7&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Verifying  : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;tetravex&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                         &lt;span style="color: #666;"&gt;8&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  Verifying  : gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;klotski&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;2&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64                                                                                                          &lt;span style="color: #666;"&gt;9&lt;/span&gt;&lt;span style="color: #666;"&gt;/&lt;/span&gt;&lt;span style="color: #666;"&gt;9&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Installed:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;chess&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19    gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;hearts&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;0.3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;12.&lt;/span&gt;fc19     gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;klotski&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;2&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19    gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mahjongg&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;0&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19   
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;mines&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19    gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;robots&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19    gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;sudoku&lt;span style="color: #666;"&gt;.&lt;/span&gt;noarch &lt;span style="color: #666;"&gt;1&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;3.&lt;/span&gt;fc19     gnome&lt;span style="color: #666;"&gt;-&lt;/span&gt;tetravex&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;3.8&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;1&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;2.&lt;/span&gt;fc19   
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Dependency Installed:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  gnuchess&lt;span style="color: #666;"&gt;.&lt;/span&gt;x86_64 &lt;span style="color: #666;"&gt;0&lt;/span&gt;:&lt;span style="color: #666;"&gt;6.0&lt;/span&gt;&lt;span style="color: #666;"&gt;.&lt;/span&gt;&lt;span style="color: #666;"&gt;3&lt;/span&gt;&lt;span style="color: #666;"&gt;-&lt;/span&gt;&lt;span style="color: #666;"&gt;1.&lt;/span&gt;fc19                                                                                                                              
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Complete&lt;span style="color: #666;"&gt;!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #666;"&gt;$&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This isn&amp;rsquo;t a master hack, but it&amp;rsquo;s good to think about using command line magic to do your day-to-day tasks.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 26 Sep 2013 03:43:50 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/26/installing-missing-gnome-games/</guid></item><item><title>A DIY Dynamic DNS service using Cloudflare</title><link>http://jrgns.net/blog/2013/09/26/diy-dynamic-dns-using-cloudflare.html</link><description>&lt;p&gt;DynDNS was always the dynamic IP service of choice, but I could never get it
to work properly, and I was always stuck with their lame domain names as I’m
too cheap to pay for their serivces.&lt;/p&gt;

&lt;p&gt;Luckily services of all kinds, including DNS Providers, have caught on to the
fact that people want API’s. If there’s an API to do DNS updates, I can script
a solution.&lt;/p&gt;

&lt;p&gt;Some of my domains run off of &lt;a href="https://www.cloudflare.com/"&gt;Cloudflare&lt;/a&gt; which needs to overwrite your DNS.
And, hey presto, they have an &lt;a href="http://www.cloudflare.com/docs/client-api.html"&gt;API&lt;/a&gt;. So here it is:&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-bash"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10
11
12&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
curl https://www.cloudflare.com/api_json.html &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s1"&gt;'a=rec_edit'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s1"&gt;'tkn=1234512345qweqwe1234512345'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s1"&gt;'id=12345'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s1"&gt;'email=jrgns@jrgns.net'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s1"&gt;'z=jrgns.net'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s1"&gt;'type=A'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s1"&gt;'name=home'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s2"&gt;"content=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s1"&gt;'service_mode=0'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    -d &lt;span class="s1"&gt;'ttl=3600'&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Quick and dirty. This updates a domain (home.jrgns.net) with id 12345 with the
IP address that’s passed as the first argument to the script. There’s a bunch of
ways to get your external IP, my favourite is &lt;code class="highlighter-rouge"&gt;curl http://api.externalip.net/ip&lt;/code&gt;,
but I just run this script as the &lt;code class="highlighter-rouge"&gt;postscript&lt;/code&gt; of my ddclient (which updates another
service)&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-text"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;# /etc/ddclient.conf

protocol=dyndns2
use=web, web=myip.dnsomatic.com
ssl=yes
server=updates.someservice.com
login=mylogin@gmail.com
password='123456'
daemon=3600
postscript=/home/jrgns/bin/cloudflare_dynamic_dns.sh&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I’m sure the same can be done with outer services such as Route 53? Has anyone
tried something like this?&lt;/p&gt;</description><author>Jurgens du Toit</author><pubDate>Thu, 26 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://jrgns.net/blog/2013/09/26/diy-dynamic-dns-using-cloudflare.html</guid></item><item><title>Breaking out of secured Python environments</title><link>https://tomforb.es/blog/breaking-out-of-secured-python-environments/</link><description>A week or so ago I was browsing /r/Python and I saw a link to a website called rise4fun.com , which is a Microsoft Research project that contains a lot of cool demos and tools that you can run in your browser. The demo I was linked to was a restricted Python shell that could be used to experiment wi...</description><author>Tom Forbes</author><pubDate>Wed, 25 Sep 2013 23:02:33 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/breaking-out-of-secured-python-environments/</guid></item><item><title>Naming Overcast</title><link>http://www.marco.org/2013/09/24/naming-overcast</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/overcast.html"&gt;In a similar vein&lt;/a&gt;, Marco tells the story of how he came up with the name &amp;#8220;Overcast&amp;#8221;. I love stories like this.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.marco.org/2013/09/24/naming-overcast"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 25 Sep 2013 21:56:35 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/09/24/naming-overcast</guid></item><item><title>Overcast</title><link>https://overcast.fm/</link><description>&lt;p&gt;I absolutely love podcasts. Much to my girlfriend&amp;#8217;s confusion, I might add. After Marco Arment sold Instapaper in April, after Yahoo! bought Tumblr.&lt;sup id="fnref1"&gt;&lt;a href="#fn1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt; in May, and after he sold The Magazine shortly thereafter, only in my wildest dreams did I hope his elusive next venture would lead Marco to create a podcast client. Then, last Sunday at XOXO, my dream came true.&lt;/p&gt;

&lt;p&gt;Perhaps that&amp;#8217;s putting it slightly melodramatically, but to say that I&amp;#160;&amp;#8212;&amp;#160;and the collective internet as well&amp;#160;&amp;#8212;&amp;#160;am extremely excited for Overcast would be an understatement of gargantuan proportions. I can&amp;#8217;t wait for Overcast to come out; I plan on purchasing it on day one, as I&amp;#8217;m sure many others will as well. Despite Marco&amp;#8217;s modest expectations for Overcast, I would be surprised if it &lt;em&gt;didn&amp;#8217;t&lt;/em&gt; take the podcast client market by storm: the same design sensibilities that made Instapaper and The Magazine so popular&amp;#160;&amp;#8212;&amp;#160;one need only look to &lt;a href="http://www.marco.org/2013/09/23/overcast-coming-soon"&gt;the announcement Marco posted&lt;/a&gt; for an idea as to those proven ideals&amp;#160;&amp;#8212;&amp;#160;will almost undoubtedly make Overcast similarly popular and, hopefully, a smashing success.&lt;/p&gt;

&lt;p&gt;Good luck to you, Marco; we await Overcast&amp;#8217;s release in eager anticipation.&lt;/p&gt;

&lt;p id="fn1"&gt;&lt;a class="fn" href="#fnref1" title="return to article"&gt;&amp;#x21a9;&lt;/a&gt;&amp;nbsp;I can&amp;#8217;t help but think of Ben Brooks&amp;#8217; article &lt;a href="http://brooksreview.net/2013/05/tumblr-yahoo/"&gt;&lt;em&gt;Yahoo! + Tumblr. = !!&lt;/em&gt;&lt;/a&gt; on the topic every time I think about this acquisition.&lt;/p&gt;


                &lt;p&gt;&lt;a href="https://overcast.fm/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 25 Sep 2013 21:22:43 GMT</pubDate><guid isPermaLink="true">https://overcast.fm/</guid></item><item><title>What Clayton Christensen Got Wrong in his Theory of Low-End Disruption</title><link>http://stratechery.com/2013/clayton-christensen-got-wrong/</link><description>&lt;p&gt;Another great article by Ben Thompson, this time on Clay Christensen&amp;#8217;s interesting disruption theories and Apple&amp;#8217;s approach in making products that both defy them and motivate people to purchase en masse. Come for the insights into Apple, and stay for his dissection of Christensen&amp;#8217;s widely-regarded theory; this article is well worth the read.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://stratechery.com/2013/clayton-christensen-got-wrong/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 25 Sep 2013 20:30:11 GMT</pubDate><guid isPermaLink="true">http://stratechery.com/2013/clayton-christensen-got-wrong/</guid></item><item><title>InstaRank v1.0</title><link>http://blog.instapaper.com/post/61764950884</link><description>&lt;p&gt;I realize in my last two articles, &lt;a href="https://zacs.site/blog/instapaper-5.html"&gt;&lt;em&gt;Instapaper 5&lt;/em&gt;&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;in which I made a number of proposals for Instapaper 5&amp;#160;&amp;#8212;&amp;#160;and &lt;a href="https://zacs.site/blog/betaworks-releases-instapaper-5.html"&gt;&lt;em&gt;Betaworks Releases Instapaper 5&lt;/em&gt;&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;in which I conveyed my mostly positive feelings on the new release&amp;#160;&amp;#8212;&amp;#160;I likely appeared very critical of Betaworks and their continued work on Instapaper. This is not the case: while I do feel a better launch strategy entailing a service-wide design overhaul and one in which they added a larger set of new features to Instapaper would have greatly helped the platform, I am not of the opinion that Betaworks did not improve the app in Instapaper 5; the impressive new InstaRank feature is a prime example of this.&lt;/p&gt;

&lt;p&gt;That said though, I cannot help but feel that this feature, too, would have benefited from some additional development time. I may&amp;#160;&amp;#8212;&amp;#160;and the blog post linked earlier confirms this suspicion&amp;#160;&amp;#8212;&amp;#160;be an outlier in that I prefer to keep my Instapaper queue small, in the four to eight article range, and read in chronological order. This is a roundabout way to say that I will find little use in Instapaper&amp;#8217;s new Popularity sorting algorithm, but not that I could not at some point in the future: a section similar to The Feature&amp;#160;&amp;#8212;&amp;#160;available under &amp;#8220;Browse&amp;#8221; on the iPhone&amp;#160;&amp;#8212;&amp;#160;populated with articles ranked using the InstaRank algorithm through which I could find and save articles to my queue for consumption at a later date would be very useful indeed.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://blog.instapaper.com/post/61764950884"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 25 Sep 2013 20:19:47 GMT</pubDate><guid isPermaLink="true">http://blog.instapaper.com/post/61764950884</guid></item><item><title>The $550 iPhone 5C makes perfect sense</title><link>http://stratechery.com/2013/the-550-iphone-5c-makes-perfect-sense/</link><description>&lt;p&gt;&amp;#8220;Looking again at that chart, and with the realities of these three markets in mind, it&amp;#8217;s not so much that the iPhone has saturated the American-style and European-style markets, and ought to focus on the Asian-style one; rather, the iPhone has saturated the high end in all three markets  the high end just varies in accessibility ($200 for American-style, $650 for Asian-style). And, if you accept that the iPhone is in roughly the same competitive position in all three markets  that the difference in market share is due to inherent structure of the market  then it&amp;#8217;s not at all obvious Apple should focus on the SE Asia-style market. In fact, it&amp;#8217;s obvious they shouldn&amp;#8217;t.&amp;#8221;&lt;/p&gt;

&lt;p&gt;A characteristically fascinating article by Ben Thompson explaining the logic behind Apple&amp;#8217;s refusal to enter the low-end market as many predicted it would with a C model, and why Apple chose to position the 5C where it did in the iPhone line. His work is quickly becoming some of my favorite writing to read, alongside that of Horace Dediu and Benedict Evans.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://stratechery.com/2013/the-550-iphone-5c-makes-perfect-sense/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 25 Sep 2013 19:40:15 GMT</pubDate><guid isPermaLink="true">http://stratechery.com/2013/the-550-iphone-5c-makes-perfect-sense/</guid></item><item><title>In Defense of Entangled Bank</title><link>https://zacs.site/blog/in-defense-of-entangled-bank.html</link><description>&lt;p&gt;By now I realize this issue has largely fallen to the wayside, as its various permutations invariably do seemingly momentarily after gaining any significant traction, despite the condemnation many so readily metered out. Regardless of its fall from the collective&amp;#8217;s fickle favor though, the event and ensuing discussions nevertheless merit some examination.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/in-defense-of-entangled-bank.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 25 Sep 2013 15:52:40 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/in-defense-of-entangled-bank.html</guid></item><item><title>Yes, the percloud is "just" another Gnu/Linux distro. That's why it's a good idea</title><link>https://stop.zona-m.net/2013/09/yes-the-percloud-is-just-another-gnulinux-distro-thats-why-its-a-good-idea/</link><description>&lt;p&gt;The &lt;a href="http://per-cloud.com"&gt;percloud&lt;/a&gt; is my proposal for an easy to use &lt;strong&gt;personal cloud&lt;/strong&gt;, that is for a feasible alternative for the masses to Facebook, Gmail, and all similar centralized Web services and their privacy and data ownership issues. Last week I put online a &lt;a href="http://www.slideshare.net/mfioretti/percloud-in-10slides"&gt;10 slides summary of how the percloud should work&lt;/a&gt;. This post answers a specific question that I&amp;rsquo;ve been asked many times by readers of those slides&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Wed, 25 Sep 2013 14:30:38 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/09/yes-the-percloud-is-just-another-gnulinux-distro-thats-why-its-a-good-idea/</guid></item><item><title>Secrets of Closing the Sale</title><link>https://june.kim/closing-the-sale/</link><author>june.kim</author><pubDate>Wed, 25 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://june.kim/closing-the-sale/</guid></item><item><title>Romain Dardour: Founder of Hull</title><link>https://solomon.io/romain-dardour-founder-of-hull/</link><description>Romain Dardour is the Founder and CEO of Hull, an open platform for social applications.</description><author>Sam Solomon</author><pubDate>Wed, 25 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/romain-dardour-founder-of-hull/</guid></item><item><title>Get Into the Flow</title><link>https://xavd.id/blog/post/get-into-the-flow/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/get-into-the-flow/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Wed, 25 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/get-into-the-flow/</guid></item><item><title>The correct way to use and advocate OO.o and the real reason to do it</title><link>https://stop.zona-m.net/2013/09/the-correct-way-to-use-and-advocate-oo-o-and-the-real-reason-to-do-it/</link><description>&lt;p&gt;&lt;em&gt;(this is something I wrote in 2007. Everywhere you read &amp;ldquo;OO.o&amp;rdquo; you can (and should) replace it with &amp;ldquo;Apache OpenOffice or Libre Office&amp;rdquo;. See the bottom of the page for the origin and history of the text)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Many people, schools and small businesses use OO.o only because&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Tue, 24 Sep 2013 12:57:08 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/09/the-correct-way-to-use-and-advocate-oo-o-and-the-real-reason-to-do-it/</guid></item><item><title>The actual advantages of OpenDocument</title><link>https://stop.zona-m.net/2013/09/the-actual-advantages-of-opendocument/</link><description>&lt;p&gt;&lt;em&gt;(this is only the final part of something I wrote in 2007. Please do read the &lt;a href="https://stop.zona-m.net/2013/09/the-correct-way-to-use-and-advocate-oo-o-and-the-real-reason-to-do-it/"&gt;first part&lt;/a&gt; to understand where the text below comes from!)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A highly structured, metadata rich, application independent XML file format like OpenDocument can finally offer two huge advantages&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Tue, 24 Sep 2013 12:55:32 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/09/the-actual-advantages-of-opendocument/</guid></item><item><title>Heidelberg Laureate Forum 2013: `Codebreaker`</title><link>https://bastian.rieck.me/blog/2013/hlf_codebreaker/</link><description>&lt;p&gt;&lt;strong&gt;Edit&lt;/strong&gt;: As a sort of belated Christmas present, I was made aware (&lt;a href="http://www.lutz-buech.de"&gt;thanks,
Lutz!&lt;/a&gt;) that Alan Turing has &lt;em&gt;finally&lt;/em&gt; been pardoned. &lt;a href="http://universal-machine.blogspot.de/2013/12/its-official-alan-turing-is-pardoned.html"&gt;See this article on
the &lt;em&gt;Universal Machine&lt;/em&gt; blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I had tremendous fun being the local expert for the movie &lt;a href="http://www.turingfilm.com"&gt;&lt;code&gt;Codebreaker&lt;/code&gt;&lt;/a&gt;
that was shown as a part of the &lt;a href="http://www.heidelberg-laureate-forum.org"&gt;1st Heidelberg Laureate
Forum&lt;/a&gt;. The folks at the &lt;a href="http://www.klaus-tschira-stiftung.de"&gt;Klaus-Tschira
Foundation&lt;/a&gt; set up a film festival at Heidelberg&amp;rsquo;s
&lt;a href="http://www.karlstorkino.de"&gt;Karlstorkino&lt;/a&gt;. The idea was to show a film and get an expert to answer
audience questions later on. This Tuesday, &lt;em&gt;I&lt;/em&gt; was the expert. At first, I felt slightly out of my
depth–the things I don&amp;rsquo;t know about cryptography fill multiple volumes. Still, I was able to
engage the audience in a very nice discussion.&lt;/p&gt;
&lt;p&gt;The discussion was too short to cover all the material I wanted to talk about. I thus decided to
write down my thoughts. This post is more a &lt;a href="https://en.wikipedia.org/wiki/Stream_of_consciousness_(narrative_mode)"&gt;&amp;quot;&lt;em&gt;stream of consciousness&lt;/em&gt;&amp;quot;&lt;/a&gt; than a stringent
account of things. My apologies.&lt;/p&gt;
&lt;h1 id="the-film"&gt;The film&lt;/h1&gt;
&lt;p&gt;As far as I could tell, the film gave a very accurate portrait of the life of Alan Turing. The
directors found the ideal balance between drama and information. The mathematical aspects were
covered correctly (insofar as they were any). There was one glaring mistake, though: The movie
depicted a &lt;a href="https://en.wikipedia.org/wiki/Turing_machine"&gt;&amp;ldquo;Turing machine&amp;rdquo;&lt;/a&gt; that was unable to &lt;em&gt;write&lt;/em&gt; data. But
being able to &lt;em&gt;write&lt;/em&gt; and &lt;em&gt;read&lt;/em&gt; data is the whole point of the machine!&lt;/p&gt;
&lt;p&gt;Furthermore, the film mentioned an official apology of the British government concerning Turing&amp;rsquo;s
treatment in the 1950s. I thought that this was still an ongoing effort, so I searched for some
reports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.theguardian.com/uk-news/2013/jul/19/enigma-codebreaker-alan-turing-posthumous-pardon"&gt;A very recent article in the Guardian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.theguardia.com/science/2013/jul/22/alan-turing-gay-rights"&gt;Some comments on the mistreatment of homosexuals, also in the Guardian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.theguardian.com/world/2009/sep/11/pm-apology-to-alan-turing"&gt;The original apology from 2009, which the film referred to&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.telegraph.co.uk/news/politics/gordon-brown/6170112/Gordon-Brown-Im-proud-to-say-sorry-to-a-real-war-hero.html"&gt;A statement of Gordon Brown concerning said apology&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, the film slightly misrepresented how the &lt;em&gt;Enigma&lt;/em&gt; was deciphered. It was not solely Turing&amp;rsquo;s
genius, but &lt;a href="http://www.telegraph.co.uk/history/world-war-two/9594403/Poles-launch-campaign-for-Enigma-code-breaking-recognition.html"&gt;a team effort of Polish
scientists&lt;/a&gt;
that ultimately led to the machine&amp;rsquo;s downfall. I guess the film tried to convey that Turing&amp;rsquo;s work
was superb and without equal, so it makes sense to present the audience the &lt;em&gt;one&lt;/em&gt; codebreaker. Don&amp;rsquo;t
be fooled, though–even Turing collaborated with other scientists.&lt;/p&gt;
&lt;p&gt;A last grievance of the film is the portrayal of the scientific community as such. The film used
descriptions such as “a bunch of eccentric mathematicians” and talked about some Turing&amp;rsquo;s eccentric
behaviour (wearing a Gas mask because of his hay fever, hiding silver etc.). This narrative device
is a nice way of getting a chuckle out of the audience, a sort of &lt;em&gt;comic relief&lt;/em&gt; maybe. But it is
also very, very trite. These sorts of descriptions seem to strike a nerve with me. If people
(whatever their profession) are characterized as &lt;em&gt;brilliant&lt;/em&gt;, &lt;em&gt;outstanding&lt;/em&gt;, and so on, there seems
to be the tendency to ascribe them negative traits such as &lt;em&gt;eccentric&lt;/em&gt;, &lt;em&gt;insane&lt;/em&gt;, and so on. Is this
a crude way of trying to balance the scales somehow? Something like &amp;ldquo;Turing was brilliant, but his
genius came with a large price! (insert dramatic sound here)&amp;rdquo;. Here&amp;rsquo;s my &lt;em&gt;protip&lt;/em&gt; for all directors:
If you stop painting characters &lt;em&gt;larger-than-life&lt;/em&gt;, you won&amp;rsquo;t have to resort to these cheap tricks.&lt;/p&gt;
&lt;p&gt;To be fair, the movie does not do this a lot, so I am definitely overreacting here. Still, if &lt;em&gt;you&lt;/em&gt;,
dear reader, watched that movie without knowing many mathematicians or computer scientists, please
don&amp;rsquo;t believe this simple characterization. As Neal Stephenson put it: &lt;a href="http://youtu.be/CwV3x1jZ8oE"&gt;&lt;em&gt;We are all geeks
now&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="would-you-like-to-know-more"&gt;Would you like to know more?&lt;/h1&gt;
&lt;p&gt;This is where the homework starts. I can recommend several books on Turing and cryptography. They
are covered in no particular order:&lt;/p&gt;
&lt;h2 id="neal-stephenson-cryptonomicon"&gt;Neal Stephenson: Cryptonomicon&lt;/h2&gt;
&lt;p&gt;This is by far my favorite book and in the past 10 years, I have read it numerous times. I even
borrowed the Tolkien characterization of people. But I am getting ahead of myself. Without too many
spoilers, Cryptonomicon takes you on a joyride through time and space. There are at least three
different stories, all connected by pivotal events in the book. The main theme is about
&lt;em&gt;cryptography&lt;/em&gt; and &lt;em&gt;mathematics&lt;/em&gt;. In the dawn of World War II, some mathematicians (including
Turing, of course), talk about the future of mathematics. A young man decides to join the marines.
War erupts and in general, all hell breaks loose. Fast forward 50 years. Two high-tech entrepreneurs
want to install high-speed submarine communications cable in the Philippines.&lt;/p&gt;
&lt;p&gt;It does not sound remotely believable, but Neal Stephenson manages to mash these stories into a
consistent narrative: Characters you can relate to, science, technology, history, &amp;hellip;&lt;/p&gt;
&lt;p&gt;A fair warning: Neal Stephenson likes to digress. A lot. You think you know digressions (maybe from
reading this blog?), but compared to Neal Stephenson, everything else I have every read so far
pales. So go buy the book already!&lt;/p&gt;
&lt;h2 id="george-dyson-turings-cathedral"&gt;George Dyson: Turing&amp;rsquo;s Cathedral&lt;/h2&gt;
&lt;p&gt;This book covers the historical perspective quite well. It&amp;rsquo;s a heavy read if you are unfamiliar with
the material, but it&amp;rsquo;s well worth it in my opinion. The book does not solely focus on Turing, but
more on the history of computers in general. Contrary to the title, the main &amp;ldquo;character&amp;rdquo; is
&lt;a href="https://en.wikipedia.org/wiki/John_von_Neumann"&gt;&amp;ldquo;John von Neumann&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="charles-petzold-code"&gt;Charles Petzold: Code&lt;/h2&gt;
&lt;p&gt;By far &lt;em&gt;the&lt;/em&gt; most readable and accessible explanation of how computers actually &lt;em&gt;work&lt;/em&gt;. This book is
really hands-on. Charles Petzold has the remarkable talent of explaining the basic concepts of
computers to anyone. I am not a hardware guy myself and even I was tempted to build my own
mechanical computer afterwards. This is &lt;em&gt;the&lt;/em&gt; book I am forcing people in my family to read so that
they can understand that there is nothing magical about computers after all (for balance, I am
reading car manuals in order to understand that there is nothing magical about cars).&lt;/p&gt;
&lt;h2 id="simon-singh-the-code-book"&gt;Simon Singh: The Code Book&lt;/h2&gt;
&lt;p&gt;This book focuses on cryptography. Simon Singh does a very good job of covering the history of this
science, starting from simple substitution ciphers, and ending with quantum computing. There is also
a good explanation of the &lt;a href="https://en.wikipedia.org/wiki/RSA_(algorithm)"&gt;&amp;ldquo;RSA algorithm&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="taking-it-to-the-next-level"&gt;Taking it to the next level&lt;/h2&gt;
&lt;p&gt;If you are really, really serious about doing cryptography, nothing
beats the two bibles written by Bruce Schneier: &lt;em&gt;Applied cryptography&lt;/em&gt; and &lt;em&gt;Practical
cryptography&lt;/em&gt;. However, these books require a solid understanding of imperative programming
languages, preferably C or C++. Nothing for the faint of heart. A more accessible introduction to
cryptographic algorithms is the &lt;a href="http://ciphersaber.gurus.org"&gt;CipherSaber project&lt;/a&gt;. Here, your goal
is to create your own implementation of the RC4 algorithm. Give it a try!&lt;/p&gt;
&lt;h1 id="shameless-self-promotion"&gt;Shameless self-promotion&lt;/h1&gt;
&lt;p&gt;If you can read German, why not take a look at my &lt;a href="https://bastian.rieck.me/talks/science_academy_2013_rsa.pdf"&gt;slides about
cryptography&lt;/a&gt;. The target audience for this talk did not have any
in-depth mathematical knowledge, so I tried to keep everything very accessible.&lt;/p&gt;
&lt;p&gt;I will probably update this post if I remember anything else that might be of interest. Thanks for
bearing with me!&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Mon, 23 Sep 2013 23:02:16 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/hlf_codebreaker/</guid></item><item><title>Bittorent sync for repository mirroring</title><link>https://purpleidea.com/blog/2013/09/23/bittorent-sync-for-repository-mirroring/</link><description>&lt;p&gt;&lt;a href="https://twitter.com/theronconrey"&gt;Theron Conrey&lt;/a&gt; writes about using:&lt;/p&gt;
&lt;blockquote&gt;&lt;a href="http://conrey.org/2013/05/21/bittorrent-sync-as-geo-replication-for-storage/"&gt;BitTorrent Sync as Geo-Replication for Storage&lt;/a&gt;&lt;/blockquote&gt;
We got a chance to talk about this idea at Linuxcon. I'm not entirely convinced there aren't some problem edge cases with this solution, but I think it will be hard to tell as long as the BitTorrent sync library is proprietary. I did come up with a special case of Theron's idea that I believe could work well.
&lt;p&gt;The special case uses the optimization that the synchronization (or file transferring) is unidirectional. This avoids any coherency complications involved if both sides were to write to the same file. Combined with the BitTorrent protocol, this does what normal torrent usage does, except with BitTorrent sync, we&amp;rsquo;re looking at a folder full of files.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Mon, 23 Sep 2013 05:06:28 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/23/bittorent-sync-for-repository-mirroring/</guid></item><item><title>Creativity: Taj Mahals and Ant-Hills</title><link>https://honestmusings.wordpress.com/2013/09/21/creativity-taj-mahals-and-ant-hills/</link><description>An Ant Hill is a masterpiece of nature. Hidden from the human eye it grows intricate, complex and deep. It&amp;#8217;s a beautiful structure crafted by one of the most humble creatures. But in the world of Colosseum&amp;#8217;s and Eiffel&amp;#8217;s tower it is generally overlooked. How do we define creativity in such a context? Is creativity &amp;#8230; &lt;a class="more-link" href="https://honestmusings.wordpress.com/2013/09/21/creativity-taj-mahals-and-ant-hills/"&gt;Continue reading &lt;span class="screen-reader-text"&gt;Creativity: Taj Mahals and&amp;#160;Ant-Hills&lt;/span&gt;&lt;/a&gt;</description><author>Honest Musings</author><pubDate>Sat, 21 Sep 2013 05:51:05 GMT</pubDate><guid isPermaLink="true">https://honestmusings.wordpress.com/2013/09/21/creativity-taj-mahals-and-ant-hills/</guid></item><item><title>Aboard the Nautilus</title><link>https://captnemo.in/blog/2013/09/21/aboard-the-nautilus/</link><description>&lt;p&gt;I’d done a &lt;a href="http://captnemo.in/blog/2009/12/04/nautilus-behind-the-curtains/"&gt;post&lt;/a&gt; on this a long time back (2009), detailing
what all softwares I use on a daily basis. This
is an update to that post.&lt;/p&gt;

&lt;p&gt;Since the last post, I’ve moved on to using Linux, using
Elementary OS as my primary OS. Over the time period this post was written,
I’ve shifted from using Cinnamon to Openbox and finally
to elementaryOS’s pantheon as my Desktop Manager. I’m thinking of switching
to Arch Linux, just to get a faster experience. I use 
Synapse as my application launcher, because its much faster
than anything else out there.&lt;/p&gt;

&lt;p&gt;For most of my web browsing needs, I rely on Google Chrome Stable
and a daily build of Chromium (v31 as of now) for most of my work.
 I switch between them all the time. I use Firefox (stable) only to
test out my projects from time to time.&lt;/p&gt;

&lt;p&gt;The current editor I use is Sublime Text. It is
everything you need, and much more. I’m still to
get started using its build system, and its
plethora of packages; but its still an excellent
choice for a daily use editor. On the command line, I use
Vim, git (with &lt;a href="https://github.com/ndbroadbent/scm_breeze" title="Faster Git Shortcuts"&gt;SCM Breeze&lt;/a&gt;), &lt;a href="https://github.com/clvv/fasd" title="Command Line Booster"&gt;fasd&lt;/a&gt; and &lt;a href="https://github.com/jonas/tig" title="Excellent Git CLI"&gt;tig&lt;/a&gt;, 
which is an excellent git interface on the command line.&lt;/p&gt;

&lt;p&gt;I listen to music on my own browser-based music
player, called &lt;a href="https://sdslabs.co.in/muzi" title="Link works only inside IITR"&gt;Muzi&lt;/a&gt;, YouTube and GrooveShark.&lt;/p&gt;

&lt;p&gt;For my terminal needs, I use Gnome-Terminal. I use
&lt;a href="http://byobu.co/"&gt;Byobu&lt;/a&gt; to manage my session, and often
connect to it from other computers as well. Its an
excellent multiplexer that fits in my workflow
really well.&lt;/p&gt;

&lt;p&gt;I use &lt;a href="http://imo.im/"&gt;Imo.im&lt;/a&gt; on both the
Desktop and my tablet to chat. I occasionally use &lt;a href="http://sourceforge.net/projects/retext/"&gt;ReText&lt;/a&gt;
for editing markdown files. I use &lt;a href="http://jonls.dk/redshift/"&gt;RedShift&lt;/a&gt; on my laptop and &lt;a href="http://justgetflux.com/"&gt;f.lux&lt;/a&gt;
on my iPad to help me sleep better. I recommend it to everyone who is
suffering from eye-strain or wants to sleep better.&lt;/p&gt;

&lt;p&gt;On the browser, my most visited sites would be
&lt;a href="https://news.ycombinator.com/"&gt;Hacker News&lt;/a&gt; (via hckrnews.com), &lt;a href="http://workflowy.com/"&gt;WorkFlowy&lt;/a&gt; for managing
my to-do list and GitHub on a daily basis for most of my projects.&lt;/p&gt;

&lt;h2 id="hardware"&gt;Hardware&lt;/h2&gt;
&lt;p&gt;I own a old Nokia X3-02, and will be upgrading to a &lt;a href="https://www.mozilla.org/en-US/firefox/os/"&gt;Firefox OS Phone&lt;/a&gt; soon enough. I use a Dell Inspiron 1545 as my personal machine. I also use an iPad 2 (with 3G) on a daily basis (mostly for reading). I also own a Dayan Zhanchi 3x3 and a 5x5 shengshou 
speed cube.&lt;/p&gt;

&lt;h2 id="ipad-apps"&gt;iPad Apps&lt;/h2&gt;
&lt;p&gt;The must have iPad apps for me are Chrome, &lt;a href="https://imo.im/iphone/"&gt;imo&lt;/a&gt;,  and iBooks. I have installed &lt;a href="http://www.mailboxapp.com/"&gt;Mailbox&lt;/a&gt; alongside GMail, and haven’t used GMail since
I installed it. I sometimes write stuff using &lt;a href="http://www.hogbaysoftware.com/products/plaintext/"&gt;Plaintext&lt;/a&gt;, and sketch using &lt;a href="http://www.fiftythree.com/paper"&gt;Paper&lt;/a&gt;. I read my RSS feeds using Newsify and Feedly.&lt;/p&gt;

&lt;h2 id="extensions"&gt;Extensions&lt;/h2&gt;
&lt;p&gt;Chrome Extensions that I use on a daily basis include &lt;a href="http://chimeapp.com/"&gt;Chime&lt;/a&gt; for 
wonderful notifications (highly recommended), &lt;a href="http://www.ghostery.com"&gt;Ghostery&lt;/a&gt; for getting a tracker-free internet
, &lt;a href="https://www.eff.org/https-everywhere"&gt;HTTPS Everywhere&lt;/a&gt; to keep me secure, &lt;a href="http://lastpass.com/"&gt;LastPass&lt;/a&gt; to manage passwords and &lt;a href="https://chrome.google.com/webstore/detail/stylish/fjnbnpbmkenffdnngjfgmeleoegfcffe"&gt;Stylish&lt;/a&gt;
 for &lt;a href="http://userstyles.org/users/183835"&gt;customizing&lt;/a&gt; the looks of various websites.&lt;/p&gt;

&lt;h2 id="dream-setup"&gt;Dream Setup&lt;/h2&gt;
&lt;p&gt;My dream setup would consist of a lightweight Ubuntu Laptop that I can carry around
that still has lots of processing power and battery life. I’ll prety much be satisfied
by any high-end Android phone as long as it has a decent battery life.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Sat, 21 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2013/09/21/aboard-the-nautilus/</guid></item><item><title>Simplifying the blob downloader</title><link>http://www.nuke24.net/plog/4.html</link><author>TOGoS's Project Log</author><pubDate>Fri, 20 Sep 2013 21:13:37 GMT</pubDate><guid isPermaLink="true">http://www.nuke24.net/plog/4.html</guid></item><item><title>Gluster Community Day, Thursday</title><link>https://purpleidea.com/blog/2013/09/20/gluster-community-day-thursday-2/</link><description>&lt;p&gt;I&amp;rsquo;m here in New Orleans &lt;a href="https://github.com/purpleidea/puppet-gluster"&gt;hacking up a storm&lt;/a&gt; and getting to meet fellow &lt;a href="http://blog.gluster.org/blog/"&gt;gluster&lt;/a&gt; users IRL. John Mark Walker started off with a great &amp;ldquo;State of the GlusterFS union&amp;rdquo; style talk.&lt;/p&gt;
&lt;p&gt;Today Louis (semiosis) gave a great talk about running glusterfs on amazon. It was highly pragmatic and he explained how he chose the number of bricks per host. The talk will be posted online shortly.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/marcoceppi"&gt;Marco Ceppi&lt;/a&gt; from Canonical gave a talk about juju and gluster. I haven&amp;rsquo;t had much time to look at juju, so it was good exposure. Marco&amp;rsquo;s gluster charm suffers from a lack of high availability peering, but I&amp;rsquo;m sure that is easily solved, and it isn&amp;rsquo;t a big issue. I had the same issue when working on puppet-gluster. &lt;a href="https://purpleidea.com/blog/2012/08/23/how-to-avoid-cluster-race-conditions-or-how-to-implement-a-distributed-lock-manager-in-puppet/" title="How to avoid cluster race conditions or: How to implement a distributed lock manager in puppet"&gt;I&amp;rsquo;ve written an article about how I solved this problem.&lt;/a&gt; I think it&amp;rsquo;s the most elegant solution, but if anyone has a better idea, please let me know. The solutions I used for puppet, can be applied to juju too. Marco and I talked about porting puppet-gluster to ubuntu. We also talked about using puppet inside of juju, &lt;em&gt;with&lt;/em&gt; a puppetmaster, but we&amp;rsquo;re not sure how useful that would be beyond pure hack value.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Fri, 20 Sep 2013 19:23:12 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/20/gluster-community-day-thursday-2/</guid></item><item><title>What is Pulp, Candlepin, Foreman, and Katello</title><link>https://justingarrison.com/blog/2013-09-20-what-is-pulp-candlepin-foreman-and-katello/</link><description>I have been working with some of the above products at work for the past couple of weeks and I just cam</description><author>Justin Garrison's Homepage</author><pubDate>Fri, 20 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-09-20-what-is-pulp-candlepin-foreman-and-katello/</guid></item><item><title>A look back at the dotcom bubble</title><link>https://jasoneckert.github.io/myblog/the-dotcom-bubble/</link><description>&lt;p&gt;&lt;img alt="dotcom" src="dotcom.png#center" title="dotcom" /&gt;&lt;/p&gt;
&lt;p&gt;Just over a decade ago, the dotcom bubble burst, and for the next 3-4 years, the IT industry (and IT job market) was in a slump.&lt;/p&gt;
&lt;p&gt;During the last presentation I did for Game On 2.0 on August 29th, one of the audience members asked me what the dotcom bubble actually was.  I supplied the standard Web answer of “overspending in the IT market” and “mismanagement of IT resources” (or something like that).&lt;/p&gt;</description><author>Jason Eckert's Website and Blog</author><pubDate>Fri, 20 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://jasoneckert.github.io/myblog/the-dotcom-bubble/</guid></item><item><title>GoDaddy Purchased the Domain Name Market Today</title><link>https://kevinohashi.com/20/09/2013/godaddy-purchased-domain-name-market-today</link><description>&lt;p&gt;&lt;img src="http://kevinohashi.com/sites/default/files/godaddy.png" /&gt;&lt;/p&gt;
&lt;p&gt;Today is an interesting and perhaps historic day in the domain industry. &lt;a href="http://godaddy.com"&gt;GoDaddy&lt;/a&gt; has acquired &lt;a href="http://www.afternic.com/blog/godaddy-acquires-afternic-primes-domain-aftermarket-for-new-tlds/"&gt;Afternic&lt;/a&gt; and &lt;a href="http://www.dnjournal.com/archive/lowdown/2013/dailyposts/20130919.htm"&gt;SmartName&lt;/a&gt; from &lt;a href="https://kevinohashi.com/http;/namemedia.com"&gt;Name Media&lt;/a&gt;. Name Media is probably best known for the BuyDomains brand. They own one of the largest portfolios of domain names in the world at nearly &lt;a href="http://www.webhosting.info/webhosts/reports/total_domains/BUYDOMAINS.COM"&gt;1 million domains&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;GoDaddy is the largest player on the consumer side of the domain market by a wide margin. However, they aren't the biggest player and/or have serious competition in a lot of the secondary and domainer markets. &lt;/p&gt;
&lt;h2&gt;Domainer / Secondary Markets&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Market&lt;/th&gt;
&lt;th&gt;Large Players&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain Registration&lt;/td&gt;
&lt;td&gt;GoDaddy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Selling Domains (Secondary/After Market)&lt;/td&gt;
&lt;td&gt;Sedo, Afternic, BuyDomains, GoDaddy, DomainNameSales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Expired Domains&lt;/td&gt;
&lt;td&gt;NameJet, SnapNames, Pool, GoDaddy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain Parking/Monetization&lt;/td&gt;
&lt;td&gt;InternetTraffic, Google, Yahoo, Sedo, (many more)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain name Conglomerates&lt;/td&gt;
&lt;td&gt;Demand Media, Marchex, GoDaddy, Name Media, Oversee&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h2&gt;Why Most Of These Markets Don't Matter Anymore&lt;/h2&gt;
&lt;p&gt;The expired domain names market is drying up as companies switch to pre-release agreements. With pre-release, the registrar where the domain is kept automatically sells off the domain and there is no competition. As GoDaddy grows bigger, they will capture more of the this market automatically in the long run.&lt;/p&gt;
&lt;p&gt;Domain Parking and monetization has seen a pretty steady decline since about 2007-2008. Consolidation is happening, the market is shrinking. The vested interests are large portfolio holders, which GoDaddy doesn't have like all of the other conglomerates.&lt;/p&gt;
&lt;p&gt;The Conglomerates with the exception of GoDaddy all have their own domain name portfolios. They are focused around monetizing their assets rather than customers. Almost all the conglomerates have failed to see major growth (Demand Media just turned its first profit in 2012).&lt;/p&gt;
&lt;h2&gt;What Does Matter?&lt;/h2&gt;
&lt;p&gt;With GoDaddy's acquisitions from Name Media today they have taken a serious foothold in the secondary market. Afternic is one of the largest markets and GoDaddy is probably on equal ground in terms of selling domain names from Premium Listings (pre-acquisition), although they don't publish any numbers that I could find. If we were to assume Sedo, Afternic and GoDaddy were similar in size, GoDaddy just became the dominant player by 2:1.&lt;/p&gt;
&lt;h2&gt;Why does it matter?&lt;br /&gt;
&lt;h2&gt;
&lt;p&gt;GoDaddy's strategy has long been economies of scale and cross-promotion/cross-selling products/services. They dominate the consumer side of the market and have the audience to sell products to. Now they own the market for secondary sales as well. They already charge a minimum 32% commission to sell a domain name with them. My intuition tells me they've struggled with getting the best inventory and streamlining the process to their liking. This isn't the first time we've seen them partner up to sell secondary market domain names, they tried it once before with &lt;a href="http://www.domainnamenews.com/domain-sales/godaddycom-fabulouscoms-domain-distribution-network-working/6251"&gt;Domain Distribution Network&lt;/a&gt;  but there hasn't been much talk about the results. There was even a short termination between the companies over the deal. This deal expired on June 7, 2013 according to &lt;a href="http://www.domainnamenews.com/up-to-the-minute/details-godaddy-dark-blue-sea-deal/6267"&gt;DNN&lt;/a&gt;. I could find no evidence of it being renewed.&lt;/p&gt;
&lt;p&gt;Meanwhile, Afternic has solved this problem. AfternicDLS has a deals with many of the biggest registrars: Network Solutions, Register.com, Enom, Moniker, Name.com, and more. This solves the listing and selling problem. Their current Premium Listings only work for domain names at GoDaddy.  A lot of domainers don't use GoDaddy and don't want to put their domain names there. Acquiring Afternic solves the technical and business problems that may have blocked GoDaddy in previous attempts to gain more of the secondary market.&lt;/p&gt;
&lt;h2&gt;What About SmartName?&lt;/h2&gt;
&lt;p&gt;I am not as sure about the SmartName play for GoDaddy. They could be trying to make a more serious run into the domain monetization space with a parking platform. They could be looking to upgrade their auction platform. Both of these could improve their bottom line, and it makes them more attractive as a larger one-stop shop for domain services.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;GoDaddy is now the biggest player in the domain name sales channels both for new registrations and selling in the secondary market. With the upcoming release of new gTLDs, they couldn't be better positioned to sell more domain names and make more money. It doesn't hurt that they offer fairly comprehensive offerings for business owners such as web hosting, email, marketing and more. Economies of scale are real and GoDaddy is taking advantage of them more than anyone else in the business.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Consumers&lt;/b&gt; may actually be the big winner here. If this gets executed well, the customers who use GoDaddy will get access to a larger inventory of domain names listed on the secondary market and purchasing them may become as easy as registering a new domain name.&lt;/p&gt;
&lt;h2&gt;Update&lt;/h2&gt;
&lt;p&gt;(9/20/2013) I made a mistake with saying the auction platform was Smart Names, it's actually Afternic. Also, someone linked me &lt;a href="https://auctions.godaddy.com/trpmarketanalysis.aspx"&gt;Godaddy's auction stats&lt;/a&gt;. They don't give dollar values, only sales volume. So it's still apples to oranges to pears with Sedo/Afternic/GoDaddy.&lt;/p&gt;
&lt;p&gt;I have also received a lot of criticism because of the company in question comes off in a positive light. My startup tracks &lt;a href="http://reviewsignal.com/webhosting/company/34/godaddy/"&gt;GoDaddy's reviews&lt;/a&gt; and it's overwhelmingly negative. I understand a lot of people don't like them for a multitude of reasons. That being said, the point of this article was to acknowledge a very prudent business move by them. I went into this open minded and came out surprised. I think this is a win for consumers in the short to medium term because it's reducing the friction and pain involved with buying domains in the secondary market. It makes it far more accessible and easy than it ever was before with a brand consumers recognize. Consolidation of the secondary domain market also puts a downward pressure on domain prices if it stays integrated as an option versus buying new registrations. The consumer who is thinking about spending $10 is far less likely to spend $100,000 instead. But $100, $500, $1,000 may be more reasonable and likely to induce a sale on the secondary market.&lt;/p&gt;
&lt;/h2&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://kevinohashi.com/20/09/2013/godaddy-purchased-domain-name-market-today" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;</description><author>Kevin Ohashi</author><pubDate>Fri, 20 Sep 2013 02:07:18 GMT</pubDate><guid isPermaLink="true">https://kevinohashi.com/20/09/2013/godaddy-purchased-domain-name-market-today</guid></item><item><title>Coronado High</title><link>https://periodic.atavist.com/view/theatavist/story/167</link><description>&lt;p&gt;Every so often I like to take a break from the whole technology gamut and read something else. Preferably, something exceptional like &lt;em&gt;Coronado High&lt;/em&gt; from The Atavist. Telling the fascinating origin story of what grew from a few California kids running drugs to a multi-million dollar narcotics empire, &lt;em&gt;Coronado High&lt;/em&gt; is much more than a fantastically-written, gripping tale of a bygone era. I wouldn&amp;#8217;t dream of spoiling it for you though: this is one of those articles you just can&amp;#8217;t afford to miss.&lt;/p&gt;


                &lt;p&gt;&lt;a href="https://periodic.atavist.com/view/theatavist/story/167"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 19 Sep 2013 18:24:16 GMT</pubDate><guid isPermaLink="true">https://periodic.atavist.com/view/theatavist/story/167</guid></item><item><title>You must not worry about Santa</title><link>http://www.lettersofnote.com/2013/09/you-must-not-worry-about-santa.html</link><description>&lt;p&gt;Every once in a while, Letters of Note posts something great, a letter I just have to share. This is one such letter. &lt;a href="https://zacs.site/blog/in-event-of-moon-disaster.html"&gt;For me&lt;/a&gt;, the last one was &lt;a href="http://www.lettersofnote.com/2010/11/in-event-of-moon-disaster.html?m=1"&gt;a speech William Safire wrote for President Nixon&lt;/a&gt; in preparation for a disaster during the moon landing; perhaps the best speech I have ever read.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.lettersofnote.com/2013/09/you-must-not-worry-about-santa.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 19 Sep 2013 17:26:19 GMT</pubDate><guid isPermaLink="true">http://www.lettersofnote.com/2013/09/you-must-not-worry-about-santa.html</guid></item><item><title>Betaworks Releases Instapaper 5</title><link>https://zacs.site/blog/betaworks-releases-instapaper-5.html</link><description>&lt;p&gt;Last week I acquired access to the Instapaper beta prior to its launch alongside iOS 7. I chronicled that story in &lt;a href="https://zacs.site/blog/i-finally-understand-bias.html"&gt;&lt;em&gt;I Finally Understand Bias&lt;/em&gt;&lt;/a&gt;. Since then, I have put off writing about the beta for a number of reasons: as a beta, the onus would have been on me to explain every single aspect of the new design or include numerous screenshots. Unlike the Federico Viticcis of the world, I did not find that prospect particularly appealing. More importantly though, I did not&amp;#160;&amp;#8212;&amp;#160;do not&amp;#160;&amp;#8212;&amp;#160;consider the app ready for widespread use, and at the very least not worthy of a version increment. iOS 7 or not, I am of the opinion that Betaworks should have forgone releasing Instapaper 5 quite so soon.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/betaworks-releases-instapaper-5.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 19 Sep 2013 17:01:13 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/betaworks-releases-instapaper-5.html</guid></item><item><title>Inspecting .NET applications with ILSpy</title><link>https://tomforb.es/blog/inspecting-net-applications-with-ilspy/</link><description>Every once in a while I come across an application that is so comically insecure that I feel the urge to blog about it. The application in question is a .NET application to manage care homes and provide a Medical Administration Record for residents. Staff login to the app using a username and passwo...</description><author>Tom Forbes</author><pubDate>Thu, 19 Sep 2013 15:40:40 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/inspecting-net-applications-with-ilspy/</guid></item><item><title>I Finally Understand Bias</title><link>https://zacs.site/blog/i-finally-understand-bias.html</link><description>&lt;p&gt;Last week, amidst the frenzy preluding Apple&amp;#8217;s impending iPhone event, I posted an article titled &lt;a href="https://zacs.site/blog/intapaper-5.html"&gt;&lt;em&gt;Instapaper 5&lt;/em&gt;&lt;/a&gt;. I did not have early access to a beta or any insight as to the direction Betaworks planned on taking the service; instead, I merely wished to put forth a possible launch strategy for the upcoming update and outline a number of improvements I had been considering. I posted the article with minor expectations, thinking it would attract the usual eight to twelve pageviews; what came next took me completely by surprise.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/i-finally-understand-bias.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 19 Sep 2013 09:02:39 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/i-finally-understand-bias.html</guid></item><item><title>An Amalgamation of Reviews</title><link>https://zacs.site/blog/an-amalgamation-of-reviews.html</link><description>&lt;p&gt;Yesterday, Apple lifted the press embargo on both iPhone and iOS 7 reviews in conjunction with the operating system&amp;#8217;s release to the general public. Like most of the internet, I got little to no work done once the reviews and new apps started rolling out. I did, however, succeed in pulling together this list and brief overview of the best reviews I came across throughout the day, for your reading pleasure.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/an-amalgamation-of-reviews.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 19 Sep 2013 08:57:48 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/an-amalgamation-of-reviews.html</guid></item><item><title>Linuxcon day three, Wednesday</title><link>https://purpleidea.com/blog/2013/09/18/linuxcon-day-three-wednesday/</link><description>&lt;p&gt;After hacking away on &lt;a href="https://purpleidea.com/blog/2013/09/18/linuxcon-day-one-monday/" title="Linuxcon day one, Monday"&gt;Monday&lt;/a&gt; and &lt;a href="https://purpleidea.com/blog/2013/09/18/linuxcon-day-two-tuesday/" title="Linuxcon day two, Tuesday"&gt;Tuesday&lt;/a&gt; and meeting fellow nerds IRL, I&amp;rsquo;ve landed even more changes to &lt;a href="https://github.com/purpleidea/puppet-gluster"&gt;puppet-gluster&lt;/a&gt;. &lt;a href="https://github.com/purpleidea/puppet-gluster/commits/master"&gt;My git master branch now sits at 47 commits.&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ git clone https://github.com/purpleidea/puppet-gluster.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Cloning into 'puppet-gluster'...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;remote: Counting objects: 317, done.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;remote: Compressing objects: 100% (144/144), done.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;remote: Total 317 (delta 187), reused 275 (delta 148)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Receiving objects: 100% (317/317), 82.17 KiB | 12.00 KiB/s, done.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Resolving deltas: 100% (187/187), done.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ cd puppet-gluster/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ git log | grep '^commit' | wc -l
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;47
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ git log | head
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;commit &amp;lt;a href="https://github.com/purpleidea/puppet-gluster/commit/fa3fd2eb4bab499031274e0918a40e7a99fe0086"&amp;gt;fa3fd2eb4bab499031274e0918a40e7a99fe0086&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Author: James Shubin &amp;lt;&amp;lt;em&amp;gt;hidden&amp;lt;/em&amp;gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Date:   Wed Sep 18 17:53:13 2013 -0400
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    Added fancy volume creation.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    This moves the command into a separate file. This also adds temporary
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    saving of stdout and stderr to /tmp for easy debugging of command
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    output.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can see above, volume creation is now &amp;ldquo;&lt;em&gt;fancier&lt;/em&gt;&amp;rdquo; and more robust. In case things go wrong, it&amp;rsquo;s easy to get fast access to gluster command line output (saved in &lt;em&gt;/tmp/&lt;/em&gt;), and the volume creation commands are individually stored in your puppet-gluster working directory. Usually this is &lt;em&gt;/var/lib/puppet/tmp/gluster/&lt;/em&gt;, and each volume creation command is in the &lt;em&gt;volume&lt;/em&gt; subdirectory.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 19 Sep 2013 02:59:28 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/18/linuxcon-day-three-wednesday/</guid></item><item><title>The Feminist who Cried Wolf</title><link>https://zacs.site/blog/the-feminist-who-cried-wolf.html</link><description>&lt;p&gt;Early yesterday evening I saw co-editors Alexia Tsotsis and Eric Eldon post an apology for an alleged inappropriate presentation made at TechCrunch Disrupt. Dismissing the short article as a response to &lt;a href="http://www.motherjones.com/politics/2013/03/pycon-2013-sexism-dongle-richards"&gt;yet another activist blowing an innocuous joke way out of proportion&lt;/a&gt; though, I paid it little attention until coming across &lt;a href="http://valleywag.gawker.com/techcrunch-disrupt-kicks-off-with-titstare-app-and-fa-1274394925"&gt;Gawker&amp;#8217;s coverage&lt;/a&gt; of the event later that evening. Like an article taken directly from The Onion&amp;#8217;s homepage, I read about and subsequently watched two incredibly inappropriate presentations with varying degrees of disbelief throughout. More than the actual presentations though, because God only knows enough will be written about them in the coming days, I would like to focus on my original sentiment when I came across TechCrunch&amp;#8217;s apology for failing to screen the exhibitions.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-feminist-who-cried-wolf.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 19 Sep 2013 02:14:02 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-feminist-who-cried-wolf.html</guid></item><item><title>Linuxcon day two, Tuesday</title><link>https://purpleidea.com/blog/2013/09/18/linuxcon-day-two-tuesday/</link><description>&lt;p&gt;&lt;a href="https://purpleidea.com/blog/2013/09/18/linuxcon-day-one-monday/" title="Linuxcon day one, Monday"&gt;Continuing on from yesterday&lt;/a&gt;, I&amp;rsquo;ve met even more interesting people. I chatted with &lt;a href="https://twitter.com/pythondj"&gt;Dianne Mueller&lt;/a&gt; about some interesting ideas for gluster+&lt;a href="https://www.openshift.com/"&gt;openshift&lt;/a&gt;. More to come on that front soon. Hung out with &lt;a href="https://twitter.com/jonobacon"&gt;Jono Bacon&lt;/a&gt; and talked a bit about &lt;a href="https://github.com/purpleidea/puppet-gluster"&gt;puppet-gluster&lt;/a&gt; on &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;. If there is interest in the community for this, please let me know. Thanks to John Mark Walker and RedHat for sponsoring me and introducing me to many of these folks. Hello to all the others that I didn&amp;rsquo;t mention.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 19 Sep 2013 02:05:05 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/18/linuxcon-day-two-tuesday/</guid></item><item><title>Linuxcon day one, Monday</title><link>https://purpleidea.com/blog/2013/09/18/linuxcon-day-one-monday/</link><description>&lt;p&gt;I&amp;rsquo;m here in New Orleans at Linux Con, hacking on &lt;a href="https://github.com/purpleidea/puppet-gluster"&gt;puppet-gluster&lt;/a&gt; and talking to lots of interesting folks. I&amp;rsquo;ve met gluster hacker &lt;a href="https://twitter.com/theronconrey"&gt;Theron Conrey&lt;/a&gt;, and my host &lt;a href="https://twitter.com/johnmark"&gt;John Mark Walker&lt;/a&gt;, Fedora and Raspberry Pi experts &lt;a href="https://twitter.com/spotrh"&gt;Spot&lt;/a&gt; and &lt;a href="https://twitter.com/suehle"&gt;Ruth Suehle&lt;/a&gt;, and many others too.&lt;/p&gt;
&lt;p&gt;The hotel is very nice. The bathroom sink has two taps of course, but both of them are hot. The New Orleans heat is probably the cause of this.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m hacking at full speed to get some new features and testing in before my talk on Thursday. I&amp;rsquo;ve been &lt;a href="https://github.com/purpleidea/puppet-gluster/commit/1d423ade0362a01acf2cbc35399808b4befe0864"&gt;reworking the simple firewall support&lt;/a&gt; in my puppet module. For those that want automated and correct firewall configuration, expect some improvements soon.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 19 Sep 2013 01:32:16 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/18/linuxcon-day-one-monday/</guid></item><item><title>That line between being cocky and humble</title><link>http://www.nahir.org/posts/2013/2/11/that-line-between-being-cocky-and-humble.html</link><description>&lt;p&gt;My introduction to this article, and the piece I personally found more interesting, was &lt;a href="http://tumblr.caseyliss.com/post/61297839809"&gt;the response Casey Liss wrote&lt;/a&gt;. As I read both articles, I thought of something Patrick McKenzie said quite some time ago in &lt;a href="http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/"&gt;&lt;em&gt;Don&amp;#8217;t Call Yourself a Programmer, and Other Career Advice&lt;/em&gt;&lt;/a&gt;: &amp;#8220;You radically overestimate the average skill of the competition because of the crowd you hang around with.&amp;#8221; While Patrick said that in reference to the perception of one&amp;#8217;s own skill set, it is just as applicable here.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.nahir.org/posts/2013/2/11/that-line-between-being-cocky-and-humble.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 18 Sep 2013 16:16:49 GMT</pubDate><guid isPermaLink="true">http://www.nahir.org/posts/2013/2/11/that-line-between-being-cocky-and-humble.html</guid></item><item><title>Staying Afraid</title><link>http://mattgemmell.com/2013/01/22/staying-afraid</link><description>&lt;p&gt;When Matt Gemmell publishes his novel, I will buy it regardless of the genre. With talent like this, how could I afford to miss it?&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://mattgemmell.com/2013/01/22/staying-afraid"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 18 Sep 2013 15:12:51 GMT</pubDate><guid isPermaLink="true">http://mattgemmell.com/2013/01/22/staying-afraid</guid></item><item><title>Protip: Faster Ruby Tests with DatabaseCleaner and DatabaseRewinder</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/protip-faster-ruby-tests-with-databasecleaner-and-databaserewinder</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Wed, 18 Sep 2013 09:50:00 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/protip-faster-ruby-tests-with-databasecleaner-and-databaserewinder</guid></item><item><title>Persistence</title><link>https://josh.works/persistence</link><description>&lt;p&gt;Persistence. It’s worth far more than any finite sum of money. Actually, it’s worth more than an unlimited amount of money, because an unlimited amount of money would complicate my life (and probably yours) far more than we can possibly imagine.
Persistence. I keep trying to think some people are born with it, and others (me) didn’t. Or I prefer to think that it can be had only if it were shaped properly by my parents from a young age. If that didn’t work, it’s sure not through lack of trying. (Thanks for not disowning me at 17, mom and dad!).&lt;/p&gt;

&lt;p&gt;I can easily start fifteen different projects. Statistically, thirteen of them are crap. Two of them may have weight. I’ll make motions to work on both for a little while, and then I give up. I just drop it. I’ve done it a lot of times. It’s not going to stop until I make it stop.&lt;/p&gt;

&lt;p&gt;I’ve spent at least a few hours learning over a dozen different things in the last few months, but have not stuck with many of them. This may be good or it may be bad. I certainly can’t tell which of my fifteen ideas are crap, and it would behoove me to drop the bad ones, or I could be demonstrating a lack of persistence and stick-to-it-iveness.&lt;/p&gt;

&lt;p&gt;It’s refreshing to not be required to all this sorted out. I thought once I graduated college I’d not be wrestling with this stuff.&lt;/p&gt;

&lt;p&gt;Hah.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Wed, 18 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/persistence</guid></item><item><title>Sonderklasse</title><link>http://furbo.org/2013/09/11/sonderklasse/</link><description>&lt;p&gt;Craig Hockenberry making a very apropos comparison between the Mercedes-Benz S-Class line and Apple&amp;#8217;s iPhone 5S. Perhaps just as interesting as his thoughts on the iPhone, however, were his thoughts on this particular vehicular product line, however brief.&lt;/p&gt;

&lt;p&gt;I always find a writer traditionally steeped in technology taking a step in to the world of cars disproportionately fascinating. That meticulous nature, attention to detail, and, most important of all, the ability to take in to account the intangibles&amp;#160;&amp;#8212;&amp;#160;aspects of a car that don&amp;#8217;t appear on a feature checklist&amp;#160;&amp;#8212;&amp;#160;make for an invariably interesting read.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://furbo.org/2013/09/11/sonderklasse/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 18 Sep 2013 00:48:47 GMT</pubDate><guid isPermaLink="true">http://furbo.org/2013/09/11/sonderklasse/</guid></item><item><title>Setting a default order for Doctrine 2 / Symfony 2</title><link>http://jrgns.net/blog/2013/09/17/setting-a-default-order-for-doctrine-symfony-2.html</link><description>&lt;p&gt;Usually when you’re working with data you expect some kind of default ordering.
It might be the primary key, or, more commonly, the data set will be ordered by
a timestamp field or the data’s most important property. In Doctrine you can create
&lt;a href="http://symfony.com/doc/current/book/doctrine.html#custom-repository-classes"&gt;custom repository classes&lt;/a&gt; to tweak queries to your liking:&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="c1"&gt;// src/Acme/StoreBundle/Entity/ProductRepository.php
&lt;/span&gt;&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nx"&gt;Acme\StoreBundle\Entity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Doctrine\ORM\EntityRepository&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProductRepository&lt;/span&gt; &lt;span class="k"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;EntityRepository&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;findAllOrderedByName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getEntityManager&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;createQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="s1"&gt;'SELECT p FROM AcmeStoreBundle:Product p ORDER BY p.name ASC'&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getResult&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This is all fine and dandy, but do you really want to repeat yourself everytime
you write a query for a model that will almost &lt;strong&gt;always&lt;/strong&gt; be ordered
by the same field? Or get caught out by calls to default repository methods that
&lt;em&gt;don’t&lt;/em&gt; use the ordering you like? No, you don’t. Enter this piece of code:&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="c1"&gt;// src/Acme/StoreBundle/Entity/ProductRepository.php
&lt;/span&gt;&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nx"&gt;Acme\StoreBundle\Entity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Doctrine\ORM\EntityRepository&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProductRepository&lt;/span&gt; &lt;span class="k"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;EntityRepository&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;findBy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$criteria&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$orderBy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$limit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$offset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Default Ordering
&lt;/span&gt;        &lt;span class="nv"&gt;$orderBy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$orderBy&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'added'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'desc'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$orderBy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Default Filtering
&lt;/span&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;array_key_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'active'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$criteria&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$criteria&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'active'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;parent&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="na"&gt;findBy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$criteria&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$orderBy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$limit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$offset&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The &lt;a href="http://www.doctrine-project.org/api/orm/2.3/class-Doctrine.ORM.EntityRepository.html#_findBy"&gt;findBy&lt;/a&gt; method of the EntityRepository class is the method used by most
(if not all) of the the repository methods that fetch data. This includes &lt;code class="highlighter-rouge"&gt;findBy&lt;/code&gt;
methods where you can specify an arbitrary column and value:&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="c1"&gt;// find a group of products based on an arbitrary column value
&lt;/span&gt;&lt;span class="nv"&gt;$products&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$repository&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;findByPrice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;19.99&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;So to ensure a default ordering, we override this method and check if an orderBy
clause has been set. If not, set it to our default ordering — in this case by the
&lt;code class="highlighter-rouge"&gt;added&lt;/code&gt; field, descending. For good measure we also add default filtering —
the &lt;code class="highlighter-rouge"&gt;active&lt;/code&gt; field needs to equal 1. Once that’s done, call the parent method
with the default values set.&lt;/p&gt;

&lt;p&gt;Easy as π&lt;/p&gt;</description><author>Jurgens du Toit</author><pubDate>Tue, 17 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://jrgns.net/blog/2013/09/17/setting-a-default-order-for-doctrine-symfony-2.html</guid></item><item><title>The iPhone is Apple Doubling-Down On What It Does Best</title><link>http://stratechery.com/2013/two-minutes-fifty-six-seconds/</link><description>&lt;p&gt;Just before the iPhone event last week, &lt;a href="https://zacs.site/blog/iphone-pricing.html"&gt;I linked to&lt;/a&gt; an excellent piece by Ben Thompson titled &lt;a href="http://stratechery.com/2013/thinking-about-iphone-pricing/"&gt;&lt;em&gt;Thinking About iPhone Pricing&lt;/em&gt;&lt;/a&gt;. A day after the event, he posted another article, &lt;a href="http://stratechery.com/2013/two-minutes-fifty-six-seconds/"&gt;&lt;em&gt;Two Minutes, Fifty-Six Seconds&lt;/em&gt;&lt;/a&gt;, this time explaining Apple&amp;#8217;s reasoning behind pricing the 5C at $549. I really enjoyed both articles; Ben Thompson&amp;#8217;s intelligence, insight, and storytelling ability is only rivaled by a few.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://stratechery.com/2013/two-minutes-fifty-six-seconds/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 16 Sep 2013 19:54:00 GMT</pubDate><guid isPermaLink="true">http://stratechery.com/2013/two-minutes-fifty-six-seconds/</guid></item><item><title>Introducing SingleBugs the Bug Tracker for Single Developers</title><link>https://boyter.org/2013/09/introducing-singlebugs-bug-tracker-single-developers/</link><description>&lt;p&gt;Introducing the first beta release of SingleBugs, the bug tracker aimed at single/solo developers. Are you a solo developer? Do you find setting up Mantis/Fogbugs/Bugs.net/et.al too complex and a waste of your time? Do you want a single solution that easily syncs and backs up between your machines? Try SingleBugs.&lt;/p&gt;
&lt;p&gt;Guaranteed to save you time and money setting up a bug tracker. Guaranteed to be the fastest bug tracker you have ever used.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Mon, 16 Sep 2013 04:50:08 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/09/introducing-singlebugs-bug-tracker-single-developers/</guid></item><item><title>List.clear() throws UnsupportedOperationException</title><link>https://www.craigpardey.com/post/2013-09-16-list-clear-throws-unsupportedoperationexception/</link><description>&lt;p&gt;Consider the following code&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;String[] s = new String[]{&amp;quot;&amp;quot;};  
List&amp;lt;String&amp;gt; list = Arrays.asList(s);  
list.clear();  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All looks good, right? When you run it you get:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;java.lang.UnsupportedOperationException  
	at java.util.AbstractList.remove(AbstractList.java:144)  
	at java.util.AbstractList$Itr.remove(AbstractList.java:360)  
	at java.util.AbstractList.removeRange(AbstractList.java:559)  
	at java.util.AbstractList.clear(AbstractList.java:217)  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is because Arrays.asList(array) returns a fixed-size list backed by the
specified array. Fixed-size being the operative word.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Mon, 16 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-09-16-list-clear-throws-unsupportedoperationexception/</guid></item><item><title>Thoughts and Observations on Today's iPhone 5C and 5S Introduction</title><link>http://daringfireball.net/2013/09/iphone_5c_5c_event</link><description>&lt;p&gt;I&amp;#8217;m a little late to the party, I admit, but John Gruber&amp;#8217;s thoughts and observations concerning the iPhone event last week are just as interesting now as they would have been Tuesday afternoon.&lt;/p&gt;

&lt;p&gt;The interesting trend, I think, as I work through my Instapaper queue from last week reading various writers&amp;#8217; opinions, is everyone recognizing Apple&amp;#8217;s strategy with the 5C as exactly what it is: a marketing gimmick designed to give them cause to market both this year&amp;#8217;s top model and last year&amp;#8217;s hardware.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://daringfireball.net/2013/09/iphone_5c_5c_event"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 15 Sep 2013 18:15:09 GMT</pubDate><guid isPermaLink="true">http://daringfireball.net/2013/09/iphone_5c_5c_event</guid></item><item><title>Horace Dediu on the Alphabet</title><link>https://zacs.site/blog/horace-dedieu-on-the-alphabet.html</link><description>&lt;p&gt;In the first in a wonderful series of articles, &lt;a href="http://www.asymco.com/2013/09/11/c-is-for-cognitive-illusion/"&gt;&lt;em&gt;C is for Cognitive Illusion&lt;/em&gt;&lt;/a&gt;, Horace discussed the positioning of the iPhone 5C, how it differed from past years&amp;#8217; portrayal of the &amp;#8220;n-1&amp;#8221; product, and what this means for the iPhone line:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/horace-dedieu-on-the-alphabet.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 15 Sep 2013 15:56:44 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/horace-dedieu-on-the-alphabet.html</guid></item><item><title>700 Million Devices</title><link>https://twitter.com/asymco/status/378421955411857409</link><description>&lt;p&gt;Far be it from me to step on Horace Dedeiu or Benedict Evan&amp;#8217;s toes in my &amp;#8220;analysis&amp;#8221;, if you could call it that, of this graph Horace posted yesterday, but I do believe it tells us something interesting about how successful Apple believes the iPhone 5C will be.&lt;/p&gt;

&lt;p&gt;In previous quarters, as Horace&amp;#8217;s trend shows, the iPhone grew at an increasing rate with each successive launch. That is, Apple&amp;#8217;s device sales did not increase linearly with each new phone, but increased in growth rate upon each release giving a nice, curved ramp in cumulative devices sold. At the far right of this trend we have Tim Cook&amp;#8217;s claim that iPhone shipments will reach 700 million by October, indicating a sharp uptake in iPhone sales from the norm.&lt;/p&gt;

&lt;p&gt;The interesting question here is why he expects this jump. Every other year when Apple introduced revolutionary phones, the company forecasted no such spike. So given this, we cannot attribute such a jump to the 5S no matter how great a device. The credit, instead, must go to the 5C, which marked a distinct change in Apple&amp;#8217;s product marketing; no other significant change occurred to which we can attribute this increase.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s interesting to see the level of faith Tim Cook has in this new device line. Whether that faith will bbe justified, however, remains to be seen.&lt;/p&gt;


                &lt;p&gt;&lt;a href="https://twitter.com/asymco/status/378421955411857409"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 15 Sep 2013 13:09:38 GMT</pubDate><guid isPermaLink="true">https://twitter.com/asymco/status/378421955411857409</guid></item><item><title>Obrigado Deny!</title><link>https://duncanlock.net/blog/2013/09/13/obrigado-deny/</link><description>&lt;div class="image-block"&gt;&lt;img alt="Flag of Brazil" src="https://duncanlock.net/images/posts/thanks-deny/Flag_of_Brazil.png" /&gt;&lt;/div&gt;
&lt;p&gt;I&amp;#8217;ve recently been corresponding with &lt;a href="http://mexapi.macpress.com.br/"&gt;Denny Dias&lt;/a&gt;, from Brazil, who&amp;#8217;s &lt;a href="http://mexapi.macpress.com.br/2013/08/migrei-meu-blog-do-insosso-blogger-para-a-poderosa-dupla.html"&gt;converted his blog over to Pelican&lt;/a&gt; - and we&amp;#8217;ve been helping each other out a bit with building themes and&amp;nbsp;whatnot.&lt;/p&gt;
&lt;p&gt;He&amp;#8217;s written up his conversion &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; theme building process - and was &lt;a href="http://mexapi.macpress.com.br/2013/09/migrei-meu-blog-customizando-o-tema.html"&gt;generous enough to credit me&lt;/a&gt; after he borrowed some of my theme&amp;#8217;s logic, from this blog&amp;#8217;s &lt;a href="https://github.com/dflock/duncanlock.net"&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As he&amp;#8217;s such a nice guy - and as I&amp;#8217;ve just borrowed his &lt;code&gt;tagsort&lt;/code&gt; jinja filter for my &lt;a href="/tags.html"&gt;blog&amp;#8217;s tag page&lt;/a&gt;, I though I&amp;#8217;d return the favour - cheers Deny!&amp;nbsp;:)&lt;/p&gt;</description><author>duncan­lock­.net</author><pubDate>Sat, 14 Sep 2013 01:32:56 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/09/13/obrigado-deny/</guid></item><item><title>Embedding Freetype for iOS projects</title><link>https://whackylabs.com/gamedev/ios/2013/09/13/freetype-in-ios/</link><description>&lt;p&gt;Freetype is a font library written in C. From OpenGL’s point of view, it creates alpha texture on the fly for any font size for any string.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Embedding the original freetype source to the code is some real pain in the ass. Fortunate for us, one guy has done that task and released the code on github. https://github.com/cdave1/freetype2-ios. So, step 1 is to check out that code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Create your new project and add the project downloaded from step 1 to your project.&lt;/p&gt;

&lt;p&gt;Check that the Xcode must have created two schemes for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Go to the your Project Settings, select your target and click on ‘Build Phases’. Under ‘Target Dependencies’ add the static library from the freetype2 project.&lt;/p&gt;

&lt;p&gt;This is going to build the static library for you, without you having to explicitly build it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Go to ‘Link Binary with Libraries’ and add the static library.&lt;/p&gt;

&lt;p&gt;This will build the libFreetype2.a and put it inside the products directory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: Next, we need to add the freetype header files in the products directory. Why? Because, the Xcode projects are configured to look for header files inside the products directory automatically, without us having to specify the search path. Also, if in future we make some changes to the freetype project header files (very unlikely) the changes will be automatically updated in our products directory.&lt;/p&gt;

&lt;p&gt;Now, open the freetype2 Project settings and go to ‘Build Phases’. Click ‘Add Build Phase’ and ‘Add Copy Files’&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt;: Change the ‘Destination’ to ‘Products Directory’. Now, this is the part where Xcode sucks, we need to copy our header files from the freetype2 project, but doing so flattens the copied directory structure.&lt;/p&gt;

&lt;p&gt;One way to fix this is to remove the include files from the freetype2 project and add them again as ‘Folder reference’&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt;: Drag the include folder from freetype2 project to the ‘Copy Files’ phase.&lt;/p&gt;

&lt;p&gt;If you’ve followed everything correct to this point, you project should just build fine. It should compile the freetype target, copy the header files and then compile and link your project.&lt;/p&gt;

&lt;p&gt;The products directory should look something like&lt;/p&gt;

&lt;p&gt;For final testing, try adding the following lines of code to your main.m file and compile the code:&lt;/p&gt;
&lt;div class="language-objc highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="cp"&gt;#import &amp;lt;UIKit/UIKit.h&amp;gt;
#import "AppDelegate.h"
#import &amp;lt;ft2build.h&amp;gt;
#import &amp;lt;freetype/freetype.h&amp;gt;
#import &amp;lt;assert.h&amp;gt;
&lt;/span&gt; 
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;test_freetype&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FT_Library&lt;/span&gt; &lt;span class="n"&gt;library&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;FT_Error&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FT_Init_FreeType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;library&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;FT_Done_FreeType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;library&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
 
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;test_freetype&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
 
    &lt;span class="k"&gt;@autoreleasepool&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;UIApplicationMain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;NSStringFromClass&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;AppDelegate&lt;/span&gt; &lt;span class="nf"&gt;class&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Whacky Labs</author><pubDate>Fri, 13 Sep 2013 20:58:54 GMT</pubDate><guid isPermaLink="true">https://whackylabs.com/gamedev/ios/2013/09/13/freetype-in-ios/</guid></item><item><title>Troy</title><link>https://olshansky.info/movie/troy/</link><description>Olshansky's review of Troy</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 13 Sep 2013 20:02:42 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/troy/</guid></item><item><title>World War Z</title><link>https://olshansky.info/movie/world_war_z/</link><description>Olshansky's review of World War Z</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 13 Sep 2013 16:53:13 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/world_war_z/</guid></item><item><title>The New Kid on the Block</title><link>https://zacs.site/blog/the-new-kid-on-the-block.html</link><description>&lt;p&gt;Since its debut yesterday virtually everyone has lauded Apple for introducing the iPhone 5C. (I refuse to acknowledge Apple&amp;#8217;s ridiculous naming convention; 5c? Please. If I wanted to look like a five year old I could forget to proofread my articles on my own. And I&amp;#8217;m not the only one miffed at Apple&amp;#8217;s new standard: Lex Friedman, in a tweet yesterday: &amp;#8220;If Apple is lowercasing the S and C..., I&amp;#8217;m going to start capitalizing the &amp;#8221;i&amp;#8220;: IPhone 5s. That&amp;#8217;s better.&amp;#8221;) Hailed as the elusive midrange offering from a traditionally high-end company, Apple received great praise over a move many see as a way to increase device sales by capturing the low end. I have a number of issues with that sentiment.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-new-kid-on-the-block.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 13 Sep 2013 10:50:21 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-new-kid-on-the-block.html</guid></item><item><title>Goodbye Dropbox</title><link>http://brooksreview.net/2013/09/goodbye-dropbox/</link><description>&lt;p&gt;&amp;#8220;You hold the encryption keys, which means the NSA holds the keys too. I don&amp;#8217;t care for that. Thanks for all the great service along the way.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I really enjoy Ben Brooks&amp;#8217; writing&amp;#160;&amp;#8212;&amp;#160;&lt;a href="http://brooksreview.net/2013/05/tumblr-yahoo/"&gt;&lt;em&gt;Tumblr. + Yahoo! == !!&lt;/em&gt;&lt;/a&gt; is probably &lt;a href="https://zacs.site/blog/tumblr-plus-yahoo.html"&gt;one of my favorite articles ever&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;but I can&amp;#8217;t help but feel he&amp;#8217;s gone off the deep end with this one.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/09/goodbye-dropbox/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 13 Sep 2013 10:48:44 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/09/goodbye-dropbox/</guid></item><item><title>Disabling muting while typing in Google hangouts</title><link>/2013/09/12/Disabling-muting-while-typing-in-Google-hangouts/</link><description>&lt;p&gt;Google hangouts is awesome, its my preferred method for most audio/video calls these days. When running a group call I often dial into a separate phone if I have a better phone available for the group. It also got around the annoyance that when you are typing google automatically mutes you. This for most people is pretty subpar. While dialing in to the hangout can still be nice, you don&amp;rsquo;t have to do so to get rid of the annoying muting while typing. To fix such simply open up your terminal and run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; defaults write com.google.googletalkplugind exps -string [\&amp;quot;-tm\&amp;quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;This clever hack discovered courtesy of &lt;a href="http://www.twitter.com/timtyrrell"&gt;@timtyrrell&lt;/a&gt; passed along to me by &lt;a href="http://www.twitter.com/mattmanning"&gt;@mattmanning&lt;/a&gt; and &lt;a href="http://www.twitter.com/blakegentry"&gt;@blakegentry&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 12 Sep 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/09/12/Disabling-muting-while-typing-in-Google-hangouts/</guid></item><item><title>Form Over Function &amp;amp; The New iPhone</title><link>http://blog.untrod.com/2013/09/form-over-function.html</link><description>&lt;p&gt;I probably found this more profound than it really is, but Matt Buchanan
&lt;a href="http://www.newyorker.com/online/blogs/elements/2013/09/the-wonderfully-mundane-new-iphone.html"&gt;said it
well&lt;/a&gt;
in the New Yorker, regarding the latest iPhone announcements:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fundamental technology, like manufacturing processes for processors
and imaging sensors and displays, have evolved to the point that the
basic shape and sense of a …&lt;/p&gt;&lt;/blockquote&gt;</description><author>Untrod</author><pubDate>Thu, 12 Sep 2013 15:57:00 GMT</pubDate><guid isPermaLink="true">http://blog.untrod.com/2013/09/form-over-function.html</guid></item><item><title>North West Triathlon 2013</title><link>https://caiustheory.com/north-west-triathlon-2013/</link><description>&lt;p&gt;&amp;ldquo;Fun&amp;rdquo; triathlon (super sprint distance) done in Nantwich. First ever Triathlon, 7 months after starting training properly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;200m swim: 00:04:08&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Despite feeling like I was going super slow. Brine pool was fairly nice.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;20km bike: 00:52:31&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pretty happy with that, strongest discipline for me anyway.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.5km run: 00:21:08&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Walked 2/3s of it at a guess. Really hate running, so happyish with this. Need to work on running over the winter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Total: 1h 17m 47s&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;BOOYA. Enjoyable. Pretty damn happy with that (had a vague plan of being under 1h30m. So yay.)&lt;/p&gt;</description><author>Caius Theory</author><pubDate>Thu, 12 Sep 2013 13:00:00 GMT</pubDate><guid isPermaLink="true">https://caiustheory.com/north-west-triathlon-2013/</guid></item><item><title>Advanced Oracle Troubleshooting Guide – Part 11: Complex Wait Chain Signature Analysis with ash_wait_chains.sql</title><link>https://tanelpoder.com/2013/09/11/advanced-oracle-troubleshooting-guide-part-11-complex-wait-chain-signature-analysis-with-ash_wait_chains-sql/</link><description>&lt;p&gt;Here’s a treat for the hard-core Oracle performance geeks out there – I’m releasing a cool, but still experimental script for ASH (or poor-man’s ASH)-based wait event analysis, which should add a whole new dimension into ASH based performance analysis. It doesn’t replace any of the existing ASH analysis techniques, but should bring the relationships between Oracle sessions in complex wait chains out to bright daylight much easier than before.&lt;/p&gt;
&lt;p&gt;You all are familiar with the AWR/Statspack timed event summary below:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tanelpoder.com/wp-content/uploads/2013/09/AWR_top_timed_events.png"&gt;&lt;img alt="AWR top timed events" class="size-full wp-image-2277 alignnone" height="180" src="https://tanelpoder.com/wp-content/uploads/2013/09/AWR_top_timed_events.png?resize=586%2C180" width="586" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Similar breakdown can be gotten by just aggregating ASH samples by the wait event:&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; @ash/&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/ash/dashtop.sql" target="_blank"&gt;dashtop&lt;/a&gt; session_state,event 1=1 "TIMESTAMP'2013-09-09 21:00:00'" "TIMESTAMP'2013-09-09 22:00:00'"

%This  SESSION EVENT                                                            TotalSeconds        CPU   User I/O Application Concurrency     Commit Configuration    Cluster       Idle    Network System I/O  Scheduler Administrative   Queueing      Other MIN(SAMPLE_TIME)                                                            MAX(SAMPLE_TIME)
------ ------- ---------------------------------------------------------------- ------------ ---------- ---------- ----------- ----------- ---------- ------------- ---------- ---------- ---------- ---------- ---------- -------------- ---------- ---------- --------------------------------------------------------------------------- ---------------------------------------------------------------------------
  68%  ON CPU                                                                          25610      25610          0           0           0          0             0          0          0          0          0          0              0          0          0 09-SEP-13 09.00.01.468 PM                                                   09-SEP-13 09.59.58.059 PM
  14%  WAITING SQL*Net more data from client                                            5380          0          0           0           0          0             0          0          0       5380          0          0              0          0          0 09-SEP-13 09.00.01.468 PM                                                   09-SEP-13 09.59.58.059 PM
   6%  &lt;strong&gt;&lt;span style="color: #ff0000;"&gt;WAITING enq: HW - contention&lt;/span&gt;&lt;/strong&gt;                                                     2260          0          0           0           0          0          2260          0          0          0          0          0              0          0          0 09-SEP-13 09.04.41.893 PM                                                   09-SEP-13 09.56.07.626 PM
   3%  WAITING log file parallel write                                                  1090          0          0           0           0          0             0          0          0          0       1090          0              0          0          0 09-SEP-13 09.00.11.478 PM                                                   09-SEP-13 09.59.58.059 PM
   2%  WAITING db file parallel write                                                    730          0          0           0           0          0             0          0          0          0        730          0              0          0          0 09-SEP-13 09.01.11.568 PM                                                   09-SEP-13 09.59.48.049 PM
   2%  WAITING enq: TX - contention                                                      600          0          0           0           0          0             0          0          0          0          0          0              0          0        600 09-SEP-13 09.04.41.893 PM                                                   09-SEP-13 09.48.16.695 PM
   1%  WAITING buffer busy waits                                                         560          0          0           0         560          0             0          0          0          0          0          0              0          0          0 09-SEP-13 09.10.02.492 PM                                                   09-SEP-13 09.56.07.626 PM
   1%  WAITING log file switch completion                                                420          0          0           0           0          0           420          0          0          0          0          0              0          0          0 09-SEP-13 09.47.16.562 PM                                                   09-SEP-13 09.47.16.562 PM
   1%  WAITING latch: redo allocation                                                    330          0          0           0           0          0             0          0          0          0          0          0              0          0        330 09-SEP-13 09.04.41.893 PM                                                   09-SEP-13 09.53.27.307 PM
...&lt;/pre&gt;
&lt;p&gt;The abovementioned output has one shortcoming in a multiuser (database) system – not all wait events are simple, where a session waits for OS to complete some self-contained operation (like an IO request). Often a session waits for &lt;em&gt;another session&lt;/em&gt; (who holds some lock) or some background process who needs to complete some task before our session can continue. That other session may wait for a yet another session due to some other lock. The other session itself waits for a yet another one, thanks to some buffer pin (buffer busy wait). The session who holds the buffer pin, may itself be waiting for LGWR, who may in turn wait for DBWR etc… You get the point – sometimes we have a bunch of sessions, waiting for each other in a chain.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://docs.oracle.com/cd/E18283_01/server.112/e17110/dynviews_3122.htm" target="_blank"&gt;V$WAIT_CHAINS&lt;/a&gt; view introduced in Oracle 11g is capable of showing such chains of waiting sessions – however it is designed to diagnose relatively long-lasting hangs, not performance problems and short (but non-trivial) contention. Usually the DIAG process, who’s responsible for walking through the chains and populating V$WAIT_CHAINS, doesn’t kick in after a few seconds of ongoing session waits and the V$WAIT_CHAINS view may be mostly empty – so we need something different for performance analysis.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Thu, 12 Sep 2013 04:23:35 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/09/11/advanced-oracle-troubleshooting-guide-part-11-complex-wait-chain-signature-analysis-with-ash_wait_chains-sql/</guid></item><item><title>Git - When to Merge</title><link>https://daniellittle.dev/git-when-to-merge</link><description>Many people use git pull and merge frequently in an effort to keep a branch up to date while working a feature. However it's actually…</description><author>Daniel Little Dev</author><pubDate>Thu, 12 Sep 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/git-when-to-merge</guid></item><item><title>Diving into Postgres JSON operators and functions</title><link>/2013/09/11/Diving-into-Postgres-JSON-operators-and-functions/</link><description>&lt;p&gt;Just as &lt;a href="https://postgres.heroku.com/blog/past/2013/9/9/postgres_93_now_available/"&gt;PostgreSQL 9.3&lt;/a&gt; was coming out I had a need to take advantage of the JSON datatype and some of the &lt;a href="http://www.postgresql.org/docs/9.3/static/functions-json.html"&gt;operators and functions&lt;/a&gt; within it. The use case was pretty simple, run a query across a variety of databases, then take the results and store them. We explored doing something more elaborate with the columns/values, but in the end just opted to save the entire result set as JSON then I could use the operators to explore it as desired.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the general idea in code (using sequel):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;result = r.connection { |c| c.fetch(self.query).all }
mymodel.results = result.to_json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As the entire dataset was stored as some compressed JSON I needed to do a bit of manipulation to get it back into a form that was workable. Fortunately all the steps were fairly straightforward.&lt;/p&gt;
&lt;p&gt;First you want to unnest each result from the json array, in my case this looked like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT json_array_elements(result)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The above will unnest all of the array elements so I have an individual result as JSON. A real world example would look something similar to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT json_array_elements(result)
FROM query_results
LIMIT 2;
json_array_elements
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;{&amp;ldquo;column_name&amp;rdquo;:&amp;ldquo;data_in_here&amp;rdquo;}
{&amp;ldquo;column_name_2&amp;rdquo;:&amp;ldquo;other_data_in_here&amp;rdquo;}
(2 rows)&lt;/p&gt;
&lt;p&gt;From here based on the query I would want to get some specific value. In this case I&amp;rsquo;m going to search for the text key column_name_2:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT json_array_elements(result)-&amp;gt;'column_name_2'
FROM query_results
LIMIT 1;
json_array_elements
-----------------------
&amp;quot;other_data_in_here&amp;quot;
(1 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;One gotcha I encountered was when I wanted to search for some value or exclude some value&amp;hellip; Expecting I could just compare the result of the above in a where statement I was sadly mistaken because the equals operator didn&amp;rsquo;t translate.&lt;/em&gt; My first attempt at fixing this was to cast in this form:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT json_array_elements(result)-&amp;gt;'column_name_2'::text
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The sad part is because of the operator the cast doesn&amp;rsquo;t get applied as I&amp;rsquo;d expect. Instead you&amp;rsquo;ll want to do:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT (json_array_elements(result)-&amp;gt;'column_name_2')::text
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course theres plenty more you can do with the &lt;a href="http://www.postgresql.org/docs/9.3/static/functions-json.html"&gt;JSON operators in the new Postgres 9.3&lt;/a&gt;. If you&amp;rsquo;ve already got JSON in your application give them a look today. And while slightly worse, if you&amp;rsquo;ve got JSON stored in a text field simply cast it with &lt;code&gt;::json&lt;/code&gt; to begin using the operators.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re looking for a deeper resource on Postgres I recommend the book &lt;a href="https://theartofpostgresql.com/?affiliate=cek"&gt;The Art of PostgreSQL&lt;/a&gt;. It is by a personal friend that has aimed to create the definitive guide to Postgres, from a developer perspective. If you use code CRAIG15 you&amp;rsquo;ll receive 15% off as well.&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 11 Sep 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/09/11/Diving-into-Postgres-JSON-operators-and-functions/</guid></item><item><title>Will the iPhone's newest sensor change the world again?</title><link>http://www.theverge.com/2013/9/10/4716098/fingerprint-analysis-touch-id-sensor-iphone-5s</link><description>&lt;p&gt;In an excellent article posted to The Verge earlier this afternoon Casey Newton made the point I intended to discuss this evening almost as an aside near the end of his article:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Apple could also let users log in to other apps and services using a fingerprints, providing secure authentication into apps and websites with a couple of taps. If biometric solutions become widely adopted, the tech industry could begin to phase out&amp;#160;&amp;#8212;&amp;#160;or at least augment&amp;#160;&amp;#8212;&amp;#160;the flawed, familiar password.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With the advent of Passbook in iOS 6, Apple began handling important personal information such as credit card numbers, boarding passes, and gift cards. A few months ago in June, when  the company announced iCloud Keychain, it expanded that domain to include passwords, but only on the Mac platform. Before too long&amp;#160;&amp;#8212;&amp;#160;hopefully prior to iOS 8&amp;#160;&amp;#8212;&amp;#160;I foresee Apple marrying these two technologies with Touch ID on iOS to give users the ability to not only unlock their phone with a fingerprint, but login to websites and apps with that same technology.&lt;/p&gt;

&lt;p&gt;Touch ID in its current form is a technology in its infancy; it will take time before we see the full potential of the groundbreaking feature, and perhaps even longer before we realize it.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/9/10/4716098/fingerprint-analysis-touch-id-sensor-iphone-5s"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 11 Sep 2013 00:07:30 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/9/10/4716098/fingerprint-analysis-touch-id-sensor-iphone-5s</guid></item><item><title>The wrong tool</title><link>https://bastian.rieck.me/blog/2013/the_wrong_tool/</link><description>&lt;p&gt;A young scribe worked day and night on his scrolls. Some of his scrolls
required many changes, and he laboriously copied the content of each
scroll onto a new scroll whenever even the tiniest bit had to be
changed.&lt;/p&gt;
&lt;p&gt;Once, at supper, the scribe professed how exhausted he was by keeping
track of all versions of a single document. Upon hearing this, the abbot
told him to use one of the sacred version control systems used by the
monastery.&lt;/p&gt;
&lt;p&gt;With a strained voice, the scribe responded &amp;ldquo;I do not have time to learn
even one of these systems. I have so many scrolls to copy.&amp;rdquo; The abbot
did not respond, but elected to wait.&lt;/p&gt;
&lt;p&gt;The two monks had the same conversation repeatedly. Each time, the young
scribe exclaimed that he had no time to learn. Finally, one day, the
abbot sent for Master Darcs.&lt;/p&gt;
&lt;p&gt;Master Darcs invited the scribe to eat supper with him. They both filled
their bowls with nourishing and clear soup. Master Darcs sat down,
selected a fork, and began to eat his soup. The young scribe sat and ate
in silence. Long after the scribe had finished his soup, the master was
still eating his.&lt;/p&gt;
&lt;p&gt;Finally, the young scribe dared to ask a question. &amp;ldquo;Forgive me,
master,&amp;rdquo; spoke the scribe, &amp;ldquo;but why do you not use a spoon? Even a
small one would surely be better than this.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;I do not have time to learn even one of these instruments,&amp;rdquo; responded
Master Darcs calmly.&lt;/p&gt;
&lt;p&gt;Hearing this, the scribe was enlightened.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Tue, 10 Sep 2013 23:07:09 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/the_wrong_tool/</guid></item><item><title>iPhone Pricing</title><link>https://zacs.site/blog/iphone-pricing.html</link><description>&lt;p&gt;With just hours left until the iPhone event today it&amp;#8217;s a little late to speculate on pricing, but I just couldn&amp;#8217;t resist.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/iphone-pricing.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 10 Sep 2013 09:29:14 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/iphone-pricing.html</guid></item><item><title>PS Vita TV</title><link>http://daringfireball.net/linked/2013/09/09/ps-vita-tv</link><description>&lt;p&gt;Where there is smoke, there is fire. Apple, then Google, and now Sony all make set-top boxes of varying sizes and functionality. Will Apple, as the leader in this trend, be the first to take the next step in the television space?&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://daringfireball.net/linked/2013/09/09/ps-vita-tv"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 10 Sep 2013 09:22:24 GMT</pubDate><guid isPermaLink="true">http://daringfireball.net/linked/2013/09/09/ps-vita-tv</guid></item><item><title>Train Hard</title><link>https://josh.works/growth/climbing/2013/09/10/train-hard/</link><description>&lt;p&gt;When’s the last time you participated in a sporting event? (Football, Ultimate Frisbee, rock climbing, running biking, wrestling, whatever)
When’s the last time you 
trained for that activity?&lt;/p&gt;

&lt;p&gt;Finally:&lt;/p&gt;

&lt;p&gt;When is the last time you trained for that activity 
with someone else? 
more&lt;/p&gt;

&lt;p&gt;There are a few levels of engaging in an activity. You can observe, you can participate, and you can make investments to improve in that pursuit. (Think watching YouTube videos of sky diving, paying to skydive, but doing it tandem, and finally pursuing your skydiving license.)&lt;/p&gt;

&lt;p&gt;I am learning 
&lt;a href="http://en.wikipedia.org/wiki/Krav_Maga"&gt;Krav Maga&lt;/a&gt; right now. Every week we cover a new topic, and every few months, you have the opportunity to take a test to advance to the next level, or belt. I am right now in level one (watch out, world…) and am looking forward to the test at the end of the month.&lt;/p&gt;

&lt;p&gt;I’ve been getting bored in the classes of late, because I felt like the material was not pushing me from a technical perspective, and I just wasn’t working as hard as I wanted to be during the class. I’m a big fan of pushing myself hard and trying hard, but I was often working with partners who did not inspire me to really push myself.&lt;/p&gt;

&lt;p&gt;I recently had the chance to train with another level one student who pushed me very, very hard. Inspired by how hard he was making me train, I made him train just as hard. We both acknowledged at the end of class (after I managed to not throw up) that the perceived quality of the class dramatically improved when being paired with a dedicated training partner.&lt;/p&gt;

&lt;p&gt;He and I will not always be able to train together, but I have been reminded of the power of 
being the guy that pushes you to train hard. He pushed me hard, and I had an opportunity to get a lot out of that hour because of it.&lt;/p&gt;

&lt;p&gt;This makes me think of training for climbing - I’ve climbed with a lot of people, and the instances where we have decided to spend the session training hard always feels vastly more productive than a relaxed climbing session. Sometimes I’ve been the guy that surprised my partner by pushing them way harder than they expected, sometimes my partner forced me to dig deep and train harder than I thought I could.&lt;/p&gt;

&lt;p&gt;The take away, however, is this: 
&lt;strong&gt;don’t settle for simple participation&lt;/strong&gt;
. Drive improvement and change. Most of that improvement and change comes from wanting it. If you are hungry for improvement, that will rub off on your training partner. If it doesn’t wear off, get another partner.&lt;/p&gt;

&lt;p&gt;Be the guy (or girl) that inspires others to train hard.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Tue, 10 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/climbing/2013/09/10/train-hard/</guid></item><item><title>Forcing a media refresh on Android with adb</title><link>https://cmetcalfe.ca/blog/forcing-a-media-refresh-on-android-with-adb.html</link><description>&lt;p&gt;Android will automatically perform a media refresh when an SD card is
mounted.&lt;/p&gt;
&lt;p&gt;Using &lt;a href="http://developer.android.com/tools/help/adb.html"&gt;adb&lt;/a&gt;, we can fake that event by manually sending a &lt;code&gt;MEDIA_MOUNTED&lt;/code&gt;
intent.&lt;/p&gt;
&lt;p&gt;For example, if you wanted to run a media refresh of the entire SD
card:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;adb&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;shell&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To refresh different directory, just change "/sdcard" to the absolute
path of the directory you want to refresh.&lt;/p&gt;
&lt;p&gt;For more fine-grained control, use the &lt;code&gt;MEDIA_SCANNER_SCAN_FILE&lt;/code&gt;
intent, which triggers a rescan of a single file.&lt;/p&gt;</description><author>Carey Metcalfe</author><pubDate>Tue, 10 Sep 2013 01:52:00 GMT</pubDate><guid isPermaLink="true">https://cmetcalfe.ca/blog/forcing-a-media-refresh-on-android-with-adb.html</guid></item><item><title>Installing Fehlstart - A simple, quick application launcher</title><link>https://cmetcalfe.ca/blog/installing-fehlstart-a-simple-quick-application-launcher.html</link><description>&lt;p&gt;&lt;a href="https://gitlab.com/fehlstart/fehlstart"&gt;Fehlstart&lt;/a&gt; is an application launcher, much like &lt;a href="http://www.launchy.net/"&gt;Launchy&lt;/a&gt;,
&lt;a href="http://qsapp.com/"&gt;Quicksilver&lt;/a&gt;, or &lt;a href="http://do.cooperteam.net/"&gt;GNOME Do&lt;/a&gt;. However, where other launchers focus
on adding features, Fehlstart is as basic as they come. If you want to
search for files or control your media player, look elsewhere. Felhstart
launches applications. Period.&lt;/p&gt;
&lt;p&gt;Fehlstart isn't in any major repositories so it has to be compiled from
source.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install dependencies&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git&lt;/code&gt;, &lt;code&gt;gcc&lt;/code&gt;, &lt;code&gt;make&lt;/code&gt;, &lt;code&gt;libgtk2.0-dev&lt;/code&gt;, &lt;code&gt;libkeybinder-dev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;On most systems these packages will be available through your package manager&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Get the code&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git clone https://gitlab.com/fehlstart/fehlstart.git&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Compile and install&lt;ul&gt;
&lt;li&gt;Navigate into the folder containing the code&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make install&lt;/code&gt; (with the needed permissions)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;fehlstart&lt;/code&gt; to your window manager's autostart list&lt;/li&gt;
&lt;li&gt;Log out and back in to launch Fehlstart.&lt;/li&gt;
&lt;li&gt;Press the key combination &lt;code&gt;&amp;lt;Super&amp;gt;&lt;/code&gt; + &lt;code&gt;&amp;lt;Space&amp;gt;&lt;/code&gt; to bring up the
   launcher&lt;/li&gt;
&lt;li&gt;Type to search through the installed applications, then press
   &lt;code&gt;&amp;lt;Enter&amp;gt;&lt;/code&gt; to launch.&lt;/li&gt;
&lt;/ol&gt;</description><author>Carey Metcalfe</author><pubDate>Tue, 10 Sep 2013 01:51:00 GMT</pubDate><guid isPermaLink="true">https://cmetcalfe.ca/blog/installing-fehlstart-a-simple-quick-application-launcher.html</guid></item><item><title>Frameless Geodesic Dome</title><link>http://rigsomelight.com/2013/09/09/frameless-geodesic-dome.html</link><description>&lt;p&gt;It&amp;#8217;s not a cabin, but I&amp;#8217;m sure this neat little structure will appear on Cabin Porn before too long. The advent and increase in popularity of minimal living structures such as this one is very interesting to me; perhaps one day I will build one of my own. Until then, though, I can always dream.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://rigsomelight.com/2013/09/09/frameless-geodesic-dome.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 10 Sep 2013 00:29:22 GMT</pubDate><guid isPermaLink="true">http://rigsomelight.com/2013/09/09/frameless-geodesic-dome.html</guid></item><item><title>Instapaper 5</title><link>https://zacs.site/blog/instapaper-5.html</link><description>&lt;p&gt;I could write an entire article proposing improvements to the new website alone, let alone the aging app. But this article isn&amp;#8217;t &lt;em&gt;just&lt;/em&gt; about Instapaper&amp;#8217;s website, nor is it &lt;em&gt;just&lt;/em&gt; about the app; this article is about Instapaper the read it later service and what Betaworks can do to revolutionize this beloved platform upon its next milestone release.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/instapaper-5.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 09 Sep 2013 15:38:26 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/instapaper-5.html</guid></item><item><title>Chained Destiny</title><link>https://zacs.site/blog/chained-destiny.html</link><description>&lt;p&gt;Wednesday evening, news broke that Apple had removed The Omni Group&amp;#8217;s iOS app &lt;em&gt;OmniKeyMaster&lt;/em&gt; for facilitating upgrade pricing, a feature Apple has refused to build in to the App Store since its launch. Amidst the &lt;a href="http://512pixels.net/2013/09/omni-app-store/"&gt;vocal&lt;/a&gt; &lt;a href="http://www.macstories.net/stories/on-omnikeymasters-shutdown/"&gt;calls&lt;/a&gt; for change in Apple&amp;#8217;s long-standing policies, I remembered something Marco Arment said on an episode of &lt;em&gt;Build &amp;#38; Analyze&lt;/em&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/chained-destiny.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 08 Sep 2013 17:05:47 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/chained-destiny.html</guid></item><item><title>New puppet-gluster features before Linuxcon</title><link>https://purpleidea.com/blog/2013/09/08/new-puppet-gluster-features-before-linuxcon/</link><description>&lt;p&gt;Hey there,&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve done a bit of &lt;a href="http://github.com/purpleidea/puppet-gluster/" title="puppet-gluster"&gt;puppet-gluster&lt;/a&gt; hacking lately to try to squeeze some extra features and testing in before &lt;a href="https://purpleidea.com/blog/2013/09/02/puppet-gluster-and-me-at-linuxcon/" title="Puppet-Gluster and me at Linuxcon"&gt;Linuxcon&lt;/a&gt;. Here&amp;rsquo;s a short list:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="https://github.com/purpleidea/puppet-gluster/commit/7c2dc0cadc03bc5dd2da3155e5773ad4471563df"&gt;SELinux fixes&lt;/a&gt; to keep &lt;a href="http://danwalsh.livejournal.com/"&gt;Dan Walsh&lt;/a&gt; happy :)&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://github.com/purpleidea/puppet-gluster/commit/4345cf9e625259585f7f8541e08c0e79a914e78c"&gt;Ping and status checks before volume creation.&lt;/a&gt; Now puppet-gluster will be less noisy about failures or missing executions that are due to the necessary incremental nature of puppet-gluster runs. You'll need multiple puppet runs to get a complete setup, so don't let puppet complain part way through. This is due to the design of puppet.&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://github.com/purpleidea/puppet-gluster/commit/231e4b9ff771d33514d78518e14fe13148e7b431"&gt;Simple filesystem paths for bricks.&lt;/a&gt; This is very useful for prototyping with virtual machines.&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://github.com/purpleidea/puppet-gluster/commit/24844a892c07001bb50eeb443005d3c2fe5d4025"&gt;Automatic UUID assignment for hosts.&lt;/a&gt; This requires &lt;a href="http://docs.puppetlabs.com/puppet/2.7/reference/lang_exported.html"&gt;exported resources&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://github.com/purpleidea/puppet-gluster/tree/master/examples"&gt;Updated examples&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://github.com/purpleidea/puppet-gluster"&gt;And more...&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
If there are features or bugs that you'd like to see added or removed (respectively) please let me know &lt;em&gt;ASAP&lt;/em&gt; so that I can try to get something ready for you before my &lt;a href="https://events.linuxfoundation.org/events/linuxcon-north-america/program/co-located-events"&gt;Linuxcon talk&lt;/a&gt;. I also don't have any hardware RAID or physical hardware to test external storage partitions (bricks) on. If you have any that you can donate or let me hack on for a while, there are some features I'd like to test. &lt;a href="https://purpleidea.com/contact/" title="contact"&gt;Contact me&lt;/a&gt;!
&lt;p&gt;I&amp;rsquo;ve got a few more things queued up too, but you&amp;rsquo;ll have to wait and see. Until then,&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sun, 08 Sep 2013 07:51:14 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/08/new-puppet-gluster-features-before-linuxcon/</guid></item><item><title>We Are All Remote Workers</title><link>https://nicolaiarocci.com/we-are-all-remote-workers/</link><description>&lt;p&gt;A little more than a year ago we closed our offices to become a fully distributed company. This story, which is still unfolding, has been the subject of my &lt;a href="https://speakerdeck.com/nicola/we-are-all-remote-workers"&gt;We Are All Remote Workers&lt;/a&gt; talk at RomagnaCamp 2013.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Sat, 07 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/we-are-all-remote-workers/</guid></item><item><title>Shelves: TC Disrupt '13</title><link>https://faingezicht.com/projects/2013/09/07/shelves/</link><description>During my summer internship in 2013, I had the opportunity to participate in TechCrunch Disrupt. I had very low expectations for the hackathon, since my coding abilities back then were very basic. Nevertheless, I teamed up with &lt;a href="https://www.codersclan.net/"&gt;Coders Clan&lt;/a&gt;'s' founder and CEO, &lt;a href="https://twitter.com/drorco"&gt;Dror Cohen&lt;/a&gt; and we built a simple book sharing application.

You can check out a video of our presentation, heavily influenced by the beginnings of the now ubiquitous "sharing economy" &lt;a href="http://techcrunch.com/video/shelves-demo-at-hackathon-sf-2013/517925708/"&gt;here&lt;/a&gt;.</description><author>Avy Faingezicht</author><pubDate>Sat, 07 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://faingezicht.com/projects/2013/09/07/shelves/</guid></item><item><title>Series que ver (primera parte)</title><link>https://www.patrickdap.com/post/series-que-ver-primera-parte/</link><description>&lt;p&gt;&lt;em&gt;Recomendaciones de parte de un seriéfilo (si es que eso existe...)&lt;/em&gt;&lt;/p&gt;&lt;img alt="Series que ver (primera parte)" height="150" src="https://www.patrickdap.com/assets/arrow.0Xo6W818_1qzsGk.jpg" style="float: right; margin: 0 0 12px 18px; border-radius: 8px;" width="150" /&gt;&lt;p&gt;Una de las cosas que hago en mi tiempo libre es ver series. Son aquellas cosas que me desestresan, mantienen la mente fuera de contexto por un rato, te hacen gritar, o incluso, te dejan preocupado por lo que pasará. Aquí, la recopilación de series que deberías ver (sin un orden de preferencia) y un pequeño resumen de cada una… Arrow es una de esas series que llama la atención. Aunque a más de alguno no le puede terminar de gustar el fork que sucedió luego de Smallville — y la presencia de Green Arrow en ésta —, la nueva serie sí que es toda una creación.&lt;/p&gt;&lt;div style="clear: both;"&gt;&lt;/div&gt;</description><author>Patrick D'appollonio</author><pubDate>Fri, 06 Sep 2013 23:45:19 GMT</pubDate><guid isPermaLink="true">https://www.patrickdap.com/post/series-que-ver-primera-parte/</guid></item><item><title>iOS 7: Apple's Windows Vista</title><link>https://zacs.site/blog/ios-7-apples-windows-vista.html</link><description>&lt;p&gt;After nearly six years of Windows XP, the tenth major version of Microsoft&amp;#8217;s computer operating system released to much hype and high expectations. With an overhauled visual aesthetic and a host of other headlining features, the Windows world heralded this release as the platform atop which the next generation of computers would build itself. An ambitious claim for sure, Microsoft&amp;#8217;s promise to not only overhaul the user interface but its very underpinnings as well seemed almost too good to be true. After XP&amp;#8217;s phenomenal success though, the claim seemed a believable one. Like a joke straight out of Family Guy, Vista exited the gate and promptly fell flat on its face.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/ios-7-apples-windows-vista.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 06 Sep 2013 18:58:51 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/ios-7-apples-windows-vista.html</guid></item><item><title>Protip: Ruby Devs, Please Tweak Your GC Settings for Tests!</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/protip-ruby-devs-please-tweak-your-gc-settings-for-tests</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Fri, 06 Sep 2013 14:13:37 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/protip-ruby-devs-please-tweak-your-gc-settings-for-tests</guid></item><item><title>The Fizzbuzz Bug Tracker A Bug Tracker for Single Developers</title><link>https://boyter.org/2013/09/fizzbuzz-bug-tracker/</link><description>&lt;p&gt;This serves as the announcement of my new bug tracker product I am working on.&lt;/p&gt;
&lt;p&gt;My needs are pretty specific and none of the existing bug trackers I have tried have meet the following goals.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Speed. Searching, adding projects/issues/comments should be instant. Any time waiting on the bug tracker is wasted time.&lt;/li&gt;
&lt;li&gt;Outlook style view of projects/issues/comments. This should allow me to get an overview of how I am tracking.&lt;/li&gt;
&lt;li&gt;Not require me to spin up a full web-server. I don&amp;rsquo;t want to have to install a full stack web-server just to track bugs.&lt;/li&gt;
&lt;li&gt;Sync across all devices. I want it to just appear on every device I own without me having to worry about backups or keeping things in sync.&lt;/li&gt;
&lt;li&gt;Be single user. I don&amp;rsquo;t want to have to login or perform user management.&lt;/li&gt;
&lt;li&gt;Support multiple projects. I also want to be able to have multiple issues per project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With that in mind let me introduce the Fizzbuzz Bug Tracker. Fizzbuzz is a single executable that works on Windows, Linux and OSX (once I have a machine to compile it on). A suggested workflow is to copy it onto your Dropbox folder (or equivalent) where it will be synced across all devices. Fizzbuzz has a strong emphasis on speed. Adding projects or issues, searching across projects and issues, drilling into projects or issues is near instant.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Fri, 06 Sep 2013 08:22:26 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/09/fizzbuzz-bug-tracker/</guid></item><item><title>Oracle Performance &amp;amp; Troubleshooting Online Seminars in 2013</title><link>https://tanelpoder.com/2013/09/05/oracle-performance-troubleshooting-online-seminars-in-2013/</link><description>&lt;p&gt;In case you haven’t noticed, I will be delivering my &lt;a href="https://tanelpoder.com/seminar/" target="_blank"&gt;Advanced Oracle Troubleshooting&lt;/a&gt; and &lt;a href="https://tanelpoder.com/seminar/" target="_blank"&gt;Advanced Oracle Exadata Performance: Troubleshooting and Optimization&lt;/a&gt; classes again in &lt;strong&gt;Oct/Nov 2013&lt;/strong&gt; (AOT) and &lt;strong&gt;December 2013&lt;/strong&gt; (Exadata).&lt;/p&gt;
&lt;p&gt;I have streteched the Exadata class to 5-half days as 4 half-days wasn’t nearly enough to deliver the amount of details in the material (and I think it’s still going to be a pretty intensive pace).&lt;/p&gt;
&lt;p&gt;And that’s all for this year (I will write about conferences and other public appearances in a separate post).&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Thu, 05 Sep 2013 16:45:07 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/09/05/oracle-performance-troubleshooting-online-seminars-in-2013/</guid></item><item><title>Cheating at Cookie Clicker</title><link>https://thomashunter.name/posts/2013-09-05-cheating-at-cookie-clicker</link><author>Thomas Hunter II</author><pubDate>Thu, 05 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-09-05-cheating-at-cookie-clicker</guid></item><item><title>One of My First Tweets</title><link>https://huphtur.nl/one-of-my-first-tweets/</link><description>&lt;blockquote class="twitter-tweet"&gt;&lt;p dir="ltr" lang="en"&gt;Nutella on sale: 2 for 2.50!&lt;/p&gt;&amp;mdash; M. Appelman (@huphtur) &lt;a href="https://twitter.com/huphtur/status/12513371?ref_src=twsrc%5Etfw"&gt;March 25, 2007&lt;/a&gt;&lt;/blockquote&gt;  
&lt;p&gt;Thanks Topsy for &lt;a href="http://about.topsy.com/2013/09/04/every-tweet-ever-published-now-at-your-fingertips/"&gt;making me realize&lt;/a&gt; my life is still much pretty the same as it ever was…&lt;/p&gt;</description><author>huphtur</author><pubDate>Thu, 05 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://huphtur.nl/one-of-my-first-tweets/</guid></item><item><title>Don't Ask What I'm Writing</title><link>http://curiousrat.com/dont-ask-what-im-writing</link><description>&lt;p&gt;Excellent piece from the New York Times on the less technical challenges of the writing process. I completely agree with Harry Marks&amp;#160;&amp;#8212;&amp;#160;I, too, hate explaining any written work, and especially my own&amp;#160;&amp;#8212;&amp;#160;and the article&amp;#8217;s author herself: she made a number of observations that hit very close to home for me.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://curiousrat.com/dont-ask-what-im-writing"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 05 Sep 2013 00:18:12 GMT</pubDate><guid isPermaLink="true">http://curiousrat.com/dont-ask-what-im-writing</guid></item><item><title>Obama's Bluff</title><link>http://brooksreview.net/2013/08/obamas-bluff/</link><description>&lt;p&gt;&amp;#8220;That&amp;#8217;s the danger of bluffing in anything&amp;#160;&amp;#8212;&amp;#160;you better be 100% certain you aren&amp;#8217;t called, or willing to take the risk you are. I think it is clear this was a bluff on Obama&amp;#8217;s part. Right or wrong Obama has now been called. There is very little choice for the United States now&amp;#160;&amp;#8212;&amp;#160;because either hard line statements from our President no longer carry weight, or we go to war (of some scale).&amp;#8221;&lt;/p&gt;

&lt;p&gt;I looked forward to hearing Ben Brooks&amp;#8217; thoughts on this topic all throughout the process of writing &lt;a href="https://zacs.site/blog/syrian-waves.html"&gt;&lt;em&gt;Syrian Waves&lt;/em&gt;&lt;/a&gt;; he didn&amp;#8217;t disappoint.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/08/obamas-bluff/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 04 Sep 2013 22:18:19 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/08/obamas-bluff/</guid></item><item><title>TechEd Australia 2013</title><link>https://daniellittle.dev/teched-at-2013</link><description>The first day at TechEd offered two main sessions the developer kick off and the Keynote. The developer kick off touched on a new Visual…</description><author>Daniel Little Dev</author><pubDate>Wed, 04 Sep 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/teched-at-2013</guid></item><item><title>My interview on being a MongoDB Master</title><link>https://nicolaiarocci.com/my-interview-on-being-a-mongodb-master/</link><description>&lt;p&gt;So I’ve been interviewed by Laura Czajkowski on my experience and role as a MongoDB Master. The interview actually covers more angles than that and I guess that, if you &lt;em&gt;really&lt;/em&gt; don’t have anything better to do, you might even want to check it out.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How did you get involved in open source?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’ve been an avid developer delivering desktop applications in the .NET/MSSQL closed source ecosystem for so many years that open source wasn’t even on my radar.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Wed, 04 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/my-interview-on-being-a-mongodb-master/</guid></item><item><title>My conky setup</title><link>https://www.zufallsheld.de/2013/09/03/my-conky-setup/</link><description>&lt;p&gt;I&amp;#8217;ve been a longtime fan of conky setups and watched many threads where
users post their configurations, but I couldn&amp;#8217;t bother writing my own&amp;nbsp;configuration.&lt;/p&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;

&lt;p&gt;But now that I got a second screen at home I thought that I could use
the extra space it gives me with …&lt;/p&gt;</description><author>zufallsheld</author><pubDate>Tue, 03 Sep 2013 19:22:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/09/03/my-conky-setup/</guid></item><item><title>Microsoft Surface vs iPad + Linode</title><link>https://yieldthought.com/post/60180703528</link><description>&lt;p class="media"&gt;&lt;img align="right" alt="image" height="300" src="https://64.media.tumblr.com/66557af56d4e3e32cb113dd78a172411/tumblr_inline_msk0nfH65q1qz4rgp.jpg" width="224" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;I never thought I&amp;rsquo;d write a blog post in Microsoft Word, but here I am doing just that,&amp;rdquo;&lt;/em&gt; begins my first blog post on the Surface. Written lying on a rabbit-shaped bench overlooking the sea, with a gentle breeze cooling the heat of the sun on my skin, all is well. A week later when I come to edit and upload it, I discover that Word has lost it[1].&lt;/p&gt;
&lt;h2&gt;Act One: All good things come to an end&lt;/h2&gt;
&lt;p&gt;This story begins back in January. I&amp;rsquo;d been curious about trying a Surface + Linode combination instead of my &lt;a href="http://yieldthought.com/post/12239282034/swapped-my-macbook-for-an-ipad"&gt;2 year-old iPad + Linode setup&lt;/a&gt;. The allure of a full-fat browser that can run Gmail and iPython Notebooks, combined with a keyboard-centric OS has long tempted me. I hadn&amp;rsquo;t switched, though. Somehow, I had been waiting. At the end of that fateful January amidst the snow and the cold, everything changed.&lt;/p&gt;
&lt;p&gt;I was promoted into a management role.&lt;/p&gt;
&lt;p&gt;Overnight I find my entire interface to the rest of the company changes. What used to be IM and Mercurial is now emails with attached Word and Powerpoint documents. Within a fortnight the iPad + Linode setup collapses; neither iOS nor Linux nor Google Docs offer credible alternatives for reviewing, editing and returning Office documents and I grit my teeth, install Windows 8 and Office on my laptop and get to work.&lt;/p&gt;
&lt;p&gt;Fast forward to April, and I&amp;rsquo;m wandering through a cherry-blossom filled Washington, exasperated by two months of being tied to a laptop, with all the power, size, screen, weight and fragility restrictions that go along with one. I&amp;rsquo;ve mostly stopped working in cafes and outdoors, but I miss it. As I walk I weigh up the alternatives. A 13&amp;quot; Air would be a massive step back towards the freedoms I&amp;rsquo;ve grown used to, but the fanless, robust silence of a tablet continues to attract me, and I don&amp;rsquo;t want to go back to managing local storage any more than I can help.&lt;/p&gt;
&lt;p class="media"&gt;&lt;figure class="tmblr-full"&gt;&lt;img alt="image" src="https://64.media.tumblr.com/76b30547a1f60b629d5b9b9eff71c46b/b9569061b1f36f73-4b/s540x810/88e20df2a5c0a72a1cafa15420e5bc8d255f4168.jpg" /&gt;&lt;/figure&gt; &lt;/p&gt;
&lt;p&gt;Reaching a decision, I drive to a cathedral-like mall and walk out again a few minutes later with a Surface RT and type cover. The time to try a Surface has come. If anything can let me work as flexibly and freely as my iPad in this new corporate world, the Surface can.&lt;/p&gt;
&lt;h2&gt;Act Two: Flashback&lt;/h2&gt;
&lt;p&gt;In the following glorious three months of summer and sunshine at my new home by the sea, I get to know the Surface, its glory and its shame. It works, I use it every day. Yet something is missing, something isn&amp;rsquo;t right. I just can&amp;rsquo;t fall in love with the Surface.&lt;/p&gt;
&lt;p class="media"&gt;&lt;figure class="tmblr-full"&gt;&lt;img alt="image" src="https://64.media.tumblr.com/cd93a6d2055b2e5bb16d08ff97f9f6ad/b9569061b1f36f73-48/s540x810/7de4edb6fccab3445a3a4001db91a398a49f524c.jpg" /&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Back in primary school, my class made Christmas cards for our parents one year. My artistically-gifted friend, who knew the difference between a B and HB pencil, drew out a simple, bold cracker design with a simple twist - you can pull apart the cracker to see the message. No more, no less, but somehow he managed to spend the whole hour working on it.&lt;/p&gt;
&lt;p&gt;I thought the pop-up idea was great. My card had a cracker too, and when you opened it there was a fireplace and tree inside and there were extra tabs to pull to make the fire go out and Father Christmas come down and you could open one of the presents under the tree to see my name and I&amp;rsquo;d fitted most of the words in without squashing them and when I showed the resultant sticky, thumb-printed mess to our teacher he asked me what on earth that was and told me to throw it away and make another.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t make another, but I did take a long, hard look at my friend&amp;rsquo;s card. Mine did more; why wasn&amp;rsquo;t it better? In that moment, I first learned about the relationship between elegance, simplicity and beauty, and my card with all its features and messy edges had none of these things.&lt;/p&gt;
&lt;p class="media"&gt;&lt;img alt="image" height="300" src="https://64.media.tumblr.com/df5dc1a9190a539a339b4c0f2bfc3972/tumblr_inline_msjynyDDUb1qz4rgp.jpg" width="224" /&gt;&lt;/p&gt;
&lt;p&gt;Using the Surface gives me the same feeling. I can do more with the Surface, but it is not beautiful, nor do I enjoy using it - or being seen using it. It&amp;rsquo;s so obviously a business device that putting it on the table in a cafe feels&amp;hellip; awkward. Like an imposition, doing office work in a leisure place.&lt;/p&gt;
&lt;p&gt;The experience is often disjinting. Rotating the device results in a weird &amp;ldquo;pop&amp;rdquo; animation that often leaves desktop windows or even the start screen itself distorted and out of place. It persists in referring to itself as my &amp;ldquo;PC&amp;rdquo;. The keyboard doesn’t auto-appear when text fields have the focus in desktop applications. Metro IE sometimes decides to reload all the old open tabs when clicking a link in a mail switches to it, stealing the focus from the new page I just tried to visit. The kickstand is at just the wrong angle for everything and the keyboard, while fine on a table, is spongy and occasionally misses keypresses when used on a lap. Word doesn&amp;rsquo;t save your work unless you click on a 3.5&amp;quot; disk icon regularly. There are a hundred small things that make the whole experience feel fragile, confused and unsatisfying.&lt;/p&gt;
&lt;p&gt;No, I cannot love the Surface. But neither do I discard it. Despite its failings, it does what it claims. It works, and it lets me work, flying through my Gmail with keyboard shortcuts, effortlessly opening, reviewing, changing and reattaching Office documents to emails. Sometimes, it even feels incredibly cool - using an iPython Notebook running on my Linode to graph and explore data from the tablet is absolutely great, even if it&amp;rsquo;s only possible thanks to the single-click jailbreak.&lt;/p&gt;
&lt;h2&gt;Act Three: Surprise&lt;/h2&gt;
&lt;p&gt;You see, there&amp;rsquo;s something else, something that changes things in ways I never expected: I can read the Surface&amp;rsquo;s screen in direct sunlight.&lt;/p&gt;
&lt;p class="media"&gt;&lt;figure class="tmblr-full"&gt;&lt;img alt="image" src="https://64.media.tumblr.com/c62ca7b244f2233f05344565578bd47a/b9569061b1f36f73-8c/s540x810/75d46ae4aa701d1fadfdce7ac670073245918878.jpg" /&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;While I can just about work on my iPad in the shade of a tree, the Surface screen is clear and bright lying in direct sunlight in the hammock on my balcony, on a pier at the beach, outdoors in a café or on a rug in the garden. This changes the game again. Working in a natural environment can be both beautiful and liberating. It&amp;rsquo;s just a shame it&amp;rsquo;s coupled to a device that&amp;rsquo;s otherwise somehow disappointing.&lt;/p&gt;
&lt;p&gt;Visiting my friends in Munich is typical of my mixed feelings for the situation. It&amp;rsquo;s a 7 hour train journey and a 7 day trip. I take the Surface for working on but also pack the iPad for playing games, so now everything weighs as much as a small laptop would anyway. My friends in Munich consistently tell me how healthy I&amp;rsquo;m looking. I put it down to my suntan from all those mornings in the hammock with the Surface.&lt;/p&gt;
&lt;p&gt;I prefer the experience of working on the iPad. The amazing, unexpected mental freedom of having all my state on an automatically backed-up, always-on Linode coupled to a simple, essentially stateless window onto that world that I could toss around like a paperback book. The ability to open and close it at will, let the battery run flat, leave apps open with the contents unfinished and never give them a second thought.&lt;/p&gt;
&lt;p&gt;The Surface doesn&amp;rsquo;t persist application state. Every week it threatens to restart itself within 2 days to install updates. If I haven&amp;rsquo;t manually saved work when it does that, the work is lost. Some things are saved on SkyDrive, some on the local disk, which isn&amp;rsquo;t automatically backed up either. So now I am forced to be aware of this leaky abstraction, to manage the remote and local state and at this point I might as well just have a MacBook Air and be done with it.&lt;/p&gt;
&lt;p&gt;It lacks a zen-like calm.&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s what this comes down to. If you&amp;rsquo;re mostly doing non-web development, go for an iPad+Linode. If that combination can&amp;rsquo;t do the work you&amp;rsquo;re doing - like the MS Office editing I need to do now - then it&amp;rsquo;s a choice between the Surface and a laptop, not an iPad. Do I recommend the Surface for working like this? I don&amp;rsquo;t know. It&amp;rsquo;s been months and I still don&amp;rsquo;t know.&lt;/p&gt;
&lt;p&gt;I would miss working outside if I had to go back to my laptop full time. Cycling into nature and working in a beautiful spot is fabulous. But these are things the screen lets me do, not the things the Surface lets me do. I expect to see similar screens on other devices soon. A good screen is not fundamental to the form factor or the manufacturer. There are probably options out there already that I haven&amp;rsquo;t seen because I never thought to look before.&lt;/p&gt;
&lt;p class="media"&gt;&lt;figure class="tmblr-full"&gt;&lt;img alt="image" src="https://64.media.tumblr.com/ec4183f0dd990c067e7c85d40d21afb4/b9569061b1f36f73-fa/s540x810/7e87f398ec125f8a27cee12aeca1e58739f943cc.jpg" /&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;I do know that I almost never use the Surface as a tablet. I use it like a little laptop. Maybe I&amp;rsquo;ll find the perfect combination of powershell scripts and metro apps to recreate an elegant workflow, but I&amp;rsquo;m not really motivated to because while I could use shell scripts and python programs on the Linode to work around the iPad&amp;rsquo;s email limitations I can&amp;rsquo;t do anything work around the Surface&amp;rsquo;s deeper usability flaws.&lt;/p&gt;
&lt;p&gt;Every time I use it I &lt;a href="http://www.amazon.com/gp/product/B0074703CM/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B0074703CM&amp;amp;linkCode=as2&amp;amp;tag=yieldthought-20"&gt;miss my MacBook&lt;/a&gt; a little more.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update: &lt;a href="https://news.ycombinator.com/item?id=6321400"&gt;HN discussion here&lt;/a&gt; (including my thoughts on Microsoft Phone).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update: I forgot to mention my &lt;a href="http://eepurl.com/pBDdv"&gt;Working in the Cloud mailing list&lt;/a&gt;. Articles like this appear there first, sign up if you&amp;rsquo;re interested in how things go from here!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;[1] Actually it autosaved a file, and when I next tried to open an attachment during a conference call I ignored the annoying little restore blah blah tab. I&amp;rsquo;ve since learned not to do that. But I shouldn&amp;rsquo;t have to.&lt;/p&gt;</description><author>Yield Thought</author><pubDate>Tue, 03 Sep 2013 18:02:00 GMT</pubDate><guid isPermaLink="true">https://yieldthought.com/post/60180703528</guid></item><item><title>Collection of Letters for Neural Network OCR Training</title><link>https://boyter.org/2013/09/collection-letters-training/</link><description>&lt;p&gt;I was looking for this on Google the other day and unable to find it. Essentially what I needed was a collection of images which are all the same size, but of different fonts so that I use them for training Neural Networks and test other OCR techniques. Since I couldn&amp;rsquo;t find any I thought I would upload my own collection.&lt;/p&gt;
&lt;p&gt;I used the below images when working on my thesis. From memory over 20 different fonts and sizes were used to create about 200 examples of each letter. The full data set proved to be pretty accurate when it came to recognizing most examples of text I found on the web.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 03 Sep 2013 08:59:42 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/09/collection-letters-training/</guid></item><item><title>Content but Restless</title><link>https://josh.works/growth/2013/09/03/content-but-restless/</link><description>&lt;p&gt;There is tension between being content with what you have, and striving for more.
We have all heard the “serenity prayer”:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;God, grant me the serenity to accept the things I cannot change,
The courage to change the things I can,
And wisdom to know the difference.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This prayer is supposedly common in Alcohol Anonymous and other 12 Step programs. A little farther down in the 
&lt;a href="http://en.wikipedia.org/wiki/Serenity_Prayer"&gt;Wikipedia article&lt;/a&gt;, however, the whole prayer (attributed to American theologian 
&lt;a href="http://en.wikipedia.org/wiki/Reinhold_Niebuhr"&gt;Reinhold Niebuhr&lt;/a&gt;) is printed, and it is different:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;God, give me grace to accept with serenity
The things that cannot be changed,
Courage to change the things
Which 
&lt;strong&gt;should&lt;/strong&gt;
 be changed,
And the Wisdom to distinguish
The one from the other.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Living one day at a time,
Enjoying one moment at a time,
Accepting hardship as a pathway to peace,
Taking, as Jesus did,
This sinful world as it is,
Not as I would have it,
Trusting that You will make all things right,
If I surrender to Your will,
So that I may be reasonably happy in this life,
And supremely happy with You forever in the next.&lt;/p&gt;

&lt;p&gt;So there is the original. The difference between the original and the shortened version is 
&lt;strong&gt;deciding what to change&lt;/strong&gt;
.&lt;/p&gt;

&lt;p&gt;If you sat around and changed 
only the things you could, you’d change easy things, and insignificant things, because changing hard things and meaningful things is hard. It is hard to change things that 
should be changed, but those are the only changes worth making. And, the original prayer says nothing about changing what you 
&lt;em&gt;**&lt;/em&gt;
can. It talks about changing what you 
should.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Action is empowering, and it leads to taking more action.&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Action implies making things happen.&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Making things happen will eventually lead to failure.&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is great hope in taking action, and there are great lessons to be found in failure. You know how every motivational poster ever to be seen in a school talks about how “You have what it takes” and “You are a beautiful and unique snowflake”?&lt;/p&gt;

&lt;p&gt;In addition to being so stupid it hurts, these are wrong. They 
should say:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;“Get Shit Done – it will make you feel better about yourself.”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;“You are not unique. Millions before you have wrestled with your problems. Some have surpassed you, some have fallen far behind. Until you are dead, there is hope for you.”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Take action. Keep going until you fail. Then try again.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m not sure where I am going with all this. But please, go do something meaningful. It is the 
only thing that matters. Money, your job, your hobby, your friends – none of these matter without something meaningful being done with it or through it.&lt;/p&gt;

&lt;p&gt;The good news is you can define what is meaningful. Then you have to do it.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Tue, 03 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/2013/09/03/content-but-restless/</guid></item><item><title>Aubade</title><link>https://ho.dges.online/words/commonplace/aubade-by-philip-larkin/</link><description>&lt;p&gt;I work all day, and get half-drunk at night.&lt;br /&gt;
Waking at four to soundless dark, I stare.&lt;br /&gt;
In time the curtain-edges will grow light.&lt;br /&gt;
Till then I see what’s really always there:&lt;br /&gt;
Unresting death, a whole day nearer now,&lt;br /&gt;
Making all thought impossible but how&lt;br /&gt;
And where and when I shall myself die.&lt;br /&gt;
Arid interrogation: yet the dread&lt;br /&gt;
Of dying, and being dead,&lt;br /&gt;
Flashes afresh to hold and horrify.&lt;/p&gt;
&lt;p&gt;The mind blanks at the glare. Not in remorse&lt;br /&gt;
—The good not done, the love not given, time&lt;br /&gt;
Torn off unused—nor wretchedly because&lt;br /&gt;
An only life can take so long to climb&lt;br /&gt;
Clear of its wrong beginnings, and may never;&lt;br /&gt;
But at the total emptiness for ever,&lt;br /&gt;
The sure extinction that we travel to&lt;br /&gt;
And shall be lost in always. Not to be here,&lt;br /&gt;
Not to be anywhere,&lt;br /&gt;
And soon; nothing more terrible, nothing more true.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Tue, 03 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/aubade-by-philip-larkin/</guid></item><item><title>Barbara Cartland</title><link>https://ho.dges.online/words/commonplace/barbara-cartland-by-john-lanchester/</link><description>&lt;p&gt;Barbara Cartland wrote - or &amp;lsquo;wrote&amp;rsquo; since she mainly dictated - up to 8,000 words a day, and frequently finished two books a month: in 1976 she published 23 books; she wrote 723 books in total.&lt;/p&gt;
&lt;p&gt;Nobody cares because they&amp;rsquo;re all shit.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;John Lanchester, &amp;ldquo;Maigret&amp;rsquo;s Room&amp;rdquo;, LRB 42, 11&lt;/em&gt;&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Tue, 03 Sep 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/barbara-cartland-by-john-lanchester/</guid></item><item><title>Downton Abbey Back Again</title><link>https://zacs.site/blog/downton-abbey-back-again.html</link><description>&lt;p&gt;Shortly after Downton Abbey&amp;#8217;s third season ended, iTV announced a fourth set for the latter-half of this year. Even as an ardent fan of the British television programme, I paid little attention to the announcement and any ensuing chatter until, presently, it faded from my mind entirely.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/downton-abbey-back-again.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 02 Sep 2013 21:24:08 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/downton-abbey-back-again.html</guid></item><item><title>Syrian Waves</title><link>https://zacs.site/blog/syrian-waves.html</link><description>&lt;p&gt;Of the few topics I consistently refrain from writing about, I most actively avoid religion and politics. Not because I hesitate to post anything inflammatory or fear alienating potential readers, but more so because I do not know enough about either topic to write with any valid authority. That list used to include Apple rumors and speculation, but the last few weeks have seen me gradually enter that front as well. Today, I expand my topic list once again to include politics.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/syrian-waves.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 02 Sep 2013 15:42:39 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/syrian-waves.html</guid></item><item><title>Puppet-Gluster and me at Linuxcon</title><link>https://purpleidea.com/blog/2013/09/02/puppet-gluster-and-me-at-linuxcon/</link><description>&lt;p&gt;&lt;a href="http://www.johnmark.org/blog/"&gt;John Mark Walker&lt;/a&gt;, (from &lt;a href="http://www.redhat.com/"&gt;Redhat&lt;/a&gt;) has been kind enough to invite me to speak at the &lt;a href="https://events.linuxfoundation.org/events/linuxcon-north-america/program/co-located-events"&gt;Linuxcon Gluster Workshop&lt;/a&gt; in &lt;a href="https://events.linuxfoundation.org/events/linuxcon-north-america/extend-the-experience/about-new-orleans"&gt;New Orleans&lt;/a&gt;. I&amp;rsquo;ll be speaking about &lt;a href="https://github.com/purpleidea/puppet-gluster"&gt;puppet-gluster&lt;/a&gt;, giving demos, and hopefully showing off some new features. I&amp;rsquo;m also looking forward to meeting up with &lt;a href="http://www.gluster.org/"&gt;gluster&lt;/a&gt; expert &lt;a href="http://joejulian.name/"&gt;Joe Julian&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If there are features that puppet-gluster is missing, or you have a use case that I haven&amp;rsquo;t covered, please let me know, and I&amp;rsquo;ll try to work on it for you ahead of the conference. If you want to meet up for some puppet-gluster help, or to hack on code, I&amp;rsquo;ll be around from the 16th to the 20th of September. My talk is on the 19th.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Mon, 02 Sep 2013 08:50:23 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/09/02/puppet-gluster-and-me-at-linuxcon/</guid></item><item><title>Now You See Me</title><link>https://olshansky.info/movie/now_you_see_me/</link><description>Olshansky's review of Now You See Me</description><author>🦉 olshansky 🦁</author><pubDate>Mon, 02 Sep 2013 04:34:22 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/now_you_see_me/</guid></item><item><title>Adding Godaddy G2 root cert to JDK 7</title><link>https://rd.nz/2013/09/adding-godaddy-g2-root-cert-to-jdk-7.html</link><author>Rich Dougherty</author><pubDate>Mon, 02 Sep 2013 01:27:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/09/adding-godaddy-g2-root-cert-to-jdk-7.html</guid></item><item><title>Mucoce 2.0 Coming Soon</title><link>https://korz.dev/2013/09/mucoce-2.0-coming-soon/</link><description>&lt;p&gt;Lately, I have been working on version 2.0 of my Mac application called &amp;ldquo;Mucoce&amp;rdquo;.&lt;/p&gt;</description><author>Niklas Korz</author><pubDate>Mon, 02 Sep 2013 01:00:00 GMT</pubDate><guid isPermaLink="true">https://korz.dev/2013/09/mucoce-2.0-coming-soon/</guid></item><item><title>Lapis: Lua for the Web</title><link>https://blog.separateconcerns.com/2013-09-01-lapis.html</link><description>&lt;p&gt;I use different programming languages for different tasks, but the one I prefer is &lt;a href="http://www.lua.org/"&gt;Lua&lt;/a&gt;. I have always wanted to use it for the Web, and in a way I already do: this blog is a static website generated by a custom Lua program. I have also written several services that can speak HTTP+JSON in Lua. For larger, HTML-based Web applications however, I have never found the framework I wanted. I have tried &lt;a href="http://keplerproject.github.io/orbit/"&gt;several&lt;/a&gt; &lt;a href="https://github.com/zedshaw/Tir"&gt;of&lt;/a&gt; &lt;a href="https://github.com/nrk/mercury"&gt;them&lt;/a&gt;, but kept coming back to &lt;a href="http://flask.pocoo.org/"&gt;more dependable platforms&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Last March, I gave &lt;a href="http://leafo.net/lapis/"&gt;Lapis&lt;/a&gt; a try. It is a relatively new framework written by &lt;a href="http://leafo.net/"&gt;Leaf Corcoran&lt;/a&gt;, the author of &lt;a href="http://moonscript.org/"&gt;MoonScript&lt;/a&gt;, a programming language that compiles to Lua (like CoffeeScript for JavaScript). Lapis is powered by &lt;a href="http://openresty.org/"&gt;OpenResty&lt;/a&gt;, an &lt;a href="http://www.techempower.com/benchmarks/"&gt;incredibly fast&lt;/a&gt; web application server that run &lt;strong&gt;inside&lt;/strong&gt; the &lt;a href="http://nginx.org/"&gt;nginx&lt;/a&gt; Web server and is already used by large websites like &lt;a href="http://en.wikipedia.org/wiki/Taobao"&gt;Taobao&lt;/a&gt; and &lt;a href="https://www.cloudflare.com/"&gt;CloudFlare&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Lapis was built with MoonScript in mind, so I had to hack around it to make it work with plain Lua. It worked but was too verbose, so I eventually gave up on that and on Lapis altogether. But that was Lapis version 0.0.1! Leaf continues to improve it and recently released version 0.0.4. Last Friday evening, on a train to Bordeaux, I decided to give it another try.&lt;/p&gt;
&lt;p&gt;Lapis now &lt;a href="http://leafo.net/lapis/reference.html#lapis-in-lua"&gt;natively supports Lua&lt;/a&gt; and has improved in various aspects. I have found it comfortable to write the views and the configuration file with the MoonScript DSLs provided by the framework. For logic (models and controllers) I used Lua directly since I prefer its syntax to MoonScript for regular code.&lt;/p&gt;
&lt;p&gt;I have published &lt;a href="https://github.com/catwell/badakhshan"&gt;a small skeleton application&lt;/a&gt; which demonstrates this dual languages style to GitHub. I chose to use Redis for the datastore because I know it well and had it running on my laptop, so I did not use the database integration layer of MoonScript which is designed primarily for PostgreSQL (but it looks nice as well). This application is a kind of Hello World but it demonstrates most features of the framework, including &lt;a href="http://leafo.net/lapis/reference.html#lapis-applications-sub-applications"&gt;sub-applications&lt;/a&gt;, &lt;a href="http://leafo.net/lapis/reference.html#html-generation-html-widgets"&gt;widgets&lt;/a&gt;, &lt;a href="http://leafo.net/lapis/reference.html#html-generation-layouts"&gt;layouts&lt;/a&gt;, &lt;a href="http://leafo.net/lapis/reference.html#exception-handling"&gt;exception-handling&lt;/a&gt; and &lt;a href="http://leafo.net/lapis/reference.html#input-validation"&gt;input validation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want an example of a larger Lapis codebase with a different style, &lt;a href="http://rocks.moonscript.org/"&gt;MoonRocks&lt;/a&gt; is written in Lapis and &lt;a href="https://github.com/leafo/moonrocks-site"&gt;its code is on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, what did I think of it? Well, finally I could see myself write a serious Web application in Lua! I will still choose Python and Flask in a professional setting because it is is a more stable, more feature-complete stack, and because I would not want to ask a whole team to learn both Lua &lt;strong&gt;and&lt;/strong&gt; MoonScript to work on the project. But if I make a Web application as a personal side project, I will certainly try to use Lapis for that.&lt;/p&gt;</description><author>Separate Concerns</author><pubDate>Sun, 01 Sep 2013 19:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.separateconcerns.com/2013-09-01-lapis.html</guid></item><item><title>Steven Enns and "Craftsmanship"</title><link>https://liza.io/steven-enns-and-craftsmanship/</link><description>&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Craftsmanship is really taking pride in your work. In terms of craftasmanship for me that means looking at the past and looking at where leatherworking came from and trying to take that and include smart design from now to create some really great leather products.&amp;rdquo; - Steven Enns&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sat, 31 Aug 2013 14:46:37 GMT</pubDate><guid isPermaLink="true">https://liza.io/steven-enns-and-craftsmanship/</guid></item><item><title>GAME ON 2.0 wraps up!</title><link>https://jasoneckert.github.io/myblog/game-on-wraps-up/</link><description>&lt;p&gt;&lt;img alt="theend0" src="end0.png#center" title="theend0" /&gt;&lt;/p&gt;
&lt;p&gt;All good things must come to an end&amp;hellip;..and unfortunately this also applies to the Game On 2.0 exhibition at the Ontario Science Centre, which ran for the past 6 months (starting March 9th).  This Labour Day weekend is the final time that you can check it out as it closes Sept 2nd.&lt;/p&gt;
&lt;p&gt;Our college (triOS College) was the presenting sponsor for the exhibition, which, for me was incredible - not only because I run our video game program, created the information for our game development booth, gave numerous Ontario Science Centre talks on gaming topics, and helped organize various game-themed events - but because I’m an avid retro gamer who has many of the same arcade machines and vintage consoles showcased in Game On 2.0 in my own home!  For me, it was like merging my home and work lives. I could actually bring my personal passion and knowledge of retro gaming into my day job!  Not many people can say that.&lt;/p&gt;</description><author>Jason Eckert's Website and Blog</author><pubDate>Fri, 30 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://jasoneckert.github.io/myblog/game-on-wraps-up/</guid></item><item><title>Eve with Python 3.3 Support</title><link>https://nicolaiarocci.com/eve-with-python-3-3-support/</link><description>&lt;p&gt;Another Eve release is out and I’m particularly proud about it since it brings full Python 3.3 support (among other things). Check out the relevant blog post: &lt;a href="http://blog.python-eve.org/v009-with-python-33-support"&gt;Eve 0.0.9 is out!&lt;/a&gt;&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Thu, 29 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/eve-with-python-3-3-support/</guid></item><item><title>Mentors and Attitude</title><link>https://josh.works/2013/08/28/mentors-and-attitude/</link><description>&lt;p&gt;Having a mentor is equal parts “having a mentor” and “being one who can be mentored”. If I am too thick-headed to evaluate things that someone tells me and figure out how to apply that to my life, both of us are wasting our time.
Having a mentor is life-changing because you have intentionally adopted a teachable disposition. It is a commitment to growth. If you have a conversation with your mentor, and that conversation is live-streamed to a friend who is not interested in getting mentored, but wants to hear what nuggets of wisdom come from that conversation, you will get far more out of the conversation than he, even though you both heard the exact same thing.&lt;/p&gt;

&lt;p&gt;I don’t have any formal mentoring relationships but there are a few people in my life who consistently share wisdom, insight, and sometimes tell me “That would be a bad way to go about X - how about this other way?”&lt;/p&gt;

&lt;p&gt;I am thankful for these relationships, and I have been deeply impacted by them.&lt;/p&gt;

&lt;p&gt;Do you have any mentors? If not, why not?&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Wed, 28 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/2013/08/28/mentors-and-attitude/</guid></item><item><title>Comprehensive Linux Backups with etckeeper &amp;amp; backupninja</title><link>https://duncanlock.net/blog/2013/08/27/comprehensive-linux-backups-with-etckeeper-backupninja/</link><description>&lt;section id="preamble"&gt;&lt;p&gt;I&amp;#8217;m going to build on &lt;a href="http://www.jwz.org/doc/backups.html"&gt;Jamie Zawinski&amp;#8217;s excellent advice about backups&lt;/a&gt;, which you should read first. This is basically that, but with some extra bits. If this seems too complex, then &lt;em&gt;just do what he says&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The plan is to use &lt;a href="https://0xacab.org/liberate/backupninja"&gt;Backupninja&lt;/a&gt; to backup everything to an external &lt;span class="caps"&gt;USB&lt;/span&gt; drive&amp;#8201;&amp;#8211;&amp;#8201;and also to &lt;a href="http://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt; or &lt;a href="https://www.dropbox.com/"&gt;Dropbox&lt;/a&gt;, depending on what it is. Backupninja provides a centralized way to configure and schedule many different backup utilities, just by dropping a few simple configuration files into &lt;code&gt;/etc/backup.d/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I have a multiple hard disk setup for my desktop Linux box - my &lt;code&gt;/home&lt;/code&gt; folders live on one disk and &lt;code&gt;/&lt;/code&gt; lives on another one. I don&amp;#8217;t want to backup everything from the system disk - I can re-install it in 10 mins, and I don&amp;#8217;t really want to complicate this by backing up non-essential stuff. I just want to backup a few system wide configuration items from &lt;code&gt;/&lt;/code&gt; - and my MySQL databases, which are kept on&amp;nbsp;there.&lt;/p&gt;
&lt;p&gt;To do this, I&amp;#8217;m going to tell backupninja to backup the system config, MySQL databases and anything else I want backed up, to my &lt;code&gt;/home&lt;/code&gt; folder, then backup the whole &lt;code&gt;/home&lt;/code&gt; folder.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m also going to do extra backups to Amazon S3, so we&amp;#8217;ll have some extra cloud backups of critical&amp;nbsp;stuff.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m going to use etckeeper to store the system wide config from &lt;code&gt;/etc&lt;/code&gt; in a git repository - this way I get a history of changes and the ability to roll back config changes. I&amp;#8217;m then just going to backup that git&amp;nbsp;repository.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_making_sure_your_usb_disk_is_mounted_at_backup_time"&gt;Making sure your &lt;span class="caps"&gt;USB&lt;/span&gt; disk is mounted at backup&amp;nbsp;time&lt;/h2&gt;&lt;p&gt;If you just plug in a &lt;span class="caps"&gt;USB&lt;/span&gt; drive, it will generally auto-mount and appear inside &lt;code&gt;/media&lt;/code&gt;. This is often good enough, but if your machine isn&amp;#8217;t setup to do this, or it doesn&amp;#8217;t work properly for some reason, you will need to mount the drive permanently by editing &lt;code&gt;/etc/fstab&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I suggest that you mount the backup drive via it&amp;#8217;s label, as the device name can change for external devices depending on what&amp;#8217;s plugged in at the time. To have an external &lt;span class="caps"&gt;USB&lt;/span&gt; drive called &amp;#8216;backups&amp;#8217; and formatted as ext4, mounted at &lt;code&gt;/mnt/backups&lt;/code&gt;, first do the&amp;nbsp;following:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; /mnt/backups&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;then add something like this to your &lt;code&gt;/etc/fstab&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;# &amp;lt;file system&amp;gt;  &amp;lt;mount point&amp;gt;  &amp;lt;fs-type&amp;gt;  &amp;lt;options&amp;gt;                         &amp;lt;dump-freq&amp;gt;  &amp;lt;pass-num&amp;gt;
&lt;/span&gt;&lt;span class="py"&gt;LABEL&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;backups    /mnt/backups   ext4       nodev,nosuid,noatime,nodiratime   0            0&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;you can test this by&amp;nbsp;running:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;mount &lt;span class="nt"&gt;-a&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If this works, it shouldn&amp;#8217;t print out any errors and browsing to &lt;code&gt;/mnt/backups&lt;/code&gt; should show you the contents of your external&amp;nbsp;drive.&lt;/p&gt;
&lt;p&gt;In the steps below, I&amp;#8217;m going to use &lt;code&gt;/mnt/backups&lt;/code&gt; as the backup location, but change this to point to the right place for your local&amp;nbsp;setup.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_backing_up_system_configuration_using_etckeeper"&gt;Backing up System Configuration using&amp;nbsp;etckeeper&lt;/h2&gt;&lt;p&gt;Basically, &lt;a href="http://joeyh.name/code/etckeeper/"&gt;etckeeper&lt;/a&gt; runs itself - you just have to install it and switch it on. You can commit changes to &lt;code&gt;/etc&lt;/code&gt; manually if you want to, but by default it hooks into apt to commit changes when you install things and has a cron job to backup outstanding changes&amp;nbsp;daily:&lt;/p&gt;
&lt;div class="quote-block"&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;etckeeper&lt;/em&gt; allows the contents of &lt;code&gt;/etc&lt;/code&gt; be easily stored in Version Control System (&lt;span class="caps"&gt;VCS&lt;/span&gt;) repository. It hooks into &lt;em&gt;apt&lt;/em&gt; to automatically commit changes to &lt;code&gt;/etc&lt;/code&gt; when packages are installed or upgraded. Placing &lt;code&gt;/etc&lt;/code&gt; under version control is considered an industry best practice, and the goal of &lt;em&gt;etckeeper&lt;/em&gt; is to make this process as painless as&amp;nbsp;possible.&lt;/p&gt;
&lt;p&gt;&amp;#8201;&amp;#8211;&amp;#8201;&lt;a href="https://help.ubuntu.com/12.10/serverguide/etckeeper.html"&gt;Ubuntu Server&amp;nbsp;Guide&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt;To install etckeeper, run this in a&amp;nbsp;console:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;git etckeeper&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The etckeeper from the Ubuntu repositories is setup to use &lt;code&gt;bzr&lt;/code&gt; by default, because they&amp;#8217;re idiots, so lets change it to use &lt;code&gt;git&lt;/code&gt;. Edit the &lt;code&gt;/etc/etckeeper/etckeeper.conf&lt;/code&gt; file like&amp;nbsp;so:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;# The VCS to use.
#VCS="hg"
&lt;/span&gt;&lt;span class="py"&gt;VCS&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"git"&lt;/span&gt;
&lt;span class="c"&gt;#VCS="bzr"
&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="py"&gt;VCS&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"darcs"&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you have bzr installed for some reason, then the etckeeper bzr repository will be automatically initialized. To undo that, run&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;etckeeper uninit&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then to re-initialize with a git&amp;nbsp;repository:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;etckeeper init&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you don&amp;#8217;t have bzr installed it will fail to initialize the bzr repo, so you can just run the second&amp;nbsp;one.&lt;/p&gt;
&lt;p&gt;One thing to know about running etckeeper is that it keeps its git repo inside &lt;code&gt;/etc&lt;/code&gt; (which is fine) - but this means it runs as root - which takes a bit of getting used to if you&amp;#8217;re going to use it manually. You will also need to setup at least a minimal git config for the root&amp;nbsp;user:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;su -
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email duncan.lock@gmail.com
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Once you&amp;#8217;ve done that you can check everything&amp;nbsp;in:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /etc
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;git status
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;etckeeper commit &lt;span class="s2"&gt;"Initial Commit"&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_setting_up_backupninja_postfix"&gt;Setting up backupninja &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;postfix&lt;/h2&gt;&lt;p&gt;The Ubuntu package for backupninja also installs&lt;a class="footnote-ref" href="#_footnote_1" id="_footnoteref_1" title="View footnote 1"&gt;[1]&lt;/a&gt; &lt;code&gt;postfix&lt;/code&gt; - which it can use to send notification emails. Postfix is a fully capable - but very lightweight - &lt;span class="caps"&gt;MTA&lt;/span&gt;/email server. I&amp;#8217;m just going to configure it to send outgoing emails and nothing else. This will allow backupninja to send me emails when backups succeed - or&amp;nbsp;fail.&lt;/p&gt;
&lt;p&gt;Install backupninja like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;backupninja&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_configure_postfix"&gt;Configure&amp;nbsp;Postfix&lt;/h3&gt;&lt;p&gt;During install you will see the postfix install wizard, which will prompt you for some configuration values. You can accept the defaults for everything, except&amp;nbsp;these:&lt;/p&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;For &amp;#8216;type of mail configuration&amp;#8217; select &amp;#8216;Satellite&amp;nbsp;system&amp;#8217;.&lt;/li&gt;&lt;li&gt;For &amp;#8216;system mail name&amp;#8217;, either accept the default, or enter the domain name to use in the from: address for outgoing&amp;nbsp;emails.&lt;/li&gt;&lt;li&gt;For &amp;#8216;relay host&amp;#8217;, make sure it&amp;#8217;s&amp;nbsp;blank.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;That should be all the configuration postfix requires. Once the install has completed, you can test it by running this at the command&amp;nbsp;line:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'test email body'&lt;/span&gt; | mail &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s1"&gt;'test email subject line'&lt;/span&gt; send.to.address@wherever.net&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You should receive an email at &lt;code&gt;send.to.address@wherever.net&lt;/code&gt; - remember to check your spam/junk folder. Waking up to an email like this is very&amp;nbsp;reassuring:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="You might have to create a filter or add the from address to your contacts to stop these getting marked as spam." src="https://duncanlock.net/images/posts/comprehensive-linux-backups-with-etckeeper-backupninja/backupninja-email-report-screenshot.png" /&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_configure_backupninja"&gt;Configure&amp;nbsp;Backupninja&lt;/h3&gt;&lt;p&gt;The backupninja install will create a config folder: &lt;code&gt;/etc/backup.d&lt;/code&gt; where we&amp;#8217;ll be storing our backup jobs - and a config file &lt;code&gt;/etc/backupninja.conf&lt;/code&gt; which we&amp;#8217;ll configure like this - everything else can stay at its&amp;nbsp;defaults:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="py"&gt;reportdirectory&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;/home/duncan/Dropbox/backups&lt;/span&gt;
&lt;span class="py"&gt;when&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;everyday at 02:00&lt;/span&gt;
&lt;span class="py"&gt;reportemail&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;your.email@example.net&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I&amp;#8217;m sending the backup report log to Dropbox &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; email - and kicking everything off at&amp;nbsp;2am.&lt;/p&gt;
&lt;p&gt;The backupninja config files are &lt;em&gt;extremely&lt;/em&gt; well commented, explaining what everything does in great detail. The best way to learn how to configure it is just to read the config files. It also installs some thoroughly commented example backup jobs - one of each type - into &lt;code&gt;/usr/share/doc/backupninja/examples/&lt;/code&gt; which you can use as the basis for your backup&amp;nbsp;jobs.&lt;/p&gt;
&lt;p&gt;Now we&amp;#8217;ll setup each of the backup jobs we want to run, by adding a simple text file to the &lt;code&gt;/etc/backup.d&lt;/code&gt; folder for each job. These are executed in alphanumeric order, so I suggest you create them like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="Not sure why Thunar thinks that's a Matlab file." src="https://duncanlock.net/images/posts/comprehensive-linux-backups-with-etckeeper-backupninja/backupninja-etc-backupsd-files.png" /&gt;&lt;/div&gt;
&lt;p&gt;The only caveat is that Backupninja config files need to be owned by root and not world or group readable, so make sure they&amp;#8217;re: &lt;code&gt;-rw-------&lt;/code&gt;, by doing&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;find /etc/backup.d/ &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;chmod &lt;/span&gt;600 &lt;span class="o"&gt;{}&lt;/span&gt; &lt;span class="se"&gt;\;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and this, to check it&amp;nbsp;worked:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo ls&lt;/span&gt; &lt;span class="nt"&gt;-lah&lt;/span&gt; /etc/backup.d/
&lt;span class="go"&gt;
total 40K
drwxrwx---   2 root root 4.0K May 19 16:54 .
drwxr-xr-x 154 root root  12K May 19 15:25 ..
-rw-------   1 root root 1.4K May 19 16:54 10-little-things.sh
-rw-------   1 root root 3.5K May 19 16:54 50-daily-all-db.mysql
-rw-------   1 root root  219 May 19 16:54 60-daily-home-rsync.sh
-rw-------   1 root root  135 May 19 16:54 70-photos-to-s3.sh
-rw-------   1 root root  134 May 19 16:54 71-ebooks-to-s3.sh
-rw-------   1 root root  138 May 19 16:54 99-cleanup-afterwards.sh&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Speaking of which, backupninja also &lt;em&gt;runs&lt;/em&gt; as root, so any files it creates during the backup will be &lt;em&gt;owned&lt;/em&gt; by root, so my housekeeping scripts fix that up&amp;nbsp;afterwards.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_10_little_things_sh"&gt;10-little-things.sh&lt;/h3&gt;&lt;p&gt;This does some initial housekeeping and copies some little things into the &lt;code&gt;/home&lt;/code&gt; folder for later backing&amp;nbsp;up:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;# Backup installed packages list&lt;/span&gt;
dpkg &lt;span class="nt"&gt;--get-selections&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /home/duncan/backups/dpkg-selections.txt

&lt;span class="c"&gt;# Take simple copies of major config files for convenience&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; /etc/hosts /home/duncan/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /etc/fstab /home/duncan/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.bashrc /home/duncan/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.bash_aliases /home/duncan/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.inputrc /home/duncan/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.gitconfig /home/duncan/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.filezilla/sitemanager.xml /home/duncan/backups/

&lt;span class="c"&gt;# Copy a few things over to dropbox, for extra safety&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/backups/hosts /home/duncan/Dropbox/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/backups/fstab /home/duncan/Dropbox/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.bashrc /home/duncan/Dropbox/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.bash_aliases /home/duncan/Dropbox/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.inputrc /home/duncan/Dropbox/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.gitconfig /home/duncan/Dropbox/backups/
&lt;span class="nb"&gt;cp&lt;/span&gt; /home/duncan/.filezilla/sitemanager.xml /home/duncan/Dropbox/backups/

&lt;span class="c"&gt;# Backup etckeeper, plus any other git repo's I've backed up to /home/duncan/backups/git-backups&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /etc/
git bundle create /home/duncan/backups/git-backups/etc.git-bundle &lt;span class="nt"&gt;--all&lt;/span&gt;
rsync &lt;span class="nt"&gt;-vaxAX&lt;/span&gt; &lt;span class="nt"&gt;--delete&lt;/span&gt; &lt;span class="nt"&gt;--ignore-errors&lt;/span&gt; /home/duncan/backups/git-backups /home/duncan/Dropbox/backups/git-backups

&lt;span class="c"&gt;# Change permissions on the backup folders so that I can use them&lt;/span&gt;
&lt;span class="nb"&gt;chown&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; duncan /home/duncan/backups/
&lt;span class="nb"&gt;chown&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; duncan /home/duncan/Dropbox/backups/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_50_daily_all_db_mysql"&gt;50-daily-all-db.mysql&lt;/h3&gt;&lt;p&gt;This backs up all my MySQL databases into my home folder using&amp;nbsp;mysqldump:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;### backupninja mysql config file ###
&lt;/span&gt;
&lt;span class="py"&gt;databases&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;all&lt;/span&gt;
&lt;span class="py"&gt;backupdir&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;/home/duncan/backups/mysql&lt;/span&gt;
&lt;span class="py"&gt;hotcopy&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;no&lt;/span&gt;
&lt;span class="py"&gt;sqldump&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;yes&lt;/span&gt;
&lt;span class="py"&gt;compress&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;yes&lt;/span&gt;
&lt;span class="py"&gt;dbusername&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;******&lt;/span&gt;
&lt;span class="py"&gt;dbpassword&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;******&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This uses backupninja&amp;#8217;s built in support for backing up MySQL databases, so you just need a config file, ending in &lt;code&gt;.mysql&lt;/code&gt;, telling it what to&amp;nbsp;backup.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_60_daily_home_rsync_sh"&gt;60-daily-home-rsync.sh&lt;/h3&gt;&lt;p&gt;This is the big one that backs up the &lt;code&gt;/home&lt;/code&gt; folders to an external &lt;span class="caps"&gt;USB&lt;/span&gt; disk, provided it&amp;#8217;s mounted where it&amp;#8217;s supposed to&amp;nbsp;be:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;mountpoint &lt;span class="nt"&gt;-q&lt;/span&gt; /mnt/backups
&lt;span class="k"&gt;then
   &lt;/span&gt;info &lt;span class="s2"&gt;"backup drive is mounted, backing up"&lt;/span&gt;
   rsync &lt;span class="nt"&gt;-vaxAX&lt;/span&gt; &lt;span class="nt"&gt;--progress&lt;/span&gt; &lt;span class="nt"&gt;--delete&lt;/span&gt; &lt;span class="nt"&gt;--ignore-errors&lt;/span&gt; &lt;span class="nt"&gt;--exclude&lt;/span&gt; &lt;span class="s1"&gt;'.cache/'&lt;/span&gt; &lt;span class="nt"&gt;--exclude&lt;/span&gt; &lt;span class="s1"&gt;'.local/share/Trash/'&lt;/span&gt; /home/ /mnt/backups/
&lt;span class="k"&gt;else
   &lt;/span&gt;fatal &lt;span class="s2"&gt;"backup drive is not mounted, quitting"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Backupninja does have support for running rsync backups directly, just like it does for MySQL, but it does time machine style incremental/ hardlink based backups, which wasn&amp;#8217;t what I wanted at the moment. I just used this shell script to run rsync - which works&amp;nbsp;fine.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_70_photos_to_s3_sh"&gt;70-photos-to-s3.sh&lt;/h3&gt;&lt;p&gt;This one backs up my photo&amp;#8217;s to Amazon S3. It requires &lt;a href="http://s3tools.org/s3cmd"&gt;s3cmd&lt;/a&gt; to be installed and&amp;nbsp;configured:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;# Backup photos to Amazon S3&lt;/span&gt;
s3cmd &lt;span class="nt"&gt;-vH&lt;/span&gt; &lt;span class="nt"&gt;--progress&lt;/span&gt; &lt;span class="nt"&gt;--guess-mime-type&lt;/span&gt; &lt;span class="nb"&gt;sync&lt;/span&gt; /home/duncan/Photos/ s3://dflock-backups/dunc-desktop/photos/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To install and configure s3cmd, do&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;s3cmd python-magic
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;s3cmd &lt;span class="nt"&gt;--configure&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;See here for more info on setting up&amp;nbsp;s3cmd:&lt;/p&gt;
&lt;div class="quote-block"&gt;&lt;blockquote&gt;&lt;p&gt;You will be asked for the two keys - copy and paste them from your confirmation email or from your Amazon account&amp;nbsp;page.&lt;/p&gt;
&lt;p&gt;&amp;#8201;&amp;#8211;&amp;#8201;&lt;a class="bare" href="http://s3tools.org/s3cmd"&gt;http://s3tools.org/s3cmd&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_71_ebooks_to_s3_sh"&gt;71-ebooks-to-s3.sh&lt;/h3&gt;&lt;p&gt;I also do the same with my eBooks&amp;nbsp;collection:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;# Backup ebooks's to Amazon S3&lt;/span&gt;
s3cmd &lt;span class="nt"&gt;-vH&lt;/span&gt; &lt;span class="nt"&gt;--progress&lt;/span&gt; &lt;span class="nt"&gt;--guess-mime-type&lt;/span&gt; &lt;span class="nb"&gt;sync&lt;/span&gt; /home/duncan/Books/ s3://dflock-backups/dunc-desktop/books/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_99_cleanup_afterwards_sh"&gt;99-cleanup-afterwards.sh&lt;/h3&gt;&lt;p&gt;This one just does a tiny bit of housekeeping at the&amp;nbsp;end:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;# Change permissions on backups so that I can use them&lt;/span&gt;
&lt;span class="nb"&gt;chown&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; duncan /home/duncan/backups/
&lt;span class="nb"&gt;chown&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; duncan /home/duncan/Dropbox/backups/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_testing_with_ninjahelper"&gt;Testing with&amp;nbsp;ninjahelper&lt;/h2&gt;&lt;p&gt;Backupninja comes with a great little tool called &lt;code&gt;ninjahelper&lt;/code&gt; to test your backup configurations and manually run jobs. When it starts it gives you a list of each of your&amp;nbsp;jobs:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="backupninja ninjahelper screenshot" src="https://duncanlock.net/images/posts/comprehensive-linux-backups-with-etckeeper-backupninja/backupninja-ninjahelper-screenshot.png" /&gt;&lt;/div&gt;
&lt;p&gt;Choose the job you want to test, then you&amp;#8217;ll see&amp;nbsp;this:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="backupninja ninjahelper screenshot job" src="https://duncanlock.net/images/posts/comprehensive-linux-backups-with-etckeeper-backupninja/backupninja-ninjahelper-screenshot-job.png" /&gt;&lt;/div&gt;
&lt;p&gt;Do a test run, then a real run of each job. This will also test permissions etc&amp;#8230;&amp;#8203; and tell you if anything needs&amp;nbsp;changing.&lt;/p&gt;
&lt;p&gt;Use this to do a test run of each of your jobs in turn until they work, then to actually run each one and check the output. Once they all work here, you&amp;#8217;re good to&amp;nbsp;go.&lt;/p&gt;
&lt;p&gt;You can check your backup system configuration changes into &lt;code&gt;etckeeper&lt;/code&gt; now:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;etckeeper commit &lt;span class="s2"&gt;"Initial setup of backup system"&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;So, your backup system configuration is now backed up&amp;nbsp;:)&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_physical_off_site_backups"&gt;Physical Off-site&amp;nbsp;Backups&lt;/h2&gt;&lt;p&gt;I also want &lt;em&gt;physical&lt;/em&gt; off-site backups of everything - in case anything happens to my building - like a fire, flood or burglary, for&amp;nbsp;example.&lt;/p&gt;
&lt;p&gt;Once you&amp;#8217;ve setup the above, this is simplicity itself - just remove the external &lt;span class="caps"&gt;USB&lt;/span&gt; backup disk, stick a post-it note with the date on it, and take it to work, or give it to a friend who lives separately from&amp;nbsp;you.&lt;/p&gt;
&lt;p&gt;Then just get a new blank disk and put it where the old one was, format, label and mount it the same way. Backups will then happen to that&amp;nbsp;disk.&lt;/p&gt;
&lt;p&gt;Then, like &lt;a href="http://www.jwz.org/doc/backups.html"&gt;jwz&lt;/a&gt; says - every month, bring that other drive back, plug it in and run the backup to it, then either take it away again or swap them&amp;nbsp;over.&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_mounting_unmounting"&gt;Mounting &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;Unmounting&lt;/h3&gt;&lt;p&gt;To un-mount your existing backup disk, so you can safely remove it, do&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;umount /mnt/backups&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then remove it and plug the new disk in. Make sure it&amp;#8217;s formatted and labeled correctly&lt;a class="footnote-ref" href="#_footnote_2" id="_footnoteref_2" title="View footnote 2"&gt;[2]&lt;/a&gt;, then mount it like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;mount &lt;span class="nt"&gt;-a&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Which will mount everything in your &lt;code&gt;/etc/fstab&lt;/code&gt; that isn&amp;#8217;t already&amp;nbsp;mounted.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_testing"&gt;Testing&lt;/h2&gt;&lt;p&gt;I&amp;#8217;m deliberately not doing anything too fancy here - no compression, no encryption, etc&amp;#8230;&amp;#8203; - just a simple copy of stuff. This means less things to go wrong - and that testing is easier. Open some files from the backup and check that they&amp;#8217;re &lt;span class="caps"&gt;OK&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Copy some files off the backup disk to check that works; download some stuff from&amp;nbsp;s3.&lt;/p&gt;
&lt;p&gt;Do this periodically. Backups that don&amp;#8217;t restore are worse than no&amp;nbsp;backups.&lt;/p&gt;
&lt;p&gt;Remember to keep an eye on the log file that Backupninja makes at &lt;code&gt;/var/log/backupninja.log&lt;/code&gt; - and make sure you&amp;#8217;re getting the emails - and check and immediately fix any errors or&amp;nbsp;failures.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_then_relax"&gt;Then&amp;#8230;&amp;#8203;&amp;nbsp;relax&lt;/h2&gt;&lt;p&gt;Once this is all setup, you can take a deep breath and relax - safe in the knowledge that you&amp;#8217;re covered if anything bad happens to your digital life. This only took me a couple of hours to setup from scratch - but will take you much less because you can copy &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; paste my hard work. What are you waiting for - give yourself the gift of some peace of&amp;nbsp;mind.&lt;/p&gt;
&lt;hr /&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_footnotes_references"&gt;Footnotes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;References&lt;/h3&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class="footnotes"&gt;&lt;hr /&gt;&lt;ol class="footnotes"&gt;&lt;li class="footnote" id="_footnote_1"&gt;The Ubuntu packages install &lt;a href="http://www.postfix.org/"&gt;postfix&lt;/a&gt; when you install backupninja via a dependency on &lt;code&gt;+mail-utils+&lt;/code&gt;, which depends on &lt;code&gt;+mail-transport-agent+&lt;/code&gt;, which is provided by &lt;code&gt;+postfix+&lt;/code&gt;. &lt;a class="footnote-backref" href="#_footnoteref_1" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_2"&gt;i.e. usually the same format as your source drive (ext4 in my case) and labeled &amp;#8216;backups&amp;#8217;. I use the excellent &lt;a href="http://gparted.sourceforge.net/"&gt;GParted&lt;/a&gt; for this, which you can install from your distributions repository in the usual way. &lt;a class="footnote-backref" href="#_footnoteref_2" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Tue, 27 Aug 2013 22:36:36 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/08/27/comprehensive-linux-backups-with-etckeeper-backupninja/</guid></item><item><title>Saving Resources for Humans in PHP</title><link>https://boyter.org/2013/08/saving-resources-humans-php/</link><description>&lt;p&gt;One of the issues I have run into running searchcode.com is that a huge amount of time spent serving pages is serving them to bots (about 900,000 hits a day are from bots). I have been watching the load averages and they can spike to over 30.00 occasionally which is pretty bad for a 4 core/ht system. I don&amp;rsquo;t have any problems with bot&amp;rsquo;s really other then the fact that I cannot really control them. Sure you can specify crawl delays but its of limited use if the bot chooses to ignore it.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 27 Aug 2013 03:23:43 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/08/saving-resources-humans-php/</guid></item><item><title>carvr</title><link>https://mattkeeter.com/projects/carvr</link><description>Image resizing with seam carving</description><author>Matt Keeter</author><pubDate>Tue, 27 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://mattkeeter.com/projects/carvr</guid></item><item><title>Use a Custom Tld for Local Development</title><link>https://bfontaine.net/2013/08/26/use-a-custom-tld-for-local-development/</link><description>&lt;p&gt;In this post, we’ll create a custom &lt;a href="https://en.wikipedia.org/wiki/Top-level_domain"&gt;TLD&lt;/a&gt; for local development, and configure
Apache to work with that. It’ll allow you to work on your local version of
&lt;code class="language-plaintext highlighter-rouge"&gt;mysuperwebsite.com&lt;/code&gt; with the local domain &lt;code class="language-plaintext highlighter-rouge"&gt;mysuperwebsite.dev&lt;/code&gt;, with the exact
same URLs, except that little &lt;code class="language-plaintext highlighter-rouge"&gt;.com&lt;/code&gt; which is replaced by &lt;code class="language-plaintext highlighter-rouge"&gt;.dev&lt;/code&gt;.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;This post is focused on OS X, but the tools used are available on Ubuntu and
others. Additionally, you can choose whatever unexisting domain you want, just
replace &lt;code class="language-plaintext highlighter-rouge"&gt;.dev&lt;/code&gt; with the one you chose in the commands described in the article.&lt;/p&gt;

&lt;h2 id="dnsmasq"&gt;DNSMasq&lt;/h2&gt;

&lt;p&gt;The major problem we have when we develop locally with custom domains is that
we have to add an entry to &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/hosts&lt;/code&gt; for &lt;em&gt;each&lt;/em&gt; website. Wildcards are not
supported, so you can’t write the following line in it:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;127.0.0.1 *.dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There are different workarounds, but here we’ll use DNSMasq as
a local DNS resolver. If you don’t have &lt;a href="http://brew.sh/"&gt;homebrew&lt;/a&gt;, install it
first, then install DNSMasq:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;brew install dnsmasq
# enable the daemon on startup
sudo cp $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;DNSMasq will run locally and redirect any query for a &lt;code class="language-plaintext highlighter-rouge"&gt;*.dev&lt;/code&gt; domain to the local
host, &lt;code class="language-plaintext highlighter-rouge"&gt;127.0.0.1&lt;/code&gt;. Open &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/dnsmasq.conf&lt;/code&gt; (or create it if it doesn’t
exist) and add the following lines:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;address=/dev/127.0.0.1
listen-adress=127.0.0.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then start DNSMasq:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;sudo launchctl load homebrew.mxcl.dnsmasq
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You’ll have to tell OS X to send its
DNS queries to the local server first, then try the other ones, to intercept
the queries for the &lt;code class="language-plaintext highlighter-rouge"&gt;*.dev&lt;/code&gt; domains. Go to &lt;i&gt;System Preferences → Network →
Advanced → DNS&lt;/i&gt;, and add &lt;code class="language-plaintext highlighter-rouge"&gt;127.0.0.1&lt;/code&gt; at the top of the list of DNS servers.&lt;/p&gt;

&lt;p&gt;You can then check that it works using &lt;code class="language-plaintext highlighter-rouge"&gt;dig&lt;/code&gt;:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;$ dig foobar.dev
…
;; QUESTION SECTION:
;foobar.dev.            IN  A

;; ANSWER SECTION:
foobar.dev.     0   IN  A   127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
…
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you have some
server listening on port 80, you can try &lt;code class="language-plaintext highlighter-rouge"&gt;foobar.dev&lt;/code&gt; in your browser, it’ll
display whatever you’re serving on &lt;code class="language-plaintext highlighter-rouge"&gt;127.0.0.1:80&lt;/code&gt;. If you have any troubles,
empty your cache (use &lt;code class="language-plaintext highlighter-rouge"&gt;dscacheutils -flushcache&lt;/code&gt; on OS X), or restart your
computer.&lt;/p&gt;

&lt;p&gt;That’s all! You can stop there, but if you’re using Apache you may be
interested by the next section of this article.&lt;/p&gt;

&lt;h2 id="mod_vhost_alias"&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;mod_vhost_alias&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;This Apache module allows you manage virtual hosts dynamically, so you won’t
have to create a new one for every (local) website. This is useful if you have
a large number of virtual hosts with similar configurations. In this section,
we’ll see how to associate a &lt;code class="language-plaintext highlighter-rouge"&gt;.dev&lt;/code&gt; domain with a directory on your computer.
We’ll assume you already have Apache installed and working.&lt;/p&gt;

&lt;p&gt;With &lt;code class="language-plaintext highlighter-rouge"&gt;mod_vhost_alias&lt;/code&gt;, Apache extracts the hostname from the client query (with
the &lt;code class="language-plaintext highlighter-rouge"&gt;Host&lt;/code&gt; HTTP parameter) and use it to get the directory path. The &lt;a href="https://httpd.apache.org/docs/current/mod/mod_vhost_alias.html"&gt;official doc&lt;/a&gt;
has a lot of examples, I personally prefer to be able to use whatever directory
name I want, so I’m using a &lt;code class="language-plaintext highlighter-rouge"&gt;vhosts&lt;/code&gt; directory which contains symbolic links to
the right directories. Like with DNSMasq before, you need to add only two lines
of configuration here. Open &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/apache2/extra/httpd-vhosts.conf&lt;/code&gt; (you’ll need
to use &lt;code class="language-plaintext highlighter-rouge"&gt;sudo&lt;/code&gt;), and add the following lines at the end of it:&lt;/p&gt;

&lt;div class="language-apache highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nc"&gt;UseCanonicalName&lt;/span&gt; &lt;span class="ss"&gt;Off&lt;/span&gt;
&lt;span class="nc"&gt;VirtualDocumentRoot&lt;/span&gt; "/Users/baptiste/some/dirs/vhosts/%-2.0.%-1.0"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You may want to customize the path. This one takes the last two parts of the
domain (i.e. the domain and the tld), and use the directory
&lt;code class="language-plaintext highlighter-rouge"&gt;~/some/dirs/vhosts/domain.tld/&lt;/code&gt; for it. Note that it’ll use the same directory
for &lt;code class="language-plaintext highlighter-rouge"&gt;bar.dev&lt;/code&gt;, &lt;code class="language-plaintext highlighter-rouge"&gt;foo.bar.dev&lt;/code&gt;, &lt;code class="language-plaintext highlighter-rouge"&gt;qux.foo.bar.dev&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;Then, use &lt;code class="language-plaintext highlighter-rouge"&gt;ln -s&lt;/code&gt; to make symbolic links from &lt;code class="language-plaintext highlighter-rouge"&gt;vhosts/&lt;/code&gt; to the right directories,
e.g.:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;~/some/dirs/vhosts/foo.dev -&amp;gt; ~/sites/foo.dev
~/some/dirs/vhosts/bar.dev -&amp;gt; ~/perso/blog
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If all the websites are in the same directory, you can skip the
“symbolic links” part. Restart Apache with &lt;code class="language-plaintext highlighter-rouge"&gt;sudo apachectl restart&lt;/code&gt; (on Ubuntu,
use &lt;code class="language-plaintext highlighter-rouge"&gt;sudo service apache2 restart&lt;/code&gt;), and you’re done. In the future, you won’t
have to restart Apache for each new site, you need to restart it only when you
modify its configuration.&lt;/p&gt;

&lt;p&gt;If you get some issues with rewrite rules, add&lt;/p&gt;

&lt;div class="language-apache highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nc"&gt;RewriteBase&lt;/span&gt; /
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;in the &lt;code class="language-plaintext highlighter-rouge"&gt;.htaccess&lt;/code&gt; of the websites that use them, and it’ll work.&lt;/p&gt;</description><author>Baptiste Fontaine’s Blog</author><pubDate>Mon, 26 Aug 2013 23:31:00 GMT</pubDate><guid isPermaLink="true">https://bfontaine.net/2013/08/26/use-a-custom-tld-for-local-development/</guid></item><item><title>Writing Sensible Tests for Happiness</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/writing-sensible-tests-for-happiness</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Mon, 26 Aug 2013 17:11:00 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/writing-sensible-tests-for-happiness</guid></item><item><title>Finding YAML errors in puppet</title><link>https://purpleidea.com/blog/2013/08/25/finding-yaml-errors-in-puppet/</link><description>&lt;p&gt;I love tabs, they&amp;rsquo;re so much easier to work with, but YAML doesn&amp;rsquo;t like them. I&amp;rsquo;m constantly adding them in accidentally, and puppet&amp;rsquo;s error message is a bit cryptic:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Error: Could not retrieve catalog from remote server: Error 400 on SERVER: malformed format string - %S at /etc/puppet/manifests/foo.pp:18 on node bar.example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This happens during a puppet run, which in my case loads up YAML files. The tricky part was that the error wasn&amp;rsquo;t at all related to the &lt;em&gt;foo.pp&lt;/em&gt; file, it just happened to be the first time hiera was run. So where&amp;rsquo;s the real error?&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sun, 25 Aug 2013 07:31:49 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/08/25/finding-yaml-errors-in-puppet/</guid></item><item><title>The Television Revolution</title><link>https://zacs.site/blog/the-television-revolution.html</link><description>&lt;p&gt;In an uncharacteristically long post from The Loop titled &lt;a href="http://www.loopinsight.com/2013/08/23/the-state-of-apples-tv-quest/"&gt;&lt;em&gt;The state of Apple&amp;#8217;s TV quest&lt;/em&gt;&lt;/a&gt;, Dave Mark made an interesting observation regarding Apple&amp;#8217;s alleged impending entrance in to the television industry. The pertinent sentence&amp;#160;&amp;#8212;&amp;#160;cited below&amp;#160;&amp;#8212;&amp;#160;draws a parallel between the music industry prior to the introduction of iTunes and the television industry of today:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-television-revolution.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 24 Aug 2013 22:41:45 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-television-revolution.html</guid></item><item><title>The MacRumors Buying Guide</title><link>http://buyersguide.macrumors.com/</link><description>&lt;p&gt;On a recent episode of what I believe was Back to Work, Dan and Merlin mentioned in passing a great page on the MacRumors website offering buying advice for Apple products. Based on average product cycles and current rumors, the editors at MacRumors decide whether to give the green-light to purchasing a new Apple device, whether to caution against it in the case of a yellow light, or give a product the red light signifying their advice against purchasing it at this time. Even for those steeped in the Apple community and familiar with all the current rumors, this page is nice to keep around if you ever lose track of whether or not now is a good time to buy a new MacBook Pro.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://buyersguide.macrumors.com/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 24 Aug 2013 22:41:38 GMT</pubDate><guid isPermaLink="true">http://buyersguide.macrumors.com/</guid></item><item><title>Quickly navigate your filesystem from the command-line</title><link>http://jeroenjanssens.com/2013/08/16/quickly-navigate-your-filesystem-from-the-command-line.html</link><description>&lt;p&gt;Possessing the ability to write a CMS and code a website is great&amp;#160;&amp;#8212;&amp;#160;don&amp;#8217;t get me wrong&amp;#160;&amp;#8212;&amp;#160;but it&amp;#8217;s neat little scripts like this one that make me glad I learned to program.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://jeroenjanssens.com/2013/08/16/quickly-navigate-your-filesystem-from-the-command-line.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 24 Aug 2013 22:41:33 GMT</pubDate><guid isPermaLink="true">http://jeroenjanssens.com/2013/08/16/quickly-navigate-your-filesystem-from-the-command-line.html</guid></item><item><title>China's Yellow Mountains</title><link>http://www.visualnews.com/2013/08/22/take-death-defying-walks-in-chinas-yellow-mountains/</link><description>&lt;p&gt;&amp;#8220;Considering Huangshan&amp;#8217;s extreme beauty, it&amp;#8217;s not surprising that the area derives much of its significance from Chinese art and literature. It has inspired poets such as Li Bai, many Chinese ink paintings, and more recently, photography. According to Wikipedia, over 20,000 poems were written about the mountains between the Tang Dynasty (618-906) and the end of the Qing Dynasty (1614 to 1911). They&amp;#8217;ve also inspired modern works, lending to the fictional world designed for James Cameron&amp;#8217;s 2009 film Avatar.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Seeing such majestic scenery as this mountain range is so common in many of today&amp;#8217;s movies and TV shows, yet it takes an article like this to realize that such places do actually exist in the real world.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.visualnews.com/2013/08/22/take-death-defying-walks-in-chinas-yellow-mountains/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 24 Aug 2013 16:24:47 GMT</pubDate><guid isPermaLink="true">http://www.visualnews.com/2013/08/22/take-death-defying-walks-in-chinas-yellow-mountains/</guid></item><item><title>A Fantastic Yet Familiar Future of Machines in Nature</title><link>http://www.visualnews.com/2013/08/20/simon-stlenhag-paints-a-fantastic-yet-familiar-future-of-machines-in-nature/</link><description>&lt;p&gt;&amp;#8220;His paintings show a universe much like our own, but beside the everyday humans carrying out everyday activities are massive buildings and machines running on technologies currently unknown.&amp;#8221;&lt;/p&gt;

&lt;p&gt;This is exactly the sort of article I subscribed to Visual News for. Very impressive.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.visualnews.com/2013/08/20/simon-stlenhag-paints-a-fantastic-yet-familiar-future-of-machines-in-nature/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 24 Aug 2013 16:23:18 GMT</pubDate><guid isPermaLink="true">http://www.visualnews.com/2013/08/20/simon-stlenhag-paints-a-fantastic-yet-familiar-future-of-machines-in-nature/</guid></item><item><title>Side Effects</title><link>https://olshansky.info/movie/side_effects/</link><description>Olshansky's review of Side Effects</description><author>🦉 olshansky 🦁</author><pubDate>Sat, 24 Aug 2013 08:02:53 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/side_effects/</guid></item><item><title>Watch behind my shoulder: Debugging</title><link>https://myownfortune.wordpress.com/2013/08/23/165/</link><description>Warning: long-winded tech post. If you don&amp;#8217;t want to improve your debugging skills or don&amp;#8217;t have lots of free time, don&amp;#8217;t read this. I decided to do some pro-bono debugging, and as I was diving in I thought that some of you might be interested in a glimpse of how I work. I find that [&amp;#8230;]</description><author>My Own Fortune</author><pubDate>Sat, 24 Aug 2013 02:30:51 GMT</pubDate><guid isPermaLink="true">https://myownfortune.wordpress.com/2013/08/23/165/</guid></item><item><title>Bellmanstafetten relay race - didn't die!</title><link>https://liza.io/bellmanstafetten-relay-race-didnt-die/</link><description>&lt;p&gt;Yesterday I took part in Bellmanstafetten - a 5km relay race - with other runners from DICE. We had three teams, one of which was aiming to beat last year&amp;rsquo;s company record for the race (I wasn&amp;rsquo;t on that one). We got shirts and everything!&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Fri, 23 Aug 2013 21:22:20 GMT</pubDate><guid isPermaLink="true">https://liza.io/bellmanstafetten-relay-race-didnt-die/</guid></item><item><title>Feedback pt. 2</title><link>https://josh.works/2013/08/23/feedback-pt-2/</link><description>&lt;h3 id="traditional-feedback-is-explicit"&gt;Traditional Feedback is Explicit&lt;/h3&gt;

&lt;p&gt;Feedback is the means by which any system makes changes. From the gene pool to the swimming pool, feedback works to eliminate the insufficient and improve the sufficient. (See what I did with the “pool” thing?)&lt;/p&gt;

&lt;p&gt;Your car gives you feedback if the oil is running low - this allows you to take corrective action before ruining your action. Your computer gives you feedback if its running hot - this allows you to save your work before your computer automatically shuts down, to cool off. Just about any system that can break has feedback mechanisms built in, so the user can evaluate the individual components of that system 
before the effect of poor performance ruins the whole thing.&lt;/p&gt;

&lt;p&gt;Coaches and teachers give feedback, too. If your not throwing the ball right, or moving in exactly the right way, a good coach will give you feedback so you can improve. If your paper is not shaping up as it should, your teacher will give you feedback.&lt;/p&gt;

&lt;p&gt;Here’s the problem - in each of these examples, there is a 
built-in system for feedback. If your car says the oil is low, or your gas is running out, you don’t get angry and stomp off. If your coach tells you how to do a specific move better, you (hopefully) don’t take it as a personal dig.&lt;/p&gt;

&lt;h3 id="when-it-is-not-explicit"&gt;When It Is Not Explicit&lt;/h3&gt;

&lt;p&gt;In most areas of life, however, feedback is not 
built it. It just happens, if you happen to be looking for it or not. Users complaining about a problem (real or perceived) constitute feedback, even though they didn’t fill out a survey. If everyone you are talking to ends up leaving the conversation, they are giving you feedback, even though they’ll never tell you why they’re leaving.&lt;/p&gt;

&lt;p&gt;These subtle forms of feedback are extremely valuable, and if you are attentive, you can learn a lot about how people relate to you, your product, and your ideas. 
I am not advocating reshaping yourself based on the subtle indicators ofothers, but you would be wise to be aware of the messages that are being sent. You can then pick and choose which to be attentive to.&lt;/p&gt;

&lt;p&gt;Here are three areas where I’m trying to wrap my head around explicit vs. implicit feedback:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;At my job, I talk with the users of our product regularly. They usually get in touch with us only when they are confused or their expectations have not been met. I could pass this off as user “confusion” or “user being disconnected from reality”, or I can think “their reaction is because 
something is not being communicated as it should be. Let me figure out what that is.”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I am intentional about trying to meet with people that I respect, so I can learn from them. Sometimes these attempts do not pan out - I could either dismiss the unsuccessful attempts as “he’s being a jerk” or “he must be really really busy”, or, I can think “Someone could figure out how to get in touch with this guy - what does that person know that I do not? How can I learn that too?’&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Here is a reversal of implicit vs. explicit feedback: My wife is a source of tremendous joy to me. Her favorite things are different than my favorite things, however. She feels very loved if, as we’re driving somewhere far away, I pull over and make a spontaneous date out of a meal, rather than eating in the car. Whenever we’ve done this, she tells me in very plain words “This makes me feel loved. Thank you.” No matter how well I know this, I still regularly try to trick myself into thinking she doesn’t care that much, so we’ll just grab food while driving.
In this last instance, I try to make explicit feedback (“This makes me feel loved”) into implicit feedback (“That was fun”) and then dismiss it. Not something I’m proud of, but its what I do, in order to get my way.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is my thoughts on feedback. There is a lot of growth that can happen quickly if you pay attention to how things are received, and adjust accordingly.&lt;/p&gt;

&lt;p&gt;Get at it.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Fri, 23 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/2013/08/23/feedback-pt-2/</guid></item><item><title>Scalar Subqueries in Oracle SQL WHERE clauses (and a little bit of Exadata stuff too)</title><link>https://tanelpoder.com/2013/08/22/scalar-subqueries-in-oracle-sql-where-clauses-and-a-little-bit-of-exadata-stuff-too/</link><description>&lt;p&gt;My previous post was about &lt;a href="https://tanelpoder.com/2013/08/13/oracle-12c-scalar-subquery-unnesting-transformation/" target="_blank"&gt;Oracle 12c SQL Scalar Subquery transformations&lt;/a&gt;. Actually I need to clarify its scope a bit: the previous post was about scalar subqueries &lt;em&gt;inside a SELECT projection list&lt;/em&gt; only (meaning that for populating a field in the query resultset, a subquery gets executed once for each row returned back to the caller, instead of returning a “real” column value passed up from a child rowsource).&lt;/p&gt;
&lt;p&gt;I did not cover an other use case in my previous post – it is possible to use scalar subqueries also in the WHERE clause, for filtering the resultset, so let’s see what happens in this case too!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note that the tests below are ran on an Oracle 11.2.0.3 database (not 12c as in the previous post), because I want to add a few Exadata details to this post – and as of now, 18th August 2013, Smart Scans don’t work with Oracle 12c on Exadata. This will of course change once the first Oracle 12c patchset will be released, but this will probably happen somewhere in the next year.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So, let’s look into the following simple query. The bold red part is the scalar subquery (well, as long as it returns 0 or 1 rows, if it returns more, you’ll get an error during query execution). I’m searching for “objects” from a &lt;em&gt;test_objects_100m&lt;/em&gt; table (with 100 Million rows in it), but I only want to process the rows where the object’s owner name is whatever the subquery on &lt;em&gt;test_users&lt;/em&gt; table returns. I have also disabled Smart Scans for this query so that the database would behave more like a regular non-Exadata DB for now:&lt;/p&gt;
&lt;pre&gt;SELECT /*+ MONITOR &lt;strong&gt;OPT_PARAM('cell_offload_processing', 'false')&lt;/strong&gt; */
    SUM(LENGTH(object_name)) + SUM(LENGTH(object_type)) + SUM(LENGTH(owner))
FROM
    test_objects_100m o
WHERE
    o.owner &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;=&lt;/strong&gt; &lt;strong&gt;(SELECT u.username FROM test_users u WHERE user_id = 13)&lt;/strong&gt;&lt;/span&gt;
/&lt;/pre&gt;
&lt;p&gt;Note the equals (=) sign above, I’m simply looking for a single, noncorrelated value from the subquery – it’s not a more complex (and unpredictable!) IN or EXISTS subquery. Let’s see the execution plan, pay attention to the the table names and execution order below:&lt;/p&gt;
&lt;pre&gt;------------------------------------------------------------------------------------------------------------
| Id  | Operation                              | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                       |                   |     1 |    33 |   405K  (1)| 00:52:52 |
|   1 |  SORT AGGREGATE                        |                   |     1 |    33 |            |          |
|*  2 |   TABLE ACCESS STORAGE FULL            | &lt;strong&gt;TEST_OBJECTS_100M&lt;/strong&gt; |  7692K|   242M|   405K  (1)| 00:52:52 |
|*  3 |    TABLE ACCESS STORAGE FULL FIRST ROWS| &lt;strong&gt;TEST_USERS&lt;/strong&gt;        |     1 |    12 |     3   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------

   2 - filter("O"."OWNER"= &lt;strong&gt;(SELECT "U"."USERNAME" FROM "TEST_USERS" "U" WHERE "USER_ID"=13)&lt;/strong&gt;)
   3 - filter("USER_ID"=13)&lt;/pre&gt;
&lt;p&gt;That sure is a weird-looking execution plan, right?&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Fri, 23 Aug 2013 00:03:25 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/08/22/scalar-subqueries-in-oracle-sql-where-clauses-and-a-little-bit-of-exadata-stuff-too/</guid></item><item><title>Gotchas in the Ruby Sequel Gem</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/gotchas-in-the-ruby-sequel-gem</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Wed, 21 Aug 2013 15:39:00 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/gotchas-in-the-ruby-sequel-gem</guid></item><item><title>Post War but not Post Confict</title><link>https://lukesingham.com/post-war/</link><description>&lt;p&gt;&amp;quot;&lt;em&gt;What happened in Sri Lanka was a major Rwanda-like atrocity, in a different scale, where the West didn't care. There was plenty of early warning. This [conflict] has been going on for years and decades. Plenty of things could have been done [to prevent it]. But there was not enough interest&lt;/em&gt;.&amp;quot; -N. Chomsky&lt;/p&gt;
&lt;p&gt;A bloody civil war that gripped the island nation of Sri Lanka for over a quarter of a century came to a horrific end in 2009. The Liberation Tigers of Tamil Eelam (LTTE) were overwhelmingly defeated by the state led Sinhalese majority government forces. The atrocities committed by the state to reach such a conclusion have been vastly underreported. Estimates of civilian deaths in the final five months of the war range between 9,000 and 75,000 (&lt;a href="http://www.bbc.co.uk/news/world-asia-21873551"&gt;BBC, 2013&lt;/a&gt;). One United Nations report puts the number at 40,000; most recently they have reported that up to 70,000 civilians could have died in the final 5 months (&lt;a href="http://www.un.org/News/dh/infocus/Sri_Lanka/POE_Report_Full.pdf"&gt;UN, 2011&lt;/a&gt;, &amp;amp; &lt;a href="http://www.un.org/News/dh/infocus/Sri_Lanka/The_Internal_Review_Panel_report_on_Sri_Lanka.pdf"&gt;UN, 2012&lt;/a&gt;). If this is true, as Frances Harrison of the Guardian states, the magnitude of the estimated civilian deaths is on ‘the scale of Syria but condensed in speed into 5-6 months whereas Syria has been going on for 18 months [to] two years.’ Former Norwegian diplomat Erik Solheim said ‘There were massive war crimes in the last phase which were probably the biggest bloodshed of the twenty first century.’&lt;/p&gt;
&lt;p&gt;A UN panel of experts reported that the government of Sri Lanka has engaged in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Killing of civilians through widespread shelling&lt;/li&gt;
&lt;li&gt;Shelling of hospitals and humanitarian objects&lt;/li&gt;
&lt;li&gt;Denial of humanitarian assistance&lt;/li&gt;
&lt;li&gt;Human rights violations suffered by victims and survivors of the conflict, including both Internally Displaced People (IDP) and suspected LTTE cadres&lt;/li&gt;
&lt;li&gt;Human rights violations outside the conflict zone, including against the media and other critics of the Government&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An insidious and well-planned strategy by the government has meant very little independent reporting, foreign aid bodies being prevented from going into the warzone and to date, the resistance of any post-war independent investigation.&lt;/p&gt;
&lt;p&gt;The host of CHOGM (Commonwealth Heads of Government Meeting) is the same government, the same people who are ultimately responsible. The question of accountability will not go away, particularly for the Tamil people, but also for those courageous journalists now in exile who dared to question the government.&lt;/p&gt;
&lt;p&gt;Sadly, the end of the war has not meant the end of human rights abuses perpetrated by the Sri Lankan government. The once Tamil controlled northern areas are now under military occupation. Many displaced Tamils are unable to return home since the government have seized their property for ‘military purposes’ or for ‘agricultural purposes’. Ongoing disappearances, rape, sexual abuse, land grabbing and beatings are stories that are still coming out of Sri Lanka leading some critics to call the post-war, but not post-conflict scenario a ‘structural genocide’. The Sri Lankan government is unsurprisingly against transparency and judicial independence, as demonstrated by the unconstitutional impeachment and removal of the Chief Justice earlier this year, further showing the abuse of power wielded by the Executive.&lt;/p&gt;
&lt;p&gt;For many progressives, the recent Labor asylum policy announcement borne out of political pragmatism rather than compassion and morality has come as an utter disappointment. However, it raises the challenge of changing the hearts and minds of the electorate. This will occur through learning about the plight that refugees flee. Each country’s refugee has its unique and often complex story. This motion aims to shed light on the Sri Lankan Tamils’ story while also advocating for diplomatic pressure to be placed on the Sri Lankan Government.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What can we do about it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;International pressure has been shown to be an effective tool in pressuring governments to do the right thing. The Sri Lankan government may not care about the Tamils but they do care about the Commonwealth. A boycott of CHOGM would make a good start. Apartheid is a good example of an international sporting boycott that raised awareness and pressured a nation towards corrective action. A boycott of Sri Lankan cricket, I believe, would mount enough pressure both internationally and domestically on the government to accept the calls for an independent investigation into the final stages of the war.&lt;/p&gt;
&lt;p&gt;If you would like to find out there are few links below:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.change.org/en-AU/petitions/prime-minister-reconsider-chogm-2013-in-sri-lanka"&gt;Boycott CHOGM Petition&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Documentaries&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=r3yPzyM0KMU&amp;amp;bpctr=1582841718"&gt;Killing Fields of Sri Lanka&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=EWzlQeVKcUg"&gt;Killing Fields of Sri Lanka follow-up documentary&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><author>Luke Singham</author><pubDate>Wed, 21 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://lukesingham.com/post-war/</guid></item><item><title>How to convert FLAC files from 24/48 bit to 16 bit on Ubuntu Linux</title><link>https://duncanlock.net/blog/2013/08/19/how-to-convert-flac-files-from-24-48-bit-to-16-bit-on-ubuntu-linux/</link><description>&lt;p&gt;I recently needed to convert some &lt;span class="caps"&gt;FLAC&lt;/span&gt; music files from the increasingly common 48 bit encoding, down to 16 bit at 44100 kHz, so that they&amp;#8217;ll play on my Sonos. Here&amp;#8217;s how to do&amp;nbsp;it:&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t already have &lt;code&gt;sox&lt;/code&gt; installed, do this to install&amp;nbsp;it:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;sox&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then run this to do the conversion, in the folder with music&amp;nbsp;in:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;resampled
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;flac &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;.flac&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;sox &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;flac&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; 44100 &lt;span class="nt"&gt;-b&lt;/span&gt; 16 ./resampled/&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;flac&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And that&amp;#8217;s it - it will convert all the &lt;code&gt;.flac&lt;/code&gt; files in that folder to 16 bit at 44100 kHz and put the result into the &lt;code&gt;./resampled&lt;/code&gt; subfolder, preserving the&amp;nbsp;metadata.&lt;/p&gt;</description><author>duncan­lock­.net</author><pubDate>Tue, 20 Aug 2013 08:40:59 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/08/19/how-to-convert-flac-files-from-24-48-bit-to-16-bit-on-ubuntu-linux/</guid></item><item><title>Things You Can't Do from Behind a Computer, pt. 1</title><link>https://josh.works/growth/2013/08/20/things-you-cant-do-from-behind-a-computer-pt-1/</link><description>&lt;h2 id="meet-people"&gt;Meet people.&lt;/h2&gt;

&lt;p&gt;Over the last nine or ten months, I can clearly remember a handful of conversations I had. I initiated each conversation with someone that I wanted to learn from. Most I had some prior relationship with (I.E. I had met them, or I knew someone who knew them). This was all precipitated by a 
&lt;a href="http://www.iwillteachyoutoberich.com/blog/video-how-to-use-natural-networking-to-connect-with-anyone/"&gt;useful and provoking post by Ramit Sethi.
more&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These conversations were not social events, although in each conversation I have enjoyed myself. Each meeting was an opportunity for me to learn more about how these people have done what they have done. I framed them in my mind as “informational interviews”. In other words
, I interviewed them.&lt;/p&gt;

&lt;p&gt;I’ve met with a company-leading salesman, two business consultants employed by one of the “big three” consultancies, a freelancer who runs a very successful production studio, a CEO, a CMO/Marketing Director, a UX designer, another UX designer/web developer, a senior project manager in the banking industry, and a lawyer. In every instance I asked similar questions:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;What challenges have you faced, first in your career, and second on your job, in the last few months.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How has your career developed, and led you to this place.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How did you achieve X (x=prior mentioned achievement, or something on their LinkedIn profile - yeah, I stalk.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;What is the most enjoyable part of your day/job?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Where do you see your self in two or three years?&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ask more questions. I always ask for just fifteen or twenty minutes, and I stick to whatever time limit I’ve set, unless they want to go longer. Half of these conversations have been over the phone, the other half face-to-face. I have derived so much value from these conversations. They have contained plenty of career advice, actionable suggestions, and encouragement.&lt;/p&gt;

&lt;p&gt;Here’s a few gems that have been consistent across all of these “informational interviews”:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Career growth is not sexy - spend time cultivating useful skills, and then spend time figuring out 
how to use those skills in a way that can benefit your company or your career.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Get out and meet people and learn from them.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Learn to solve problems for others, 
but be sure to communicate this in a way that makes sense to them.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Sometimes the best option is to quit a specific job ASAP.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal of these informational interviews is 
not self-promotion or trying to get hired. I think this is the quickest way to ruin a conversation, and, oh yeah - COMPLETELY MISSES THE POINT OF AN INFORMATIONAL INTERVIEW!&lt;/p&gt;

&lt;p&gt;Finally, here is how I benefited, and why you can never possibly achieve the same benefit until you get out there and do the same:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Now, when meeting with 
anyone (stranger at a BBQ, long-lost family members, friends) I try to guide the conversation with two ideas in mind: How can I learn more about them, and what wisdom might they have to share. Believe me - this makes more a much more interesting conversation than weather and football.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I am getting better and better at engaging in mature conversation with competent people. 
This is a skill that can compensate for lack of technical depth, and can open up doors that otherwise would not be open.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I am able to hear very specific bits of advice and wisdom, consider how to apply it to my own life, then immediately ask if my interpretation is correct.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I am getting better at reading subtle indicators of how a conversation is going. (Hint - you should know when to end a conversation, and it should be 
before the other person is thinking about ending the conversation.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I’ve had a number of job offers/offers to connect me with people who are hiring.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I still sometimes get indescribably nervous, and can feel my chest tighten and it feels like my voice must be shaking and I’m about to fall over. Insane, and embarrassing. I’m working on it. This happens sometimes in other situations and is intriguing. The more time I spend “there”, the more I’ll be able to handle it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I have decided very concretely a few career options that I certainly do 
not want to pursue. (Consultant with Deloitte? What was once a dream now sounds like hell. No thanks.) The time savings 
alone of not wasting hours or days (or months, years, and thousands of dollars) are incalculable.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don’t need impressive networking skills to set up a meeting. Here is the FIRST email I sent out, asking to meet up with someone:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hey R, &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is Josh, from [company where I had met R]. N, a friend there, recently gave me your contact information and said I should get in touch with you. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;I would love to take advantage of your offer to get in touch with you by chatting with you for fifteen or twenty minutes about the work that you do with [company], what led you to work with them, and what has led you to stick with them. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;I will, of course, work around your schedule for a time to meet. If it is convenient  I would love to buy you a cup of coffee at a location and time of your choosing. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Are you willing to set up a short meeting?&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Thanks for your time!&lt;/p&gt;

&lt;p&gt;Short, sweet, and it was so scary to send. This was what I sent, redundancies and all. I guess I should get a copy editor. The conversation I had with R was extremely helpful, encouraging, and still impacts me today. That was the first.&lt;/p&gt;

&lt;p&gt;If you’re not sure what you want to do with your life, go start talking to people. I did not even know that User Experience and Design was a thing. I found out about it after some informational interviews and reading some books.&lt;/p&gt;

&lt;p&gt;This is all I have for now, but please - take a step. Write down a list of three people you’d like to learn from. Make it happen. They’ll be flattered. Wouldn’t you be?&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Tue, 20 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/2013/08/20/things-you-cant-do-from-behind-a-computer-pt-1/</guid></item><item><title>NetSuite’s Ridiculous Security Questions</title><link>https://huphtur.nl/netsuites-ridiculous-security-questions/</link><description>&lt;p&gt;&lt;a href="http://netsuite.com/"&gt;Netsuite&lt;/a&gt; is pretty powerful app but the UI and UX are seriously stuck in 1996. Some of their security questions are pretty ridiculous as well…&lt;/p&gt;
&lt;p&gt;&lt;img alt="screenshot of Netsuite security questions." src="https://huphtur.nl/images/nutsweat.jpg" /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What was your childhood nickname?&lt;/li&gt;
&lt;li&gt;What is the name of your favorite childhood friend?&lt;/li&gt;
&lt;li&gt;What street did you live on in third grade?&lt;/li&gt;
&lt;li&gt;What school did you attend for sixth grade?&lt;/li&gt;
&lt;li&gt;What was your childhood phone number including area code? (e.g., 000-000-0000)&lt;/li&gt;
&lt;li&gt;What was the name of your first stuffed animal?&lt;/li&gt;
&lt;li&gt;What was the last name of your fourth grade teacher?&lt;/li&gt;
&lt;li&gt;In what city did you meet your spouse/significant other?&lt;/li&gt;
&lt;li&gt;What is your oldest sibling’s birthday month and year? (e.g., January 1900)&lt;/li&gt;
&lt;li&gt;What is the middle name of your oldest child?&lt;/li&gt;
&lt;li&gt;What is your oldest sibling’s middle name?&lt;/li&gt;
&lt;li&gt;What is your oldest cousin’s first and last name?&lt;/li&gt;
&lt;li&gt;In what city or town did your mother and father meet?&lt;/li&gt;
&lt;li&gt;In what city does your nearest sibling live?&lt;/li&gt;
&lt;li&gt;What is your oldest brother’s birthday month and year? (e.g., January 1900)&lt;/li&gt;
&lt;li&gt;What is your maternal grandmother’s maiden name?&lt;/li&gt;
&lt;li&gt;In what city or town was your first job?&lt;/li&gt;
&lt;li&gt;What is the name of the place your wedding reception was held?&lt;/li&gt;
&lt;li&gt;What is the name of a college you applied to but didn’t attend?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Guess which action I take every single time this screen pops up?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Crap! Looks like Netsuite caught on to me…&lt;/p&gt;
&lt;p&gt;&lt;img alt="screenshot of Netsuite security questions, now with option to dismiss the prompt." src="https://huphtur.nl/images/nutscrape.jpg" /&gt;&lt;/p&gt;</description><author>huphtur</author><pubDate>Tue, 20 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://huphtur.nl/netsuites-ridiculous-security-questions/</guid></item><item><title>Jobs Review: A Movie About a Titan Starring a Tit</title><link>http://www.pajiba.com/film_reviews/jobs-review-a-movie-about-a-titan-starring-a-tit.php</link><description>&lt;p&gt;&amp;#8220;There&amp;#8217;s a great movie to be made about the life of Steve Jobs, but Jobs is not it. The primary challenge in making a film about the co-founder of Apple is finding an actor who can play an overtly cerebral, egomaniacal dick, but a dick for whom you want to root. Besides a striking resemblance to the young Steve Jobs, Ashton Kutcher is a terrible choice: There&amp;#8217;s nothing about his character that makes you want to root for him, and all of his attempts to depict Jobs as a dick are layered in frat-boy douchebaggery.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I haven&amp;#8217;t seen &lt;em&gt;Jobs&lt;/em&gt; yet, but I absolutely love everything about this review, from the title to the closing paragraph. Easily one of the best articles I have read in quite some time.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.pajiba.com/film_reviews/jobs-review-a-movie-about-a-titan-starring-a-tit.php"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 19 Aug 2013 19:02:11 GMT</pubDate><guid isPermaLink="true">http://www.pajiba.com/film_reviews/jobs-review-a-movie-about-a-titan-starring-a-tit.php</guid></item><item><title>An Untenable Goal</title><link>https://zacs.site/blog/an-untenable-goal.html</link><description>&lt;p&gt;Although the first movie adaptation of Christopher Paolini&amp;#8217;s &lt;em&gt;Eragon&lt;/em&gt; could have passed as a mildly successful yet unremarkable summer movie, it falls far short when compared to the original series from which it borrowed little besides character names and basic plotlines, only to discard the latter whenever the &amp;#8220;director&amp;#8221; deemed it convenient. Anyone who has ever seen a book-turned-movie undoubtedly read that without any surprise; the book invariable proves better than the movie, or so that adage goes, and there are countless examples supporting the phrase in just the last year alone.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/an-untenable-goal.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 19 Aug 2013 19:00:06 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/an-untenable-goal.html</guid></item><item><title>ShowMOS: How to get rid of the annoying “The Page has Expired” dialog in My Oracle Support</title><link>https://tanelpoder.com/2013/08/19/c-mos-how-to-get-rid-of-the-annoying-the-page-has-expired-dialog-in-my-oracle-support/</link><description>&lt;p&gt;So, how many of you do hate the dialog below?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tanelpoder.com/wp-content/uploads/2013/08/mos_page_expired.png"&gt;&lt;img alt="MOS page expired dialog" class="alignnone size-full wp-image-2224" height="398" src="https://tanelpoder.com/wp-content/uploads/2013/08/mos_page_expired.png?resize=652%2C398" width="652" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Good news – there is a fix! (or well, a hack around it ;)&lt;/p&gt;
&lt;p&gt;Before showing the fix, you can vote &amp;amp; give your opinion here:&lt;/p&gt;
&lt;noscript&gt;
  &lt;a href="&amp;#8221;http://polldaddy.com/poll/7331592/&amp;#8221;"&gt;Do you love or hate the MOS &amp;#8220;page expired&amp;#8221; dialog?&lt;/a&gt;
&lt;/noscript&gt;
&lt;p&gt;The fix is actually super-simple. The page expiration dialog that grays out the browser screen is just a HTML DIV with ID &lt;strong&gt;DhtmlZOrderManagerLayerContainer&lt;/strong&gt;, overlaying the useful content. If you want it to disappear, you need to delete or hide that DIV in the HTML DOM tree. The javascript code is below (I just updated it so it should work properly on IE too):&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Mon, 19 Aug 2013 15:00:58 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/08/19/c-mos-how-to-get-rid-of-the-annoying-the-page-has-expired-dialog-in-my-oracle-support/</guid></item><item><title>How not to run Midnattsloppet</title><link>https://liza.io/how-not-to-run-midnattsloppet/</link><description>&lt;p&gt;Midnattsloppet is a yearly night-time 10km race in Sweden, taking place in multiple cities including Stockholm. I&amp;rsquo;ve been signed up for months. It was yesterday. Let me tell you about it.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 18 Aug 2013 12:13:15 GMT</pubDate><guid isPermaLink="true">https://liza.io/how-not-to-run-midnattsloppet/</guid></item><item><title>Trying out the Rearth Ringke Fusion Nexus 4 case</title><link>https://liza.io/trying-out-the-rearth-ringke-fusion-nexus-4-case/</link><description>&lt;p&gt;&lt;em&gt;(Note: this post was &lt;strong&gt;going&lt;/strong&gt; to have pictures. Unfortunately my SD card is MIA. I&amp;rsquo;ll add them here when I can find it)&lt;/em&gt;&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 18 Aug 2013 11:43:52 GMT</pubDate><guid isPermaLink="true">https://liza.io/trying-out-the-rearth-ringke-fusion-nexus-4-case/</guid></item><item><title>A Prayer for Heart Surgery</title><link>http://localhost:4999/articles/2013/08/18/a-prayer-for-heart-surgery/</link><description>&lt;img alt="Welcome to Narnia" src="http://farm3.staticflickr.com/2869/9463457435_757d219ae7_b.jpg" /&gt;
&lt;p&gt;Six months ago I prayed that you would tear out the veil of flesh in my heart, bringing my will, hopes, and dreams all under your control. Now, I find that while you have been good to your promise, I have not. I continually fight to maintain control of my precious toys.&lt;/p&gt;
&lt;p&gt;Forgive my willfulness. Continue your work of regeneration, the act of cosmic surgery. It is painful, but the cancer in my heart must be removed.&lt;/p&gt;
&lt;p&gt;So come Lord. Bring the scalpel of your truth to my soul and excise all the blackness, all the necrotic desires of my old self. Illuminate my life, show all the places where my deeds of self-worship have diseased my dreams and twisted the structure of the man you want to make. Scrape, sever, sear, and suture every last bit of me away so that only you remain.&lt;/p&gt;
&lt;p&gt;Give me the willingness to go under the knife &lt;em&gt;every&lt;/em&gt; single morning, and grant me the patience as you put me through spiritual rehab. You are the great Physician, your hand is true and your knowledge of our workings is perfect as our Creator and Father. You knit me together, heart and soul, now unmake me and make me like Christ. I pray in Jesus' precious and powerful name, amen.&lt;/p&gt;
&lt;p&gt;Photo: &lt;a href="http://www.flickr.com/photos/evantravers/9463457435/" title="Welcome to Narnia by evantravers, on Flickr"&gt;Welcome to Narnia&lt;/a&gt;&lt;/p&gt;</description><author>trv.rs</author><pubDate>Sun, 18 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/08/18/a-prayer-for-heart-surgery/</guid></item><item><title>Journaling Prayer</title><link>http://localhost:4999/articles/2013/08/17/prayer-journal/</link><description>&lt;img alt="Let it flow." src="http://farm6.staticflickr.com/5466/9406761163_5a1aa1a898_b.jpg" /&gt;
&lt;p&gt;For some time now, I have added to my morning devotions the exercise of writing a prayer. It was born out of a need for focus, as the act of composition and recording brings together all my faculties towards a single task. I'm writing, I'm thinking, I'm planning. It is so easy for me to become distracted in the morning, when all the day's needs and tasks &lt;a href="http://www.goodreads.com/quotes/257733-it-comes-the-very-moment-you-wake-up-each-morning"&gt;rush at me&lt;/a&gt;. Journaling has been a real blessing.&lt;/p&gt;
&lt;p&gt;It has the benefit of providing a record of my heart's state, a history of the concerns I have lifted to the Lord, a bitter reminder of the pain of sin, the sweet restoration of repentance, and of the glory of seeing the Lord work in my life despite me.&lt;/p&gt;
&lt;p&gt;Up to this point, I have decided not to publish, share, or otherwise show people parts of this journal. I feared that knowing that other people might read it would taint the personal, raw, often painfully honest conversation I have had with the Lord. However, I realized tonight that it might be an encouragement, as I have often been mightily encouraged by &lt;a href="http://thegospelcoalition.org/blogs/scottysmith/"&gt;Scotty Smith's blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With this goal in mind, I'm going to publish a few of them as I go... probably quite a while after I originally wrote them, and with any truly personal details excised. I hope they are some comfort to you, and perhaps will inspire you to try a similar discipline in your relationship with the Lord.&lt;/p&gt;
&lt;p&gt;Photo credits: &lt;a href="http://www.flickr.com/photos/evantravers/9406761163/" title="Let it flow. by evantravers, on Flickr"&gt;Let it flow - by evan travers&lt;/a&gt;&lt;/p&gt;</description><author>trv.rs</author><pubDate>Sat, 17 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/08/17/prayer-journal/</guid></item><item><title>Trying Emacs</title><link>https://srijan.ch/trying-emacs</link><description>Bare bones emacs configuration from when I first started using Emacs</description><author>Srijan Choudhary, all posts</author><pubDate>Fri, 16 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://srijan.ch/trying-emacs</guid></item><item><title>Language Skills</title><link>http://mattgemmell.com/2013/08/15/language-skills</link><description>&lt;p&gt;Whereas Matt appears to perhaps unintentionally relegate his condemnation to those producing poorly-formed written work for public consumption, I would take his advice one step further and apply it to every single written sentence, whether that fragment of prose is something so innocuous as a text message or important as a book. Regardless of the medium, there exists no suitable excuse for degrading the writers&amp;#8217; craft with poor work.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://mattgemmell.com/2013/08/15/language-skills"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 15 Aug 2013 20:09:53 GMT</pubDate><guid isPermaLink="true">http://mattgemmell.com/2013/08/15/language-skills</guid></item><item><title>Call to fund research on an easy and COMPLETE alternative to Gmail, Facebook etc...</title><link>https://stop.zona-m.net/2013/08/call-to-fund-research-on-an-easy-and-complete-alternative-to-gmail-facebook-etc/</link><description>&lt;figure&gt;
  &lt;img alt="Call to fund research on an easy and COMPLETE alternative to Gmail, Facebook etc... /img/I_want_to_break_free.jpg" src="https://stop.zona-m.net//img/I_want_to_break_free.jpg" width="100%" /&gt;
  &lt;figcaption&gt;
&lt;pre&gt;&lt;code&gt;Source: Ray MacLean on Flickr http://www.flickr.com/photos/raymaclean/3548172441/

&amp;lt;/em&amp;gt;&amp;lt;/u&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;UPDATE 2013/09/17: THIS PROJECT NOW HAS A HOME AT &lt;a href="http://per-cloud.com"&gt;per-cloud.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have been using my &lt;strong&gt;own&lt;/strong&gt; email service and self-hosted blogs since 2006/2007. I started explaining why everybody should do the same three years ago, when I proposed &lt;a href="http://freesoftware.zona-m.net/tag/vpes/"&gt;Virtual Personal Email Servers&lt;/a&gt; to overcome &lt;a href="https://stop.zona-m.net/2010/05/the-big-limits-of-todays-email-privacy-barriers-and-robustness/"&gt;the big limits of today&amp;rsquo;s email&lt;/a&gt;. In 2011 I repeated why it is &lt;a href="https://stop.zona-m.net/2011/09/what-is-the-real-value-of-gmail-and-why-its-important-to-think-about-alternatives/"&gt;important to find alternatives to Gmail&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since real support for privacy, control and data ownership should be present in &lt;em&gt;everything&lt;/em&gt; we do online, last January I also pointed out that &lt;a href="https://stop.zona-m.net/2013/01/the-alternatives-to-apple-facebook-c-already-exist-shall-we-package-them/"&gt;alternatives to corporate social networks already exist and only need proper packaging&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now the Snowden/NSA/PRISM affair has finally made evident, to an audience immensely larger than geek circles, that I (with many others of course) was right. &lt;strong&gt;Everybody&lt;/strong&gt;, including non-geeks (no: &lt;em&gt;starting from them&lt;/em&gt;) should have, as soon as possible, at least the possibility to&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Thu, 15 Aug 2013 11:50:09 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/08/call-to-fund-research-on-an-easy-and-complete-alternative-to-gmail-facebook-etc/</guid></item><item><title>Why Mailpile, FreedomBox, Diaspora... aren't enough</title><link>https://stop.zona-m.net/2013/08/why-mailpile-freedombox-diaspora-arent-enough/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Thu, 15 Aug 2013 09:47:38 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/08/why-mailpile-freedombox-diaspora-arent-enough/</guid></item><item><title>On Feedback</title><link>https://josh.works/growth/2013/08/15/on-feedback/</link><description>&lt;p&gt;Most of what makes us who we are is based on some sort of feedback obtained earlier in our life.
By my best estimation, there are two types of feedback:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Explicit feedback&lt;/strong&gt;
, which comes in a little box labeled “this is feedback”, and is hard to miss.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Implicit feedback&lt;/strong&gt;
, which is unlabeled, and but for your attention to it, goes unnoticed.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By my age (mid-20s) most of my life has been guided by explicit feedback. As a baby, I was rewarded for doing things like crawling and disciplined when I tried to lick power outlets; as a young child I was rewarded for doing what I was told to do, and disciplined when I didn’t. As a student, I was rewarded with good grades when I did what I was told (“Learn this material in such a fashion that you can regurgitate it on a test with unique but similarly structured questions.”) or when I synthesized old ideas in old ways (“Make an assertion, defend it using intelligible thought and a passing understanding of the English language. No less than twelve pages.”)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jobs come laden with explicit feedback.&lt;/strong&gt;
 Being given a job usually comes with explicit feedback: “we are happy to bring you on board because of X, Y, and Z, and we think you’re a good fit for the role.” Ditto with raises, promotions, and “employee of the month” awards. More explicit feedback is available in the form of reprimands, and of course, being fired.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationships have explicit feedback.&lt;/strong&gt;
 Someone verbally agreeing to be your friend or (in the case of my wife) agreeing to marry me is providing explicit. When they say “I hate it when [x]” or “I love [Y]”, this is explicit feedback. They are verbalizing their feelings.&lt;/p&gt;

&lt;p&gt;The interesting thing about all this, though, is
&lt;strong&gt;**
this: 
**implicit feedback can lead to so much growth. &lt;/strong&gt;
So much more growth than explicit feedback. If you are sensitive to others around you and have a sincere desire to learn, you can figure out how to kick butt at work, or in a relationship, or a lot of other things. Implicit feedback allows you to 
infer what is going on under the surface.&lt;/p&gt;

&lt;p&gt;There are a lot of areas this applies to. Relationships, jobs, friendships, self-monitoring… I’ve hardly thought of them all.&lt;/p&gt;

&lt;p&gt;If you apply this method to all areas of your life, I think the results could be quite interesting. This is an idea that has been rolling around in my head for a few days, and I want to keep fleshing out. There are some specific situations that this applies to me, and I’ll talk more about that soon.&lt;/p&gt;

&lt;p&gt;Your feedback is welcome! (pah. of course it is.): In what areas do you wish you had more feedback in? In those areas, could you possibly be more attuned to implicit feedback?&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Thu, 15 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/2013/08/15/on-feedback/</guid></item><item><title>Working in the Shed</title><link>http://mattgemmell.com/2013/07/31/working-in-the-shed</link><description>&lt;p&gt;When this article originally made &lt;a href="http://www.marco.org/2013/08/03/working-in-the-shed"&gt;its&lt;/a&gt; &lt;a href="http://shawnblanc.net/2013/08/working-in-the-shed/"&gt;rounds&lt;/a&gt;, I saved it to Instapaper but put off reading the piece. With a title like &amp;#8220;Working in the Shed&amp;#8221;, I assumed Matt Gemmell had gone off the deep end and actually taken his Macbook out into a backyard shed in an extreme attempt at curbing his Twitter addiction. Having finally gotten around to reading his excellent article though, I&amp;#8217;m here to say that &lt;em&gt;Working in the Shed&lt;/em&gt; is much, much more than an anecdote about avoiding distraction. I won&amp;#8217;t go any further though: go read the article yourself.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://mattgemmell.com/2013/07/31/working-in-the-shed"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 14 Aug 2013 21:19:41 GMT</pubDate><guid isPermaLink="true">http://mattgemmell.com/2013/07/31/working-in-the-shed</guid></item><item><title>Contagion</title><link>https://olshansky.info/movie/contagion/</link><description>Olshansky's review of Contagion</description><author>🦉 olshansky 🦁</author><pubDate>Wed, 14 Aug 2013 11:08:07 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/contagion/</guid></item><item><title>Speeding up compilation times for Libreoffice / C++ projects</title><link>https://srijan.ch/speeding-up-compiles</link><description>Faster compile times for libreoffice (and other C/C++ projects)</description><author>Srijan Choudhary, all posts</author><pubDate>Wed, 14 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://srijan.ch/speeding-up-compiles</guid></item><item><title>My First Android Game: Izuna Drop</title><link>/posts/my-first-android-game-izuna-drop/</link><description>As a part of my CS-319 Object-Oriented Software Engineering course, I developed a computer game with Nail Akıncı and Naime Nur Çadırcı, called Izuna Drop. It is a simple space shooter clone. As the design was more imporant in that course, the implementation was not very efficient, it was written on Java, and due to our bugs, it requried approximately 1 GB of memory. If you wonder what that looked like, it is avaialable on GitHub/Izuna.</description><author>Mustafa Akın</author><pubDate>Wed, 14 Aug 2013 00:33:01 GMT</pubDate><guid isPermaLink="true">/posts/my-first-android-game-izuna-drop/</guid></item><item><title>The Rule of Thirds - followup</title><link>/2013/08/13/The-Rule-of-Thirds-followup/</link><description>&lt;p&gt;Several months back I wrote about how we do &lt;a href="http://www.craigkerstiens.com/2013/03/13/planning-and-prioritizing/"&gt;higher level, long term planning within the Heroku Postgres team&lt;/a&gt;. If you haven&amp;rsquo;t read the previous article please start there.&lt;/p&gt;
&lt;p&gt;The exercise or rule of thirds is intended to be approximate prioritization and not a perfect science. Since that time I&amp;rsquo;m familiar with some teams both in and out of Heroku who have attempted this exercise with varying levels of success. We&amp;rsquo;ve now done this process 4 times within the team and after the most recent exercise attempted to take some time to internalize why its worked well, creating some more specifics about the process. Heres an attempt to provide even more clarity:&lt;/p&gt;
&lt;h2 id="gather-data-ahead-of-time"&gt;
&lt;div&gt;
Gather data ahead of time
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Its really common to have a list things to work on, but knowing the impact of those is commonly pure speculation. There may be some people that talk to customers, but even then its a subset of your actual customer base. Going into the exercise as much data you can have ahead of time on impact of features and specific problems helps. In our case we do this by:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Surveying current customers and users&lt;/li&gt;
&lt;li&gt;Surveying attriters&lt;/li&gt;
&lt;li&gt;Engaging with customer facing teams to hear trends&lt;/li&gt;
&lt;li&gt;Input from external parties such as analysts on trends&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="allow-for-casual-discussion"&gt;
&lt;div&gt;
Allow for casual discussion
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;We typically conduct our planning exercise at an offsite, this is a multi-day time of team bonding, planning, hacking. We intentionally schedule our planning excercise towards the end of the offsite. This allows us to have updates/presentations frmo the data we&amp;rsquo;ve gathered and from those that are customer facing. Presentations are meant to be short and direct, discussion can flow casually after. This gets a lot of people on the same page at a smaller level and reduces the problem of too many cooks in the kitchen come time for the actual exercise.&lt;/p&gt;
&lt;h2 id="the-rule-of-thirds"&gt;
&lt;div&gt;
The rule of thirds
&lt;/div&gt;
&lt;/h2&gt;
&lt;h3 id="creating-the-list"&gt;
&lt;div&gt;
Creating the list
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Coming to the exercise itself&amp;hellip; We begin by everyone writing a list of their ideas individually, this is meant to be a list of the features we want to place on the grid. At this point theres no prioritizing of difficulty or impact. In addition each list while individually created does not have to contain items that only pertain to you, its more a comprehensive list of all the things you can think of that may be important to do.&lt;/p&gt;
&lt;h3 id="bucketing-part-1"&gt;
&lt;div&gt;
Bucketing part 1
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Once individual lists are created you can then collectively or designate one or two people to clean it up. We do this in two forms:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Removing duplicate items, which there should be several of.&lt;/li&gt;
&lt;li&gt;Bucketing my a common/theme idea, this simply makes things more digestable&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you&amp;rsquo;re a big group of greater than 7 then it may be advisable to designate two people to do this exercise together. If a smaller group it can be manageable to coordinate collectively.&lt;/p&gt;
&lt;h3 id="bucketing-part-2"&gt;
&lt;div&gt;
Bucketing part 2
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Once you&amp;rsquo;ve removed dupes, identified themes, and removed excess items (depending on your team size you&amp;rsquo;ll find how many feels right - we aim an average of 5-6 per square for a team of 10) its then on to actually putting them on the grid. In the past we&amp;rsquo;ve done this a variety of ways but our most recent process seemed to be quiet efficient. We gave each item 60 seconds, at the end of that minute wherever the item was it was left there. This forced some quick discussion on impact and difficulty but in the end left us at a very good hit rate without taking multiple hours to complete the exercise.&lt;/p&gt;
&lt;h3 id="final-pass"&gt;
&lt;div&gt;
Final pass
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;We intentionally design it so that low effort and high impact is on the top right corner. Finally once everything is on there we allocate names to the tasks, and put boxes around items we&amp;rsquo;re planning to do in the coming months. With boxes make it very clear of what we are doing as well as explicitly things we are not. The initials or names make it clear of how loaded down people are. If your name is on 3 tasks that are high difficulty, then you&amp;rsquo;re likely over allocated.&lt;/p&gt;
&lt;p&gt;At this point things usually fall out pretty quickly and we emerge with some rough roadmap that in retrospect we&amp;rsquo;ve followed pretty accuately.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 13 Aug 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/08/13/The-Rule-of-Thirds-followup/</guid></item><item><title>Oracle 12c: Scalar Subquery Unnesting transformation</title><link>https://tanelpoder.com/2013/08/13/oracle-12c-scalar-subquery-unnesting-transformation/</link><description>&lt;p&gt;I promised to write about Oracle 12c new features quite a while ago (when 12c got officially released), but I was actually on (a long) vacation then and so many cool 12c-related white-papers and blog entries started popping up so I took it easy for a while. I plan to be focusing on the less known low-level internal details anyway as you see from this blog entry.&lt;/p&gt;
&lt;p&gt;As far as I can remember, Oracle has been able to unnest regular subqueries since 8i and merge views since Oracle 8.0.&lt;/p&gt;
&lt;p&gt;First, a little terminology:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update:&lt;/strong&gt; I have changed the terminology section below a bit, thanks to Jason Bucata’s correction. A scalar subquery sure can also be used in the WHERE clause (as you can see in the comments). So, I clarified below that this blog post is comparing the “Scalar Subqueries in SELECT projection list” to “Regular non-scalar Subqueries in WHERE clause”. I also wrote a Part 2 to explain the &lt;a href="https://tanelpoder.com/2013/08/22/scalar-subqueries-in-oracle-sql-where-clauses-and-a-little-bit-of-exadata-stuff-too/" target="_blank" title="Scalar Subqueries in Oracle SQL WHERE clauses (and a little bit of Exadata stuff too)"&gt;scalar subqueries in WHERE clause&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A “regular” subquery in Oracle terminology is a query block which doesn’t return rows back to the select projection list, but is only used in the WHERE clause for determining whether to return any rows from the parent query block, based on your specified conditions, like &lt;code&gt;WHERE v IN (SELECT x FROM q)&lt;/code&gt; or &lt;code&gt;WHERE EXISTS (SELECT x FROM inner WHERE inner.v=outer.v)&lt;/code&gt; etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;The subquery can return zero to many rows for the parent query block for evaluation.
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="2"&gt;
&lt;li&gt;A &lt;em&gt;scalar&lt;/em&gt; subquery is a subquery which can only return a single value (single row, single column) back to the parent block. It can be used both in the WHERE clause of the parent query or right in the SELECT list of the parent query instead of some column name. (In this post I am discussing only the case of a scalar subquery in SELECT clause). Whatever the scalar subquery returns, will be put in the “fake” column in the query result-set. If it returns more than one row, you will get the &lt;code&gt;ORA-01427: single-row subquery returns more than one row&lt;/code&gt; error, if it returns no rows for the given lookup, the result will be NULL. An example is below.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I crafted a very simple SQL with a scalar subquery for demo purposes (the tables are just copies of &lt;em&gt;all_users&lt;/em&gt; and &lt;em&gt;all_objects&lt;/em&gt; views):&lt;/p&gt;
&lt;pre&gt;SELECT
    u.username
  , &lt;strong&gt;(SELECT MAX(created) FROM test_objects o WHERE o.owner = u.username)&lt;/strong&gt;
FROM
    test_users u
WHERE
    username LIKE 'S%'&lt;/pre&gt;
&lt;p&gt;Now, &lt;em&gt;why&lt;/em&gt; would you want to write the query this way is a different story. I think it’s actually pretty rare when you &lt;em&gt;need&lt;/em&gt; to use a scalar subquery, you usually can get away with an outer join. I have used scalar subqueries for populating some return values in cases where adding a yet another (outer) join to the query would complicate the query too much for my brain (as there are some limitations how you can arrange outer joins). I have only done this when I know that the query result-set (on which the scalar subquery is executed once for every row returned, unless the subquery caching kicks in!) will only return a handful of rows and the extra effort of running the scalar subquery once for each row is acceptable.&lt;/p&gt;
&lt;p&gt;Nevertheless, non-experienced SQL developers (who come from the procedural coding world) write lots of scalar subqueries, even up to the point of having every single column populated by a scalar subquery! And this can be a serious problem as this breaks the query into separate non-mergeable chunks, which means that the CBO isn’t as free to move things around – resulting in suboptimal plans.&lt;/p&gt;
&lt;p&gt;So, starting from Oracle 12c (and maybe even 11.2.0.4?), the CBO transformation engine can unnest some types of the scalar subqueries and convert these to outer joins internally.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Tue, 13 Aug 2013 17:55:27 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/08/13/oracle-12c-scalar-subquery-unnesting-transformation/</guid></item><item><title>C# Vector Space Implementation</title><link>https://boyter.org/2013/08/c-vector-space-implementation/</link><description>&lt;p&gt;Since I am writing lots of Vector Space implementations in Go, Python etc… I thought I would add another one in C#. This one is a little more verbose then either the Python or Go implementations. The verbosity is mostly due to not using any of the nice C# LINQ functionality which would really reduce the size.&lt;/p&gt;
&lt;p&gt;In any case here it is in case you are looking for a simple implementation of this useful class.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 13 Aug 2013 08:59:09 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/08/c-vector-space-implementation/</guid></item><item><title>Jim Dalrymple on Apple's rumored September 10 iPhone event</title><link>http://www.loopinsight.com/2013/08/12/apples-rumored-september-10-iphone-event/</link><description>&lt;p&gt;Well, there goes &lt;a href="https://zacs.site/blog/the-september-iphone-launch.html"&gt;that theory&lt;/a&gt;.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.loopinsight.com/2013/08/12/apples-rumored-september-10-iphone-event/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 13 Aug 2013 01:20:21 GMT</pubDate><guid isPermaLink="true">http://www.loopinsight.com/2013/08/12/apples-rumored-september-10-iphone-event/</guid></item><item><title>The new Instapaper web beta</title><link>http://blog.instapaper.com/post/57817543037</link><description>&lt;p&gt;With the beta release of Instapaper&amp;#8217;s newly overhauled and undeniably much more attractive website, we are finally beginning to see some of the great new features Marco sold Instapaper to Betaworks for. As I said in &lt;a href="https://zacs.site/blog/what-happened-to-instapaper.html"&gt;&lt;em&gt;What Happened to Instapaper?&lt;/em&gt;&lt;/a&gt;, I&amp;#8217;m very excited to see where the company takes Instapaper in the near future. A new website was a wonderful place to begin.&lt;/p&gt;

&lt;p&gt;And for those thinking Betaworks has sat on their hands for the last four months, Marco Arment dispels that notion in &lt;a href="http://www.marco.org/2013/08/09/instapaper-design-beta"&gt;his blog post responding to the announcement&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Betaworks has only owned Instapaper for a few months so far, and they&amp;#8217;ve already hired a staff, moved the entire infrastructure to AWS, improved support, rewritten much of the back end, and overhauled the website design.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a very promising start. Next up: a new version of Instapaper for iOS, likely to be released around the same time iOS 7 hits the market.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://blog.instapaper.com/post/57817543037"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 13 Aug 2013 01:02:55 GMT</pubDate><guid isPermaLink="true">http://blog.instapaper.com/post/57817543037</guid></item><item><title>Are You a Real Writer?</title><link>http://terribleminds.com/ramble/2013/08/06/are-you-a-real-writer-a-handy-and-hasty-flowchart/</link><description>&lt;p&gt;Can&amp;#8217;t say I love the site, but his flow chart is excellent. That&amp;#8217;s all there is to it, folks; it&amp;#8217;s not too complicated.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://terribleminds.com/ramble/2013/08/06/are-you-a-real-writer-a-handy-and-hasty-flowchart/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 13 Aug 2013 00:58:17 GMT</pubDate><guid isPermaLink="true">http://terribleminds.com/ramble/2013/08/06/are-you-a-real-writer-a-handy-and-hasty-flowchart/</guid></item><item><title>GoLang Vector Space Implementation</title><link>https://boyter.org/2013/08/golang-vector-space-implementation/</link><description>&lt;p&gt;UPDATE – This is now actually available as a real Golang import with tests. Get it at &lt;a href="https://github.com/boyter/golangvectorspace"&gt;https://github.com/boyter/golangvectorspace&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have mentioned this before somewhere but one of the first things I usually attempt to implement in any programming language I want to play with is a vector space. Its my own personal FizzBuzz implementation. It usually covers everything I need to know in a language (imports, functions, string manipulation, math functions, iteration, maps etc…) so I consider it a good thing to get started with.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Mon, 12 Aug 2013 09:51:30 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/08/golang-vector-space-implementation/</guid></item><item><title>20 Things 20-Year-Olds Don't Get</title><link>https://josh.works/growth/2013/08/12/20-things-20-year-olds-dont-get/</link><description>&lt;p&gt;Jason Nazar recently wrote an article titled 
&lt;a href="http://www.huffingtonpost.com/2013/07/29/20-year-olds-dont-get-anything_n_3670651.html"&gt;20 Things 20-Year-Olds Don’t Get.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please read it, but with a big grain of salt.&lt;/p&gt;

&lt;p&gt;Nazar opens with the statement “I made a lot of mistakes along the way, and I see this generation making their own.”&lt;/p&gt;

&lt;p&gt;This seems to be an aspirational list, rather than scolding, but it sure does feel like scolding.&lt;/p&gt;

&lt;p&gt;I thought I’d give my own feedback, as a member of the “20-somthings club” for four years.&lt;/p&gt;

&lt;p&gt;In Nazar’s defense, he has two challenging constraints - brevity and clicks. He covers a lot of ground in just a few words, and his article is posted to generate clicks, not necessarily to deliver nuanced perspective to the reader.&lt;/p&gt;

&lt;p&gt;Here we go. 
Italicized words are mine:
more&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Time is Not a Limitless Commodity – I so rarely find young professionals that have a 
&lt;a href="http://premium.docstoc.com/c/46/ch/236/l/1163/Urgency-and-Momentum"&gt;heightened sense of urgency&lt;/a&gt; to get to the next level. In our 20s we think we have all the time in the world to A) figure it out and B) get what we want. Time is the only treasure we start off with in abundance, and can never get back. Make the most of the opportunities you have today, because there will be a time when you have no more of it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Partially right - time is the most important resource, and can be easily wasted or squandered on dumb things, like obsessing over achieving “the next level” in your career. No one has said on their death bed “I wish I spent more time at work.” Time is valuable, and must not be wasted, but all your time should not be spent on your career; you’ll be worse at your job, bad at relationships, and have nothing to remember about your life but disliking your commute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. You’re Talented, But Talent is Overrated&lt;/strong&gt;
 - Congratulations, you may be the most capable, creative, knowledgeable &amp;amp; multi-tasking generation yet. As my father says, “I’ll Give You a Sh-t Medal.” Unrefined raw materials (no matter how valuable) are simply wasted potential. There’s no prize for talent, just results. Even the most seemingly gifted folks methodically and painfully worked their way to success. (Tip: read “
&lt;a href="http://www.amazon.com/Talent-Overrated-World-Class-Performers-EverybodyElse/dp/1591842948"&gt;Talent is Overrated&lt;/a&gt;”)&lt;/p&gt;

&lt;p&gt;Nazar is 100% right - but for most people, they’ve grown up in a school system that relentlessly rewards existence, not results. It is not fulfilling to be rewarded for existing - people are fulfilled when doing meaningful work, and a lot of young folks have been kneecapped by being told (usually be an older generation) that “they have what it takes” and “everyone is unique”. This disconnect from producing hurts everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. We’re More Productive in the Morning&lt;/strong&gt;
 – During my first 2 years at Docstoc (while I was still in my 20’s) I prided myself on staying at the office until 3am on a regular basis. I thought I got so much work done in those hours long after everyone else was gone. But in retrospect I got more menial, task-based items done, not the more complicated strategic planning, phone calls or meetings that needed to happen during business hours. Now I stress an office-wide early start time because I know, for the most part, 
&lt;a href="http://www.businessinsider.com/successful-early-risers-2012-1?op=1"&gt;we’re more productive&lt;/a&gt; as a team in those early hours of the day.&lt;/p&gt;

&lt;p&gt;Again, 100% right, but he belies his priorities - what’s the problem with working until 3am? It’s not just a 
&lt;strong&gt;productivity&lt;/strong&gt;
 issue, it is a 
&lt;strong&gt;priority&lt;/strong&gt;
 issue. I love mornings, and usually get up before 6am to do the “complicated strategic planning” things I need to do for my life. I once worked 90 hours a week for a business - not only did my work quality suffer, I abdicated all sense of priority in my life to my employer. I will never do this again - I have a wife, and a life.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Social Media is Not a Career&lt;/strong&gt;
 – These job titles won’t exist in 5 years. Social media is simply a function of marketing; it helps support branding, ROI or both. Social media is a means to get more awareness, more users or more revenue. It’s not an end in itself. I’d strongly caution against pegging your career trajectory solely to a 
&lt;a href="http://memeburn.com/2013/05/21-ridiculous-social-media-job-titles/"&gt;social media job title&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;20-somethings are not the only ones guilty of this. Also, since we were just talking about delivering results (and therefore value) if you can deliver value to a business via social media, get to it. I’ve come across dozens of small businesses that have no Facebook page, or any other web presence. You’ll never get paid to just tweet for a company, but if you can help them enter the arena in which most of their potential customers do business, you’re growing their bottom line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Pick Up the Phone&lt;/strong&gt;
 – Stop hiding behind your computer. Business gets done on the phone and in person. It should be your first instinct, not last, to talk to a real person and source business opportunities. And when the Internet goes down… stop looking so befuddled and don’t ask to go home. Don’t be a pansy, pick up the phone.&lt;/p&gt;

&lt;p&gt;I have nothing to add to this. He hits it on the head. You can connect with people over the phone in a way you cannot in an email. Since business is about relationships, you should figure out how to build relationships. Relationships can be built over the phone. They are hard to build over email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Be the First In &amp;amp; Last to Leave&lt;/strong&gt;
 ­– I give this advice to everyone starting a new job or still in the formative stages of their professional career. You have more ground to make up than everyone else around you, and you do have something to prove. There’s only one sure-fire way to get ahead, and that’s to work harder than all of your peers.&lt;/p&gt;

&lt;p&gt;This is wrong, and it is t
&lt;strong&gt;he most damaging item on the list&lt;/strong&gt;
. Again, we have been talking about adding 
&lt;strong&gt;value&lt;/strong&gt;
 to a business. If you can add 3 units of value/hour to a company for 10 hours a day, or add 6 units of value/hour for 8 hours a day, which is better for your company? That is 30 units of value vs. 48 units of value. Excuse my arbitrary measuring, but the emphasis is not”work longer”, it’s work smarter. Obviously, don’t slack off, but don’t hand your soul over to your business. Work hard at meaningful work. Simple as that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Don’t Wait to Be Told What to Do&lt;/strong&gt;
 – You can’t have a sense of entitlement without a sense of responsibility. You’ll never get ahead by waiting for someone to tell you what to do. Saying “nobody asked me to do this” is a guaranteed recipe for failure. Err on the side of doing too much, not too little. (Watch: 
&lt;a href="http://www.youtube.com/watch?v=Sz0o9clVQu8"&gt;Millennials in the Workplace Training Video&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;You should never have a sense of entitlement, even if you have a sense of responsibility. Yes, do too much rather than too little. If you watch that video and find it anything but condescending and not that funny, you can probably stop reading now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Take Responsibility for Your Mistakes&lt;/strong&gt;
 – You should be 
&lt;a href="http://premium.docstoc.com/c/38/ch/191/l/1015/Repeat-Own-then-Make-New-Mistakes"&gt;making lots of mistakes&lt;/a&gt;when you’re early on in your career. But you shouldn’t be defensive about errors in judgment or execution. Stop trying to justify your F-ups. You’re only going to grow by embracing the lessons learned from your mistakes, and committing to learn from those experiences.&lt;/p&gt;

&lt;p&gt;Agreed. This holds true for all ages, and 
&lt;strong&gt;not taking responsibility for mistakes&lt;/strong&gt;
 afflicts everyone, regardless of age. Be someone who takes responsibility, not someone who avoids it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. You Should Be Getting Your Butt Kicked&lt;/strong&gt;
 – Meryl Streep in “The Devil Wears Prada” would be the most valuable boss you could possibly have. This is the most impressionable, malleable and formative stage of your professional career. Working for someone that demands excellence and 
&lt;a href="http://premium.docstoc.com/c/38/ch/191/l/1019/Kaizen---Improve-Everyday"&gt;pushes your limits every day&lt;/a&gt; will build the most solid foundation for your ongoing professional success.&lt;/p&gt;

&lt;p&gt;He’s wrong. You should be growing, but Streep would be a terrible boss. If her direct reports (terrible word) manage her staff the same way she manages them, it’ll turn the entire company into picking on everyone one rung down the ladder. That’s toxic to the success of a company. If Nazar is down with this management style, I feel sorry for his staff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. A New Job a Year Isn’t a Good Thing&lt;/strong&gt;
 ­­– 1-year stints don’t tell me that you’re so talented that you keep outgrowing your company. It tells me that you don’t have the discipline to see your own learning curve through to completion. It takes about 2-3 years to master any new critical skill, give yourself at least that much time before you jump ship. Otherwise your resume reads as a series of 
&lt;a href="http://premium.docstoc.com/c/23/ch/80/l/328/Red-Flags-to-Look-Out-For"&gt;red flags on why not to be hired&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I am confident that Nazar hires the best employees he can, and I bet even he has broken this implicit rule when hiring. Since a business is (or should be) interested in delivering value, if a candidate has moved around every year or so, but delivers value and understands the implications of that rapid movement, there shouldn’t be any concerns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11. People Matter More Than Perks&lt;/strong&gt;
 – It’s so trendy to pick the company that offers the most flex time, unlimited meals, company massages, game rooms and team outings. Those should all matter, but not as much as the character of your founders and managers. Great leaders will mentor you and will be a loyal source of employment long after you’ve left. 
&lt;a href="http://scottberkun.com/2013/pick-your-own-boss/"&gt;Make a conscious bet&lt;/a&gt; on the folks you’re going to work for and your commitment to them will pay off much more than those fluffy perks.&lt;/p&gt;

&lt;p&gt;Good people will take care of their staff, and provide appropriate “fluffy perks” when it matters to staff. Staff deliver value, happy staff deliver more value. Take care of your staff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12. Map Effort to Your Professional Gain&lt;/strong&gt;
 – You’re going to be asked to do things you don’t like to do. Keep your eye on the prize. Connect what you’re doing today, with where you want to be tomorrow. That should be all the incentive you need. If you can’t map your future success to your current responsibilities, then it’s time to 
&lt;a href="http://lifehacker.com/5948908/how-to-know-when-its-time-to-quit"&gt;find a new opportunity&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Yes. But don’t be a pushover. Don’t do 90 hour weeks. Work harder than your coworkers, and deliver more value, but don’t be a pushover. Life is too short to spend three years sucking up s&lt;strong&gt;t work for a jerk of a manager - and doing this will change who you are. You will 
**become&lt;/strong&gt;
 one who does that which you do not want to do. Draw the line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;13. Speak Up, Not Out&lt;/strong&gt;
 – We’re raising a generation of sh-t talkers. In your workplace this is a cancer. If you have issues with management, culture or your role &amp;amp; responsibilities, SPEAK UP. Don’t take those complaints and trash-talk the company or co-workers on lunch breaks and anonymous chat boards. If you can 
&lt;a href="http://premium.docstoc.com/video/102271314/How-to-Address-Problems-in-the-Workplace"&gt;effectively communicate what needs to be improved&lt;/a&gt;, you have the ability to shape your surroundings and professional destiny.&lt;/p&gt;

&lt;p&gt;Conflict is inherent in relationships, and conflict management/resolution/however you want to label it is possibly the most valuable skill you can have. As you learn to get stuff done and deliver value, you will inevitably run the risk of stepping on toes. You can either complain about the stick-in-the-mud that can’t handle your amazing money-making ideas, or you can figure out how to work within the framework of your business to make change happen. There are people that do this all day for the government, so if you work in the private sector, it’s totally possible. If it’s still not possible to make change happen, leave your job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14. You HAVE to Build Your Technical Chops&lt;/strong&gt;
 – Adding “Proficient in Microsoft Office” at the bottom of your resume under Skills, is not going to cut it anymore. I immediately give preference to candidates who are ninjas in: Photoshop, HTML/CSS, iOS, WordPress, Adwords, MySQL, Balsamiq, advanced Excel, Final Cut Pro – regardless of their job position. If you plan to stay gainfully employed, you better complement that humanities degree with some applicable 
&lt;a href="http://premium.docstoc.com/article/154782656/Online-Courses-for-Small-Businesses"&gt;technical chops&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;True. Learn to 
&lt;a href="http://www.codecademy.com/"&gt;code&lt;/a&gt;, 
&lt;a href="https://www.khanacademy.org/"&gt;design&lt;/a&gt;, or 
&lt;a href="https://www.coursera.org/"&gt;whatever&lt;/a&gt;.Learn things. If you don’t have time to learn things, make time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;15. Both the Size and Quality of Your Network Matter&lt;/strong&gt;
 – It’s who you know more than what you know, that gets you ahead in business. Knowing a small group of folks very well, or a huge smattering of contacts superficially, just won’t cut it. Meet and stay connected to lots of folks, and invest your time developing as many of those relationships as possible. (TIP: Here is my 
&lt;a href="http://www.jasonnazar.com/2010/06/29/networking-tips-for-entrepreneurs/"&gt;Networking Advice&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;It’s not just “networking”, but it’s “relationship building”. Unless you know everything there is to know about anything you’d like to know about, you stand to benefit from building relationships. As you build these relationships, deliver value. Sometimes (especially if you’re young) the experience and knowledge ratio is so one-sided the only thing you can deliver is a heart-felt “thank you for your wisdom, and your time.” This counts as delivering value, so get out there and meet people. Learn from them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;16. You Need At Least 3 Professional Mentors&lt;/strong&gt;
 – The most guaranteed path to success is to emulate those who’ve achieved what you seek. You should always have at least 3 people you call mentors who are where you want to be. Their free guidance and counsel will be the most priceless gift you can receive. (TIP: “
&lt;a href="http://blogs.wsj.com/accelerators/2013/05/24/jason-nazar-the-secret-to-getting-and-keeping-mentors/"&gt;The Secret to Finding and Keeping Mentors&lt;/a&gt;”)&lt;/p&gt;

&lt;p&gt;If you don’t yet have mentors, just go meet professionals and experts. Even a mortician (if they are really good at what they do) has a lot to tell you about building a business, empathizing with customers, and mastering a craft. If you can’t see past the dead people, you probably are not ready for a professional mentor anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;17. Pick an Idol &amp;amp; Act “As If”&lt;/strong&gt;
 – You may not know what to do, but your professional idol does. I often coach my employees to pick the businessperson they most admire, and act “as if.” If you were (fill in the blank) how would he or she carry themselves, make decisions, organize his/her day, accomplish goals? You’ve got to fake it until you make it, so it’s better to fake it as the most accomplished person you could imagine. (Shout out to 
&lt;a href="https://twitter.com/tonyrobbins"&gt;Tony Robbins&lt;/a&gt; for the tip)&lt;/p&gt;

&lt;p&gt;Again, yes. 
&lt;a href="/blog/2013/07/25/my-good-friends-who-dont-know-me"&gt;Have mentors, friends, and role models&lt;/a&gt;. It’s OK if they are imaginary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;18. Read More Books, Fewer Tweets/Texts&lt;/strong&gt;
 – Your generation consumes information in headlines and 140 characters: all breadth and no depth. Creativity, thoughtfulness and thinking skills are freed when you’re forced to read a full book cover to cover. All the keys to your future success, lay in the past experience of others. Make sure to 
&lt;a href="http://www.goodreads.com/"&gt;read a book a month&lt;/a&gt; (fiction or non-fiction) and your career will blossom.&lt;/p&gt;

&lt;p&gt;He speaks truth. If you like what you read here, 
&lt;a href="/read-along-with-josh"&gt;you may enjoy these books.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;19. Spend 25% Less Than You Make&lt;/strong&gt;
 – When your material needs meet or exceed your income, you’re sabotaging your ability to really make it big. Don’t shackle yourself with golden handcuffs (a fancy car or an expensive apartment). Be willing and able to take 20% less in the short term, if it could mean 200% more earning potential. You’re nothing more than penny wise and pound-foolish if you pass up an amazing new career opportunity to keep an extra little bit of income. No matter how much money you make, spend 25% less to support your life. It’s a guaranteed formula to be less stressed and to always have the flexibility to pursue your dreams.&lt;/p&gt;

&lt;p&gt;The last four points are worth this entire article. Even the dumb stuff is far outweighed by these items. Please apply these to your life, starting today. Read 
&lt;a href="http://www.amazon.com/Will-Teach-You-To-Rich/dp/0761147489"&gt;I Will Teach You To Be Rich&lt;/a&gt; to get started.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;20. Your Reputation is Priceless, Don’t Damage It&lt;/strong&gt;
 – Over time, your reputation is the most valuable currency you have in business. It’s the invisible key that either opens or closes doors of professional opportunity. Especially in an age where everything is forever recorded and accessible, 
&lt;a href="http://www.brainyquote.com/quotes/quotes/w/warrenbuff108887.html"&gt;your reputation has to be guarded&lt;/a&gt; like the most sacred treasure. It’s the one item that, once lost, you can never get back.&lt;/p&gt;

&lt;p&gt;Rather than treating your reputation as a finite, delicate item like fine china, get out there and make honorable choices with courage. If you always try to do the right thing, care for others (especially if they are “below” you), and focus on serving customers and staff, you will not be damaging your reputation, you’ll be improving it. If you are one to cheat, steal, and beg, maybe you should keep that on the DL, but it’s not exactly a sustainable lifestyle.&lt;/p&gt;

&lt;p&gt;There was useful stuff in this article, but I wanted to add my two cents. Thanks for reading, and let me know if you agree or disagree. I’m open to it all!&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Mon, 12 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/2013/08/12/20-things-20-year-olds-dont-get/</guid></item><item><title>Unfair Platform Advantage</title><link>https://zacs.site/blog/unfair-platform-advantage.html</link><description>&lt;p&gt;I devoted &lt;a href="https://zacs.site/blog/the-september-iphone-launch.html"&gt;my last post&lt;/a&gt; to discussing Ina Fried&amp;#8217;s prediction of a September 10th iPhone launch date, forgoing my thoughts on the article itself and its rise to popularity over the last twenty-four hours. From my opening paragraph:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/unfair-platform-advantage.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 11 Aug 2013 22:19:43 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/unfair-platform-advantage.html</guid></item><item><title>The September iPhone Launch</title><link>https://zacs.site/blog/the-september-iphone-launch.html</link><description>&lt;p&gt;Earlier this morning, as I scrolled through my RSS reader, I came across a number of articles mentioning an unassuming and altogether unremarkable &lt;a href="http://allthingsd.com/20130810/circle-sept-10-on-your-calendar-for-apples-big-iphone-event/"&gt;AllThingsD piece by Ina Fried&lt;/a&gt;. Despite its lukewarm tone, the prediction of a September iPhone launch event ran the gamut of popular tech sites and garnered a great deal of attention even though it said nothing surprising or even particularly interesting at this point. Setting that aside for a future article though, I would like to focus on the rumor itself.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-september-iphone-launch.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 11 Aug 2013 22:19:12 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-september-iphone-launch.html</guid></item><item><title>Why E-Mail made in Germany is a farce</title><link>https://bastian.rieck.me/blog/2013/e-mail_made_in_germany/</link><description>&lt;p&gt;Security-wise, the last few weeks have been interesting, to put it mildly. After much idle
assertions about how &lt;em&gt;our&lt;/em&gt; intelligence services have &lt;em&gt;never&lt;/em&gt; acted outside the law (pinky promise,
I swear!), finally something good has happened: GMX, T-Online, and WEB.DE introduced &lt;a href="http://www.e-mail-made-in-germany.de"&gt;&lt;em&gt;E-Mail made in
Germany&lt;/em&gt;&lt;/a&gt;, a new initiative with &amp;ldquo;high standards for security
and privacy&amp;rdquo;. With &lt;em&gt;these&lt;/em&gt; players on board, we can finally show those bad Americans how E-Mail is
done! German efficiency and all that stuff&amp;hellip;&lt;/p&gt;
&lt;p&gt;Unfortunately, this initiative is a farce. These companies really try to hoodwink their prospective
customers. Big time. Let me explain why this sort of advertising makes me angry.&lt;/p&gt;
&lt;h1 id="what-is-wrong-with-the-advertisement"&gt;What is wrong with the advertisement?&lt;/h1&gt;
&lt;p&gt;First of all, they advertise the fact that their servers understand SSL encryption. Well, it&amp;rsquo;s 2013,
so &lt;em&gt;any&lt;/em&gt; mail server that comes even close to deserving that name offers SSL encryption. If the
server of &lt;em&gt;your&lt;/em&gt; provider doesn&amp;rsquo;t, you should really think hard about doing any further business
with them. Besides, it seems like what they are really talking about is &lt;em&gt;STARTTLS&lt;/em&gt;, meaning that
your insecure connection can now be encrypted to a secure one. Great–what year was it again?
2002?&lt;/p&gt;
&lt;p&gt;Second, they talk about how the transmission between servers is encrypted, but only if you use
&lt;em&gt;their&lt;/em&gt; servers. Their advertisement even has the gall to belittle other e-mail providers. Money
quote (loosely translated): &amp;ldquo;Sending e-mails to other providers such as Google, Yahoo, or Microsoft,
is of course still possible. However, for these providers, neither secure transmission nor
(exclusive) data processing in Germany can be guaranteed&amp;rdquo;. To me, this sounds slightly threatening:
&amp;ldquo;What a nice INBOX. It would be a terrible shame if something were to happen to it&amp;rdquo;. Cue the images
of the standard German villains from movies (you &lt;em&gt;know&lt;/em&gt; which ones I am thinking about).&lt;/p&gt;
&lt;p&gt;Third, data processing is apparently exclusively done in Germany, using &amp;ldquo;secure data centres&amp;rdquo; and
the &amp;ldquo;high standards of German privacy laws&amp;rdquo;. I couldn&amp;rsquo;t care less. While our courts have already
established some sort of &amp;ldquo;basic human right to privacy&amp;rdquo;, our security agencies still don&amp;rsquo;t give a
fig. Let me just drop the keyword &lt;em&gt;Bundestrojaner&lt;/em&gt; (literally: &lt;em&gt;federal trojan&lt;/em&gt;) here.&lt;/p&gt;
&lt;p&gt;Fourth, and last, they try to use &lt;em&gt;E-Mail made in Germany&lt;/em&gt; to pave the way for &lt;em&gt;De-Mail&lt;/em&gt;. &lt;em&gt;De-Mail&lt;/em&gt;
is the idea of offering a new e-mail service to send legally-binding e-mails. While this may sound
like a good idea, the actual implementation suffers from essentially the same.&lt;/p&gt;
&lt;h1 id="what-is-wrong-with-e-mail-made-in-germany-and-de-mail"&gt;What is wrong with &lt;em&gt;E-Mail made in Germany&lt;/em&gt; and &lt;em&gt;De-Mail&lt;/em&gt;?&lt;/h1&gt;
&lt;p&gt;In short, it does not offer end-to-end encryption. This means that while the connection from your
device to the server is encrypted, the data is still stored in plain text. Even if data is encrypted
when being transmitted between different providers, it &lt;em&gt;still&lt;/em&gt; is stored in plain text &lt;em&gt;somewhere&lt;/em&gt;.
Let me reiterate: The data is stored in plain text. In plain text. Somewhere.&lt;/p&gt;
&lt;p&gt;This implies that any malevolent individual or organization simply needs to obtain access to one of
the servers to obtain all sorts of communications data. The fact that there is an encrypted
connection between your device and the server simply ensures that the customers of the Starbucks you
are sipping your latte in cannot easily see what you are sending. Other than that, the encryption is
&lt;em&gt;worthless&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For &lt;em&gt;De-Mail&lt;/em&gt;, it gets even worse: Since your e-mail is legally binding, you might have a hard time
to prove that an attacker modified an e-mail or sent it without your involvement.&lt;/p&gt;
&lt;h1 id="isnt-this-all-very-academical"&gt;Isn&amp;rsquo;t this all very academical?&lt;/h1&gt;
&lt;p&gt;No. E-mails have been forged and read by unauthorized persons. Disgruntled ex-employees, employees
with voyeuristic tendencies, and so on. I don&amp;rsquo;t say that this is going to happen to you with a very
high probability. But it still &lt;em&gt;might&lt;/em&gt;. The possibility is not that far-fetched.&lt;/p&gt;
&lt;h1 id="are-there-any-solutions"&gt;Are there any solutions?&lt;/h1&gt;
&lt;p&gt;Plenty! S/MIME and GPG (PGP) are two standards that can be used to obtain end-to-end encryption between
two parties. Both systems could also be made legally binding, if any government desired to do so. It
really is just a matter of identifying a person (which is what a government should be good at) and
&lt;em&gt;certifying&lt;/em&gt; it. I mean this both figuratively and literally. For S/MIME, each participant requires a
certificate. For GPG, each participant creates a &lt;em&gt;private key&lt;/em&gt; that is signed off by other
participants to ensure a valid identity.&lt;/p&gt;
&lt;p&gt;Both standards would be viable alternatives, yet almost no one uses them. Neither do governments
endorse them to make e-mail legally binding. To make a wild guess, I think this is related to the
fact that most people &lt;em&gt;still&lt;/em&gt; think that any form of encrypted communication necessarily implies
that both participants are criminals. If you are one of these people, convincing you is beyond the
scope of this rant and almost certainly beyond the scope of my argumentative powers.&lt;/p&gt;
&lt;h1 id="do-you-have-some-sources"&gt;Do you have some sources?&lt;/h1&gt;
&lt;p&gt;Upon re-reading this article, I see that I made some outlandish statements here, regarding the
possibilities of privacy violations for ordinary citizens. Here&amp;rsquo;s a list of cases where e-mail
privacy has been violated:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://lavabit.com"&gt;Lavabit ceases operations.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.taz.de/Staatstrojaner-gegen-Drogendealer/!79701"&gt;How the German police used their trojan horse to identify petty thieves and small-time drug
dealers&lt;/a&gt; (article is in German). This
one is not so much about email privacy violations but more about what German police considers to be
&lt;em&gt;adequate&lt;/em&gt; surveillance.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rawstory.com/rs/2013/05/21/nypd-detective-allegedly-hacked-40-email-accounts-to-spy-on-ex-girlfriend"&gt;How an NYPD detective allegedly hacked 40 e-mail accounts to spy on his
ex-girlfriend.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.motherjones.com/politics/2013/06/herbert-snorrason-wikileaks-google-assange"&gt;WikiLeaks volunteer gets e-mails seized by US District Court for the Eastern District of
Virginia.&lt;/a&gt;
He also has a more detailed account on his &lt;a href="http://anarchism.is"&gt;personal website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.telegraph.co.uk/news/uknews/phone-hacking/9340164/News-of-the-World-hacked-emails-of-witness.htm"&gt;The tabloid &lt;em&gt;News of the World&lt;/em&gt; apparently hacked some e-mail accounts, as
well.&lt;/a&gt;
They also got some flak for illegal access to voicemails.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are some articles that pertain to e-mail access specifically. There are others about (illegal)
surveillance and abused privacy.&lt;/p&gt;
&lt;h1 id="to-end-on-a-happy-note"&gt;To end on a happy note…&lt;/h1&gt;
&lt;p&gt;I do not mean to sow despair, but rather to inform on shallow double standards and false
advertising. If you use e-mail and do not wish to encrypt it, simply treat it more like a postcard.
Do not talk about things that you consider too private. The same goes for chats on social networks,
for example.&lt;/p&gt;
&lt;p&gt;I mean to write about simple tools for encrypting your data some time soon. In the meantime, you may
want to take a look at these great articles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://arstechnica.com/security/2013/06/encrypted-e-mail-how-much-annoyance-will-you-tolerate-to-keep-the-nsa-away"&gt;Encrypted e-mail: How much annoyance will you tolerate to keep the NSA
away?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ssd.eff.org"&gt;Surveillance Self-Defense&lt;/a&gt; by the EFF.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://monkeyiq.blogspot.de/2012/07/off-record-messaging-tutorial.html"&gt;Off the Record Messaging: A
Tutorial&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 11 Aug 2013 14:32:40 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/e-mail_made_in_germany/</guid></item><item><title>Get RFCs in Your Terminal</title><link>https://bfontaine.net/2013/08/11/get-rfcs-in-your-terminal/</link><description>&lt;p&gt;When working with Internet protocols, we have to read &lt;a href="http://www.ietf.org/rfc.html"&gt;RFCs&lt;/a&gt; a lot. They
can be found on the Web, but it’s better to have them directly in the terminal.
Ubuntu provide &lt;a href="https://launchpad.net/ubuntu/+source/doc-rfc"&gt;some packages&lt;/a&gt; to have them offline, but if you aren’t a
sudoer, you can’t install them with &lt;code class="language-plaintext highlighter-rouge"&gt;apt-get&lt;/code&gt;. So I needed a little script to
fetch RFCs from IETF’s website and read them locally.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id="here-comes-rfc"&gt;Here comes rfc&lt;/h2&gt;

&lt;p&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;rfc&lt;/code&gt; was initially a small Bash script (~5 lines) that &lt;code class="language-plaintext highlighter-rouge"&gt;cURL&lt;/code&gt;-ed RFCs and
displayed them with &lt;code class="language-plaintext highlighter-rouge"&gt;less&lt;/code&gt;. I used it for the Networking class at Paris Diderot.
A few weeks ago, I enhanced it with a local cache (it now download an RFC the
first time only), and an offline search feature. Thanks to &lt;a href="https://github.com/ecksun"&gt;ecksun&lt;/a&gt;, it
can also be used to read drafts. The script works pretty much everywhere, and is
really simple to use:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;$ rfc &amp;lt;number&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For example, get the RFC 6749 (OAuth 2.0) with:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;$ rfc 6749
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;That’s all! Since it’s just plain text, you can pipe it or redirect its output
to anything:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;$ rfc 42 | lolcat        # rainbow RFC
$ rfc 4534 &amp;gt; rfc4534.txt # local copy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id="install"&gt;Install&lt;/h3&gt;

&lt;p&gt;Since that’s a standalone Bash script, you can put it where you want, but the
directory must be in your &lt;code class="language-plaintext highlighter-rouge"&gt;PATH&lt;/code&gt;. Here is a basic install:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;mkdir -p ~/bin
curl https://raw.github.com/bfontaine/rfc/master/rfc &amp;gt; ~/bin/rfc
chmod u+x ~/bin/rfc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you don’t have &lt;code class="language-plaintext highlighter-rouge"&gt;~/bin&lt;/code&gt; in your &lt;code class="language-plaintext highlighter-rouge"&gt;PATH&lt;/code&gt;, add this line in your &lt;code class="language-plaintext highlighter-rouge"&gt;~/.bashrc&lt;/code&gt;:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;export PATH="$HOME/bin:$PATH"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The only requirements are a pager (&lt;code class="language-plaintext highlighter-rouge"&gt;less&lt;/code&gt; is the default, but it’ll use &lt;code class="language-plaintext highlighter-rouge"&gt;$PAGER&lt;/code&gt;
if it’s set) and &lt;code class="language-plaintext highlighter-rouge"&gt;curl&lt;/code&gt; (it’ll use &lt;code class="language-plaintext highlighter-rouge"&gt;$CURL&lt;/code&gt; if it’s set, and fallback on &lt;code class="language-plaintext highlighter-rouge"&gt;wget&lt;/code&gt;
if &lt;code class="language-plaintext highlighter-rouge"&gt;curl&lt;/code&gt; can’t be found).&lt;/p&gt;

&lt;p&gt;For more info, check the project on &lt;a href="https://github.com/bfontaine/rfc"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description><author>Baptiste Fontaine’s Blog</author><pubDate>Sun, 11 Aug 2013 13:16:00 GMT</pubDate><guid isPermaLink="true">https://bfontaine.net/2013/08/11/get-rfcs-in-your-terminal/</guid></item><item><title>Shortstory: Die Flut-Hilfe-App - Hochwasserhilfe per Smartphone</title><link>https://philippzentner.com/shortstory-die-flut-hilfe-app-hochwasserhilfe-per-smartphone.html</link><description>&lt;figure class="size-medium wp-image-321"&gt;&lt;a href="http://flut.stomt.de"&gt;&lt;img alt="flut.stomt.de, Hochwasser-Hilfe" height="300" src="https://philippzentner.com/media/posts/52/fluthilfe-222x300.jpg" width="222" /&gt;&lt;/figure&gt;&lt;/a&gt; flut.stomt.de, Hochwasser-Hilfe&lt;/p&gt;
&lt;p&gt;Ich hatte in diesem Blog noch gar nichts von der Flut-Helfer-Koordinations-App erwähnt. Ein Blogpost, der schon längst hätte früher passieren müssen.&lt;/p&gt;
&lt;p&gt;Was in den letzten zwei Monaten geschah:&lt;/p&gt;
&lt;p&gt;Selbst von der Flut betroffen, kam mir nach einer Woche Schaufeln und Menschenketten bilden die Idee, die Helfer-Koordination („wie viele werden wo gebraucht?“, „wer geht wo bereits hin?“) über eine App einfacher und effizienter zu gestalten.&lt;/p&gt;
&lt;p&gt;Die App arbeitet mit einer cookie-basierten Wiedererkennung (Wiedererkennung nur temporär notwendig), welche es dem Nutzer erspart, sich zu registrieren oder einzuloggen.&lt;/p&gt;</description><author>Philipp Zentner</author><pubDate>Sat, 10 Aug 2013 11:12:15 GMT</pubDate><guid isPermaLink="true">https://philippzentner.com/shortstory-die-flut-hilfe-app-hochwasserhilfe-per-smartphone.html</guid></item><item><title>Almost Two Years On: Where is SDN?</title><link>https://rob.sh/post/204/</link><description>&lt;p&gt;Almost two years ago I wrote a post on this site entitled &lt;a href="https://rob.sh/post/201" target="_blank"&gt;Some Initial Thoughts on the SDN&lt;/a&gt;. Clearly, since then the SDN concept gained some more legs (and entered a new stage of the hype cycle) - so, where are we right now?
&lt;br /&gt;
&lt;br /&gt;
Firstly, I think its fair to say that the concept presented by Scott Shenker of having a single centralised computational element controlling COTS OpenFlow-speaking switches has fallen out of favour somewhat (based on the discussions with other network architects, engineers, and implementors that I have had). Somewhat as predicted, there are real challenges with this approach within high-scale, distributed networks:
&lt;br /&gt;&lt;/p&gt;</description><author>rob.sh</author><pubDate>Sat, 10 Aug 2013 09:47:17 GMT</pubDate><guid isPermaLink="true">https://rob.sh/post/204/</guid></item><item><title>Online photo printing prices in NZ</title><link>https://rd.nz/2013/08/online-photo-printing-prices-in-nz.html</link><author>Rich Dougherty</author><pubDate>Fri, 09 Aug 2013 12:30:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/08/online-photo-printing-prices-in-nz.html</guid></item><item><title>Idleness by Douglas Dunn</title><link>https://ho.dges.online/words/commonplace/idleness-by-douglas-dunn/</link><description>&lt;p&gt;Can you hear them? The flap of a butterfly.&lt;br /&gt;
The unfolding wing of a resting wren.&lt;br /&gt;
The sigh of an exhausted garden-ghost.&lt;br /&gt;
A poem trapped in an empty fountain pen.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Thu, 08 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/idleness-by-douglas-dunn/</guid></item><item><title>Version Number 0: A New Way to Do Software Versions</title><link>https://justingarrison.com/blog/2013-08-08-version-number-0-a-new-way-to-do-software-versions/</link><description>I had this idea while driving into work with a friend and, like a lot of my ideas, I just wanted to</description><author>Justin Garrison's Homepage</author><pubDate>Thu, 08 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-08-08-version-number-0-a-new-way-to-do-software-versions/</guid></item><item><title>The missing PostgreSQL documentation</title><link>/2013/08/07/The-missing-PostgreSQL-documentation/</link><description>&lt;p&gt;For a couple of years I&amp;rsquo;ve complained about the Postgres documentation and at the same time paraded it as one of the best sets of documentation I&amp;rsquo;ve encountered. In many ways the reason I veer towards &lt;a href="http://www.postgresql.org"&gt;Postgres&lt;/a&gt; as well as &lt;a href="http://www.python.org"&gt;Python&lt;/a&gt; and &lt;a href="http://www.djangoproject.com"&gt;Django&lt;/a&gt; is the quality of their documentation. If you need to find details about something its documented, and more importantly well and thoroughly documented.&lt;/p&gt;
&lt;p&gt;In large part I came to Python by happenstance through &lt;a href="http://www.djangoproject.com"&gt;Django&lt;/a&gt;, and Postgres through happenstance of an employer. Yet, Django was very little of an accident. The Django Tutorial got me a large part of what I needed to know and more excited about development than I had been in some time. Python has done some work at adding docs to make this even better, sadly its still very much needed for PostgreSQL.&lt;/p&gt;
&lt;h3 id="whats-missing-in-the-postgres-docs"&gt;
&lt;div&gt;
Whats Missing in the Postgres Docs
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Theres a huge variety of types of documentation, off the top of my head theres:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reference docs (Postgres excels at this)&lt;/li&gt;
&lt;li&gt;Onboarding (Postgres tutorial huh?)&lt;/li&gt;
&lt;li&gt;Tailored guides (Postgres? I can haz? Nope&amp;hellip; We don&amp;rsquo;t understand&amp;hellip;.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Postgres is great if you know the name of what you&amp;rsquo;re looking for, but if you don&amp;rsquo;t you&amp;rsquo;re entirely left in the dark.&lt;/p&gt;
&lt;h3 id="understanding-the-power-of-postgres"&gt;
&lt;div&gt;
Understanding the power of Postgres
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Postgres is good enough at performance, good enough at usability, and awesome at how powerful and flexible it can be. But all of this is entirely lost if you have to know the esoteric name of what you&amp;rsquo;re looking for.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What the hell is an hstore&amp;hellip; In so many ways KVstore makes infintely more sense. In the same sense PLV8, I have to know not only what PL stands for but V8 as well, versus the JavaScript extension for Postgres.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I understand there are plenty of reasons why some of these things are the way they are, but its also limiting how great the broader perception is. Postgres externally is this hard to use DB, that well is just a database, versus giving developers a set of powerful and useful functions to make their lives better.&lt;/p&gt;
&lt;h3 id="the-solution"&gt;
&lt;div&gt;
The Solution
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Lets fix things, there are a ton of people that would love to know more about all things Postgres. This ranges from a good set of onboarding docs, to specific blog posts on topics that people are curious about. Just last week I got an email about improving &lt;strong&gt;the&lt;/strong&gt; Postgres tutorial&amp;hellip; Yes theres a tutorial hidden in the &lt;a href="http://www.postgresql.org/docs/9.2/static/tutorial.html"&gt;2000 page set of documentation for Postgres&lt;/a&gt;. Its simply old, mostly uninteresting, and well just needs to be completely recreated. A great alternative would be a few tutorials/guides for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Noobs to databases in general (Total 101 guide)&lt;/li&gt;
&lt;li&gt;Building and architecting your application with Postgres (App Devs)&lt;/li&gt;
&lt;li&gt;Administering and maintaining Postgres (DBAs)&lt;/li&gt;
&lt;li&gt;SQL and reporting in Postgres (consumers of data, analysts, product people, marketing, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If jumping in and contributing to fixing the core tutorial isn&amp;rsquo;t your cup of tea because you don&amp;rsquo;t want to learn and write in &lt;a href="http://www-sul.stanford.edu/tools/tutorials/html2.0/gentle.html"&gt;SGML&lt;/a&gt;, send a pull request to &lt;a href="http://postgresguide.com"&gt;postgresguide.com&lt;/a&gt; or do a [guest post on my blog](mailto:craig.kerstiens@gmail.com]. If thats too much effort please just let us know, what do you want to see - &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens at gmail.com&lt;/a&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 07 Aug 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/08/07/The-missing-PostgreSQL-documentation/</guid></item><item><title>While We're Trying To Follow His Game Of Checkers, Jeff Bezos Is Playing Chess</title><link>http://techcrunch.com/2013/08/05/bezos-not-bozos/</link><description>&lt;p&gt;Last night I posted a link to John Gruber&amp;#8217;s commentary of MG Siegler&amp;#8217;s article cited above. I found Gruber&amp;#8217;s realization that rather than a floundering monolith Amazon is instead a flourishing innovator pouring almost the entirety of its profits back in to the very ecosystem responsible for creating that revenue in the first place a very interesting one, especially given Mathew Alexander&amp;#8217;s similar sentiment expressed on a past episode of his podcast &lt;a href="http://5by5.tv/bionic"&gt;Bionic&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Today I got around to reading the original piece from MG Siegler, and I couldn&amp;#8217;t agree with Gruber more: it&amp;#8217;s a wonderful article well worth the read, especially for those who do not fully understand Amazon and the Apple community&amp;#8217;s continued fascination with the company.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://techcrunch.com/2013/08/05/bezos-not-bozos/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 07 Aug 2013 22:57:34 GMT</pubDate><guid isPermaLink="true">http://techcrunch.com/2013/08/05/bezos-not-bozos/</guid></item><item><title>8 Changes Apple Made In iOS 7 Beta 5</title><link>http://www.cultofmac.com/238967/8-changes-apple-made-in-ios-7-beta-5/</link><description>&lt;p&gt;&amp;#8220;Ability to disable Control Center while using apps. The feature previously worked no matter where you were in iOS 7. Now you can select to have it turned off whenever an app is open. It can also be disabled on the lock screen.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Immediately upon reading this it struck me how very strange it is for Apple, notorious for choosing the one experience it considers best and enforcing it with a hard and unyielding hand, to give its users control over such a major feature in iOS 7. I wouldn&amp;#8217;t be surprised to see the setting gone by the next beta release.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.cultofmac.com/238967/8-changes-apple-made-in-ios-7-beta-5/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 07 Aug 2013 22:46:45 GMT</pubDate><guid isPermaLink="true">http://www.cultofmac.com/238967/8-changes-apple-made-in-ios-7-beta-5/</guid></item><item><title>Bitsplitting Podcast Hiatus</title><link>http://bitsplitting.org/2013/07/19/bitsplitting-podcast-hiatus/</link><description>&lt;p&gt;Bitsplitting has been and remains my single favorite interview podcast. One hundred episodes of Hypercritical exposed me to fields of knowledge I otherwise would never have come across, but it took a different kind of show to really acquaint me with the internet&amp;#8217;s favorite critic. Although I would not go so far as to presume to know John Siracusa, Bitsplitting gave me wonderful insight into the man behind the curtain not only for Hypercritical, but many other podcasts as well. This hiatus will serve as a great opportunity for new listeners to catch up on the first season before Daniel Jalkut picks back up again, hopefully in the near future. Go check it out; I promise you won&amp;#8217;t be disappointed.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://bitsplitting.org/2013/07/19/bitsplitting-podcast-hiatus/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 07 Aug 2013 22:46:41 GMT</pubDate><guid isPermaLink="true">http://bitsplitting.org/2013/07/19/bitsplitting-podcast-hiatus/</guid></item><item><title>Give Yourself a Break</title><link>https://zacs.site/blog/give-yourself-a-break.html</link><description>&lt;p&gt;When I set out to write this piece, I began with a title: &amp;#8220;Sometimes, I Need Lighter Fluid&amp;#8221;. As is often the case, inspiration for the title and accompanying article came at quite the inopportune moment: just after I had started shaving. Nevertheless, I captured both and began writing intending to bemoan the fact that over the last three months or thereabouts, I had failed to produce a respectable number of substantial articles. Attributing this lack of prolificacy to my job, I planned to write about how posting linked list items kept writing at the forefront of my mind, and how these types of articles often served as the gateway drug, if you will, to the long-form pieces I wrote in the evenings and on weekends.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/give-yourself-a-break.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 07 Aug 2013 22:44:53 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/give-yourself-a-break.html</guid></item><item><title>MAC Spoofing under Linux</title><link>https://www.zufallsheld.de/2013/08/07/mac-spoofing-under-linux/</link><description>&lt;p&gt;The announcement of the recent &lt;a href="https://lists.torproject.org/pipermail/tor-announce/2013-August/000089.html"&gt;attacks on Tor-users&lt;/a&gt; that exploit a
Firefox vulnerability in Javascript suggested some things to remain
anonymous whilst using Tor, such as disabling JavaScript, using the
most recent versions of Firefox, install firewalls and so on. One
interesting measure named was to often change your &lt;span class="caps"&gt;MAC …&lt;/span&gt;&lt;/p&gt;</description><author>zufallsheld</author><pubDate>Wed, 07 Aug 2013 20:49:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/08/07/mac-spoofing-under-linux/</guid></item><item><title>The evolution of Information Technology</title><link>https://jasoneckert.github.io/myblog/evolution-of-info-tech/</link><description>&lt;p&gt;&lt;img alt="people" src="people.png#center" title="people" /&gt;&lt;/p&gt;
&lt;p&gt;As a Dean for the technology faculties of a private college in Canada, I’m always looking to make our programs more aligned to the industry - my motto is: always look forward and never look back!&lt;/p&gt;
&lt;p&gt;However, when it comes to Information Technology (IT), I regularly find that the general perception of IT jobs is stuck in the past by at least a decade.  I can’t tell you how many times I’ve met people who think that IT guys are stuck in the back closet of some company doing some menial job, such as re-soldering chips on a computer motherboard much like working on the engine of an old car.  &lt;em&gt;{shiver}&lt;/em&gt;&lt;/p&gt;</description><author>Jason Eckert's Website and Blog</author><pubDate>Wed, 07 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://jasoneckert.github.io/myblog/evolution-of-info-tech/</guid></item><item><title>Jeff Bezos's Strategy With Amazon</title><link>http://daringfireball.net/linked/2013/08/06/bezos-amazon</link><description>&lt;p&gt;John Gruber, commenting on &lt;a href="http://techcrunch.com/2013/08/05/bezos-not-bozos/"&gt;MG&amp;#8217;s article&lt;/a&gt;: &amp;#8220;I&amp;#8217;ve harped on Amazon&amp;#8217;s seemingly eternal lack of profitability as much as anyone, but when you think about it and study their business, it&amp;#8217;s not that they can&amp;#8217;t turn a profit. They&amp;#8217;re not burning through money like they were in the go-go &amp;#8217;90s. They simply choose not to turn a profit, and instead invest everything in operations and low prices.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Mathew Alexander of &lt;a href="http://one37.net/"&gt;One37.net&lt;/a&gt; and the popular podcast &lt;a href="http://5by5.tv/bionic"&gt;Bionic&lt;/a&gt;, in an episode from quite some time ago, made a similar point responding to the hyperbole following an Amazon earnings announcement painting the company as an unprofitable and therefore doomed company. Flying in the face of the familiar rhetoric the Apple community almost univocally spouts, the notion that instead of simply being unable to make money Amazon instead pours almost all of its profits back in to the very ecosystem that created it in the first place rather than saving those funds for a rainy day as Apple does is a very interesting&amp;#160;&amp;#8212;&amp;#160;and apparently novel&amp;#160;&amp;#8212;&amp;#160;way to think of the company, and one that lends a great deal of credence to the notion of Amazon emerging as a major player in the tech sector sometime in the near future.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://daringfireball.net/linked/2013/08/06/bezos-amazon"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 06 Aug 2013 23:07:37 GMT</pubDate><guid isPermaLink="true">http://daringfireball.net/linked/2013/08/06/bezos-amazon</guid></item><item><title>Worst Idea So Far This Week, But the Week Is Young</title><link>http://daringfireball.net/linked/2013/08/05/ruin-movies</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/where-is-the-android-john-gruber.html"&gt;Speaking of why I read John Gruber&amp;#8217;s work&lt;/a&gt;, this kind of post, with this type of headline, is exactly why I read Daring Fireball: it made me laugh out loud, and showed me something I otherwise would not have come across. Good stuff.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://daringfireball.net/linked/2013/08/05/ruin-movies"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 06 Aug 2013 23:00:31 GMT</pubDate><guid isPermaLink="true">http://daringfireball.net/linked/2013/08/05/ruin-movies</guid></item><item><title>Oblivion</title><link>https://olshansky.info/movie/oblivion/</link><description>Olshansky's review of Oblivion</description><author>🦉 olshansky 🦁</author><pubDate>Tue, 06 Aug 2013 20:36:55 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/oblivion/</guid></item><item><title>Cancel Your Cable. Seriously.</title><link>https://josh.works/home/2013/08/06/cancel-your-cable-seriously/</link><description>&lt;p&gt;No one likes to waste money, right?
There are two things that are even worse to waste.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Time&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Energy&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Money can be earned, and if more is needed, you can spend less or earn more. Energy is what you need to bring ideas to fruition. Unlimited time with no energy gets you nowhere, as does unlimited energy with no time.
more&lt;/p&gt;

&lt;p&gt;Cable TV tricks you into making the wrong evaluation of the value proposition. If companies can get you to think that either 
100 channels at $30 a month or
700 HD channels at $100 a month is a better deal than the other option, they’ve won.&lt;/p&gt;

&lt;p&gt;The real calculus is this: five to fifteen hours of my week wasted vs. spent intentionally. Really, you should be willing to pay your cable company the price of your bill if they could simply deliver to you additional time.&lt;/p&gt;

&lt;p&gt;If the small cost of $100 month was all it took to get an extra five hours a week, I’d do immediately. I value my own time above $5 an hour, and you should to (This is why I’ve been trying to 
&lt;a href="/blog/2013/04/22/becoming-an-early-riser"&gt;wake up earlier every day&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If not cable, then what?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Watching stuff is a lot of fun. I enjoy my fair share of movies, but I get them when I want them, and I don’t have to watch commercials. Between Redbox, Netflix, and all the free options for watching 
&lt;a href="http://www.cbs.com/shows/elementary"&gt;good shows&lt;/a&gt;online, there’s no reason that by cutting your cable you’re missing out on entertainment opportunities.&lt;/p&gt;

&lt;p&gt;Oh - and all commercials do is try to sell you stuff. We already know that 
&lt;a href="http://www.newrepublic.com/article/114031/money-happiness-and-new-science-smarter-spending#"&gt;things cannot buy happiness&lt;/a&gt;. Experiences and relationships are what matter. So reject passive entertainment, spend less time exposing yourself to ads for cleaning supplies, cars, hair products, clothing, insurance, fast food, soft drinks, and all the rest of that crap. You will not go wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.theminimalists.com/tv/"&gt;This article&lt;/a&gt; provides an excellent write-up of how to go about dropping the TV.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Tue, 06 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/home/2013/08/06/cancel-your-cable-seriously/</guid></item><item><title>A look at Foreign Data Wrappers</title><link>/2013/08/05/A-look-at-Foreign-Data-Wrappers/</link><description>&lt;p&gt;There are two particular sets of features that continue to keep me very excited about the momentum of Postgres. And while PostgreSQL has had some great momentum in the past few years these features may give it an entirely new pace all together. One is extensions, which is really its own category. Dimitri Fontaine was talking about doing a full series just on extensions, so here&amp;rsquo;s hoping he does so I dont have to :)&lt;/p&gt;
&lt;p&gt;One subset of extensions which I consider entirely separate is the other thing, which is foreign data wrappers or FDWs. FDWs allow you to connect to other data sources from within Postgres. From there you can query them with SQL, join across disparate data sets, or join across different systems. Recently I had a good excuse to give the &lt;code&gt;postgres_fdw&lt;/code&gt; a try. And while I&amp;rsquo;ve blogged about the Redis FDW previously, the Postgres one is particularly exciting because with PostgreSQL 9.3 it will ship as a contrib module, which means all Postgres installers should have it&amp;hellip; you just have to turn it on.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at getting it setup and then dig into it a bit. First, because I don&amp;rsquo;t have Postgres 9.3 sitting around on my system I&amp;rsquo;m going to provision one from Heroku Postgres:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ heroku addons:add heroku-postgresql:crane --version 9.3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once it becomes available I&amp;rsquo;m going to connect to it then enable the extension:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ heroku pg:psql BLACK -acraig
# CREATE EXTENSION postgres_fdw;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now its there, so we can actually start using it. To use the FDW there&amp;rsquo;s four basic things you&amp;rsquo;ll want to do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create the remote server&lt;/li&gt;
&lt;li&gt;Create a user mapping for the remote server&lt;/li&gt;
&lt;li&gt;Create your foreign tables&lt;/li&gt;
&lt;li&gt;Start querying some things&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="the-setup"&gt;
&lt;div&gt;
The setup
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;You&amp;rsquo;ll only need to do each of the following once, once you&amp;rsquo;re server, user and foreign table are all setup you can simply query away. This is a nice advantage over db_link which only exists for the set session. &lt;em&gt;One downside I did find was that you can&amp;rsquo;t use a full Postgres connection string, which would make setting it up much simpler&lt;/em&gt;. So onto setting up our server:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# CREATE SERVER app_db
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'dbnamehere', host 'hostname-here);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next we&amp;rsquo;ll actually create our user mapping. In this case we&amp;rsquo;ll take the remote username and password and map it to our current user we&amp;rsquo;re already connected with.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# CREATE USER MAPPING for user_current
SERVER app_db
OPTIONS (user 'remote_user', password 'remote_password');
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And finally we&amp;rsquo;re going to configure our tables. &lt;em&gt;There were some additional pains here as there wasn&amp;rsquo;t a perfectly clean way to generate the &lt;code&gt;CREATE TABLE&lt;/code&gt;. Sure you could pg_dump just that table, but overall it felt a bit cludgey.&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# CREATE FOREIGN TABLE users
(
id integer,
email text,
created_at timestamp,
first_name text,
last_name text
)
SERVER app_db OPTIONS (table_name 'users')
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we&amp;rsquo;ve got all of our local data, as well as remote data. For that report against two databases where you previously wrote a ruby or python script, ran a query, constructed another query, then executed it you can directly do in your database. We can simply query our new table - &lt;code&gt;SELECT * FROM users LIMIT 5;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;But the real power of foreign data wrappers goes well beyond just Postgres to Postgres. Having a defined contract in translating from one system to another, will really allow reinventing the way we work with data. This is especially true in large datasets where doing ETL on terrabytes of data takes longer than asking the questions of it.&lt;/p&gt;
&lt;p&gt;While we&amp;rsquo;re waiting for more FDWs to be ready to use in production situations the Postgres FDW is a great start, &lt;em&gt;though the Redis one is on its way&lt;/em&gt;. Even better is that it ships with standard installs of Postgres, meaning it will see more usage and help push them to advance further.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;One final nicety, you&amp;rsquo;re not required to have ALL Postgres 9.3 DBs, just one that can then connect to the others, so go ahead and give it try :)&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Mon, 05 Aug 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/08/05/A-look-at-Foreign-Data-Wrappers/</guid></item><item><title>XKCD 'Time'</title><link>http://www.theverge.com/2013/8/2/4581972/xkcd-creator-randall-munroe-shares-the-secrets-of-time</link><description>&lt;p&gt;&amp;#8220;Randall Munroe&amp;#8217;s web comic XKCD has long been known for pushing boundaries in strange ways, but his latest experiment topped them all. Over the course of four months, &amp;#8221;Time&amp;#8220; grew as a frame was added every 30 minutes or so, ending up with over 3,000 individual frames by the time it wrapped up earlier this week.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I absolutely love XKCD. I have read every one of Randall Munroe&amp;#8217;s 1246 comics, and &lt;em&gt;Time&lt;/em&gt;&amp;#160;&amp;#8212;&amp;#160;which you can watch in its entirety over at &lt;a href="http://xkcd.aubronwood.com/"&gt;Aubron Wood&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;is one of my favorites. I plan to read the next 1246 strips as well; I suggest you do the same.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/8/2/4581972/xkcd-creator-randall-munroe-shares-the-secrets-of-time"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 05 Aug 2013 00:35:18 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/8/2/4581972/xkcd-creator-randall-munroe-shares-the-secrets-of-time</guid></item><item><title>Where is the Android John Gruber?</title><link>http://vintagezen.com/2013/7/23/where-is-the-android-john-gruber</link><description>&lt;p&gt;&amp;#8220;That is the very reason Android has no Gruber-like figure - they have no central philosophy that would allow such a figure to emerge. What would the Android Gruber write about? There are of course Android writers out there, but they mostly cover the latest greatest phone or compare feature sets. They never really put things into context with the overall philosophy of the platform like Gruber does with Apple, because there is no overall philosophy.&amp;#8221;&lt;/p&gt;

&lt;p&gt;An interesting article to be sure, but I can&amp;#8217;t quite say I agree with him: I subscribe to Daring Fireball&amp;#8217;s RSS feed because I enjoy the occasional snarky comment Gruber tacks on to his articles and because his site is a great place to discover trending topics in the Apple world. To date, I can&amp;#8217;t say I have ever read a single one of his long-form articles, so to say that the reason I read his site is for pieces that &amp;#8220;put things into context with the overall philosophy of the platform&amp;#8221; couldn&amp;#8217;t be farther from the truth: I would still subscribe to his site if he wrote about Android, so long as this Gruber-like figure did his job well and with an attitude.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://vintagezen.com/2013/7/23/where-is-the-android-john-gruber"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 05 Aug 2013 00:30:02 GMT</pubDate><guid isPermaLink="true">http://vintagezen.com/2013/7/23/where-is-the-android-john-gruber</guid></item><item><title>Swimming in a Sea of Shit</title><link>https://zacs.site/blog/swimming-in-a-sea-of-shit.html</link><description>&lt;p&gt;&amp;#8220;This has nothing to do with politics, or gender. I know women who have been threated physically because of their thoughts on real-time strategy games. I knew men who had their spouses and children threatened, or had racial or sexual harassment thrown their way, because of review scores. This isn&amp;#8217;t new. This isn&amp;#8217;t rare. And it&amp;#8217;s not something anyone can easily ignore, or something they should expected to endure silently and gracefully.&amp;#8221; - Ben Kuchera for Penny Arcade in &lt;a href="http://penny-arcade.com/report/article/swimming-in-a-sea-of-shit-the-internets-war-against-creatives"&gt;Swimming in a sea of shit&lt;/a&gt;&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/swimming-in-a-sea-of-shit.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 05 Aug 2013 00:29:50 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/swimming-in-a-sea-of-shit.html</guid></item><item><title>Upgrading from Fedora 18 to Fedora 19</title><link>https://purpleidea.com/blog/2013/08/04/upgrading-from-fedora-18-to-fedora-19/</link><description>&lt;p&gt;It was time to take the plunge and upgrade from Fedora 18 to Fedora 19. &lt;a href="https://purpleidea.com/blog/2013/02/12/picking-up-the-pieces-after-a-fedora-18-install/" title="Picking up the pieces after a Fedora 18 install"&gt;Fedora 18 was one of the worst releases ever&lt;/a&gt;, so I figured it could only get better. I ran my backups as usual, however this time I didn&amp;rsquo;t seem to need them, the upgrade process went off without a hitch! &lt;a href="https://fedoraproject.org/wiki/FedUp"&gt;I used the fedup-cli process over the network.&lt;/a&gt; I always run these things inside of screen.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sun, 04 Aug 2013 08:02:18 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/08/04/upgrading-from-fedora-18-to-fedora-19/</guid></item><item><title>Publishing README files automatically with `gitweb`</title><link>https://bastian.rieck.me/blog/2013/gitweb_readme_workflow/</link><description>&lt;p&gt;If you are using &lt;code&gt;gitweb&lt;/code&gt; to serve your &lt;code&gt;git&lt;/code&gt; repositories, you can add a file named &lt;code&gt;README.html&lt;/code&gt;
to the (bare) repository. &lt;code&gt;gitweb&lt;/code&gt; will then display the contents of this file along with the tree
of commits.&lt;/p&gt;
&lt;p&gt;It is more satisfying, however, to generate the HTML file &lt;em&gt;automatically&lt;/em&gt;. This is 2013, after all.
We have the technology! I personally like &lt;a href="http://daringfireball.net/projects/markdown"&gt;Markdown&lt;/a&gt; as
a lightweight and readable format. With the corresponding converter, you won&amp;rsquo;t ever have to think
about HTML again.&lt;/p&gt;
&lt;p&gt;My current setup looks like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A git repository on a local machine somewhere&lt;/li&gt;
&lt;li&gt;A file named &lt;code&gt;README.md&lt;/code&gt; in the root directory of this repository&lt;/li&gt;
&lt;li&gt;A remote &lt;em&gt;bare&lt;/em&gt; repository on a server that is accessed by &lt;code&gt;gitweb&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To create the &lt;code&gt;README.html&lt;/code&gt; file within the bare repository, I created a simple &lt;code&gt;post-receive&lt;/code&gt; hook:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/sh
git cat-file blob HEAD:README.md | markdown &amp;gt; $GIT_DIR/README.html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Place this hook in the &lt;code&gt;hooks&lt;/code&gt; subdirectory under the name &lt;code&gt;post-receive&lt;/code&gt; and make it executable.
After the chunks for each commit have been received, the hook will look for the file &lt;code&gt;README.md&lt;/code&gt; on
the &lt;code&gt;master&lt;/code&gt; branch of the repository and generate the corresponding HTML file from it. The best
part of this is that the file is getting updated along with the program and you never have to worry
about re-generating the documentation.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 04 Aug 2013 00:23:11 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/gitweb_readme_workflow/</guid></item><item><title>Analyzing the EIG (HostGator, BlueHost, HostMonster, JustHost) Outage</title><link>https://kevinohashi.com/04/08/2013/analyzing-eig-hostgator-bluehost-hostmonster-justhost-outage</link><description>&lt;p&gt;I just published an &lt;a href="http://reviewsignal.com/blog/2013/08/03/service-interrupted-a-look-at-the-eig-bluehost-hostgator-hostmonster-justhost-outage-through-twitter/"&gt;article&lt;/a&gt; looking at the impact of the major outage that occurred yesterday (August 2, 2013) when EIG's Provo, UT datacenter failed. I also predict what to expect based on previous major outages.&lt;/p&gt;
&lt;p&gt;There was definitely a major spike in data produced and I got down to analyzing it.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://kevinohashi.com/sites/default/files/tweets_per_day_by_company.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;Full Story: &lt;a href="http://reviewsignal.com/blog/2013/08/03/service-interrupted-a-look-at-the-eig-bluehost-hostgator-hostmonster-justhost-outage-through-twitter/" title="http://reviewsignal.com/blog/2013/08/03/service-interrupted-a-look-at-the-eig-bluehost-hostgator-hostmonster-justhost-outage-through-twitter/"&gt;http://reviewsignal.com/blog/2013/08/03/service-interrupted-a-look-at-th...&lt;/a&gt;&lt;/p&gt;</description><author>Kevin Ohashi</author><pubDate>Sat, 03 Aug 2013 21:01:34 GMT</pubDate><guid isPermaLink="true">https://kevinohashi.com/04/08/2013/analyzing-eig-hostgator-bluehost-hostmonster-justhost-outage</guid></item><item><title>John Carmack Keynote</title><link>https://daniellittle.dev/john-carmack-keynote</link><description>John Carmack's keynote this year was a fantastic talk about software engineering. Parts three and four of the keynote touched on all the key…</description><author>Daniel Little Dev</author><pubDate>Sat, 03 Aug 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/john-carmack-keynote</guid></item><item><title>EverQuest Next Revealed</title><link>https://benovermyer.com/blog/2013/08/everquest-next-revealed/</link><description>&lt;img class="photo" src="https://benovermyer.com/blog/2013/08/everquest-next-revealed/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;EQN_logo_color1.ed82b71ca4d9435a.jpg" /&gt;
&lt;p&gt;I'm writing this just a couple minutes after watching the EverQuest Next reveal video on Twitch. I couldn't watch it live yesterday, but it was totally worth the wait. For an hour and a half, I was on the edge of my chair. The introduction was a beautiful piece of sand performance art, which I otherwise won't talk about. The rest of the video was an introduction into what will probably be the single most revolutionary MMORPG to come out since 2003.&lt;/p&gt;
&lt;p&gt;Dave Georgeson, director of development for EverQuest Next, started things off with a reveal of the art style. Let me tell you, this is a gorgeous game. The whole thing is very painterly, and is rendered using a modified version of the engine powering Planetside 2.&lt;/p&gt;
&lt;p&gt;All of the races have been redone, and we were treated to concept art for several: the High Elf, the Dark Elf, the Human, the Dwarf, and the Kerran. The Dark Elf and the Kerran were probably the biggest departure from previous EQ designs. Kerrans are distinctly more lionesque, with pronounced lion's heads instead of the old cat faces and huge builds. Dark elves look like standard dark elves, except they have draconic eyes and short horns. There's a story behind that that I really want to hear.&lt;/p&gt;
&lt;p&gt;The art style for characters is exaggerated, even slightly cartoony. I'm really OK with that, especially since they're building SOEmote into the game from the beginning. It's easy to see the expressions of the players themselves on their characters, and that's marvelous for a roleplayer, but also for immersion and socializing in general.&lt;/p&gt;

&lt;img class="photo" src="https://benovermyer.com/blog/2013/08/everquest-next-revealed/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;everquestnext_07.40655afe3d5594f3.jpg" /&gt;
&lt;p&gt;Movement is fantastic. Characters slide, leap, vault, grab, and otherwise interact with the terrain in a very natural way. With EQN's “active movement system,” players are free to really enjoy moving around in the world. There are items and spells that allow additional ways to move, like the Boots of the Zephyr in the video that allowed the players to float gently downward. Brilliant stuff.&lt;/p&gt;
&lt;p&gt;Then, we got into the Four Grails, as Dave put it.&lt;/p&gt;
&lt;h1 id="the-core-game"&gt;The Core Game&lt;/h1&gt;
&lt;p&gt;Grail 1 is the “Core Game.” This was the least impressive of the Grails, but it was still nice to see. Character evolution from a mechanical standpoint is based on collecting classes from around the world and mixing and matching abilities from them. It sounds like a hybrid of Guild Wars 2's system and Rift's system. Weapon choice matters, like it does in GW2.&lt;/p&gt;
&lt;h1 id="destructibility"&gt;Destructibility&lt;/h1&gt;
&lt;p&gt;Grail 2 is “Destructibility,” and this was the first mind-blowing revelation. The entire game world is built of voxels, despite looking natural and perfectly designed. It's fully destructible, even though it heals over time. It's like if SOE took a look at Minecraft and applied that on a grand scale. The way it works, too, is gorgeous. You can definitely see the aftermath of epic battles in the environment that it occurred in.&lt;/p&gt;
&lt;h1 id="a-life-of-consequence"&gt;A Life of Consequence&lt;/h1&gt;
&lt;p&gt;Grail 3 is “A Life of Consequence.” Besides the standard “every action you take matters” spiel, we were introduced to the idea of emergent AI in an MMO. SOE will create mob behavioral patterns - likes, dislikes, etc. - and then release mobs of that type into the world. They will live, react, and die according to how they're programmed to behave. This means it's entirely possible to have roving bands of orcs that actually decide to set up camp in a particular area - choose their own spawn point, as it were. It's also possible to drive them out.&lt;/p&gt;
&lt;h1 id="permanent-change"&gt;Permanent Change&lt;/h1&gt;
&lt;p&gt;Grail 4 is “Permanent Change.” For the most part, Dave talked about the Rallying Cry system, which is a little like a server-wide public quest that lasts 2-3 months each… and has permanent effect on the game world. These Rallying Cries are promised to be different on every server, and that along with the Life of Consequence and Destructibility Grails ensure that no two servers will have the same environment and history, let alone community.&lt;/p&gt;
&lt;h1 id="everquest-next-landmark"&gt;EverQuest Next Landmark&lt;/h1&gt;
&lt;p&gt;As if all this wasn't enough, then they got into the EverQuest Next Landmark game that's coming out later in 2013. Landmark sounds basically like Minecraft on an epic scale, except that one continent in each Landmark server will have EverQuest Next art direction enforced… and creations from those areas will make it into EverQuest Next as real, lasting landmarks.&lt;/p&gt;
&lt;h1 id="player-studio"&gt;Player Studio&lt;/h1&gt;
&lt;p&gt;On top of that, SOE's Player Studio will find a very interesting real money economy implementation for people who enjoy building things in Landmark; you'll be able to sell not only finished works, but components. The example that Dave gave was of a player creating a nice crenelated tower. People could buy that tower, then make castles from it and sell those castles, and the player who created the tower would get royalties based on how many of that tower were used in the castle design for every castle sold. It's a fascinating system.&lt;/p&gt;
&lt;p&gt;Basically, EverQuest Next sounds like the game I've been waiting for my entire gaming life. I really want to hear about how the crafting system works, and more about all the races, but… it sounds awe-inspiring. EverQuest Next takes player involvement in the game to a level never before seen.&lt;/p&gt;
&lt;h1 id="related-articles"&gt;Related articles&lt;/h1&gt;
&lt;p&gt;EverQuest Next - Landmark Focuses on Construction and Exploration, Is Free-to-Play&lt;/p&gt;
&lt;p&gt;EverQuest Next + Jeremy Soule = Geek Delight&lt;/p&gt;
&lt;p&gt;EverQuest Next Redefines Next-Gen MMOs Enhanced by Zemanta&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 03 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/08/everquest-next-revealed/</guid></item><item><title>Basic Implementation of A* in Erlang</title><link>https://srijan.ch/basic-implementation-of-a-in-erlang</link><description>Implementing the path finding algorithm A* in Erlang</description><author>Srijan Choudhary, all posts</author><pubDate>Sat, 03 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://srijan.ch/basic-implementation-of-a-in-erlang</guid></item><item><title>Postgres Dollar Quoting</title><link>/2013/08/02/Postgres-Dollar-Quoting/</link><description>&lt;p&gt;After my most recent post on &lt;a href="/2013/07/29/documenting-your-postgres-database/"&gt;documenting your database&lt;/a&gt; I had a colleague and friend chime in:&lt;/p&gt;
&lt;p&gt;{% blockquote @danfarina &lt;a href="https://twitter.com/danfarina/status/362007008079126528"&gt;https://twitter.com/danfarina/status/362007008079126528&lt;/a&gt; %}
@craigkerstiens You may want to mention for another post the generality of dollar quoting: it&amp;rsquo;s not just for CREATE FUNCTION.
{% endblockquote %}&lt;/p&gt;
&lt;p&gt;Luckily I was able to convince him to create the post. You can read a bit more on him below, but without further adieu here&amp;rsquo;s a bit on dollar quoting within Postgres:&lt;/p&gt;
&lt;p&gt;Postgres supports two forms of entry of data literals into the system.
One is the familiar single-quote:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;=&amp;gt; SELECT 'hello';
?column?
----------
hello
(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This format is problematic when one might be using single quotes in
the textual string.&lt;/p&gt;
&lt;p&gt;Postgres also supports another way to enter data
literals, most often seen in &lt;code&gt;CREATE FUNCTION&lt;/code&gt;, but can be profitably
used anywhere. This is called &amp;ldquo;dollar quoting,&amp;rdquo; and it looks like
this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;=&amp;gt; SELECT $$hello's the name of the game$$;
?column?
------------------------------
hello's the name of the game
(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If one needs nested dollar quoting, one can specify a string, much
like the &amp;lsquo;heredoc&amp;rsquo; feature seen in some programming languages:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;=&amp;gt; SELECT $goodbye$hello's the name of the $$ game$goodbye$;
?column?
---------------------------------
hello's the name of the $$ game
(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This can appear anywhere where single quotes would otherwise be,
simplifying tasks like using contractions in database object comments,
for example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;=&amp;gt; CREATE TABLE described(a int);
=&amp;gt; COMMENT ON TABLE described IS $$I'm describing this,
including newlines and an apostrophe in the contraction &amp;quot;I'm.&amp;quot;$$;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or, alternatively, entry of literals for types that may include
apostrophes in their serialization, such as &amp;rsquo;text&amp;rsquo; or &amp;lsquo;json&amp;rsquo;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;=&amp;gt; CREATE TABLE json(data json);
=&amp;gt; INSERT INTO json(data) VALUES
($${&amp;quot;quotation&amp;quot;: &amp;quot;'there is no time like the present'&amp;quot;}$$);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="security"&gt;
&lt;div&gt;
Security
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Even though dollar quotes can be used to reduce the pain of many
quoting problems, don&amp;rsquo;t be tempted to use them to avoid SQL injection:
an adversary that knows one is using dollar quoting can still mount
exactly the same kind of attacks as if one were using single quotes.&lt;/p&gt;
&lt;p&gt;There is also no need, because any place a data literal can appear can
also be used with parameter binding (e.g. &lt;code&gt;$1&lt;/code&gt;, &lt;code&gt;$2&lt;/code&gt;, &lt;code&gt;$3&lt;/code&gt;&amp;hellip;), which one&amp;rsquo;s
Postgres driver should support. Nevertheless, for data or scripts one
is working with by hand, dollar quoting can make things much easier to
read.&lt;/p&gt;
&lt;h3 id="about-the-author"&gt;
&lt;div&gt;
About the Author
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Daniel Farina is a long time colleague and friend, having worked together at 5 different companies. He&amp;rsquo;s part of the &lt;a href="https://twitter.com/danfarina/status/362007008079126528"&gt;Heroku Postgres&lt;/a&gt; team as the resident tuple groomer, and the creator of &lt;a href="https://github.com/wal-e/wal-e"&gt;WAL-E&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As is always the case if you have articles you&amp;rsquo;d like to see created or if you&amp;rsquo;re interested in doing a guest post please feel free to drop me a line &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens at gmail.com&lt;/a&gt;. And if you have articles you feel are helpful to others in the Postgres world drop me a note as well for including them in &lt;a href="http://www.postgresweekly.com"&gt;Postgres Weekly&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Fri, 02 Aug 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/08/02/Postgres-Dollar-Quoting/</guid></item><item><title>Declarative Approach to Nesting Backbone Models</title><link>http://blog.untrod.com/2013/08/declarative-approach-to-nesting.html</link><description>&lt;p&gt;Backbone doesn't have great (any?) support for nested models. Here's my
approach. I think it's kind of fun (we get to write recursive
functions!), and hopefully useful. I'll report back when I've lived with
it for a bit longer.&lt;/p&gt;
&lt;p&gt;Here's the problem: We have a Backbone model with attributes that …&lt;/p&gt;</description><author>Untrod</author><pubDate>Fri, 02 Aug 2013 09:57:00 GMT</pubDate><guid isPermaLink="true">http://blog.untrod.com/2013/08/declarative-approach-to-nesting.html</guid></item><item><title>Waking Up Early, Part 3</title><link>https://josh.works/misc/2013/08/02/waking-up-early-part-3/</link><description>&lt;p&gt;I’ve written about my attempts to 
&lt;a href="/blog/2013/05/07/how-to-wake-up-early"&gt;wake up early before&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Most recently, I 
&lt;a href="/blog/2013/07/15/waking-up-early-2-0"&gt;promised&lt;/a&gt; to take a sleep log, to track trends. Fortunately, I did not intend to try to wake up early, because I didn’t.&lt;/p&gt;

&lt;p&gt;Here’s what I learned in the last three weeks:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Benadryl messes with your ability to wake up.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;moreI got poison ivy all over my leg a few weeks ago, and have been taking antihistamines pretty regularly. I’m not sure the Benadryl directly contributed to making it hard to wake up at 5:30, but I can’t imagine that it helped.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;It is 
extremely hard to go to bed early.&lt;/strong&gt;
 I spent a week on a family vacation in Rehobeth Beach, Delaware, and I had a great time. I also rarely made it to bed before 12:30a. I would try to get out of bed at 6:30 or 7:00, but couldn’t get up until about 8:00, most days. (This is still early in terms of early-20s vacation standards - I did not once sleep in until 9, let alone noon, so I’m counting this as a win. But I’m far from my goal.) Even after my vacation, I still really struggle to get to bed at a good hour.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, I am typing this at 10:00 pm. Ideally, by 10:00 pm, I would have not looked at my computer for two hours. Yet here I am. I hope to be in bed in less than an hour, but that still has me not falling asleep until after 11:00 pm. Not good enough.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;I don’t need to focus on getting up early anymore. I need to master my bedtime.&lt;/strong&gt;
I have very real minimum sleep requirements, and it is foolishness to skimp on sleep, and 
then being my day at 5:00am. I may be getting only six hours of sleep, and by the time the end of my work day rolls around, I would have been going for twelve hours. That math, while not terrible, is not sustainable.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;I am a level two sleeper.&lt;/strong&gt;
 I can get up early if I have properly rested. 
&lt;a href="http://couloircreative.com/"&gt;Jeff Chrisler&lt;/a&gt; sent me 
&lt;a href="http://www.npr.org/blogs/health/2013/07/31/207319883/want-to-be-a-morning-person-take-a-few-tips-from-campers"&gt;this article&lt;/a&gt;. It covers how backpackers naturally adapt to being early risers, synching their circadian rhythm with the sun. It’s not rocket science, but it helped me realize that 
there are some who believe it is physically impossible to wake up early, feeling rested, without being a “morning person”.Well, I can stand here and confidently say, in the words of the great entrepreneur 
&lt;a href="http://www.guykawasaki.com/"&gt;Guy Kawasaki:&lt;/a&gt; “Bull shiitake. It’s possible. I did it.”&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A level one sleeper is one who, in the words of 
&lt;a href="/"&gt;Josh Thompson&lt;/a&gt; is “a ‘night owl’ and cannot comprehend the 
possibility of being an early riser.” This is, to him, not a lack of will power. It’s a lack of imagination. Note that there is nothing inherently wrong with being a level one sleeper.&lt;/p&gt;

&lt;p&gt;So, I didn’t move much in the direction I had hoped, these last two weeks, but I did come to some important realizations, and more importantly, I didn’t completely waste my time. I’m going to spend the next two weeks recording my time up and my time asleep, and I’ll present my findings here to you, my kind, generous, and supremely intelligent readers.&lt;/p&gt;

&lt;p&gt;I have a two-part call to action:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;If you want to be an early(er)-riser, track when you go to bed and when you get up every night for the next two weeks.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If you plan on doing step one, tell me. I’ll pester you in a few days to see how you’re doing.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;</description><author>Josh Thompson</author><pubDate>Fri, 02 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/misc/2013/08/02/waking-up-early-part-3/</guid></item><item><title>QApplication and the locale</title><link>https://bastian.rieck.me/blog/2013/qapplication_and_the_locale/</link><description>&lt;p&gt;In Germany, we do things differently. While our way of writing dates is debatable, one thing is a
constant source of confusion: The decimal dot. In the US, it&amp;rsquo;s a real dot–in Germany, it&amp;rsquo;s a
comma. You read that right. π ≈ 3.14159… for scientists, but we continue to claim
that it is actually ≈ 3,14159….&lt;/p&gt;
&lt;p&gt;Why is this a problem? Well, software sometimes expects input in the form of floating point numbers.
In case your locale settings indicate that you are German, smart programs expects you to use the
decimal &lt;em&gt;comma&lt;/em&gt;, pretty please. Unfortunately, not all parts of our programs are built that smart.
In some cases, we bluntly assume that you use decimal dots.&lt;/p&gt;
&lt;p&gt;To clear that source of confusion, I added &lt;code&gt;std::setlocale( LC_NUMERIC, en_US&amp;quot;);&lt;/code&gt; at the very
beginning of our program. This fix worked beautifully until that fateful day where stopped. After
much confusion, I found the culprit: &lt;code&gt;QApplication&lt;/code&gt;! It turns out that &lt;code&gt;QApplication&lt;/code&gt; likes to reset
the locale settings for some reason. This is even detailed in the documentation for
&lt;code&gt;QCoreApplication&lt;/code&gt; (which I of course read &lt;em&gt;after&lt;/em&gt; the problem had already been solved):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This can cause a conflict when using POSIX functions, for instance, when converting between data
types such as floats and strings, since the notation may differ between locales. To get around
this problem, call the POSIX function &lt;code&gt;setlocale(LC_NUMERIC,&amp;quot;C&amp;quot;)&lt;/code&gt; right after initializing
&lt;code&gt;QApplication&lt;/code&gt; or &lt;code&gt;QCoreApplication&lt;/code&gt; to reset the locale that is used for number formatting to
&amp;ldquo;C&amp;rdquo;-locale.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, I heeded the wise words of the fine manual and moved the code for setting the locale &lt;em&gt;after&lt;/em&gt; the
initialization of &lt;code&gt;QApplication&lt;/code&gt;. What a fun way to spend almost one hour.&lt;/p&gt;
&lt;p&gt;A colleague suggested that I should search for &amp;ldquo;&lt;code&gt;QApplication&lt;/code&gt;, what the fuck?&amp;rdquo;, so these are the
search terms to be used forthwith (the phrase &amp;ldquo;&lt;code&gt;QApplication&lt;/code&gt; resets locale&amp;rdquo; might also be helpful,
so I am including this here).&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Thu, 01 Aug 2013 22:23:50 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/qapplication_and_the_locale/</guid></item><item><title>Automatically inline Python function calls</title><link>https://tomforb.es/blog/automatically-inline-python-function-calls/</link><description>Edit: Code is here on GitHub Calling functions in Python can be expensive. Consider this example: there are two statements that are being timed, the first one calls a function that returns an integer while the second one calls a function that returns the result of a second function call which return...</description><author>Tom Forbes</author><pubDate>Thu, 01 Aug 2013 18:54:18 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/automatically-inline-python-function-calls/</guid></item><item><title>Only Usain Bolt Looks at the Clock</title><link>https://www.danstroot.com/posts/2013-08-01-only-usain-bolt-looks-at-the-clock</link><description>&lt;img alt="post image" src="https://danstroot.imgix.net/assets/blog/img/usain-bolt2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;If you watch someone run the 100 meters, they sneak glances around. Sprinters watch each other while they run.  They want to know where are in the pack.  I noticed that only Usain Bolt looks at the clock. Why?&lt;br /&gt;&lt;br /&gt;This post &lt;a href="https://www.danstroot.com/posts/2013-08-01-only-usain-bolt-looks-at-the-clock"&gt;Only Usain Bolt Looks at the Clock&lt;/a&gt; first appeared on &lt;a href="https://www.danstroot.com"&gt;Dan Stroot's Blog&lt;/a&gt;</description><author>Dan Stroot</author><pubDate>Thu, 01 Aug 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.danstroot.com/posts/2013-08-01-only-usain-bolt-looks-at-the-clock</guid></item><item><title>Clean Repository Data Access in C#</title><link>https://boyter.org/2013/07/clean-repository-data-access-c/</link><description>&lt;p&gt;Mostly as a self reference here is an extremely clean data access pattern possible using C# and Entity Framework. It saves you the effort of mocking the database context as the code you end up writing is so simple it is all compile time checked.&lt;/p&gt;
&lt;p&gt;Essentially you define a very simple class which provides a single method for getting data (although you may want a save data method too) and make sure you add an interface to make unit testing/mocking easier.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 01 Aug 2013 02:52:14 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/07/clean-repository-data-access-c/</guid></item><item><title>Dream Big, and Build Optionality</title><link>https://josh.works/growth/2013/07/31/dream-big-and-build-optionality/</link><description>&lt;p&gt;We all can dream big. I have dreams, and you probably do to.
For example: Travel, location independent living, being wealthy/choosing to do work that interests you, enjoying “simple” things. The list could go on, and on, and on.&lt;/p&gt;

&lt;p&gt;But then we go right along doing all the normal things, wishing and wishing, but never taking any action.&lt;/p&gt;

&lt;p&gt;I don’t want to spend the next ten years of my life wishing for lots and doing nothing - that is one of the reasons I started this blog. I want to do epic stuff, and writing about my progress helps me do that.
more&lt;/p&gt;

&lt;p&gt;And then I came across another phenomenon. I wrote down a 
&lt;a href="/epic-quest"&gt;huge list of things I want to do&lt;/a&gt; and learn, and I have made progress on many of them. I’ve experimented with a Dvorak keyboard layout, I’m learning to write in italics, I set aside enough time to 
&lt;a href="/read-along-with-josh"&gt;read at least two books a week&lt;/a&gt;, I’m learning Krav Maga, and my wife and I are slowly sorting out how to cook.&lt;/p&gt;

&lt;p&gt;But here’s the problem: None of these things will produce disproportionate rewards. Even if I could type at 150 wpm, write at 55 wpm, read four books a week, cook amazing meals, and was amazing at Krav Maga, I’m no closer to my really big goals. (Travel hacking, having an awesome job, eventual location independence/self-employment, etc.)&lt;/p&gt;

&lt;p&gt;I derive significant value from the things I’m learning, and I’d rather invest my time in something that produces returns, rather than spend another hour a day commuting, or watching TV, but right now, my  efforts at self-improvement lack direction.&lt;/p&gt;

&lt;p&gt;My attitude has changed as I’ve read and integrated information from 
&lt;a href="http://www.iwillteachyoutoberich.com/blog/the-tripod-of-stability/"&gt;two&lt;/a&gt; 
&lt;a href="http://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CC8QFjAA&amp;amp;url=http%3A%2F%2Fwww.amazon.com%2FAntifragile-Things-That-Gain-Disorder%2Fdp%2F1400067820&amp;amp;ei=LE_5Ub6UN8zE4AON04GoCw&amp;amp;usg=AFQjCNE4XmEtQRlZGKiCKv4qdJTY2uDylg&amp;amp;sig2=KT6p_4Tj9TN3u7jgeJAo7g&amp;amp;bvm=bv.49967636,d.dmg"&gt;sources&lt;/a&gt;. I am not currently working on specific plans to achieve my strategic goals, because there are so many different ways to those ends, and its pretty foolish to predict what may be happening in six months.&lt;/p&gt;

&lt;p&gt;I am currently working on building stability in a few important areas of my life, so I can expose myself to limited risk that could have tremendous payoff.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;If I can achieve significant financial security, I can experiment more with self-employment, if a good opportunity comes along.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If we can reduce our monthly expenses to just a few hundred dollars (not including rent), Kristi and I can experiment with extended international travel.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If I can build a strong network of professional relationships, I can learn from experts and expose myself to really cool job opportunities.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If I can achieve a fairly high level of fitness, I can enjoy opportunities to by physical, as they arise. (Have you ever run all the way up the 
&lt;a href="http://www.google.com/url?sa=i&amp;amp;source=images&amp;amp;cd=&amp;amp;cad=rja&amp;amp;docid=872fAOzMkt0TrM&amp;amp;tbnid=7kH6HH-1NrxcVM:&amp;amp;ved=&amp;amp;url=http%3A%2F%2Fcommons.wikimedia.org%2Fwiki%2FFile%3A2008_04_21_-_Bethesda_-_Medical_Center_Metro_Station_2.JPG&amp;amp;ei=JVD5UcjZJLXk4APWsICgDQ&amp;amp;psig=AFQjCNEoza2nDjWsL18oS0PPf-BlYyug3A&amp;amp;ust=1375379877670791"&gt;Medical Center metro escalator&lt;/a&gt;? I’ve tried a few times, and last time I went up it, I ran the whole way. It was awesome.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If I can build a strong, trusting relationship with my wife, we can do hard things without experiencing as much 
&lt;a href="/blog/2013/07/18/rules-for-fighting-fair"&gt;relationship stress&lt;/a&gt; as we would if it were a weak relationship.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where on this list does 
&lt;a href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard"&gt;Dvorak typing&lt;/a&gt; fit in?&lt;/p&gt;

&lt;p&gt;It doesn’t.&lt;/p&gt;

&lt;p&gt;How about 
&lt;a href="http://lifehacker.com/how-i-taught-myself-to-code-in-eight-weeks-511615189"&gt;learning to code&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;Not yet.&lt;/p&gt;

&lt;p&gt;I want to build
&lt;a href="http://www.investopedia.com/terms/a/anti-fragility.asp"&gt;antifragility&lt;/a&gt;into our lifestyle. We’re getting there, but have a ways to go yet.&lt;/p&gt;

&lt;p&gt;I don’t yet know exactly how to make my big goals happen, but I do know I can take steps to be prepared. I cannot let my uncertainty prevent preparation, so right now, we are figuring out how to reduce our possessions, reduce our living expenses, possibly grow our income, and expose ourselves to cool opportunities and relationships. Then, when something amazing comes up, we will be able to jump on it.&lt;/p&gt;

&lt;p&gt;How about you? What big dreams do you have? Are you putting yourself in a position to be exposed to these opportunities, and take advantage of them when you encounter one?&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Wed, 31 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/2013/07/31/dream-big-and-build-optionality/</guid></item><item><title>The Future of Programming</title><link>https://nicolaiarocci.com/the-future-of-programming/</link><description>&lt;p&gt;&lt;a href="http://vimeo.com/worrydream"&gt;Bret Victor&lt;/a&gt; on &lt;a href="https://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Wed, 31 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/the-future-of-programming/</guid></item><item><title>Guides to buying things</title><link>https://rd.nz/2013/07/guides-to-buying-things.html</link><author>Rich Dougherty</author><pubDate>Tue, 30 Jul 2013 10:45:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/07/guides-to-buying-things.html</guid></item><item><title>SF New Tech Presentation on Gigwalk</title><link>https://www.mattcrampton.com/blog/SF_New_Tech_Gigwalk_Preso/</link><description>SF New Tech Presentation on Gigwalk On Jul 30, 2013 I gave a presentation at SF New Tech on Gigwalk, crowdsourcing and the gig economy. Download Presentation Video File size: 119mb</description><author>MattCrampton.com</author><pubDate>Tue, 30 Jul 2013 08:00:00 GMT</pubDate><guid isPermaLink="true">https://www.mattcrampton.com/blog/SF_New_Tech_Gigwalk_Preso/</guid></item><item><title>Excuses for Lazy Coders</title><link>https://nicolaiarocci.com/excuses-for-lazy-coders/</link><description>&lt;blockquote&gt;
&lt;p&gt;Did you check for a virus on your system?&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;You must have the wrong version.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s a third party application issue.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;That code was written by the last guy.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;Programming Excuses&lt;!-- raw HTML omitted --&gt;. We’ve all been there.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 30 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/excuses-for-lazy-coders/</guid></item><item><title>Documenting your PostgreSQL database</title><link>/2013/07/29/Documenting-your-PostgreSQL-database/</link><description>&lt;p&gt;Just a few days ago I was surprised by what someone was doing with their database, and not in the typical horrifying travesty against mankind. Rather, it was a feature that while familiar with I&amp;rsquo;d never seen anyone fully take proper advantage of - &lt;code&gt;COMMENT&lt;/code&gt; or describing tables. Postgres has a nice facility for you to provide a description for just about anything:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table&lt;/li&gt;
&lt;li&gt;Column&lt;/li&gt;
&lt;li&gt;Function&lt;/li&gt;
&lt;li&gt;Schema&lt;/li&gt;
&lt;li&gt;View&lt;/li&gt;
&lt;li&gt;Index&lt;/li&gt;
&lt;li&gt;Etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The specific use case was a database acting as a datamart pulling in data from multiple sources to be able to report against disparate data. Over the years I&amp;rsquo;ve seen this occur really one three ways, the first is that a limited set of people, typically one person, have knowledge over all the datasources and thus far the sole individual responsible for creating reports and answering questions of the data. The second, is wide open access to anyone that wishes for it. In this case you often have people asking questions of the data, and because they don&amp;rsquo;t understand the relationships coming up to entirely wrong conclusions. The final approach is to create some external documentation, entity relationship diagrams, data dictionaries, etc. This last one often works okay enough, but often suffers from lack of updates and being too heavyweight.&lt;/p&gt;
&lt;p&gt;A better solution, and all around good process is simply documenting clearly within the database itself. Simply comment each table and column, just as you would outside of your DB then it can be quite clear when inside the database working interactivly:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;COMMENT ON TABLE products IS 'Products catalog';
COMMENT ON COLUMN products.price is 'Current price of a single item purchased';
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While an obvious example above naming even the most mundance columns can help create more accurate reports. Then of course when you want to inspect your DB its quite clear:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\d+ users
# \d+ users
Table &amp;quot;public.users&amp;quot;
Column | Type | ... | Description
------------+-----------------------------+-...-+-----------------------------------------
id | integer | ... | auto serial pk
first_name | character varying(50) | ... | required first name of user
last_name | character varying(50) | ... | required first name of user
email | character varying(255) | ... | email address of account
data | hstore | ... | mix of data, city, state, gender
created_at | timestamp without time zone | ... | when account was created, not confirmed
updated_at | timestamp without time zone | ... | time any details were last updated
Indexes:
&amp;quot;idx_user_created&amp;quot; btree (date_trunc('day'::text, created_at))
Has OIDs: no
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But it doesn&amp;rsquo;t necessarily have to stop there. Which actually brings me to one other item, you should be commenting your SQL just the same. SQL comments can be done easily by just starting a line with &lt;code&gt;--&lt;/code&gt;, or you can have it at the end of the line with further info. Here&amp;rsquo;s a nice example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- Query aggregates all project names that have open past due tasks grouped by email
SELECT
users.email,
array_to_string(array_agg(projects.name), ',')) as projects # Aggregate all projects and separate by comma
FROM
projects,
tasks,
users
-- A user has a project, which has tasks
WHERE projects.id = tasks.project_id
-- Check for tasks that are due before now and not done yet
AND tasks.due_at &amp;gt; tasks.completed_at
AND tasks.due_at &amp;lt; now()
AND users.id = projects.user_id
GROUP BY
users.email
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You comment your code, why shouldn&amp;rsquo;t you comment your database?&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Mon, 29 Jul 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/07/29/Documenting-your-PostgreSQL-database/</guid></item><item><title>Gigablast Aquired and Code Posted</title><link>https://boyter.org/2013/07/gigablast-aquired-code-posted/</link><description>&lt;p&gt;Interestingly it seems that Matt Well&amp;rsquo;s search engine Gigablast has been acquired by Yippy.com [&lt;a href="http://www.prnewswire.com/news-releases/yippy-inc-yipi-to-acquire-gigablast-inc-and-web-research-properties-llc-to-expand-consumer-search-enterprise-and-ediscovery-products-213120401.html"&gt;1&lt;/a&gt;]&lt;a href="http://www.prnewswire.com/news-releases/yippy-inc-yipi-to-acquire-gigablast-inc-and-web-research-properties-llc-to-expand-consumer-search-enterprise-and-ediscovery-products-213120401.html"&gt;1&lt;/a&gt; [&lt;a href="http://arnoldit.com/wordpress/2013/07/19/acquisition-of-gigablast-by-yippy-inc-leaves-some-questions-unanswered/"&gt;2&lt;/a&gt;]&lt;a href="http://arnoldit.com/wordpress/2013/07/19/acquisition-of-gigablast-by-yippy-inc-leaves-some-questions-unanswered/"&gt;2&lt;/a&gt; [&lt;a href="http://ca.finance.yahoo.com/news/yippy-inc-yipi-acquire-gigablast-130000100.html"&gt;3&lt;/a&gt;]&lt;a href="http://ca.finance.yahoo.com/news/yippy-inc-yipi-acquire-gigablast-130000100.html"&gt;3&lt;/a&gt; (&lt;a href="http://demo.yippy.com/"&gt;demo here http://demo.yippy.com/&lt;/a&gt;). Gigablast has always been one of my favorite search engines simply because it is so interesting. Started by a single guy, with an interesting blog and being one of the last true new indexes of the web it was always worth a look. While its sad to see it go this way I am happy that Matt presumably has been able to cash out on his creation. Well done to him. I must admit Gigablast had been going downhill for a while and this might explain why ProCog appeared and then vanished so quickly.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Mon, 29 Jul 2013 08:58:30 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/07/gigablast-aquired-code-posted/</guid></item><item><title>Free Robust Email Validation API</title><link>https://nicolaiarocci.com/free-email-validation-api/</link><description>&lt;p&gt;The guys at Mailgun are taking a &lt;!-- raw HTML omitted --&gt;very interesting approach&lt;!-- raw HTML omitted --&gt; at the ever-lasting problem of proper Email validation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Given an arbitrary address this service validates address based off syntax checks (RFC defined grammar), DNS validation, spell checks, and if available, Email ServiceProvider (ESP) specific local-part grammar.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;They’re relying on &lt;!-- raw HTML omitted --&gt;formal grammar&lt;!-- raw HTML omitted --&gt; and not on regex like the rest of us, which is perhaps the more intriguing aspect of the project. Being Email Service Providers themselves they have good knowledge of most ESPs local-part grammars (the left side of the @ symbol) so when there is a match, they’re validating local-parts too.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Mon, 29 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/free-email-validation-api/</guid></item><item><title>Upgrade makes Mirabox unbootable</title><link>https://kyrofa.com/posts/upgrade-makes-mirabox-unbootable/</link><description>For some reason (I can&amp;rsquo;t really put a finger on it exactly), I like to keep my servers up-to-date. I know! All those security patches, all those new features&amp;ndash; they&amp;rsquo;re a killer!
In all seriousness, I host several websites on a Mirabox from right behind my TV. I hopped on the plug computing train way back when the SheevaPlug was just a dev kit, and I&amp;rsquo;ve been on it ever since.</description><author>kyrofa's blog</author><pubDate>Mon, 29 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://kyrofa.com/posts/upgrade-makes-mirabox-unbootable/</guid></item><item><title>Warm Bodies</title><link>https://olshansky.info/movie/warm_bodies/</link><description>Olshansky's review of Warm Bodies</description><author>🦉 olshansky 🦁</author><pubDate>Sun, 28 Jul 2013 16:43:37 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/warm_bodies/</guid></item><item><title>Art of Living Foundation's Kurshed Batliwala Debunked</title><link>https://www.anmolsarma.in/post/kurshed-batliwala-debunked/</link><description>&lt;p&gt;A critical look at Khurshed Batliwala’s talk, “Technology of Spirituality” delivered at Ruia College, Mumbai.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;center&gt;&lt;/center&gt;
&lt;p&gt;Mr. Batliwala makes a number of extraordinary claims about the state of ancient Indian science and technology. Most of them however, turn out to be exaggerations, misinterpretations or outright fabrications. He then attributes all scientific progress to ‘spirituality’.&lt;/p&gt;
&lt;p&gt;The talk is nothing more than a sales pitch for Mr. Mr. Ravi Shankar’s ‘Art of Living Foundation’.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description><author>Anmol Sarma</author><pubDate>Sun, 28 Jul 2013 13:07:52 GMT</pubDate><guid isPermaLink="true">https://www.anmolsarma.in/post/kurshed-batliwala-debunked/</guid></item><item><title>Recursively download website files using WGET</title><link>https://thomashunter.name/posts/2013-07-28-recursively-download-website-files-using-wget</link><author>Thomas Hunter II</author><pubDate>Sun, 28 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-07-28-recursively-download-website-files-using-wget</guid></item><item><title>Customizing Your Mac Input Source Icon</title><link>https://sal.dev/hack/customizing-mac-input-source-icon/</link><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Pair_programming"&gt;Pair programming&lt;/a&gt; is pretty common around &lt;a href="http://corner.squareup.com/"&gt;Square&lt;/a&gt;, and I’ve had the fortunate experience of pairing with my manager, &lt;a href="http://xaviershay.com/"&gt;Xavier&lt;/a&gt;. Now, if (you have a Mac and) you’ve ever had to type in a different language, you know that there is a flag in the top right corner that signifies the layout.
&lt;img alt="Qwerty" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/qwerty.png" /&gt;
The U.S. traditional Qwerty layout that we all know and love.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Dvorak" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/dvorak.png" /&gt;
A layout for people who want to try new things.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Pinyin" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/pinyin.png" /&gt;
The layout I had to use for the one semester I took Chinese.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Colemak" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/colemak.png" /&gt;
The layout that I never heard of before Square and a layout that pretty much only Xavier uses.&lt;/p&gt;

&lt;p&gt;This brings us back to pair programming. Xavier is very proficient with his keyboard layout and added it to the configurations. When I first the little ‘CO’ in the top corner, I joked that it stood for ‘communist’, and from then on, it was referred to as Xavier’s communist layout. To drive the point home, I changed the display from this…
&lt;img alt="" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/colemak_full.png" /&gt;
… to this …
&lt;img alt="" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/communist_full.png" /&gt;&lt;/p&gt;

&lt;h2 id="how-to-make-a-custom-layout"&gt;How to make a custom layout&lt;/h2&gt;

&lt;h3 id="step-1-make-an-icon"&gt;Step 1: Make an icon.&lt;/h3&gt;
&lt;p&gt;Select an image for your layout, and visit &lt;a href="http://iconverticons.com/online/"&gt;iConvert&lt;/a&gt;. I tried their software with no luck, but you might have a better outcome. Browse to your image and hit convert. Once it does its magic, click the “Download .icns” button.
&lt;img alt="Download icns" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/download_icns.png" /&gt;&lt;/p&gt;

&lt;h3 id="step-2-make-the-keyboard-layout"&gt;Step 2: Make the keyboard layout&lt;/h3&gt;
&lt;p&gt;Download the Unicode Keyboard Layout Editor, &lt;a href="http://scripts.sil.org/ukelele"&gt;Ukelele&lt;/a&gt; (version 2.2.4 worked for me), and open it. Once you have it open, make sure your keyboard layout is the one you want to replicate.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Ukelele's icon is a ukulele" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/Ukelele_512x512x32.png" /&gt;&lt;/p&gt;

&lt;p&gt;If it isn’t you can change it by navigating to  &amp;gt; &lt;strong&gt;System Preferences&lt;/strong&gt; &amp;gt; &lt;strong&gt;Language &amp;amp; Text&lt;/strong&gt; &amp;gt; &lt;strong&gt;Input Sources&lt;/strong&gt; and checking the box for the layout you want. Then, click the layout icon in the top right corner of your screen and select the one you want.&lt;/p&gt;

&lt;p&gt;&lt;img alt="check language" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/check_language.png" /&gt;&lt;/p&gt;

&lt;p&gt;In Ukelele, select &lt;strong&gt;File&lt;/strong&gt; &amp;gt; &lt;strong&gt;New From Current Input Source&lt;/strong&gt; which should open a new keyboard window with your current keyboard layout.&lt;/p&gt;

&lt;p&gt;Then, set your icon file by going to &lt;strong&gt;Keyboard&lt;/strong&gt; &amp;gt; &lt;strong&gt;Attach Icon File…&lt;/strong&gt; and layout name by going to &lt;strong&gt;Keyboard&lt;/strong&gt; &amp;gt; &lt;strong&gt;Set Keyboard Name…&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Finally save your layout by going to &lt;strong&gt;File&lt;/strong&gt; &amp;gt; &lt;strong&gt;Save As Bundle…&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img alt="save as bundle" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/save_as_bundle.png" /&gt;&lt;/p&gt;

&lt;h3 id="step-3-use-the-layout"&gt;Step 3: Use the layout&lt;/h3&gt;
&lt;p&gt;To install the layout, take your newly minted .bundle file and store it in your Library/Keyboard Layouts folder. If you can’t find this folder, go to &lt;strong&gt;Applications&lt;/strong&gt; &amp;gt; &lt;strong&gt;Utilities&lt;/strong&gt; &amp;gt; &lt;strong&gt;Terminal&lt;/strong&gt; and paste this line in:&lt;/p&gt;

&lt;p&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;open ~/Library/Keyboard\ Layouts/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt="open image library" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/open_image_library.png" /&gt;&lt;/p&gt;

&lt;p&gt;Once you have your bundle in the layout folder, restart your computer, and your new layout will be listed under  &amp;gt; &lt;strong&gt;System Preferences&lt;/strong&gt; &amp;gt; &lt;strong&gt;Language &amp;amp; Text&lt;/strong&gt; &amp;gt; &lt;strong&gt;Input Sources&lt;/strong&gt;. Check your custom keyboard, select it from the top corner.&lt;/p&gt;

&lt;p&gt;&lt;img alt="select layout" src="/assets/article_images/2013-07-28-customizing-mac-input-source-icon/select_layout.png" /&gt;&lt;/p&gt;

&lt;h3 id="step-4-optional-share"&gt;Step 4 (optional): Share&lt;/h3&gt;
&lt;p&gt;When you share your layout bundle, make sure to upload it to Dropbox or Skydrive and send the link to the bundle. I tried emailing the bundle and Gmail striped-out some important piece that prevented it from working.&lt;/p&gt;

&lt;p&gt;Here is the &lt;a href="/files/posts/custom_keyboard_layout/Communist.bundle.zip"&gt;Communist Colmak&lt;/a&gt; and &lt;a href="/files/posts/custom_keyboard_layout/Jedi.bundle.zip"&gt;Jedi Dvorak&lt;/a&gt; that I made for Xavier and this blog post respectively.&lt;/p&gt;</description><author>Salvatore's Blog</author><pubDate>Sun, 28 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://sal.dev/hack/customizing-mac-input-source-icon/</guid></item><item><title>Again, some updates</title><link>https://bastian.rieck.me/blog/2013/some_updates/</link><description>&lt;p&gt;I finally managed to deliver some dearly-required updates. Most notably for visitors other than the
Google Bot, I added a new portrait that greets visitors with a smile.&lt;/p&gt;
&lt;p&gt;In the wake of the whole &lt;a href="https://en.wikipedia.org/wiki/2013_mass_surveillance_scandal"&gt;&amp;ldquo;2013 mass surveillance scandal&amp;rdquo;&lt;/a&gt; made public by &lt;a href="https://en.wikipedia.org/wiki/Edward_Snowden"&gt;&amp;ldquo;Edward Snowden&amp;rdquo;&lt;/a&gt;, I finally severed the
last ties to Google. Without thinking too much about it, I had used a customized Google Analytics
tracker on all pages. Following the German privacy laws, I instructed the tracker to make the IP
addresses anonymous (which amounts to discarding the last 8 bits of each address). After the
curiously precise denials by Apple, Facebook, and Google regarding their participation in PRISM, it
struck me: I had thrown my visitors to the wolves–without their consent and (sometimes) their
knowledge.&lt;/p&gt;
&lt;p&gt;The only viable course of action was thus to remove &lt;em&gt;all&lt;/em&gt; tracking code. I still count site visits,
but only using internal log files that are not served by Apache. I am sorry for not thinking clearly
about this. If you value your privacy, I would strongly suggest installing
&lt;a href="http://www.ghostery.com"&gt;Ghostery&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To end this post on a lighter and informative note: My site now features a news box at last,
courtesy of &lt;a href="http://ikiwiki.info"&gt;ikiwiki&lt;/a&gt;. The main index page will now always show the five latest
blog posts, making it easier for me to point out new content.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sat, 27 Jul 2013 22:08:12 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/some_updates/</guid></item><item><title>Automating Git Branch Cleanup</title><link>https://joshuarogers.net/articles/2013-07/automating-git-branch-cleanup/</link><description>I'm a huge fan of Git. Used properly, Git's branching system can be immensely powerful. In fact, it forms a core part of our engineering workflow at the office. By providing a healthy degree of isolation between different changes to the codebase, we can provide QA with a clean way to test various change sets in total isolation before we produce a release candidate.
This sounds rather nice until the realization that after we finally get a release candidate that we accept, somebody is left we the rather tedious job of removing all of the source branches from our repo.</description><author>Joshua Rogers</author><pubDate>Sat, 27 Jul 2013 15:00:00 GMT</pubDate><guid isPermaLink="true">https://joshuarogers.net/articles/2013-07/automating-git-branch-cleanup/</guid></item><item><title>URL path segment encoding</title><link>https://rd.nz/2013/07/url-path-segment-encoding.html</link><description>Don't use form encoding</description><author>Rich Dougherty</author><pubDate>Sat, 27 Jul 2013 12:29:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/07/url-path-segment-encoding.html</guid></item><item><title>Instant Backbone.js Application Development</title><link>https://thomashunter.name/posts/2013-07-27-i-wrote-a-book-instant-backbonejs-application-development</link><author>Thomas Hunter II</author><pubDate>Sat, 27 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-07-27-i-wrote-a-book-instant-backbonejs-application-development</guid></item><item><title>Pixar Optix Lighting Preview Demo</title><link>https://blog.yiningkarlli.com/2013/07/pixar-optix-lighting-preview-demo.html</link><description>&lt;p&gt;For the past two months or so, I’ve been working at Pixar Animation Studio as a summer intern with &lt;a href="http://graphics.pixar.com/research/"&gt;Pixar’s Research Group&lt;/a&gt;. The project I’m on for the summer is a realtime, GPU based lighting preview tool implemented on top of &lt;a href="http://www.nvidia.com/object/optix.html"&gt;NVIDIA’s OptiX framework&lt;/a&gt;, entirely inside of &lt;a href="http://www.thefoundry.co.uk/products/katana/"&gt;The Foundry’s Katana&lt;/a&gt;. I’m incredibly pleased to be able to say that our project was demoed at SIGGRAPH 2013 at the NVIDIA booth, and that NVIDIA has a recording of the entire demo online!&lt;/p&gt;

&lt;p&gt;The demo was done by our project’s lead, Danny Nahmias, and got an overwhelmingly positive reception. Check out the recording here:&lt;/p&gt;

&lt;div class="embed-container"&gt;Using NVIDIA® OptiX™ for Lighting Preview in a Katana-Based Production Pipeline&lt;/div&gt;

&lt;p&gt;FXGuide also did a podcast about our demo! Check it out &lt;a href="http://www.fxguide.com/fxpodcasts/fxpodcast-258-siggraph-2013-final-report/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’m just an intern, and the vast majority of the cool work being done on this project is from Danny Nahmias, Phillip Rideout, Mark Meyer, and others, but I’m very very proud, and consider myself extraordinarily lucky, to be part of this team!&lt;/p&gt;

&lt;p&gt;Edit: I’ve replaced the original Ustream embed with a Vimeo mirror since the Ustream embed was crashing Chrome for some people. The original Ustream link is &lt;a href="http://ustream.tv/recorded/36266865"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Sat, 27 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/07/pixar-optix-lighting-preview-demo.html</guid></item><item><title>Reawakening the Starborn</title><link>https://benovermyer.com/blog/2013/07/reawakening-the-starborn/</link><description>&lt;p&gt;About a year and a half ago, I started a project to create a sci-fantasy sandbox MMORPG. It was called Starborn: Universe. I went through the trouble of getting a HeroEngine/HeroCloud environment and began learning the toolset. Design documents popped up in my Documents folder and on the dev blog I started for the project. Then, I got busy with other things, and Starborn: Universe went dark. Until now. I'm dusting off the design documents, but Starborn: Universe is as much of an experiment as it is a game. See, my theory is that online player-driven games can start with very little and grow over time. The idea of the “Lean Startup” can apply just as much to an MMORPG as it can to an iOS app. The trick is that MMORPGs are hard to produce. They have a lot of moving parts and require a lot of resources on the part of the developer and operator. So how does one or two people accomplish this monumental feat? By starting small, and iterating quickly. If you're curious as to what I have in mind, head over to the &lt;a href="https://starbornuniverse.wordpress.com/" rel="external"&gt;Starborn: Universe devlog&lt;/a&gt;. That's where I'll be writing about Starborn.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 27 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/07/reawakening-the-starborn/</guid></item><item><title>CoffeeScript's Scoping is Madness</title><link>https://donatstudios.com/CoffeeScript-Madness</link><description>&lt;p&gt;&lt;a href="https://coffeescript.org/"&gt;CoffeeScript&lt;/a&gt; is a programming language that compiles to JavaScript. Its mission is to &amp;quot;expose the good parts of JavaScript in a simple way&amp;quot;. I've  heard a lot of interest in it lately from various channels. &lt;/p&gt;
&lt;p&gt;After a coworkers departure, I inherited maintenance on our deployment bot, and it was written in CoffeeScript. While trying to make some small modifications, I ended up getting unexpected issues I didn't understand. Things I did not touch were suddenly breaking. I did not understand until I investigated the generated JavaScript.&lt;/p&gt;
&lt;p&gt;It ends up CoffeeScripts approach to scoping of variables is to not scope variables. There is no shadowing. There is no &lt;code&gt;var&lt;/code&gt;, &lt;code&gt;let&lt;/code&gt; nor &lt;code&gt;const&lt;/code&gt; equivalent, there is simply no way to explicitly define scope. &lt;/p&gt;
&lt;p&gt;Variables in CoffeeScript are scoped to their outermost definition, regardless of whether the name was already in use elsewhere. When you use a variable of a name, its scope now includes all inner scopes, trampling any existing definitions of the variable in those scopes.&lt;/p&gt;
&lt;p&gt;Let's examine the following examples:&lt;/p&gt;
&lt;div style="display: grid;"&gt;
&lt;strong&gt;CoffeeScript&lt;/strong&gt;
&lt;pre&gt;&lt;code&gt;test = (x) -&amp;gt;
  y = 10
  x + y;

alert test 5&lt;/code&gt;&lt;/pre&gt;
&lt;strong&gt;Generated JavaScript&lt;/strong&gt;
&lt;pre&gt;&lt;code&gt;var test;

test = function(x) {
  var y;
  y = 10;
  return x + y;
};

alert(test(5));&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now let's make one small change and define a variable &lt;code&gt;y&lt;/code&gt; in the outer scope, outside the function.&lt;/p&gt;
&lt;div style="display: grid;"&gt;
&lt;strong&gt;CoffeeScript&lt;/strong&gt;
&lt;pre&gt;&lt;code&gt;y = 0;
test = (x) -&amp;gt;
  y = 10
  x + y;

alert test 5&lt;/code&gt;&lt;/pre&gt;
&lt;strong&gt;Generated JavaScript&lt;/strong&gt;
&lt;pre&gt;&lt;code&gt;var test, y;

y = 0;

test = function(x) {
  y = 10;
  return x + y;
};

alert(test(5));&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h2&gt;The Problem&lt;/h2&gt;
&lt;p&gt;Notice the highlighting indicating the scope of the &lt;code&gt;y&lt;/code&gt; variable. By defining &lt;code&gt;y&lt;/code&gt; in the global scope all subsequent &lt;code&gt;y&lt;/code&gt;'s are also now that global. You may no longer have a variable named &lt;code&gt;y&lt;/code&gt; in your code, at any deeper scope. The outer &lt;code&gt;y&lt;/code&gt; is the only &lt;code&gt;y&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Creating a global of a name given overrides all subsequent definitions.&lt;/p&gt;
&lt;p&gt;In JavaScript &lt;code&gt;var&lt;/code&gt;, &lt;code&gt;let&lt;/code&gt;, and &lt;code&gt;const&lt;/code&gt; keywords define the scope of a variable. Leave it out and it scopes downward until it hits a &lt;code&gt;var&lt;/code&gt; definition of that variable &lt;em&gt;or&lt;/em&gt; the global level. This means that inner scopes inherits from outer scopes &lt;em&gt;unless&lt;/em&gt; it defines its own scope of the variable.  CoffeeScript on the other hand offers you no method to scope a variable. Scoping is entirely left to the lowest level use of a &lt;em&gt;variable name&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This behavior is dangerous and makes code very difficult to maintain. The problem is twofold. Firstly, when writing a function, you need to be aware of all shallower scopes variable definitions, as not to trample them. Secondly, when altering code at any scope but the outermost, you need to be aware of all deeper scopes variables as to not trample any of them. &lt;/p&gt;
&lt;p&gt;The only &amp;quot;safe&amp;quot; way to write CoffeeScript is to assume all variable names are global. In practice they are.&lt;/p&gt;
&lt;p&gt;There have been proposed solutions, such as a Go-lang style &lt;code&gt;:=&lt;/code&gt; for inner scoping, but these have not been accepted as of this writing. The creator of CoffeeScript, Jeremy Ashkenas, when questioned about it by Armin Ronacher on Twitter replied:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Not gonna happen ;) Forbidding shadowing altogether is a huge win, and a huge conceptual simplification.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is not true for applications of any scale larger than toy. It makes development more complex, having to check every inner scope before using a new variable name. This is not simpler. The entire behaviour of all inner scopes can change with a single bad variable defintion.&lt;/p&gt;
&lt;h2&gt;Finally&lt;/h2&gt;
&lt;p&gt;CoffeeScripts goal of &amp;quot;expos[ing] the good parts of JavaScript in a simple way&amp;quot; was &lt;strong&gt;missed&lt;/strong&gt;.  Instead of improving JavaScript's scoping which can be kind of daunting to learn, they actually made it worse. If you want to improve JavaScript make every variable &lt;em&gt;local&lt;/em&gt; until explicitly defined global, as is the behavior in the vast majority of languages.&lt;/p&gt;
&lt;p&gt;JavaScripts &amp;quot;&lt;em&gt;global unless defined as local&lt;/em&gt;&amp;quot; behavior is weird, but manageable. CoffeeScript's &amp;quot;&lt;em&gt;local until defined &lt;strong&gt;elsewhere&lt;/strong&gt; globally&lt;/em&gt;&amp;quot; behavior on the other hand is simply difficult to predict and makes it easy to accidentally change the entire meaning of code even when you entirely understand the behavior.&lt;/p&gt;
&lt;p&gt;It is a &lt;strong&gt;bad&lt;/strong&gt; behavior, period.&lt;/p&gt;
&lt;h2&gt;Further Reading&lt;/h2&gt;
&lt;p&gt;I'd like to also suggest reading Armin Ronacher's &lt;a href="https://lucumr.pocoo.org/2011/12/22/implicit-scoping-in-coffeescript/"&gt;The Problem with Implicit Scoping in CoffeeScript&lt;/a&gt;.  It eloquently describes the problem from a slightly different angle.&lt;/p&gt;
&lt;h2&gt;Update&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I've a fight on Reddit &lt;a href="https://www.reddit.com/r/programming/comments/1j1cw7/coffeescripts_scoping_is_madness/"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I've irked Reginald Braithwaite, the author of &lt;a href="https://leanpub.com/coffeescript-ristretto"&gt;CoffeeScript Ristretto&lt;/a&gt;, so badly he's giving away &lt;a href="https://twitter.com/raganwald/status/360501252162981888"&gt;100 copies of his book for free&lt;/a&gt;!
&lt;ul&gt;
&lt;li&gt;The author has upgraded me to &lt;em&gt;&lt;a href="https://web.archive.org/web/20221122115820/https://twitter.com/raganwald/status/360514948956303361"&gt;Not Wrong&lt;/a&gt;&lt;/em&gt;™!&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Donat Studios</author><pubDate>Fri, 26 Jul 2013 01:19:44 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/CoffeeScript-Madness</guid></item><item><title>SSDs are awesome, buy one.</title><link>https://tomforb.es/blog/ssd-s-are-awesome/</link><description>I recently brought a Samsung 840 Series Pro 256GB 2.5 inch SATA Solid State Drive and its easily the best PC hardware purchase I have ever made. Before I purchased it I was thinking about replacing my laptop as it was getting pretty sluggish, despite having decent specs even 2 years after I purchase...</description><author>Tom Forbes</author><pubDate>Thu, 25 Jul 2013 22:54:58 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/ssd-s-are-awesome/</guid></item><item><title>Do I look like I give a shit (public license)</title><link>https://blog.samuellevy.com/post/46-do-i-look-like-i-give-a-shit-public-license.html</link><description>&lt;p&gt;I'll make this short and sweet. I felt that we needed a new license. Blogfile was/is released under the WTFPL, and it's sub-project, SHITLang was also released under the same license.&lt;/p&gt;&lt;p&gt;I have no interest in maintaining SHITLang, and wanted to discourage people from trying to get me to look at pull requests.&lt;/p&gt;&lt;p&gt;Anyway, today, it is moving to the brand new license that I created (based heavily on the concept of the WTFPL): the Do I Look Like I Give A Shit Public License.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;So what should this license be used for?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You are sick of maintaining a side project&lt;/li&gt;&lt;li&gt;You really don't give a shit about the project&lt;/li&gt;&lt;li&gt;You …&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;</description><author>Sam says you should read this</author><pubDate>Thu, 25 Jul 2013 20:10:52 GMT</pubDate><guid isPermaLink="true">https://blog.samuellevy.com/post/46-do-i-look-like-i-give-a-shit-public-license.html</guid></item><item><title>My Good Friends (Who Don't Know Me)</title><link>https://josh.works/home/2013/07/25/my-good-friends-who-dont-know-me/</link><description>&lt;p&gt;Rumor has it you become like those you spend time with. Or “birds of a feather flock together”, or “you are what you eat”. Maybe that last one was Hannibal Lector, 
&lt;a href="http://youtu.be/09TAIcCqFpg?t=27s"&gt;having an old friend for dinner.&lt;/a&gt;
Anyway, the person that 
you are is influenced by the people you spend time with. Ditto for me. There are three kinds of people you can spend time with: 
real people who know you just as you know them, 
real people who do not know you, but you know them, and
imaginary/fictitious people who have never existed.&lt;/p&gt;

&lt;p&gt;We’ll come back around to that last category in a minute. I am not insane.
more&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mentors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are people who I know, who know me, that I seek out to spend time with. I call them 
mentors. Some of these relationships have popped up out of nowhere (thanks, Wayne), while others have been more formal. (Think 
paid counseling.) You should seek these people out, because the value you can derive from these relationships is nearly endless. Life changing. Seriously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role Models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Real people who I know but don’t know me, I’ll call 
role models. They are people that, for some reason or another, I want to emulate. It is important to specify the 
way I want to emulate these people. An easy example is Chris Sharma - an amazing rock climber, but sort of 
&lt;a href="http://youtu.be/McWaEZPMfag?t=3s"&gt;looks like he’s stoned all the time&lt;/a&gt;&lt;a href="http://youtu.be/McWaEZPMfag?t=3s"&gt;.&lt;/a&gt; I want to climb like him, not communicate like him.&lt;/p&gt;

&lt;p&gt;Other examples: books and blogs by or about noteworthy figures (
why they are noteworthy is entirely up to you) make up the bulk of this category.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Literary Role Models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In high school and college, we all had to read high quality literature. If you were like me, you didn’t much care to read this stuff, for a 
&lt;a href="http://online.wsj.com/article/SB10001424127887323823004578595803296798048"&gt;variety of reasons.&lt;/a&gt; Since I’ve finished college, I’ve dug back into books (and learned more for less than I ever did in college - that’s another discussion all together.) but I’ve enjoyed both non-fiction 
and fiction.&lt;/p&gt;

&lt;p&gt;When I read fiction, some times it’s classy (think of a famous dead author - he’s classy) and sometimes it’s not as classy, 
&lt;a href="http://www.amazon.com/The-Returners-Season-Part-ebook/dp/B00810TW6Y"&gt;but still interesting.&lt;/a&gt;No matter how classy or non it is, when you spend a few hours immersed in a world of the author’s creation, you’re spending time with the individuals in that book. If you “spend time” with people who wrestle with hard problems and make good decisions and generally conduct themselves in an honorable, respectable way, you are surrounding yourself with people who make good decisions and conduct themselves in an honorable and respectable way.&lt;/p&gt;

&lt;p&gt;Another title for “literary role models” is “imaginary friends”. Don’t judge. They influence you, they’ve just never had a physical existence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Friends Matter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I am now going to lump all three categories above into a bucket named “friends”. These categories differ from your normal, every day friends in at least one specific way: 
You must seek them out. Only one of these groups of people (physical people who know you) can influence you 
without your permission. Think of a text from a friend - you didn’t ask for it, but you’re being influenced by its content. In the other two categories, you must seek out that person (or literary figure), and intentionally expose yourself to their influence.&lt;/p&gt;

&lt;p&gt;Much of your family life you don’t have much control over. Nor do you have control over where you 
went to school, or the friends you 
once had. Your past cannot be changed. Your 
present is mostly a 
&lt;a href="http://en.wikipedia.org/wiki/Function_%28mathematics%29"&gt;function&lt;/a&gt; of your past. Your future, on the other hand, is up for grabs. If you are not intentional about influencing your future, you won’t do much about influencing your present context, and, therefore, your future will largely be determined by your past.&lt;/p&gt;

&lt;p&gt;Bear with me.&lt;/p&gt;

&lt;p&gt;If you want to influence your future, but you’re not sure how you want to do so, consider spending time with those you want to emulate. You can emulate a professional painter not because he’s a painter, but because he’s a 
professional. You can emulate an amazing teacher not because he’s a teacher, but because he’s 
amazing. You can emulate a real estate investor not because they know real estate, but because they have figured out how to turn one dollar into two dollars. You can emulate a Buddhist monk not because they’re a monk, or a Buddhist, but because they are 
content. You can emulate a passionate computer programmer not because they are a computer programmer but because they are… 
passionate.&lt;/p&gt;

&lt;p&gt;You can choose who you spend time with, who you emulate. If you’re not ready to follow around a physical person to be more like them, you can follow around a digital one or an imaginary one. Find out who’s influenced them, and go be influenced by them.&lt;/p&gt;

&lt;p&gt;Whatever you do, please
,find some quality in some person to emulate. Expose yourself to that quality, to that person (without exposing yourself in the criminal sense) and you’ll find yourself slowly gaining more and more influence over your future.&lt;/p&gt;

&lt;p&gt;I will soon discuss 
my mentors, role models, and imaginary friends. I have dozens, if not hundreds. Literally 
nothing that comes out of my mouth or rattles around in my head is original, and I’d be a fool to pretend otherwise.&lt;/p&gt;

&lt;p&gt;Do 
you have mentors, role models, or imaginary friends?&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Thu, 25 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/home/2013/07/25/my-good-friends-who-dont-know-me/</guid></item><item><title>Eve v0.0.8 has been released</title><link>https://nicolaiarocci.com/eve-v0-0-8-has-been-released/</link><description>&lt;p&gt;Most significant features are probably the native support for MongoDB write concern settings, new event hooks allowing for transformation of documents before they are sent to clients, increased handling of both pagination and CORS, and the native validation of float data types.&lt;/p&gt;
&lt;p&gt;Get it on &lt;!-- raw HTML omitted --&gt;PyPI&lt;!-- raw HTML omitted --&gt;, go straight to the &lt;!-- raw HTML omitted --&gt;source code&lt;!-- raw HTML omitted --&gt; or more likely, visit the &lt;!-- raw HTML omitted --&gt;project homepage&lt;!-- raw HTML omitted --&gt;.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Thu, 25 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/eve-v0-0-8-has-been-released/</guid></item><item><title>Open My Eyes</title><link>http://localhost:4999/articles/2013/07/25/open-my-eyes/</link><description>&lt;img alt="I go on forever." src="http://farm3.staticflickr.com/2817/9366004982_50df55c6d5_b.jpg" /&gt;
&lt;p&gt;Open the eyes of my heart Lord. I want to see. To truly see.&lt;/p&gt;
&lt;p&gt;I know that if my eyes would truly see I would see the vast legions of angels, like Elijah's servant. I would also see that their martial array is dwarfed by your might.&lt;/p&gt;
&lt;p&gt;I would see your careful artistry planning and outlining every beautiful thing in this world, placing it into place, lighting it just so and giving us a wink as we suddenly catch a moment of absolute beauty in your creation. Thank you for those reminders of your mastery.&lt;/p&gt;
&lt;p&gt;I would see into history and see the magnificent tapestry of all that has been and the threads drawing together towards the End of the weaving. I would see each tangled thread struggling for selfish purposes unknowingly and purposefully knit into the skein of time towards your ends, and I would know that your victory and glory is sure.&lt;/p&gt;
&lt;p&gt;I would see your compassion and love for us, as you intercede and move on our behalf. I would wince in the brightness of the eternal moment of glory that awaits, away from pain and fear, united with you. A wedding feast of immense proportions, and ever-increasing joy.&lt;/p&gt;
&lt;p&gt;So open the eyes of my heart Lord. I would have seep deep into my soul the joy, the trust, the love that you give me. I would it pervade my life so that when the petty brambles of this world seek to entangle I am clear-sighted and able to perceive the way you would have me walk in despite my situation. Take some mud. Clean my eyes. Let the scales drop away and may I behold your face.&lt;/p&gt;
&lt;p&gt;If you are interested in the photo, you can read more about how I took it and where on &lt;a href="http://www.flickr.com/photos/evantravers/9366004982/"&gt;my flickr&lt;/a&gt;.&lt;/p&gt;</description><author>trv.rs</author><pubDate>Thu, 25 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/07/25/open-my-eyes/</guid></item><item><title>The One-Episode Story</title><link>https://zacs.site/blog/the-one-episode-story.html</link><description>&lt;p&gt;Both Burn Notice and NCIS, arguably two of USA Network&amp;#8217;s most popular television broadcasts, adhere to a strict rule set in each and every episode: a sailor dies, the NCIS team responds and eventually solves the case, and in the last few minutes the overarching story progresses ever so slightly. Similarly, Burn Notice opens with the client, someone with a problem that Michael will agree to solve after a varying amount of reluctance, and closes with the minute progression of a larger plot just as NCIS does. Although I have only occasionally seen other installments of USA&amp;#8217;s programs, shows like Psych and to a lesser degree Covert Affairs follow the same basic outline.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-one-episode-story.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 24 Jul 2013 21:37:04 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-one-episode-story.html</guid></item><item><title>Teach a man to fish (and he'll die when he catches Fugu)</title><link>https://blog.samuellevy.com/post/45-teach-a-man-to-fish-and-hell-die-when-he-catches-fugu.html</link><description>&lt;p&gt;Let's talk about how we teach new people to program.&lt;/p&gt;&lt;p&gt;There is a saying which I see getting thrown around frequently in the mailing lists and user groups for programming languages. Everyone knows the saying, and I used the latter half of it as the title for this post.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;quot;Give a man a fish, and you feed him for a day. Teach a man to fish, and you've fed him for life.&amp;quot;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This is a common refrain when people ask for resources to learn to program. I see it for Python; I see it for PHP; I see it for JavaScript; I see it in almost every community I'm a part of. People say it meaning that new users should s…&lt;/p&gt;</description><author>Sam says you should read this</author><pubDate>Wed, 24 Jul 2013 18:22:14 GMT</pubDate><guid isPermaLink="true">https://blog.samuellevy.com/post/45-teach-a-man-to-fish-and-hell-die-when-he-catches-fugu.html</guid></item><item><title>Porting Interdiction to Android with CocoonJS - overcoming mouse position offset problem</title><link>https://liza.io/porting-interdiction-to-android-with-cocoonjs-overcoming-mouse-position-offset-problem/</link><description>&lt;p&gt;For the month of August I am porting &lt;a href="http://liza.io/interdiction"&gt;Interdiction&lt;/a&gt; to Android using CocoonJS. The AI is far from perfect right now, but it works. I am going to keep improving it. For now, however, Android port it is. If I&amp;rsquo;m lucky I can get it all ported before this year&amp;rsquo;s js13kGames challenge starts mid-month. If that&amp;rsquo;s the case I may participate in that and release that game as the September One Game a Month project, but we&amp;rsquo;ll see.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Wed, 24 Jul 2013 17:42:42 GMT</pubDate><guid isPermaLink="true">https://liza.io/porting-interdiction-to-android-with-cocoonjs-overcoming-mouse-position-offset-problem/</guid></item><item><title>ORM is an anti-pattern</title><link>https://nicolaiarocci.com/orm-is-an-anti-pattern/</link><description>&lt;p&gt;In &lt;!-- raw HTML omitted --&gt;ORM is an anti-pattern&lt;!-- raw HTML omitted --&gt; Laurie Voss concentrates everything I’ve been saying on the ORM plague in all these years.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If your project really does not need any relational data features, then ORM will work perfectly for you, but then you have a different problem: you’re using the wrong datastore. The overhead of a relational datastore is enormous; this is a large part of why NoSQL data stores are so much faster. If your data is relational, however, that overhead is worth it: your database does not merely &lt;em&gt;store&lt;/em&gt; your data, it &lt;strong&gt;represents&lt;/strong&gt; your data and can answer questions about it on the basis of the relations captured, far more efficiently than you could in procedural code.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Wed, 24 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/orm-is-an-anti-pattern/</guid></item><item><title>Jerome Choo: Founder of Whizzimo</title><link>https://solomon.io/jerome-choo-founder-of-whizzimo/</link><description>Jerome Choo is a human experience designer. He is the founder of Whizzimo, an app designed to facilitate communication students with Dyslexia and their tutors.</description><author>Sam Solomon</author><pubDate>Wed, 24 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/jerome-choo-founder-of-whizzimo/</guid></item><item><title>Open Spotify links with the Desktop client</title><link>https://bfontaine.net/2013/07/23/open-spotify-links-with-the-desktop-client/</link><description>&lt;p&gt;Spotify’s &lt;a href="https://play.spotify.com"&gt;Web app&lt;/a&gt; is great, but you may prefer to
use the desktop client. The problem is that the links default to the Web app.
Here is a quick tip to make what you want.&lt;/p&gt;

&lt;p&gt;First, install &lt;a href="https://chrome.google.com/webstore/detail/switcheroo-redirector/cnmciclhnghalnpfhhleggldniplelbg"&gt;Switcheroo&lt;/a&gt;. It’s a Chrome extension (Firefox users,
go &lt;a href="https://addons.mozilla.org/en-us/firefox/addon/redirector/"&gt;here&lt;/a&gt;) that allows you
to setup custom redirect rules for any http request, using a string
replacement. Then, add a rule to replace &lt;code class="language-plaintext highlighter-rouge"&gt;http://open.spotify.com/&lt;/code&gt; with
&lt;code class="language-plaintext highlighter-rouge"&gt;spotify://&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That’s it! Now, all &lt;code class="language-plaintext highlighter-rouge"&gt;open.spotify.com/something&lt;/code&gt; links will open in the desktop
client instead of the Web one.&lt;/p&gt;

&lt;p&gt;&lt;i class="small"&gt;Note: I found the original tip &lt;a href="http://community.spotify.com/t5/Help-Web-Player/PLEASE-allow-users-to-default-to-desktop-client/m-p/460950/highlight/true#M2231"&gt;here&lt;/a&gt;, but it was not working because the
author suggested to replace with &lt;code class="language-plaintext highlighter-rouge"&gt;spotify&lt;/code&gt; instead of &lt;code class="language-plaintext highlighter-rouge"&gt;spotify://&lt;/code&gt;.&lt;/i&gt;&lt;/p&gt;</description><author>Baptiste Fontaine’s Blog</author><pubDate>Tue, 23 Jul 2013 22:55:00 GMT</pubDate><guid isPermaLink="true">https://bfontaine.net/2013/07/23/open-spotify-links-with-the-desktop-client/</guid></item><item><title>JS/HTML Obfuscation</title><link>https://venam.net/blog/security/2013/07/24/js-obfuscation.html</link><description>Hello fellow readers, This thread is about obfuscating the content of a webpage.  This might not be so useful, security wise, because all the sensitive information should be kept server side.  However, for the ones trying to reverse engineer the page this is a huge obstacle.</description><author>Venam's Blog — Patrick Louis (Lebanon)</author><pubDate>Tue, 23 Jul 2013 20:00:00 GMT</pubDate><guid isPermaLink="true">https://venam.net/blog/security/2013/07/24/js-obfuscation.html</guid></item><item><title>Designing a Cardboard Canoe</title><link>https://blog.varunramesh.net/posts/designing-a-cardboard-canoe/</link><description>Every year, my high school holds a canoe race, where students from the Engineering, Physics, and Calculus classes compete to design, build and race a Canoe over the span of two weeks.</description><author>Varun Ramesh's Blog</author><pubDate>Tue, 23 Jul 2013 05:26:00 GMT</pubDate><guid isPermaLink="true">https://blog.varunramesh.net/posts/designing-a-cardboard-canoe/</guid></item><item><title>The Beauty of a Limited Run</title><link>https://zacs.site/blog/the-beauty-of-a-limited-run.html</link><description>&lt;p&gt;Just over two short weeks in to the new year, Casey Liss, former &lt;em&gt;Build &amp;#38; Analyze&lt;/em&gt; host Marco Arment, and former &lt;em&gt;Hypercritical&lt;/em&gt; host John Siracusa released a casual car podcast aptly dubbed &lt;em&gt;Neutral&lt;/em&gt;. The show went on to received critical acclaim not only for its fantastic roster, but for its role pioneering a new show format in the podcasting space as well. Finishing in just twelve short episodes, &lt;em&gt;Neutral&lt;/em&gt; and its hosts proved not only the the viability of a limited run in podcasting, but its worth as well.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-beauty-of-a-limited-run.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 22 Jul 2013 21:39:29 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-beauty-of-a-limited-run.html</guid></item><item><title>Why I use a Kindle</title><link>https://josh.works/why-i-use-a-kindle</link><description>&lt;p&gt;&lt;a href="http://www.amazon.com/Kindle-Ereader-ebook-reader/dp/B007HCCNJU"&gt;Amazon’s e-reader&lt;/a&gt; is extremely functional. Most reasons to
not use one focus either on practical issues (depending on something with a battery) or on aesthetic reasons. These are valid issues, of course, but these pale in comparison to the many, many reasons
to use a Kindle.
more&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Extremely portable&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt; Quite compact&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Can hold near-infinite number of books&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Instantly acquire new books.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Purchased books are cheaper on Kindle than physical books (usually)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can “rent” books on your Kindle from a library - without ever going to the library.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Easy to use one-handed, either lying down (in bed) or standing up (metro).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Built-in dictionary for all those words you don’t know how to use. (Oh, and you can have dictionaries in just about any language.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;No page-turning - just tap a convenient button that is ambidextrous.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can read while eating without your book falling shut.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can hold it with one hand
and turn pages. Simultaneously. Difficult to do with a regular book.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;When not in use, fold the cover shut, and drop it in the thinnest pocket of whatever bag you’re carrying with you. (You
do have a cover for it, right?)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It weighs less than just about any book you could buy.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It takes up less space than just about any book you could buy.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;While it does require charging, I find myself charging it less than once a month. (And I use it a lot.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can play games on it, if you’re so inclined.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can have it for $69.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It uses the Amazon bookstore. Amazon is awesome.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It makes reading fun, so you read more than you would otherwise.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It can hold over a thousand books simultaneously, so you can start slimming down your library.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a short list of how I do most of my reading. If you don’t have a Kindle yet, look into it. It could change your life.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Mon, 22 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/why-i-use-a-kindle</guid></item><item><title>Book Review: Hands-on Testing with PHPUnit How-to</title><link>https://thomashunter.name/posts/2013-07-22-book-review-hands-on-testing-with-phpunit-how-to</link><author>Thomas Hunter II</author><pubDate>Mon, 22 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-07-22-book-review-hands-on-testing-with-phpunit-how-to</guid></item><item><title>Pre-populating an Entity in a Symfony 2 Form</title><link>http://jrgns.net/blog/2013/07/22/prepopulating-entity-in-symfony-2-form.html</link><description>&lt;p&gt;I’ve been working on &lt;a href="http://www.teach-a-rific.com"&gt;teach-a-rific.com&lt;/a&gt; in my spare time, and I’m learning a lot
about how &lt;a href="http://symfony.com/doc/current/book/forms.html"&gt;Symfony 2 Forms&lt;/a&gt; work. One thing I need to do a lot, is to show a
form with a &lt;a href="http://symfony.com/doc/current/reference/forms/types/entity.html"&gt;entity field&lt;/a&gt; pre-populated. In this situation you also don’t want
the user to be able to edit the field. This is how I did it.&lt;/p&gt;

&lt;p&gt;First, you need to retrieve the mapped entity, in this case a &lt;code class="highlighter-rouge"&gt;Student&lt;/code&gt;, and set it
in the entity which you’re creating a form for. In this case a &lt;code class="highlighter-rouge"&gt;ContactDetail&lt;/code&gt;.
This all happens in the &lt;code class="highlighter-rouge"&gt;newAction&lt;/code&gt; method of the &lt;code class="highlighter-rouge"&gt;ContactDetailController&lt;/code&gt;.
Notice how I save the student ID in a session variable. More on this later.&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="c1"&gt;//ContactDetailController::newAction
&lt;/span&gt;&lt;span class="nv"&gt;$detail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;ContactDetail&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$studentId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;query&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'student_id'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$student&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getDoctrine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getManager&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getRepository&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'NotesNoteBundle:Student'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$studentId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$student&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'session'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'contact_detail:create:student'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$studentId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nv"&gt;$detail&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;setStudent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$student&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;$form&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;createForm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;ContactDetailType&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="nv"&gt;$detail&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On to the form. Quite simply, if the entity already has a &lt;code class="highlighter-rouge"&gt;Student&lt;/code&gt;, don’t add the
field for the student.&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Symfony\Component\Form\AbstractType&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Symfony\Component\Form\FormBuilderInterface&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Symfony\Component\OptionsResolver\OptionsResolverInterface&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ContactDetailType&lt;/span&gt; &lt;span class="k"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;AbstractType&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;buildForm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;FormBuilderInterface&lt;/span&gt; &lt;span class="nv"&gt;$builder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$builder&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getStudent&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$builder&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'student'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nv"&gt;$builder&lt;/span&gt;
            &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'type'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'choice'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'choices'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Email'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Email'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Cellphone'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Cellphone'&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
            &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'content'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On to the actual form. If the student field is defined in the form, display the
form widget. Otherwise display the student in an uneditable text input. Displaying
the student can be skipped if it’s not necessary.&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;{% if form.student is defined %}
    {{ form_row(form.student, { form_type: 'horizontal' }) }}
{% elseif form.vars.data.student.id is defined %}
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"control-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"control-label"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Student&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"controls"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"input uneditable-input"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{{ form.vars.data.student }}&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
{% endif %}&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;And on to the &lt;code class="highlighter-rouge"&gt;updateAction&lt;/code&gt;. Just get the &lt;code class="highlighter-rouge"&gt;Student&lt;/code&gt; whose ID we stored in the session,
and set it on the &lt;code class="highlighter-rouge"&gt;ContactDetail&lt;/code&gt; before populating the form:&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="c1"&gt;//ContactDetailController::createAction
&lt;/span&gt;&lt;span class="nv"&gt;$entity&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;ContactDetail&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$studentId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'session'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'contact_detail:create:student'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$student&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getDoctrine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getManager&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getRepository&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'NotesNoteBundle:Student'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$studentId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$student&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$entity&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;setStudent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$student&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Simple enough. Any suggestions on how to improve it, or comments on how to do it
differently?&lt;/p&gt;</description><author>Jurgens du Toit</author><pubDate>Mon, 22 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://jrgns.net/blog/2013/07/22/prepopulating-entity-in-symfony-2-form.html</guid></item><item><title>An Edgy iPhone 6 Concept</title><link>https://zacs.site/blog/an-edgy-iphone-6-concept.html</link><description>&lt;p&gt;Last month, in &lt;a href="https://zacs.site/blog/apples-wildcard.html"&gt;&lt;em&gt;Apple&amp;#8217;s Wildcard&lt;/em&gt;&lt;/a&gt;, I predicted Tim Cook announcing an iPhone 5S rather than an iPhone 6 this fall, pointing to the 3G and 3GS, 4 and 4S models as proof. I did, however, hedge my bets with Tim Cook&amp;#8217;s &amp;#8220;Can&amp;#8217;t innovate, my ass&amp;#8221; comment:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/an-edgy-iphone-6-concept.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 21 Jul 2013 15:42:32 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/an-edgy-iphone-6-concept.html</guid></item><item><title>Ghosts of Girlfriends Past</title><link>https://olshansky.info/movie/ghosts_of_girlfriends_past/</link><description>Olshansky's review of Ghosts of Girlfriends Past</description><author>🦉 olshansky 🦁</author><pubDate>Sun, 21 Jul 2013 06:44:19 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/ghosts_of_girlfriends_past/</guid></item><item><title>The Machinist</title><link>https://olshansky.info/movie/the_machinist/</link><description>Olshansky's review of The Machinist</description><author>🦉 olshansky 🦁</author><pubDate>Sun, 21 Jul 2013 06:43:34 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_machinist/</guid></item><item><title>Why I still recommend Windows</title><link>https://captnemo.in/blog/2013/07/21/why-i-still-recommend-windows/</link><description>&lt;p&gt;Even though I am a long time Linux user, and a big time fan of the many Linux distros that I’ve tried out over time, I still go around recommending Windows to people who ask me for advice. The only exception I make is when the person in question is a developer, in which case I try to convert them to the Church of Linux.&lt;/p&gt;

&lt;p&gt;The main reason I recommend windows to non-developers is because it is a far better operating system than most Linux distributions (for general public). Now, before you bring out your pitchforks, hear me out.&lt;/p&gt;

&lt;p&gt;The first and foremost reason that I give is that Windows sports a far better integration across all its services. Nautilus/Nemo in the Linux world do not reach same level of integration that Windows Explorer does. For instance, just look at the way the “Send To” feature works in explorer. To add a folder to the send to entry, you just have to add a shortcut to that folder inside the special “Send To” folder. On nautilus, the equivalent would be going about installing an extension, and editing a configuration file by hand.&lt;/p&gt;

&lt;p&gt;Or take a look at how the “Play All” feature in Explorer. Or the “Libraries” feature in Windows 7. Or the simple way that you handle file sharing in Windows. Even though Linux has (arguably better) Samba support for files sharing, you have to go about editing a handful of files to make it work. I personally find apache easier to configure to just share files one way.&lt;/p&gt;

&lt;p&gt;Games are another reason. Even though Steam is available on Linux, all of the non-Valve triple-A titles are missing on Linux. Even though I continue to buy and play the Humble Bundles that offer Linux as a platform, I’m reminded of the stark reality every day when my friends ask me if I’ve played a recent title such as Call of Duty, Metro, NFS or even Swapper.&lt;/p&gt;

&lt;p&gt;The next peeve that comes to my mind is the ridiculous driver support. It has been improving since a long time, but its still &lt;em&gt;not there&lt;/em&gt;. Even Ubuntu needs to fetch proprietary drivers for my WiFi support on Broadcom, which needs an internet connection in the first place. This means I need to find out a LAN network connection to even start using Ubuntu. Similarly the pain I’d to go through to install drivers for Ralink network drivers on a friend’s laptop was immense. I can never use circular scrolling or touchpad zoom on my laptop in Linux because there are still no drivers available anywhere for it. And don’t get me started on UEFI boot issues. No matter what people believe or pretend, hardware support is just not good enough to be relied on in the Linux world. As a side note, I haven’t synced my iPad in Ubuntu since I shifted to iOS 5, and apple driver support on Linux will remain abysmal forever just because iTunes will never be released for Linux. The last version of iOS that had music sync support (via libimobiledevice) was iOS 4.0 (released 3 years ago in June 2010).&lt;/p&gt;

&lt;p&gt;Next I want to point put out the upgrade pain that everyone has to go through. It’s like a constant rite of passage, which turns a Linux noob into an actual user. I am yet to do an Ubuntu upgrade which went smoothly and didn’t break a thing; and I’ve been upgrading my Ubuntu since 10.04 was released. The &lt;a href="http://askubuntu.com/questions/tagged/upgrade"&gt;upgrade tag&lt;/a&gt; on askubuntu is chock full of horror stories.&lt;/p&gt;

&lt;p&gt;Another thing that frustrates me to no end is that the Ubuntu Dash, and the GNOME Overview are both slow as hell. I’m currently using Cinnamon, which is faster than both of these, but still an order of magnitude slower than the Windows Start Menu. Synpase is better, but &lt;a href="http://askubuntu.com/questions/174838/can-i-change-synapse-shortcut-to-super-windows-key-alone"&gt;cannot be set as the deafult&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I was using Windows 7 on my cousin’s laptop these last few days and I remembered the favourite app that I used to no end: Everything. It is the quickest file search I’ve ever used. The alternatives, in the Linux world are synapse, zeitgeist, and plain old locate command. The only issue is that I’ve to manually run updatedb manually, while Everything was always up to date, using the NTFS File Journal. To this date, I am yet to find a good enough alternative to Everything.&lt;/p&gt;

&lt;p&gt;It is true that Windows lacks many of the good things that Linux distros provide, such as the excellent package management support, POSIX compatibility, and the plethora of tools we get on the command line; but at the same time, it is also a better operating system for most of the masses. I’ll continue to recommend Windows to all my non-developer friends till “The year of Desktop Linux” arrives.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Sun, 21 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2013/07/21/why-i-still-recommend-windows/</guid></item><item><title>Custom Difficulty Gives an Honest Challenge</title><link>http://kotaku.com/custom-difficulty-gives-an-honest-challenge-and-leaves-781367643</link><description>&lt;p&gt;&amp;#8220;Instead of hurling myself at an insurmountable goal simply because it was named respectably, I came in with a personal best by asking more from my strengths and forgiving my weaknesses.&amp;#8221;&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s an article ostensibly about video games, though it may have just as well been about overcoming barriers by setting aside the often malformed and unrealistic expectations we often place upon both ourselves and our work.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://kotaku.com/custom-difficulty-gives-an-honest-challenge-and-leaves-781367643"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 20 Jul 2013 18:09:50 GMT</pubDate><guid isPermaLink="true">http://kotaku.com/custom-difficulty-gives-an-honest-challenge-and-leaves-781367643</guid></item><item><title>Returning to Skyrim</title><link>https://benovermyer.com/blog/2013/07/returning-to-skyrim/</link><description>&lt;p&gt;The last time I posted about Skyrim, it was shortly after release. You can read the first in the series here. At the time, I was playing on the Xbox 360 version. This time around, I've purchased the Legendary Edition for PC. I'm also playing a Destruction mage instead of the heavily armed and armored warrior I focused on in the 360 version.&lt;/p&gt;
&lt;p&gt;Besides taking a completely different character route this time around, I'm also focusing much more on quests other than the main line. I own a small house that I've built but not yet furnished, gotten a fair ways through the College of Winterhold quest line, and continue to light up vampires that seem to crop up all the time in areas I'm traveling to.&lt;/p&gt;
&lt;p&gt;I heard so many awesome things about mods for the game that I just had to get the PC version. That, and I couldn't take screenshots in the 360 version, which was infuriating for someone who blogs about games. Today, I read an article someone reblogged on Reddit about &lt;a href="http://www.pcgamer.com/behind-falskaar-a-massive-new-skyrim-mod-and-the-19-year-old-who-spent-a-year-building-it/" rel="external"&gt;a mod called Falskaar&lt;/a&gt;. Falskaar is unique in that it was produced chiefly by a 19 year old who declined to go to university in order to produce the mod. It took him a full year, and he's aiming to get a job at Bethesda by proving his dedication.&lt;/p&gt;
&lt;p&gt;By all accounts, it's a damned good mod. I look forward to installing it when I finish with vanilla Skyrim.&lt;/p&gt;
&lt;p&gt;If you're interested in hearing further about my adventures in Skyrim, by all means, let me know in the comments. Otherwise, next week I'll be writing about a topic near and dear to my heart…. sci-fantasy sandbox MMORPGs.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 20 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/07/returning-to-skyrim/</guid></item><item><title>QEMU: MiraBox emulation</title><link>https://kyrofa.com/posts/qemu-mirabox-emulation/</link><description>As I mentioned in a previous post, I host various websites (including this one in the past) on a MiraBox sitting behind my tv. In that same post I outlined how Globalscale screwed me by mixing releases in the sources.list. I didn&amp;rsquo;t catch it until I had an unbootable system, and I had to completely rebuild my server which took weeks. I very nearly tossed the whole thing in favor of hosting my websites on a &amp;ldquo;real computer, made by people who knew what they were doing,&amp;rdquo; but I reminded myself why I settled on the MiraBox in the first place: I like embedded stuff.</description><author>kyrofa's blog</author><pubDate>Sat, 20 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://kyrofa.com/posts/qemu-mirabox-emulation/</guid></item><item><title>100% CPU with UserEventAgent</title><link>https://rd.nz/2013/07/100-cpu-with-usereventagent.html</link><author>Rich Dougherty</author><pubDate>Fri, 19 Jul 2013 07:14:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/07/100-cpu-with-usereventagent.html</guid></item><item><title>List of useful CAPTCHA Decoding Articles</title><link>https://boyter.org/2013/07/list-captcha-decoding-articles/</link><description>&lt;p&gt;This website ranks quite high in most search engines for the search term &amp;ldquo;captcha decoding&amp;rdquo; or some permutation of it. As such here are a collection of useful links if you are looking into doing such a thing. If any more come up I will be sure to update this post.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.boyter.org/decoding-captchas/"&gt;http://www.boyter.org/decoding-captchas/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Shameless self promotion but this link is why this page ranks so highly. Its an article I wrote some time ago about how to go about decoding a simple CAPTCHA. There is full source code and the principles can be applied to 90% of CAPTCHA&amp;rsquo;s out there. For the record it only came about because a colleague bet me that I couldn&amp;rsquo;t decode his websites CAPTCHA which was the one used in the article. Of course I waited till he changed it before publishing.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Fri, 19 Jul 2013 02:46:43 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/07/list-captcha-decoding-articles/</guid></item><item><title>How to compile vim</title><link>https://honza.pokorny.ca/2013/07/how-to-compile-vim/</link><description>&lt;p&gt;&amp;hellip; from source when you&amp;rsquo;re using the homebrew-provided Python.&lt;/p&gt;
&lt;p&gt;If you have installed Python via homebrew, your vim will compile fine but when
a plugin tries to use Python to do some its work, vim will crash like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="https://honza.pokorny.ca/images/vim-crash.png" /&gt;Not pretty.&lt;/p&gt;
&lt;p&gt;Apparently, this is because vim will use the first Python it can find which in
our case the homebrew-provided one.  You can of course get a pre-compiled
version and ignore this.  But I like to use the latest version of vim and with
the 7.4 beta, I have been doing that a lot lately&amp;hellip;&lt;/p&gt;
&lt;p&gt;So, what is one to do?  We have to fix the &lt;code&gt;PATH&lt;/code&gt;.  Here is the script that I
use to recompile vim.  This goes in the root of the vim project.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-bash"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1;"&gt;export&lt;/span&gt; PATH&lt;span style="color: #81a1c1;"&gt;=&lt;/span&gt;/bin:/usr/sbin:/sbin:/usr/bin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;./configure &lt;span style="color: #ebcb8b;"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #ebcb8b;"&gt;&lt;/span&gt;        --enable-perlinterp &lt;span style="color: #ebcb8b;"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #ebcb8b;"&gt;&lt;/span&gt;        --enable-pythoninterp &lt;span style="color: #ebcb8b;"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #ebcb8b;"&gt;&lt;/span&gt;        --enable-rubyinterp &lt;span style="color: #ebcb8b;"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #ebcb8b;"&gt;&lt;/span&gt;        --enable-cscope &lt;span style="color: #ebcb8b;"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #ebcb8b;"&gt;&lt;/span&gt;        --with-features&lt;span style="color: #81a1c1;"&gt;=&lt;/span&gt;huge
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There and vim is now compiled properly with Python support that won&amp;rsquo;t make you
cry.&lt;/p&gt;
&lt;p&gt;Thanks to Steve Losh for pointing me in the right direction on this.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Thu, 18 Jul 2013 16:16:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/07/how-to-compile-vim/</guid></item><item><title>Rules for Fighting Fair</title><link>https://josh.works/rules-for-fighting-fair</link><description>&lt;p&gt;When a friend tells me they want to date someone, I ask them why. They always say “she’s pretty, funny, and kind”, or “he is handsome, funny, and cares for me”. Obviously. Have you ever wanted to date someone because they are ugly, boring, and mean?&lt;/p&gt;

&lt;p&gt;So, rather than asking more questions where they will wax poetic about the wonderful qualities of their prospective partner, I ask one simple question:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;How do they fight?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Anyone can be nice to someone when they are “in love”, or when they feel it is good for them. It takes skill and character to argue fairly, and it will tell you a lot about a person in a very short amount of time. For the same reason you should pay attention to how someone treats waiters, janitors, and others who they don’t have to be nice to.&lt;/p&gt;

&lt;p&gt;It reveals a depth of character that you can’t otherwise see.&lt;/p&gt;

&lt;p&gt;This list I put down is the rules Kristi and I try to abide by. We don’t always follow this list; but we do try. It dramatically improves the quality of our disagreements, helps us grow to love each other even more, and avoids causing damage to the relationship.&lt;/p&gt;

&lt;h2 id="rules-for-fighting-fair"&gt;Rules for Fighting Fair:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Don’t yell. If you start yelling, call off the discussion and come back later.&lt;/li&gt;
  &lt;li&gt;Don’t yell. If you yell, they will dig in and fight harder.&lt;/li&gt;
  &lt;li&gt;Don’t yell. If you yell, you are causing far more damage in one minute than can be undone in twenty.&lt;/li&gt;
  &lt;li&gt;Stop fighting and start discussing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;People can discuss things with angry tones and mean looks. Tell the person you were arguing with that you don’t want to fight, you want to figure out what’s going on and make it right. A discussion can be productive, a fight cannot be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t be so blinded by the topic at hand that you cannot listen for what heart issues are operating beneath the surface.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example 1: Her reaction to your feedback on her driving is not about driving, it’s about a sense of control, and a desire to not feel out of control. She knows how to drive, but feels like her life is out of control, and your feedback makes it feel like one more thing - driving - is out of her control.&lt;/p&gt;

&lt;p&gt;Example 2: His procrastination is not about being lazy, but a deep, deep fear of rejection and a sense of perfectionism, which is motivated by a fear of rejection. You can nag about doing something, or you can help him understand why he is equipped to go forth and
&lt;a href="http://www.bothsidesofthetable.com/2009/11/19/what-makes-an-entrepreneur-four-lettersjfdi/"&gt;JFDI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You cannot talk about “heart issues” if you are yelling and arguing. So stop yelling and arguing. You are now talking in normal voices, and discussing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reaffirm long-term goals. (Also known as “keep your eye on the prize”.)&lt;/p&gt;

&lt;p&gt;Are you trying to score rhetorical points and tear them down? If so, you are the problem, not them.&lt;/p&gt;

&lt;p&gt;Are you trying to love them and you want good things for them? Let them know.&lt;/p&gt;

&lt;p&gt;When you’re fighting, it’s easy to think they hate you, and that they are a miserable excuse for a person. Inform them that they are wrong. You do, in fact, love them and are committed to them. (That’s true, right?)&lt;/p&gt;

&lt;p&gt;Don’t call them names, or ascribe negative character traits.&lt;/p&gt;

&lt;p&gt;They are not stupid, they did something that you need help understanding.&lt;/p&gt;

&lt;p&gt;They are not disrespectful, they did something that seemed disrespectful.&lt;/p&gt;

&lt;p&gt;Encourage them even in the way you bring up “problems”. Give them the benefit of the doubt.&lt;/p&gt;

&lt;p&gt;You bring just as many warped perspectives and screwed up ideas to the table that they do. Don’t put the blame all on them.&lt;/p&gt;

&lt;p&gt;Arguments are frustrating. Verbally “pause” the argument, and ask for a hug. Then keep talking. Or shelve the discussion and come back later.&lt;/p&gt;

&lt;p&gt;These are Kristi’s additions to the above list:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Don’t interrupt&lt;/li&gt;
  &lt;li&gt;Don’t yell (Do you see a theme here?)&lt;/li&gt;
  &lt;li&gt;Don’t make sweeping statements like “never” and “always”&lt;/li&gt;
  &lt;li&gt;Phrase things like “this is what I’m seeing” or “this is how I feel” instead of “this is what you did”&lt;/li&gt;
  &lt;li&gt;Don’t say “why did you do that” say “can you help me understand where you’re coming from”&lt;/li&gt;
  &lt;li&gt;Listen!&lt;/li&gt;
  &lt;li&gt;Genuinely try to put yourself in their shoes&lt;/li&gt;
  &lt;li&gt;Give each other the benefit of the doubt&lt;/li&gt;
  &lt;li&gt;Never hang up on each other&lt;/li&gt;
  &lt;li&gt;Pause - remind each other that you love each other.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This entire list can be summarized in one rule: &lt;strong&gt;When fighting, be respectful and loving.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a tall order, for the record. We certainly don’t have it figured out, but we’re working on improving the quality of our fights. Already they are pretty good, and we want them to be better. I would recommend you talk with your significant other
regularly about the quality of your arguments. It is time well spent.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Thu, 18 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/rules-for-fighting-fair</guid></item><item><title>moved to new static site generator</title><link>https://zserge.com/posts/new-site-generator/</link><description>This website has been powered by poole for a long time. I don&amp;rsquo;t think I have any real reasons to migrate from poole.
Do you know there are static site generators written in UNIX Shell? I think it&amp;rsquo;s a good choice for old-school programmers, who feel uncomfortable with Ruby, Python and even Node.js.
All that shell madness started with werc, a nice tool used by suckless and cat-v. Then sw appeared.</description><author>zserge's blog</author><pubDate>Thu, 18 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://zserge.com/posts/new-site-generator/</guid></item><item><title>Sunshine Coast: Thormanby Islands &amp;amp; Smuggler Cove Kayak Trip</title><link>https://duncanlock.net/blog/2013/07/17/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/</link><description>&lt;p&gt;A trip report from our Canada Day 2013 long weekend kayak camping trip to Thormanby Islands, Smuggler Cove &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Secret Cove, on the sunshine coast.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="thormanby trip map" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/thormanby-trip-map.png" /&gt;
&lt;figcaption&gt;Figure 1. We started at Welcome Beach on Saturday afternoon, kayaked over to Thormanby for lunch, then up and round to Buccaneer Bay - stunning camp on the dunes, then over to Smugglers Cove on Sunday. Camped there Sunday night, with a trip to Secret Cove in the afternoon, then back to Welcome Beach on Monday morning. (Map screenshot courtesy and copyright Google Maps. Annotations added by me.)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_welcome_beach_to_thormanby"&gt;Welcome Beach to Thormanby&lt;/h2&gt;&lt;p&gt;On Saturday morning, we packed up our tent &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; got picked up by Erika from Talaysay Tours, who drove us, with the Kayak on the roof, to Welcome Beach, about 15 mins further up Highway 101, past Sechelt.&lt;/p&gt;
&lt;p&gt;We unloaded the Kayak, took it down to the surf and loaded all our gear into it, ready to paddle off into the blue.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060379.jpg"&gt;&lt;img alt="p1060379 small" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060379-small.jpg" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 2. Standing on Welcome Beach, looking south-west across Welcome Passage towards the gap between Merry Island on the left &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; South Thormanby Island on the right.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The first stretch of paddling was about 45 minutes, across the widest part of Welcome Passage. The sea here is very sheltered and calm - and we had stunning weather: hot and sunny, with just enough sea breeze to keep cool. Welcome Passage is quite busy with boat traffic and the water was very murky, full of churned up algae, sea weed and a fair bit of floating lumber. We didn’t spot any marine mammals in Welcome Passage the entire weekend - and not much other sea-life either. It’s a busy &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; noisy waterway in the summer (by &lt;span class="caps"&gt;BC&lt;/span&gt; standards) - a huge contrast to the relatively pristine waters of Sechelt Inlet, where Seals, Starfish, Sunstars and Sea Cucumbers abound.&lt;/p&gt;
&lt;p&gt;Once we’d made it to the other side, we pulled up at a tiny deserted beach about ½ way up the east side of South Thormanby Island, for cider and snacks. The water here was a bit clearer - and we watched Ospreys hunt in the bay in front of us while we rested:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060391.jpg"&gt;&lt;img alt="p1060391 small" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060391-small.jpg" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 3. You can see Welcome Beach where we started, in the background, back across Welcome Passage.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_welcome_passage_to_buccaneer_bay"&gt;Welcome Passage to Buccaneer Bay&lt;/h2&gt;&lt;div class="image-block"&gt;&lt;img alt="welcome passage to buccaneer bay" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/welcome-passage-to-buccaneer-bay.png" /&gt;&lt;/div&gt;
&lt;p&gt;After a quick break we paddled off, up the east side of the island, round the top and into Buccaneer Bay. As Welcome Passage narrows the current and swell get slightly stronger - but it was such a calm day it was hardly noticeable. This side of Thormanby is very craggy with step cliffs and deep little bays - topped with characteristically gnarly Arbutus trees.&lt;/p&gt;
&lt;p&gt;All along the passage, the high tide line was strongly marked on the cliffs at each side - visible even on the opposite side. This turned out to be a carpet of tiny mussels, almost like fur, clinging to the rocks &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; completely covering them from the high-water mark down.&lt;/p&gt;
&lt;p&gt;Once you reach the top of the passage, the big blue expanse of the Georgia Strait opens in front of you, with the Sunshine Coast on the right and Texada Island in the distance on the left.&lt;/p&gt;
&lt;p&gt;The top of South Thormanby ends in a series of craggy fingers of rock, sloping down into the Strait, each with a long deep bay between. Some of these have small houses and private docks in - with, presumably, fabulous views up the coast.&lt;/p&gt;
&lt;p&gt;Once you round the corner, the very large sheltered Buccaneer Bay opens up on your left. There were lots of boats moored in and around the islets at the top of the bay, and a few holiday cottages and docks along the shore. These gave way to larger boats as we neared the anchorage at the end of the bay.&lt;/p&gt;
&lt;p class="jpg"&gt;&lt;img alt="p1060403 small" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060403-small.jpg" /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_camping_at_the_gap"&gt;Camping at the Gap&lt;/h2&gt;&lt;p&gt;We beached the Kayak at the end of the bay, at &lt;a href="http://www.env.gov.bc.ca/bcparks/explore/parkpgs/buccaneer_bay/"&gt;Buccaneer Bay Provincial Park&lt;/a&gt;. This is a sand spit that joins North and South Thormanby Islands together - with space for ~10 tents. It has stunning views - if you face one way, you can see up Buccaneer Bay, to the Sunshine Coast, with the Coastal Mountains in the distance - if you turn around, you can see across Georgia Strait to Vancouver Island on the horizon. Welcome to The Gap:&lt;/p&gt;
&lt;figure class="image-block jpg"&gt;&lt;img alt="link:{static}/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060430" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060430-small.jpg" /&gt;
&lt;figcaption&gt;Figure 4. Standing on the Gap, looking north east, towards the mouth of the bay.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure class="image-block jpg"&gt;&lt;img alt="link:{static}/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060428" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060428-small.jpg" /&gt;
&lt;figcaption&gt;Figure 5. …and looking south west, towards Vancouver Island.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;You could easily imagine 17th century pirates anchoring their galleons in the bay and drinking rum around campfires on the beach - an effect heightened when this two masted schooner sailed into the bay a few hours after we arrived:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060467.jpg"&gt;&lt;img alt="p1060467 small crop" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060467-small-crop.jpg" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 6. This beautiful two masted schooner sailed into the bay a few hours after we arrived. As we sat on the beach, reading, propped up on a log, they dropped sail, anchored and the crew rowed ashore in long boats.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;We made camp, walked around the beaches, took in the views and had a relaxed dinner. At some point, our neighbours slipped off in one of their kayaks. They returned about an hour later, with the front cockpit full of fish - which they cleaned and gutted in the surf and cooked over a fire. Prior to this, I was quite happy with my stew, but I admit, I was rather envious of their fishing skills.&lt;/p&gt;
&lt;p&gt;We were treated to a glorious sunset to round off a pretty perfect day:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;a class="image" href="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060487.jpg"&gt;&lt;img alt="p1060487 small" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060487-small.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_buccaneer_bay_to_smuggler_cove"&gt;Buccaneer Bay to Smuggler Cove&lt;/h2&gt;&lt;div class="image-block"&gt;&lt;img alt="buccaneer bay to smugglers cove" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/buccaneer-bay-to-smugglers-cove.png" /&gt;&lt;/div&gt;
&lt;p&gt;On Sunday morning, we had a lazy brunch on the beach - and watched an Osprey catch theirs in the bay, right in front of us. We eventually packed the camp back into the kayak and headed out, up the east side of North Thormanby island, to check out the beaches we saw on the way in.&lt;/p&gt;
&lt;p&gt;There are lots more holiday cottages and lots more boats moored on this side of the bay, especially as you approach the long, sandy, Vaucroft Beach. This is a popular day trip spot for boaters, as it’s very close to Secret Cove, a fairly large marina. The beach itself is light sand, fairly unusual in &lt;span class="caps"&gt;BC&lt;/span&gt;, and could easily pass for the Caribbean, on a sunny day.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060490.jpg"&gt;&lt;img alt="p1060490 small" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060490-small.jpg" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 7. There was also a float plane moored up just off Vaucroft Beach.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;After passing Vaucroft beach, we headed east, towards the coast and Smuggler Cove. We paddled across the wide mouth of Buccaneer Bay, past the fingers of South Thormanby and across Welcome Passage in the &lt;em&gt;glorious&lt;/em&gt; sunshine. Paddling towards the coast, we had great views of the Coastal Mountains ahead of us and the expanse of the Strait on our left the whole way over. We passed quite a few boats buzzing back and forth between Secret Cove &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Thormanby, including a water taxi.&lt;/p&gt;
&lt;p&gt;The entrance to &lt;a href="http://www.env.gov.bc.ca/bcparks/explore/parkpgs/smuggler/"&gt;Smuggler Cove&lt;/a&gt; is almost invisible until you get quite close. A small gap between two rocky outcrops, leads you into a little hidden world of sheltered bays and waterways, almost completely separate from the ocean outside. Just inside the entrance in the first large cove, we came across 16 yachts moored up and rafted together - “Millionaires Row”. We later met a very nice couple from one of these yachts - apparently it was a local club meeting up for the weekend.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/smuggler-cove-millionaires-row-panorama.jpg"&gt;&lt;img alt="A panorama of row of yachts rafted up for the weekend at Smuggler Cove." src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/smuggler-cove-millionaires-row-panorama-small.jpg" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 8. A panorama of row of yachts rafted up for the weekend at Smuggler Cove. The gap on the left is the entrance to the cove, with the tip of North Thormanby island and Vaucroft Beach visible in the distance&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;We wound our way deeper into the cove, around islands and moored boats, looking for somewhere to beach - or for signs of the camp site. Eventually we found a small muddy beach right at the southern end of the cove and hauled out. We scouted around and found people camping just up in the woods, along with a pit toilet. We unpacked the kayak and made camp.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060524.jpg"&gt;&lt;img alt="Our little tent." src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060524-small.jpg" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 9. Our little tent.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Once we’d got everything set up, we headed back out, for a trip to Secret Cove.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_trip_to_secret_cove_for_ice_cream_real_bathroom"&gt;Trip to Secret Cove, for Ice Cream, Real Bathroom&lt;/h2&gt;&lt;p&gt;&lt;img alt="trip to secret cove for ice cream" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/trip-to-secret-cove-for-ice-cream.png" /&gt;&lt;/p&gt;
&lt;p&gt;We paddled back out of the cove and right, around Capri Isle and along the coast towards &lt;a href="https://www.google.ca/maps?t=m&amp;amp;ll=49.52996589999999%2C-123.96011350000003&amp;amp;spn=0.026796243931675245%2C0.05504765799669358"&gt;Secret Cove&lt;/a&gt;. True to it’s name, Secret Cove is well hidden behind islands and it opens up into a series of long deep bays once you get past the entrance - most of it isn’t visible until you get inside, past Jack Tolmie and Turnagain Islands.&lt;/p&gt;
&lt;p&gt;There are several marinas, chandleries, floating bars and tens - possibly hundreds - of docks, moorings and cottages nestled inside Secret Cove’s many deep bays, accommodating hundreds of water craft of all shapes and sizes. From our little kayak, to old log-raft tugs, the occasional trawler, multi-million dollar yachts - and everything in between.&lt;/p&gt;
&lt;p&gt;Floating in, under and through this whole…​ regatta in the sunshine, in our little kayak, was interesting and fun.&lt;/p&gt;
&lt;p&gt;Over to the north west side we eventually found the government dock and &lt;a href="http://www.secretcovemarina.com/gallery"&gt;marina&lt;/a&gt; - with a boat fuelling dock, floating restaurant and shop. We tied the kayak to the dock at the back and climbed out. We proceeded to make &lt;em&gt;extensive&lt;/em&gt; use of their bathroom facilities, before buying cold drinks, ice cream and After Sun lotion from the shop. We then sat in the shade on the edge of the dock and watched the world go by for a while.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_back_to_smuggler_cove_dinner_beavers"&gt;Back to Smuggler Cove, dinner &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Beavers&lt;/h2&gt;&lt;p&gt;We paddled back to Smuggler Cove, tied up the kayak and explored the trails around the cove a little before dinner.&lt;/p&gt;
&lt;p&gt;After dinner, we walked along the forest trail the other way, away from the cove into the woods. A little way in, in the gathering twilight, the trail gave way to a wooden walkway over a shallow lake. The lake turned out to be a wetland habitat created by &lt;a href="http://en.wikipedia.org/wiki/Beaver"&gt;beavers&lt;/a&gt;, who had drowned the bottom of this little forest valley by damming a creek.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060519.jpg"&gt;&lt;img alt="p1060519 small" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/p1060519-small.jpg" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 10. Our first Beavers! This is looking away from the dam, down the valley. We took this picture in the morning, when we came back with the camera. That walkway is courtesy of Parks Canada, not the beavers, obviously.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;We didn’t know this was here, so it was a nice surprise - and the drowned forest was very atmospheric in the gloaming.&lt;/p&gt;
&lt;p&gt;As we approached the edge of the lake, we almost immediately disturbed a beaver - alarmed, it made a loud slap with its broad tail on the water’s surface, dove in and swam away.&lt;/p&gt;
&lt;p&gt;As we walked around the lake, we heard two more making their (very load) tail slapping alarm call and swimming off. We just saw the tail end of one of them as it dived off a log.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_homeward_bound_smuggler_cove_to_welcome_beach"&gt;Homeward Bound: Smuggler Cove to Welcome Beach&lt;/h2&gt;&lt;p&gt;We went and checked out the Beavers again in the morning light - hoping to see one this time, but no luck. The lake was buzzing with dragonflies and we saw a frog (or maybe a toad?) basking on the mud at the side of the walkway - just a few of the &lt;a href="http://en.wikipedia.org/wiki/Beaver_dam#Benefits"&gt;benefits of beaver dams&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="smuggler cove to welcome beach" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/smuggler-cove-to-welcome-beach.png" /&gt;&lt;/p&gt;
&lt;p&gt;We left Smuggler Cove before lunch, because we needed to be back at Welcome Beach by 2pm, to be picked up by Erika for our ride back into Sechelt. The paddle back was about 7 km, which took us roughly 2 hours.&lt;/p&gt;
&lt;p&gt;Paddling back down Welcome Passage, we passed several herons, fishing from the rocks by the shore. We also passed a &lt;em&gt;huge&lt;/em&gt; yacht, ploughing it’s way north.&lt;/p&gt;
&lt;p&gt;We eventually found the correct beach and hauled out, rested, had lunch and unpacked. Erika arrived at 2pm and we loaded the Kayak and our gear into her jeep and she drove us back to Sechelt.&lt;/p&gt;
&lt;p&gt;Sechelt were having their Canada day parade, so after a few diversions, we &lt;em&gt;just&lt;/em&gt; made it to the Langdale bus in time - for the start of the trip home.&lt;/p&gt;
&lt;p&gt;All in all - an amazing weekend. Shower time!&lt;/p&gt;
&lt;hr /&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_logistics_getting_there_from_vancouver"&gt;Logistics &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Getting there from Vancouver&lt;/h2&gt;&lt;p&gt;We don’t own a car - but getting to the sunshine coast is very easy on public transport - and much cheaper than taking a car on the ferry. Here’s how we did it:&lt;/p&gt;
&lt;p&gt;We took the #257 Express Bus from down-town Vancouver to Horseshoe Bay. We normally get on at the stop on West Georgia St., right outside The Bay. You can also catch the #250 from here - which isn’t an express but doesn’t take too much longer. This costs $2.75 per person.&lt;/p&gt;
&lt;p&gt;Once we got to Horseshoe Bay, we took the ferry to Langdale. These are fairly frequent, but with occasional gaps, so &lt;a href="http://www.bcferries.com/schedules/mainland/vasc-current.php"&gt;check the schedule&lt;/a&gt;. As a foot passenger, we’ve never had to wait or not been able to get on - we just walk onto the first ferry that turns up. This is $15 per person, including the return trip. If you’re planning to do this often, it might be worth getting a &lt;a href="https://www.bcferries.com/experience_and_coast_card/"&gt;&lt;span class="caps"&gt;BC&lt;/span&gt; Ferries Experience card&lt;/a&gt;. You have to pre-load it with at least $60, but you get ~20% off most&lt;a class="footnote-ref" href="#_footnote_1" id="_footnoteref_1" title="View footnote 1"&gt;[1]&lt;/a&gt; fares.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="thormanby trip overview map" src="https://duncanlock.net/images/posts/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/thormanby-trip-overview-map.png" /&gt;
&lt;figcaption&gt;Figure 11. Bus from Vancouver to Horseshoe Bay, then Ferry to Langdale, followed by bus to Sechelt. Taxi to Porpoise Bay camp site, stay overnight. Lift to Welcome Beach with Kayak people, then off! Map screenshot courtesy (and copyright) Google Maps. Annotations added by me.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The ferry crossing is a &lt;em&gt;very&lt;/em&gt; scenic 45 min trip across Howe Sound. Once we arrived at Langdale, we followed the other foot passengers out, through the foot passenger tunnel to the car parks, then caught the ‘Highway 101’ bus - it’s the only bus from the only bus stop, so you can’t really get this wrong - although there are express and non-express buses, which are quite a bit slower. Anyway, we got off at Sechelt, outside Trail Bay mall (the last stop). This costs $2.25 per person.&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_porpoise_bay"&gt;Porpoise Bay&lt;/h3&gt;&lt;p&gt;We stayed overnight at &lt;a href="http://www.env.gov.bc.ca/bcparks/explore/parkpgs/porpoise/"&gt;Porpoise Bay Provincial Park&lt;/a&gt;, just outside Sechelt. This park - and Sechelt Inlet that it’s on, is worth a trip on its own - the Inlet has very nice sheltered Kayaking with lots of quiet, empty camping and loads of wildlife.&lt;/p&gt;
&lt;p&gt;To get here, we normally catch a Taxi from Trail Bay mall in Sechelt to the park - it’s ~5km out of Sechelt; this costs ~$15, call Sechelt Taxi 604-989-8294 – and &lt;a href="http://www.env.gov.bc.ca/bcparks/fees/"&gt;&lt;span class="caps"&gt;BC&lt;/span&gt; Parks are ~$11 per night, per group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For this trip we overnighted here so that we could get a lift to and from Welcome Beach (and rent a Kayak) from &lt;a href="http://www.talaysay.com/"&gt;Talaysay Tours, who rent Kayaks from the beach at Porpoise Bay&lt;/a&gt;, among other locations. They have good equipment and are extremely friendly &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; helpful.&lt;/p&gt;
&lt;hr /&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_footnotes_references"&gt;Footnotes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; References&lt;/h3&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class="footnotes"&gt;&lt;hr /&gt;&lt;ol class="footnotes"&gt;&lt;li class="footnote" id="_footnote_1"&gt;&lt;span class="caps"&gt;BC&lt;/span&gt; Ferries Experience Card Summary: You have to pre-load with $60 at a time and you get ~20% off tickets, although not all routes, see &lt;a href="http://www.bcferries.com/experience_and_coast_card/what_it_is/"&gt;here&lt;/a&gt; for more info. For example, rather cynically, you can pay for a Horseshoe Bay to Nanaimo ticket with one but you don’t get any discount. Also there a load of T&amp;amp;C’s, so &lt;a href="http://www.bcferries.com/experience_and_coast_card/what_it_is/FAQ.html"&gt;think about it&lt;/a&gt; before getting one. &lt;a class="footnote-backref" href="#_footnoteref_1" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Wed, 17 Jul 2013 10:05:32 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/07/17/sunshine-coast-thormanby-islands-smuggler-cove-kayak-trip/</guid></item><item><title>Adam Wexler: Founder of Insightpool</title><link>https://solomon.io/adam-wexler-founder-of-insightpool/</link><description>Adam Wexler is the founder and Chief Strategy Officer at Insightpool, the leader in social engagement automation.</description><author>Sam Solomon</author><pubDate>Tue, 16 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/adam-wexler-founder-of-insightpool/</guid></item><item><title>Displaying a processes output on a web page with Websockets and Python</title><link>https://tomforb.es/blog/displaying-a-processes-output-on-a-web-page-with-websockets-and-python/</link><description>A few days ago a colleague of mine asked me how you would pipe the standard output of a process into a browser. I hacked around for a few hours and came up with a websockets based solution (using Twisted and Autobahn.ws ) that you can see below ( Your browser needs to support WebSockets, sorry IE9 a...</description><author>Tom Forbes</author><pubDate>Mon, 15 Jul 2013 21:40:38 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/displaying-a-processes-output-on-a-web-page-with-websockets-and-python/</guid></item><item><title>How I back up my laptop</title><link>https://honza.pokorny.ca/2013/07/how-i-back-up-my-laptop/</link><description>&lt;p&gt;For the longest time, I was using Time Machine to keep copies of my files.  I
don&amp;rsquo;t remember ever wishing I could go back in time and retrieve an older
version of a file.  What does keep me up at night though is forever losing all
of the pictures of our kids because my hard drive failed.&lt;/p&gt;
&lt;p&gt;I also don&amp;rsquo;t particularly like tools like Time Machine,  Carbon Copy Cloner or
SuperDuper.  They are some kind of GUI app that does stuff, and I like my unix
tools.&lt;/p&gt;
&lt;p&gt;Here are my requirements for a good backup solution:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Incremental - that means don&amp;rsquo;t overwrite older backups and don&amp;rsquo;t back up everything every time&lt;/li&gt;
&lt;li&gt;Efficient storage - I shouldn&amp;rsquo;t need 10 TB to keep a few backups of my hard drive&lt;/li&gt;
&lt;li&gt;Bootable - if my hard drive fails or laptop gets stolen, I want to be able to back to work quickly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you do some research into this, you will see mostly suggesting rsync.  It
can copy your entire drive and does smart, incremental backups.  Except it
overwrites stuff and you only get to keep the latest copy.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href="https://github.com/bup/bup"&gt;bup&lt;/a&gt;.  Bup is simply amazing.  It&amp;rsquo;s based on git and it gives you
automatic incremental, deduplicated, shared backups.  Free and open source.&lt;/p&gt;
&lt;p&gt;Backing up huge virtual machines?  It only backs up what changed, not the whole
file.  Multiple copies of the same stuff on your hard drive?  Only needs to
store one copy.  Have a look at their documentation for more information about
how it works and what the benefits are.&lt;/p&gt;
&lt;p&gt;The way you use bup is by creating a tar archive stream of all your data and
sending it to bup on stdin.  Bup takes it, chunks, deduplicates it and stores
in a git repo.&lt;/p&gt;
&lt;p&gt;The canonical example goes like this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;tar -cvf - /etc | bup split -n local-etc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;-n&lt;/code&gt; flag just allows you to name your backup.&lt;/p&gt;
&lt;p&gt;Next, we have to figure out how to tar up our entire drive.  This can be a
little tricky because there are some special files which we don&amp;rsquo;t want to copy
over.  After much trial, error and googling, I came up with the following list
of exclusions.  Note that this only applies to OS X.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;.Spotlight-*/
.Trashes
/afs/*
/automount/*
/cores/*
/dev/*
/Network/*
/private/tmp/*
/private/var/run/*
/private/var/spool/postfix/*
/private/var/vm/*
/Previous Systems.localized
/tmp/*
/Volumes/*
*/.Trash
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Save this to &lt;code&gt;excludes.txt&lt;/code&gt; and then use this tar command:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;$ tar -cvf - / -X excludes.txt | bup split -n backup
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This takes about 1-2h on my system (128GB SSD, 500GB 5400rpm external).
Subsequent backups take a lot less time.  As far as actual backup goes, we&amp;rsquo;re
done.&lt;/p&gt;
&lt;p&gt;How do you restore?&lt;/p&gt;
&lt;p&gt;The nice thing about bup is that it stores your backups in a git repository.
This means that you can go back in history and decide from which point in time
you&amp;rsquo;d like to restore.  Bup allows you to spit out a tar file like this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;$ bup join backup -o backup.tar
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will again take some time and use quite a bit of resources (git will eat
your RAM and CPU - a 6GB git process anyone?).  Once that is done, you can
extract the tar to a drive that can be booted into.  This can be the internal
drive on a new computer or a GUID-partitioned external drive.&lt;/p&gt;
&lt;p&gt;Once extracted, you just have to &lt;em&gt;bless&lt;/em&gt; the data to make it bootable:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;$ sudo bless -folder /System/Library/CoreServices
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then, you should reboot your Mac while holding down the Option key.  This will
show you the boot order menu and allow you to specify where you&amp;rsquo;d like to boot
from.&lt;/p&gt;
&lt;p&gt;Of course, you should wrap all of this in a script and run it periodically.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Mon, 15 Jul 2013 21:20:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/07/how-i-back-up-my-laptop/</guid></item><item><title>The revolution will be downloaded</title><link>http://www.theverge.com/2013/7/10/4507930/the-revolution-will-be-downloaded-the-app-store-turns-5</link><description>&lt;p&gt;Great story from none other than The Verge about the App Store on it&amp;#8217;s fifth birthday.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/7/10/4507930/the-revolution-will-be-downloaded-the-app-store-turns-5"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 15 Jul 2013 20:29:00 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/7/10/4507930/the-revolution-will-be-downloaded-the-app-store-turns-5</guid></item><item><title>Some Toaster AI improvements</title><link>https://liza.io/some-toaster-ai-improvements/</link><description>&lt;p&gt;I made some more improvements to Toaster yesterday and this morning. Specifically:&lt;/p&gt;
&lt;h2 id="have-toaster-look-for-an-enemy-tile-to-place-grenades-on"&gt;Have Toaster look for an enemy tile to place Grenades on&lt;/h2&gt;
&lt;p&gt;Before, Toaster looked for an empty space on the grid to place whatever tile it was holding. Now, if that tile is a grenade, it looks for an enemy tile to place it on. If it can&amp;rsquo;t find one, it picks another tile from its queue instead because placing grenades on empty grid spaces is pointless. Right now this will break the game if all three tiles in Toaster&amp;rsquo;s queue are grenades (because it&amp;rsquo;ll keep trying them one after the other indefinitely, never actually making a move) and that&amp;rsquo;s something I&amp;rsquo;ll be fixing today.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Mon, 15 Jul 2013 17:50:13 GMT</pubDate><guid isPermaLink="true">https://liza.io/some-toaster-ai-improvements/</guid></item><item><title>Waking Up Early 2.0</title><link>https://josh.works/growth/misc/2013/07/15/waking-up-early-2-0/</link><description>&lt;p&gt;A few months ago, I wrote about 
&lt;a href="/blog/2013/05/07/how-to-wake-up-early"&gt;waking up early.&lt;/a&gt;
I tracked my progress for almost a month, and most of the days I woke up between 4:45 and 6:00. My “must be up by” time is 7:30a, so waking up more than an hour and a half early counts as a huge win.&lt;/p&gt;

&lt;p&gt;From mid-may until June 7, I woke up consistently 
very early. I had excellent success. The reason, however, was not controlled by me. I woke up early because 
I went to bed early. My wife teaches kindergarten in Prince George’s County, and had two classes of 25 kids. Her assistant principal, who’s been doing what he does for about 30 years, told Kristi that her kindergarten class had some of the worst-behaved kids he’d ever seen.
more&lt;/p&gt;

&lt;p&gt;These rough kids (several emotionally disturbed kids, more than a few suspensions for violence, etc.) are why Kristi is teaching where she is teaching, but 
it is exhausting. This means that my wife would usually go to bed by 10:00 pm. We always go to bed at the same time, so this meant 
I was going to bed at 10:00. When I’m in bed that early, it is so easy to get up at 5:something.&lt;/p&gt;

&lt;p&gt;I’ve figured out how to not hate getting up early; I actually enjoy it. So now the challenge is getting enough sleep so I 
can get up early.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t 
wake up early&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I was thinking about waking up early, I lived in a context where the default was going to bed early. Since Kristi’s finished teaching for the summer, our schedules (and bedtime) have developed a lot more flexibility. For the last few weeks, my bedtime has drifted towards midnight or later. I would wake up at 7:00 or so, or if I woke up early, I’d be tired throughout the day. 
Being tired during the day sucks.&lt;/p&gt;

&lt;p&gt;I am shifting my attitude from being one who 
wakes up early (when it’s easy) to one who 
goes to bed early. I love getting up early, but until now, I’d not considered my evening ritual. I just coasted through the day until I decided it was time to start getting ready for bed, which takes an undetermined amount of time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Going to bed early&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My action steps for the next two weeks are pretty easy, and it’s pure monitoring. 
I am not yet trying to change my behavior. I want to set myself up for success (what a trite saying, huh?) but this means having accurate expectations.&lt;/p&gt;

&lt;p&gt;Without an accurate understanding of where I am now, my attempt to set correct goals hinges more on luck than good planning. To facilitate this good planning, I’m keeping track of when I go to bed. Self-monitoring generally leads to low-level improvement by itself, so I’m hoping to move in a good direction simply by paying attention to that which I want to change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action Steps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I will pay attention to two things every evening.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;What time I 
start going to bed.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;What time I 
actually lay down in bed.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am tracking what time I 
start going to bed so I know how long it takes, for the same reason we all know how much time we need to get ready before we leave in the morning. If you have to leave the house at 8:00, you know your alarm has to go off at 7:15, or something like that.&lt;/p&gt;

&lt;p&gt;I’m tracking what time I 
actually lay down in bed first so I can actually quantify the first metric (If I know I start going to bed at 11:15, and wake up at 6:30, that doesn’t really tell me anything) but so I can know how much sleep I’m getting every night, and how I feel in the morning. Different people have different sleep needs, supposedly between seven and eight hours. I would like to better know my own sleep needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your turn&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re interested in waking up earlier, do this with me. I’ll post your results along with mine, and you’ll be (mildly) internet famous! You don’t actually need to wake up at any different time than you already do, you just need to chart when you 
start going to bed, and when you 
actually go to bed. (It takes a sticky note and a pen.)&lt;/p&gt;

&lt;p&gt;Leave a comment here, or shoot me an email. You don’t have to start today (Monday) just sometime this week.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Mon, 15 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/misc/2013/07/15/waking-up-early-2-0/</guid></item><item><title>Slowly improving Toaster AI for #1GAM</title><link>https://liza.io/slowly-improving-toaster-ai-for-1gam/</link><description>&lt;p&gt;My &lt;a href="http://liza.io/interdiction"&gt;&lt;strong&gt;Interdiction&lt;/strong&gt;&lt;/a&gt; single player AI (named Toaster) has been coming along slowly. It&amp;rsquo;s still very far from the unbeatable cylon I want it to be, but it at least tries to defend itself by intercepting the player and attempting to build up its own lines.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 14 Jul 2013 20:02:43 GMT</pubDate><guid isPermaLink="true">https://liza.io/slowly-improving-toaster-ai-for-1gam/</guid></item><item><title>In Search of a Greater Barrier</title><link>https://zacs.site/blog/a-greater-barrier.html</link><description>&lt;p&gt;I have always had great trouble starting to write. I seldom found the actual act of writing difficult, only getting started. The same goes for programming: once I had successfully implemented the main functionality I set out to imbue First Crack with, I ceased iterating on the project not for lack of new ideas&amp;#160;&amp;#8212;&amp;#160;with the underlying code functional and working, I wanted to design an accompanying GUI, for example&amp;#160;&amp;#8212;&amp;#160;but instead because I lacked the drive to approach such a monumental task. I was burned out, I suppose, tired after working on the same project for months and months, and stuck in a linkblog rut when it came to writing.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/a-greater-barrier.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 14 Jul 2013 14:18:37 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/a-greater-barrier.html</guid></item><item><title>Nothing More than a Theory</title><link>https://zacs.site/blog/nothing-more-than-a-theory.html</link><description>&lt;p&gt;With the minor caveat of having drawn its entire inspiration solely from one of the most unintelligible and idiotic videos I have ever seen, &lt;a href="http://jonnegroni.com/2013/07/11/the-pixar-theory/"&gt;Jon Negroni&amp;#8217;s theory&lt;/a&gt; that all Pixar movies not only take place within the same world but also serve to establish a connected timeline is nevertheless a very interesting one. Like most conspiracy theories, Jon&amp;#8217;s proposition makes use of many seemingly related happenstances and strings them together in to a plausible proposition, which he then offered up as a work-in-progress theory.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/nothing-more-than-a-theory.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 14 Jul 2013 13:57:44 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/nothing-more-than-a-theory.html</guid></item><item><title>When HN gets in the way</title><link>https://honza.pokorny.ca/2013/07/when-hn-gets-in-the-way/</link><description>&lt;p&gt;Reading stuff online can become addictive.  So addictive, in fact, that it can
negatively affect your productivity as a programmer.  Most of us go to Hacker
News or Reddit to get our dose of news.  We justify it by saying that it&amp;rsquo;s
&lt;em&gt;research&lt;/em&gt; or that we are &lt;em&gt;trying to stay current in the community&lt;/em&gt;.  Whatever
your excuse, you know you have a problem when you check Hacker News every ten
minutes just to see if anything new and awesome has been added.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Close Hacker News and open a f***ing book.&amp;rdquo;
&amp;ndash; Steve Losh in this &lt;a href="http://devslovebacon.com/conferences/bacon-2012/talks/eve-working-around-evolution"&gt;talk&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maybe you have already gotten over the initial self-denial and you have added
some entries to your &lt;code&gt;/etc/hosts&lt;/code&gt; file to keep yourself from constantly going
to those sites.  That&amp;rsquo;s all well and good but I think we can do better.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ve already opened the tab and you are now staring at a blank error page.
Why not put something more useful there?&lt;/p&gt;
&lt;p&gt;Me, I like to learn new things.  There are way too many things I&amp;rsquo;d like to
learn.  Why not show a list of things I&amp;rsquo;d like to learn and allow me to click
through to the website?&lt;/p&gt;
&lt;p&gt;I have installed nginx on my machine and set up a simple static page with a few
links things like &lt;em&gt;Learn You a Haskell for Great Good&lt;/em&gt; or Steve Losh&amp;rsquo;s &lt;em&gt;Learn
Vimscript the Hardway&lt;/em&gt;.  Now every time I go to HN, I see those links and am
reminded that I wanted to spend some time learning those things&amp;hellip;&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://honza.pokorny.ca/images/hn_nginx.png" /&gt;
&lt;/figure&gt;

&lt;h2 id="steps"&gt;Steps&lt;/h2&gt;
&lt;p&gt;Install nginx.  &lt;code&gt;brew install nginx&lt;/code&gt; or &lt;code&gt;sudo apt-get install nginx&lt;/code&gt; or
whatever might apply to you.&lt;/p&gt;
&lt;p&gt;Stick this in your &lt;code&gt;nginx.conf&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;worker_processes  1;

http {
    include       mime.types;
    default_type  application/octet-stream;

    keepalive_timeout  65;

    server {
        listen       443;
        server_name  news.ycombinator.com;

        ssl                  on;
        ssl_certificate      /usr/local/etc/nginx/server.crt;
        ssl_certificate_key  /usr/local/etc/nginx/server.key;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

    server {
        listen       80;
        server_name  reddit.com;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If any of the sites you are blocking are served over SSL, you will need to get
a self-signed certificate.  This is a one time setup and doesn&amp;rsquo;t really take
that long to do.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;$ openssl req -new -x509 -nodes -out server.crt -keyout server.key
$ chmod 600 server.key
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now you just place those two files to the locations referenced in the above
&lt;code&gt;nginx.conf&lt;/code&gt; file and restart nginx.&lt;/p&gt;
&lt;p&gt;And here is how you can make Chrome stop complaining about your self-signed
certificate (&lt;a href="http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/"&gt;source&lt;/a&gt;).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the address bar, click the little lock with the X. This will bring up a small information screen. Click the button that says &amp;ldquo;Certificate Information.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Click and drag the image to your desktop. It looks like a little certificate.&lt;/li&gt;
&lt;li&gt;Double-click it. This will bring up the Keychain Access utility. Enter your password to unlock it.&lt;/li&gt;
&lt;li&gt;Be sure you add the certificate to the System keychain, not the login keychain. Click &amp;ldquo;Always Trust,&amp;rdquo; even though this doesn&amp;rsquo;t seem to do anything.&lt;/li&gt;
&lt;li&gt;After it has been added, double-click it. You may have to authenticate again. Expand the &amp;ldquo;Trust&amp;rdquo; section.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;When using this certificate,&amp;rdquo; set to &amp;ldquo;Always Trust&amp;rdquo;&lt;/li&gt;
&lt;li&gt;That&amp;rsquo;s it! Close Keychain Access and restart Chrome, and your self-signed certificate should be recognized now by the browser.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Hopefully, this will be helpful to you and nudge you every now and then to
learn something you&amp;rsquo;ve been putting off.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Sun, 14 Jul 2013 04:06:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/07/when-hn-gets-in-the-way/</guid></item><item><title>Updating the Genome Decoder</title><link>https://johnj.com/posts/updating-the-genome-decoder-resulting-consequences/</link><description>&lt;p&gt;
In our &lt;a href="https://johnj.com/posts/getting-our-hands-dirty/"&gt;last post&lt;/a&gt; we saw that so-called “N-blocks” (regions of the
genome for which sequences are not available) were not getting decoded
correctly by &lt;a href="https://johnj.com/posts/a-two-bit-decoder"&gt;our decoder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
The solution is to look back into the so-called “file index” which
specifies where the N-blocks are, and how long each block is. The
modified decoder looks like this:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn genome-sequence
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Read a specific sequence, or all sequences in a file concatenated
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  together; return it as a lazy seq.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  ([fname]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (let [sh (sequence-headers fname)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (lazy-mapcat (partial genome-sequence fname) sh)))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  ([fname hdr]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (let [ofs (:dna-offset hdr)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;           dna-len (:dna-size hdr)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;           byte-len (rounding-up-divide dna-len 4)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;           starts-and-lengths (get-buffer-starts-and-lengths ofs 10000 byte-len)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (-&amp;gt;&amp;gt; (for [[offset length] starts-and-lengths
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                  b (read-with-offset fname offset length)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;              (byte-to-base-pairs b))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            (apply concat)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            (take dna-len)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            (map-indexed (fn [i x] (if (is-in-an-n-block i hdr)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                    :N
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                    x)))))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
The primary modification is the &lt;code class="verbatim"&gt;map-indexed&lt;/code&gt; bit at the end, which
looks up the position of the base pair in the index using the
&lt;code class="verbatim"&gt;is-in-an-n-block&lt;/code&gt; function:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn is-in-an-n-block
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  ([x hdr]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (let [{:keys [n-block-starts n-block-sizes]} hdr]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (is-in-an-n-block x n-block-starts n-block-sizes)))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  ([x n-block-starts n-block-lengths]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (let [pairs (map (fn [a b] [a (+ a b)])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                      n-block-starts n-block-lengths)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (some (fn [[a b]] (&amp;lt; (dec a) x b)) pairs))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
I tested the new decoder against FASTA files of the first two
chromosomes of the human genome using the same procedure we used for
yeast in &lt;a href="https://johnj.com/posts/validating-the-genome-decoder"&gt;my validation post&lt;/a&gt;.  The N-blocks (and all other sequences)
were decoded correctly.&lt;/p&gt;
&lt;p&gt;
The astute reader will note the use of &lt;code class="verbatim"&gt;lazy-mapcat&lt;/code&gt; instead of =mapcat:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn lazy-mapcat
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Fully lazy version of mapcat.  See:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  http://clojurian.blogspot.com/2012/11/beware-of-mapcat.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [f coll]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (lazy-seq
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;   (if (not-empty coll)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (concat
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (f (first coll))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (lazy-mapcat f (rest coll))))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
A version of &lt;code class="verbatim"&gt;genome-sequence&lt;/code&gt; which used mapcat instead of &lt;code class="verbatim"&gt;lazy-mapcat&lt;/code&gt;
worked fine for individual chromosomes (file sections), but
consistently ran out of memory when processing whole genome files. It
took a bit of research and hair-pulling to figure out that there is a
rough edge with mapcat operating on large lazy sequences.&lt;/p&gt;
&lt;p&gt;
Lazy sequences are a strength of Clojure in general – they allow one
to process large, or even infinite, sequences of data without running
out of memory, by consuming and emitting values only as needed, rather
than all at once. Many of the core functions and macros in Clojure
operate on sequences lazily (producing lazy sequences as output),
including &lt;code class="verbatim"&gt;map&lt;/code&gt;, &lt;code class="verbatim"&gt;for&lt;/code&gt;, &lt;code class="verbatim"&gt;concat&lt;/code&gt;, and so on. &lt;code class="verbatim"&gt;mapcat&lt;/code&gt; is among these; however,
&lt;code class="verbatim"&gt;mapcat&lt;/code&gt; is apparently not “maximally lazy” when concatenating other
lazy seqs, causing excessive memory consumption as explained in this
blog post. Using that post’s fully lazy (if slightly slower) version
of &lt;code class="verbatim"&gt;mapcat&lt;/code&gt; fixed my memory leak as well. Though lazy seqs are awesome
in many ways, one does have to be careful of gotchas such as this one.&lt;/p&gt;
&lt;p&gt;
So, in the process of handling this relatively large dataset, we have
discovered two rough edges of Clojure, namely with &lt;code class="verbatim"&gt;mapcat&lt;/code&gt; and
&lt;code class="verbatim"&gt;count&lt;/code&gt;. We shall see if other surprises await us. Meanwhile, the latest
code is &lt;a href="https://github.com/eigenhombre/jenome"&gt;up on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;div class="outline-3" id="outline-container-headline-1"&gt;
&lt;h3 id="headline-1"&gt;
Back to Frequencies
&lt;/h3&gt;
&lt;div class="outline-text-3" id="outline-text-headline-1"&gt;
&lt;p&gt;
Now that we are armed with a decoder which handles N-blocks correctly,
let us return to our original problem: nucleotide frequencies. For
yeast, we again have:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (-&amp;gt;&amp;gt; yeast genome-sequence frequencies)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{:C 2320576, :A 3766349, :T 3753080, :G 2317100}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Same as last time. For humans,&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (-&amp;gt;&amp;gt; human genome-sequence frequencies)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{:N 239850802, :T 856055361, :A 854963149, :C 592966724, :G 593325228}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
As expected, the GAC numbers are the same as what we had previously;
only T and N have changed. The distributions look like so:&lt;/p&gt;
&lt;figure&gt;





&lt;a href="https://johnj.com/hg-yeast-frequencies-2.png"&gt;&lt;img class="resize" src="https://johnj.com/hg-yeast-frequencies-2_hu_2259fa694663c15.png" style="width: 700px; border: 0px solid black;" /&gt;&lt;/a&gt;


&lt;figcaption&gt;
Updated nucleotide frequencies
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
We can see that &lt;a href="http://en.wikipedia.org/wiki/Chargaff's_rules"&gt;Chargaff’s Rule&lt;/a&gt; obtains now: A/T ratios are equal, as
are G/C ratios. (BTW, this rule is intuitively obvious if you consider
that in the double-helix structure, As are paired with Ts and Gs are
paired with Cs.) Interestingly, the relative abundance of GC pairs in
the human genome is higher than it is in yeast.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-3" id="outline-container-headline-2"&gt;
&lt;h3 id="headline-2"&gt;
Timing and Parallelizing
&lt;/h3&gt;
&lt;div class="outline-text-3" id="outline-text-headline-2"&gt;
&lt;p&gt;
Many of these “queries” on our data take a long time to run
(particularly for the human genome). So as not to tie up my REPL and
preventing me from doing other (presumably shorter) experiments, I
find it helpful to run such tasks inside a little macro (similar to
Clojure’s time) which performs the computation in a thread and, when
the task is finished, prints the time elapsed, the code that was run,
and the result:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defmacro tib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  tib: Time in the Background
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Run body in background, printing body and showing result when it's done.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [expr]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  `(future (let [code# '~expr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                 start# (. System (nanoTime))]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;             (println "Starting" code#)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;             (let [result# ~expr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                   end# (. System (nanoTime))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                   dursec# (/ (double (- end# start#)) (* 1000 1000 1000.0))]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;               (println (format "Code: %s\nTime: %.6f seconds\nResult: %s"
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                code#
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                dursec#
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                result#))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;               result#))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
For example, our overflowing &lt;code class="verbatim"&gt;count&lt;/code&gt; runs as follows:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(tib (count (range (* 1000 1000 1000 3))))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Starting (count (range (* 1000 1000 1000 3)))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;; ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Code: (count (range (* 1000 1000 1000 3)))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Time: 399.204845 seconds
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Result: -1294967296&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Another tool which has proved useful is:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defmacro pseq
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Apply threading of funcs in parallel through all sequences specified
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  in the index of fname.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [fname &amp;amp; funcs]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  `(pmap #(-&amp;gt;&amp;gt; (genome-sequence ~fname %)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;               ~@funcs)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         (sequence-headers ~fname)))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
This threads one or more &lt;code class="verbatim"&gt;funcs&lt;/code&gt; through all the sequences in the file,
as mapped out by the file headers. The magic here is &lt;code class="verbatim"&gt;pmap&lt;/code&gt;, which is
&lt;code class="verbatim"&gt;map&lt;/code&gt; parallelized onto separate threads across all available
cores. &lt;code class="verbatim"&gt;pseq&lt;/code&gt; maxes out the CPU on my quad-core Macbook Pro and gives
results significantly faster:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Code: (-&amp;gt;&amp;gt; yeast genome-sequence frequencies)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Time: 33.090855 seconds
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Result: {:C 2320576, :A 3766349, :T 3753080, :G 2317100}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Code: (apply (partial merge-with +) (pseq yeast frequencies))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Time: 16.056695 seconds
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Result: {:C 2320576, :A 3766349, :T 3753080, :G 2317100}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
With our updated decoder and these new tools, we can &lt;a href="https://johnj.com/posts/nucleotide-repetition-lengths"&gt;continue our
poking and prodding of the genome&lt;/a&gt; in subsequent posts.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>John Jacobsen</author><pubDate>Sat, 13 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/updating-the-genome-decoder-resulting-consequences/</guid></item><item><title>How to Write a Bug Report</title><link>http://blog.untrod.com/2013/07/how-to-write-bug-report.html</link><description>&lt;p&gt;Writing good bug reports is the difference between actually seeing your
bug get fixed and sending protracted emails over the course of a week
convincing a developer that there is, in fact, a bug. By far the most
important information you can provide in a bug report are clear
reproduction …&lt;/p&gt;</description><author>Untrod</author><pubDate>Thu, 11 Jul 2013 10:32:00 GMT</pubDate><guid isPermaLink="true">http://blog.untrod.com/2013/07/how-to-write-bug-report.html</guid></item><item><title>Changing Our Development Process</title><link>http://blog.untrod.com/2013/07/changing-our-development-process.html</link><description>&lt;p&gt;This is a post about change management at a start-up.&lt;/p&gt;
&lt;p&gt;Kaggle, at just under 20 people, is an interesting size because we are
right on the cusp of being able to wing it in terms of process and
communication, and needing more formal processes to make sure changes
and plans …&lt;/p&gt;</description><author>Untrod</author><pubDate>Thu, 11 Jul 2013 10:22:00 GMT</pubDate><guid isPermaLink="true">http://blog.untrod.com/2013/07/changing-our-development-process.html</guid></item><item><title>About</title><link>https://boyter.org/about/</link><description>&lt;p&gt;I&amp;rsquo;m a software developer by trade who after years of leaving articles and blog posts all over the place has finally gotten around to consolidating them all into this single site.&lt;/p&gt;
&lt;p&gt;I am a professional software engineer who has been working in development with a focus on testing for over 15 years. In that time I have played an integral part in developing and implementing testing methodologies for all sorts of projects including,&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 11 Jul 2013 07:02:47 GMT</pubDate><guid isPermaLink="true">https://boyter.org/about/</guid></item><item><title>Decoding CAPTCHA’s</title><link>https://boyter.org/decoding-captchas/</link><description>&lt;p&gt;&lt;img alt="Decoding CAPTCHA&amp;rsquo;s Book" src="https://boyter.org/static/decoding-captchas/booksmall.jpeg" /&gt;&lt;/p&gt;
&lt;p&gt;Looking for a practical guide to CAPTCHA decoding? All About CAPTCHA’s. This eBook will teach you how to identify weaknesses and exploit CAPTCHA’s from beginning to end. &lt;a href="https://leanpub.com/decodingcaptchas/"&gt;Buy now using Leanpub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Most people don’t know this but my honors thesis was about using a computer program to read text out of web images. My theory was that if you could get a high level of successful extraction you could use it as another source of data which could be used to improve search engine results. I was even quite successful in doing it, but never really followed my experiments up. My honors adviser &lt;a href="http://csusap.csu.edu.au/~jbgao/"&gt;Dr Junbin Gao http://csusap.csu.edu.au/~jbgao/&lt;/a&gt; had suggested the following writing my thesis I should write some form of article on what I had learnt. Well I finally got around to doing it. While what follows is not exactly what I was studying it is something I wish had existed when I started looking around.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 11 Jul 2013 06:00:02 GMT</pubDate><guid isPermaLink="true">https://boyter.org/decoding-captchas/</guid></item><item><title>Getting Our Hands Dirty (with the Human Genome)</title><link>https://johnj.com/posts/getting-our-hands-dirty/</link><description>&lt;p&gt;
In the past &lt;a href="https://johnj.com/posts/a-two-bit-decoder"&gt;two&lt;/a&gt; &lt;a href="https://johnj.com/posts/validating-the-genome-decoder"&gt;posts&lt;/a&gt;, we created and validated a decoder for genome
data in 2bit format.&lt;/p&gt;
&lt;p&gt;
Let’s start actually looking at the human and yeast genomes &lt;em&gt;per
se&lt;/em&gt;. First, if you haven’t downloaded it yet, you’ll need a copy of the
human genome data file:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd /tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget http://hgdownload.cse.ucsc.edu/goldenPath/hg19/bigZips/hg19.2bit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
(Depending on your local bandwidth conditions, this can take quite awhile.)&lt;/p&gt;
&lt;p&gt;
Again we define convenience vars for the two data files:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(def human "/tmp/hg19.2bit")
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(def yeast (as-file (resource "sacCer3.2bit")))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
The simplest thing we can do is count base pairs:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (time (-&amp;gt;&amp;gt; yeast genome-sequence count))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;"Elapsed time: 17577.042 msecs"
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;12157105
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (time (-&amp;gt;&amp;gt; human genome-sequence count))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;"Elapsed time: 4513537.422 msecs"
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-1157806032&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
WTF?! count has overflowed (if you convert -1157806032 to an unsigned
int you get 3137161264, which makes more sense). This, and our running
time of 75 minutes, is our first hint of pain associated with handling
with such a large dataset.&lt;/p&gt;
&lt;p&gt;
It’s worth noting that number overflows in Clojure generally raise an
ArithmeticException (or silently get promoted to BigIntegers,
depending on the operators used) – I emailed &lt;a href="https://groups.google.com/forum/#!forum/clojure"&gt;the Clojure mailing list&lt;/a&gt;
about this surprise and &lt;a href="http://dev.clojure.org/jira/browse/CLJ-1229"&gt;a ticket has been made&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
The overflow is easily enough remedied with a non-overflowing &lt;code class="verbatim"&gt;count&lt;/code&gt;
(&lt;code class="verbatim"&gt;inc'&lt;/code&gt; is one of the aforementioned promoting operators):&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn count' [s]   ;; Regular count overflows to negative int!
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (loop [s s, n 0]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (if (seq s)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (recur (rest s)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;             (inc' n))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      n)))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Which gives us the unsigned version of our previous answer, in 10%
more time:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (time (-&amp;gt;&amp;gt; human genome-sequence count'))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;"Elapsed time: 4931630.301 msecs"
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3137161264
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (float (/ 3137161264 12157105))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;258.05167&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
(Update 2/14/2014: Matthew Wampler-Doty came up with a more elegant
&lt;code class="verbatim"&gt;count'&lt;/code&gt;:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn count' [s] (reduce (fn [x _] (inc x)) 0 s))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
which is about 25% faster than my slightly more naïve version.)&lt;/p&gt;
&lt;p&gt;
We now have our first bit of insight into human vs. yeast genomes: we
humans have about 260x more base pairs than yeast do.&lt;/p&gt;
&lt;p&gt;
The next question is, What are the relative proportions of occurrence
of each base pair? Easily answered by the &lt;code class="verbatim"&gt;frequencies&lt;/code&gt; function:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (-&amp;gt;&amp;gt; yeast genome-sequence frequencies)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{:C 2320576, :A 3766349, :T 3753080, :G 2317100}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (-&amp;gt;&amp;gt; human genome-sequence frequencies)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{:T 1095906163, :A 854963149, :C 592966724, :G 593325228}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Those numbers have a lot of digits, so here are some bar charts:&lt;/p&gt;
&lt;figure&gt;





&lt;a href="https://johnj.com/hg-yeast-frequencies-1.png"&gt;&lt;img class="resize" src="https://johnj.com/hg-yeast-frequencies-1_hu_222d7c4682de624c.png" style="width: 700px; border: 0px solid black;" /&gt;&lt;/a&gt;


&lt;figcaption&gt;
Our first stab at nucleotide frequencies
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
Though we are playing ignorant data analysts rather than real
biologists, this looks a bit fishy right out of the gate. Why so many
Ts?&lt;/p&gt;
&lt;p&gt;
As a sanity check, perhaps we ought to look more closely at the actual
data:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (-&amp;gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                human
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                genome-sequence
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                (map name)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                (take 100)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                (apply str))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;=&amp;gt; "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;    TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
That doesn’t look good at all. How are the first 10000 base pairs
distributed?&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (-&amp;gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                human
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                genome-sequence
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                (take 10000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                frequencies)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;=&amp;gt; {:T 10000}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
How about the next 10,0000?&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jenome.core&amp;gt; (-&amp;gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                human
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                genome-sequence
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                (drop 10000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                (take 10000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                frequencies)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;=&amp;gt; {:T 2012, :A 2065, :C 3028, :G 2895}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
That looks a lot better. Playing around with this shows that exactly
the first 10,000 base pairs are Ts.&lt;/p&gt;
&lt;p&gt;
The astute reader will recall that the file index in our decoder had
slots for unknown (“N-block”) sequences. Though we didn’t explore them
explicitly, /S. Cerviciae/’s genome had nothing in these slots. It’s
time we went back and looked at our human’s file index:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (-&amp;gt;&amp;gt; human
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       sequence-headers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (map (juxt :name :dna-size :n-block-count))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       clojure.pprint/pprint)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;; =&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(["chr1" 249250621 39]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ["chr2" 243199373 24]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ["chr3" 198022430 9]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ["chr4" 191154276 12]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ["chr5" 180915260 7]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ["chr6" 171115067 11]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ["chr7" 159138663 17]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ["chrX" 155270560 23]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ["chr8" 146364022 9]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ;; LOTS more entries...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Holy cow, they all have N-blocks. This is only the first section; &lt;a href="https://gist.github.com/eigenhombre/5967388"&gt;this
Gist&lt;/a&gt; shows the entire set of N-blocks for all the sequences. (It also
shows that there are many more files in the index than the yeast
genome had, and many more than one for each of the 24 human
chromosomes – clearly there are many things to learn about this data.)&lt;/p&gt;
&lt;p&gt;
Moreover, if we look at the N-blocks for the first sequence:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (-&amp;gt;&amp;gt; human
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       sequence-headers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       first
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       ((juxt :n-block-starts :n-block-sizes))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (apply interleave)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (partition 2)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (map vec)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       clojure.pprint/pprint)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;; Gives:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;([0 10000]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [177417 50000]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [267719 50000]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [471368 50000]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ;; ... total of 39 entries.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
As expected, our first 10,000 base pairs are actually unknown. The
2-bit file format apparently uses 0’s for the unknowns AND to
represent Ts. The rest of the offsets and lengths are in &lt;a href="https://gist.github.com/eigenhombre/5967451"&gt;this
Gist&lt;/a&gt;. (Perhaps someone can explain to me why these are all multiples
of 10000!)&lt;/p&gt;
&lt;p&gt;
All this means that our decoder needs a tweak to give us &lt;code class="verbatim"&gt;:N&lt;/code&gt; instead
of &lt;code class="verbatim"&gt;:T&lt;/code&gt; when the position of the base pair is inside one of the
N-blocks. This we will accomplish in the next post, before we proceed
to the study of other properties of the genome.&lt;/p&gt;
&lt;p&gt;
Before we end, it’s worth noting that, had we been real biologists, we
would surely have known about &lt;a href="http://en.wikipedia.org/wiki/Chargaff's_rules"&gt;Chargaff’s Rule&lt;/a&gt;, which states that A and
T ratios should be the same, as are G and C, as born out in our yeast
distribution, above.&lt;/p&gt;
&lt;p&gt;
Though we haven’t gained mastery over too much of the genome yet, it
is worth pointing out Clojure’s strengths in the above and previous
posts. With comparatively little code we are able to investigate many
of the features of these data sets, thanks to the power of the
threading macro &lt;code class="verbatim"&gt;-&amp;gt;&amp;gt;&lt;/code&gt;, higher-order functions such as &lt;code class="verbatim"&gt;juxt&lt;/code&gt; and &lt;code class="verbatim"&gt;map&lt;/code&gt;, and
sequence handling functions such as &lt;code class="verbatim"&gt;interleave&lt;/code&gt;, &lt;code class="verbatim"&gt;partition&lt;/code&gt;, and
&lt;code class="verbatim"&gt;frequencies&lt;/code&gt;. We’ve also processed large data sets “lazily” without
needing to fit large amounts of data in memory at once. And we have
hardly scratched the surface of Clojure’s tools for parallel
computation, though we may make more use of these in coming posts.&lt;/p&gt;</description><author>John Jacobsen</author><pubDate>Wed, 10 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/getting-our-hands-dirty/</guid></item><item><title>Crock Pots are Foolproof, Right?</title><link>https://josh.works/home/2013/07/10/crock-pots-are-foolproof-right/</link><description>&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe54e4b0278244cea040/1434910435144/pic-04192013-001.jpg"&gt;&lt;img alt="The internal temperature was 175 degrees. Whoops. " src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe54e4b0278244cea040_1434910435144_pic-04192013-001.jpg_" /&gt;&lt;/a&gt;
A while back I got together with my good friend 
&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/5586fe4be4b0278244ce9f01/5586fe9ee4b0278244ceab71/1434910366219/?format=original"&gt;Dustin&lt;/a&gt;. I had an evening free, wanted to cook, AND hang out with good friends. I wanted to try a 
&lt;a href="http://www.sixsistersstuff.com/2013/01/slow-cooker-maple-and-brown-sugar-pork.html"&gt;really good looking recipe&lt;/a&gt;, and watch Django Unchained.&lt;/p&gt;

&lt;p&gt;The cooking instructions for the recipe was “cook on low for 7-9 hours”. I did some mental math. If I turn it on as I’m walking out the door to work, at 8:15, and get back by 5:30, that could work. I’ll have to run some errands on my way home, but if I had 10% to the cook time, it can’t be terrible, right?”
more&lt;/p&gt;

&lt;p&gt;Well… it turns out I was gone more like 10.5 hours, and my crock pot’s 
low temperature setting is a little higher than
 expected.&lt;/p&gt;

&lt;p&gt;I got home about 40 minutes before Dustin was to arrive, and something didn’t smell quite right. I popped open the crock pot, and saw some 
very dry, 
very warm meat. It was 175 degrees. So much for not overdoing it.&lt;/p&gt;

&lt;p&gt;We got take-out from Tara Thai. Zero harm, zero disappointment, and we had a great time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest take away for me had nothing to do with cooking. (I already knew that cooking a piece of meat for almost 11 hours is usually a bad idea.)&lt;/p&gt;

&lt;p&gt;I could have freaked out when I got home and immediately learned that my dinner plans were ruined. I would have been stressed, and probably a little angry. I wasn’t. This was a learning experience, and I love Thai food, so I learned, and we ate Thai.&lt;/p&gt;

&lt;p&gt;My learned lesson was this: 
A good backup plan allows for one to try hard, and even fail, with very few repercussions. There was nothing to freak out about, because dinner was not ruined. It was simply modified. We went from pot roast to cashew chicken with a phone call.&lt;/p&gt;

&lt;p&gt;A few days later I tried the roast again. After it was rescued from the crock pot at an appropriate time, it was delicious.&lt;/p&gt;

&lt;p&gt;Failure can be made safe, and therefore stripped of all those annoying negative associations.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Wed, 10 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/home/2013/07/10/crock-pots-are-foolproof-right/</guid></item><item><title>Make Domain Users Part of Local Admin Group in OS X</title><link>https://justingarrison.com/blog/2013-07-10-make-domain-users-part-of-local-admin-group-in-os-x/</link><description>I came across this and thought it may be helpful for someone. OS X only uses the traditional</description><author>Justin Garrison's Homepage</author><pubDate>Wed, 10 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-07-10-make-domain-users-part-of-local-admin-group-in-os-x/</guid></item><item><title>Framing the Entry Level iPhone</title><link>https://zacs.site/blog/framing-the-entry-level-iphone.html</link><description>&lt;p&gt;&amp;#8220;Part of me think that an entry level iPhone will be very much like an iPod touch with an antenna, with hardware that&amp;#8217;s capable enough to run all of iOS 7&amp;#8217;s features, is better than the any last generation iPhone, but won&amp;#8217;t compare to what&amp;#8217;s inside Apple&amp;#8217;s flagship offering.&amp;#8221;&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/framing-the-entry-level-iphone.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 09 Jul 2013 23:59:19 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/framing-the-entry-level-iphone.html</guid></item><item><title>Effecting Change From The Outside</title><link>http://www.marco.org/2013/07/09/effecting-apple-change-from-outside</link><description>&lt;p&gt;Marco Arment, writing in response to a Hacker News commenter questioning the effectiveness of Apple punditry changing minds within the corporation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I&amp;#8217;ve heard a number of times in the last few years that something I wrote was circulated within Apple or brought up in an internal discussion, usually to support one side of a debate. And it&amp;#8217;s very unlikely that Marco.org is the only site that Apple employees read.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That&amp;#8217;s pretty awesome.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.marco.org/2013/07/09/effecting-apple-change-from-outside"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 09 Jul 2013 23:13:22 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/07/09/effecting-apple-change-from-outside</guid></item><item><title>Glass Teepee</title><link>http://cabinporn.com/post/54752889329/glass-teepee-built-by-big-sur-architect-mickey</link><description>&lt;p&gt;It&amp;#8217;s been a while since I linked to post on Cabin Porn, but this beautiful cabin was just too good to pass up.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/54752889329/glass-teepee-built-by-big-sur-architect-mickey"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 09 Jul 2013 23:12:32 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/54752889329/glass-teepee-built-by-big-sur-architect-mickey</guid></item><item><title>Relegated to a Lookalike</title><link>https://zacs.site/blog/relegated-to-a-lookalike.html</link><description>&lt;p&gt;&amp;#8220;Copying iOS 7 is going to be a big problem for cheap hardware. iOS 7&amp;#8217;s appearance and dynamics require a powerful GPU and advanced, finely tuned, fully hardware-accelerated graphics and animation APIs. This will hurt web imitators most, but it&amp;#8217;s also going to be problematic for Android: while high-end Android phones have mostly caught up in GPU performance, and recent Android versions have improved UI acceleration, most Android devices sold are neither high-end nor up-to-date.&amp;#8221; - Marco Arment in  &lt;a href="http://www.marco.org/2013/06/27/ios7-as-defense"&gt;&lt;em&gt;iOS 7 As Defense&lt;/em&gt;&lt;/a&gt;. Craig Hockenberry made the same point in episode forty-six of John Gruber&amp;#8217;s The Talk Show around minute 35:40.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/relegated-to-a-lookalike.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 09 Jul 2013 22:47:38 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/relegated-to-a-lookalike.html</guid></item><item><title>The Halfway Phone</title><link>https://zacs.site/blog/the-halfway-phone.html</link><description>&lt;p&gt;My second foray into the world of Apple speculation. In my first, which I titled &lt;a href="https://zacs.site/blog/apples-wildcard.html"&gt;&lt;em&gt;Apple&amp;#8217;s Wildcard&lt;/em&gt;&lt;/a&gt;, I spoke to the possibility of Tim Cook announcing an iPone 6 and budget iPhone this fall: while I consider neither particularly likely, leaning more towards an iPhone 5S as the continuation of Apple&amp;#8217;s apparent tick-tock cycle and disappointment for those waiting on a budget iPhone, I hedged my bets with Tim Cook&amp;#8217;s &amp;#8220;Can&amp;#8217;t innovate, my ass&amp;#8221; comment. Since writing that piece though the budget iPhone has remained a surprisingly popular topic, and thus something I feel I should readdress.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-halfway-phone.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 09 Jul 2013 22:47:33 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-halfway-phone.html</guid></item><item><title>We're more than halfway through the #1GAM year! What I've made so far.</title><link>https://liza.io/were-more-than-halfway-through-the-1gam-year-what-ive-made-so-far/</link><description>&lt;p&gt;I looked at &lt;a href="http://onegameamonth.com/lazer"&gt;my One Game a Month profile&lt;/a&gt; just now and realized that we are halfway through the year. That&amp;rsquo;s six games made so far! I&amp;rsquo;ve tried to pick projects that will help me learn something new each month. I figured I&amp;rsquo;d do a quick recap of what I&amp;rsquo;ve done so far:&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Tue, 09 Jul 2013 15:42:09 GMT</pubDate><guid isPermaLink="true">https://liza.io/were-more-than-halfway-through-the-1gam-year-what-ive-made-so-far/</guid></item><item><title>a puppet-ipa user type and a new difference engine</title><link>https://purpleidea.com/blog/2013/07/09/a-puppet-ipa-user-type-and-a-new-difference-engine/</link><description>&lt;p&gt;A simple hack to add a &lt;em&gt;user&lt;/em&gt; type to my &lt;a href="https://github.com/purpleidea/puppet-ipa"&gt;puppet-ipa&lt;/a&gt; module turned out to cause quite a stir. I&amp;rsquo;ve just pushed these changes out for your testing:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;3 files changed, 1401 insertions(+), 215 deletions(-)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should now have a highly capable user type, along with &lt;a href="https://github.com/purpleidea/puppet-ipa/blob/master/examples/simple-usage3.pp#L13"&gt;some quick examples&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also done a rewrite of the &lt;a href="https://github.com/purpleidea/puppet-ipa/blob/master/files/diff.py"&gt;difference engine&lt;/a&gt;, so that it is cleaner and more robust. It now uses function decorators and individual function comparators to help wrangle the data into easily comparable forms. This should make adding future types easier, and less error prone. If you&amp;rsquo;re not comfortable with ruby, that&amp;rsquo;s okay, because it&amp;rsquo;s written in python!&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 09 Jul 2013 09:41:54 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/07/09/a-puppet-ipa-user-type-and-a-new-difference-engine/</guid></item><item><title>Aswin Natarajan: Techstars Associate</title><link>https://solomon.io/aswin-natarajan-techstars-associate/</link><description>Aswin Natarajan is an associate at TechStars, one of the worlds leading startup accelerators He is also the cofounder of Startup Exchange…</description><author>Sam Solomon</author><pubDate>Tue, 09 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/aswin-natarajan-techstars-associate/</guid></item><item><title>Using htop to monitor system processes on the Raspberry Pi</title><link>https://blog.tafkas.net/2013/07/09/using-htop-to-monitor-system-processes-on-the-raspberry-pi/</link><description>If you work a lot on the command line you are probably familiar with the top utility to see what process is taking the most CPU or memory. There’s a similar utility called htop, which is an advanced, interactive system-monitor utility that can be used as a replacement tool for the default process monitoring command &amp;lsquo;top&amp;rsquo; on a Linux ecosystem. This interactive process viewer provides a real-time, dynamic view of what’s happening on your Raspberry Pi system.</description><author>Tafkas Blog</author><pubDate>Tue, 09 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.tafkas.net/2013/07/09/using-htop-to-monitor-system-processes-on-the-raspberry-pi/</guid></item><item><title>If I Were a Recycling Manager, What a Difference I Would Make</title><link>https://xavd.id/blog/post/if-i-were-a-recycling/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/if-i-were-a-recycling/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Tue, 09 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/if-i-were-a-recycling/</guid></item><item><title>First five meals from The 4-Hour Chef</title><link>https://josh.works/home/2013/07/08/first-five-meals-from-the-4-hour-chef/</link><description>&lt;p&gt;I don’t know how to cook. Period. My most impressive culinary creations were, until recently, spaghetti and beans-n-rice.
I got married about a year ago, and had hoped that I would become inspired to become a world-class chef. After a long time eating Rice-A-Roni, spaghetti, sloppy joes, burgers, and anything that can be prepared in a crock pot, I was looking for a change, and 
&lt;a href="/epic-quest"&gt;this has been a priority for a while.&lt;/a&gt;more&lt;/p&gt;

&lt;p&gt;Enter Tim Ferriss’s 
&lt;a href="http://www.amazon.com/The-4-Hour-Chef-Learning-Anything/dp/0547884591/ref=sr_1_1?ie=UTF8&amp;amp;qid=1358001534&amp;amp;sr=8-1&amp;amp;keywords=the+four+hour+chef"&gt;The 4-Hour Chef.&lt;/a&gt; Among many other things in the book, he has a prescribed set of recipes to follow. In each recipe, he builds on skills, tools, and ingredients used in the prior recipe. His aim with each meal is maximum impact in taste and appearance, but minimum effort and cleanup. This resonates with me, because he speaks in terms of 
Return on Investment (in terms of money, time, and effort.)&lt;/p&gt;

&lt;p&gt;Most importantly, once you have the book, you don’t need any other resources. You’ll need some basic tools, but he spells out all the processes the first time he introduces them.&lt;/p&gt;

&lt;h4 id="i-will-record-my-trip-through-his-book-and-identify-anyhiccupsalong-the-way-i-hope-in-addition-to-cataloging-my-own-successes-and-failures-i-can-inspire-one-or-two-of"&gt;I will record my trip through his book, and identify any hiccups along the way. I hope, in addition to cataloging my own successes and failures, I can inspire one or two of&lt;/h4&gt;
&lt;p&gt;you to give this a shot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson One: Osso Buko&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first lesson is braised lamb. What is a 
braised anything?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Braising"&gt;Braising&lt;/a&gt;is a combination cooking method using both moist and dry heat; typically the food is first seared at a high temperature and then finished in a covered pot with a variable amount of liquid, resulting in a particular flavor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For this lesson, we (Tim and I, of course.) skipped the searing. It’s easier this way, and still comes out great.&lt;/p&gt;

&lt;p&gt;There are two critical ingredients to Osso Buko. First, the meat. I was supposed to have lamb shanks. Where the heck do you get lamb shanks? I went to a local Giant and poked around their meat department for a while, and could find nothing that looked like what Tim had in his book.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe52e4b0278244ce9fed/1434910432729/lamb-chops_300.jpg"&gt;&lt;img alt="" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe52e4b0278244ce9fed_1434910432729_lamb-chops_300.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe52e4b0278244ce9fe9/1434910432146/raw-shank.jpg"&gt;&lt;img alt="The lamb chops that I WANTED." src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe52e4b0278244ce9fe9_1434910432146_raw-shank.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since I was cooking for three later that evening, I just grabbed meat that said “lamb” on it, and also had visible bone. Turns out I had gotten lamb chops. Oh well.&lt;/p&gt;

&lt;p&gt;I had my meat. What was the other critical ingredient? Not an ingredient, per se, but a tool. I had to use a cast-iron dutch oven. I’ve never owned anything cast iron, and there was no cast iron cook wear in my house growing up. My uncle introduced me to it when I lived in his basement after I finished college; he is an excellent cook, and he swears by the stuff. Since he is a trustworthy source, I did not protest much to the idea of getting a cast iron dutch oven. Especially since 
&lt;a href="http://www.amazon.com/Lodge-Logic-Pre-Seasoned-Combo-Cooker/dp/B0009JKG9M/ref=sr_1_1?s=home-garden&amp;amp;ie=UTF8&amp;amp;qid=1358005155&amp;amp;sr=1-1&amp;amp;keywords=dutch+oven+combo"&gt;this dutch oven by Lodge&lt;/a&gt; is both a pot and a skillet.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe53e4b0278244ce9fff/1434910433374/pic-01142013-004.jpg"&gt;&lt;img alt="About to be cooked." src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe53e4b0278244ce9fff_1434910433374_pic-01142013-004.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that I had my meat and my pot, I put everything in the pot (carrots, lamb, canned whole tomatoes, a little garlic, extra-virgin olive oil, and some white wine) and I stuck it in the oven for two hours. It came out delicious, and tender. Everything was edible, including the carrots and the tomatoes.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Lessons learned: While meals may be simple, it can be a real pain finding the correct ingredients. The chops I got were not at all what I was looking for, but it was the only lamb I could find. If you know where to get good lamb shanks, let me know.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe54e4b0278244cea01f/1434910433999/pic-01142013-011.jpg"&gt;&lt;img alt="I substituted lamb shanks with turkey legs. It was OK. " src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe54e4b0278244cea01f_1434910433999_pic-01142013-011.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I eventually ended up getting turkey thighs instead of lamb shanks, just so I could have a better idea of how it is supposed to go. It worked out, but I’m not a huge turkey fan, so… I’m going to keep looking for lamb shanks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson One and a Half: Chuck Roast&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The very next page, after the Ossu Buko, was a variation of braising using just a chuck roast, and three different cans of broth. Put everything together in the pot, and bake for 2.5 hours. Seriously. That easy. It was delicious. And there was 
lots of left overs.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe55e4b0278244cea052/1434910435306/pic-05112013-002.jpg"&gt;&lt;img alt="Breakfast of champions." src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe55e4b0278244cea052_1434910435306_pic-05112013-002.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Two: Scrambled Eggs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve been eating three eggs and bacon for breakfast every day for at least two years. Repetitive, yes, but healthy (in some circles. Unhealthy in others. Guess which camp I am in?) and easy. I don’t scramble them, I just put ‘em sunny side up and mop the yolks with the bacon.&lt;/p&gt;

&lt;p&gt;It was easy to transfer to scrambled eggs. Tim outlines three different ways to make scrambled eggs, and they all three have to do with the ratio of egg whites to egg yolks. He recommends a 2:1 ratio of yolks to whites. This would leave me with a ton of whites, so I’ve been using a 1:1. (In his defense, he has a paragraph labeled “What the hell do I do with these extra egg whites?” The answer is either flip the ratio next time around, make crab cakes, or hair conditioner. Yes, hair conditioner…)&lt;/p&gt;

&lt;p&gt;I’m stuck in the rut of sunny-side up eggs and bacon, though, so after a few days of playing around with scrambled eggs, I settled back into my old habits.&lt;/p&gt;

&lt;p&gt;Tim lists 
around the world in 44 flavor combinations as suggestions to get a feel for different cuisines  With just a few basic spices, you can get from Mexico to India to the Middle East to Greece to Hungary and more.&lt;/p&gt;

&lt;p&gt;I experimented with scrambled eggs for a few days, but I just love my sunny-side-up eggs cooked in a little bacon grease. It’s quick and easy, and oh-so-filling.&lt;/p&gt;

&lt;p&gt;(My last trip to Giant, they had eggs for the cheap. I bought four-and-a-half DOZEN eggs. It lasted about three weeks. Mm, protein.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Three: Coconut Cauliflower Curry Mash&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was my first total failure. I screwed up the ingredient ratios, and found out I didn’t have curry (I thought I did) so I unintentionally steamed a bunch of cauliflower that was too hard to mash, yet still soft enough to eat plain; I had cauliflower leftovers for a few days. The upside is cauliflower steamed with coconut milk is delicious, even if it can’t be mashed up like mashed potatoes. For “total failure”, it was no big loss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Four: Union Square Zucchini&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe54e4b0278244cea038/1434910434726/pic-02032013-002.jpg"&gt;&lt;img alt="Very tasty. Highly recommended." src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe54e4b0278244cea038_1434910434726_pic-02032013-002.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This stuff was delicious!&lt;/p&gt;

&lt;p&gt;My biggest challenge for this lesson was finding zucchini! The two local Giants that I visited didn’t have ‘em. Once I found out that zucchini is basically a squash, I had better luck finding it. (Cucumbers, on the other hand, are not interchangeable!) I also did not have the 
&lt;a href="http://en.wikipedia.org/wiki/Ghee"&gt;Ghee&lt;/a&gt; (clarified butter) or chilli pepper. I used red pepper flakes, instead, and some regular butter.&lt;/p&gt;

&lt;p&gt;I peeled the outside of the zucchini before slicing it into thin strips- turns out I didn’t have to do it. Skipping that step will save time, and the peeler I was using wasn’t working so well; I got a better peeler. Between not peeling the outside, and having a good peeler, the prep took about 1/3 as long.&lt;/p&gt;

&lt;p&gt;Lessons learned: Zucchini are also called squash. After scouring the world looking for some stinking zucchini, I realized I had found it. Several times. And never even knew it. Again, shopping has proven to be the biggest frustration. The good news is, one can get better at shopping for food. Everything else is easy. This was seriously delicious.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Five: Bittman Chinese Chicken with Bok Choy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I could not find the necessary baby 
&lt;a href="http://en.wikipedia.org/wiki/Chinese_cabbage"&gt;bok choy&lt;/a&gt;, so this was actually just Chinese chicken. I had never steamed meat before, but it’s pretty easy. I started with boneless skinless chicken breasts, cut them in half the long way, and lay them on top of a wire rack above steaming water. Put a lid on top, and pull them off fifteen minutes later.&lt;/p&gt;

&lt;p&gt;This is easy, in theory, except I didn’t have a wire rack (I commandeered the wire rack from my toaster oven), and I didn’t know when to start the fifteen minute timer. I decided that the water should be boiling before you put the chicken on top of the wire rack, and 
that is when you start the fifteen minutes.&lt;/p&gt;

&lt;p&gt;Take two:&lt;/p&gt;

&lt;p&gt;I was able to get the Bok Choy, and made the sauce more than 20 minutes in advance. It still tasted very good, and it presents very well. (If you want to look like a kick-butt chef, talk about “presenting”. It distracts the guests from the
taste of the food, and focuses the attention on the 
look of the food. This can be a good thing.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lessons I learned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This post represents many, many hours of work. Between reading and trying to figure out what I needed to do and buy, to actually trying to buy the stuff, to cooking and cleaning, a lot of work happened here. But it was worth it. I’m learning my way around a kitchen.&lt;/p&gt;

&lt;p&gt;Since eating is a pretty regular part of my life, it is worth it to me to get good at it.&lt;/p&gt;

&lt;p&gt;Even when everything seems perfectly clear, there is still plenty of room for questions. Most questions related to ingredient substitution; I don’t have curry powder, so I’ll try red pepper flakes. No ghee? I’ll go without.&lt;/p&gt;

&lt;p&gt;I questioned plenty of the cooking processes. Fifteen minutes of cooking over boiling water. Should the water be boiling when I put the meat on, or do I count heating the water as part of the fifteen minutes? (Thank you, probe thermometers…)&lt;/p&gt;

&lt;p&gt;I had issues finding all the food that I needed for the meals. I never shopped for more than one meal at a time, even though this meant lots of trips to the store. At the time, I had plenty of time to go to Giant, so my struggle with batching grocery runs was not overly problematic.&lt;/p&gt;

&lt;p&gt;Fear of failure can be overpowering. I didn’t want to mess these up. It helped that my wife, Kristi, would often make a side, like mashed potatoes or microwaved corn. That took some of the pressure of failure off me. All the fear of failure was entirely self-generated. And 
&lt;a href="http://www.tarathai.com/"&gt;Tara Thai&lt;/a&gt; is right down the street. And they deliver. If it all 
does totally hit the fan, just order some take out. Consider it an inexpensive and very local cooking class, and you learned something that does not work. 
&lt;a href="/blog/2013/07/10/crock-pots-are-foolproof-right"&gt;Failure is not so bad.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shopping is an important part of cooking. I never expected shopping to be so hard. I now realize that I must mentally equip myself to go into the store and come out with what I need. There are thousands of choices, and it’s painful walking the entire store looking for one stupid item that you 
know they have.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Mon, 08 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/home/2013/07/08/first-five-meals-from-the-4-hour-chef/</guid></item><item><title>Hand and Sew Video</title><link>https://june.kim/hand-and-sew/</link><author>june.kim</author><pubDate>Mon, 08 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://june.kim/hand-and-sew/</guid></item><item><title>Arrays.asList() gives a list with wrong size</title><link>https://www.craigpardey.com/post/2013-07-08-arrays-aslist-gives-a-list-with-wrong-size/</link><description>&lt;p&gt;Try this out for fun.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int[] i = new int[]{1, 2, 3};  
System.out.println(Arrays.asList(i).size());

Integer[] ii = new Integer[]{1, 2, 3};  
System.out.println(Arrays.asList(ii).size());  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output:&lt;br /&gt;
1&lt;br /&gt;
3&lt;/p&gt;
&lt;p&gt;What the hell, Java? This is totally unexpected behaviour!&lt;/p&gt;
&lt;p&gt;In this case Java is being a bit pedantic. See, Collections can contain only
contain Objects, and an &lt;code&gt;int&lt;/code&gt; is not an &lt;code&gt;Object&lt;/code&gt; but &lt;code&gt;int[]&lt;/code&gt; is an &lt;code&gt;Object&lt;/code&gt;,
so that&amp;rsquo;s why you get a list with only 1 element.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Mon, 08 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-07-08-arrays-aslist-gives-a-list-with-wrong-size/</guid></item><item><title>Validating the Genome Decoder</title><link>https://johnj.com/posts/validating-the-genome-decoder/</link><description>&lt;p&gt;
Today we’ll validate the genome decoder &lt;a href="https://johnj.com/posts/a-two-bit-decoder"&gt;we described yesterday&lt;/a&gt;, once
again with our friend the yeast Saccharomyces cerevisiae (you may want
to enjoy a slice of freshly-baked bread and a stein of Pilsner with
this post).&lt;/p&gt;
&lt;p&gt;
We are aided in this case by the availability of the SacCer3 genome in
both 2bit and FASTA formats. We can get &lt;a href="https://hgdownload.soe.ucsc.edu/goldenPath/sacCer3/chromosomes/"&gt;the FASTA version&lt;/a&gt; in the same
place &lt;a href="https://hgdownload.soe.ucsc.edu/goldenPath/sacCer3/chromosomes/"&gt;we got the 2bit file&lt;/a&gt;:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir /tmp/sacCer3_fasta
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd /tmp/sacCer3_fasta
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget http://hgdownload-test.cse.ucsc.edu/goldenPath/sacCer3/bigZips/\
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chromFa.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar xvzf chromFa.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
There is one FASTA file per sequence, starting something like this:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;chrI
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CCACACCACACCCACACACCCACACACCACACCACACACCACACCACACC
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CACACACACACATCCTAACACTACCCTAACACAGCCCTAATCTAACCCTG
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GCCAACCTGTCTCTCAACTTACCCTCCATTACCCTGCCTCCACTCGTTAC
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CCTGTCCCATTCAACCATACCACTCCGAACCACCATCCATCCCTCTACTT
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ACTACCACTCACCCACCGTTACCCTCCAATTACCCATATCCAACCCACTG
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CCACTTACCCTACCATTACCCTACCATCCACCATGACCTACTCACCATAC&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Back in the REPL, we can now spit out our own copy in the same format
(carrying over &lt;code class="verbatim"&gt;yeast&lt;/code&gt; and other functions and vars from the previous
post).&lt;/p&gt;
&lt;p&gt;
First we need a new directory for the FASTA files we’ll generate:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(.mkdir (clojure.java.io/file "/tmp/decoded"))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Then we convert the keywords in our sequence to strings:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn genome-str
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Convert e.g. [:A :G :T :C] to \"AGTC\"
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [s]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (-&amp;gt;&amp;gt; s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (map name)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (apply str)))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
A simple function will spit out the files, given a seq:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn write-seq
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Write a (potentially very long) sequence of lines to a text file
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [filename s]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (with-open [wrt (clojure.java.io/writer filename)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (doseq [x s]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (.write wrt (str x "\n")))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
And now for the actual converter:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(doseq [{:keys [name dna-offset dna-size]} (sequence-headers yeast)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (let [fname (str "/tmp/decoded/" name ".fa")]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (write-seq fname
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;               (cons (str "&amp;gt;" name)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                     (-&amp;gt;&amp;gt; (genome-sequence yeast dna-offset dna-size)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                          (partition-all 50)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                          (map genome-str))))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Did it work?&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd /tmp/sacCer3_fasta
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for f in *.fa; do diff $f /tmp/decoded/$f; done&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
No output – it succeeded! This builds more confidence that we didn’t
screw anything up in the decoder. (There are also a few other
hard-coded unit tests in &lt;code class="verbatim"&gt;test_core.clj&lt;/code&gt;.)&lt;/p&gt;
&lt;p&gt;
Comparing file sizes, the FASTA files are about 4 times larger than
the original 2bit file. If you tar and compress both versions, the
FASTA files are still about 30% larger. It is left as as an exercise
to the reader (with some spare hard disk) to do the same comparison
with the human genome. (Though larger, the FASTA files would clearly
be simpler to work with, and these days 4 GB isn’t too terribly much
data; nevertheless, we’ll continue to use the 2bit file and decoder
for our explorations.)&lt;/p&gt;
&lt;p&gt;
Now we are ready to begin playing with the actual data – &lt;a href="https://johnj.com/posts/getting-our-hands-dirty"&gt;starting in
the next post&lt;/a&gt;.&lt;/p&gt;</description><author>John Jacobsen</author><pubDate>Sun, 07 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/validating-the-genome-decoder/</guid></item><item><title>Be vanilla</title><link>https://stephango.com/vanilla</link><description>&lt;p&gt;The term “vanilla” is often used to describe something ordinary, plain, or standard. In my book, there’s nothing less vanilla than vanilla.&lt;/p&gt;

&lt;p&gt;Vanilla beans are the fruit of a rare orchid native to Mexico. Their aroma and flavor comes from a compound called vanillin. Each vanilla flower blooms just one morning out of every year. The orchid can only be naturally pollinated by a small Mexican bee, and if it isn’t pollinated that morning, the flower will wilt. No bean.&lt;/p&gt;

&lt;p&gt;Commercially, vanilla is delicately hand-pollinated one flower at a time. The labor involved in vanilla production makes it the second most expensive spice in the world after saffron.&lt;/p&gt;

&lt;p&gt;Vanilla flavor has been prized for thousands of years, and can be found in every ice cream shop on Earth. It’s the best-selling flavor in the world.&lt;/p&gt;

&lt;p&gt;Vanilla’s universal appeal is why it’s the default. Is your default as good as vanilla?&lt;/p&gt;</description><author>Steph Ango</author><pubDate>Sun, 07 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://stephango.com/vanilla</guid></item><item><title>Apple's Wildcard</title><link>https://zacs.site/blog/apples-wildcard.html</link><description>&lt;p&gt;For the most part I try to stay away from Apple speculation: quite simply, I neither know enough about the company&amp;#8217;s past and present situation nor do I pay close enough attention to pick up on the subtleties of this practice. Then I read an interesting article speculating about Apple&amp;#8217;s Fall hardware announcements, and I decided to give it a try.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/apples-wildcard.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 06 Jul 2013 17:08:34 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/apples-wildcard.html</guid></item><item><title>A Two Bit Decoder</title><link>https://johnj.com/posts/a-two-bit-decoder/</link><description>&lt;p&gt;
The entire human genome is available as a single .2bit file &lt;a href="http://hgdownload.cse.ucsc.edu/downloads.html#human"&gt;here&lt;/a&gt;
(click on “Full Data Set”, then download &lt;code class="verbatim"&gt;hg19.2bit&lt;/code&gt;). Unlike the
stellar signal in &lt;em&gt;His Master’s Voice&lt;/em&gt;, &lt;a href="http://genome.ucsc.edu/FAQ/FAQformat#format7"&gt;the 2bit format&lt;/a&gt; is reasonably
clearly documented.&lt;/p&gt;
&lt;p&gt;
We want to write Clojure code to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Provide base pairs in symbolic (rather than raw binary) form as
lazy sequences – i.e., sequences which need not all fit in memory
at once, but can be consumed and processed as needed;&lt;/li&gt;
&lt;li&gt;Provide “random access” to this data selectively, e.g. by
chromosome, rather than always reading through the entire file;&lt;/li&gt;
&lt;li&gt;Provide access to metadata encoded in the file.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The functionality to do this is posted in the &lt;a href="https://github.com/eigenhombre/jenome"&gt;jenome&lt;/a&gt; project on
GitHub. In this post, we’ll explore this code a little; in following
posts, we’ll do some investigating of the actual genome &lt;em&gt;per se&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;
Capability (2) is provided, in part, by implementing random-access
reads from file &lt;code class="verbatim"&gt;fname&lt;/code&gt; of &lt;code class="verbatim"&gt;len&lt;/code&gt; bytes starting at &lt;code class="verbatim"&gt;offset&lt;/code&gt;:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(ns jenome.rafile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (:import (java.io RandomAccessFile)))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn read-with-offset [fname offset len]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (let [raf (RandomAccessFile. fname "r")
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        bb (byte-array len)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (.seek raf offset)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (.readFully raf bb)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (.close raf)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    bb))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Armed with this, we can get the &lt;code class="verbatim"&gt;.2bit&lt;/code&gt; file header:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn file-header [fname]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (let [[sig ver seqcnt resvd] (-&amp;gt;&amp;gt; (read-with-offset fname 0 16)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                    (partition 4)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                    (map bytes-to-number))]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (assert (= sig 0x1A412743))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (assert (= ver 0))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (assert (= resvd 0))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    seqcnt))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;code class="verbatim"&gt;file-header&lt;/code&gt; basically just gives us the number of sequences (usually,
chromosomes) in the file, doing some sanity checks along the
way. &lt;code class="verbatim"&gt;bytes-to-number&lt;/code&gt; converts an arbitrary sequence of bytes to the
appropriate unsigned integer. (For brevity’s sake, I won’t show every
utility function in this blog post; &lt;a href="https://github.com/eigenhombre/jenome/blob/master/src/jenome/core.clj"&gt;the source code on GitHub&lt;/a&gt; is
reasonably short.)&lt;/p&gt;
&lt;p&gt;





&lt;a href="https://johnj.com/2bitfig1.png"&gt;&lt;img class="resize" src="https://johnj.com/2bitfig1_hu_b6d2f6b94b026559.png" style="width: 400px; border: 0px solid black;" /&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
The next part of the file, as shown in Figure 1, is called the “file
index,” and contains a list of sequences contained the rest of the
file. It can be read as follows:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn file-index [fname seqcnt]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (loop [i 0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         ofs 16
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         ret []]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (if (&amp;lt; i seqcnt)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (let [[nlen] (read-with-offset fname ofs 1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            name (apply str (map char (read-with-offset fname 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                                        (+ ofs 1) nlen)))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            seq-offset (get32 fname (+ ofs 1 nlen))]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        (recur (inc i) (+ ofs nlen 5) (conj ret [nlen name seq-offset])))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      ret)))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
This somewhat imperative code walks through the &lt;code class="verbatim"&gt;seqcnt&lt;/code&gt; sequence
portions of the index, pulling out sequence names and lengths as we
go.&lt;/p&gt;
&lt;p&gt;
It’s here that we introduce a new friend, the yeast &lt;a href="http://en.wikipedia.org/wiki/Saccharomyces_cerevisiae"&gt;Saccharomyces
cerevisiae&lt;/a&gt; (SacCer3), used since antiquity for making bread and
fermented beverages. Relatively small in comparison with the human
genome, SacCer3 will be our “unit test” organism. Available online and
checked into the &lt;code class="verbatim"&gt;resources&lt;/code&gt; folder in this repo, the file can be accessed as&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(def yeast
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;   (as-file (resource "sacCer3.2bit")))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
(I have imported &lt;code class="verbatim"&gt;resource&lt;/code&gt; and &lt;code class="verbatim"&gt;as-file&lt;/code&gt; from &lt;code class="verbatim"&gt;clojure.java.io&lt;/code&gt;; again, see
the source code.)&lt;/p&gt;
&lt;p&gt;
Our index-reading code yields:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (let [seqcnt (file-header yeast)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (file-index yeast seqcnt))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  ;=&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[[4 "chrI" 191]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [5 "chrII" 57762]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [6 "chrIII" 261074]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [5 "chrIV" 340245]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [5 "chrIX" 723245]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [4 "chrV" 833233]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [5 "chrVI" 977468]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [6 "chrVII" 1045025]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [7 "chrVIII" 1317776]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [4 "chrX" 1458453]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [5 "chrXI" 1644907]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [6 "chrXII" 1811627]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [7 "chrXIII" 2081188]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [6 "chrXIV" 2312312]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [5 "chrXV" 2508412]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [6 "chrXVI" 2781251]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [4 "chrM" 3018284]]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
The apparent consistency of these values give us some initial
confidence that we are reading the index correctly. Note, however, the
curious fact that &lt;code class="verbatim"&gt;chrIX&lt;/code&gt; appears between &lt;code class="verbatim"&gt;IV&lt;/code&gt; and &lt;code class="verbatim"&gt;V&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;
With this encouraging start, we can now attack the sequences
proper. These are laid out as shown in Figure 2, with block metadata
prepended to the actual DNA sequences:&lt;/p&gt;
&lt;figure&gt;





&lt;a href="https://johnj.com/2bitfig2.png"&gt;&lt;img class="resize" src="https://johnj.com/2bitfig2_hu_2c43bf82fda34b83.png" style="width: 300px; border: 0px solid black;" /&gt;&lt;/a&gt;


&lt;figcaption&gt;
Sequence Record Layout
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
The “N blocks” are blocks of unknown sequences with specified offsets
and lengths. Masked blocks are blocks which are known repetitions
(indicated as lower case &lt;code class="verbatim"&gt;a&lt;/code&gt;, &lt;code class="verbatim"&gt;g&lt;/code&gt;, &lt;code class="verbatim"&gt;c&lt;/code&gt; and &lt;code class="verbatim"&gt;t&lt;/code&gt; in the text-based
‘FASTA’ file format). We are obviously most interested in &lt;code class="verbatim"&gt;dnaSize&lt;/code&gt;, the
number of base pairs in the sequence, and the actual sequence values
themselves.&lt;/p&gt;
&lt;p&gt;
Unpacking the above data format (except the base pairs &lt;em&gt;per se&lt;/em&gt;) makes
heavy use of &lt;code class="verbatim"&gt;get32&lt;/code&gt;, which just returns the unsigned 32-bit integer at
the specified file location. This code doesn’t need to be super
efficient, since the block headers themselves are quite small. The
metadata for the entire file is returned as a sequence of maps.&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn getblk [fname offset n]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (let [ret (map #(get32 fname (+ offset (* 4 %))) (range n))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        offset (skip offset n)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    [ret offset]))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn sequence-headers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Get sequence headers from .2bit file, as documented in
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  http://genome.ucsc.edu/FAQ/FAQformat#format7. Returns a list of maps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  with details for each sequence.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [fname]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (let [seqcnt (file-header fname)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (for [[nlen name ofs] (file-index fname seqcnt)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (let [[[dna-size]         ofs] (getblk fname ofs 1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            [[n-block-count]    ofs] (getblk fname ofs 1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            [n-block-starts     ofs] (getblk fname ofs n-block-count)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            [n-block-sizes      ofs] (getblk fname ofs n-block-count)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            [[mask-block-count] ofs] (getblk fname ofs 1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            [mask-block-starts  ofs] (getblk fname ofs mask-block-count)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            [mask-block-sizes   ofs] (getblk fname ofs mask-block-count)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            [[reserved]         ofs] (getblk fname ofs 1)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        (assert (zero? reserved))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        {:name name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         :nlen nlen
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         :dna-size dna-size
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         :n-block-count n-block-count
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         :n-block-starts n-block-starts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         :n-block-sizes n-block-sizes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         :mask-block-starts mask-block-starts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         :mask-block-sizes mask-block-sizes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         :dna-offset ofs}))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
A few sanity checks are included in &lt;code class="verbatim"&gt;test_core.clj&lt;/code&gt; to make sure we’re
decoding the metadata correctly. Requirement (3) is done!&lt;/p&gt;
&lt;p&gt;
The final step (Requirement (1)), is to actually get our base pairs
(BPs). Since we have to assume the data set is very large (as is the
case with the human genome), we cannot read the entire DNA sequence at
once. The first part is to break the &lt;code class="verbatim"&gt;dna-size&lt;/code&gt; base pairs (remember we
have 2 bits per BP, or 4 BP/byte), starting at &lt;code class="verbatim"&gt;dna-offset&lt;/code&gt;. First we
obtain the “coordinates” of the sequences we want to read:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn get-buffer-starts-and-lengths 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Return buffer offsets (starting at ofs) required to cleanly read a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  total of m bytes no more than n at a time
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  [ofs n m]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (loop [a ofs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         len n
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;         ret []]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    (if (&amp;gt;= a (+ m ofs))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      ret
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (recur (+ a n)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;             n
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;             (conj ret [a (min len (- (+ m ofs) a))])))))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;; Example:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(get-buffer-starts-and-lengths 100 200 512)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;=&amp;gt; [[100 200] [300 200] [500 112]]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
At long last, having obtained the locations and lengths we want to read from, we can get our sequences out:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn genome-sequence
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  Read a specific sequence, or all sequences in a file concatenated
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  together; return it as a lazy seq.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  "
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  ([fname]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (let [sh (sequence-headers fname)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (mapcat #(genome-sequence fname %1 %2)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;               (map :dna-offset sh)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;               (map :dna-size sh))))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  ([fname ofs dna-len]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     (take dna-len
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;           (apply concat
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                  (let [byte-len (rounding-up-divide dna-len 4)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                        starts-and-lengths (get-buffer-starts-and-lengths
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                              ofs 10000 byte-len)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                    (for [[offset length] starts-and-lengths
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                          :let [buf (read-with-offset fname offset length)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                          b buf]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                      (byte-to-base-pairs b)))))))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;; Example:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (-&amp;gt;&amp;gt; yeast
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      genome-sequence
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      (take 30))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;=&amp;gt; (:C :C :A :C :A :C :C :A :C :A :C :C :C :A :C
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;    :A :C :A :C :C :C :A :C :A :C :A :C :C :A :C)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
This function allows us to choose the entire genome, or that for a
given offset and number of base pairs (whether from the metadata for
an entire chromosome, or some smaller region, thus satisfying (2)).&lt;/p&gt;
&lt;p&gt;
The next post will focus on verification of correctness of this code;
subsequent posts will begin to explore the characteristics of this
data for various genomes, human or otherwise.&lt;/p&gt;</description><author>John Jacobsen</author><pubDate>Sat, 06 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/a-two-bit-decoder/</guid></item><item><title>How I compress PNG files on this website</title><link>https://duncanlock.net/blog/2013/07/05/how-i-compress-png-files-on-this-website/</link><description>&lt;section class="doc-section level-1"&gt;&lt;h2 id="_compressing_limited_colour_png_images"&gt;Compressing Limited Colour &lt;span class="caps"&gt;PNG&lt;/span&gt;&amp;nbsp;images&lt;/h2&gt;&lt;p&gt;Most of the .&lt;span class="caps"&gt;PNG&lt;/span&gt; files on this site are the &amp;#8216;blueprint&amp;#8217; style diagrams, like this&amp;nbsp;one:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="Blueprint style diagram showing an optical microscope. The sample inside is magnified in a bubble to 2500 times, showing it to be a complex, detailed paisley pattern." src="https://duncanlock.net/images/posts/how-i-compress-png-files-on-this-website/microscope-diagram.png" width="500" /&gt;
&lt;figcaption&gt;Figure 1. This illustration is a large 5.&lt;span class="caps"&gt;6MB&lt;/span&gt; &lt;span class="caps"&gt;SVG&lt;/span&gt; file, mostly because of the very detailed paisley pattern that I used. Exported to &lt;span class="caps"&gt;PNG&lt;/span&gt; - and then compressed using the process below, you can get this down to 118.5kB.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I create these in Inkscape as vector .&lt;span class="caps"&gt;SVG&lt;/span&gt; files &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; export them to bitmap .&lt;span class="caps"&gt;PNG&lt;/span&gt; files. I then re-compress them, to ensure that the image files that are used on the live website are as small &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; quick to load as&amp;nbsp;possible.&lt;/p&gt;
&lt;p&gt;As these diagrams have a fairly limited colour palette, I can get lots of extra compression by reducing the colour depth of the final .&lt;span class="caps"&gt;PNG&lt;/span&gt; files from the default 32bit (millions of colours) to 8bit (256 colours) - without any loss of visual&amp;nbsp;quality.&lt;/p&gt;
&lt;p&gt;This is a two-step process - which can be combined into a single pipeline. The first step is &lt;code&gt;pngnq&lt;/code&gt; which quantizes the image, reducing its colour depth. The second step uses &lt;code&gt;advpng&lt;/code&gt; to losslessly re-compress this image data to get the smallest possible&amp;nbsp;filesize.&lt;/p&gt;
&lt;p&gt;To install these two utilities on ubuntu/debian Linux, run this in a&amp;nbsp;console:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;advancecomp pngnq&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The basic idea is to do the following to the file, running it through both utilities, one after the&amp;nbsp;other:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pngnq &lt;span class="nt"&gt;-s1&lt;/span&gt; image.png
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;advpng &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="nt"&gt;-4&lt;/span&gt; image.png&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We can do that in one go by joining the commands together, like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pngnq &lt;span class="nt"&gt;-s1&lt;/span&gt; image.png &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; advpng &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; image-nq8.png&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;By default, &lt;code&gt;pngnq&lt;/code&gt; adds &lt;code&gt;-nq8&lt;/code&gt; onto the end of the filename. You can change that with the &lt;code&gt;-e&lt;/code&gt; parameter, but it doesn&amp;#8217;t seem to support not changing the name - i.e. overwriting to original. As an added complication &lt;code&gt;advpng&lt;/code&gt; doesn&amp;#8217;t support processing from stdin to stdout, so we have to pass it a&amp;nbsp;filename.&lt;/p&gt;
&lt;p&gt;If we want to process a whole folder full of files, we can do this in parallel, getting all our machines cores in on the action, using &lt;code&gt;find&lt;/code&gt; and &lt;code&gt;xargs&lt;/code&gt;. This example uses 4 processes to do 4 files at&amp;nbsp;once:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-iname&lt;/span&gt; &lt;span class="s2"&gt;"*png"&lt;/span&gt; &lt;span class="nt"&gt;-print0&lt;/span&gt; | xargs &lt;span class="nt"&gt;-r0&lt;/span&gt; &lt;span class="nt"&gt;--max-procs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4 &lt;span class="nt"&gt;-n1&lt;/span&gt; sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'pngnq -s1 "$1" &amp;amp;&amp;amp; advpng -z -4 -q "${1%.*}"-nq8.png'&lt;/span&gt; -&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can adjust the &lt;code&gt;--max-procs=4&lt;/code&gt; bit to match the number of cores you have - or maybe one less, if you want to process a lot of images and do other things in the&amp;nbsp;meantime.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_results"&gt;Results&lt;/h2&gt;&lt;p&gt;Using the microscope image at the start of this post as an example, these are the results that we get at each&amp;nbsp;step:&lt;/p&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 50%;" /&gt;&lt;col style="width: 50%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Process Step&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Result&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;1: Original &lt;span class="caps"&gt;SVG&lt;/span&gt; File&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;5.6 &lt;span class="caps"&gt;MB&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;2: Initial &lt;span class="caps"&gt;PNG&lt;/span&gt; Export&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;409.3 kB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;3: Quantized with pngnq&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;123.6 kB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;4: Compressed with advpng&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;118.5 kB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;This example is a &lt;em&gt;huge&lt;/em&gt; &lt;span class="caps"&gt;SVG&lt;/span&gt; file by my standards - the paisley vector clipart I used is &lt;em&gt;very&lt;/em&gt; detailed and ~&lt;span class="caps"&gt;3MB&lt;/span&gt; on its own; my normal &lt;span class="caps"&gt;SVG&lt;/span&gt; files are generally under 1024 kB. If we use a more typical &lt;span class="caps"&gt;SVG&lt;/span&gt; file, like the one from my &lt;a href="https://duncanlock.net/blog/2013/06/19/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/"&gt;Reddit Bots article&lt;/a&gt; (which is 835.2 kB), we still get excellent compression, down to 78.5 kB&amp;#8201;&amp;#8211;&amp;#8201;just 9% of the original size and less than ⅓ of the initial &lt;span class="caps"&gt;PNG&lt;/span&gt; export&amp;nbsp;size:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="Blueprint style diagram showing the relative sizes of each step of the compression process as circles, going from 832.2 Kb to 78.5 kB" src="https://duncanlock.net/images/posts/how-i-compress-png-files-on-this-website/compression-results-diagram.png" /&gt;&lt;/div&gt;
&lt;p&gt;Re-compressing all the blueprint style diagrams on this site - which I had previously &lt;strong&gt;already re-compressed using &lt;span class="caps"&gt;PNGOUT&lt;/span&gt;&lt;/strong&gt; - reduced their total file size from 845.9 Kb to 385.2 Kb - a whopping &lt;strong&gt;~55% reduction&lt;/strong&gt;. Just goes to show that you need to test and adapt techniques to your particular situation - rather than just applying them&amp;nbsp;blindly.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_general_png_compression"&gt;General &lt;span class="caps"&gt;PNG&lt;/span&gt;&amp;nbsp;Compression&lt;/h2&gt;&lt;p&gt;You don&amp;#8217;t always want to reduce the colour palette - not all images are suitable for this. In that case, you can reduce the process to only one step. You can do this, to process a folder full of &lt;span class="caps"&gt;PNG&lt;/span&gt; files, four at&amp;nbsp;once:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-iname&lt;/span&gt; &lt;span class="s2"&gt;"*png"&lt;/span&gt; &lt;span class="nt"&gt;-print0&lt;/span&gt; | xargs &lt;span class="nt"&gt;-0&lt;/span&gt; &lt;span class="nt"&gt;--max-procs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4 &lt;span class="nt"&gt;-n&lt;/span&gt; 1 advpng &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This just runs each file through &lt;code&gt;advpng&lt;/code&gt; to maximally compress the existing image data, losslessly, without changing the colour depth or quality at&amp;nbsp;all.&lt;/p&gt;
&lt;p&gt;To make this easier, I created some &lt;a href="https://duncanlock.net/blog/2013/06/28/useful-thunar-custom-actions/"&gt;Thunar Custom Actions&lt;/a&gt; that give you the option to do either of these things when you right-click on a &lt;span class="caps"&gt;PNG&lt;/span&gt;&amp;nbsp;file.&lt;/p&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Sat, 06 Jul 2013 02:02:45 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/07/05/how-i-compress-png-files-on-this-website/</guid></item><item><title>Thoughts and Tips from the 2013 Open Data Week</title><link>https://stop.zona-m.net/2013/07/thoughts-and-tips-from-the-2013-open-data-week/</link><description>&lt;p&gt;I participated to the 2013 Open Data Week in Marseille to lead a workshop on an idea I had a couple years ago, one that seems to be more and more ready to seriously take off every month:&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Fri, 05 Jul 2013 16:06:34 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/07/thoughts-and-tips-from-the-2013-open-data-week/</guid></item><item><title>Exploratory Genomics with Clojure</title><link>https://johnj.com/posts/exploratory-genomics-with-clojure/</link><description>&lt;p&gt;
In Stanislaw Lem’s &lt;em&gt;&lt;a href="https://en.wikipedia.org/wiki/His_Master's_Voice_(novel)"&gt;His Master’s Voice&lt;/a&gt;&lt;/em&gt;, humanity receives a “letter
from the stars,” in the form of regularly repeating binary data
encoded in a beam of extraterrestrial neutrinos. The protagonists know
nothing &lt;em&gt;a priori&lt;/em&gt; about the content of the letter. The plot unfolds as
the message slowly, as a result of careful study, yields a few (not
many) of the signal’s secrets.&lt;/p&gt;
&lt;p&gt;
What would you do if you received such a dataset? How would you study
it? What real world datasets are similarly mysterious?&lt;/p&gt;
&lt;p&gt;
As most readers will know, every living being contains a “message” of
sorts, encoded, not in base 2 (binary), but rather base 4: A, G, C, or
T, arranged in paired, sequential molecular strands called DNA (in
which every A is paired with a T, every C with a G). From 159,662 base
pairs for &lt;a href="http://www.nature.com/news/2006/061009/full/news061009-10.html"&gt;the smallest known genome&lt;/a&gt;, to 3.3 billion BPs for humans, to
&lt;a href="http://www.sciencemag.org/news/2010/10/scienceshot-biggest-genome-ever"&gt;149 billion BPs&lt;/a&gt; for the largest genome, that of &lt;em&gt;Paris japonica&lt;/em&gt;, each
organism carries its own unique tome locked in its cells.&lt;/p&gt;
&lt;p&gt;
In the past ten years, the human genome &lt;a href="http://en.wikipedia.org/wiki/Human_Genome_Project"&gt;has been sequenced&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Human_Genome_Project"&gt;made
widely available&lt;/a&gt;. Though downloadable in a variety of formats, the
most compact seems to be the ‘2bit’ format (two bits per base pair):
the genome in this format is just under a gigabyte,
uncompressed. Plenty of genomes of simpler organisms are available for
study as well.&lt;/p&gt;
&lt;p&gt;
I am not a genomicist or biologist, but am curious about the
properties of the “data” stored within us all. In the next few blog
posts I intend to investigate genomic data (human or otherwise) using
Clojure, a modern Lisp developed for the JVM. Clojure’s strengths are
simplicity, concurrency, expressiveness and speed – assets which will
be helpful as we tackle a few simple analytical tasks aimed at
understanding some of the properties of life’s very own “Big Data.”&lt;/p&gt;</description><author>John Jacobsen</author><pubDate>Fri, 05 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/exploratory-genomics-with-clojure/</guid></item><item><title>How to set JMSXUserID in Websphere MQ using Spring JMS</title><link>https://www.craigpardey.com/post/2013-07-05-how-to-set-jmsxuserid-in-websphere-mq-using-spring-jms/</link><description>&lt;p&gt;Every time I work with MQ and Spring JMS I want to poke my eyes out with a
dull instrument. It&amp;rsquo;s always a pain in the neck. My most recent challenge was
trying to get the JMSXUserID field to flow through to the application on the
other side of MQ.&lt;/p&gt;
&lt;p&gt;First, I created a MessagePostProcessor to add the JMS header&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public class MyMessagePostProcessor implements MessagePostProcessor  
{  
	private String userId;

	@Override  
	public Message postProcessMessage(Message msg) throws JMSException  
	{  
		msg.setStringProperty(JmsConstants.JMS_IBM_MQMD_USERIDENTIFIER, userId);  
		msg.setStringProperty(&amp;quot;JMSXUserID&amp;quot;, userId);  
		return msg;  
	}  
}  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But when I checked the queue with HermesJMS I could see that the JMSXUserID
had been overwritten somewhere, so I fired up WireShark and watched for the
message and confirmed that the message that was going over the wire already
had the JMSXUserID field overwritten. This was a good thing - the issue was in
the IBM MQ JMS client code.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Fri, 05 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-07-05-how-to-set-jmsxuserid-in-websphere-mq-using-spring-jms/</guid></item><item><title>qc: quick calculator</title><link>https://www.danielcorin.com/posts/2013/2013-07-05-qc/</link><description>qc: quick calculator</description><author>Thought Eddies</author><pubDate>Fri, 05 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.danielcorin.com/posts/2013/2013-07-05-qc/</guid></item><item><title>Language</title><link>https://arnorhs.dev/posts/2013-07-05/language/</link><description>I got into an ironic conversation the other day over the usefulness of having multiple languages in the world. I am of the opinion that languages are redundant and they only exist for being the most usable mechanism we have invented for communication so far.</description><author>arnorhs blog - arnorhs.dev</author><pubDate>Fri, 05 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://arnorhs.dev/posts/2013-07-05/language/</guid></item><item><title>What Happened to Instapaper?</title><link>https://zacs.site/blog/what-happened-to-instapaper.html</link><description>&lt;p&gt;I ask this question every time I open the app: &lt;em&gt;What happened to Instapaper?&lt;/em&gt; After its sale both &lt;a href="http://www.marco.org/2013/04/25/instapaper-next-generation"&gt;Marco&lt;/a&gt; and Betaworks seemed so enthusiastic about the popular read later service&amp;#8217;s future. Since then two months have gone by without a peep from anyone&amp;#160;&amp;#8212;&amp;#160;not even a point release.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/what-happened-to-instapaper.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 04 Jul 2013 18:45:51 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/what-happened-to-instapaper.html</guid></item><item><title>Snapchat: Not Just for Sexting</title><link>https://zacs.site/blog/not-just-for-sexting.html</link><description>&lt;p&gt;I hate the word &amp;#8220;sexting&amp;#8221;&amp;#160;&amp;#8212;&amp;#160;I really do. It sounds as if a sixth-grader invented it in jest and whose parents, upon overhearing it, decided to apply it as the label for the act of sending lewd pictures on a mobile device. Or maybe the fated decision was left to a lonely man in the poorly-lit corner cubicle, laboring under a flickering fluorescent light: &amp;#8220;Texting and sex... &amp;#8216;Tex&amp;#8217;? No, that&amp;#8217;s not it. &amp;#8216;Sex texting&amp;#8217;? Too long. Ha, that&amp;#8217;s what she said... &amp;#8216;Stex&amp;#8217;? Still no; drat.&amp;#8221; Regardless of whoever picked the term though, it stuck, and it stuck to Snapchat.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/not-just-for-sexting.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 04 Jul 2013 12:43:35 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/not-just-for-sexting.html</guid></item><item><title>Simplify, simplify, simplify</title><link>https://josh.works/simplify-simplify-simplify</link><description>&lt;p&gt;Kristi and I stumbled upon the realization that we’ve become minimalists. And it is exciting.&lt;/p&gt;

&lt;p&gt;We live in a one-bedroom apartment. It is spacious, for a one-bedroom, but compared to anything larger than a one-bedroom apartment, it is small. We managed to pack it full of stuff in no time.
more&lt;/p&gt;

&lt;p&gt;Then, an unexpected blessing came about. Our neighbors don’t clean their apartment, or put much food away, so they had problems with bugs. We share a wall with them, so we got to share their problem with bugs. The landlord sprayed both of our apartments, and in preparing for that spraying, we had to pile
almost all of our possessions in the middle of our living room.&lt;/p&gt;

&lt;p&gt;We realized, quickly, that we had a lot of stuff. So we got rid of stuff that we obviously did not need. Then,once we started putting things away, we got rid of more stuff. Then, we stumbled across
&lt;a href="http://www.amazon.com/Clutters-Last-Stand-Time--junk/dp/1593373295/ref=sr_1_10?s=books&amp;amp;ie=UTF8&amp;amp;qid=1372721044&amp;amp;sr=1-10&amp;amp;keywords=clutter"&gt;books&lt;/a&gt; and
&lt;a href="http://zenhabits.net/start/"&gt;blogs&lt;/a&gt; that talk about having even less stuff, in order to free up mental and physical space.&lt;/p&gt;

&lt;p&gt;I don’t like putting things away, but I also dislike the apartment being messy. An obvious solution is to have less things to have to keep orderly. If you don’t have things that can be messy, the apartment is less messy. So, for the last few months, we’ve been casually getting rid of things that we don’t use. Here’s a short list:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Cleats that I’ve not used in two years.&lt;/li&gt;
  &lt;li&gt;Climbing shoes that have holes in the toes.&lt;/li&gt;
  &lt;li&gt;Ditto with another pair.&lt;/li&gt;
  &lt;li&gt;An old harness that has a well loved belay loop, that I really shouldn’t use anymore.&lt;/li&gt;
  &lt;li&gt;Shirts that I don’t like, but don’t hate, so I wear ‘em only when I’m out of everything else.&lt;/li&gt;
  &lt;li&gt;Shorts that don’t fit right.&lt;/li&gt;
  &lt;li&gt;Pants that I’ve not worn in a year.&lt;/li&gt;
  &lt;li&gt;A blazer I bought for $2 at a thrift store and wore once.&lt;/li&gt;
  &lt;li&gt;Uncomfortable dress shoes.&lt;/li&gt;
  &lt;li&gt;Another pair of uncomfortable dress shoes.&lt;/li&gt;
  &lt;li&gt;My old laptop.&lt;/li&gt;
  &lt;li&gt;Belts that I don’t wear.&lt;/li&gt;
  &lt;li&gt;My second pair of pajama pants.&lt;/li&gt;
  &lt;li&gt;All non-skinny ties.&lt;/li&gt;
  &lt;li&gt;Cups we’ve not used in a year.&lt;/li&gt;
  &lt;li&gt;A cup-cake baking sheet we’ve never used.&lt;/li&gt;
  &lt;li&gt;Little nesting bowls we’ve never used.&lt;/li&gt;
  &lt;li&gt;A spare set of plates someone gave us, but we never use.&lt;/li&gt;
  &lt;li&gt;Tools that are made redundant by smaller and more compact tools.&lt;/li&gt;
  &lt;li&gt;Extra power cables.&lt;/li&gt;
  &lt;li&gt;Little trinkets of crap I never use.&lt;/li&gt;
  &lt;li&gt;Random pens we never use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe50e4b0278244ce9f9c/1434910433809/pic-06242013-001.jpg"&gt;&lt;img alt="The &amp;quot;get rid of&amp;quot; pile, after ten minutes of work." src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe50e4b0278244ce9f9c_1434910433809_pic-06242013-001.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Climbing gear that is either old and heavy, or new(er) and dangerously worn.&lt;/p&gt;

&lt;p&gt;Books. So many books.
My book collection had become an altar to the intelligence of Josh. If you visit our apartment, you’ll look through our books. (At least I hope you will.) You’ll think “man. He’s smart, if he reads this stuff.” When I look at my books, I think of what a towering intellect I am, because of my books. In reality, I’m probably not going to read most of ‘em. The idea of reading them is way more fun than actually reading them.&lt;/p&gt;

&lt;p&gt;I ditched the altar to myself, and cleared out two shelves worth of books. I ditched cook books, books about business, philosophy, economics. All of that. I’m a real person, I’m not going to read 600 pages about Immanuel Kant. Why kid myself?&lt;/p&gt;

&lt;p&gt;Do you see the trend?&lt;/p&gt;

&lt;p&gt;I got rid of all of them. We went from three crowded bookshelves to three sparse book shelves. We’re going to get rid of more.&lt;/p&gt;

&lt;p&gt;I don’t want to be burdened down by things. Every item you own takes up space, both in your home, and in your brain. If you move, so to do your things. They are anchors.&lt;/p&gt;

&lt;p&gt;I’ve slowly transitioned from thinking “I will keep this unless I can justify getting rid of it” to “I will get rid of this unless I can justify keeping it”.&lt;/p&gt;

&lt;p&gt;This trend is dangerous. I’ve grown to enjoy very much the process of getting rid of things. I view items around the house in a new light. If I could talk with them, I would say “You, there. What do you do for me? Why should I give you space, regular cleaning, and attention? How is my life made better by you? Why are you better than empty space, or the alternative uses for the money and space you require?”&lt;/p&gt;

&lt;p&gt;As I’ve de-cluttered, I have been able to check off a number of items from
&lt;a href="/epic-quest"&gt;My Epic Quest of Awesome.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m another few levels along.&lt;/p&gt;

&lt;p&gt;If you could get rid of three things, what would they be? What’s stopping you?&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Thu, 04 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/simplify-simplify-simplify</guid></item><item><title>hstore vs. JSON - Which to use in Postgres</title><link>/2013/07/03/hstore-vs.-JSON-Which-to-use-in-Postgres/</link><description>&lt;p&gt;If you&amp;rsquo;re deciding what to put in &lt;a href="http://www.amazon.com/Seven-Databases-Weeks-Modern-Movement/dp/1934356921?tag=mypred-20"&gt;Postgres and what not to&lt;/a&gt;, consider that Postgres can be a &lt;a href="/2012/06/11/schemaless-django/"&gt;perfectly good schema-less database&lt;/a&gt;. Of course as soon as people realized this then the common comes a question, is hstore or JSON better. Which do I use and in what cases. Well first, if you&amp;rsquo;re not familiar check out some previous material on them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.postgresql.org/docs/9.2/static/hstore.html"&gt;hstore on PostgresGuide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.postgresql.org/docs/9.2/static/hstore.html"&gt;hstore in Postgres docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.craigkerstiens.com/2012/06/11/schemaless-django/"&gt;hstore with Django&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.2#JSON_datatype"&gt;JSON datatype&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://postgres.heroku.com/blog/past/2013/6/5/javascript_in_your_postgres/"&gt;JavaScript support in Postgres&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;re already up to date with both of them, but still wondering which to use lets dig in.&lt;/p&gt;
&lt;h3 id="hstore"&gt;
&lt;div&gt;
hstore
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;hstore is a key value store directly within your database. Its been a common favorite of mine and has been for some time. hstore gives you flexibility when working with your schema, as you don&amp;rsquo;t have to define models ahead of time. Though its two big limitations are that 1. it only deals with text and 2. its not a full document store meaning you can&amp;rsquo;t nest objects.&lt;/p&gt;
&lt;p&gt;Though major benefits of hstore include the ability to index on it, robust support for various operators, and of course the obvious of flexibility with your data. Some of the basic operators available include:&lt;/p&gt;
&lt;p&gt;Return the value from column&lt;code&gt;foo&lt;/code&gt; for key &lt;code&gt;bar&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;foo-&amp;gt;'bar'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Does the specified column &lt;code&gt;foo&lt;/code&gt; contain a key &lt;code&gt;bar&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;foo?'bar'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Does the specified column &lt;code&gt;foo&lt;/code&gt; contain a value of &lt;code&gt;baz&lt;/code&gt; for key &lt;code&gt;bar&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;foo@&amp;gt;'bar-&amp;gt;baz'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Perhaps one of the best parts of hstore is that you can index on it. In particular Postgres &lt;code&gt;gin&lt;/code&gt; and &lt;code&gt;gist&lt;/code&gt; indexes allow you to index all keys and values within an hstore. A talk by &lt;a href="http://www.twitter.com/XoF"&gt;Christophe Pettus&lt;/a&gt; of PgExperts actually highlights some &lt;a href="http://thebuild.com/presentations/pg-as-nosql-pgday-fosdem-2013.pdf"&gt;performance details of hstore with indexes&lt;/a&gt;. To give away the big punchline in several cases hstore with gin/gist beats mongodb in performance.&lt;/p&gt;
&lt;h3 id="json"&gt;
&lt;div&gt;
json
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;JSON in contrast to hstore is a full document datatype. In addition to nesting objects you have support for more than just text (read numbers). As you insert JSON into Postgres it will automatically ensure its valid JSON and error if its well not. JSON gets a lot better come Postgres 9.3 as well with &lt;a href="http://www.postgresql.org/docs/devel/static/functions-json.html"&gt;some built in operators&lt;/a&gt;. Though if you need more functionality in it today you should look at &lt;a href="https://code.google.com/p/plv8js/wiki/PLV8"&gt;PLV8&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="which-to-use"&gt;
&lt;div&gt;
Which to Use
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;So which do you actually want to use in your application? If you&amp;rsquo;re already using JSON and simply want to store it in your database then the JSON datatype is often the correct pick. However, if you&amp;rsquo;re just looking for flexibility with your data model then hstore is likely the path you want to take. hstore will give you much of the flexibility you want as well as a good ability to query your data in a performant manner. Of course much of this starts to change in Postgres 9.3.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re looking for a deeper resource on Postgres I recommend the book &lt;a href="https://theartofpostgresql.com/?affiliate=cek"&gt;The Art of PostgreSQL&lt;/a&gt;. It is by a personal friend that has aimed to create the definitive guide to Postgres, from a developer perspective. If you use code CRAIG15 you&amp;rsquo;ll receive 15% off as well.&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 03 Jul 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/07/03/hstore-vs.-JSON-Which-to-use-in-Postgres/</guid></item><item><title>Girl Scouts, other equal opportunity employers and... software discrimination</title><link>https://stop.zona-m.net/2013/07/girl-scouts-other-equal-opportunity-employers-and-software-discrimination/</link><description>&lt;figure&gt;
  &lt;img alt="Girl Scouts, other equal opportunity employers and... software discrimination /img/girlscout_southern_nevada_application2.png" src="https://stop.zona-m.net//img/girlscout_southern_nevada_application2.png" width="100%" /&gt;
&lt;/figure&gt;
&lt;p&gt;Casual browsing (more on this below) just brought me to the website of the &lt;a href="http://www.girlscoutsnv.org/"&gt;Girl Scouts of Southern Nevada (GSSN)&lt;/a&gt;. As many other organizations of all kinds, in the USA and elsewhere, they are, as clearly stated in their official &lt;a href="http://www.girlscoutsnv.org/pdf/Application%20for%20Employment%20GSNV%20New.pdf"&gt;Application for Employment&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;an equal opportunity employer. All applications for employment will be considered without regard to race, religion, color, sex, age, national origin, citizenship, disability or marital status&lt;/em&gt;.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Wed, 03 Jul 2013 18:06:14 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/07/girl-scouts-other-equal-opportunity-employers-and-software-discrimination/</guid></item><item><title>My PowerShell Profile</title><link>https://daniellittle.dev/my-powershell-profile</link><description>This is my PowerShell profile, it does a few nice things such as add  and  commands to the shell. Most importantly though it customizes my…</description><author>Daniel Little Dev</author><pubDate>Wed, 03 Jul 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/my-powershell-profile</guid></item><item><title>June trip to the New River Gorge</title><link>https://josh.works/june-trip-new-river-gorge</link><description>&lt;p&gt;The New River Gorge had beautiful weather this weekend. The forecast for the weekend was, until Friday, near-certain thunderstorms.&lt;/p&gt;

&lt;p&gt;Typical of the New, the weather proved unpredictable, and we had glorious sun the entire trip.&lt;/p&gt;

&lt;p&gt;I was eager to get out to the New, since my last attempt to get out there was delayed by rather catastrophic car failure. I’ve been out of my already very limited training regimen, so I did not know how I would stack up against the rock, and against the other guys I was climbing with.&lt;/p&gt;

&lt;p&gt;It turns out I can still climb, but not nearly as hard as I had hoped. I was fortunate to be climbing with guys who are far stronger than me.&lt;/p&gt;

&lt;p&gt;Brian sent Puppy Chow, 12c, and Christian repeated Lactic Acid Bath 12d, and almost onsighted Puppy Chow. Preston onsighted Yowza, 5.12a (for his warmup) and Sean sent a 12a that was way harder than the 12b right next to it. There were many other displays of excellent climbing, but in summary - it was a pretty strong group. I brought up the rear by making at least the first bolt of everything I tried.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was an awesome trip, despite me not climbing that hard, for two reasons:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;I’m motivated to keep training. Motivation is a valuable thing to have, and I’d lost it after almost three weeks of
not training, and close to two months of no outdoor trips.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I’m motivated to train smarter. My endurance was terrible - this is not a surprise, given the one-dimensional nature of my training, but I’m not taking it as an excuse. I want to train endurance, just as I train power. A standard route in the new probably has about sixty moves on it, so I will figure out how to approximate sixty moves on my metal door frame.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I had a few other enjoyable learning experiences during my trip. For example, I had never thought about the best way to pack for a climbing trip. I just threw a bunch of stuff in a bag, and spent the rest of my trip rummaging around for items that fell to the bottom of my bag. Next trip I’ll spend less time rummaging, and more time… not rummaging, all thanks to Sean’s good ideas.&lt;/p&gt;

&lt;p&gt;I’m launching into a new training “regimen”, and I’m toying with training five days on, two days off.&lt;/p&gt;

&lt;p&gt;I’m going to spend the next week fine-tuning my training. These are my tools: Door frame. Chair. Up to 30lbs on a weight belt. Space to campus up, full extension, but nothing to grab and hold that high.&lt;/p&gt;

&lt;p&gt;If you guys have any suggestions, let me know. I’ll publish all the suggestions I get soon!&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Wed, 03 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/june-trip-new-river-gorge</guid></item><item><title>"Working on an app redesign...</title><link>https://twitter.com/mrgan/status/350278101332262916/photo/1</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/bye-instacast.html"&gt;Speaking of app redesigns&lt;/a&gt;, Nevan Mrgan tweeted a screenshot of an app he was in the process of redesigning for iOS 7. Unlike Instacast 4&amp;#8217;s mockups, this one looks like it will fit right in.&lt;/p&gt;


                &lt;p&gt;&lt;a href="https://twitter.com/mrgan/status/350278101332262916/photo/1"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 03 Jul 2013 00:55:28 GMT</pubDate><guid isPermaLink="true">https://twitter.com/mrgan/status/350278101332262916/photo/1</guid></item><item><title>OpenGL Texture Coordinates</title><link>https://whackylabs.com/opengl/ios/2013/07/02/texture-coords/</link><description>&lt;p&gt;Let’s talk about OpenGL Texture Coordinates. Whenever we need to render a bitmap image using OpenGL, we need to pass in something called the texture coordinates to the GPU.&lt;/p&gt;

&lt;p&gt;I’ll be using flexible pipeline, but the approach can be easily used for fixed pipeline as well, as there is no shader magic involved. We’ll more focusing on calculating the texture coordinates.&lt;/p&gt;

&lt;p&gt;For this tutorial I will be shamelessly ripping off this awesome webgl tutorial to render textures to a rotating cube, and tweak it to display a flat square with a texture. Scroll down for the entire code and the live demo link.&lt;/p&gt;

&lt;p&gt;Let’s start with basic, rendering entire texture.&lt;/p&gt;

&lt;p&gt;Let’s say this is the image I wish to render&lt;/p&gt;

&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;The texture coordinates start at origin top-left of the screen.&lt;/p&gt;

&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;And in OpenGL we render a quad as TRIANGLE_STIP as A-&amp;gt;B-&amp;gt;C-&amp;gt;D&lt;/p&gt;

&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;So, texture coordinates for an entire texture is set as:&lt;/p&gt;
&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;textureCoords&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
 
&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;//A&lt;/span&gt;
&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;//B&lt;/span&gt;
&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;//C&lt;/span&gt;
&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;  &lt;span class="c1"&gt;//D&lt;/span&gt;
 
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;Now if we wish to render a portion of the original texture, we can simply map it to points we wish, keeping in mind the texture coordinates above.&lt;/p&gt;

&lt;p&gt;Let’s say we wish to render only the first half of the texture, we can set texture coordinates as:&lt;/p&gt;
&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;textureCoords&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;As you can see we are just rendering half the width. Similarly, we can render only the next half by:&lt;/p&gt;
&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;textureCoords&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;What if we just wish to render the logo on our cool guy’s shirt. Try a few experimenting around, you can find the texture coordinates, just keep in mind the way coordinate-system works for textures.&lt;/p&gt;

&lt;p&gt;One way to guess the texture coordinates is assume the range of x-min, x-max and y-min, y-max. Like for above requirement, after few trial-n-errors I calculated the coordinates to be in range:&lt;/p&gt;
&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;
&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;max&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.43&lt;/span&gt;
&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;
&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;max&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.57&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So, the texture coordinates becomes:&lt;/p&gt;
&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;textureCoords&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.57&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;0.43&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.57&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;0.43&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;Now, in real life you seldom need to calculate the points yourself. There are plenty of applications that do that for you. One of my favorite is Zwoptex. You just need to drop your images into these sprite-sheet maker apps, and they give you a single texture, with an associated data file, that contains the texture coordinates.&lt;/p&gt;

&lt;p&gt;Here’s an older article on converting data from Zwoptex to texture-coordinates.&lt;/p&gt;

&lt;p&gt;Another, cool thing you can do with texture coordinates is to repeat them along a given bounds. First you need to set the correct parameters when you bind your texture.&lt;/p&gt;
&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_WRAP_S&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;REPEAT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_WRAP_T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;REPEAT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Next, set the texture coordinates values greater than 1.&lt;/p&gt;

&lt;p&gt;For example, this set of texture coordinates will repeat the entire texture twice on both X and Y axis.&lt;/p&gt;
&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;textureCoords&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;Yet, another interesting parameters are MIRRORED_REPEAT. It will mirror the repeat.&lt;/p&gt;
&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_WRAP_S&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MIRRORED_REPEAT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_WRAP_T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MIRRORED_REPEAT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;And, finally we have GL_CLAMP_TO_EDGE, for scenarios where you don’t wish the texture to repeat at all but just extend all the way to the nearest edge.&lt;/p&gt;
&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_WRAP_S&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CLAMP_TO_EDGE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_WRAP_T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CLAMP_TO_EDGE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Cool Guy&lt;/p&gt;

&lt;p&gt;Now is the time for you to play with the code. Get the live demo here (if you’ve webgl enabled browser)&lt;/p&gt;

&lt;p&gt;And the code&lt;/p&gt;

&lt;div class="language-js highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
 
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Texture&lt;/span&gt; &lt;span class="nx"&gt;Coordinates&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/title&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;equiv&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content-type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/html; charset=ISO-8859-1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
 
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/javascript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;glMatrix-0.9.5.min.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/javascript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;webgl-utils.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt; 
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;shader-fs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-shader/x-fragment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nx"&gt;precision&lt;/span&gt; &lt;span class="nx"&gt;mediump&lt;/span&gt; &lt;span class="nx"&gt;float&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
    &lt;span class="nx"&gt;varying&lt;/span&gt; &lt;span class="nx"&gt;vec2&lt;/span&gt; &lt;span class="nx"&gt;vTextureCoord&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
    &lt;span class="nx"&gt;uniform&lt;/span&gt; &lt;span class="nx"&gt;sampler2D&lt;/span&gt; &lt;span class="nx"&gt;uSampler&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
    &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;gl_FragColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;texture2D&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;uSampler&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;vTextureCoord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;vTextureCoord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt; 
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;shader-vs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-shader/x-vertex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nx"&gt;attribute&lt;/span&gt; &lt;span class="nx"&gt;vec3&lt;/span&gt; &lt;span class="nx"&gt;aVertexPosition&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;attribute&lt;/span&gt; &lt;span class="nx"&gt;vec2&lt;/span&gt; &lt;span class="nx"&gt;aTextureCoord&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
    &lt;span class="nx"&gt;uniform&lt;/span&gt; &lt;span class="nx"&gt;mat4&lt;/span&gt; &lt;span class="nx"&gt;uMVMatrix&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;uniform&lt;/span&gt; &lt;span class="nx"&gt;mat4&lt;/span&gt; &lt;span class="nx"&gt;uPMatrix&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
    &lt;span class="nx"&gt;varying&lt;/span&gt; &lt;span class="nx"&gt;vec2&lt;/span&gt; &lt;span class="nx"&gt;vTextureCoord&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
 
    &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;gl_Position&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;uPMatrix&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;uMVMatrix&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;vec4&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;aVertexPosition&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;vTextureCoord&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aTextureCoord&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt; 
 
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/javascript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;initGL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;gl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;experimental-webgl&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;viewportWidth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;viewportHeight&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Could not initialise WebGL, sorry :-(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getShader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;shaderScript&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;shaderScript&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
 
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;shaderScript&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firstChild&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nodeType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nx"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nextSibling&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
 
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;shader&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderScript&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-shader/x-fragment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;shader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createShader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FRAGMENT_SHADER&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderScript&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-shader/x-vertex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;shader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createShader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VERTEX_SHADER&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
 
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;shaderSource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;compileShader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shader&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getShaderParameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;COMPILE_STATUS&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getShaderInfoLog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shader&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
 
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;shader&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;initShaders&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;fragmentShader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;getShader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;shader-fs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;vertexShader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;getShader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;shader-vs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;shaderProgram&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createProgram&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;attachShader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;vertexShader&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;attachShader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fragmentShader&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;linkProgram&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getProgramParameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;LINK_STATUS&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Could not initialise shaders&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
 
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;useProgram&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;vertexPositionAttribute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getAttribLocation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;aVertexPosition&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;enableVertexAttribArray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;vertexPositionAttribute&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textureCoordAttribute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getAttribLocation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;aTextureCoord&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;enableVertexAttribArray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textureCoordAttribute&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pMatrixUniform&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getUniformLocation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;uPMatrix&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mvMatrixUniform&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getUniformLocation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;uMVMatrix&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;samplerUniform&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getUniformLocation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;uSampler&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;mvMatrix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mat4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;mvMatrixStack&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;pMatrix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mat4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;mvPushMatrix&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;copy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mat4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;mat4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mvMatrix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;mvMatrixStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;mvPopMatrix&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mvMatrixStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Invalid popMatrix!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nx"&gt;mvMatrix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mvMatrixStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;setMatrixUniforms&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;uniformMatrix4fv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pMatrixUniform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pMatrix&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;uniformMatrix4fv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mvMatrixUniform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mvMatrix&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;degToRad&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;degrees&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;degrees&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PI&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;180&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;positionBuffer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;textureCoordBuffer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;initBuffers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;positionBuffer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createBuffer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bindBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARRAY_BUFFER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;positionBuffer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;vertices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mf"&gt;1.0&lt;/span&gt;
        &lt;span class="p"&gt;];&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bufferData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARRAY_BUFFER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Float32Array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;vertices&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;STATIC_DRAW&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;positionBuffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;itemSize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;positionBuffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;numItems&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
        &lt;span class="nx"&gt;textureCoordBuffer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createBuffer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bindBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARRAY_BUFFER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;textureCoordBuffer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;textureCoords&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
          &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;
        &lt;span class="p"&gt;];&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bufferData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARRAY_BUFFER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Float32Array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;textureCoords&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;STATIC_DRAW&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;textureCoordBuffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;itemSize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;textureCoordBuffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;numItems&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;handleLoadedTexture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;texture&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bindTexture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;texture&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="c1"&gt;//gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texImage2D&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RGBA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RGBA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;UNSIGNED_BYTE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;texture&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_MAG_FILTER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEAREST&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_MIN_FILTER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEAREST&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
		&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_WRAP_S&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;REPEAT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;texParameteri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_WRAP_T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;REPEAT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bindTexture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;neheTexture&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;initTexture&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;neheTexture&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createTexture&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;neheTexture&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;neheTexture&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;handleLoadedTexture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;neheTexture&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
 
        &lt;span class="nx"&gt;neheTexture&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;images/coolguy.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;drawScene&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;viewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;viewportWidth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;viewportHeight&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;clear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;COLOR_BUFFER_BIT&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DEPTH_BUFFER_BIT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;mat4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;perspective&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;viewportWidth&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;viewportHeight&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;100.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pMatrix&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;mat4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;identity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mvMatrix&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;mat4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mvMatrix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
 
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bindBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARRAY_BUFFER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;positionBuffer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;vertexAttribPointer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;vertexPositionAttribute&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;positionBuffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;itemSize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FLOAT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bindBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARRAY_BUFFER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;textureCoordBuffer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;vertexAttribPointer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textureCoordAttribute&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;textureCoordBuffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;itemSize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FLOAT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;activeTexture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bindTexture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TEXTURE_2D&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;neheTexture&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;uniform1i&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shaderProgram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;samplerUniform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
        &lt;span class="nx"&gt;setMatrixUniforms&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;drawArrays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TRIANGLE_STRIP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;positionBuffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;numItems&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;lastTime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;timeNow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lastTime&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;elapsed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;timeNow&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;lastTime&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 
            &lt;span class="nx"&gt;xRot&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;elapsed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;1000.0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nx"&gt;yRot&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;elapsed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;1000.0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nx"&gt;zRot&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;elapsed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;1000.0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nx"&gt;lastTime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;timeNow&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;tick&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;requestAnimFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tick&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;drawScene&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
   &lt;span class="c1"&gt;//     animate();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;webGLStart&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lesson05-canvas&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;initGL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;initShaders&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;initBuffers&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;initTexture&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
 
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;clearColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;enable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DEPTH_TEST&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 
&lt;span class="c1"&gt;//        drawScene();&lt;/span&gt;
        &lt;span class="nx"&gt;tick&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 
 
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt; 
 
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/head&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt; 
 
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="nx"&gt;onload&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;webGLStart();&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;canvas&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lesson05-canvas&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;border: none;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;500&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;500&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/canvas&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/body&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt; 
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/html&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Whacky Labs</author><pubDate>Tue, 02 Jul 2013 20:58:54 GMT</pubDate><guid isPermaLink="true">https://whackylabs.com/opengl/ios/2013/07/02/texture-coords/</guid></item><item><title>The Story of David's Dark Past</title><link>https://xavd.id/blog/post/the-story-of-davids-dark/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/the-story-of-davids-dark/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Tue, 02 Jul 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/the-story-of-davids-dark/</guid></item><item><title>Bring it in, Betaworks</title><link>https://zacs.site/blog/digg-reader.html</link><description>&lt;p&gt;Two days ago Betaworks&amp;#160;&amp;#8212;&amp;#160;creator of the popular iOS game Dots, the company behind Digg&amp;#8217;s rise back to fame, and proud owner of Instapaper&amp;#160;&amp;#8212;&amp;#160;opened Digg Reader to the public after greatly accelerating its development following the announcement of Google Reader&amp;#8217;s impending demise. Especially for a product upon which work was not schedule to begin until the end of this year, Digg Reader is a very impressive entrant into the RSS reader market.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/digg-reader.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 02 Jul 2013 00:45:58 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/digg-reader.html</guid></item><item><title>Bye Instacast</title><link>https://zacs.site/blog/bye-instacast.html</link><description>&lt;p&gt;A few days ago Instacast&amp;#8217;s created &lt;a href="https://twitter.com/vemedio/status/349480265703358465"&gt;tweeted some mockups of the app&amp;#8217;s next iteration&lt;/a&gt;. As a diehard Instacast fan, I was very excited to get a sneak peek at the next version of the popular podcasting app.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/bye-instacast.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 01 Jul 2013 23:08:47 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/bye-instacast.html</guid></item><item><title>Into the Wild</title><link>https://olshansky.info/movie/into_the_wild/</link><description>Olshansky's review of Into the Wild</description><author>🦉 olshansky 🦁</author><pubDate>Mon, 01 Jul 2013 19:49:59 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/into_the_wild/</guid></item><item><title>Reddit took down my website!</title><link>https://jasoneckert.github.io/myblog/reddit-took-down-my-site/</link><description>&lt;p&gt;&lt;img alt="Reddit1" src="reddit1.png#center" title="Reddit1" /&gt;&lt;/p&gt;
&lt;p&gt;Yup - I woke up Saturday to find the message above when I visited my website. I’ve used Primus (Planet Domain) for the past 8 years as a hosting provider, and I’ve never had any issues whatsoever - including reaching my bandwidth cap.&lt;/p&gt;
&lt;p&gt;For starters, I was a little concerned, so I logged into my cpanel and checked out the AWSTATS first:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Reddit2" src="reddit2.jpg#center" title="Reddit2" /&gt;&lt;/p&gt;
&lt;p&gt;Holy crap!  Did I just get too much traffic this month?  I have been doing a lot of linking to my site from twitter for Game On 2.0 at the Ontario Science Centre. So I decided to view the day-by-day bandwidth:&lt;/p&gt;</description><author>Jason Eckert's Website and Blog</author><pubDate>Sun, 30 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://jasoneckert.github.io/myblog/reddit-took-down-my-site/</guid></item><item><title>June #1GAM game and board game AI</title><link>https://liza.io/june-1gam-game-and-board-game-ai/</link><description>&lt;p&gt;My June One Game a Month project is called &lt;a href="http://liza.io/interdiction"&gt;Interdiction&lt;/a&gt;. It&amp;rsquo;s a two player board game based on Tic-Tac-Toe, but with a twist. The goal of the game is to get a higher score than your opponent. Placing five of your tiles in a row grants you ten bonus points and usually, but not always, results in a win. However, it&amp;rsquo;s technically possible for a player to get enough points to win the match even if they aren&amp;rsquo;t the ones to finish the game with five in a row.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sat, 29 Jun 2013 23:11:29 GMT</pubDate><guid isPermaLink="true">https://liza.io/june-1gam-game-and-board-game-ai/</guid></item><item><title>The Future of Computing, The Future of Computer Programmers - An Interview with Yukihiro "Matz" Matsumoto</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/the-future-of-computing-the-future-of-computer-programmers-an-interview-with-yukihiro-matz-matsumoto</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Sat, 29 Jun 2013 15:04:00 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/the-future-of-computing-the-future-of-computer-programmers-an-interview-with-yukihiro-matz-matsumoto</guid></item><item><title>10 Years Ago, in an MMO far, far away</title><link>https://benovermyer.com/blog/2013/06/10-years-ago-in-an-mmo-far-far-away/</link><description>&lt;p&gt;Ten years ago nearly to the day, Star Wars: Galaxies launched to the world. As a remembrance of the adventures I had there, I'm writing now about the game as it was in those days and the community that surrounded it. As you read this, you may wish to listen to the playlist on YouTube that starts with the above video. It's a wonderful collection of the music from the game, familiar audio glitches included.&lt;/p&gt;




&lt;div class="dress-image"&gt;
    &lt;img alt="A screenshot of the features page from the first Star Wars: Galaxies website" src="https://benovermyer.com/blog/2013/06/10-years-ago-in-an-mmo-far-far-away/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;OriginalFeaturesPage.a5b1887d1fc2374d.jpg" /&gt;
    
    &lt;div class="caption"&gt;The features page for the first SWG website&lt;/div&gt;
    
&lt;/div&gt;

&lt;p&gt;One of the things I remember reading first about Star Wars: Galaxies was an interview with lead world artist John Roy about procedural planet generation, and how he would discover features of the landscape that were new even to the designers. That got me really excited about exploring these worlds that I'd only read about or seen on the big screen. I'm not sure how often this technique is employed in modern MMORPGs. My impression is that the vast majority of current worlds are slowly crafted by hand by artists, which is why we have so many beautiful vistas but so few boring areas to contrast them with. If all we ever see is beauty, we start to tire of it and look for something better.&lt;/p&gt;
&lt;p&gt;I miss the rolling hills of Corellia where my first SWG toon “grew up.” Another thing that I truly miss about Star Wars: Galaxies is the wait times at the starports. You could only travel to another planet if you bought a ticket for a starship and waited at a starport for one. They arrived in ten minute intervals, which means frequently large groups of players would congregate at the main starports while waiting to travel to another planet. It made for some great conversations, and new friends.&lt;/p&gt;




&lt;div class="dress-image"&gt;
    &lt;img alt="A screenshot of a starport in Star Wars: Galaxies" src="https://benovermyer.com/blog/2013/06/10-years-ago-in-an-mmo-far-far-away/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;starport.be230e6bad6d47b0.jpg" /&gt;
    
    &lt;div class="caption"&gt;A starport in Star Wars: Galaxies&lt;/div&gt;
    
&lt;/div&gt;

&lt;p&gt;Something else I miss about Star Wars: Galaxies was the grind. As a crafter who played before the concept of “practice mode” was introduced, I would sit there and grind out components to level up my skill for hours. When I ran out of materials or empty space in my inventory, I'd make a backpack, shove the extra items in there, and head out to my personal harvesters for more materials. This was before anyone was able to build medium or heavy harvesters, so there were still vast fields of personal harvesters dotting the landscape.&lt;/p&gt;




&lt;div class="dress-image"&gt;
    &lt;img alt="An image of a personal mineral extractor from SWG" src="https://benovermyer.com/blog/2013/06/10-years-ago-in-an-mmo-far-far-away/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;Personal_Mineral_Extractor.f465e0046c576571.jpg" /&gt;
    
    &lt;div class="caption"&gt;A personal mineral extractor&lt;/div&gt;
    
&lt;/div&gt;

&lt;p&gt;The grind, at least for SWG crafting, meant long periods of sitting there doing the exact same motions over and over again. This sounds really boring, but frequently after about five minutes of doing this, I would hit a kind of altered state of mind - a vaguely pleasant feeling of just “being.” The only other time I've ever felt that is when practicing Zen meditation, and I sorely miss it.&lt;/p&gt;
&lt;p&gt;Before vehicles were introduced, everyone had to walk everywhere. Shuttles and starports were jammed full of players on their way someplace. Player cities didn't exist yet, but there were always massive collections of player houses exactly 1 km outside of every major NPC city. It made those cities feel a lot like real cities - you would always be passing by other players on your way either into the city core for transport, into the suburbs for shopping or socializing, or out into the wilderness for adventuring and hunting. Every city had its own distinctive feel, too, on my home server of Chilastra.&lt;/p&gt;




&lt;div class="dress-image"&gt;
    &lt;img alt="A screenshot of Corellia" src="https://benovermyer.com/blog/2013/06/10-years-ago-in-an-mmo-far-far-away/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;correlia1.fc2c83f4d1bf5de1.jpg" /&gt;
    
    &lt;div class="caption"&gt;Corellia had some beautiful vistas&lt;/div&gt;
    
&lt;/div&gt;

&lt;p&gt;Coronet on Corellia was where I first landed, and it's where I spent the first few months of the game. It felt very rugged, like a city on the fringe. Theed, on Naboo, was where the entertainers and image designers hung out. It was definitely a “pretty” city. Mos Eisley was… well, a desert city. Because of all the difficult, unbuildable terrain surrounding Mos Eisley, it wasn't nearly as dense as the others. I think the players more nostalgic for A New Hope landed there. The other cities, like Restuss on Rori and the Imperial Outpost on Talus, had much smaller and more focused populations. Later, when they allowed players to build on some of the more advanced planets like Dantooine and Lok, more interesting communities started springing up.&lt;/p&gt;
&lt;p&gt;In the end, Star Wars: Galaxies really was the best MMORPG experience I've ever had. The early months, even with all the bugs, network issues, and missing content (capes!?), are permanently etched in my memory as a wonderful time. Rest in peace, SWG.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 29 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/06/10-years-ago-in-an-mmo-far-far-away/</guid></item><item><title>Useful Thunar Custom Actions</title><link>https://duncanlock.net/blog/2013/06/28/useful-thunar-custom-actions/</link><description>&lt;div class="image-block"&gt;&lt;img alt="Thunar's icon" height="stylized version of Thor's hammer" src="https://duncanlock.net/images/posts/useful-thunar-custom-actions/thunar-icon.png" width="a beautifully rendered" /&gt;&lt;/div&gt;
&lt;p&gt;Thunar - &lt;span class="caps"&gt;XFCE&lt;/span&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; XUbuntu’s small but perfectly formed file manager - has a simple mechanism that allows you to easily add new commands to the right click menu of files and folders. These are called &lt;a href="http://docs.xfce.org/xfce/thunar/custom-actions"&gt;Custom Actions&lt;/a&gt; and are easy to create…​ here’s how to do it.&lt;/p&gt;
&lt;p&gt;Click the &lt;strong&gt;Edit&lt;/strong&gt; menu, then click ‘&lt;strong&gt;Configure custom actions…​&lt;/strong&gt;‘. This will take you to the Custom Actions Manager, where you can create, edit or delete your custom actions.&lt;/p&gt;
&lt;p&gt;You can enter anything into the command box, including complex bash scripts, names of scripts or executables on the &lt;span class="caps"&gt;PATH&lt;/span&gt;, or the full path and filename of the command you want to run.&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="thunar custom actions edit 1" src="https://duncanlock.net/images/posts/useful-thunar-custom-actions/thunar-custom-actions-edit-1.png" /&gt;&lt;/div&gt;
&lt;p&gt;On the ‘&lt;strong&gt;Appearance Conditions&lt;/strong&gt;‘ tab, you tell Thunar when you want your item to appear in the right click menu:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="thunar custom actions edit 3" src="https://duncanlock.net/images/posts/useful-thunar-custom-actions/thunar-custom-actions-edit-3.png" /&gt;
&lt;figcaption&gt;Figure 1. Now, when I right click on a text file, I have extra options in my menu.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I’ve included my custom actions &lt;a href="#_my_thunar_custom_actions"&gt;below&lt;/a&gt; - and you can find &lt;a href="https://www.google.com/search?q=thunar+custom+actions"&gt;more around the web&lt;/a&gt;. I’ve only included ones here that aren’t commonly listed elsewhere.&lt;/p&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_but_first_a_word_about_working_directories_variables"&gt;But first, a word about Working Directories &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Variables&lt;/h2&gt;&lt;section class="doc-section level-2"&gt;&lt;h3 id="_working_directory"&gt;Working Directory&lt;/h3&gt;&lt;p&gt;The current working directory for the a custom action, is the folder the Thunar window that launched the action, is currently displaying. You can test this by creating and running the following custom action:&lt;/p&gt;
&lt;section class="doc-section level-3"&gt;&lt;h4 id="_test_cwd"&gt;Test &lt;span class="caps"&gt;CWD&lt;/span&gt;&lt;/h4&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Prints out the current working directory&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt; | zenity &lt;span class="nt"&gt;--text-info&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;*&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;Directories&lt;/dd&gt;&lt;dt&gt;Requirements&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;zenity&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This means that you can use just filenames without a path in your custom actions to refer to a file in the current folder. This means that you can use the &lt;code&gt;%N&lt;/code&gt; variable to process a list of selected files, instead if having to use the &lt;code&gt;%F&lt;/code&gt; variable which includes the full pathname - this is handy for renaming just the files, without tampering with the pathname, for example.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_variables"&gt;Variables&lt;/h3&gt;&lt;p&gt;Thunar custom actions can contain variable parameters, that get substituted with the actual value when you run the action. These allow you to refer to the files that are currently selected in Thunar when running your actions, without knowing in advance which ones. The following variables are available:&lt;/p&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 15%;" /&gt;&lt;col style="width: 85%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;This…​&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;is replaced at runtime with this…​&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;%f&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;The path to the first selected file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;%F&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;The paths to all the selected files&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;%d&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Directory containing the file referred to by %f&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;%D&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Directories containing the files referred to by %F&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;%n&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;The first selected filename, without the path&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;%N&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;All the selected filenames, without paths&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;You can see examples of these variables in use below.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_my_thunar_custom_actions"&gt;My Thunar Custom Actions&lt;/h2&gt;&lt;p&gt;To use these yourself, copy and paste these names, descriptions &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; commands into new actions in your Custom Actions Manager:&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_share_folder"&gt;Share Folder&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Shares the currently selected folder, giving everyone read access.&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;net usershare add %n %f &lt;span class="s2"&gt;""&lt;/span&gt; Everyone:R &lt;span class="nv"&gt;guest_ok&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;y&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;*&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;Directories&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_flatten_folder"&gt;Flatten Folder&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Moves all files from sub-folders to parent (current) folder, then removes all empty folders inside the current folder.&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mindepth&lt;/span&gt; 2 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;mv&lt;/span&gt; &lt;span class="s2"&gt;"{}"&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="se"&gt;\;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="nt"&gt;-empty&lt;/span&gt; &lt;span class="nt"&gt;-delete&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;*&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;Directories&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_rename_to_lower_case"&gt;Rename to lower-case&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Rename the currently selected files, making the filenames lower-case.&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;file &lt;span class="k"&gt;in&lt;/span&gt; %N&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;mv&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;*&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;&lt;em&gt;All&lt;/em&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_slugify_filename"&gt;Slugify Filename&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Rename the currently selected files, making the filenames lower-case &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; replacing spaces with dashes.&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;file &lt;span class="k"&gt;in&lt;/span&gt; %N&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;mv&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s1"&gt;' '&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;' A-Z'&lt;/span&gt; &lt;span class="s1"&gt;'-a-z'&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s1"&gt;'-'&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'[:alnum:][:cntrl:].'&lt;/span&gt; &lt;span class="s1"&gt;'-'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;*&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;&lt;em&gt;All&lt;/em&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_copy_contents_to_clipboard"&gt;Copy Contents to Clipboard&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Copies the contents of the selected file to the clipboard.&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="s2"&gt;"%F"&lt;/span&gt; | xclip &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nt"&gt;-selection&lt;/span&gt; clipboard&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;*&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;Text Files&lt;/dd&gt;&lt;dt&gt;Requirements&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;xclip&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_compare"&gt;Compare&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Compares selected files or folders in &lt;a href="http://meldmerge.org/"&gt;Meld&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;meld %F&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;*&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;Directories, Text Files&lt;/dd&gt;&lt;dt&gt;Requirements&lt;/dt&gt;&lt;dd&gt;Either &lt;a href="https://coderwall.com/p/isntfq"&gt;get the latest version of meld like this&lt;/a&gt;, or install the version in your distributions repository:&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;meld&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_compress_with_advpng"&gt;Compress with Advpng&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Runs &lt;a href="http://en.wikipedia.org/wiki/Advpng"&gt;Advpng&lt;/a&gt; on each of the selected &lt;span class="caps"&gt;PNG&lt;/span&gt; Files.&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;file &lt;span class="k"&gt;in&lt;/span&gt; %F&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;advpng &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;*.png&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;Image Files&lt;/dd&gt;&lt;dt&gt;Requirements&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;advancecomp&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_quantize_with_pngnq"&gt;Quantize with pngnq&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Reduce to 8bit colour, by running &lt;a href="https://github.com/stuart/pngnq"&gt;pngnq&lt;/a&gt; on each of the selected &lt;span class="caps"&gt;PNG&lt;/span&gt; Files.&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;file &lt;span class="k"&gt;in&lt;/span&gt; %F&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;pngnq &lt;span class="nt"&gt;-s1&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;*.png&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;Image Files&lt;/dd&gt;&lt;dt&gt;Requirements&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;pngnq&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_optimize_with_jpegoptim"&gt;Optimize with jpegoptim&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Description&lt;/dt&gt;&lt;dd&gt;Losslessly optimize JPEGs, by optimizing the Huffman tables and stripping comments and &lt;span class="caps"&gt;EXIF&lt;/span&gt; metadata from the file.&lt;/dd&gt;&lt;dt&gt;Command&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;file &lt;span class="k"&gt;in&lt;/span&gt; %F&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;jpegoptim &lt;span class="nt"&gt;--strip-all&lt;/span&gt; &lt;span class="nt"&gt;-of&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;File Pattern&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;strong&gt;.jpg;&lt;/strong&gt;.jpeg&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;Appears if selection contains&lt;/dt&gt;&lt;dd&gt;Image Files&lt;/dd&gt;&lt;dt&gt;Requirements&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;jpegoptim&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Sat, 29 Jun 2013 00:11:43 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/06/28/useful-thunar-custom-actions/</guid></item><item><title>If you make a mistake, you should get a pay rise</title><link>https://www.databasesandlife.com/mistake-pay-rise/</link><description>&lt;p&gt;The following two viewpoints are not consistent:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;ldquo;Come and work at our company. We are looking for someone with lots of experience. The more experience you have the more you&amp;rsquo;ll get paid!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;You made a mistake. You&amp;rsquo;re fired!&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can pick up knowledge at university and through reading books. But companies still want experience in addition to knowledge. For me, experience is very much having seen what works, and what doesn&amp;rsquo;t work, by having done things that work, and done things that don&amp;rsquo;t work.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Fri, 28 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/mistake-pay-rise/</guid></item><item><title>Pivoting in Postgres</title><link>/2013/06/27/Pivoting-in-Postgres/</link><description>&lt;p&gt;Earlier today on an internal Heroku group alias there was a &lt;a href="https://postgres.heroku.com/dataclips"&gt;dataclip&lt;/a&gt; shared. The dataclip listed off some data grouped by a category, there was a reply a few minutes later with a modification to the query that used the &lt;code&gt;crosstab&lt;/code&gt; function to pivot directly in SQL. There were immediately several reactions on the list that went something like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="mindblown" src="https://f.cl.ly/items/1b0G101r0B2W243b2933/Image%202013.06.27%202%3A06%3A23%20PM.gif" /&gt;&lt;/p&gt;
&lt;p&gt;While a mostly simple function in Postgres (there are a few rough edges), it really is all too handy. So here it is in action. Taking some data that looks like&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;row identifier, in this case date&lt;/li&gt;
&lt;li&gt;category grouping, in this case OS&lt;/li&gt;
&lt;li&gt;value&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Given a really basic query that generates some sample data it may look something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT generate_series AS date,
b.desc AS TYPE,
(random() * 10000 + 1)::int AS val
FROM generate_series((now() - '100 days'::interval)::date, now()::date, '1 day'::interval),
(SELECT unnest(ARRAY['OSX', 'Windows', 'Linux']) AS DESC) b;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You get results that look like:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;But of course this isn&amp;rsquo;t overly helpful in comparing day to day overall. You can do so on a OS by OS basis, but its annoying enough as is. The easy solution is to simply use a pivot table on your data. Most people at this point would pull it up into Excel or Google Docs, or you can do it directly in Postgres. To do so you&amp;rsquo;ll first enable the extension &lt;code&gt;tablefunc&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CREATE EXTENSION tablefunc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then you&amp;rsquo;ll use the crosstab function. The function looks something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT *
FROM crosstab(
'SELECT row_name, category_grouping, value FROM foo',
'SELECT category_names FROM bar')
AS
ct_result (category_name text, category1 text, category2 text, etc.)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lets see it an actual action. Given the same query we used to generate fake data we can actually pivot on it now directly in PostgreSQL:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT *
FROM crosstab(
'SELECT
a date,
b.desc AS os,
(random() * 10000 + 1)::int AS value
FROM generate_series((now() - ''100 days''::interval)::date, now()::date, ''1 DAY''::interval) a,
(SELECT unnest(ARRAY[''OSX'', ''Windows'', ''Linux'']) AS DESC) b ORDER BY 1,2
','SELECT unnest(ARRAY[''OSX'', ''Windows'', ''Linux''])'
)
AS ct(date date, OSX int, Windows int, Linux int);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And see some results:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;Have fun analyzing your data directly in your DB now. And as always if you have feedback/questions/requests please feel free to drop me a line &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens@gmail.com&lt;/a&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 27 Jun 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/06/27/Pivoting-in-Postgres/</guid></item><item><title>Datamappify - A New Take on Decoupling Domain, Form and Persistence in Rails</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/datamappify-a-new-take-on-decoupling-domain-form-and-persistence-in-rails</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Thu, 27 Jun 2013 15:09:00 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/datamappify-a-new-take-on-decoupling-domain-form-and-persistence-in-rails</guid></item><item><title>To Infinity and Beyond</title><link>https://xavd.id/blog/post/to-infinity-and-beyond/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/to-infinity-and-beyond/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Thu, 27 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/to-infinity-and-beyond/</guid></item><item><title>Using nginx with Google’s spdy and pagespeed to test website-speed</title><link>https://www.zufallsheld.de/2013/06/26/performance-spdy/</link><description>&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;: Google &lt;a href="http://blog.chromium.org/2015/02/hello-http2-goodbye-spdy-http-is_9.html"&gt;no longer supports&lt;/a&gt; spdy. Instead it focuses on http/2. This blog-post is no longer&amp;nbsp;up-to-date.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Today I tested nginx with Google&amp;#8217;s spdy implementation.I already tested
pagespeed separatly in a &lt;a href="http://zufallsheld.de/2013/04/22/arch-linux-nginx-php-fpm-wordpress/" title="Arch Linux + Nginx + PHP-FPM + WordPress"&gt;different post&lt;/a&gt; that showed the speed-boost
gained from it. Now to add the security for you …&lt;/p&gt;</description><author>zufallsheld</author><pubDate>Wed, 26 Jun 2013 21:38:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/06/26/performance-spdy/</guid></item><item><title>Duplicate Bible verses</title><link>https://honza.pokorny.ca/2013/06/duplicate-bible-verses/</link><description>&lt;p&gt;The text of the ESV was used.&lt;/p&gt;
&lt;p&gt;Number of verses that appear more than once: 235 (i.e. the number of list items
below).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Genesis 36:41, 1 Chronicles 1:52&lt;/li&gt;
&lt;li&gt;Matthew 8:20, Luke 9:58&lt;/li&gt;
&lt;li&gt;2 Kings 19:5, Isaiah 37:5&lt;/li&gt;
&lt;li&gt;2 Kings 19:2, Isaiah 37:2&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:10, Psalms 105:3&lt;/li&gt;
&lt;li&gt;Ezra 2:53, Nehemiah 7:55&lt;/li&gt;
&lt;li&gt;2 Samuel 22:46, Psalms 18:45&lt;/li&gt;
&lt;li&gt;2 Kings 18:3, 2 Chronicles 29:2&lt;/li&gt;
&lt;li&gt;1 Kings 12:11, 2 Chronicles 10:11&lt;/li&gt;
&lt;li&gt;2 Kings 19:34, Isaiah 37:35&lt;/li&gt;
&lt;li&gt;Ezekiel 40:29, Ezekiel 40:33&lt;/li&gt;
&lt;li&gt;Genesis 10:27, 1 Chronicles 1:21&lt;/li&gt;
&lt;li&gt;Jeremiah 10:15, Jeremiah 51:18&lt;/li&gt;
&lt;li&gt;1 Kings 8:14, 2 Chronicles 6:3&lt;/li&gt;
&lt;li&gt;1 Kings 12:6, 2 Chronicles 10:6&lt;/li&gt;
&lt;li&gt;2 Samuel 23:19, 1 Chronicles 11:21&lt;/li&gt;
&lt;li&gt;Genesis 10:16, 1 Chronicles 1:14&lt;/li&gt;
&lt;li&gt;2 Kings 16:4, 2 Chronicles 28:4&lt;/li&gt;
&lt;li&gt;1 Kings 12:1, 2 Chronicles 10:1&lt;/li&gt;
&lt;li&gt;Psalms 60:8, Psalms 108:9&lt;/li&gt;
&lt;li&gt;Genesis 10:2, 1 Chronicles 1:5&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:22, Psalms 105:15&lt;/li&gt;
&lt;li&gt;2 Kings 22:18, 2 Chronicles 34:26&lt;/li&gt;
&lt;li&gt;2 Samuel 23:37, 1 Chronicles 11:39&lt;/li&gt;
&lt;li&gt;Job 4:1, Job 15:1, Job 22:1&lt;/li&gt;
&lt;li&gt;1 Kings 22:7, 2 Chronicles 18:6&lt;/li&gt;
&lt;li&gt;Numbers 29:18, Numbers 29:21, Numbers 29:24, Numbers 29:27, Numbers 29:30, Numbers 29:33&lt;/li&gt;
&lt;li&gt;Matthew 26:41, Mark 14:38&lt;/li&gt;
&lt;li&gt;Proverbs 18:8, Proverbs 26:22&lt;/li&gt;
&lt;li&gt;1 Kings 12:4, 2 Chronicles 10:4&lt;/li&gt;
&lt;li&gt;Matthew 26:32, Mark 14:28&lt;/li&gt;
&lt;li&gt;Ezra 2:3, Nehemiah 7:8&lt;/li&gt;
&lt;li&gt;Genesis 36:37, 1 Chronicles 1:48&lt;/li&gt;
&lt;li&gt;2 Kings 18:20, Isaiah 36:5&lt;/li&gt;
&lt;li&gt;Genesis 36:34, 1 Chronicles 1:45&lt;/li&gt;
&lt;li&gt;Numbers 7:15, Numbers 7:21, Numbers 7:27, Numbers 7:33, Numbers 7:39, Numbers 7:45, Numbers 7:51, Numbers 7:57, Numbers 7:63, Numbers 7:69, Numbers 7:75, Numbers 7:81&lt;/li&gt;
&lt;li&gt;1 Kings 8:35, 2 Chronicles 6:26&lt;/li&gt;
&lt;li&gt;Ezra 2:51, Nehemiah 7:53&lt;/li&gt;
&lt;li&gt;Psalms 59:6, Psalms 59:14&lt;/li&gt;
&lt;li&gt;1 Kings 12:17, 2 Chronicles 10:17&lt;/li&gt;
&lt;li&gt;2 Kings 21:5, 2 Chronicles 33:5&lt;/li&gt;
&lt;li&gt;Leviticus 24:13, Numbers 16:36&lt;/li&gt;
&lt;li&gt;Genesis 10:26, 1 Chronicles 1:20&lt;/li&gt;
&lt;li&gt;1 Kings 22:18, 2 Chronicles 18:17&lt;/li&gt;
&lt;li&gt;2 Kings 14:12, 2 Chronicles 25:22&lt;/li&gt;
&lt;li&gt;2 Samuel 8:5, 1 Chronicles 18:5&lt;/li&gt;
&lt;li&gt;Luke 20:43, Acts 2:35&lt;/li&gt;
&lt;li&gt;Mark 12:40, Luke 20:47&lt;/li&gt;
&lt;li&gt;Ezra 2:16, Nehemiah 7:21&lt;/li&gt;
&lt;li&gt;2 Kings 20:17, Isaiah 39:6&lt;/li&gt;
&lt;li&gt;Job 40:3, Job 42:1&lt;/li&gt;
&lt;li&gt;2 Kings 8:18, 2 Chronicles 21:6&lt;/li&gt;
&lt;li&gt;Proverbs 14:12, Proverbs 16:25&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:24, Psalms 96:3&lt;/li&gt;
&lt;li&gt;Exodus 40:1, Leviticus 5:14, Leviticus 6:1, Leviticus 6:8, Leviticus 6:19, Leviticus 6:24, Leviticus 7:22, Leviticus 7:28, Leviticus 8:1, Leviticus 12:1, Leviticus 14:1, Leviticus 20:1, Leviticus 23:1, Leviticus 24:1, Leviticus 27:1, Numbers 4:21, Numbers 5:1, Numbers 6:22, Numbers 9:9, Numbers 10:1, Numbers 13:1, Numbers 15:1, Numbers 15:17, Numbers 17:1, Numbers 26:52, Numbers 28:1, Numbers 31:1, Numbers 34:1, Numbers 34:16&lt;/li&gt;
&lt;li&gt;1 Kings 8:17, 2 Chronicles 6:7&lt;/li&gt;
&lt;li&gt;Numbers 29:16, Numbers 29:25&lt;/li&gt;
&lt;li&gt;2 Samuel 22:9, Psalms 18:8&lt;/li&gt;
&lt;li&gt;Judges 17:6, Judges 21:25&lt;/li&gt;
&lt;li&gt;Matthew 24:19, Mark 13:17&lt;/li&gt;
&lt;li&gt;Job 27:1, Job 29:1&lt;/li&gt;
&lt;li&gt;Ezekiel 40:34, Ezekiel 40:37&lt;/li&gt;
&lt;li&gt;Psalms 42:11, Psalms 43:5&lt;/li&gt;
&lt;li&gt;Jeremiah 6:14, Jeremiah 8:11&lt;/li&gt;
&lt;li&gt;Genesis 36:42, 1 Chronicles 1:53&lt;/li&gt;
&lt;li&gt;1 Kings 22:13, 2 Chronicles 18:12&lt;/li&gt;
&lt;li&gt;1 Kings 12:12, 2 Chronicles 10:12&lt;/li&gt;
&lt;li&gt;Ezra 2:43, Nehemiah 7:46&lt;/li&gt;
&lt;li&gt;1 Kings 22:29, 2 Chronicles 18:28&lt;/li&gt;
&lt;li&gt;2 Kings 19:26, Isaiah 37:27&lt;/li&gt;
&lt;li&gt;Ezra 2:27, Nehemiah 7:31&lt;/li&gt;
&lt;li&gt;2 Kings 23:32, 2 Kings 23:37&lt;/li&gt;
&lt;li&gt;1 Kings 22:9, 2 Chronicles 18:8&lt;/li&gt;
&lt;li&gt;2 Kings 18:13, Isaiah 36:1&lt;/li&gt;
&lt;li&gt;Matthew 6:27, Luke 12:25&lt;/li&gt;
&lt;li&gt;Psalms 107:6, Psalms 107:13, Psalms 107:19, Psalms 107:28&lt;/li&gt;
&lt;li&gt;1 Kings 8:31, 2 Chronicles 6:22&lt;/li&gt;
&lt;li&gt;Leviticus 2:3, Leviticus 2:10&lt;/li&gt;
&lt;li&gt;2 Samuel 22:31, Psalms 18:30&lt;/li&gt;
&lt;li&gt;1 Kings 10:6, 2 Chronicles 9:5&lt;/li&gt;
&lt;li&gt;Matthew 24:46, Luke 12:43&lt;/li&gt;
&lt;li&gt;Matthew 7:8, Luke 11:10&lt;/li&gt;
&lt;li&gt;Matthew 24:18, Mark 13:16&lt;/li&gt;
&lt;li&gt;Ezra 2:58, Nehemiah 7:60&lt;/li&gt;
&lt;li&gt;Leviticus 3:10, Leviticus 3:15&lt;/li&gt;
&lt;li&gt;Exodus 16:11, Exodus 31:12, Numbers 25:10, Numbers 27:6&lt;/li&gt;
&lt;li&gt;2 Samuel 7:17, 1 Chronicles 17:15&lt;/li&gt;
&lt;li&gt;Matthew 12:41, Luke 11:32&lt;/li&gt;
&lt;li&gt;1 Kings 22:25, 2 Chronicles 18:24&lt;/li&gt;
&lt;li&gt;Proverbs 22:3, Proverbs 27:12&lt;/li&gt;
&lt;li&gt;2 Samuel 23:38, 1 Chronicles 11:40&lt;/li&gt;
&lt;li&gt;Genesis 10:13, 1 Chronicles 1:11&lt;/li&gt;
&lt;li&gt;Jeremiah 29:30, Jeremiah 35:12&lt;/li&gt;
&lt;li&gt;2 Kings 18:23, Isaiah 36:8&lt;/li&gt;
&lt;li&gt;Matthew 12:27, Luke 11:19&lt;/li&gt;
&lt;li&gt;2 Kings 19:30, Isaiah 37:31&lt;/li&gt;
&lt;li&gt;Exodus 13:1, Exodus 25:1, Exodus 30:11, Exodus 30:17, Exodus 30:22, Exodus 31:1, Numbers 15:37, Numbers 31:25&lt;/li&gt;
&lt;li&gt;Numbers 7:25, Numbers 7:31, Numbers 7:37, Numbers 7:43, Numbers 7:49, Numbers 7:55, Numbers 7:61, Numbers 7:67, Numbers 7:73, Numbers 7:79&lt;/li&gt;
&lt;li&gt;Ezra 2:7, Nehemiah 7:12&lt;/li&gt;
&lt;li&gt;1 Corinthians 1:3, 2 Corinthians 1:2, Ephesians 1:2, Philippians 1:2, 2 Thessalonians 1:2, Philemon 1:3&lt;/li&gt;
&lt;li&gt;Jeremiah 10:16, Jeremiah 51:19&lt;/li&gt;
&lt;li&gt;Numbers 7:16, Numbers 7:22, Numbers 7:28, Numbers 7:34, Numbers 7:40, Numbers 7:46, Numbers 7:52, Numbers 7:58, Numbers 7:64, Numbers 7:70, Numbers 7:76, Numbers 7:82&lt;/li&gt;
&lt;li&gt;1 Kings 10:14, 2 Chronicles 9:13&lt;/li&gt;
&lt;li&gt;2 Kings 19:11, Isaiah 37:11&lt;/li&gt;
&lt;li&gt;2 Samuel 22:10, Psalms 18:9&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:14, Psalms 105:7&lt;/li&gt;
&lt;li&gt;2 Samuel 8:7, 1 Chronicles 18:7&lt;/li&gt;
&lt;li&gt;Psalms 67:3, Psalms 67:5&lt;/li&gt;
&lt;li&gt;2 Samuel 23:14, 1 Chronicles 11:16&lt;/li&gt;
&lt;li&gt;Matthew 11:6, Luke 7:23&lt;/li&gt;
&lt;li&gt;1 Kings 8:18, 2 Chronicles 6:8&lt;/li&gt;
&lt;li&gt;Genesis 10:29, 1 Chronicles 1:23&lt;/li&gt;
&lt;li&gt;Isaiah 35:10, Isaiah 51:11&lt;/li&gt;
&lt;li&gt;2 Kings 19:10, Isaiah 37:10&lt;/li&gt;
&lt;li&gt;1 Kings 7:25, 2 Chronicles 4:4&lt;/li&gt;
&lt;li&gt;Matthew 24:35, Mark 13:31, Luke 21:33&lt;/li&gt;
&lt;li&gt;Ezra 2:37, Nehemiah 7:40&lt;/li&gt;
&lt;li&gt;Matthew 12:30, Luke 11:23&lt;/li&gt;
&lt;li&gt;2 Kings 22:15, 2 Chronicles 34:23&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:21, Psalms 105:14&lt;/li&gt;
&lt;li&gt;2 Kings 25:2, Jeremiah 52:5&lt;/li&gt;
&lt;li&gt;Psalms 57:5, Psalms 57:11, Psalms 108:5&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:20, Psalms 105:13&lt;/li&gt;
&lt;li&gt;1 Kings 12:19, 2 Chronicles 10:19&lt;/li&gt;
&lt;li&gt;Revelation 2:29, Revelation 3:6, Revelation 3:13&lt;/li&gt;
&lt;li&gt;Genesis 10:3, 1 Chronicles 1:6&lt;/li&gt;
&lt;li&gt;2 Samuel 22:19, Psalms 18:18&lt;/li&gt;
&lt;li&gt;Mark 10:18, Luke 18:19&lt;/li&gt;
&lt;li&gt;Psalms 107:8, Psalms 107:15, Psalms 107:21, Psalms 107:31&lt;/li&gt;
&lt;li&gt;Matthew 24:32, Mark 13:28&lt;/li&gt;
&lt;li&gt;Ezra 2:9, Nehemiah 7:14&lt;/li&gt;
&lt;li&gt;Exodus 14:1, Numbers 7:4&lt;/li&gt;
&lt;li&gt;2 Samuel 22:30, Psalms 18:29&lt;/li&gt;
&lt;li&gt;1 Kings 8:12, 2 Chronicles 6:1&lt;/li&gt;
&lt;li&gt;Genesis 10:6, 1 Chronicles 1:8&lt;/li&gt;
&lt;li&gt;2 Samuel 10:9, 1 Chronicles 19:10&lt;/li&gt;
&lt;li&gt;1 Kings 8:15, 2 Chronicles 6:4&lt;/li&gt;
&lt;li&gt;Matthew 11:9, Luke 7:26&lt;/li&gt;
&lt;li&gt;Matthew 24:34, Mark 13:30&lt;/li&gt;
&lt;li&gt;1 Kings 10:23, 2 Chronicles 9:22&lt;/li&gt;
&lt;li&gt;Genesis 46:11, 1 Chronicles 6:1&lt;/li&gt;
&lt;li&gt;Mark 10:15, Luke 18:17&lt;/li&gt;
&lt;li&gt;2 Samuel 22:34, Psalms 18:33&lt;/li&gt;
&lt;li&gt;Song of Solomon 2:7, Song of Solomon 3:5&lt;/li&gt;
&lt;li&gt;1 Samuel 31:1, 1 Chronicles 10:1&lt;/li&gt;
&lt;li&gt;1 Kings 22:17, 2 Chronicles 18:16&lt;/li&gt;
&lt;li&gt;2 Kings 19:13, Isaiah 37:13&lt;/li&gt;
&lt;li&gt;1 Kings 12:9, 2 Chronicles 10:9&lt;/li&gt;
&lt;li&gt;1 Kings 8:24, 2 Chronicles 6:15&lt;/li&gt;
&lt;li&gt;2 Samuel 22:6, Psalms 18:5&lt;/li&gt;
&lt;li&gt;Jeremiah 16:1, Ezekiel 6:1, Ezekiel 7:1, Ezekiel 12:1, Ezekiel 13:1, Ezekiel 17:1, Ezekiel 18:1, Ezekiel 21:1, Ezekiel 23:1, Ezekiel 24:15, Ezekiel 25:1, Ezekiel 27:1, Ezekiel 28:1, Ezekiel 28:20, Ezekiel 30:1, Ezekiel 33:1, Ezekiel 33:23, Ezekiel 34:1, Ezekiel 35:1, Ezekiel 36:16, Ezekiel 37:15, Ezekiel 38:1&lt;/li&gt;
&lt;li&gt;Genesis 10:15, 1 Chronicles 1:13&lt;/li&gt;
&lt;li&gt;1 Kings 15:16, 1 Kings 15:32&lt;/li&gt;
&lt;li&gt;Jeremiah 7:1, Jeremiah 11:1, Jeremiah 18:1, Jeremiah 30:1&lt;/li&gt;
&lt;li&gt;Leviticus 13:1, Leviticus 14:33, Leviticus 15:1, Numbers 2:1, Numbers 4:1, Numbers 4:17&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:8, Psalms 105:1&lt;/li&gt;
&lt;li&gt;1 Samuel 31:2, 1 Chronicles 10:2&lt;/li&gt;
&lt;li&gt;1 Kings 7:23, 2 Chronicles 4:2&lt;/li&gt;
&lt;li&gt;2 Samuel 22:4, Psalms 18:3&lt;/li&gt;
&lt;li&gt;Ezra 2:38, Nehemiah 7:41&lt;/li&gt;
&lt;li&gt;Jeremiah 32:26, Jeremiah 33:19, Jeremiah 33:23&lt;/li&gt;
&lt;li&gt;Ezra 2:23, Nehemiah 7:27&lt;/li&gt;
&lt;li&gt;Matthew 11:10, Luke 7:27&lt;/li&gt;
&lt;li&gt;2 Kings 19:7, Isaiah 37:7&lt;/li&gt;
&lt;li&gt;Matthew 26:46, Mark 14:42&lt;/li&gt;
&lt;li&gt;2 Samuel 7:4, 1 Chronicles 17:3&lt;/li&gt;
&lt;li&gt;Job 11:1, Job 20:1&lt;/li&gt;
&lt;li&gt;2 Kings 24:19, Jeremiah 52:2&lt;/li&gt;
&lt;li&gt;2 Kings 19:33, Isaiah 37:34&lt;/li&gt;
&lt;li&gt;Ezra 2:39, Nehemiah 7:42&lt;/li&gt;
&lt;li&gt;Matthew 7:3, Luke 6:41&lt;/li&gt;
&lt;li&gt;2 Samuel 22:40, Psalms 18:39&lt;/li&gt;
&lt;li&gt;Ezekiel 11:14, Ezekiel 12:17, Ezekiel 12:21, Ezekiel 12:26, Ezekiel 14:2, Ezekiel 14:12, Ezekiel 15:1, Ezekiel 20:2, Ezekiel 20:45, Ezekiel 21:8, Ezekiel 22:17, Ezekiel 22:23, Zechariah 6:9&lt;/li&gt;
&lt;li&gt;1 Kings 8:36, 2 Chronicles 6:27&lt;/li&gt;
&lt;li&gt;1 Kings 19:10, 1 Kings 19:14&lt;/li&gt;
&lt;li&gt;Numbers 29:28, Numbers 29:38&lt;/li&gt;
&lt;li&gt;Proverbs 6:11, Proverbs 24:34&lt;/li&gt;
&lt;li&gt;2 Kings 19:1, Isaiah 37:1&lt;/li&gt;
&lt;li&gt;1 Kings 22:34, 2 Chronicles 18:33&lt;/li&gt;
&lt;li&gt;Jeremiah 10:14, Jeremiah 51:17&lt;/li&gt;
&lt;li&gt;Psalms 60:9, Psalms 108:10&lt;/li&gt;
&lt;li&gt;Genesis 36:35, 1 Chronicles 1:46&lt;/li&gt;
&lt;li&gt;1 Kings 22:28, 2 Chronicles 18:27&lt;/li&gt;
&lt;li&gt;Exodus 20:6, Deuteronomy 5:10&lt;/li&gt;
&lt;li&gt;Ezra 2:34, Nehemiah 7:36&lt;/li&gt;
&lt;li&gt;2 Kings 25:3, Jeremiah 52:6&lt;/li&gt;
&lt;li&gt;Matthew 25:21, Matthew 25:23&lt;/li&gt;
&lt;li&gt;Leviticus 4:1, Leviticus 17:1, Leviticus 18:1, Leviticus 19:1, Leviticus 21:16, Leviticus 22:1, Leviticus 22:17, Leviticus 22:26, Leviticus 23:9, Leviticus 23:23, Leviticus 23:26, Leviticus 23:33, Numbers 3:5, Numbers 3:11, Numbers 3:44, Numbers 5:5, Numbers 5:11, Numbers 6:1, Numbers 8:5, Numbers 8:23, Numbers 16:23, Numbers 18:25, Numbers 25:16, Numbers 35:9&lt;/li&gt;
&lt;li&gt;Job 6:1, Job 9:1, Job 12:1, Job 16:1, Job 19:1, Job 21:1, Job 23:1, Job 26:1&lt;/li&gt;
&lt;li&gt;Psalms 60:12, Psalms 108:13&lt;/li&gt;
&lt;li&gt;2 Kings 25:29, Jeremiah 52:33&lt;/li&gt;
&lt;li&gt;2 Kings 8:20, 2 Chronicles 21:8&lt;/li&gt;
&lt;li&gt;2 Kings 18:19, Isaiah 36:4&lt;/li&gt;
&lt;li&gt;Numbers 14:26, Numbers 16:20&lt;/li&gt;
&lt;li&gt;1 Kings 22:11, 2 Chronicles 18:10&lt;/li&gt;
&lt;li&gt;Song of Solomon 2:6, Song of Solomon 8:3&lt;/li&gt;
&lt;li&gt;Genesis 10:14, 1 Chronicles 1:12&lt;/li&gt;
&lt;li&gt;1 Chronicles 3:7, 1 Chronicles 14:6&lt;/li&gt;
&lt;li&gt;Ezra 2:64, Nehemiah 7:66&lt;/li&gt;
&lt;li&gt;2 Samuel 23:23, 1 Chronicles 11:25&lt;/li&gt;
&lt;li&gt;2 Kings 15:3, 2 Chronicles 26:4&lt;/li&gt;
&lt;li&gt;2 Samuel 22:35, Psalms 18:34&lt;/li&gt;
&lt;li&gt;Ezra 2:4, Nehemiah 7:9&lt;/li&gt;
&lt;li&gt;Job 8:1, Job 18:1, Job 25:1&lt;/li&gt;
&lt;li&gt;1 Kings 22:16, 2 Chronicles 18:15&lt;/li&gt;
&lt;li&gt;Matthew 24:47, Luke 12:44&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:34, Psalms 118:1, Psalms 118:29&lt;/li&gt;
&lt;li&gt;Mark 15:2, Luke 23:3&lt;/li&gt;
&lt;li&gt;Job 38:1, Job 40:6&lt;/li&gt;
&lt;li&gt;1 Kings 22:5, 2 Chronicles 18:4&lt;/li&gt;
&lt;li&gt;Proverbs 6:10, Proverbs 24:33&lt;/li&gt;
&lt;li&gt;2 Kings 19:12, Isaiah 37:12&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:16, Psalms 105:9&lt;/li&gt;
&lt;li&gt;2 Kings 25:20, Jeremiah 52:26&lt;/li&gt;
&lt;li&gt;Ezra 2:32, Nehemiah 7:35&lt;/li&gt;
&lt;li&gt;2 Kings 18:24, Isaiah 36:9&lt;/li&gt;
&lt;li&gt;1 Kings 10:27, 2 Chronicles 9:27&lt;/li&gt;
&lt;li&gt;Exodus 25:33, Exodus 37:19&lt;/li&gt;
&lt;li&gt;Numbers 7:14, Numbers 7:20, Numbers 7:26, Numbers 7:32, Numbers 7:38, Numbers 7:44, Numbers 7:50, Numbers 7:56, Numbers 7:62, Numbers 7:68, Numbers 7:74, Numbers 7:80&lt;/li&gt;
&lt;li&gt;Psalms 46:7, Psalms 46:11&lt;/li&gt;
&lt;li&gt;Jeremiah 13:8, Jeremiah 18:5, Jeremiah 24:4, Ezekiel 17:11&lt;/li&gt;
&lt;li&gt;Genesis 10:28, 1 Chronicles 1:22&lt;/li&gt;
&lt;li&gt;1 Chronicles 16:11, Psalms 105:4&lt;/li&gt;
&lt;li&gt;Genesis 10:17, 1 Chronicles 1:15&lt;/li&gt;
&lt;li&gt;Genesis 36:33, 1 Chronicles 1:44&lt;/li&gt;
&lt;li&gt;Matthew 17:21, Matthew 18:11, Matthew 23:14, Mark 7:16, Mark 9:44, Mark 9:46, Mark 11:26, Mark 15:28, Luke 17:36, Luke 23:17, John 5:4, Acts 8:37, Acts 15:34, Acts 24:7, Acts 28:29, Romans 16:24&lt;/li&gt;
&lt;li&gt;Ezra 2:31, Nehemiah 7:34&lt;/li&gt;
&lt;li&gt;Matthew 26:30, Mark 14:26&lt;/li&gt;
&lt;li&gt;Leviticus 19:30, Leviticus 26:2&lt;/li&gt;
&lt;li&gt;Genesis 36:36, 1 Chronicles 1:47&lt;/li&gt;
&lt;li&gt;Numbers 16:44, Numbers 20:7&lt;/li&gt;
&lt;li&gt;Proverbs 21:9, Proverbs 25:24&lt;/li&gt;
&lt;li&gt;Philippians 4:23, Philemon 1:25&lt;/li&gt;
&lt;li&gt;2 Samuel 22:20, Psalms 18:19&lt;/li&gt;
&lt;li&gt;Matthew 13:42, Matthew 13:50&lt;/li&gt;
&lt;/ul&gt;</description><author>Honza Pokorný</author><pubDate>Wed, 26 Jun 2013 03:52:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/06/duplicate-bible-verses/</guid></item><item><title>Bible verses by length</title><link>https://honza.pokorny.ca/2013/06/bible-verses-by-length/</link><description>&lt;p&gt;Text used: ESV.  From shortest to longest.&lt;/p&gt;
&lt;p&gt;John 11:35, Job 3:2, Numbers 31:33, Numbers 31:44, Luke 20:30, Numbers 31:34, 1
Thessalonians 5:16, 1 Chronicles 1:25, Joshua 15:29, 1 Chronicles 1:1, Numbers
31:45, Joshua 15:52, Nehemiah 10:26, Acts 15:18, Numbers 31:46, Deuteronomy
2:17, Joshua 19:43, 1 Chronicles 1:26, 1 Chronicles 4:29, 1 Chronicles 8:22, 1
Chronicles 8:31, Nehemiah 10:15, Luke 17:32, Genesis 10:28, Genesis 25:14,
Genesis 36:42, Exodus 20:15, Joshua 15:24, Joshua 15:26, Joshua 15:42, Joshua
15:50, Joshua 18:23, Joshua 19:36, 1 Chronicles 1:22, 1 Chronicles 1:53, 1
Chronicles 8:15, 1 Chronicles 8:19, 1 Chronicles 8:23, 1 Chronicles 12:26, 2
Chronicles 11:8, Ezra 2:29, Nehemiah 10:13, 1 Thessalonians 5:17, Genesis 8:15,
Genesis 10:27, Exodus 20:13, Joshua 15:23, Joshua 15:43, 1 Chronicles 1:21, 1
Chronicles 3:7, 1 Chronicles 14:6, Ezra 2:5, Ezra 2:10, Ezra 2:15, Nehemiah
7:10, Nehemiah 7:20, Nehemiah 10:17, Nehemiah 10:18, Nehemiah 11:33, 1
Thessalonians 5:25, Exodus 13:1, Exodus 25:1, Exodus 30:11, Exodus 30:17,
Exodus 30:22, Exodus 31:1, Numbers 15:37, Numbers 31:25, Deuteronomy 5:17,
Joshua 15:22, Joshua 18:25, Joshua 18:27, Joshua 19:20, 1 Chronicles 8:4, Ezra
2:8, Ezra 2:11, Ezra 2:17, Ezra 2:18, Ezra 2:20, Ezra 2:32, Nehemiah 7:13,
Nehemiah 7:16, Nehemiah 7:23, Nehemiah 7:25, Nehemiah 7:35, Nehemiah 10:11,
Nehemiah 10:16, Nehemiah 10:27, Nehemiah 11:32, John 6:48, Genesis 23:14,
Genesis 36:41, Genesis 46:23, Leviticus 11:15, Numbers 4:48, Deuteronomy 3:15,
Deuteronomy 14:14, Joshua 15:30, Joshua 15:39, Joshua 15:58, Joshua 19:4,
Joshua 19:37, 1 Chronicles 1:2, 1 Chronicles 1:27, 1 Chronicles 1:52, 1
Chronicles 4:30, 1 Chronicles 14:5, 2 Chronicles 11:7, Ezra 2:7, Ezra 2:9, Ezra
2:19, Ezra 2:22, Ezra 2:27, Nehemiah 7:12, Nehemiah 7:14, Nehemiah 7:15,
Nehemiah 7:22, Nehemiah 7:24, Nehemiah 7:31, Nehemiah 10:19, Nehemiah 10:22,
Nehemiah 11:34, Nehemiah 12:4, Mark 4:14, Deuteronomy 2:2, Joshua 15:38, Joshua
15:40, Joshua 15:56, Joshua 18:26, Joshua 19:3, 1 Chronicles 1:24, 2 Chronicles
11:9, Ezra 2:12, Ezra 2:23, Ezra 2:24, Ezra 2:30, Ezra 2:34, Ezra 2:37, Ezra
2:39, Nehemiah 7:17, Nehemiah 7:27, Nehemiah 7:36, Nehemiah 7:40, Nehemiah
7:42, Nehemiah 10:5, Nehemiah 10:24, Nehemiah 12:5, Job 40:1, 2 Corinthians
13:13, 1 Thessalonians 5:19, Hebrews 13:25, Genesis 26:6, Exodus 6:10,
Deuteronomy 5:19, 1 Chronicles 1:3, 1 Chronicles 8:20, Ezra 2:3, Ezra 2:13,
Ezra 2:14, Ezra 2:35, Ezra 10:35, Ezra 10:39, Nehemiah 7:8, Nehemiah 7:18,
Nehemiah 7:19, Nehemiah 7:38, Nehemiah 10:6, Nehemiah 10:21, Nehemiah 10:23,
Nehemiah 12:2, Matthew 9:7, John 10:30, 1 Thessalonians 5:20, Exodus 16:11,
Exodus 31:12, Numbers 25:10, Numbers 27:6, Joshua 15:55, 1 Chronicles 12:11,
Ezra 2:21, Ezra 2:38, Ezra 10:36, Ezra 10:37, Nehemiah 7:41, Nehemiah 10:2,
Nehemiah 10:7, Nehemiah 10:20, Nehemiah 10:25, Nehemiah 12:3, Nehemiah 12:6,
Job 6:1, Job 9:1, Job 12:1, Job 16:1, Job 19:1, Job 21:1, Job 23:1, Job 26:1,
Isaiah 8:5, Jeremiah 21:3, Exodus 14:1, Numbers 7:4, Joshua 4:15, Joshua 15:37,
Joshua 19:19, Joshua 19:42, Joshua 19:44, 1 Chronicles 2:8, 1 Chronicles 7:27,
1 Chronicles 8:5, 1 Chronicles 8:24, Ezra 2:4, Nehemiah 7:9, Nehemiah 10:3,
Nehemiah 10:4, Job 35:1, Romans 2:11, Hebrews 13:1, Numbers 26:8, Deuteronomy
14:11, Joshua 15:31, Joshua 15:53, Joshua 20:1, 1 Chronicles 1:4, 1 Chronicles
3:14, Ezra 10:40, Ezra 10:41, Ezra 10:42, Nehemiah 7:28, Nehemiah 10:12,
Nehemiah 12:33, Job 34:1, Isaiah 7:10, Luke 15:3, Genesis 23:5, Numbers 1:46,
Joshua 18:22, 1 Chronicles 12:12, Ezra 2:28, Ezra 10:38, Nehemiah 7:32,
Nehemiah 7:33, Job 36:1, Luke 20:32, Luke 24:8, 1 Corinthians 15:30, 1
Thessalonians 2:20, Exodus 20:14, Joshua 19:45, 2 Samuel 5:15, 1 Kings 5:2, 1
Chronicles 6:53, Nehemiah 7:30, Matthew 13:9, Matthew 22:27, Mark 14:50, Luke
9:55, John 10:42, 1 Timothy 4:11, Exodus 1:2, Exodus 1:3, Exodus 1:4, Exodus
40:1, Leviticus 5:14, Leviticus 6:1, Leviticus 6:8, Leviticus 6:19, Leviticus
6:24, Leviticus 7:22, Leviticus 7:28, Leviticus 8:1, Leviticus 12:1, Leviticus
14:1, Leviticus 20:1, Leviticus 23:1, Leviticus 24:1, Leviticus 27:1, Numbers
4:21, Numbers 5:1, Numbers 6:22, Numbers 6:24, Numbers 9:9, Numbers 10:1,
Numbers 13:1, Numbers 15:1, Numbers 15:17, Numbers 17:1, Numbers 26:52, Numbers
27:15, Numbers 28:1, Numbers 31:1, Numbers 32:35, Numbers 34:1, Numbers 34:16,
Joshua 15:35, 2 Samuel 5:16, 1 Chronicles 3:6, 1 Chronicles 8:14, 1 Chronicles
8:26, 2 Chronicles 11:6, Ezra 2:26, Psalms 18:1, Isaiah 3:21, Isaiah 37:15,
Jeremiah 16:1, Ezekiel 6:1, Ezekiel 7:1, Ezekiel 12:1, Ezekiel 13:1, Ezekiel
17:1, Ezekiel 18:1, Ezekiel 21:1, Ezekiel 23:1, Ezekiel 24:15, Ezekiel 25:1,
Ezekiel 27:1, Ezekiel 28:1, Ezekiel 28:20, Ezekiel 30:1, Ezekiel 33:1, Ezekiel
33:23, Ezekiel 34:1, Ezekiel 35:1, Ezekiel 36:16, Ezekiel 37:15, Ezekiel 38:1,
Matthew 24:25, 1 Thessalonians 5:22, 2 Timothy 4:9, 2 Timothy 4:12, Hebrews
12:29, Genesis 21:24, Genesis 25:5, Leviticus 11:14, Numbers 4:44, Numbers
7:16, Numbers 7:22, Numbers 7:28, Numbers 7:34, Numbers 7:40, Numbers 7:46,
Numbers 7:52, Numbers 7:58, Numbers 7:64, Numbers 7:70, Numbers 7:76, Numbers
7:82, Deuteronomy 14:13, Joshua 15:34, 2 Samuel 23:25, 1 Kings 1:46, 1
Chronicles 14:7, Ezra 10:32, Nehemiah 12:20, Matthew 6:11, Matthew 10:12, Mark
4:3, Luke 11:3, John 1:2, Acts 13:30, Ephesians 4:5, 1 John 5:7, Genesis 49:18,
Numbers 26:11, Joshua 15:27, 1 Chronicles 1:30, 1 Chronicles 2:15, 1 Chronicles
8:17, 1 Chronicles 12:10, Ezra 2:31, Nehemiah 7:34, Psalms 25:1, Psalms 109:1,
Ecclesiastes 4:7, Jeremiah 25:21, Luke 22:62, Luke 24:48, John 7:53, Acts
17:33, 1 Timothy 5:3, 1 John 4:19, Jude 1:22, Genesis 26:23, Numbers 2:4,
Numbers 2:6, Numbers 2:8, Numbers 2:11, Numbers 2:13, Numbers 2:15, Numbers
2:19, Numbers 2:21, Numbers 2:23, Numbers 2:26, Numbers 2:28, Numbers 2:30,
Deuteronomy 14:3, Joshua 15:28, 1 Samuel 30:28, 1 Samuel 30:30, 2 Samuel 23:35,
2 Samuel 23:38, 1 Kings 4:18, 1 Chronicles 11:40, 1 Chronicles 24:28, Nehemiah
11:29, Esther 9:8, Matthew 7:1, Luke 24:43, John 4:4, John 5:41, Acts 8:8, Acts
19:7, Romans 3:16, 2 Corinthians 5:7, 2 Corinthians 13:12, Ephesians 5:30,
Hebrews 6:3, Revelation 13:9, Genesis 24:34, Leviticus 4:1, Leviticus 10:8,
Leviticus 17:1, Leviticus 18:1, Leviticus 19:1, Leviticus 21:16, Leviticus
22:1, Leviticus 22:17, Leviticus 22:26, Leviticus 23:9, Leviticus 23:23,
Leviticus 23:26, Leviticus 23:33, Numbers 1:14, Numbers 1:48, Numbers 3:5,
Numbers 3:11, Numbers 3:44, Numbers 5:5, Numbers 5:11, Numbers 6:1, Numbers
8:1, Numbers 8:5, Numbers 8:23, Numbers 16:23, Numbers 16:44, Numbers 18:25,
Numbers 20:7, Numbers 25:16, Numbers 28:29, Numbers 29:10, Numbers 35:9,
Deuteronomy 5:18, Deuteronomy 14:20, Joshua 19:5, 1 Samuel 15:10, 1 Chronicles
2:5, 1 Chronicles 9:37, 1 Chronicles 12:13, Ezra 2:41, Nehemiah 7:44, Nehemiah
11:8, Nehemiah 12:15, Job 40:3, Job 42:1, Psalms 66:1, Ezekiel 11:14, Ezekiel
12:17, Ezekiel 12:21, Ezekiel 12:26, Ezekiel 14:2, Ezekiel 14:12, Ezekiel 15:1,
Ezekiel 20:2, Ezekiel 20:45, Ezekiel 21:8, Ezekiel 22:17, Ezekiel 22:23,
Zechariah 6:9, Matthew 13:18, Mark 6:42, Luke 2:30, Luke 9:56, Acts 18:16,
Romans 3:15, 1 Corinthians 10:3, 1 Corinthians 16:14, 1 Timothy 2:13, Genesis
9:28, Genesis 30:28, Genesis 35:28, Leviticus 24:13, Numbers 1:9, Numbers 1:13,
Numbers 4:36, Numbers 16:36, 1 Samuel 18:9, 1 Kings 17:2, 2 Kings 10:28, 1
Chronicles 24:29, Ezra 2:33, Nehemiah 7:37, Psalms 92:8, Jeremiah 13:8,
Jeremiah 18:5, Jeremiah 24:4, Jeremiah 29:24, Ezekiel 17:11, Matthew 14:18,
Mark 3:19, Acts 23:25, 1 Corinthians 4:16, Galatians 1:24, Ephesians 4:27,
Ephesians 5:7, Revelation 2:28, Genesis 10:17, Genesis 43:1, Exodus 7:8, Exodus
15:18, Exodus 20:1, Numbers 1:15, Deuteronomy 32:48, Joshua 13:18, Judges 10:5,
1 Kings 4:1, 1 Kings 4:14, 1 Kings 17:8, 1 Chronicles 1:15, 1 Chronicles 2:14,
1 Chronicles 3:8, 1 Chronicles 8:2, 1 Chronicles 11:27, Nehemiah 11:35, Song of
Solomon 1:1, Isaiah 2:18, Jeremiah 32:26, Jeremiah 33:19, Jeremiah 33:23,
Ezekiel 16:1, Ezekiel 21:18, Matthew 3:8, Matthew 11:15, Mark 3:15, Mark 9:49,
Mark 13:18, Luke 22:68, Luke 24:42, John 8:1, John 15:23, 1 Corinthians 11:1,
Genesis 11:30, Leviticus 10:20, Joshua 15:45, 2 Samuel 23:39, 1 Kings 6:28, 1
Chronicles 1:28, 1 Chronicles 8:3, 1 Chronicles 23:15, 1 Chronicles 23:16, 1
Chronicles 23:18, Ezra 2:64, Nehemiah 7:26, Nehemiah 7:66, Nehemiah 7:68,
Nehemiah 11:28, Nehemiah 12:19, Psalms 130:1, Proverbs 27:5, Ecclesiastes 3:9,
Lamentations 3:31, Daniel 4:28, Zechariah 1:20, Matthew 12:16, John 3:30, John
19:1, Acts 7:50, Romans 1:22, Galatians 5:9, Genesis 19:18, Genesis 29:11,
Genesis 35:24, Exodus 16:30, Exodus 16:36, Exodus 20:3, Exodus 33:18, Numbers
1:8, Numbers 31:37, Joshua 15:49, Judges 9:22, 2 Samuel 23:28, 1 Chronicles
2:12, 1 Chronicles 6:25, 1 Chronicles 6:46, Ezra 10:34, Nehemiah 7:56, Nehemiah
12:34, Psalms 56:3, Psalms 61:1, Jeremiah 2:1, Matthew 12:21, Matthew 22:38,
Matthew 23:38, Mark 15:13, Luke 1:47, Luke 21:18, Acts 27:26, Romans 1:31,
Romans 16:6, Romans 16:8, 1 Corinthians 15:26, 1 Corinthians 16:23, Galatians
6:5, 1 Thessalonians 5:26, James 1:16, Genesis 25:15, Exodus 28:13, Numbers
1:7, Numbers 1:11, Numbers 1:12, Numbers 16:4, Numbers 27:5, Deuteronomy 5:7,
Ruth 4:21, 1 Kings 6:11, 1 Chronicles 11:37, 1 Chronicles 24:8, Ezra 2:16,
Nehemiah 7:21, Isaiah 38:4, Jeremiah 48:22, Habakkuk 1:1, Matthew 22:14, Luke
1:37, Luke 14:6, Luke 19:34, Luke 23:16, John 11:36, John 12:45, John 16:31,
Acts 27:37, Romans 3:11, Genesis 5:23, Genesis 15:20, Genesis 25:31, Genesis
30:5, Genesis 36:28, Exodus 22:18, Leviticus 13:1, Leviticus 14:33, Leviticus
15:1, Leviticus 21:13, Numbers 2:1, Numbers 4:1, Numbers 4:17, Numbers 29:4,
Deuteronomy 27:11, Joshua 19:21, Judges 20:29, 1 Chronicles 6:41, 1 Chronicles
11:29, 1 Chronicles 11:41, 1 Chronicles 23:7, Ezra 10:20, Nehemiah 7:69,
Nehemiah 11:18, Nehemiah 12:13, Job 8:1, Job 18:1, Job 25:1, Psalms 23:1,
Psalms 49:2, Psalms 137:2, Psalms 139:1, Isaiah 40:1, Ezekiel 28:11, Mark 4:23,
Mark 13:36, Mark 14:46, Luke 4:19, Luke 20:43, John 3:24, John 7:2, John 7:5,
John 7:9, John 14:4, John 20:28, Acts 2:35, Romans 3:17, 1 Corinthians 3:23, 1
Corinthians 9:4, 1 Corinthians 10:14, 1 Timothy 5:15, Revelation 2:25, Genesis
28:10, Exodus 2:25, Exodus 20:8, Exodus 25:5, Numbers 29:15, Deuteronomy 5:30,
Joshua 15:33, Judges 12:8, 1 Kings 4:17, 1 Kings 6:14, 1 Chronicles 2:20, 1
Chronicles 6:42, 1 Chronicles 6:43, 1 Chronicles 7:39, 1 Chronicles 9:10, 1
Chronicles 11:47, Ezra 7:4, Esther 4:15, Job 42:13, Job 42:17, Psalms 89:52,
Psalms 119:3, Jeremiah 29:30, Jeremiah 32:13, Jeremiah 35:12, Zechariah 1:2,
Matthew 12:8, Matthew 23:32, Luke 1:46, Luke 9:15, Luke 19:1, Luke 21:19, John
4:41, John 4:43, Romans 15:33, 1 Corinthians 16:8, 2 Corinthians 2:8, 2
Corinthians 4:12, Philippians 4:14, Colossians 2:21, Genesis 10:23, Genesis
30:10, Exodus 12:45, Exodus 38:13, Leviticus 14:56, Numbers 25:17, Judges
12:10, Ruth 4:19, 2 Samuel 12:2, 2 Samuel 20:26, 1 Chronicles 5:5, 1 Chronicles
6:5, 1 Chronicles 12:9, 1 Chronicles 24:10, 1 Chronicles 24:11, Ezra 2:54, Ezra
2:66, Ezra 7:2, Nehemiah 11:26, Nehemiah 12:14, Nehemiah 12:16, Nehemiah 12:18,
Nehemiah 12:21, Esther 4:12, Job 4:1, Job 15:1, Job 17:15, Job 22:1, Job 35:4,
Psalms 38:22, Psalms 114:3, Psalms 116:11, Psalms 146:1, Proverbs 6:7, Song of
Solomon 7:10, Jeremiah 1:4, Ezekiel 22:1, Hosea 4:17, Matthew 14:10, Matthew
19:15, Mark 5:32, Mark 9:40, Mark 11:22, Luke 21:17, John 1:24, John 20:10,
Acts 11:25, Romans 3:18, 1 Corinthians 8:3, 1 Corinthians 13:9, 2 Corinthians
3:12, 2 Corinthians 9:15, 2 Corinthians 10:17, Galatians 1:5, Ephesians 2:1,
Philippians 1:3, 1 Thessalonians 5:21, 1 John 5:21, 2 John 1:13, Genesis 6:8,
Genesis 10:15, Genesis 22:22, Genesis 24:26, Genesis 33:16, Exodus 6:21, Exodus
12:47, Numbers 1:25, Numbers 1:39, Numbers 18:14, 2 Samuel 23:27, 2 Samuel
23:31, 1 Kings 22:47, 1 Chronicles 1:13, 1 Chronicles 4:7, 1 Chronicles 4:34, 1
Chronicles 11:33, 1 Chronicles 11:36, 1 Chronicles 24:9, 2 Chronicles 8:3, Job
11:1, Job 20:1, Job 29:15, Psalms 16:1, Psalms 38:18, Psalms 55:16, Psalms
87:1, Song of Solomon 2:1, Isaiah 3:19, Jeremiah 7:1, Jeremiah 11:1, Jeremiah
18:1, Jeremiah 30:1, Hosea 8:2, Zechariah 4:8, Malachi 2:1, Matthew 7:20,
Matthew 11:26, Matthew 11:30, Matthew 23:11, Mark 15:30, Luke 6:36, Luke 7:35,
Luke 7:48, John 4:3, John 10:31, Acts 7:47, Acts 12:24, Acts 20:33, Romans 8:8,
1 Corinthians 1:22, 1 Corinthians 12:20, Ephesians 4:20, Genesis 10:6, Genesis
30:12, Genesis 46:11, Genesis 46:14, Numbers 1:6, Numbers 13:15, Numbers 21:31,
Numbers 26:14, Numbers 28:30, Numbers 31:43, Deuteronomy 5:13, Ruth 3:5, Ruth
4:22, 1 Samuel 7:15, 1 Kings 4:16, 1 Kings 9:17, 1 Chronicles 1:8, 1 Chronicles
2:11, 1 Chronicles 2:38, 1 Chronicles 3:11, 1 Chronicles 4:28, 1 Chronicles
6:1, 1 Chronicles 6:8, 1 Chronicles 6:12, 1 Chronicles 6:16, 1 Chronicles 6:51,
1 Chronicles 7:38, 1 Chronicles 8:16, 1 Chronicles 8:25, 1 Chronicles 12:35,
Nehemiah 11:27, Job 27:1, Job 29:1, Psalms 25:22, Psalms 108:2, Psalms 119:113,
Psalms 132:3, Proverbs 1:10, Isaiah 10:8, Isaiah 27:2, Jeremiah 22:29, Jeremiah
48:23, Lamentations 3:46, Zechariah 7:4, Matthew 25:2, Mark 3:30, Mark 6:9,
Luke 4:30, Luke 5:38, Luke 21:13, Luke 24:16, John 4:26, Acts 14:7, Acts 16:8,
1 Corinthians 16:21, 1 Corinthians 16:24, Galatians 5:8, Ephesians 4:23, James
1:9, 1 Peter 5:11, Revelation 22:21, Genesis 7:24, Genesis 9:8, Genesis 11:18,
Genesis 11:20, Genesis 21:28, Genesis 30:34, Exodus 13:4, Exodus 15:3, Exodus
19:25, Exodus 20:9, Exodus 35:7, Leviticus 14:55, Leviticus 25:1, Numbers 1:27,
Numbers 1:41, Numbers 7:14, Numbers 7:20, Numbers 7:26, Numbers 7:32, Numbers
7:38, Numbers 7:44, Numbers 7:50, Numbers 7:56, Numbers 7:62, Numbers 7:68,
Numbers 7:74, Numbers 7:80, Deuteronomy 24:2, Joshua 12:12, Joshua 12:13,
Joshua 12:14, Joshua 12:19, Joshua 15:48, 1 Kings 9:14, 2 Kings 21:10, 1
Chronicles 24:12, Job 10:4, Psalms 35:12, Psalms 77:5, Psalms 100:1, Psalms
102:1, Psalms 124:5, Proverbs 24:26, Lamentations 3:50, Lamentations 3:54,
Ezekiel 12:8, Zechariah 8:1, Matthew 3:2, Matthew 8:7, Matthew 20:16, Mark
2:28, Mark 8:37, Mark 10:3, Mark 14:52, Luke 3:6, Luke 15:11, Luke 19:25, Luke
23:21, John 9:1, John 14:15, John 17:17, Romans 3:14, 1 Corinthians 7:6,
Philippians 2:14, Philippians 3:16, Colossians 3:6, 1 Thessalonians 5:28, 1
Peter 3:2, Genesis 6:10, Genesis 11:16, Genesis 26:30, Genesis 26:35, Genesis
31:45, Exodus 25:38, Numbers 1:21, Numbers 1:23, Numbers 26:46, Numbers 33:43,
Deuteronomy 3:29, Deuteronomy 18:13, Joshua 1:10, Joshua 15:25, Joshua 15:61, 1
Kings 3:10, 1 Chronicles 1:54, 1 Chronicles 2:2, 1 Chronicles 2:37, 1
Chronicles 6:26, 1 Chronicles 6:27, 1 Chronicles 7:37, 1 Chronicles 21:9, 1
Chronicles 24:14, Ezra 7:3, Nehemiah 2:11, Job 31:4, Psalms 113:6, Psalms
114:2, Psalms 119:12, Psalms 119:163, Ecclesiastes 4:5, Jeremiah 32:6, Jonah
4:4, Matthew 5:2, Matthew 16:15, Mark 11:19, Mark 13:37, Luke 4:44, Luke 24:53,
John 11:14, John 11:18, John 14:14, John 15:14, Acts 7:1, Acts 18:1, Acts 21:9,
Romans 6:7, Galatians 4:11, Ephesians 2:9, Ephesians 5:10, Philippians 1:21, 2
Timothy 4:22, 1 Peter 2:3, Jude 1:2, Genesis 5:6, Genesis 5:9, Genesis 5:18,
Genesis 6:22, Genesis 7:5, Genesis 9:29, Genesis 10:13, Genesis 10:16, Genesis
11:14, Genesis 11:22, Genesis 11:24, Genesis 17:3, Leviticus 11:18, Numbers
1:31, Numbers 1:33, Numbers 13:8, Numbers 13:12, Numbers 14:26, Numbers 16:6,
Numbers 16:20, Numbers 19:1, Numbers 33:27, Numbers 33:56, Deuteronomy 2:18,
Joshua 11:18, 2 Samuel 23:36, 1 Kings 7:43, 1 Chronicles 1:11, 1 Chronicles
1:14, 1 Chronicles 1:16, 1 Chronicles 2:36, 1 Chronicles 3:12, 1 Chronicles
3:13, 1 Chronicles 6:23, 1 Chronicles 6:45, 1 Chronicles 7:26, 1 Chronicles
12:36, 1 Chronicles 27:31, Nehemiah 10:8, Esther 5:7, Esther 9:9, Psalms
102:27, Psalms 109:8, Psalms 115:2, Psalms 119:68, Proverbs 27:17, Isaiah
14:28, Ezekiel 27:20, Ezekiel 43:1, Zephaniah 2:1, Zephaniah 2:12, Haggai 1:7,
Matthew 10:30, Matthew 14:32, Matthew 20:33, Matthew 22:26, Matthew 22:45,
Matthew 24:13, Matthew 25:4, Matthew 27:36, Mark 8:21, Mark 14:17, Mark 15:3,
Luke 5:28, Luke 18:26, Luke 18:37, Luke 20:4, Luke 20:40, Luke 20:44, Luke
22:5, John 2:21, John 3:9, John 4:30, John 6:20, John 7:29, John 8:15, John
9:38, Acts 13:37, Romans 9:12, 1 Corinthians 9:3, Ephesians 3:14, Colossians
1:8, 1 Thessalonians 4:18, Genesis 5:28, Genesis 25:1, Genesis 34:18, Genesis
36:1, Exodus 6:22, Exodus 21:25, Exodus 28:31, Numbers 1:17, Numbers 1:29,
Numbers 1:35, Numbers 1:37, Numbers 1:43, Numbers 13:5, Numbers 32:34, Numbers
33:13, Numbers 33:21, Numbers 33:28, Deuteronomy 3:23, Deuteronomy 5:2, Joshua
12:15, Joshua 12:17, Joshua 12:18, Joshua 12:24, 1 Samuel 17:56, 2 Samuel 6:4,
2 Samuel 23:26, 1 Kings 7:13, 1 Kings 14:1, 2 Kings 19:5, 1 Chronicles 6:11, 1
Chronicles 6:40, 1 Chronicles 6:52, 1 Chronicles 11:32, 2 Chronicles 30:20,
Esther 8:16, Job 7:18, Job 9:29, Job 34:3, Psalms 34:20, Psalms 48:12, Psalms
63:8, Psalms 72:20, Psalms 130:8, Proverbs 8:15, Proverbs 24:8, Isaiah 28:26,
Isaiah 37:5, Isaiah 57:21, Jeremiah 7:8, Jeremiah 13:3, Jeremiah 16:20,
Lamentations 3:13, Lamentations 3:34, Ezekiel 7:17, Hosea 6:8, Nahum 2:6,
Zechariah 3:6, Matthew 4:20, Matthew 7:10, Matthew 11:6, Matthew 12:9, Matthew
15:35, Matthew 22:1, Matthew 23:2, Mark 14:59, Mark 15:25, Luke 3:10, Luke
5:16, Luke 7:23, John 7:43, John 11:5, John 11:23, John 16:9, Acts 11:3, Acts
11:4, Romans 2:6, Romans 3:10, Galatians 1:21, Galatians 4:10, 1 Thessalonians
2:11, 1 Timothy 2:11, 1 Timothy 4:5, 1 Peter 4:9, Genesis 10:3, Genesis 37:19,
Genesis 41:37, Genesis 50:12, Exodus 6:2, Exodus 22:19, Leviticus 11:17,
Numbers 13:7, Numbers 13:9, Numbers 13:10, Numbers 13:13, Numbers 26:51,
Numbers 33:42, Numbers 33:45, Deuteronomy 6:4, Deuteronomy 28:17, Joshua 12:11,
Joshua 12:16, Joshua 12:21, Judges 11:4, 2 Samuel 23:30, 2 Kings 11:21, 1
Chronicles 1:6, 1 Chronicles 2:39, 1 Chronicles 6:6, 1 Chronicles 6:7, 1
Chronicles 6:9, 1 Chronicles 6:13, 1 Chronicles 8:11, 1 Chronicles 8:35, 1
Chronicles 9:6, 2 Chronicles 4:15, 2 Chronicles 11:19, Nehemiah 11:10, Nehemiah
12:17, Job 16:20, Job 27:9, Job 41:27, Psalms 5:1, Psalms 29:7, Psalms 44:4,
Psalms 52:4, Psalms 76:1, Psalms 84:1, Psalms 106:12, Psalms 107:5, Psalms
119:13, Psalms 119:44, Psalms 120:7, Psalms 126:3, Jeremiah 48:4, Lamentations
3:21, Ezekiel 41:23, Amos 6:9, Zechariah 7:8, Matthew 15:15, Matthew 23:1,
Matthew 24:8, Mark 3:12, Mark 15:37, Luke 8:53, Luke 11:12, Luke 18:21, Luke
24:2, John 1:4, John 1:6, John 3:15, John 6:34, John 8:8, Acts 12:2, Romans
7:22, 1 Corinthians 15:5, 2 Corinthians 11:11, Ephesians 5:1, Ephesians 5:22,
Philippians 4:13, 1 Thessalonians 5:24, 2 Thessalonians 3:18, Hebrews 6:14,
Genesis 36:4, Genesis 44:6, Genesis 46:13, Exodus 17:8, Exodus 23:32, Exodus
29:8, Exodus 40:14, Leviticus 21:19, Numbers 13:6, Numbers 13:14, Numbers
28:21, Numbers 34:21, Deuteronomy 12:4, Deuteronomy 14:16, Deuteronomy 22:10,
Deuteronomy 28:5, Joshua 12:10, Ruth 4:20, 1 Samuel 26:4, 1 Kings 12:22, 1
Kings 22:44, 1 Chronicles 2:43, 1 Chronicles 2:48, 1 Chronicles 4:25, 1
Chronicles 6:18, 1 Chronicles 6:30, 1 Chronicles 8:18, 1 Chronicles 9:41, 1
Chronicles 11:28, 1 Chronicles 11:38, 1 Chronicles 11:43, 1 Chronicles 23:23, 1
Chronicles 29:26, 2 Chronicles 15:1, Ezra 2:67, Esther 8:4, Esther 9:7, Job
5:7, Job 10:6, Job 36:24, Job 38:10, Psalms 31:14, Psalms 65:2, Psalms 71:21,
Psalms 109:9, Psalms 113:5, Psalms 119:60, Psalms 119:137, Psalms 137:4, Psalms
148:9, Proverbs 3:35, Proverbs 6:4, Proverbs 8:5, Proverbs 8:33, Isaiah 43:11,
Jeremiah 15:12, Jeremiah 30:22, Jeremiah 34:12, Jeremiah 46:3, Lamentations
3:10, Lamentations 3:28, Lamentations 3:45, Lamentations 3:49, Ezekiel 16:35,
Ezekiel 27:2, Ezekiel 34:9, Daniel 6:21, Zechariah 14:6, Matthew 9:19, Matthew
25:7, Matthew 26:46, Matthew 27:28, Mark 2:11, Mark 6:44, Mark 14:42, Luke 2:3,
Luke 2:28, Luke 17:5, Luke 20:23, Luke 22:28, John 5:40, John 7:13, John 8:30,
John 8:45, John 9:23, John 9:33, John 18:27, Acts 3:9, Acts 14:28, Acts 23:13,
Romans 3:6, Romans 9:13, 1 Corinthians 3:6, 1 Corinthians 11:8, 1 Corinthians
14:32, 1 Corinthians 14:40, 1 Corinthians 15:7, 1 Corinthians 15:33, 2
Corinthians 3:16, 2 Corinthians 7:16, Ephesians 1:8, Colossians 1:14, Philemon
1:12, Hebrews 7:22, James 1:8, Genesis 5:12, Genesis 5:15, Genesis 10:24,
Genesis 10:26, Genesis 12:9, Genesis 19:23, Genesis 24:57, Genesis 32:1,
Genesis 36:27, Exodus 4:13, Exodus 9:2, Exodus 22:22, Exodus 39:22, Numbers
16:8, Numbers 17:11, Numbers 21:10, Numbers 31:15, Numbers 33:10, Numbers
33:18, Numbers 33:26, Joshua 19:18, 1 Chronicles 1:18, 1 Chronicles 1:20, 1
Chronicles 2:40, 1 Chronicles 2:45, 1 Chronicles 6:2, 1 Chronicles 6:4, 1
Chronicles 6:14, 2 Chronicles 17:18, Job 1:22, Job 5:16, Job 13:2, Job 13:24,
Job 13:25, Psalms 2:1, Psalms 2:11, Psalms 8:7, Psalms 20:9, Psalms 22:3,
Psalms 35:2, Psalms 38:5, Psalms 48:7, Psalms 49:9, Psalms 90:13, Psalms
102:16, Psalms 117:1, Psalms 118:2, Psalms 119:57, Psalms 119:94, Psalms 126:5,
Psalms 135:10, Psalms 147:3, Psalms 148:12, Proverbs 1:17, Proverbs 10:12,
Proverbs 18:23, Ecclesiastes 12:8, Isaiah 48:22, Jeremiah 32:38, Lamentations
3:12, Lamentations 3:41, Ezekiel 34:7, Obadiah 1:6, Zechariah 1:18, Zechariah
8:18, Matthew 10:9, Matthew 22:36, Mark 1:33, Mark 4:9, Luke 4:7, Luke 8:11,
Luke 12:35, Luke 22:57, John 6:4, John 8:36, John 13:28, John 14:18, Acts 20:5,
Romans 11:29, 1 Corinthians 3:21, 1 Corinthians 11:9, 1 Corinthians 12:19, 2
Corinthians 5:3, Philippians 2:18, Colossians 2:9, Colossians 4:14, 2 Timothy
2:3, Titus 2:6, 3 John 1:1, Genesis 5:8, Genesis 5:21, Genesis 23:12, Genesis
27:8, Genesis 37:6, Genesis 46:19, Exodus 6:17, Exodus 8:30, Exodus 10:18,
Exodus 12:1, Exodus 23:3, Exodus 23:14, Leviticus 11:1, Numbers 6:8, Numbers
33:22, Numbers 33:25, Numbers 33:29, Numbers 33:34, Numbers 33:39, Deuteronomy
18:11, Deuteronomy 31:1, Joshua 23:11, 1 Samuel 3:4, 2 Samuel 17:26, 2 Samuel
23:32, 2 Samuel 24:19, 1 Kings 12:29, 2 Kings 1:1, 2 Kings 16:16, 1 Chronicles
1:37, 1 Chronicles 8:21, 1 Chronicles 8:30, 1 Chronicles 12:7, 1 Chronicles
12:25, 1 Chronicles 24:13, 1 Chronicles 24:15, 1 Chronicles 25:11, 2 Chronicles
4:14, 2 Chronicles 4:21, 2 Chronicles 17:15, Ezra 2:25, Nehemiah 7:47, Job 1:2,
Job 9:14, Job 9:21, Job 11:5, Job 12:11, Job 32:7, Psalms 2:6, Psalms 7:10,
Psalms 20:8, Psalms 38:17, Psalms 77:1, Psalms 84:12, Psalms 103:14, Psalms
106:19, Psalms 106:36, Psalms 114:4, Psalms 115:14, Psalms 116:9, Psalms
118:23, Psalms 119:81, Psalms 119:105, Psalms 119:140, Psalms 119:162, Psalms
147:12, Psalms 148:2, Proverbs 1:1, Proverbs 7:11, Proverbs 8:16, Proverbs
26:18, Proverbs 31:13, Isaiah 42:18, Ezekiel 16:2, Ezekiel 24:20, Daniel 10:2,
Daniel 12:12, Jonah 4:1, Micah 3:10, Matthew 9:26, Matthew 12:6, Matthew 21:6,
Matthew 24:16, Mark 1:18, Mark 8:30, Luke 1:75, Luke 2:31, Luke 14:2, Luke
18:12, Luke 19:6, Luke 19:10, Luke 21:2, Luke 22:9, Luke 23:24, John 6:16, John
6:43, John 6:55, John 9:10, John 15:1, John 18:24, John 19:22, Acts 2:16, Acts
13:39, 1 Corinthians 4:18, 1 Corinthians 12:4, 1 Corinthians 12:5, 2
Corinthians 11:19, Ephesians 5:21, Philippians 4:4, Philippians 4:20, 1
Thessalonians 3:8, 2 Thessalonians 3:13, 1 Timothy 6:6, Hebrews 3:9, 2 John
1:11, 3 John 1:14, Genesis 5:11, Genesis 5:14, Genesis 5:20, Genesis 11:12,
Genesis 35:25, Genesis 42:17, Genesis 43:13, Exodus 21:23, Exodus 28:19,
Leviticus 13:14, Numbers 33:30, Numbers 33:41, Deuteronomy 32:12, Deuteronomy
33:6, Joshua 19:28, 1 Samuel 17:14, 1 Kings 4:32, 1 Kings 6:4, 1 Kings 13:15, 1
Kings 22:1, 1 Chronicles 4:24, 1 Chronicles 6:47, 1 Chronicles 7:6, 1
Chronicles 24:7, 1 Chronicles 24:16, 1 Chronicles 24:17, 1 Chronicles 25:10, 1
Chronicles 25:17, Ezra 8:32, Nehemiah 7:29, Job 6:13, Job 6:19, Job 22:15, Job
26:6, Job 28:23, Job 30:29, Job 33:2, Job 36:25, Psalms 4:5, Psalms 6:9, Psalms
22:17, Psalms 25:4, Psalms 44:6, Psalms 48:4, Psalms 69:1, Psalms 87:3, Psalms
102:5, Psalms 115:3, Psalms 119:4, Psalms 119:139, Psalms 121:2, Proverbs 7:17,
Proverbs 24:1, Ecclesiastes 1:12, Song of Solomon 1:17, Jeremiah 37:6, Jeremiah
48:14, Lamentations 3:8, Lamentations 3:23, Lamentations 3:35, Lamentations
3:53, Amos 3:3, Matthew 5:8, Matthew 6:17, Matthew 10:6, Matthew 11:13, Matthew
15:16, Matthew 24:28, Matthew 27:16, Mark 1:36, Mark 6:40, Mark 13:10, Mark
13:23, Mark 15:18, Luke 1:60, Luke 11:35, Luke 12:57, Luke 20:22, John 6:18,
John 7:49, Acts 14:24, Acts 15:37, Acts 21:15, Acts 24:6, Acts 28:12, Romans
1:6, Romans 3:23, 1 Corinthians 13:10, Galatians 2:15, Galatians 4:16,
Galatians 4:26, Galatians 4:28, Ephesians 3:15, Philippians 4:23, Titus 2:1,
Philemon 1:25, Hebrews 10:21, Genesis 1:1, Genesis 1:3, Genesis 5:24, Genesis
5:25, Genesis 5:31, Genesis 10:12, Genesis 11:1, Genesis 15:19, Genesis 30:21,
Genesis 31:17, Genesis 33:20, Genesis 36:36, Genesis 46:24, Genesis 48:8,
Genesis 49:21, Exodus 14:6, Exodus 20:16, Exodus 21:1, Exodus 34:17, Exodus
39:12, Leviticus 7:1, Leviticus 13:35, Numbers 11:30, Numbers 33:20, Numbers
33:35, Joshua 2:8, Joshua 4:2, Joshua 19:25, 2 Samuel 7:4, 1 Kings 7:44, 1
Chronicles 1:47, 1 Chronicles 4:16, 1 Chronicles 6:38, 1 Chronicles 7:36, 1
Chronicles 8:27, 1 Chronicles 14:13, 1 Chronicles 17:3, 1 Chronicles 24:21, 1
Chronicles 24:24, 1 Chronicles 25:13, 1 Chronicles 27:17, 2 Chronicles 4:10,
Ezra 2:44, Ezra 2:49, Esther 4:9, Job 18:9, Job 18:16, Job 24:2, Job 26:5, Job
29:20, Job 33:11, Job 34:7, Job 41:33, Psalms 26:2, Psalms 38:21, Psalms 39:7,
Psalms 47:3, Psalms 50:2, Psalms 50:13, Psalms 66:2, Psalms 99:3, Psalms 102:7,
Psalms 109:5, Psalms 116:10, Psalms 119:97, Psalms 119:164, Psalms 119:167,
Psalms 120:1, Psalms 126:4, Psalms 134:2, Proverbs 11:16, Proverbs 30:27, Song
of Solomon 7:3, Jeremiah 43:8, Jeremiah 49:25, Lamentations 3:27, Ezekiel 3:2,
Ezekiel 18:5, Daniel 1:21, Daniel 5:30, Hosea 8:3, Joel 2:6, Malachi 1:1,
Matthew 5:5, Matthew 5:7, Matthew 18:5, Matthew 19:2, Matthew 19:30, Matthew
20:27, Matthew 24:11, Matthew 27:39, Mark 1:43, Mark 5:17, Luke 6:28, Luke
19:41, Luke 23:52, Luke 24:45, John 5:8, John 5:33, John 11:29, John 11:53,
John 12:39, Acts 4:20, Acts 9:23, Romans 12:21, Romans 16:22, 1 Corinthians
10:26, 1 Corinthians 12:14, 1 Corinthians 14:38, Galatians 1:20, Colossians
1:19, Colossians 4:4, 1 Thessalonians 4:7, Philemon 1:4, Hebrews 3:11, Hebrews
11:2, 1 Peter 1:16, 1 John 3:13, Genesis 7:12, Genesis 30:19, Genesis 36:3,
Genesis 43:10, Genesis 46:9, Exodus 10:29, Exodus 28:18, Leviticus 24:17,
Numbers 26:22, Numbers 31:53, Numbers 33:19, Numbers 33:31, Deuteronomy 4:24,
Deuteronomy 14:17, Deuteronomy 14:18, Joshua 15:57, Joshua 21:15, 2 Samuel
22:24, 2 Kings 20:16, 1 Chronicles 3:17, 1 Chronicles 4:1, 1 Chronicles 6:58, 1
Chronicles 11:30, 1 Chronicles 15:23, 2 Chronicles 9:30, 2 Chronicles 11:2,
Nehemiah 7:49, Nehemiah 7:51, Esther 7:1, Job 6:16, Job 9:30, Job 12:19, Job
21:24, Job 30:9, Job 36:28, Job 38:1, Job 38:6, Job 40:6, Psalms 3:1, Psalms
30:8, Psalms 47:8, Psalms 54:2, Psalms 73:21, Psalms 74:5, Psalms 75:2, Psalms
77:13, Psalms 82:6, Psalms 115:4, Psalms 115:5, Psalms 115:6, Psalms 116:5,
Psalms 119:8, Psalms 119:47, Psalms 122:3, Psalms 128:4, Psalms 144:4, Proverbs
1:14, Proverbs 4:2, Proverbs 4:15, Proverbs 22:25, Proverbs 23:15, Proverbs
29:8, Ecclesiastes 2:25, Isaiah 12:3, Isaiah 23:6, Jeremiah 5:20, Jeremiah
5:30, Jeremiah 13:15, Jeremiah 45:2, Lamentations 3:29, Lamentations 3:40,
Ezekiel 1:6, Ezekiel 11:4, Ezekiel 19:1, Daniel 6:9, Matthew 25:17, Matthew
25:39, Mark 1:12, Mark 9:6, Mark 10:31, Mark 10:36, Mark 14:39, Luke 1:73, Luke
3:20, Luke 8:9, Luke 17:30, Luke 18:6, Luke 19:19, John 2:2, John 7:46, John
10:14, John 13:17, John 17:16, Acts 2:13, Romans 6:2, Romans 8:14, Romans
11:35, Romans 12:15, 1 Corinthians 1:15, 1 Corinthians 11:31, 1 Corinthians
14:18, 2 Corinthians 3:8, Galatians 5:25, Colossians 3:19, 2 Thessalonians
3:15, Hebrews 13:8, James 4:10, James 5:2, 1 Peter 3:19, 1 John 2:25, Genesis
10:4, Genesis 10:22, Genesis 11:32, Genesis 19:7, Genesis 41:20, Genesis 49:19,
Exodus 7:25, Exodus 39:11, Exodus 40:28, Leviticus 11:19, Numbers 21:12,
Numbers 26:60, Numbers 33:24, Deuteronomy 1:29, Deuteronomy 19:7, Deuteronomy
22:11, Joshua 12:20, Judges 5:29, 1 Chronicles 1:7, 1 Chronicles 1:35, 1
Chronicles 2:19, 1 Chronicles 2:41, 1 Chronicles 6:20, 1 Chronicles 6:28, 1
Chronicles 6:34, 1 Chronicles 6:35, 1 Chronicles 7:19, 1 Chronicles 9:5, 1
Chronicles 24:18, 1 Chronicles 25:12, 1 Chronicles 25:15, 1 Chronicles 25:16, 1
Chronicles 25:18, 1 Chronicles 26:9, 2 Chronicles 24:4, Ezra 2:46, Ezra 2:47,
Ezra 2:48, Ezra 2:53, Nehemiah 7:50, Nehemiah 7:55, Nehemiah 7:58, Job 5:10,
Job 7:14, Job 20:13, Job 21:2, Job 21:26, Job 41:22, Job 41:24, Job 42:6,
Psalms 16:5, Psalms 34:14, Psalms 37:31, Psalms 50:17, Psalms 55:5, Psalms
72:11, Psalms 73:22, Psalms 88:2, Psalms 90:1, Psalms 94:1, Psalms 94:5, Psalms
102:9, Psalms 105:26, Psalms 114:6, Psalms 115:15, Psalms 119:5, Psalms 119:89,
Psalms 119:100, Psalms 119:147, Psalms 129:4, Psalms 129:5, Psalms 130:4,
Psalms 132:4, Psalms 139:22, Psalms 147:16, Proverbs 1:30, Proverbs 6:6,
Proverbs 6:21, Proverbs 6:28, Proverbs 7:14, Proverbs 9:5, Proverbs 16:26,
Proverbs 23:3, Proverbs 23:20, Proverbs 30:7, Proverbs 31:12, Song of Solomon
2:11, Isaiah 35:3, Isaiah 44:27, Jeremiah 50:22, Lamentations 5:18, Ezekiel
22:8, Ezekiel 44:21, Hosea 12:5, Habakkuk 3:1, Zechariah 6:2, Matthew 5:4,
Matthew 6:13, Matthew 6:21, Matthew 8:23, Matthew 10:4, Matthew 10:36, Matthew
12:17, Matthew 25:12, Matthew 26:20, Mark 3:33, Mark 6:12, Mark 9:16, Mark
10:44, Luke 1:70, Luke 4:15, Luke 12:34, Luke 18:36, Luke 18:38, John 4:16,
John 7:47, John 9:12, John 19:8, Romans 2:23, Romans 14:12, 1 Corinthians 1:29,
1 Corinthians 7:23, 2 Corinthians 2:6, 2 Corinthians 6:13, 2 Corinthians 11:18,
2 Corinthians 13:6, Galatians 3:20, Galatians 5:12, Colossians 3:18, 1 Timothy
1:8, 2 Timothy 4:19, Hebrews 11:20, Genesis 1:13, Genesis 1:23, Genesis 5:17,
Genesis 17:26, Genesis 24:66, Genesis 27:24, Genesis 44:25, Genesis 46:33,
Genesis 49:16, Exodus 1:13, Exodus 1:21, Exodus 21:24, Exodus 36:27, Exodus
39:35, Leviticus 13:18, Leviticus 16:25, Numbers 21:19, Numbers 25:12, Numbers
31:38, Deuteronomy 4:44, Deuteronomy 11:26, Deuteronomy 15:1, Deuteronomy
24:12, Joshua 3:2, Judges 5:1, Judges 8:29, Judges 11:14, 2 Samuel 22:33, 2
Samuel 23:33, 1 Kings 3:16, 1 Chronicles 1:31, 1 Chronicles 1:34, 1 Chronicles
3:23, 1 Chronicles 6:37, 1 Chronicles 7:34, 1 Chronicles 16:14, 1 Chronicles
23:12, 1 Chronicles 23:20, 2 Chronicles 30:4, Ezra 2:56, Nehemiah 5:6, Job 8:5,
Job 8:14, Job 10:14, Job 12:2, Job 13:5, Job 13:10, Job 21:27, Job 23:16, Job
27:23, Job 32:18, Job 36:31, Job 37:1, Job 40:18, Psalms 10:10, Psalms 18:47,
Psalms 30:10, Psalms 33:20, Psalms 37:5, Psalms 51:3, Psalms 67:7, Psalms
71:12, Psalms 76:4, Psalms 77:7, Psalms 79:7, Psalms 81:4, Psalms 86:3, Psalms
87:7, Psalms 103:2, Psalms 105:7, Psalms 116:12, Psalms 118:25, Psalms 119:114,
Psalms 119:141, Psalms 120:6, Psalms 121:4, Psalms 121:6, Psalms 122:2, Psalms
128:6, Psalms 130:5, Psalms 148:10, Proverbs 9:1, Proverbs 29:5, Song of
Solomon 1:9, Isaiah 2:15, Jeremiah 6:5, Jeremiah 18:19, Lamentations 3:6,
Lamentations 3:36, Lamentations 3:55, Lamentations 3:59, Lamentations 5:10,
Lamentations 5:11, Ezekiel 13:4, Hosea 1:8, Joel 1:1, Matthew 2:17, Matthew
15:25, Matthew 18:2, Matthew 24:4, Matthew 24:20, Matthew 25:13, Matthew 26:32,
Matthew 26:66, Matthew 28:17, Mark 3:3, Mark 5:11, Mark 10:50, Mark 14:28, Luke
6:31, Luke 19:36, Luke 20:7, Luke 23:9, Luke 23:20, John 1:11, John 3:7, John
5:42, John 9:5, John 10:2, Acts 2:32, Acts 8:4, Acts 10:13, Acts 10:40, Acts
27:36, Romans 9:2, Romans 12:14, Romans 14:16, Romans 16:3, 1 Corinthians
10:24, 1 Corinthians 15:56, Galatians 3:26, Ephesians 5:16, Ephesians 6:1,
Colossians 3:7, 1 Thessalonians 1:4, 1 Timothy 4:9, 1 Timothy 5:6, 1 Peter
2:22, Genesis 1:19, Genesis 3:4, Genesis 5:27, Genesis 24:39, Genesis 31:22,
Genesis 31:47, Genesis 36:8, Genesis 38:3, Genesis 42:3, Exodus 15:12, Exodus
17:13, Exodus 22:28, Exodus 37:4, Exodus 38:16, Leviticus 4:19, Leviticus 6:29,
Leviticus 13:29, Numbers 26:25, Numbers 31:39, Numbers 32:37, Numbers 33:33,
Numbers 36:10, Deuteronomy 28:34, Joshua 12:22, Joshua 13:20, Joshua 15:51, 1
Samuel 8:1, 1 Samuel 10:13, 1 Samuel 10:17, 1 Samuel 19:19, 1 Samuel 25:38, 2
Samuel 22:13, 1 Kings 14:30, 1 Chronicles 7:1, 1 Chronicles 7:18, 1 Chronicles
11:35, 1 Chronicles 11:45, 1 Chronicles 25:19, 1 Chronicles 26:3, 2 Chronicles
28:16, Ezra 2:45, Ezra 2:50, Ezra 2:51, Ezra 2:52, Nehemiah 7:48, Nehemiah
7:53, Nehemiah 7:54, Job 4:15, Job 10:10, Job 13:6, Job 15:26, Job 21:23, Job
33:1, Job 34:16, Job 41:16, Psalms 6:3, Psalms 18:23, Psalms 22:12, Psalms
37:27, Psalms 51:9, Psalms 51:15, Psalms 64:7, Psalms 73:1, Psalms 78:68,
Psalms 78:70, Psalms 84:9, Psalms 85:3, Psalms 86:6, Psalms 86:7, Psalms 86:10,
Psalms 89:31, Psalms 90:3, Psalms 92:6, Psalms 94:4, Psalms 103:3, Psalms
104:4, Psalms 104:23, Psalms 109:22, Psalms 119:29, Psalms 119:59, Psalms
119:102, Psalms 119:146, Psalms 119:175, Psalms 122:7, Psalms 139:5, Psalms
148:3, Proverbs 8:20, Proverbs 9:13, Proverbs 20:18, Proverbs 22:28, Proverbs
23:2, Proverbs 23:18, Proverbs 23:19, Proverbs 23:32, Proverbs 31:17, Song of
Solomon 1:11, Isaiah 3:22, Isaiah 3:23, Isaiah 7:21, Isaiah 8:16, Isaiah 28:8,
Jeremiah 25:23, Jeremiah 31:26, Jeremiah 38:8, Lamentations 3:57, Ezekiel
23:13, Daniel 3:9, Haggai 2:11, Zechariah 5:1, Matthew 20:29, Matthew 22:35,
Matthew 26:16, Mark 1:1, Mark 1:42, Mark 11:30, Mark 15:5, Luke 1:23, Luke
9:30, Luke 12:23, Luke 13:10, Luke 17:9, Luke 22:29, John 1:44, John 2:5, John
4:8, John 6:49, John 7:24, John 10:26, John 10:27, Acts 10:26, Acts 16:2,
Romans 4:22, 1 Corinthians 1:6, Galatians 5:18, Ephesians 1:23, Ephesians 5:15,
Philippians 2:29, 2 Timothy 4:15, Hebrews 4:9, James 2:17, 1 Peter 5:7,
Revelation 14:5, Genesis 10:29, Genesis 13:2, Genesis 22:21, Genesis 25:7,
Genesis 31:6, Genesis 42:26, Exodus 6:28, Exodus 8:14, Exodus 14:14, Exodus
21:12, Exodus 36:28, Exodus 37:24, Leviticus 1:6, Leviticus 14:54, Numbers
6:26, Numbers 12:7, Numbers 14:20, Numbers 16:43, Numbers 22:39, Numbers 33:23,
Deuteronomy 1:34, Deuteronomy 5:20, Deuteronomy 22:18, Deuteronomy 25:12,
Deuteronomy 32:40, Joshua 4:17, Joshua 19:2, Joshua 21:14, Joshua 24:28, Judges
9:12, 2 Samuel 13:21, 2 Samuel 20:25, 2 Samuel 22:29, 1 Kings 21:28, 1
Chronicles 1:23, 1 Chronicles 4:5, 1 Chronicles 6:21, 1 Chronicles 6:73, 1
Chronicles 6:75, 1 Chronicles 11:34, 1 Chronicles 16:22, 1 Chronicles 21:7, 1
Chronicles 25:14, 1 Chronicles 29:13, 2 Chronicles 29:33, Job 3:7, Job 6:12,
Job 7:12, Job 12:12, Job 12:17, Job 13:7, Job 21:32, Job 22:25, Job 38:2, Job
38:28, Job 41:2, Psalms 8:9, Psalms 11:3, Psalms 30:6, Psalms 48:3, Psalms
49:8, Psalms 54:1, Psalms 56:11, Psalms 69:11, Psalms 78:11, Psalms 80:3,
Psalms 83:6, Psalms 83:10, Psalms 91:16, Psalms 95:3, Psalms 97:3, Psalms 99:5,
Psalms 102:11, Psalms 103:9, Psalms 104:27, Psalms 105:15, Psalms 105:34,
Psalms 105:42, Psalms 106:34, Psalms 106:37, Psalms 107:37, Psalms 116:15,
Psalms 118:8, Psalms 119:20, Psalms 119:38, Psalms 119:39, Psalms 119:55,
Psalms 119:70, Psalms 119:126, Psalms 119:129, Psalms 119:151, Psalms 120:2,
Psalms 121:1, Psalms 121:7, Psalms 147:15, Psalms 150:3, Proverbs 2:11,
Proverbs 7:19, Proverbs 8:1, Proverbs 8:4, Proverbs 24:10, Proverbs 26:14,
Proverbs 31:29, Ecclesiastes 8:2, Song of Solomon 2:16, Isaiah 2:5, Isaiah
18:1, Isaiah 23:14, Isaiah 44:1, Jeremiah 5:2, Jeremiah 8:18, Jeremiah 10:1,
Jeremiah 42:7, Lamentations 3:2, Lamentations 3:20, Ezekiel 42:18, Ezekiel
45:10, Daniel 2:33, Habakkuk 3:5, Matthew 4:2, Matthew 20:11, Matthew 26:72,
Mark 7:20, Mark 9:48, Mark 11:6, Mark 12:11, Mark 14:57, Luke 1:40, Luke 2:50,
Luke 6:5, Luke 6:46, Luke 8:54, Luke 11:25, Luke 14:30, Luke 22:65, Luke 23:37,
Luke 23:54, John 1:16, John 4:37, John 7:48, John 9:36, John 12:30, John 13:13,
John 14:25, Acts 5:18, Acts 7:28, Acts 10:8, Acts 18:20, Acts 19:41, Romans
4:21, Romans 15:10, 1 Corinthians 4:20, 1 Corinthians 6:8, 1 Corinthians 6:17,
1 Corinthians 10:2, 1 Corinthians 10:32, 1 Corinthians 11:30, 1 Corinthians
15:8, 2 Corinthians 4:9, Galatians 6:2, Philippians 1:24, Philippians 2:21,
Philippians 2:24, Philippians 4:2, Colossians 2:3, 2 Timothy 1:11, Hebrews
3:19, Revelation 9:12, Genesis 2:25, Genesis 5:5, Genesis 9:4, Genesis 9:20,
Genesis 27:2, Genesis 32:27, Genesis 34:31, Genesis 36:11, Genesis 38:27,
Genesis 49:12, Exodus 29:45, Leviticus 22:31, Numbers 12:13, Numbers 20:25,
Numbers 21:17, Numbers 22:9, Numbers 26:34, Numbers 33:32, Deuteronomy 22:13,
Deuteronomy 23:22, Deuteronomy 25:4, Deuteronomy 29:14, Joshua 6:27, Joshua
15:44, Joshua 19:30, Ruth 4:18, 1 Samuel 9:15, 1 Samuel 17:29, 1 Samuel 30:27,
2 Samuel 1:27, 2 Samuel 11:18, 2 Samuel 13:38, 1 Kings 2:18, 1 Kings 9:18, 1
Kings 21:17, 1 Chronicles 2:30, 1 Chronicles 3:18, 1 Chronicles 4:35, 1
Chronicles 6:36, 1 Chronicles 7:32, 1 Chronicles 9:36, 1 Chronicles 15:4, 1
Chronicles 16:11, 1 Chronicles 24:22, 1 Chronicles 24:27, 1 Chronicles 25:20, 2
Chronicles 24:3, Ezra 2:36, Ezra 8:14, Nehemiah 10:10, Nehemiah 12:32, Job
3:22, Job 5:2, Job 11:9, Job 15:17, Job 17:13, Job 18:3, Job 21:5, Job 21:6,
Job 22:5, Job 26:11, Job 33:33, Job 34:15, Job 34:35, Job 36:20, Job 37:8, Job
39:29, Job 40:24, Psalms 3:5, Psalms 25:21, Psalms 26:6, Psalms 34:13, Psalms
54:4, Psalms 56:10, Psalms 61:3, Psalms 70:3, Psalms 71:5, Psalms 85:13, Psalms
92:5, Psalms 95:11, Psalms 99:2, Psalms 103:21, Psalms 105:4, Psalms 105:23,
Psalms 106:35, Psalms 113:8, Psalms 119:15, Psalms 119:24, Psalms 119:35,
Psalms 119:36, Psalms 119:142, Psalms 119:166, Psalms 119:174, Psalms 128:1,
Psalms 132:2, Psalms 148:8, Proverbs 1:16, Proverbs 4:26, Proverbs 5:5,
Proverbs 6:14, Proverbs 18:9, Proverbs 20:26, Proverbs 23:4, Proverbs 23:16,
Proverbs 23:26, Proverbs 30:24, Song of Solomon 2:2, Song of Solomon 3:9, Song
of Solomon 6:7, Isaiah 1:22, Isaiah 22:20, Lamentations 3:42, Lamentations
3:56, Lamentations 3:60, Ezekiel 3:16, Ezekiel 27:28, Hosea 13:12, Zephaniah
3:1, Matthew 10:31, Matthew 14:1, Matthew 15:7, Matthew 23:24, Matthew 24:47,
Matthew 26:6, Mark 10:9, Mark 12:3, Luke 1:54, Luke 2:5, Luke 2:18, Luke 10:5,
Luke 11:54, Luke 12:44, Luke 20:45, John 1:37, John 4:31, John 6:47, John 6:67,
John 8:32, John 15:17, Acts 8:2, Acts 9:43, Acts 11:7, Acts 19:11, Acts 23:4,
Acts 24:3, Romans 5:4, 1 Corinthians 2:3, 1 Corinthians 6:20, 1 Corinthians
12:27, 1 Corinthians 16:13, 2 Corinthians 3:4, 2 Corinthians 10:9, Galatians
5:23, Ephesians 5:13, Colossians 3:3, 1 Timothy 4:2, Hebrews 10:3, 1 John 5:8,
Revelation 6:17, Revelation 16:20, Genesis 19:36, Genesis 21:34, Genesis 23:7,
Genesis 25:2, Genesis 39:16, Genesis 41:47, Genesis 49:14, Exodus 1:6, Exodus
1:8, Exodus 21:17, Exodus 23:10, Exodus 25:13, Exodus 38:6, Exodus 39:36,
Exodus 40:26, Leviticus 9:11, Leviticus 11:16, Leviticus 11:20, Leviticus 20:8,
Leviticus 25:43, Numbers 3:14, Numbers 14:32, Numbers 24:5, Numbers 33:17,
Numbers 33:46, Deuteronomy 4:4, Deuteronomy 14:4, Deuteronomy 14:15,
Deuteronomy 19:16, Joshua 18:24, Joshua 19:7, Joshua 19:46, Judges 2:13, 2
Samuel 22:2, 2 Samuel 23:2, 1 Kings 3:19, 1 Chronicles 5:19, 1 Chronicles 6:81,
1 Chronicles 7:31, 1 Chronicles 7:35, 1 Chronicles 12:5, 1 Chronicles 12:6, 1
Chronicles 12:27, 1 Chronicles 21:25, 1 Chronicles 24:26, 2 Chronicles 12:14,
Ezra 1:10, Ezra 4:18, Nehemiah 7:52, Job 3:11, Job 9:6, Job 9:18, Job 14:1, Job
15:12, Job 15:18, Job 18:11, Job 28:6, Job 29:8, Job 29:21, Job 33:16, Job
34:2, Job 34:26, Job 36:22, Job 37:14, Job 38:40, Job 39:23, Job 41:14, Job
41:19, Psalms 25:11, Psalms 25:18, Psalms 30:2, Psalms 37:29, Psalms 46:1,
Psalms 49:1, Psalms 57:8, Psalms 66:8, Psalms 66:17, Psalms 71:1, Psalms 71:7,
Psalms 75:5, Psalms 77:4, Psalms 77:12, Psalms 97:4, Psalms 104:22, Psalms
105:21, Psalms 105:29, Psalms 106:46, Psalms 107:24, Psalms 115:9, Psalms
118:6, Psalms 119:52, Psalms 119:54, Psalms 119:67, Psalms 119:127, Psalms
119:131, Psalms 119:134, Psalms 119:170, Psalms 119:171, Psalms 120:4, Psalms
124:8, Psalms 129:3, Psalms 134:3, Psalms 136:20, Proverbs 1:2, Proverbs 2:15,
Proverbs 3:8, Proverbs 3:17, Proverbs 5:14, Proverbs 5:17, Proverbs 7:1,
Proverbs 9:17, Proverbs 23:27, Proverbs 23:30, Proverbs 31:1, Ecclesiastes 1:1,
Ecclesiastes 11:7, Song of Solomon 2:6, Song of Solomon 4:7, Song of Solomon
8:3, Isaiah 3:25, Isaiah 10:21, Isaiah 13:1, Jeremiah 23:23, Jeremiah 48:3,
Lamentations 3:17, Lamentations 3:58, Lamentations 5:14, Ezekiel 16:32, Ezekiel
19:13, Ezekiel 23:2, Ezekiel 28:3, Ezekiel 44:26, Daniel 5:27, Hosea 13:11,
Zechariah 2:7, Matthew 5:41, Matthew 6:12, Matthew 8:1, Matthew 8:30, Matthew
13:37, Matthew 14:17, Matthew 17:11, Matthew 22:19, Matthew 22:40, Matthew
27:59, Mark 2:3, Mark 9:27, Luke 2:6, Luke 13:20, Luke 18:28, Luke 20:3, Luke
24:34, John 1:8, John 1:35, John 4:19, John 6:6, John 6:36, John 7:21, John
12:33, John 16:11, Acts 8:29, Acts 11:27, Acts 19:14, Acts 20:8, Acts 21:17,
Romans 1:15, Romans 10:13, Romans 11:5, 1 Corinthians 6:14, 1 Corinthians 7:20,
1 Corinthians 9:26, 1 Corinthians 10:15, 1 Corinthians 10:22, 1 Corinthians
13:6, 1 Corinthians 15:18, 1 Corinthians 15:55, 2 Corinthians 2:1, Galatians
3:25, Galatians 5:7, Ephesians 4:3, Hebrews 10:15, Hebrews 10:31, 1 John 4:11,
Revelation 2:15, Revelation 21:26, Genesis 16:16, Genesis 17:22, Genesis 18:17,
Genesis 40:23, Genesis 42:14, Genesis 43:20, Exodus 12:40, Exodus 21:15, Exodus
31:4, Exodus 34:8, Leviticus 8:6, Numbers 6:25, Numbers 13:25, Numbers 35:13,
Deuteronomy 1:32, Deuteronomy 4:41, Deuteronomy 6:6, Deuteronomy 30:15, Joshua
19:6, Joshua 24:21, Judges 12:13, 1 Samuel 2:7, 1 Samuel 10:15, 1 Samuel 25:4,
2 Samuel 22:48, 1 Kings 4:8, 1 Kings 4:9, 1 Kings 18:11, 1 Kings 21:12, 1
Chronicles 1:39, 1 Chronicles 3:20, 1 Chronicles 5:4, 1 Chronicles 6:68, 1
Chronicles 15:9, 1 Chronicles 25:25, Job 3:1, Job 5:18, Job 12:21, Job 14:4,
Job 14:11, Job 16:16, Job 19:2, Job 19:14, Job 20:2, Job 20:4, Job 21:7, Job
21:9, Job 22:21, Job 23:4, Job 30:14, Job 31:24, Job 32:10, Job 33:31, Job
34:8, Job 41:3, Psalms 17:5, Psalms 18:16, Psalms 18:32, Psalms 20:4, Psalms
22:28, Psalms 25:16, Psalms 27:7, Psalms 33:21, Psalms 47:7, Psalms 51:2,
Psalms 68:14, Psalms 69:25, Psalms 70:1, Psalms 73:23, Psalms 77:20, Psalms
78:23, Psalms 80:11, Psalms 82:7, Psalms 88:1, Psalms 88:16, Psalms 89:22,
Psalms 89:25, Psalms 94:11, Psalms 96:1, Psalms 102:22, Psalms 104:34, Psalms
109:27, Psalms 118:14, Psalms 118:22, Psalms 119:18, Psalms 119:25, Psalms
119:26, Psalms 119:31, Psalms 130:3, Psalms 131:3, Psalms 136:18, Psalms 140:1,
Psalms 141:10, Psalms 145:17, Psalms 147:2, Psalms 147:6, Psalms 147:19, Psalms
150:6, Proverbs 3:22, Proverbs 3:31, Proverbs 5:2, Proverbs 8:18, Proverbs
8:35, Proverbs 15:1, Proverbs 15:22, Proverbs 16:31, Proverbs 18:16, Proverbs
20:12, Proverbs 21:4, Proverbs 24:32, Proverbs 30:3, Proverbs 30:18, Isaiah
10:31, Isaiah 14:18, Isaiah 28:23, Isaiah 30:4, Isaiah 43:15, Isaiah 43:18,
Jeremiah 5:16, Jeremiah 13:5, Jeremiah 17:17, Jeremiah 48:6, Lamentations 3:1,
Lamentations 3:15, Lamentations 3:33, Lamentations 5:3, Ezekiel 11:25, Hosea
4:11, Hosea 13:5, Jonah 3:1, Haggai 1:5, Matthew 13:51, Matthew 14:34, Matthew
25:5, Matthew 26:67, Matthew 26:68, Mark 1:25, Mark 3:16, Mark 5:10, Mark
14:29, Luke 9:2, Luke 9:4, Luke 9:40, Luke 11:40, Luke 17:17, Luke 18:27, Luke
19:45, Luke 21:22, Luke 23:6, Luke 24:52, John 3:35, John 4:49, John 5:22, John
5:46, John 7:44, John 8:17, John 12:10, John 13:22, Acts 2:44, Acts 5:33, Acts
7:15, Acts 13:18, Acts 13:52, Acts 21:36, Acts 24:13, Acts 28:24, Romans 14:7,
1 Corinthians 15:11, 1 Corinthians 15:16, Galatians 1:2, Galatians 3:4,
Galatians 3:7, Ephesians 2:18, Ephesians 6:10, Philippians 2:5, Colossians
3:23, 1 Timothy 2:3, 1 Timothy 3:9, 1 Timothy 6:8, Titus 3:6, Philemon 1:24,
Hebrews 6:15, Hebrews 10:6, 1 John 1:4, 1 John 4:8, Revelation 9:8, Revelation
22:4, Genesis 4:13, Genesis 7:10, Genesis 13:13, Genesis 15:21, Genesis 17:18,
Genesis 19:6, Genesis 23:1, Genesis 27:44, Genesis 31:2, Genesis 36:26, Genesis
38:4, Genesis 40:22, Genesis 42:31, Genesis 49:20, Exodus 7:6, Exodus 26:15,
Exodus 26:28, Exodus 37:28, Exodus 40:11, Leviticus 22:28, Leviticus 24:18,
Leviticus 27:4, Numbers 4:40, Numbers 5:16, Numbers 26:16, Numbers 28:16,
Numbers 28:22, Numbers 29:5, Numbers 31:31, Numbers 34:20, Deuteronomy 16:22,
Deuteronomy 32:31, Deuteronomy 32:33, Deuteronomy 33:22, Joshua 9:2, Joshua
10:16, Joshua 15:59, Judges 9:10, Judges 15:20, Judges 20:44, 1 Samuel 1:12, 1
Samuel 8:13, 1 Samuel 15:31, 1 Samuel 18:24, 1 Samuel 30:31, 2 Samuel 22:17, 2
Samuel 22:32, 2 Samuel 22:46, 2 Kings 14:12, 2 Kings 25:2, 1 Chronicles 3:16, 1
Chronicles 4:36, 1 Chronicles 5:12, 1 Chronicles 6:17, 1 Chronicles 6:24, 1
Chronicles 6:69, 1 Chronicles 8:9, 1 Chronicles 15:5, 1 Chronicles 15:7, 1
Chronicles 16:9, 1 Chronicles 23:8, 1 Chronicles 24:25, 1 Chronicles 25:21, 1
Chronicles 25:22, 1 Chronicles 25:23, 1 Chronicles 25:27, 2 Chronicles 2:13, 2
Chronicles 25:22, Nehemiah 3:22, Nehemiah 7:62, Nehemiah 10:14, Nehemiah 12:11,
Esther 9:6, Job 4:14, Job 5:8, Job 7:15, Job 8:3, Job 10:5, Job 11:4, Job
12:13, Job 16:2, Job 16:17, Job 18:6, Job 19:18, Job 21:3, Job 32:17, Job
33:10, Job 34:18, Job 38:38, Job 41:21, Psalms 18:45, Psalms 22:4, Psalms 33:9,
Psalms 33:13, Psalms 34:3, Psalms 35:9, Psalms 35:22, Psalms 40:8, Psalms
40:13, Psalms 52:6, Psalms 55:13, Psalms 67:6, Psalms 69:18, Psalms 76:6,
Psalms 78:18, Psalms 81:2, Psalms 85:7, Psalms 86:1, Psalms 88:3, Psalms 89:13,
Psalms 90:12, Psalms 92:3, Psalms 93:2, Psalms 94:6, Psalms 102:14, Psalms
102:23, Psalms 104:21, Psalms 105:2, Psalms 105:17, Psalms 106:30, Psalms
107:29, Psalms 109:3, Psalms 109:26, Psalms 116:14, Psalms 116:18, Psalms
118:3, Psalms 118:9, Psalms 118:13, Psalms 119:82, Psalms 123:1, Psalms 124:6,
Psalms 132:1, Psalms 133:1, Psalms 137:5, Psalms 139:23, Psalms 140:2, Psalms
142:2, Psalms 145:2, Psalms 145:16, Proverbs 2:18, Proverbs 4:20, Proverbs
4:21, Proverbs 6:8, Proverbs 6:12, Proverbs 6:17, Proverbs 7:20, Proverbs 8:14,
Proverbs 14:23, Proverbs 16:3, Proverbs 17:17, Proverbs 18:6, Proverbs 18:7,
Proverbs 20:9, Proverbs 23:25, Proverbs 24:2, Ecclesiastes 7:22, Isaiah 14:15,
Isaiah 16:13, Isaiah 24:7, Isaiah 32:12, Isaiah 38:2, Isaiah 41:6, Jeremiah
6:30, Jeremiah 8:20, Jeremiah 13:24, Jeremiah 14:11, Jeremiah 52:5,
Lamentations 3:5, Lamentations 3:16, Lamentations 3:38, Lamentations 3:47,
Lamentations 3:61, Lamentations 3:65, Lamentations 5:8, Ezekiel 28:21, Amos
5:4, Jonah 2:1, Haggai 1:3, Zechariah 11:1, Matthew 2:10, Matthew 4:14, Matthew
4:22, Matthew 9:1, Matthew 9:31, Matthew 11:4, Matthew 11:14, Matthew 13:1,
Matthew 15:1, Matthew 15:38, Matthew 22:20, Matthew 24:35, Matthew 28:4, Mark
5:6, Mark 6:32, Mark 8:9, Mark 10:10, Mark 11:12, Mark 12:22, Mark 13:31, Luke
5:32, Luke 7:18, Luke 8:31, Luke 10:26, Luke 12:31, Luke 14:25, Luke 15:5, Luke
20:12, Luke 21:33, Luke 24:40, John 4:2, John 5:3, John 5:5, John 6:8, John
10:19, John 10:23, John 10:37, John 10:39, John 17:7, Romans 4:8, Romans 7:10,
Romans 12:7, Romans 12:11, Romans 15:2, 1 Corinthians 1:14, 1 Corinthians 5:13,
1 Corinthians 11:20, 2 Corinthians 6:5, 2 Corinthians 12:4, Galatians 6:11,
Ephesians 6:7, Philippians 4:22, Colossians 1:17, Colossians 2:6, 1
Thessalonians 4:5, Titus 2:4, James 4:16, 1 Peter 1:9, 1 Peter 3:13, Revelation
11:14, Genesis 13:5, Genesis 23:3, Genesis 25:32, Genesis 35:21, Genesis 36:38,
Exodus 18:17, Exodus 25:8, Exodus 35:32, Exodus 36:20, Exodus 38:29, Leviticus
3:12, Leviticus 13:40, Leviticus 25:13, Numbers 9:2, Numbers 19:15, Numbers
21:21, Numbers 26:28, Numbers 26:43, Numbers 32:36, Numbers 33:12, Numbers
34:22, Deuteronomy 1:9, Deuteronomy 18:17, Deuteronomy 32:9, 1 Samuel 1:25, 1
Samuel 15:5, 1 Samuel 20:39, 2 Samuel 14:23, 1 Kings 2:14, 2 Kings 6:7, 1
Chronicles 7:25, 1 Chronicles 12:24, 1 Chronicles 15:6, 1 Chronicles 16:13, 1
Chronicles 25:26, 1 Chronicles 25:28, 2 Chronicles 34:19, Ezra 10:28, Nehemiah
7:39, Nehemiah 11:6, Job 3:15, Job 8:17, Job 9:33, Job 9:35, Job 12:18, Job
13:14, Job 18:12, Job 19:9, Job 22:19, Job 26:9, Job 29:4, Job 31:30, Job
34:21, Job 36:14, Job 36:27, Job 41:29, Psalms 2:10, Psalms 7:3, Psalms 9:17,
Psalms 10:12, Psalms 13:6, Psalms 14:6, Psalms 18:27, Psalms 18:31, Psalms
19:2, Psalms 19:3, Psalms 37:26, Psalms 39:9, Psalms 47:1, Psalms 48:6, Psalms
50:9, Psalms 55:8, Psalms 56:2, Psalms 60:9, Psalms 67:3, Psalms 67:5, Psalms
68:29, Psalms 71:14, Psalms 73:10, Psalms 73:18, Psalms 73:19, Psalms 74:6,
Psalms 78:47, Psalms 81:1, Psalms 83:16, Psalms 85:6, Psalms 89:35, Psalms
94:8, Psalms 95:5, Psalms 97:11, Psalms 100:2, Psalms 103:7, Psalms 104:26,
Psalms 105:39, Psalms 106:13, Psalms 106:21, Psalms 108:10, Psalms 109:4,
Psalms 109:23, Psalms 114:5, Psalms 115:8, Psalms 118:10, Psalms 119:14, Psalms
119:16, Psalms 119:19, Psalms 119:30, Psalms 119:45, Psalms 119:62, Psalms
119:156, Psalms 122:6, Psalms 135:18, Psalms 143:9, Psalms 148:4, Psalms 149:5,
Proverbs 2:12, Proverbs 2:14, Proverbs 7:3, Proverbs 7:13, Proverbs 9:6,
Proverbs 9:15, Proverbs 11:17, Proverbs 15:7, Proverbs 16:18, Proverbs 18:13,
Proverbs 20:14, Proverbs 23:14, Proverbs 25:11, Proverbs 26:19, Proverbs 29:12,
Proverbs 31:19, Ecclesiastes 6:11, Ecclesiastes 10:6, Song of Solomon 1:12,
Song of Solomon 5:10, Song of Solomon 5:11, Isaiah 24:12, Isaiah 39:5, Jeremiah
14:1, Jeremiah 41:4, Lamentations 5:5, Lamentations 5:7, Lamentations 5:16,
Ezekiel 7:25, Ezekiel 14:1, Ezekiel 24:26, Daniel 2:36, Hosea 10:7, Jonah 1:1,
Matthew 5:27, Matthew 5:48, Matthew 6:9, Matthew 6:10, Matthew 8:6, Matthew
17:7, Matthew 17:16, Matthew 21:4, Matthew 21:18, Matthew 22:33, Matthew 22:39,
Matthew 24:37, Matthew 24:40, Matthew 25:3, Matthew 27:30, Matthew 28:3, Mark
1:37, Mark 3:24, Mark 4:40, Mark 5:28, Mark 7:23, Mark 13:5, Mark 15:38, Mark
15:47, Luke 1:57, Luke 2:33, Luke 3:38, Luke 7:50, Luke 9:21, Luke 9:46, Luke
10:18, Luke 22:43, Luke 23:36, Luke 23:42, John 9:13, John 12:8, John 15:9,
John 17:18, John 21:21, Acts 2:8, Acts 7:18, Acts 10:5, Acts 10:12, Acts 11:10,
Acts 15:41, Acts 19:5, Acts 23:26, Romans 7:17, Romans 12:12, Romans 12:18, 1
Corinthians 15:22, 1 Corinthians 15:25, 2 Corinthians 6:11, 2 Corinthians
11:30, Ephesians 4:26, Philippians 3:7, Philippians 4:5, Philippians 4:16, 1
Thessalonians 4:2, 1 Timothy 5:12, Hebrews 3:7, Hebrews 4:5, Hebrews 7:7,
Hebrews 12:12, 1 Peter 2:17, 1 John 3:3, Genesis 5:32, Genesis 10:8, Genesis
11:26, Genesis 21:5, Genesis 27:26, Genesis 30:11, Genesis 37:12, Genesis 38:6,
Genesis 42:8, Exodus 23:6, Exodus 25:16, Exodus 30:5, Exodus 35:12, Exodus
40:27, Leviticus 26:11, Numbers 7:6, Numbers 8:6, Numbers 20:9, Numbers 26:18,
Numbers 26:27, Numbers 32:10, Numbers 33:5, Deuteronomy 1:18, Deuteronomy 11:7,
Deuteronomy 32:34, Deuteronomy 32:45, Joshua 7:10, Joshua 8:23, Joshua 10:15,
Joshua 19:35, Ruth 1:10, 1 Samuel 1:10, 1 Samuel 2:4, 1 Samuel 2:12, 1 Samuel
8:17, 1 Samuel 20:4, 2 Samuel 6:1, 2 Samuel 22:6, 2 Samuel 22:11, 1 Kings 8:3,
2 Kings 13:22, 1 Chronicles 1:10, 1 Chronicles 2:27, 1 Chronicles 4:11, 1
Chronicles 6:79, 1 Chronicles 7:12, 1 Chronicles 15:19, 1 Chronicles 16:16, 1
Chronicles 21:1, 2 Chronicles 5:4, 2 Chronicles 7:4, 2 Chronicles 9:28, Ezra
2:6, Ezra 8:6, Nehemiah 7:11, Job 9:7, Job 9:26, Job 13:17, Job 13:22, Job
16:18, Job 17:11, Job 18:7, Job 18:10, Job 18:18, Job 19:11, Job 25:2, Job
27:16, Job 28:2, Job 28:22, Job 30:7, Job 30:17, Job 30:30, Job 31:10, Job
33:20, Job 33:22, Job 33:29, Job 38:8, Psalms 2:3, Psalms 2:4, Psalms 17:12,
Psalms 18:5, Psalms 19:12, Psalms 22:11, Psalms 35:16, Psalms 37:32, Psalms
38:8, Psalms 44:21, Psalms 47:5, Psalms 49:12, Psalms 57:2, Psalms 59:15,
Psalms 62:5, Psalms 73:4, Psalms 73:8, Psalms 73:17, Psalms 78:3, Psalms 78:25,
Psalms 83:7, Psalms 83:13, Psalms 94:3, Psalms 101:4, Psalms 102:3, Psalms
103:6, Psalms 103:18, Psalms 105:9, Psalms 105:22, Psalms 105:30, Psalms
106:11, Psalms 106:33, Psalms 107:7, Psalms 108:12, Psalms 116:6, Psalms
118:20, Psalms 118:21, Psalms 119:49, Psalms 119:56, Psalms 119:135, Psalms
119:153, Psalms 119:173, Psalms 121:5, Psalms 132:7, Psalms 135:12, Psalms
135:16, Psalms 149:7, Proverbs 2:19, Proverbs 5:9, Proverbs 6:13, Proverbs 7:6,
Proverbs 7:9, Proverbs 7:27, Proverbs 8:17, Proverbs 8:32, Proverbs 10:22,
Proverbs 13:21, Proverbs 14:9, Proverbs 14:10, Proverbs 14:34, Proverbs 15:12,
Proverbs 16:9, Proverbs 21:14, Proverbs 21:30, Proverbs 22:20, Proverbs 23:12,
Proverbs 24:3, Proverbs 30:28, Ecclesiastes 1:3, Ecclesiastes 2:2, Ecclesiastes
3:20, Song of Solomon 1:13, Isaiah 9:8, Isaiah 14:5, Isaiah 26:4, Isaiah 40:18,
Isaiah 44:10, Jeremiah 4:21, Jeremiah 10:17, Jeremiah 25:19, Jeremiah 28:17,
Jeremiah 29:5, Jeremiah 29:13, Jeremiah 46:7, Lamentations 3:51, Lamentations
3:64, Lamentations 5:1, Lamentations 5:4, Ezekiel 7:5, Hosea 12:7, Matthew 5:9,
Matthew 10:7, Matthew 17:8, Matthew 20:24, Matthew 21:39, Matthew 22:22,
Matthew 23:7, Matthew 24:48, Matthew 27:18, Mark 7:8, Mark 9:32, Mark 10:20,
Mark 11:16, Mark 12:8, Mark 12:27, Mark 15:23, Luke 1:12, Luke 2:42, Luke
12:41, Luke 19:18, Luke 20:39, Luke 21:35, Luke 22:21, Luke 23:1, Luke 24:3,
John 7:20, John 12:22, John 12:41, John 16:1, John 17:10, Acts 9:9, Acts 13:49,
Acts 19:20, Romans 2:17, Romans 12:9, Romans 12:13, Romans 16:9, 2 Corinthians
5:2, Galatians 2:19, Galatians 3:27, 2 Thessalonians 2:17, 1 Timothy 5:7, 2
Timothy 3:17, Hebrews 11:18, James 1:3, James 2:15, James 2:24, 2 John 1:2,
Genesis 3:9, Genesis 4:24, Genesis 9:21, Genesis 10:14, Genesis 15:6, Genesis
15:8, Genesis 21:11, Genesis 30:7, Genesis 34:6, Genesis 35:13, Genesis 36:22,
Genesis 42:10, Genesis 47:10, Genesis 49:2, Genesis 49:5, Genesis 49:32,
Genesis 50:19, Exodus 10:27, Exodus 30:19, Leviticus 18:22, Leviticus 26:3,
Numbers 10:13, Numbers 12:9, Numbers 23:28, Numbers 26:7, Numbers 31:40,
Deuteronomy 12:24, Deuteronomy 14:19, 1 Samuel 19:14, 1 Samuel 23:29, 2 Samuel
15:9, 2 Samuel 22:14, 1 Kings 13:19, 2 Kings 9:4, 1 Chronicles 1:12, 1
Chronicles 1:49, 1 Chronicles 2:47, 1 Chronicles 2:51, 1 Chronicles 4:26, 1
Chronicles 6:22, 1 Chronicles 6:59, 1 Chronicles 16:20, 2 Chronicles 14:2, 2
Chronicles 31:9, Ezra 2:58, Nehemiah 7:60, Job 6:21, Job 6:28, Job 9:31, Job
13:13, Job 13:21, Job 16:3, Job 16:7, Job 18:2, Job 18:8, Job 24:21, Job 31:5,
Job 35:10, Job 39:30, Job 40:9, Job 40:20, Job 41:7, Job 41:15, Psalms 1:4,
Psalms 7:11, Psalms 10:16, Psalms 16:2, Psalms 22:13, Psalms 26:7, Psalms
33:15, Psalms 33:22, Psalms 36:9, Psalms 37:12, Psalms 40:1, Psalms 44:15,
Psalms 55:7, Psalms 60:11, Psalms 62:1, Psalms 69:10, Psalms 72:9, Psalms
73:14, Psalms 76:2, Psalms 78:41, Psalms 83:14, Psalms 84:8, Psalms 89:9,
Psalms 89:23, Psalms 94:2, Psalms 98:8, Psalms 105:13, Psalms 105:16, Psalms
105:27, Psalms 105:43, Psalms 106:15, Psalms 106:22, Psalms 107:33, Psalms
107:42, Psalms 111:2, Psalms 113:4, Psalms 115:13, Psalms 119:28, Psalms
119:61, Psalms 119:101, Psalms 119:106, Psalms 119:109, Psalms 119:122, Psalms
129:1, Psalms 135:19, Psalms 136:19, Psalms 145:9, Psalms 147:9, Proverbs 3:2,
Proverbs 3:4, Proverbs 4:17, Proverbs 4:24, Proverbs 5:12, Proverbs 5:15,
Proverbs 5:18, Proverbs 10:14, Proverbs 13:15, Proverbs 16:27, Proverbs 17:23,
Proverbs 21:23, Proverbs 21:25, Proverbs 22:26, Proverbs 23:11, Proverbs 26:28,
Proverbs 30:6, Proverbs 30:21, Ecclesiastes 2:4, Ecclesiastes 2:6, Isaiah 1:19,
Isaiah 2:9, Isaiah 2:14, Isaiah 3:13, Isaiah 13:7, Isaiah 14:7, Isaiah 26:6,
Isaiah 46:8, Isaiah 49:14, Jeremiah 6:2, Jeremiah 17:7, Jeremiah 30:4,
Lamentations 3:4, Lamentations 3:18, Lamentations 3:19, Ezekiel 43:4, Daniel
1:14, Daniel 5:28, Joel 2:15, Amos 7:3, Habakkuk 3:15, Matthew 13:53, Matthew
14:7, Matthew 21:37, Matthew 22:15, Matthew 23:20, Matthew 24:18, Matthew
25:33, Matthew 26:1, Matthew 26:30, Matthew 27:8, Matthew 27:10, Mark 5:8, Mark
6:39, Mark 10:6, Mark 13:16, Mark 14:26, Mark 16:13, Luke 1:34, Luke 2:19, Luke
3:18, Luke 11:16, Luke 13:3, Luke 15:26, Luke 23:10, Luke 24:37, John 1:34,
John 6:59, John 10:13, John 11:3, John 12:14, John 13:24, John 15:3, John
19:16, Acts 3:19, Acts 20:12, Acts 20:27, Acts 21:23, Acts 22:1, Acts 26:8,
Acts 26:27, Romans 7:24, Romans 8:25, Romans 10:17, Romans 14:18, Romans 15:17,
1 Corinthians 4:2, 1 Corinthians 16:4, 1 Corinthians 16:16, 2 Corinthians 5:9,
2 Corinthians 12:17, 2 Corinthians 13:8, Colossians 1:15, Colossians 3:21, 1
Timothy 5:2, 2 Timothy 2:5, Hebrews 9:18, 1 John 5:17, Genesis 2:12, Genesis
9:14, Genesis 22:15, Genesis 25:28, Genesis 33:6, Genesis 36:33, Genesis 43:17,
Genesis 46:16, Exodus 2:4, Exodus 4:17, Exodus 15:5, Exodus 15:24, Exodus
16:17, Exodus 22:12, Exodus 25:4, Exodus 35:6, Exodus 37:23, Leviticus 12:3,
Leviticus 19:30, Leviticus 26:2, Leviticus 27:13, Numbers 11:9, Numbers 25:9,
Numbers 26:47, Numbers 31:11, Numbers 33:15, Deuteronomy 3:9, Deuteronomy
23:12, Deuteronomy 25:17, Deuteronomy 33:14, Joshua 10:43, Judges 3:11, Judges
8:17, Judges 9:14, Judges 17:1, 1 Samuel 13:23, 1 Samuel 17:21, 1 Samuel 22:21,
1 Samuel 25:12, 2 Samuel 5:18, 2 Samuel 6:23, 2 Samuel 15:33, 2 Samuel 22:35, 1
Chronicles 1:44, 1 Chronicles 1:51, 1 Chronicles 9:24, 1 Chronicles 15:10, 1
Chronicles 16:21, 1 Chronicles 25:29, 1 Chronicles 25:30, 1 Chronicles 26:23, 2
Chronicles 35:19, Ezra 2:60, Ezra 8:9, Ezra 10:21, Nehemiah 5:19, Esther 4:17,
Job 3:25, Job 3:26, Job 5:3, Job 6:8, Job 7:7, Job 7:10, Job 9:25, Job 13:8,
Job 13:11, Job 13:18, Job 13:20, Job 14:8, Job 15:19, Job 16:14, Job 18:17, Job
22:11, Job 30:19, Job 31:6, Job 31:17, Job 32:4, Job 32:15, Job 32:20, Job
33:32, Job 37:18, Job 38:9, Job 38:31, Job 39:19, Job 41:8, Psalms 3:8, Psalms
6:1, Psalms 18:34, Psalms 22:7, Psalms 25:9, Psalms 25:17, Psalms 26:4, Psalms
26:5, Psalms 31:16, Psalms 34:2, Psalms 36:12, Psalms 37:1, Psalms 38:1, Psalms
38:2, Psalms 39:10, Psalms 42:1, Psalms 46:7, Psalms 46:11, Psalms 47:4, Psalms
48:14, Psalms 59:8, Psalms 59:9, Psalms 64:3, Psalms 65:3, Psalms 66:9, Psalms
66:10, Psalms 66:11, Psalms 68:32, Psalms 71:8, Psalms 73:6, Psalms 74:15,
Psalms 77:3, Psalms 78:29, Psalms 78:59, Psalms 78:66, Psalms 80:9, Psalms
81:3, Psalms 82:8, Psalms 83:5, Psalms 88:13, Psalms 89:20, Psalms 89:30,
Psalms 94:19, Psalms 105:14, Psalms 105:19, Psalms 106:18, Psalms 106:24,
Psalms 106:25, Psalms 106:44, Psalms 107:4, Psalms 107:16, Psalms 112:6, Psalms
113:2, Psalms 115:17, Psalms 116:13, Psalms 118:17, Psalms 119:50, Psalms
119:51, Psalms 119:103, Psalms 119:121, Psalms 119:154, Psalms 119:155, Psalms
122:9, Psalms 124:1, Psalms 127:4, Psalms 136:8, Psalms 136:24, Psalms 143:4,
Psalms 145:11, Proverbs 1:29, Proverbs 2:4, Proverbs 2:13, Proverbs 3:7,
Proverbs 3:21, Proverbs 3:34, Proverbs 5:4, Proverbs 5:8, Proverbs 6:27,
Proverbs 6:32, Proverbs 8:2, Proverbs 8:12, Proverbs 10:4, Proverbs 10:21,
Proverbs 11:2, Proverbs 12:19, Proverbs 12:21, Proverbs 14:13, Proverbs 14:18,
Proverbs 17:13, Proverbs 20:24, Proverbs 26:11, Proverbs 27:15, Proverbs 27:19,
Proverbs 29:25, Proverbs 30:22, Proverbs 31:10, Proverbs 31:14, Song of Solomon
6:3, Isaiah 3:4, Isaiah 43:27, Isaiah 44:4, Isaiah 45:15, Isaiah 55:6, Isaiah
60:8, Jeremiah 17:15, Lamentations 3:37, Lamentations 5:6, Lamentations 5:20,
Ezekiel 43:16, Hosea 7:8, Joel 2:18, Haggai 2:8, Zechariah 1:5, Matthew 4:19,
Matthew 5:3, Matthew 10:24, Matthew 13:58, Matthew 16:16, Matthew 21:22,
Matthew 23:36, Matthew 26:9, Matthew 26:43, Matthew 26:54, Mark 8:5, Mark 8:26,
Mark 13:33, Luke 1:55, Luke 2:2, Luke 3:13, Luke 6:16, Luke 6:24, Luke 13:5,
Luke 15:1, Luke 21:29, Luke 22:12, John 1:9, John 1:20, John 2:13, John 4:32,
John 9:14, John 9:26, John 11:7, John 12:20, John 13:6, John 14:1, Acts 4:28,
Acts 7:53, Acts 8:17, Acts 9:16, Acts 12:22, Acts 13:32, Acts 15:13, Acts
15:15, Acts 19:23, Acts 21:22, Romans 11:27, Romans 14:19, Romans 16:27, 1
Corinthians 1:3, 1 Corinthians 3:9, 1 Corinthians 6:6, 1 Corinthians 10:10, 1
Corinthians 12:7, 1 Corinthians 14:14, 2 Corinthians 1:2, 2 Corinthians 11:14,
Galatians 1:3, Galatians 1:19, Galatians 4:31, Ephesians 1:2, Ephesians 1:16,
Philippians 1:2, Philippians 1:4, Colossians 3:20, 2 Thessalonians 1:2, 2
Timothy 2:13, 2 Timothy 3:7, Titus 2:11, Titus 3:4, Philemon 1:3, Philemon
1:23, Hebrews 5:8, Hebrews 5:10, James 1:2, James 1:22, Genesis 32:31, Genesis
36:23, Genesis 41:22, Genesis 44:19, Exodus 4:2, Exodus 12:26, Exodus 26:22,
Exodus 33:14, Exodus 35:18, Exodus 36:7, Exodus 39:27, Exodus 40:25, Leviticus
5:19, Leviticus 7:27, Leviticus 13:38, Numbers 9:4, Numbers 26:17, Numbers
33:11, Deuteronomy 1:12, Deuteronomy 1:46, Deuteronomy 6:9, Deuteronomy 11:20,
Deuteronomy 28:16, Deuteronomy 28:42, Deuteronomy 32:23, Joshua 12:9, Joshua
15:62, Judges 3:14, Judges 8:30, Judges 16:22, Judges 20:11, 1 Samuel 25:43, 2
Samuel 1:8, 2 Samuel 11:5, 2 Samuel 22:10, 2 Samuel 22:15, 2 Samuel 22:37, 1
Kings 2:10, 1 Kings 7:11, 1 Chronicles 2:6, 1 Chronicles 2:17, 1 Chronicles
9:30, 1 Chronicles 9:40, 1 Chronicles 10:6, 1 Chronicles 14:9, 1 Chronicles
22:16, 2 Chronicles 3:2, 2 Chronicles 11:5, Ezra 10:4, Ezra 10:24, Ezra 10:31,
Job 3:12, Job 4:8, Job 4:13, Job 7:13, Job 9:8, Job 10:19, Job 13:1, Job 13:4,
Job 13:12, Job 13:16, Job 19:23, Job 21:4, Job 21:25, Job 22:10, Job 24:10, Job
25:3, Job 27:4, Job 27:18, Job 28:8, Job 29:9, Job 29:22, Job 30:8, Job 33:17,
Job 34:4, Job 34:5, Job 36:8, Job 38:30, Job 41:4, Job 42:5, Psalms 5:5, Psalms
17:8, Psalms 17:9, Psalms 18:9, Psalms 18:28, Psalms 18:36, Psalms 28:6, Psalms
29:6, Psalms 33:1, Psalms 34:11, Psalms 34:18, Psalms 35:11, Psalms 37:2,
Psalms 37:13, Psalms 49:7, Psalms 50:6, Psalms 50:10, Psalms 51:10, Psalms
55:2, Psalms 60:12, Psalms 61:6, Psalms 66:19, Psalms 69:8, Psalms 73:11,
Psalms 73:12, Psalms 76:8, Psalms 78:9, Psalms 78:33, Psalms 78:64, Psalms
80:7, Psalms 81:14, Psalms 83:1, Psalms 89:41, Psalms 89:44, Psalms 91:10,
Psalms 92:14, Psalms 104:5, Psalms 105:12, Psalms 105:18, Psalms 105:20, Psalms
106:2, Psalms 107:2, Psalms 108:13, Psalms 112:7, Psalms 116:1, Psalms 118:4,
Psalms 119:53, Psalms 119:63, Psalms 119:65, Psalms 119:93, Psalms 119:95,
Psalms 119:107, Psalms 119:172, Psalms 121:3, Psalms 122:1, Psalms 135:15,
Psalms 139:10, Psalms 148:7, Psalms 149:8, Proverbs 1:20, Proverbs 2:8,
Proverbs 3:16, Proverbs 3:30, Proverbs 7:8, Proverbs 15:20, Proverbs 15:31,
Proverbs 16:33, Proverbs 23:10, Proverbs 24:7, Proverbs 24:23, Proverbs 25:25,
Proverbs 26:5, Proverbs 27:1, Proverbs 30:31, Proverbs 31:8, Proverbs 31:20,
Ecclesiastes 11:1, Isaiah 10:5, Isaiah 28:3, Isaiah 32:8, Isaiah 41:3, Isaiah
43:21, Jeremiah 48:25, Lamentations 3:25, Lamentations 3:26, Lamentations 5:12,
Ezekiel 37:20, Hosea 2:20, Hosea 4:8, Amos 8:1, Zechariah 4:4, Matthew 8:25,
Matthew 9:34, Matthew 10:38, Matthew 13:7, Matthew 13:16, Matthew 17:3, Matthew
21:17, Matthew 26:4, Matthew 27:25, Matthew 27:50, Mark 3:35, Mark 5:12, Mark
6:43, Mark 7:12, Mark 7:30, Mark 8:13, Luke 1:16, Luke 1:50, Luke 1:61, Luke
12:14, Luke 14:16, Luke 15:23, Luke 16:20, Luke 17:13, Luke 20:41, John 5:31,
John 7:11, John 7:16, John 10:20, John 16:12, Acts 9:6, Acts 10:27, Acts 14:25,
Acts 15:26, Acts 15:31, Acts 16:30, Acts 26:21, Acts 27:32, Romans 3:1, Romans
6:20, Romans 7:16, Romans 9:14, 1 Corinthians 10:12, 1 Corinthians 15:36, 2
Corinthians 1:18, 2 Corinthians 3:15, Ephesians 4:6, Ephesians 5:12, Ephesians
6:3, Titus 3:11, Hebrews 7:24, Hebrews 10:24, Hebrews 10:35, 1 John 2:26, Jude
1:19, Revelation 2:29, Revelation 3:6, Revelation 3:13, Revelation 3:19,
Revelation 8:6, Genesis 2:1, Genesis 9:9, Genesis 24:6, Genesis 29:17, Genesis
30:4, Genesis 30:17, Genesis 36:19, Genesis 43:4, Genesis 50:1, Exodus 24:15,
Exodus 36:16, Leviticus 11:23, Leviticus 18:2, Leviticus 24:19, Numbers 3:37,
Numbers 24:22, Numbers 26:36, Numbers 31:22, Deuteronomy 9:24, Deuteronomy
11:5, Deuteronomy 27:14, Deuteronomy 32:3, Joshua 12:23, Joshua 16:4, Judges
10:3, Ruth 4:16, 1 Samuel 6:1, 2 Samuel 16:20, 1 Kings 1:22, 1 Kings 12:19, 1
Kings 15:16, 1 Kings 15:32, 2 Kings 4:11, 1 Chronicles 2:9, 1 Chronicles 4:8, 1
Chronicles 5:15, 1 Chronicles 8:37, 1 Chronicles 15:8, 1 Chronicles 16:23, 1
Chronicles 16:27, 1 Chronicles 17:12, 1 Chronicles 21:14, 1 Chronicles 25:24, 1
Chronicles 29:21, 1 Chronicles 29:22, 2 Chronicles 9:17, 2 Chronicles 10:19, 2
Chronicles 12:4, 2 Chronicles 13:16, Ezra 8:7, Ezra 8:11, Job 3:17, Job 6:25,
Job 8:21, Job 9:34, Job 11:13, Job 13:28, Job 14:10, Job 15:10, Job 19:4, Job
19:6, Job 20:16, Job 21:10, Job 21:11, Job 22:8, Job 22:22, Job 25:6, Job 27:3,
Job 28:7, Job 28:16, Job 28:27, Job 29:5, Job 33:14, Job 34:22, Job 35:2, Job
35:13, Job 36:6, Job 38:21, Job 39:18, Psalms 3:2, Psalms 3:4, Psalms 18:10,
Psalms 20:2, Psalms 22:18, Psalms 24:2, Psalms 34:9, Psalms 38:6, Psalms 40:15,
Psalms 41:5, Psalms 44:25, Psalms 50:19, Psalms 51:18, Psalms 59:2, Psalms
66:14, Psalms 68:19, Psalms 72:18, Psalms 75:9, Psalms 78:22, Psalms 78:48,
Psalms 78:61, Psalms 78:67, Psalms 84:7, Psalms 88:6, Psalms 89:18, Psalms
91:8, Psalms 97:12, Psalms 106:20, Psalms 107:23, Psalms 107:27, Psalms 107:40,
Psalms 113:7, Psalms 115:10, Psalms 119:17, Psalms 119:22, Psalms 119:77,
Psalms 119:79, Psalms 119:112, Psalms 122:5, Psalms 122:8, Psalms 132:6, Psalms
132:13, Psalms 132:18, Psalms 135:5, Psalms 135:20, Psalms 136:2, Psalms
136:25, Psalms 139:6, Psalms 147:7, Psalms 150:4, Proverbs 1:4, Proverbs 3:6,
Proverbs 6:18, Proverbs 7:25, Proverbs 8:7, Proverbs 8:23, Proverbs 8:31,
Proverbs 10:16, Proverbs 14:5, Proverbs 14:30, Proverbs 16:10, Proverbs 16:14,
Proverbs 18:14, Proverbs 18:22, Proverbs 19:29, Proverbs 22:2, Proverbs 22:23,
Proverbs 24:20, Proverbs 25:23, Proverbs 30:11, Proverbs 30:13, Ecclesiastes
9:8, Ecclesiastes 10:18, Song of Solomon 2:4, Isaiah 2:16, Isaiah 47:4, Isaiah
50:3, Jeremiah 4:15, Jeremiah 10:8, Jeremiah 21:11, Lamentations 3:3,
Lamentations 3:24, Lamentations 3:62, Lamentations 3:63, Lamentations 5:19,
Ezekiel 35:2, Ezekiel 40:8, Daniel 4:4, Hosea 11:1, Hosea 13:7, Hosea 13:9,
Joel 1:8, Joel 3:20, Habakkuk 2:12, Zechariah 3:3, Zechariah 4:13, Matthew
1:22, Matthew 5:14, Matthew 15:10, Matthew 18:20, Matthew 18:30, Matthew 23:10,
Matthew 24:41, Matthew 25:28, Matthew 26:11, Luke 1:4, Luke 1:14, Luke 1:56,
Luke 2:47, Luke 7:5, Luke 14:20, Luke 19:32, Luke 20:38, Luke 23:38, John 1:5,
John 3:33, John 5:47, John 6:28, John 7:34, John 11:22, John 15:12, John 15:18,
John 21:10, Acts 2:1, Acts 5:29, Acts 10:6, Acts 13:40, Acts 20:14, Acts 22:21,
Acts 28:5, Romans 1:3, Romans 3:28, Romans 7:12, 1 Corinthians 14:29, 2
Corinthians 11:1, 2 Corinthians 11:5, Galatians 2:18, Galatians 6:18,
Philippians 1:5, Philippians 3:11, Colossians 1:21, Colossians 4:2, 2 Timothy
1:17, Hebrews 7:10, Hebrews 9:20, Hebrews 11:36, Hebrews 13:14, 1 Peter 1:15, 1
John 2:20, Revelation 3:22, Genesis 4:6, Genesis 22:4, Genesis 29:22, Genesis
30:22, Genesis 30:23, Genesis 33:12, Genesis 40:6, Genesis 41:1, Genesis 41:9,
Exodus 12:50, Exodus 23:17, Exodus 25:39, Exodus 26:23, Exodus 27:13, Exodus
29:7, Exodus 36:19, Exodus 36:33, Exodus 37:11, Exodus 40:16, Leviticus 1:1,
Leviticus 2:6, Leviticus 8:32, Leviticus 21:24, Leviticus 22:33, Leviticus
27:31, Numbers 3:19, Numbers 31:4, Numbers 32:3, Deuteronomy 17:13, Deuteronomy
28:3, Deuteronomy 29:3, Joshua 13:19, Joshua 22:6, Judges 14:20, 2 Samuel 1:17,
2 Samuel 12:26, 1 Kings 21:14, 2 Kings 4:32, 1 Chronicles 1:38, 1 Chronicles
2:44, 1 Chronicles 3:3, 1 Chronicles 6:29, 1 Chronicles 7:30, 1 Chronicles 8:7,
1 Chronicles 8:10, 1 Chronicles 11:44, 1 Chronicles 19:8, 1 Chronicles 23:14,
Ezra 8:12, Nehemiah 11:36, Esther 10:1, Job 1:9, Job 3:14, Job 3:23, Job 5:9,
Job 5:19, Job 9:9, Job 9:17, Job 12:14, Job 12:22, Job 14:22, Job 17:1, Job
20:12, Job 21:13, Job 26:7, Job 27:15, Job 28:14, Job 28:15, Job 31:1, Job
31:27, Job 31:38, Job 32:21, Job 32:22, Job 34:13, Job 36:3, Job 37:10, Job
39:7, Job 40:13, Job 40:15, Job 41:23, Job 41:34, Psalms 9:3, Psalms 23:2,
Psalms 25:8, Psalms 31:6, Psalms 33:19, Psalms 37:15, Psalms 37:30, Psalms
38:9, Psalms 38:20, Psalms 45:11, Psalms 52:2, Psalms 56:7, Psalms 62:6, Psalms
62:11, Psalms 72:2, Psalms 72:13, Psalms 73:2, Psalms 73:13, Psalms 78:28,
Psalms 83:12, Psalms 88:14, Psalms 89:40, Psalms 94:22, Psalms 96:2, Psalms
97:1, Psalms 104:10, Psalms 105:6, Psalms 105:38, Psalms 105:45, Psalms 106:3,
Psalms 107:18, Psalms 119:32, Psalms 119:40, Psalms 119:98, Psalms 119:108,
Psalms 119:145, Psalms 119:165, Psalms 119:168, Psalms 135:4, Psalms 138:3,
Psalms 141:3, Psalms 145:1, Psalms 145:15, Psalms 145:20, Psalms 148:11, Psalms
150:5, Proverbs 1:13, Proverbs 1:26, Proverbs 2:3, Proverbs 3:11, Proverbs
3:13, Proverbs 3:20, Proverbs 3:23, Proverbs 5:1, Proverbs 6:10, Proverbs 7:10,
Proverbs 13:5, Proverbs 16:28, Proverbs 18:18, Proverbs 23:28, Proverbs 23:33,
Proverbs 24:4, Proverbs 24:33, Proverbs 26:4, Proverbs 27:6, Proverbs 27:8,
Proverbs 28:3, Ecclesiastes 4:9, Ecclesiastes 6:7, Ecclesiastes 8:7,
Ecclesiastes 9:18, Song of Solomon 1:10, Song of Solomon 7:6, Isaiah 2:1,
Isaiah 26:2, Isaiah 31:6, Isaiah 65:24, Jeremiah 11:18, Jeremiah 19:10,
Jeremiah 29:12, Jeremiah 36:15, Jeremiah 51:38, Lamentations 3:11, Ezekiel
10:13, Ezekiel 16:23, Ezekiel 38:5, Ezekiel 42:17, Daniel 7:21, Daniel 10:18,
Hosea 5:12, Joel 3:15, Jonah 2:8, Nahum 1:1, Matthew 4:12, Matthew 11:28,
Matthew 13:26, Matthew 14:16, Matthew 15:8, Matthew 15:24, Matthew 25:11,
Matthew 26:70, Matthew 27:61, Mark 2:6, Mark 5:1, Mark 5:25, Mark 6:54, Mark
7:35, Mark 10:16, Mark 10:41, Mark 16:10, Luke 1:49, Luke 5:20, Luke 16:27,
Luke 17:25, Luke 22:14, John 6:3, John 8:35, John 14:8, John 16:14, John 21:13,
Acts 3:4, Acts 6:4, Acts 9:42, Acts 10:16, Romans 6:1, Romans 6:18, Romans
8:33, Romans 11:34, Romans 15:22, Romans 15:25, 1 Corinthians 9:8, 1
Corinthians 16:20, 1 Corinthians 16:22, 2 Corinthians 6:6, 2 Corinthians 7:6, 2
Corinthians 12:8, Galatians 4:2, Galatians 5:26, Colossians 2:4, 1 Timothy
6:21, Philemon 1:17, Hebrews 1:11, Hebrews 10:4, James 3:18, 1 John 3:5,
Genesis 7:22, Genesis 8:18, Genesis 9:7, Genesis 15:11, Genesis 19:26, Genesis
24:62, Genesis 36:34, Genesis 36:37, Genesis 41:28, Exodus 25:24, Exodus 28:16,
Exodus 29:31, Exodus 35:3, Exodus 39:15, Leviticus 3:11, Leviticus 6:13,
Leviticus 9:16, Leviticus 14:50, Leviticus 26:14, Numbers 1:47, Numbers 16:48,
Numbers 19:11, Numbers 22:2, Numbers 24:25, Numbers 26:13, Numbers 31:35,
Numbers 34:26, Deuteronomy 3:7, Deuteronomy 3:22, Deuteronomy 23:6, Deuteronomy
28:46, Deuteronomy 33:4, Joshua 19:41, Joshua 21:35, Judges 13:22, 1 Samuel
2:6, 1 Samuel 2:18, 1 Samuel 18:14, 2 Samuel 2:31, 2 Samuel 19:1, 2 Samuel
22:34, 1 Kings 2:1, 1 Kings 13:27, 1 Kings 15:6, 1 Kings 18:16, 1 Kings 18:35,
1 Kings 22:40, 2 Kings 3:5, 2 Kings 10:36, 2 Kings 20:2, 1 Chronicles 1:45, 1
Chronicles 1:48, 1 Chronicles 2:29, 1 Chronicles 11:9, 1 Chronicles 16:19, 1
Chronicles 16:26, 1 Chronicles 23:21, 1 Chronicles 25:31, 2 Chronicles 33:10, 2
Chronicles 33:24, Ezra 2:40, Esther 4:10, Esther 6:7, Job 3:19, Job 8:7, Job
8:12, Job 8:16, Job 14:16, Job 16:11, Job 17:7, Job 19:22, Job 19:24, Job
20:24, Job 22:13, Job 22:17, Job 26:12, Job 27:10, Job 27:22, Job 28:10, Job
28:19, Job 29:19, Job 31:36, Job 34:36, Job 37:7, Job 37:9, Job 37:11, Psalms
7:4, Psalms 7:15, Psalms 9:19, Psalms 17:10, Psalms 18:33, Psalms 21:13, Psalms
25:19, Psalms 32:1, Psalms 33:3, Psalms 34:4, Psalms 41:7, Psalms 44:12, Psalms
44:18, Psalms 44:26, Psalms 49:20, Psalms 51:8, Psalms 62:7, Psalms 63:3,
Psalms 65:1, Psalms 67:2, Psalms 69:5, Psalms 69:31, Psalms 73:7, Psalms 78:2,
Psalms 78:27, Psalms 78:60, Psalms 81:11, Psalms 81:13, Psalms 82:4, Psalms
85:2, Psalms 88:17, Psalms 89:16, Psalms 89:27, Psalms 94:13, Psalms 94:18,
Psalms 102:17, Psalms 104:12, Psalms 104:19, Psalms 105:32, Psalms 107:36,
Psalms 108:8, Psalms 109:6, Psalms 109:24, Psalms 116:4, Psalms 118:24, Psalms
119:10, Psalms 119:11, Psalms 119:66, Psalms 119:71, Psalms 119:120, Psalms
119:136, Psalms 135:17, Psalms 136:3, Psalms 136:7, Psalms 136:22, Psalms
136:26, Psalms 139:17, Psalms 139:19, Psalms 145:18, Proverbs 1:9, Proverbs
2:1, Proverbs 3:29, Proverbs 4:13, Proverbs 4:22, Proverbs 4:23, Proverbs 4:27,
Proverbs 5:16, Proverbs 6:11, Proverbs 6:33, Proverbs 6:35, Proverbs 7:2,
Proverbs 7:24, Proverbs 8:36, Proverbs 12:23, Proverbs 12:25, Proverbs 13:8,
Proverbs 14:17, Proverbs 14:20, Proverbs 16:8, Proverbs 17:22, Proverbs 19:4,
Proverbs 20:8, Proverbs 21:8, Proverbs 21:28, Proverbs 22:24, Proverbs 24:18,
Proverbs 24:19, Proverbs 24:34, Proverbs 27:4, Proverbs 27:23, Proverbs 27:26,
Proverbs 31:3, Proverbs 31:11, Ecclesiastes 1:2, Ecclesiastes 1:4, Ecclesiastes
3:8, Ecclesiastes 5:3, Ecclesiastes 7:13, Ecclesiastes 7:24, Ecclesiastes
10:15, Song of Solomon 2:5, Song of Solomon 6:8, Song of Solomon 7:7, Isaiah
3:26, Isaiah 5:23, Isaiah 7:12, Isaiah 24:17, Isaiah 26:12, Isaiah 40:30,
Isaiah 46:12, Jeremiah 37:16, Jeremiah 48:16, Jeremiah 51:42, Ezekiel 10:8,
Ezekiel 39:16, Daniel 7:3, Daniel 7:17, Daniel 10:10, Hosea 1:5, Amos 5:1, Amos
8:13, Micah 6:3, Nahum 3:1, Habakkuk 3:12, Matthew 3:1, Matthew 3:6, Matthew
5:44, Matthew 12:14, Matthew 12:23, Matthew 14:25, Matthew 19:20, Matthew
21:14, Matthew 24:10, Matthew 24:46, Mark 3:1, Mark 6:46, Mark 9:11, Luke 8:7,
Luke 10:4, Luke 12:43, Luke 16:29, Luke 17:11, Luke 17:18, Luke 17:19, Luke
20:31, Luke 22:51, John 5:1, John 5:15, John 6:56, John 11:46, Acts 5:6, Acts
14:16, Acts 18:11, Acts 26:19, Romans 1:2, Romans 4:25, Romans 8:1, Romans
11:21, Romans 11:32, Romans 16:1, Romans 16:16, 1 Corinthians 1:31, 1
Corinthians 13:4, 2 Corinthians 1:21, 2 Corinthians 11:24, Ephesians 5:9,
Ephesians 5:17, Ephesians 6:24, Colossians 3:2, 1 Timothy 2:10, 1 Timothy 3:14,
2 Timothy 2:1, 2 Timothy 4:4, Hebrews 11:14, James 3:11, James 5:18, 1 John
3:21, Revelation 12:8, Revelation 16:16, Genesis 1:17, Genesis 22:10, Genesis
25:19, Genesis 28:8, Genesis 31:9, Genesis 36:32, Genesis 49:23, Genesis 50:6,
Exodus 2:1, Exodus 17:15, Exodus 30:26, Exodus 37:5, Exodus 40:31, Leviticus
8:3, Leviticus 15:9, Leviticus 20:7, Leviticus 26:7, Numbers 1:19, Numbers
10:5, Numbers 15:12, Numbers 15:40, Numbers 26:6, Numbers 32:40, Numbers 34:10,
Deuteronomy 2:32, Deuteronomy 25:13, Deuteronomy 27:8, Deuteronomy 28:28,
Judges 9:50, Judges 16:1, Judges 20:19, 1 Samuel 14:23, 1 Samuel 18:29, 1
Samuel 19:12, 2 Samuel 3:33, 2 Samuel 7:20, 2 Samuel 14:3, 2 Samuel 22:19, 1
Kings 4:10, 1 Kings 6:30, 1 Kings 8:45, 1 Kings 8:62, 2 Kings 4:15, 2 Kings
22:11, 1 Chronicles 2:13, 1 Chronicles 4:32, 1 Chronicles 8:1, 1 Chronicles
12:16, 1 Chronicles 16:10, 1 Chronicles 23:2, 2 Chronicles 13:1, 2 Chronicles
15:19, Ezra 8:5, Ezra 8:10, Job 3:8, Job 9:2, Job 9:13, Job 10:13, Job 11:3,
Job 12:9, Job 13:3, Job 13:19, Job 15:6, Job 15:25, Job 15:32, Job 16:15, Job
17:2, Job 21:22, Job 21:31, Job 27:21, Job 28:1, Job 28:12, Job 28:25, Job
30:21, Job 30:31, Job 31:8, Job 31:26, Job 32:9, Job 33:5, Job 33:18, Job
35:16, Job 36:23, Job 36:32, Job 36:33, Job 38:15, Job 38:36, Job 39:20, Job
39:27, Job 40:14, Psalms 6:7, Psalms 15:1, Psalms 18:18, Psalms 21:4, Psalms
22:19, Psalms 26:9, Psalms 26:10, Psalms 31:4, Psalms 31:24, Psalms 34:5,
Psalms 38:15, Psalms 45:3, Psalms 47:6, Psalms 50:5, Psalms 50:20, Psalms
51:13, Psalms 64:2, Psalms 66:18, Psalms 68:11, Psalms 69:29, Psalms 73:3,
Psalms 78:19, Psalms 78:24, Psalms 78:35, Psalms 78:62, Psalms 78:63, Psalms
80:8, Psalms 82:2, Psalms 84:4, Psalms 85:1, Psalms 90:7, Psalms 94:7, Psalms
97:6, Psalms 102:6, Psalms 103:1, Psalms 105:3, Psalms 112:3, Psalms 114:8,
Psalms 119:1, Psalms 119:21, Psalms 119:33, Psalms 119:86, Psalms 119:91,
Psalms 119:115, Psalms 126:1, Psalms 135:2, Psalms 136:21, Psalms 144:8, Psalms
145:14, Psalms 147:14, Proverbs 1:25, Proverbs 4:25, Proverbs 7:4, Proverbs
7:16, Proverbs 7:26, Proverbs 11:22, Proverbs 14:12, Proverbs 15:29, Proverbs
16:25, Proverbs 17:25, Proverbs 21:18, Proverbs 22:4, Proverbs 22:7, Proverbs
23:6, Proverbs 23:23, Proverbs 24:5, Proverbs 25:22, Proverbs 28:1, Proverbs
30:2, Proverbs 30:29, Proverbs 31:7, Proverbs 31:25, Ecclesiastes 3:4,
Ecclesiastes 5:5, Ecclesiastes 7:11, Ecclesiastes 7:20, Song of Solomon 5:4,
Song of Solomon 7:11, Isaiah 2:22, Isaiah 42:12, Isaiah 56:9, Jeremiah 25:25,
Jeremiah 32:27, Jeremiah 35:9, Lamentations 3:39, Lamentations 3:44,
Lamentations 5:15, Ezekiel 16:56, Ezekiel 25:2, Ezekiel 41:24, Ezekiel 48:19,
Daniel 5:24, Daniel 5:25, Daniel 5:31, Hosea 7:3, Matthew 3:13, Matthew 7:9,
Matthew 11:18, Matthew 13:45, Matthew 21:29, Matthew 23:21, Matthew 24:49, Mark
8:24, Mark 10:8, Mark 14:19, Luke 2:41, Luke 4:28, Luke 4:37, Luke 8:48, Luke
10:3, Luke 11:21, Luke 12:49, Luke 18:42, Luke 22:1, Luke 23:32, Luke 24:51,
John 3:1, John 4:29, John 16:6, John 18:6, Acts 1:17, Acts 5:1, Acts 5:13, Acts
8:5, Acts 8:15, Acts 20:36, Acts 24:16, Romans 4:23, 1 Corinthians 14:8, 1
Corinthians 14:30, 2 Corinthians 4:1, 2 Corinthians 10:6, Galatians 4:21,
Ephesians 5:11, Philippians 2:23, Philippians 4:21, 1 Thessalonians 2:1, 1
Thessalonians 4:12, Hebrews 9:3, Hebrews 10:37, Hebrews 13:10, James 1:14,
James 1:20, 1 Peter 3:11, 2 Peter 1:7, 1 John 3:18, 3 John 1:13, Revelation
21:25, Genesis 8:6, Genesis 10:2, Genesis 20:10, Genesis 31:4, Genesis 35:15,
Genesis 36:25, Genesis 37:1, Genesis 47:2, Exodus 9:17, Exodus 12:24, Exodus
16:19, Exodus 25:7, Exodus 26:20, Exodus 28:22, Exodus 31:5, Exodus 33:20,
Leviticus 8:19, Leviticus 8:36, Leviticus 9:1, Leviticus 11:12, Leviticus
13:48, Leviticus 14:30, Leviticus 26:12, Numbers 7:42, Numbers 23:22, Numbers
32:8, Numbers 34:27, Numbers 34:28, Deuteronomy 1:14, Deuteronomy 2:13,
Deuteronomy 10:16, Joshua 10:9, Joshua 23:8, Judges 15:9, Judges 16:4, Judges
20:9, 1 Samuel 3:16, 1 Samuel 8:4, 1 Samuel 15:34, 1 Samuel 30:29, 2 Samuel
3:11, 2 Samuel 14:1, 2 Samuel 22:12, 2 Samuel 22:30, 1 Kings 4:2, 2 Kings
13:24, 1 Chronicles 1:5, 1 Chronicles 2:22, 1 Chronicles 2:28, 1 Chronicles
10:11, 2 Chronicles 10:5, 2 Chronicles 16:13, 2 Chronicles 18:13, 2 Chronicles
19:1, Nehemiah 3:28, Job 4:3, Job 6:5, Job 6:14, Job 6:22, Job 6:24, Job 6:27,
Job 8:19, Job 10:8, Job 11:11, Job 17:6, Job 17:12, Job 19:26, Job 20:17, Job
22:12, Job 23:3, Job 28:9, Job 28:13, Job 34:30, Job 34:32, Job 37:13, Job
39:14, Job 39:28, Job 41:6, Job 41:13, Job 41:28, Job 41:31, Job 42:4, Psalms
6:4, Psalms 7:13, Psalms 9:20, Psalms 17:2, Psalms 18:4, Psalms 18:29, Psalms
18:44, Psalms 22:20, Psalms 25:15, Psalms 26:3, Psalms 27:10, Psalms 34:7,
Psalms 39:13, Psalms 41:10, Psalms 44:24, Psalms 48:9, Psalms 49:6, Psalms
50:11, Psalms 51:11, Psalms 55:1, Psalms 55:4, Psalms 56:12, Psalms 57:5,
Psalms 57:11, Psalms 58:5, Psalms 59:6, Psalms 59:14, Psalms 63:2, Psalms 72:1,
Psalms 73:24, Psalms 78:10, Psalms 78:43, Psalms 80:4, Psalms 80:19, Psalms
81:12, Psalms 83:17, Psalms 85:12, Psalms 86:4, Psalms 89:17, Psalms 91:5,
Psalms 92:12, Psalms 94:14, Psalms 94:20, Psalms 103:5, Psalms 104:7, Psalms
107:34, Psalms 108:5, Psalms 108:11, Psalms 111:5, Psalms 119:7, Psalms
119:110, Psalms 119:111, Psalms 119:125, Psalms 132:8, Psalms 132:15, Psalms
135:8, Psalms 135:14, Psalms 135:21, Psalms 136:17, Psalms 139:4, Psalms 147:4,
Proverbs 2:6, Proverbs 3:1, Proverbs 4:10, Proverbs 7:12, Proverbs 8:21,
Proverbs 9:4, Proverbs 12:16, Proverbs 12:28, Proverbs 13:17, Proverbs 14:7,
Proverbs 14:15, Proverbs 14:24, Proverbs 14:25, Proverbs 20:30, Proverbs 21:2,
Proverbs 21:15, Proverbs 24:9, Proverbs 26:1, Proverbs 26:8, Proverbs 27:24,
Proverbs 29:11, Proverbs 31:22, Ecclesiastes 3:1, Song of Solomon 1:14, Song of
Solomon 4:12, Isaiah 5:21, Isaiah 33:7, Isaiah 40:13, Isaiah 42:2, Jeremiah
5:8, Jeremiah 30:5, Lamentations 3:9, Lamentations 3:43, Lamentations 3:52,
Lamentations 5:2, Ezekiel 12:5, Ezekiel 17:2, Ezekiel 27:23, Ezekiel 39:5,
Ezekiel 47:21, Joel 2:21, Jonah 2:10, Nahum 1:11, Habakkuk 3:18, Matthew 2:5,
Matthew 13:3, Matthew 14:21, Matthew 17:6, Matthew 21:11, Matthew 24:12,
Matthew 24:42, Matthew 27:12, Matthew 27:41, Matthew 27:47, Mark 5:24, Mark
7:7, Mark 8:16, Mark 8:32, Mark 8:36, Mark 10:12, Mark 10:28, Mark 11:10, Mark
14:56, Mark 15:26, Mark 15:35, Luke 1:43, Luke 2:52, Luke 4:32, Luke 10:8, Luke
12:21, Luke 19:28, Luke 21:1, Luke 21:14, Luke 22:41, Luke 24:11, John 1:36,
John 2:18, John 4:24, John 6:66, John 8:5, John 8:27, John 8:58, John 10:11,
John 12:32, John 18:19, Acts 10:18, Acts 11:30, Acts 15:6, Acts 18:13, Acts
21:2, Romans 2:2, 1 Corinthians 3:20, 1 Corinthians 5:9, 1 Corinthians 11:4, 1
Corinthians 11:11, 1 Corinthians 11:33, 1 Corinthians 12:29, Galatians 2:10,
Galatians 3:6, Ephesians 3:4, Philippians 1:15, Colossians 1:26, Colossians
2:10, 1 Thessalonians 5:6, 2 Thessalonians 2:5, 2 Timothy 1:4, 2 Timothy 4:20,
Hebrews 10:17, Hebrews 12:21, James 1:24, James 2:12, 1 Peter 5:3, 1 John 1:8,
1 John 2:9, Revelation 17:13, Revelation 21:18, Genesis 7:6, Genesis 7:20,
Genesis 14:3, Genesis 24:28, Genesis 28:7, Genesis 33:9, Genesis 35:9, Genesis
36:29, Genesis 41:53, Genesis 44:3, Exodus 21:9, Exodus 34:33, Leviticus 19:33,
Leviticus 26:23, Leviticus 26:27, Numbers 3:16, Numbers 3:23, Numbers 5:31,
Numbers 7:24, Numbers 14:1, Numbers 14:4, Numbers 15:11, Numbers 17:7, Numbers
22:15, Numbers 31:32, Numbers 34:25, Deuteronomy 6:19, Deuteronomy 10:19,
Deuteronomy 25:14, Deuteronomy 31:22, Deuteronomy 31:25, Deuteronomy 32:37,
Joshua 21:29, Joshua 21:31, Judges 1:22, Judges 5:20, Judges 6:23, Judges
12:11, Ruth 1:18, 1 Samuel 15:27, 1 Samuel 18:15, 1 Samuel 20:20, 2 Samuel
3:15, 2 Samuel 4:3, 2 Samuel 5:7, 2 Samuel 10:7, 2 Samuel 22:45, 2 Samuel
23:34, 1 Kings 8:12, 1 Kings 13:10, 1 Kings 17:7, 1 Kings 18:17, 2 Kings 3:6, 2
Kings 6:4, 2 Kings 9:23, 2 Kings 10:26, 1 Chronicles 1:36, 1 Chronicles 1:42, 1
Chronicles 6:64, 1 Chronicles 21:19, 2 Chronicles 6:1, 2 Chronicles 6:2, 2
Chronicles 6:35, 2 Chronicles 20:30, Ezra 8:8, Ezra 8:23, Job 3:20, Job 4:12,
Job 4:18, Job 5:14, Job 6:2, Job 6:7, Job 6:29, Job 9:23, Job 12:10, Job 13:15,
Job 14:3, Job 15:27, Job 20:6, Job 20:14, Job 22:16, Job 23:5, Job 25:5, Job
27:20, Job 28:24, Job 29:11, Job 30:2, Job 33:4, Job 34:24, Job 34:34, Job
36:30, Job 37:22, Job 39:22, Job 41:9, Psalms 3:3, Psalms 12:7, Psalms 21:12,
Psalms 24:10, Psalms 26:12, Psalms 29:4, Psalms 34:15, Psalms 37:3, Psalms
37:23, Psalms 38:7, Psalms 39:8, Psalms 44:7, Psalms 46:6, Psalms 58:2, Psalms
60:7, Psalms 63:4, Psalms 65:12, Psalms 68:28, Psalms 69:27, Psalms 69:34,
Psalms 72:12, Psalms 73:16, Psalms 74:12, Psalms 83:9, Psalms 87:2, Psalms
89:36, Psalms 91:11, Psalms 103:16, Psalms 104:31, Psalms 106:17, Psalms
106:39, Psalms 107:35, Psalms 108:1, Psalms 110:7, Psalms 115:11, Psalms
118:18, Psalms 119:42, Psalms 119:92, Psalms 119:143, Psalms 120:5, Psalms
132:14, Psalms 132:16, Psalms 135:3, Psalms 136:4, Psalms 139:7, Psalms 139:13,
Proverbs 2:5, Proverbs 2:17, Proverbs 4:6, Proverbs 4:14, Proverbs 5:7,
Proverbs 8:25, Proverbs 10:10, Proverbs 13:16, Proverbs 14:19, Proverbs 15:4,
Proverbs 15:30, Proverbs 17:1, Proverbs 17:16, Proverbs 19:3, Proverbs 19:15,
Proverbs 20:22, Proverbs 21:29, Proverbs 22:22, Proverbs 23:1, Proverbs 24:30,
Proverbs 25:10, Proverbs 25:15, Proverbs 27:16, Proverbs 28:15, Proverbs 29:4,
Proverbs 29:10, Proverbs 30:25, Proverbs 30:30, Proverbs 31:9, Proverbs 31:23,
Ecclesiastes 3:6, Ecclesiastes 4:11, Ecclesiastes 10:7, Song of Solomon 1:16,
Song of Solomon 4:15, Isaiah 7:7, Isaiah 10:30, Isaiah 26:7, Isaiah 43:16,
Isaiah 45:25, Isaiah 49:11, Isaiah 57:2, Jeremiah 2:14, Jeremiah 18:3, Jeremiah
29:15, Jeremiah 29:27, Jeremiah 30:12, Jeremiah 48:21, Jeremiah 49:15,
Lamentations 3:7, Ezekiel 20:10, Daniel 6:19, Amos 5:7, Nahum 1:13, Matthew
2:3, Matthew 2:14, Matthew 6:8, Matthew 6:27, Matthew 7:29, Matthew 9:21,
Matthew 14:4, Matthew 14:33, Matthew 15:9, Matthew 17:26, Matthew 22:17,
Matthew 22:41, Matthew 24:17, Matthew 25:38, Matthew 26:8, Matthew 26:23, Mark
2:27, Mark 4:18, Mark 7:22, Mark 12:39, Mark 12:42, Mark 14:8, Luke 1:8, Luke
1:72, Luke 4:24, Luke 8:26, Luke 11:38, Luke 12:12, Luke 12:25, Luke 12:59,
Luke 14:4, Luke 14:24, Luke 14:27, Luke 18:35, Luke 22:48, Luke 23:13, Luke
23:45, John 2:3, John 4:13, John 5:17, John 7:6, John 9:37, John 10:22, John
10:34, John 11:12, Acts 3:3, Acts 16:32, Acts 24:9, Romans 5:6, Romans 6:8,
Romans 9:16, Romans 9:18, Romans 10:4, Romans 11:14, Romans 11:19, 1
Corinthians 1:5, 1 Corinthians 2:5, 1 Corinthians 7:33, 1 Corinthians 16:18, 2
Corinthians 6:12, 2 Corinthians 11:29, Colossians 4:5, 1 Thessalonians 4:4, 2
Timothy 1:7, Hebrews 3:4, James 5:1, 1 John 1:10, Revelation 2:6, Genesis 3:20,
Genesis 9:24, Genesis 26:33, Genesis 30:24, Genesis 34:4, Genesis 37:11,
Genesis 41:29, Genesis 41:41, Genesis 47:5, Genesis 47:8, Exodus 8:32, Exodus
18:27, Exodus 25:6, Exodus 25:30, Exodus 35:8, Exodus 35:13, Exodus 36:23,
Exodus 39:34, Leviticus 3:7, Leviticus 14:26, Leviticus 17:16, Leviticus 23:44,
Leviticus 25:24, Leviticus 25:48, Numbers 6:27, Numbers 11:14, Numbers 23:30,
Numbers 26:49, Numbers 26:61, Numbers 34:18, Deuteronomy 15:13, Deuteronomy
28:50, Joshua 14:5, Joshua 21:18, Joshua 21:22, Judges 6:7, Judges 8:13, Judges
14:11, Judges 20:7, 2 Samuel 11:14, 2 Samuel 22:23, 1 Kings 1:49, 1 Kings 6:26,
1 Kings 10:18, 1 Kings 11:39, 1 Kings 16:32, 1 Kings 18:2, 1 Kings 18:8, 2
Kings 2:25, 2 Kings 7:11, 2 Kings 13:15, 2 Kings 19:36, 1 Chronicles 2:1, 1
Chronicles 2:31, 1 Chronicles 9:43, 1 Chronicles 11:7, 1 Chronicles 14:12, 1
Chronicles 21:27, 2 Chronicles 10:13, 2 Chronicles 27:6, Ezra 8:34, Nehemiah
12:9, Job 3:4, Job 6:17, Job 8:20, Job 10:2, Job 10:9, Job 10:21, Job 11:19,
Job 15:8, Job 15:13, Job 18:13, Job 18:20, Job 20:27, Job 22:9, Job 24:4, Job
24:7, Job 26:13, Job 28:20, Job 29:3, Job 32:13, Job 33:8, Job 33:13, Job
35:12, Job 37:17, Job 38:7, Job 38:23, Job 39:9, Job 40:16, Job 40:21, Psalms
9:9, Psalms 12:3, Psalms 18:49, Psalms 22:6, Psalms 24:3, Psalms 25:13, Psalms
27:11, Psalms 30:4, Psalms 33:7, Psalms 34:12, Psalms 35:6, Psalms 37:4, Psalms
37:11, Psalms 37:24, Psalms 45:13, Psalms 49:16, Psalms 50:4, Psalms 51:12,
Psalms 60:10, Psalms 61:8, Psalms 75:7, Psalms 78:34, Psalms 78:72, Psalms
91:2, Psalms 98:7, Psalms 101:1, Psalms 102:8, Psalms 104:17, Psalms 105:31,
Psalms 113:1, Psalms 116:7, Psalms 119:9, Psalms 119:37, Psalms 119:76, Psalms
119:117, Psalms 119:118, Psalms 119:128, Psalms 119:138, Psalms 119:158, Psalms
119:161, Psalms 124:4, Psalms 135:13, Psalms 139:3, Psalms 147:17, Psalms
148:1, Psalms 148:5, Proverbs 3:9, Proverbs 5:11, Proverbs 6:9, Proverbs 8:10,
Proverbs 9:3, Proverbs 9:11, Proverbs 11:31, Proverbs 12:1, Proverbs 12:15,
Proverbs 13:12, Proverbs 17:12, Proverbs 17:21, Proverbs 18:3, Proverbs 18:12,
Proverbs 20:6, Proverbs 20:7, Proverbs 20:27, Proverbs 21:10, Proverbs 22:8,
Proverbs 25:4, Proverbs 25:27, Proverbs 25:28, Proverbs 26:16, Proverbs 28:21,
Proverbs 29:14, Proverbs 29:21, Proverbs 31:24, Ecclesiastes 7:17, Ecclesiastes
7:19, Ecclesiastes 10:2, Isaiah 3:20, Isaiah 7:11, Isaiah 32:1, Isaiah 49:3,
Isaiah 51:21, Isaiah 63:4, Isaiah 66:21, Jeremiah 25:8, Jeremiah 29:29,
Jeremiah 32:10, Jeremiah 46:17, Jeremiah 51:40, Lamentations 5:17, Ezekiel
16:62, Ezekiel 20:19, Joel 2:29, Amos 7:5, Zechariah 11:4, Malachi 3:9, Matthew
2:21, Matthew 4:11, Matthew 8:5, Matthew 16:7, Matthew 16:10, Matthew 16:20,
Matthew 18:22, Matthew 19:19, Matthew 22:6, Matthew 27:33, Matthew 27:44,
Matthew 27:49, Mark 6:52, Mark 9:29, Mark 10:7, Mark 13:6, Luke 1:62, Luke
2:32, Luke 4:4, Luke 6:27, Luke 6:43, Luke 7:15, Luke 10:14, Luke 10:29, Luke
11:28, Luke 11:47, Luke 12:9, Luke 15:28, Luke 19:16, John 6:62, John 7:50,
John 13:25, John 16:3, Acts 3:5, Acts 13:44, Acts 13:51, Acts 24:4, Romans 4:4,
Romans 7:14, Romans 8:16, Romans 8:37, 1 Corinthians 10:31, 1 Corinthians 12:1,
1 Corinthians 12:30, 1 Corinthians 13:5, 1 Corinthians 14:13, 1 Corinthians
15:57, 2 Corinthians 11:8, Ephesians 3:12, Philippians 2:20, Philippians 4:17,
Colossians 1:1, 1 Timothy 2:4, 2 Timothy 2:6, 2 Timothy 3:5, Hebrews 10:18,
Hebrews 13:13, James 1:7, James 4:17, 1 Peter 2:1, 3 John 1:4, Revelation 20:7,
Genesis 5:7, Genesis 8:10, Genesis 10:11, Genesis 12:14, Genesis 17:2, Genesis
27:43, Genesis 29:1, Genesis 29:24, Genesis 32:23, Genesis 35:19, Genesis
46:22, Exodus 4:24, Exodus 8:4, Exodus 13:10, Exodus 16:27, Exodus 22:23,
Exodus 29:6, Exodus 30:38, Exodus 35:9, Exodus 40:23, Leviticus 11:30,
Leviticus 21:22, Leviticus 27:17, Numbers 3:17, Numbers 4:38, Numbers 7:78,
Numbers 16:35, Numbers 23:20, Numbers 24:12, Numbers 33:16, Numbers 34:24,
Deuteronomy 6:14, Deuteronomy 6:16, Deuteronomy 12:19, Deuteronomy 20:10,
Deuteronomy 28:19, Deuteronomy 32:28, Joshua 8:28, Joshua 10:38, Joshua 15:36,
Joshua 21:24, Judges 4:12, Judges 5:22, Judges 5:25, Judges 7:10, Ruth 1:3, 1
Samuel 14:51, 1 Samuel 18:2, 1 Samuel 18:16, 1 Samuel 20:28, 2 Samuel 5:4, 2
Samuel 5:22, 2 Samuel 22:28, 1 Kings 3:24, 1 Kings 8:55, 1 Kings 10:23, 1 Kings
12:1, 1 Kings 20:8, 1 Kings 20:43, 2 Kings 2:20, 2 Kings 4:18, 2 Kings 4:33, 2
Kings 15:22, 2 Kings 17:40, 1 Chronicles 5:3, 1 Chronicles 17:2, 1 Chronicles
18:12, 1 Chronicles 23:1, 1 Chronicles 25:8, 1 Chronicles 26:13, 2 Chronicles
9:22, 2 Chronicles 10:1, 2 Chronicles 16:5, 2 Chronicles 25:2, Ezra 10:26,
Nehemiah 7:43, Nehemiah 11:2, Job 2:6, Job 5:11, Job 7:17, Job 9:22, Job 9:28,
Job 12:16, Job 14:9, Job 15:5, Job 15:35, Job 17:10, Job 21:12, Job 21:14, Job
28:26, Job 31:3, Job 36:4, Job 36:12, Job 38:3, Job 38:18, Job 38:35, Job
41:17, Psalms 2:5, Psalms 5:4, Psalms 7:7, Psalms 9:2, Psalms 15:2, Psalms
18:22, Psalms 26:11, Psalms 31:5, Psalms 32:3, Psalms 33:4, Psalms 33:14,
Psalms 35:23, Psalms 37:16, Psalms 38:14, Psalms 44:23, Psalms 45:12, Psalms
45:15, Psalms 47:2, Psalms 51:5, Psalms 55:6, Psalms 55:11, Psalms 56:5, Psalms
69:24, Psalms 78:14, Psalms 78:36, Psalms 78:42, Psalms 78:65, Psalms 83:15,
Psalms 85:10, Psalms 87:6, Psalms 88:7, Psalms 88:10, Psalms 88:11, Psalms
89:26, Psalms 89:34, Psalms 92:2, Psalms 95:6, Psalms 96:6, Psalms 97:5, Psalms
98:5, Psalms 102:4, Psalms 102:20, Psalms 103:15, Psalms 105:25, Psalms 107:39,
Psalms 109:7, Psalms 110:5, Psalms 118:5, Psalms 118:16, Psalms 119:64, Psalms
119:69, Psalms 119:84, Psalms 119:85, Psalms 119:150, Psalms 127:3, Psalms
129:6, Psalms 136:13, Psalms 137:1, Psalms 146:3, Psalms 147:5, Proverbs 1:3,
Proverbs 1:6, Proverbs 2:2, Proverbs 3:15, Proverbs 3:25, Proverbs 6:24,
Proverbs 6:34, Proverbs 7:15, Proverbs 8:6, Proverbs 8:19, Proverbs 10:15,
Proverbs 10:27, Proverbs 11:8, Proverbs 12:2, Proverbs 15:23, Proverbs 17:7,
Proverbs 18:2, Proverbs 20:21, Proverbs 20:23, Proverbs 21:3, Proverbs 25:12,
Proverbs 26:23, Proverbs 26:24, Proverbs 30:5, Proverbs 31:31, Ecclesiastes
1:5, Ecclesiastes 2:5, Ecclesiastes 6:1, Ecclesiastes 7:3, Isaiah 24:10, Isaiah
32:5, Isaiah 40:23, Isaiah 41:21, Isaiah 49:24, Jeremiah 2:16, Jeremiah 4:25,
Jeremiah 5:18, Jeremiah 5:25, Jeremiah 6:18, Jeremiah 13:26, Jeremiah 14:5,
Jeremiah 25:37, Jeremiah 46:1, Jeremiah 48:24, Lamentations 3:22, Lamentations
5:22, Ezekiel 6:7, Ezekiel 23:26, Daniel 1:6, Micah 6:11, Zechariah 11:15,
Matthew 5:38, Matthew 7:18, Matthew 7:19, Matthew 8:22, Matthew 9:3, Matthew
15:21, Matthew 20:32, Matthew 26:12, Mark 1:8, Mark 6:16, Mark 6:30, Mark 15:6,
Mark 15:27, Luke 1:28, Luke 1:68, Luke 1:71, Luke 1:77, Luke 2:45, Luke 4:10,
Luke 9:53, Luke 10:12, Luke 10:28, Luke 12:29, Luke 14:13, Luke 17:12, Luke
18:18, Luke 18:23, Luke 18:41, Luke 20:27, Luke 20:34, Luke 21:38, Luke 22:16,
John 4:48, John 5:12, John 8:4, John 8:51, John 13:23, John 14:20, John 17:4,
John 18:40, John 21:5, Acts 5:30, Acts 7:48, Acts 8:23, Acts 10:20, Acts 14:12,
Acts 16:28, Acts 19:39, Acts 22:15, Romans 4:15, Romans 9:24, Romans 12:10,
Romans 13:10, 1 Corinthians 2:2, 1 Corinthians 2:15, 1 Corinthians 3:16, 2
Corinthians 10:3, Galatians 1:22, Galatians 6:3, Ephesians 3:3, Ephesians 6:2,
Colossians 2:17, 1 Thessalonians 1:7, 1 Thessalonians 3:11, 1 Thessalonians
5:10, 2 Thessalonians 3:2, 1 Timothy 3:3, 2 Timothy 2:7, 2 Timothy 4:7,
Philemon 1:18, Hebrews 8:2, 1 Peter 5:14, Revelation 2:21, Revelation 18:5,
Genesis 5:10, Genesis 5:19, Genesis 5:30, Genesis 9:25, Genesis 13:15, Genesis
16:9, Genesis 16:14, Genesis 21:15, Genesis 24:4, Genesis 26:13, Genesis 27:6,
Genesis 41:6, Genesis 41:23, Genesis 44:24, Genesis 47:21, Genesis 50:22,
Exodus 1:5, Exodus 4:22, Exodus 5:6, Exodus 7:23, Exodus 9:26, Exodus 26:18,
Exodus 36:25, Exodus 37:14, Leviticus 2:15, Leviticus 19:7, Leviticus 23:29,
Leviticus 24:12, Numbers 7:30, Numbers 7:72, Numbers 26:19, Numbers 26:24,
Numbers 27:9, Numbers 31:7, Numbers 33:44, Numbers 35:1, Deuteronomy 5:12,
Deuteronomy 12:13, Joshua 1:12, Joshua 3:12, Joshua 15:41, Joshua 21:39, Judges
6:36, Judges 10:2, Judges 12:12, Ruth 3:12, 1 Samuel 12:25, 1 Samuel 14:44, 1
Samuel 18:3, 1 Samuel 21:10, 1 Samuel 27:4, 2 Samuel 13:27, 1 Kings 1:43, 1
Kings 2:2, 1 Kings 4:26, 1 Kings 6:23, 1 Kings 8:13, 1 Kings 11:42, 1 Kings
15:21, 1 Kings 16:1, 2 Kings 7:20, 2 Kings 10:20, 2 Kings 14:22, 2 Kings 19:17,
2 Kings 20:21, 1 Chronicles 2:33, 1 Chronicles 6:55, 1 Chronicles 8:34, 1
Chronicles 16:17, 1 Chronicles 16:24, 1 Chronicles 22:17, 1 Chronicles 26:15, 2
Chronicles 11:10, 2 Chronicles 21:18, 2 Chronicles 26:2, 2 Chronicles 34:29,
Esther 1:2, Job 4:17, Job 7:6, Job 7:9, Job 8:13, Job 9:10, Job 10:11, Job
15:3, Job 17:16, Job 23:2, Job 26:4, Job 29:7, Job 29:17, Job 30:5, Job 30:13,
Job 33:6, Job 33:7, Job 34:9, Job 35:5, Job 36:10, Job 36:15, Job 38:19, Job
39:15, Job 39:17, Job 40:7, Job 40:22, Job 41:18, Psalms 5:12, Psalms 6:5,
Psalms 9:7, Psalms 16:7, Psalms 16:10, Psalms 18:40, Psalms 23:3, Psalms 29:1,
Psalms 29:5, Psalms 31:12, Psalms 37:17, Psalms 37:35, Psalms 39:2, Psalms
44:14, Psalms 49:3, Psalms 52:3, Psalms 54:5, Psalms 59:4, Psalms 63:7, Psalms
65:6, Psalms 65:11, Psalms 68:5, Psalms 74:10, Psalms 77:8, Psalms 77:15,
Psalms 78:39, Psalms 78:44, Psalms 79:4, Psalms 79:5, Psalms 80:10, Psalms
80:13, Psalms 81:6, Psalms 94:16, Psalms 96:3, Psalms 105:10, Psalms 105:28,
Psalms 105:40, Psalms 106:16, Psalms 109:25, Psalms 111:7, Psalms 119:74,
Psalms 119:80, Psalms 119:104, Psalms 119:132, Psalms 119:152, Psalms 124:2,
Psalms 136:11, Psalms 139:2, Psalms 139:8, Psalms 139:9, Psalms 139:24, Psalms
141:1, Psalms 144:6, Psalms 144:10, Psalms 147:13, Psalms 149:4, Psalms 150:1,
Proverbs 1:15, Proverbs 2:9, Proverbs 2:20, Proverbs 3:26, Proverbs 4:7,
Proverbs 5:21, Proverbs 6:16, Proverbs 6:19, Proverbs 6:20, Proverbs 9:16,
Proverbs 10:7, Proverbs 10:30, Proverbs 13:6, Proverbs 15:5, Proverbs 15:33,
Proverbs 16:2, Proverbs 16:29, Proverbs 19:11, Proverbs 20:10, Proverbs 22:13,
Proverbs 25:9, Proverbs 26:3, Proverbs 26:7, Proverbs 26:10, Proverbs 27:20,
Proverbs 29:26, Proverbs 31:26, Ecclesiastes 1:15, Ecclesiastes 3:7,
Ecclesiastes 7:7, Isaiah 19:9, Isaiah 35:5, Isaiah 40:25, Isaiah 40:29, Isaiah
43:8, Isaiah 54:7, Isaiah 57:12, Jeremiah 1:8, Jeremiah 10:6, Jeremiah 16:2,
Jeremiah 16:8, Jeremiah 17:12, Jeremiah 25:35, Jeremiah 39:7, Jeremiah 48:43,
Ezekiel 2:1, Ezekiel 4:12, Ezekiel 8:13, Ezekiel 16:58, Ezekiel 20:48, Ezekiel
21:17, Ezekiel 25:11, Ezekiel 27:14, Ezekiel 37:18, Ezekiel 42:19, Ezekiel
47:11, Hosea 8:8, Amos 6:3, Amos 7:6, Obadiah 1:2, Micah 5:11, Micah 5:14,
Nahum 3:6, Habakkuk 1:17, Habakkuk 2:20, Matthew 5:26, Matthew 7:17, Matthew
9:4, Matthew 17:13, Matthew 17:14, Matthew 23:6, Matthew 27:38, Matthew 27:66,
Matthew 28:6, Mark 1:17, Mark 3:25, Mark 9:4, Mark 10:26, Mark 14:2, Mark 15:8,
Luke 1:53, Luke 1:69, Luke 10:9, Luke 18:33, Luke 19:2, Luke 19:40, Luke 24:14,
John 1:1, John 1:17, John 1:28, John 4:28, John 6:69, John 7:14, John 8:50,
John 8:56, John 9:20, John 11:34, John 12:7, John 12:23, John 18:7, John 20:3,
Acts 2:3, Acts 2:27, Acts 9:35, Acts 13:3, Acts 19:30, Acts 26:17, Acts 27:14,
Romans 7:21, Romans 8:19, Romans 15:7, 1 Corinthians 1:8, 1 Corinthians 15:47,
2 Corinthians 4:3, 2 Corinthians 8:4, 2 Corinthians 9:1, Galatians 3:12,
Galatians 6:6, Ephesians 2:4, Philippians 1:30, Philippians 2:13, Colossians
1:3, 2 Timothy 3:1, 2 Timothy 3:12, Philemon 1:11, Hebrews 9:27, James 2:19, 1
John 2:3, 1 John 2:6, Revelation 2:4, Revelation 3:11, Revelation 6:3, Genesis
18:9, Genesis 20:15, Genesis 22:23, Genesis 29:5, Genesis 29:29, Genesis 31:11,
Genesis 31:19, Genesis 44:27, Exodus 9:30, Exodus 16:34, Exodus 19:15, Exodus
25:15, Exodus 26:34, Exodus 35:26, Exodus 38:20, Leviticus 6:23, Leviticus
19:27, Leviticus 19:35, Numbers 3:18, Numbers 7:15, Numbers 7:21, Numbers 7:27,
Numbers 7:33, Numbers 7:39, Numbers 7:45, Numbers 7:51, Numbers 7:57, Numbers
7:60, Numbers 7:63, Numbers 7:66, Numbers 7:69, Numbers 7:75, Numbers 7:81,
Numbers 11:7, Numbers 13:4, Numbers 14:17, Numbers 14:37, Numbers 18:10,
Numbers 24:19, Numbers 24:23, Deuteronomy 1:2, Deuteronomy 1:26, Deuteronomy
2:10, Deuteronomy 12:16, Deuteronomy 28:6, Deuteronomy 31:24, Deuteronomy
33:25, Joshua 7:8, Joshua 9:14, Joshua 15:46, Joshua 19:26, Joshua 21:37,
Judges 1:2, Judges 4:23, Judges 13:4, Judges 14:7, Judges 20:24, 1 Samuel
17:15, 1 Samuel 20:14, 1 Samuel 22:12, 2 Samuel 1:19, 2 Samuel 17:4, 2 Samuel
22:5, 2 Samuel 22:20, 2 Samuel 22:22, 1 Kings 9:2, 1 Kings 10:14, 1 Kings
12:17, 1 Kings 15:9, 2 Kings 8:20, 1 Chronicles 1:41, 1 Chronicles 5:11, 1
Chronicles 6:50, 1 Chronicles 7:33, 1 Chronicles 8:29, 1 Chronicles 11:31, 2
Chronicles 3:10, 2 Chronicles 9:13, 2 Chronicles 10:17, 2 Chronicles 21:8, 2
Chronicles 25:6, 2 Chronicles 28:17, Ezra 6:19, Ezra 7:5, Ezra 10:27, Job 5:12,
Job 5:20, Job 5:27, Job 6:18, Job 8:10, Job 11:8, Job 11:10, Job 11:12, Job
15:4, Job 15:7, Job 15:21, Job 16:22, Job 19:3, Job 19:19, Job 19:25, Job 20:3,
Job 20:29, Job 22:2, Job 22:26, Job 23:15, Job 28:17, Job 31:37, Job 34:12, Job
34:25, Job 35:3, Job 36:17, Job 38:25, Job 38:26, Job 38:34, Job 38:39, Job
39:3, Job 39:8, Job 40:19, Job 41:20, Psalms 5:2, Psalms 14:5, Psalms 18:19,
Psalms 18:46, Psalms 19:1, Psalms 19:11, Psalms 22:2, Psalms 22:10, Psalms
28:8, Psalms 29:10, Psalms 34:1, Psalms 37:8, Psalms 44:9, Psalms 46:8, Psalms
62:2, Psalms 64:1, Psalms 66:13, Psalms 67:1, Psalms 68:31, Psalms 69:21,
Psalms 69:30, Psalms 71:10, Psalms 74:17, Psalms 76:9, Psalms 77:9, Psalms
77:11, Psalms 78:16, Psalms 83:11, Psalms 88:4, Psalms 89:21, Psalms 89:33,
Psalms 89:45, Psalms 91:12, Psalms 96:9, Psalms 102:21, Psalms 107:20, Psalms
111:3, Psalms 118:28, Psalms 119:2, Psalms 119:6, Psalms 119:130, Psalms 129:7,
Psalms 136:1, Psalms 137:9, Psalms 138:5, Psalms 139:11, Psalms 144:5, Psalms
145:3, Psalms 146:5, Psalms 149:2, Proverbs 1:8, Proverbs 4:3, Proverbs 4:8,
Proverbs 4:11, Proverbs 5:6, Proverbs 5:23, Proverbs 6:2, Proverbs 7:5,
Proverbs 11:1, Proverbs 11:4, Proverbs 12:9, Proverbs 13:9, Proverbs 13:10,
Proverbs 15:3, Proverbs 15:17, Proverbs 15:25, Proverbs 18:11, Proverbs 19:16,
Proverbs 19:20, Proverbs 21:19, Proverbs 21:24, Proverbs 24:21, Proverbs 29:23,
Proverbs 31:28, Ecclesiastes 5:9, Ecclesiastes 10:11, Song of Solomon 1:2, Song
of Solomon 6:12, Isaiah 9:14, Isaiah 13:12, Isaiah 34:8, Isaiah 40:8, Isaiah
43:22, Isaiah 50:5, Isaiah 63:2, Jeremiah 3:4, Jeremiah 22:27, Jeremiah 31:25,
Jeremiah 46:20, Jeremiah 49:6, Jeremiah 49:39, Lamentations 3:66, Ezekiel
23:16, Ezekiel 30:19, Ezekiel 41:14, Hosea 7:15, Joel 2:4, Amos 1:15, Amos
5:10, Amos 5:21, Zechariah 5:10, Zechariah 9:6, Matthew 1:1, Matthew 6:29,
Matthew 9:29, Matthew 10:20, Matthew 11:3, Matthew 12:19, Matthew 13:10,
Matthew 22:18, Matthew 23:9, Matthew 25:6, Matthew 26:5, Matthew 26:14, Matthew
26:49, Mark 4:33, Mark 12:21, Mark 16:4, Luke 1:67, Luke 2:29, Luke 5:39, Luke
7:46, Luke 8:36, Luke 11:15, Luke 15:31, Luke 17:26, Luke 20:29, Luke 22:50,
Luke 22:63, John 1:27, John 4:33, John 11:10, John 11:26, John 12:4, John
12:31, John 12:37, John 13:9, John 18:8, Acts 2:12, Acts 3:17, Acts 5:20, Acts
8:28, Acts 9:33, Acts 21:12, Romans 4:7, Romans 8:31, Romans 10:11, 1
Corinthians 1:23, 1 Corinthians 12:22, 1 Corinthians 15:21, 1 Corinthians
15:38, Galatians 4:7, Galatians 5:19, Ephesians 3:1, Ephesians 4:7, 1
Thessalonians 2:3, 1 Thessalonians 5:11, 2 Thessalonians 2:6, 1 Timothy 2:14, 2
Timothy 2:12, 2 Timothy 2:17, James 2:7, James 4:7, James 4:15, 1 Peter 4:5,
Genesis 6:11, Genesis 11:19, Genesis 11:21, Genesis 24:38, Genesis 25:24,
Genesis 29:31, Genesis 31:20, Genesis 32:14, Genesis 42:12, Genesis 42:18,
Genesis 45:20, Exodus 18:24, Exodus 37:15, Exodus 39:4, Leviticus 7:3,
Leviticus 8:20, Leviticus 23:35, Leviticus 25:37, Numbers 3:24, Numbers 3:29,
Deuteronomy 2:3, Deuteronomy 15:23, Deuteronomy 23:8, Deuteronomy 26:6, Joshua
8:25, Joshua 8:30, Judges 2:8, Judges 3:17, Judges 9:42, Ruth 4:8, 1 Samuel
17:24, 1 Samuel 30:25, 2 Samuel 11:22, 2 Samuel 19:23, 1 Kings 4:15, 1 Kings
7:10, 1 Kings 12:30, 1 Kings 15:11, 1 Kings 22:29, 2 Kings 3:16, 2 Kings 4:28,
2 Kings 5:19, 2 Kings 9:29, 2 Kings 24:6, 1 Chronicles 2:52, 1 Chronicles 7:22,
1 Chronicles 9:35, 1 Chronicles 21:11, 1 Chronicles 27:18, 2 Chronicles 2:5, 2
Chronicles 17:1, 2 Chronicles 18:28, Ezra 2:43, Ezra 8:4, Ezra 10:29, Ezra
10:43, Nehemiah 7:46, Job 3:16, Job 7:3, Job 7:5, Job 8:2, Job 8:9, Job 13:23,
Job 14:2, Job 15:34, Job 16:6, Job 23:10, Job 23:13, Job 24:23, Job 28:21, Job
30:20, Job 30:25, Job 30:26, Job 31:19, Job 31:23, Job 31:39, Job 33:19, Job
34:14, Job 36:13, Job 38:27, Job 40:5, Job 40:17, Job 41:1, Job 41:32, Job
42:2, Psalms 10:1, Psalms 12:8, Psalms 17:11, Psalms 18:21, Psalms 21:3, Psalms
22:30, Psalms 27:14, Psalms 37:18, Psalms 40:7, Psalms 44:10, Psalms 44:20,
Psalms 50:12, Psalms 50:14, Psalms 55:9, Psalms 57:7, Psalms 57:10, Psalms
58:3, Psalms 63:6, Psalms 63:9, Psalms 64:4, Psalms 69:19, Psalms 78:15, Psalms
78:37, Psalms 80:2, Psalms 81:8, Psalms 81:9, Psalms 89:29, Psalms 90:6, Psalms
92:1, Psalms 94:9, Psalms 103:4, Psalms 103:8, Psalms 104:32, Psalms 106:8,
Psalms 107:9, Psalms 107:12, Psalms 113:3, Psalms 115:18, Psalms 119:46, Psalms
119:159, Psalms 119:169, Psalms 132:5, Psalms 142:1, Psalms 143:6, Psalms
144:3, Psalms 145:8, Psalms 150:2, Proverbs 3:5, Proverbs 3:12, Proverbs 5:13,
Proverbs 8:28, Proverbs 9:12, Proverbs 10:18, Proverbs 11:30, Proverbs 12:5,
Proverbs 14:1, Proverbs 14:6, Proverbs 15:13, Proverbs 17:4, Proverbs 17:11,
Proverbs 18:15, Proverbs 19:9, Proverbs 19:14, Proverbs 19:22, Proverbs 20:25,
Proverbs 21:16, Proverbs 22:10, Proverbs 23:8, Proverbs 25:14, Proverbs 26:13,
Proverbs 27:11, Proverbs 29:22, Proverbs 30:10, Ecclesiastes 3:3, Ecclesiastes
6:4, Ecclesiastes 9:13, Ecclesiastes 10:19, Isaiah 1:27, Isaiah 1:30, Isaiah
9:13, Isaiah 21:6, Isaiah 37:37, Isaiah 42:23, Isaiah 60:3, Jeremiah 8:15,
Ezekiel 7:6, Ezekiel 35:14, Ezekiel 40:41, Amos 1:7, Amos 1:12, Amos 8:4, Micah
2:5, Micah 5:15, Habakkuk 2:11, Matthew 5:40, Matthew 8:15, Matthew 8:21,
Matthew 16:5, Matthew 18:4, Matthew 18:33, Matthew 21:36, Matthew 23:33,
Matthew 25:42, Matthew 26:19, Mark 3:20, Mark 6:1, Mark 6:47, Mark 9:8, Mark
10:18, Mark 10:22, Mark 14:45, Mark 15:22, Luke 12:16, Luke 17:35, Luke 18:19,
Luke 22:33, Luke 23:43, Luke 24:50, John 2:19, John 2:24, John 2:25, John 5:27,
John 12:5, John 15:27, John 19:37, Acts 5:11, Acts 6:6, Acts 7:9, Acts 7:59,
Acts 11:15, Acts 12:16, Acts 16:35, Acts 20:37, Acts 21:10, Acts 23:24, Acts
27:19, Romans 9:28, Romans 10:1, 1 Corinthians 11:28, 1 Corinthians 13:7, 1
Corinthians 14:31, Galatians 3:9, Galatians 5:16, Ephesians 1:6, Ephesians
4:12, 1 Thessalonians 5:4, 1 Thessalonians 5:7, 1 Timothy 1:6, 1 Timothy 6:18,
2 Timothy 1:14, Titus 1:8, Philemon 1:10, Hebrews 2:15, Hebrews 2:16, Hebrews
10:13, 1 John 3:19, 1 John 4:15, Revelation 12:2, Revelation 22:13, Genesis
4:20, Genesis 11:17, Genesis 24:25, Genesis 26:16, Genesis 27:35, Genesis
28:21, Genesis 37:30, Genesis 38:10, Genesis 38:15, Genesis 45:25, Exodus 9:32,
Exodus 10:20, Exodus 28:2, Exodus 28:5, Exodus 30:28, Exodus 30:35, Leviticus
5:5, Leviticus 9:20, Numbers 9:16, Numbers 11:27, Numbers 15:16, Numbers 26:39,
Numbers 30:10, Numbers 34:19, Deuteronomy 2:11, Deuteronomy 21:12, Deuteronomy
24:9, Joshua 4:1, Joshua 15:32, Joshua 15:54, Joshua 21:42, Judges 4:4, Judges
9:39, Judges 10:13, 1 Samuel 4:15, 1 Samuel 10:7, 1 Samuel 14:25, 1 Samuel
18:12, 1 Samuel 23:21, 2 Samuel 8:9, 2 Samuel 10:1, 2 Samuel 18:10, 2 Samuel
20:20, 2 Samuel 22:4, 2 Samuel 22:36, 1 Kings 1:18, 1 Kings 7:4, 1 Kings 16:17,
1 Kings 20:3, 1 Kings 22:21, 1 Kings 22:37, 2 Kings 1:5, 2 Kings 2:22, 1
Chronicles 3:10, 1 Chronicles 7:13, 1 Chronicles 27:33, 2 Chronicles 26:12,
Nehemiah 13:12, Job 4:6, Job 4:7, Job 4:9, Job 11:16, Job 14:15, Job 14:18, Job
15:11, Job 16:19, Job 20:9, Job 20:15, Job 22:4, Job 23:11, Job 24:19, Job
29:2, Job 29:18, Job 31:2, Job 32:1, Job 32:19, Job 34:31, Job 35:8, Job 37:19,
Job 37:24, Job 38:14, Job 39:21, Job 40:10, Psalms 4:7, Psalms 8:4, Psalms
18:3, Psalms 21:5, Psalms 22:5, Psalms 26:8, Psalms 27:8, Psalms 33:11, Psalms
34:6, Psalms 37:21, Psalms 41:11, Psalms 44:11, Psalms 49:15, Psalms 49:17,
Psalms 49:19, Psalms 55:20, Psalms 66:16, Psalms 68:15, Psalms 69:12, Psalms
71:17, Psalms 72:3, Psalms 72:8, Psalms 76:12, Psalms 78:1, Psalms 83:8, Psalms
85:4, Psalms 85:5, Psalms 86:8, Psalms 89:10, Psalms 92:13, Psalms 94:10,
Psalms 104:11, Psalms 104:20, Psalms 105:24, Psalms 107:25, Psalms 107:41,
Psalms 116:2, Psalms 118:7, Psalms 119:123, Psalms 119:144, Psalms 132:9,
Psalms 135:1, Psalms 136:9, Psalms 139:20, Psalms 141:9, Psalms 144:9, Psalms
147:18, Proverbs 2:10, Proverbs 2:21, Proverbs 3:19, Proverbs 4:1, Proverbs
5:3, Proverbs 8:22, Proverbs 11:19, Proverbs 12:17, Proverbs 15:2, Proverbs
15:18, Proverbs 16:11, Proverbs 16:24, Proverbs 17:10, Proverbs 18:5, Proverbs
19:27, Proverbs 21:26, Proverbs 22:3, Proverbs 23:17, Proverbs 25:1, Proverbs
27:2, Proverbs 27:12, Proverbs 28:9, Proverbs 28:25, Proverbs 30:12, Proverbs
30:26, Ecclesiastes 8:4, Ecclesiastes 10:12, Isaiah 19:5, Isaiah 22:6, Isaiah
22:19, Isaiah 63:13, Jeremiah 38:21, Jeremiah 50:10, Lamentations 3:30, Ezekiel
27:4, Ezekiel 30:2, Ezekiel 32:5, Ezekiel 32:11, Ezekiel 41:10, Daniel 1:9,
Daniel 3:30, Daniel 9:9, Hosea 3:2, Hosea 9:11, Joel 3:21, Amos 1:10, Habakkuk
1:7, Zechariah 2:1, Zechariah 6:3, Zechariah 12:14, Matthew 1:25, Matthew 4:5,
Matthew 5:36, Matthew 5:37, Matthew 7:28, Matthew 9:5, Matthew 12:37, Matthew
18:24, Matthew 20:3, Matthew 21:40, Matthew 22:5, Matthew 27:2, Matthew 27:45,
Mark 4:6, Mark 4:26, Mark 6:29, Mark 9:23, Mark 11:7, Mark 13:26, Luke 1:10,
Luke 5:23, Luke 8:56, Luke 9:37, Luke 12:2, Luke 13:30, Luke 17:16, Luke 21:3,
Luke 21:32, John 3:32, John 4:7, John 4:44, John 8:10, John 11:17, John 11:21,
John 12:11, John 17:19, John 20:9, John 20:24, Acts 4:35, Acts 6:10, Acts
10:25, Acts 10:29, Acts 11:2, Acts 13:23, Acts 16:21, Acts 19:3, Acts 20:26,
Romans 3:2, Romans 6:11, Romans 10:2, Romans 11:10, Romans 15:11, Romans 15:32,
1 Corinthians 12:18, 1 Corinthians 15:13, 1 Corinthians 15:46, 1 Corinthians
15:51, 2 Corinthians 3:17, 2 Corinthians 11:33, Galatians 4:5, Galatians 6:17,
Ephesians 4:2, Ephesians 4:11, Ephesians 5:25, Ephesians 5:32, Philippians 1:8,
Colossians 3:4, 1 Thessalonians 2:18, 1 Thessalonians 5:27, 2 Thessalonians
1:6, 1 Timothy 4:15, Titus 1:2, Hebrews 3:14, Hebrews 6:5, Hebrews 11:1, James
4:3, 1 Peter 5:4, 2 Peter 1:13, Genesis 1:4, Genesis 2:15, Genesis 3:21,
Genesis 5:13, Genesis 5:16, Genesis 6:1, Genesis 9:26, Genesis 11:15, Genesis
11:23, Genesis 11:25, Genesis 21:3, Genesis 25:33, Genesis 26:17, Genesis
26:19, Genesis 39:7, Genesis 41:4, Genesis 44:11, Genesis 50:9, Exodus 5:20,
Exodus 6:11, Exodus 12:32, Exodus 12:49, Exodus 31:9, Exodus 34:13, Exodus
36:31, Exodus 40:7, Leviticus 13:9, Leviticus 19:11, Leviticus 24:4, Leviticus
25:12, Leviticus 25:19, Numbers 7:48, Numbers 12:16, Numbers 16:24, Numbers
23:25, Numbers 29:40, Numbers 31:51, Numbers 33:50, Deuteronomy 2:16,
Deuteronomy 5:4, Deuteronomy 8:12, Deuteronomy 14:22, Deuteronomy 22:23,
Deuteronomy 32:26, Deuteronomy 32:29, Deuteronomy 34:7, Joshua 6:12, Joshua
9:3, Joshua 15:60, 1 Samuel 6:16, 1 Samuel 17:16, 1 Samuel 20:10, 1 Samuel
21:12, 1 Samuel 30:18, 2 Samuel 3:5, 2 Samuel 5:10, 2 Samuel 18:30, 1 Kings
2:41, 1 Kings 5:10, 1 Kings 5:15, 1 Kings 8:60, 1 Kings 17:4, 1 Kings 22:14, 2
Kings 12:14, 2 Kings 17:12, 2 Kings 21:20, 2 Kings 23:1, 1 Chronicles 2:26, 1
Chronicles 8:12, 1 Chronicles 9:7, 1 Chronicles 12:34, 1 Chronicles 14:3, 1
Chronicles 16:32, 1 Chronicles 16:34, 1 Chronicles 26:5, 1 Chronicles 27:19, 1
Chronicles 27:22, 2 Chronicles 8:4, 2 Chronicles 19:5, 2 Chronicles 20:28, 2
Chronicles 29:26, Ezra 10:22, Ezra 10:44, Nehemiah 6:4, Nehemiah 10:1, Nehemiah
10:9, Nehemiah 13:23, Esther 1:21, Job 6:15, Job 6:20, Job 7:19, Job 9:11, Job
10:12, Job 10:20, Job 11:2, Job 12:25, Job 14:17, Job 18:14, Job 22:24, Job
22:27, Job 23:14, Job 28:5, Job 29:14, Job 30:16, Job 30:27, Job 31:21, Job
32:8, Job 33:12, Job 33:30, Job 34:27, Job 36:26, Job 36:29, Job 38:37, Job
39:5, Job 39:10, Job 40:4, Psalms 1:6, Psalms 7:12, Psalms 7:16, Psalms 9:8,
Psalms 18:11, Psalms 18:38, Psalms 24:8, Psalms 29:11, Psalms 35:18, Psalms
37:19, Psalms 44:16, Psalms 50:18, Psalms 55:14, Psalms 59:1, Psalms 60:8,
Psalms 68:25, Psalms 69:32, Psalms 69:33, Psalms 72:7, Psalms 74:22, Psalms
78:32, Psalms 78:54, Psalms 81:15, Psalms 85:11, Psalms 89:42, Psalms 90:11,
Psalms 90:16, Psalms 93:5, Psalms 94:12, Psalms 95:4, Psalms 96:5, Psalms
102:10, Psalms 102:19, Psalms 103:19, Psalms 104:8, Psalms 105:11, Psalms
105:33, Psalms 106:31, Psalms 107:1, Psalms 108:9, Psalms 109:13, Psalms 114:7,
Psalms 116:17, Psalms 118:1, Psalms 118:29, Psalms 119:34, Psalms 119:72,
Psalms 119:87, Psalms 132:10, Psalms 136:12, Psalms 138:1, Psalms 146:4, Psalms
146:10, Proverbs 1:12, Proverbs 7:21, Proverbs 9:2, Proverbs 10:8, Proverbs
10:29, Proverbs 12:20, Proverbs 12:24, Proverbs 13:1, Proverbs 17:3, Proverbs
18:10, Proverbs 19:28, Proverbs 20:4, Proverbs 20:20, Proverbs 21:31, Proverbs
22:9, Proverbs 22:27, Proverbs 27:7, Proverbs 29:17, Proverbs 31:27,
Ecclesiastes 3:10, Ecclesiastes 5:17, Ecclesiastes 7:23, Ecclesiastes 11:4,
Song of Solomon 1:15, Song of Solomon 2:10, Isaiah 9:11, Isaiah 19:15, Isaiah
23:5, Isaiah 32:19, Isaiah 40:16, Isaiah 46:5, Jeremiah 18:2, Jeremiah 30:13,
Jeremiah 31:11, Jeremiah 41:17, Jeremiah 48:30, Lamentations 5:9, Lamentations
5:13, Lamentations 5:21, Ezekiel 21:16, Ezekiel 23:31, Ezekiel 36:9, Ezekiel
37:17, Ezekiel 39:22, Ezekiel 43:6, Ezekiel 48:2, Daniel 5:22, Hosea 2:4, Hosea
5:2, Hosea 6:7, Hosea 9:2, Hosea 12:3, Habakkuk 1:14, Zechariah 8:5, Zechariah
9:2, Zechariah 12:9, Matthew 4:1, Matthew 8:19, Matthew 9:24, Matthew 9:37,
Matthew 12:30, Matthew 13:56, Matthew 15:18, Matthew 19:22, Matthew 21:35,
Matthew 22:43, Matthew 26:21, Mark 1:11, Mark 4:4, Mark 5:3, Mark 11:20, Mark
14:15, Mark 14:63, Luke 2:16, Luke 7:13, Luke 8:40, Luke 9:51, Luke 11:23, Luke
12:17, Luke 12:40, Luke 14:34, Luke 21:27, Luke 22:3, Luke 23:18, Luke 24:38,
John 4:54, John 6:33, John 7:40, John 8:49, John 9:28, John 11:43, John 13:30,
John 15:13, John 20:5, Acts 4:5, Acts 24:17, Acts 27:42, Romans 1:19, Romans
6:12, Romans 6:15, Romans 14:1, 1 Corinthians 7:24, 1 Corinthians 12:9, 1
Corinthians 13:13, 2 Corinthians 2:11, Galatians 1:15, Philippians 2:11,
Philippians 3:14, Colossians 1:29, 2 Thessalonians 2:11, 2 Thessalonians 3:3, 2
Thessalonians 3:11, 2 Timothy 3:3, Philemon 1:20, Hebrews 1:1, Hebrews 9:16,
James 5:6, James 5:8, 1 Peter 1:14, 1 Peter 1:19, 1 Peter 4:15, Revelation
5:14, Revelation 14:17, Revelation 15:5, Genesis 14:4, Genesis 18:3, Genesis
21:1, Genesis 21:31, Genesis 25:29, Genesis 32:21, Genesis 32:24, Genesis
41:18, Genesis 42:11, Exodus 1:20, Exodus 4:12, Exodus 8:2, Exodus 9:5, Exodus
13:20, Exodus 20:21, Exodus 24:9, Exodus 24:13, Exodus 25:27, Exodus 28:9,
Exodus 29:11, Exodus 29:43, Exodus 30:1, Exodus 30:24, Exodus 35:33, Exodus
39:2, Exodus 39:17, Leviticus 8:34, Leviticus 19:37, Leviticus 26:29, Numbers
4:13, Numbers 4:24, Numbers 7:7, Numbers 7:18, Numbers 7:54, Numbers 10:30,
Numbers 10:34, Numbers 14:39, Numbers 25:1, Deuteronomy 1:5, Deuteronomy 8:4,
Deuteronomy 14:10, Deuteronomy 23:15, Joshua 4:16, Joshua 4:20, Joshua 5:3,
Judges 5:5, 1 Samuel 1:27, 1 Samuel 4:11, 1 Samuel 15:25, 2 Samuel 5:21, 2
Samuel 23:37, 1 Kings 6:17, 1 Kings 7:1, 1 Kings 14:25, 1 Kings 22:2, 2 Kings
5:9, 1 Chronicles 2:4, 1 Chronicles 2:10, 1 Chronicles 2:32, 1 Chronicles 2:35,
1 Chronicles 6:56, 1 Chronicles 9:3, 1 Chronicles 11:12, 1 Chronicles 11:39, 1
Chronicles 12:30, 1 Chronicles 13:1, 1 Chronicles 16:18, 1 Chronicles 16:28, 1
Chronicles 17:26, 1 Chronicles 18:2, 2 Chronicles 1:7, 2 Chronicles 3:6, 2
Chronicles 10:3, 2 Chronicles 24:15, Nehemiah 4:9, Job 3:18, Job 3:21, Job 5:6,
Job 6:30, Job 9:5, Job 19:17, Job 19:28, Job 20:11, Job 20:21, Job 21:29, Job
22:29, Job 23:8, Job 24:3, Job 31:15, Job 31:25, Job 36:21, Job 37:3, Job 38:5,
Job 40:8, Psalms 7:1, Psalms 13:5, Psalms 27:13, Psalms 34:8, Psalms 34:21,
Psalms 35:21, Psalms 35:28, Psalms 41:3, Psalms 41:12, Psalms 46:3, Psalms
49:4, Psalms 58:4, Psalms 68:20, Psalms 68:26, Psalms 68:34, Psalms 69:17,
Psalms 71:2, Psalms 71:9, Psalms 72:6, Psalms 74:18, Psalms 74:21, Psalms 75:4,
Psalms 75:6, Psalms 77:14, Psalms 78:40, Psalms 80:18, Psalms 83:2, Psalms
84:5, Psalms 88:15, Psalms 89:32, Psalms 89:38, Psalms 91:3, Psalms 95:8,
Psalms 96:4, Psalms 104:16, Psalms 105:41, Psalms 106:4, Psalms 106:29, Psalms
107:38, Psalms 109:10, Psalms 116:19, Psalms 119:58, Psalms 119:96, Psalms
119:124, Psalms 124:3, Psalms 135:11, Psalms 149:6, Proverbs 4:12, Proverbs
6:31, Proverbs 7:18, Proverbs 8:9, Proverbs 8:26, Proverbs 10:2, Proverbs
10:28, Proverbs 11:18, Proverbs 12:8, Proverbs 16:1, Proverbs 16:13, Proverbs
17:6, Proverbs 21:6, Proverbs 21:21, Proverbs 28:22, Proverbs 31:6, Proverbs
31:18, Ecclesiastes 7:9, Ecclesiastes 12:10, Song of Solomon 3:1, Isaiah 9:15,
Isaiah 10:11, Isaiah 25:3, Isaiah 26:3, Isaiah 37:18, Isaiah 55:4, Isaiah 60:1,
Jeremiah 2:12, Jeremiah 4:12, Jeremiah 10:24, Jeremiah 20:18, Jeremiah 32:34,
Jeremiah 51:4, Ezekiel 20:49, Ezekiel 32:19, Ezekiel 40:30, Hosea 7:11, Hosea
9:14, Hosea 12:13, Joel 1:16, Amos 2:5, Amos 5:13, Micah 1:10, Habakkuk 1:9,
Zechariah 1:13, Zechariah 6:4, Malachi 3:6, Matthew 10:40, Matthew 12:48,
Matthew 13:29, Matthew 15:13, Matthew 16:6, Matthew 17:19, Matthew 20:9,
Matthew 21:10, Matthew 22:9, Matthew 23:12, Matthew 24:33, Matthew 27:13, Mark
1:14, Mark 4:27, Mark 6:49, Mark 6:53, Luke 1:74, Luke 2:11, Luke 7:10, Luke
7:31, Luke 7:45, Luke 13:18, Luke 21:10, Luke 22:13, Luke 23:4, John 1:26, John
1:49, John 2:17, John 3:13, John 3:25, John 4:51, John 8:43, John 8:46, John
12:18, John 13:11, John 13:15, John 16:10, Acts 9:14, Acts 9:29, Acts 16:5,
Acts 17:8, Acts 17:9, Acts 21:18, Acts 26:28, Acts 27:18, Acts 28:30, Romans
4:1, Romans 6:14, Romans 7:19, Romans 8:12, Romans 10:7, Romans 12:5, Romans
14:2, 1 Corinthians 9:6, 1 Corinthians 9:23, 1 Corinthians 14:33, 1 Corinthians
16:9, 2 Corinthians 6:3, Ephesians 1:12, Colossians 3:14, 1 Thessalonians 2:7,
1 Timothy 6:7, 2 Timothy 2:16, Hebrews 7:4, James 2:20, James 5:19, 1 Peter
4:8, 1 John 4:21, 1 John 5:19, Revelation 19:3, Revelation 19:16, Genesis 2:6,
Genesis 5:26, Genesis 7:9, Genesis 8:14, Genesis 8:16, Genesis 21:9, Genesis
24:64, Genesis 37:5, Genesis 37:31, Genesis 40:2, Genesis 41:16, Exodus 2:21,
Exodus 15:14, Exodus 32:14, Exodus 33:21, Exodus 37:21, Leviticus 7:23,
Leviticus 10:5, Leviticus 11:6, Leviticus 11:41, Leviticus 14:57, Leviticus
24:15, Numbers 6:6, Numbers 7:36, Numbers 8:18, Numbers 10:20, Numbers 16:25,
Numbers 20:23, Numbers 26:1, Numbers 27:23, Deuteronomy 1:6, Deuteronomy 1:23,
Deuteronomy 32:1, Joshua 7:4, Joshua 15:20, Joshua 19:24, Judges 1:36, Judges
2:5, 1 Samuel 7:5, 1 Samuel 15:7, 1 Samuel 16:9, 2 Samuel 15:1, 2 Samuel 16:7,
2 Samuel 22:41, 1 Kings 1:16, 1 Kings 2:21, 1 Kings 4:22, 1 Kings 6:13, 1 Kings
15:28, 1 Kings 22:5, 2 Kings 20:4, 1 Chronicles 2:46, 1 Chronicles 6:74, 1
Chronicles 11:26, 2 Chronicles 17:12, 2 Chronicles 18:4, Job 3:10, Job 3:24,
Job 4:11, Job 5:15, Job 5:26, Job 6:26, Job 7:2, Job 7:16, Job 9:3, Job 9:15,
Job 11:7, Job 15:9, Job 15:31, Job 21:18, Job 22:14, Job 24:6, Job 25:4, Job
27:12, Job 28:18, Job 29:6, Job 29:16, Job 30:23, Job 30:28, Job 31:20, Job
31:32, Job 31:33, Job 34:17, Job 38:16, Job 38:20, Job 38:33, Job 39:13, Job
41:5, Psalms 1:2, Psalms 5:6, Psalms 7:2, Psalms 16:9, Psalms 20:3, Psalms
25:6, Psalms 33:17, Psalms 34:19, Psalms 35:5, Psalms 36:5, Psalms 36:11,
Psalms 37:6, Psalms 38:13, Psalms 38:19, Psalms 42:2, Psalms 45:5, Psalms 48:5,
Psalms 48:11, Psalms 51:7, Psalms 55:10, Psalms 55:17, Psalms 56:6, Psalms
68:12, Psalms 73:9, Psalms 78:52, Psalms 85:9, Psalms 91:9, Psalms 104:6,
Psalms 105:35, Psalms 107:14, Psalms 107:22, Psalms 109:11, Psalms 109:12,
Psalms 111:4, Psalms 112:4, Psalms 119:41, Psalms 119:43, Psalms 120:3, Psalms
125:4, Psalms 130:2, Psalms 132:17, Psalms 136:5, Psalms 136:14, Psalms 136:23,
Psalms 139:18, Psalms 143:2, Psalms 144:1, Psalms 145:10, Psalms 145:19, Psalms
146:6, Psalms 149:3, Proverbs 3:10, Proverbs 3:24, Proverbs 3:27, Proverbs
4:19, Proverbs 6:29, Proverbs 6:30, Proverbs 8:8, Proverbs 11:25, Proverbs
11:27, Proverbs 12:7, Proverbs 14:8, Proverbs 14:11, Proverbs 15:16, Proverbs
16:4, Proverbs 16:7, Proverbs 16:23, Proverbs 19:5, Proverbs 19:8, Proverbs
21:20, Proverbs 22:19, Proverbs 27:3, Proverbs 29:6, Proverbs 29:24, Proverbs
31:16, Ecclesiastes 1:18, Ecclesiastes 7:5, Ecclesiastes 10:9, Ecclesiastes
10:16, Song of Solomon 4:5, Song of Solomon 4:13, Isaiah 3:2, Isaiah 5:22,
Isaiah 10:9, Isaiah 11:5, Isaiah 13:6, Isaiah 24:19, Isaiah 28:14, Isaiah
33:10, Jeremiah 2:29, Jeremiah 17:9, Jeremiah 26:14, Jeremiah 29:20, Jeremiah
39:15, Ezekiel 6:2, Ezekiel 16:24, Ezekiel 16:50, Ezekiel 18:10, Ezekiel 26:1,
Ezekiel 48:27, Hosea 4:4, Amos 2:13, Amos 5:24, Micah 7:11, Nahum 3:2,
Zephaniah 1:2, Zechariah 5:7, Matthew 5:43, Matthew 10:33, Matthew 11:9,
Matthew 14:12, Matthew 14:27, Matthew 14:28, Matthew 23:22, Matthew 25:46, Mark
1:32, Mark 3:10, Mark 4:10, Mark 8:18, Mark 12:20, Mark 14:24, Mark 15:10, Luke
1:7, Luke 1:52, Luke 3:12, Luke 5:11, Luke 7:26, Luke 8:46, Luke 11:6, Luke
19:39, Luke 22:31, Luke 22:64, Luke 23:31, John 6:50, John 10:7, John 10:8,
John 10:35, John 12:43, Acts 2:5, Acts 3:1, Acts 4:22, Acts 8:21, Acts 9:5,
Acts 10:34, Acts 10:35, Acts 12:1, Acts 22:17, Acts 27:6, Romans 9:19, Romans
15:29, 1 Corinthians 3:11, 1 Corinthians 8:2, 1 Corinthians 11:13, 1
Corinthians 12:31, 1 Corinthians 14:17, 1 Corinthians 14:39, 1 Corinthians
15:19, 1 Corinthians 15:35, 2 Corinthians 2:2, 2 Corinthians 4:8, Galatians
6:7, Galatians 6:15, Ephesians 2:22, Ephesians 3:13, Philippians 3:6,
Colossians 4:18, 1 Timothy 4:7, 1 Timothy 5:25, 2 Timothy 2:11, Titus 2:15,
Philemon 1:2, Philemon 1:8, Hebrews 4:8, Hebrews 11:30, Hebrews 12:6, James
3:8, James 5:13, 3 John 1:7, Genesis 4:3, Genesis 18:4, Genesis 19:27, Genesis
21:6, Genesis 22:24, Genesis 25:25, Genesis 44:21, Exodus 6:24, Exodus 12:44,
Exodus 18:15, Exodus 20:6, Exodus 21:7, Exodus 23:26, Exodus 28:20, Exodus
31:2, Exodus 35:10, Exodus 35:20, Exodus 38:5, Leviticus 13:16, Leviticus
19:24, Leviticus 23:42, Leviticus 26:38, Numbers 2:14, Numbers 4:18, Numbers
4:20, Numbers 10:16, Numbers 10:26, Numbers 10:27, Numbers 13:11, Numbers
14:21, Numbers 26:41, Numbers 33:37, Deuteronomy 5:10, Deuteronomy 22:20,
Deuteronomy 28:23, Joshua 4:22, Joshua 18:18, Joshua 19:40, Judges 3:26, Judges
9:55, Ruth 3:8, 1 Samuel 2:24, 1 Samuel 5:1, 1 Samuel 14:35, 1 Samuel 14:42, 1
Samuel 18:20, 1 Samuel 22:16, 1 Samuel 31:11, 2 Samuel 3:2, 2 Samuel 11:6, 2
Samuel 14:28, 2 Samuel 15:37, 2 Samuel 17:5, 2 Samuel 21:11, 2 Samuel 22:50, 1
Kings 2:25, 1 Kings 4:11, 1 Kings 8:10, 1 Kings 11:3, 1 Kings 11:35, 1 Kings
12:26, 1 Kings 14:12, 1 Kings 18:14, 1 Kings 20:24, 2 Kings 21:23, 1 Chronicles
4:37, 1 Chronicles 11:42, 1 Chronicles 16:15, 1 Chronicles 23:3, 1 Chronicles
28:16, 2 Chronicles 18:1, 2 Chronicles 29:4, Nehemiah 2:4, Nehemiah 6:15,
Esther 9:11, Job 2:9, Job 4:4, Job 5:22, Job 6:9, Job 6:11, Job 8:8, Job 8:11,
Job 10:7, Job 13:26, Job 14:6, Job 15:2, Job 15:15, Job 17:3, Job 18:5, Job
18:15, Job 19:8, Job 19:20, Job 20:5, Job 20:10, Job 24:8, Job 29:10, Job
31:29, Job 35:7, Job 37:2, Psalms 4:4, Psalms 10:13, Psalms 16:3, Psalms 17:6,
Psalms 18:37, Psalms 21:11, Psalms 29:8, Psalms 35:3, Psalms 35:7, Psalms
37:37, Psalms 48:1, Psalms 50:15, Psalms 52:1, Psalms 58:6, Psalms 60:1, Psalms
66:5, Psalms 69:7, Psalms 73:5, Psalms 77:10, Psalms 78:17, Psalms 78:30,
Psalms 80:14, Psalms 89:37, Psalms 90:8, Psalms 90:9, Psalms 94:15, Psalms
97:9, Psalms 98:6, Psalms 102:12, Psalms 103:12, Psalms 105:36, Psalms 106:42,
Psalms 107:10, Psalms 110:2, Psalms 114:1, Psalms 115:16, Psalms 116:8, Psalms
119:119, Psalms 119:157, Psalms 129:2, Psalms 135:6, Psalms 136:10, Psalms
138:6, Psalms 145:5, Psalms 149:1, Proverbs 1:18, Proverbs 3:14, Proverbs 5:22,
Proverbs 8:3, Proverbs 8:11, Proverbs 9:14, Proverbs 11:12, Proverbs 11:23,
Proverbs 13:3, Proverbs 13:20, Proverbs 18:17, Proverbs 19:12, Proverbs 19:17,
Proverbs 19:18, Proverbs 19:24, Proverbs 20:1, Proverbs 20:3, Proverbs 21:12,
Proverbs 21:17, Proverbs 24:17, Proverbs 25:6, Ecclesiastes 6:5, Isaiah 7:15,
Isaiah 7:24, Isaiah 10:28, Isaiah 13:15, Isaiah 14:14, Isaiah 24:9, Jeremiah
2:4, Jeremiah 13:2, Jeremiah 25:24, Jeremiah 36:5, Ezekiel 1:2, Ezekiel 5:3,
Ezekiel 11:8, Ezekiel 16:21, Ezekiel 18:3, Ezekiel 28:6, Ezekiel 48:7, Ezekiel
48:23, Daniel 3:11, Daniel 4:29, Daniel 11:3, Micah 6:13, Habakkuk 1:11,
Matthew 4:9, Matthew 12:50, Matthew 13:4, Matthew 13:46, Matthew 20:2, Matthew
21:7, Matthew 22:2, Matthew 23:19, Matthew 27:35, Matthew 27:65, Mark 3:23,
Mark 4:2, Mark 6:23, Mark 9:3, Mark 9:24, Mark 11:5, Luke 1:30, Luke 2:14, Luke
9:47, Luke 10:15, Luke 11:45, Luke 13:23, Luke 15:19, Luke 20:8, Luke 22:38,
Luke 22:69, Luke 24:31, John 6:46, John 7:41, John 8:57, John 12:15, John 16:5,
John 16:29, Acts 2:26, Acts 5:14, Acts 9:20, Acts 10:46, Acts 12:5, Acts 15:9,
Acts 18:4, Acts 26:30, Romans 5:8, Romans 11:36, Romans 16:13, 1 Corinthians
14:36, Galatians 3:29, Ephesians 5:18, Ephesians 5:26, Ephesians 6:15, 1
Thessalonians 1:2, 1 Thessalonians 5:18, 2 Thessalonians 3:5, 1 Timothy 2:6,
Hebrews 1:7, Hebrews 4:10, Hebrews 5:9, Hebrews 10:14, James 1:10, James 2:26,
1 John 5:11, 1 John 5:12, Genesis 3:2, Genesis 11:11, Genesis 13:17, Genesis
17:24, Genesis 19:24, Genesis 27:10, Genesis 28:19, Genesis 37:24, Genesis
38:13, Exodus 4:29, Exodus 11:4, Exodus 14:15, Exodus 32:33, Exodus 36:21,
Leviticus 21:4, Leviticus 22:20, Leviticus 23:7, Leviticus 23:25, Numbers 1:54,
Numbers 4:4, Numbers 10:36, Numbers 11:19, Numbers 11:35, Numbers 15:34,
Numbers 22:10, Numbers 22:21, Numbers 26:31, Numbers 26:32, Numbers 26:50,
Numbers 27:16, Numbers 28:18, Numbers 29:23, Numbers 29:26, Deuteronomy 1:40,
Deuteronomy 13:1, Deuteronomy 19:20, Judges 9:47, Judges 9:53, Judges 13:25,
Judges 17:6, Judges 21:25, 1 Samuel 21:3, 1 Samuel 24:5, 2 Samuel 2:20, 2
Samuel 15:17, 2 Samuel 17:24, 2 Samuel 23:24, 1 Kings 2:16, 1 Kings 5:13, 1
Kings 6:36, 2 Kings 21:22, 1 Chronicles 4:13, 1 Chronicles 7:24, 1 Chronicles
9:21, 1 Chronicles 10:5, 1 Chronicles 16:8, 1 Chronicles 19:1, 1 Chronicles
26:18, 1 Chronicles 26:19, 2 Chronicles 15:7, 2 Chronicles 17:17, 2 Chronicles
32:16, Ezra 1:9, Ezra 7:8, Nehemiah 9:9, Job 3:3, Job 11:17, Job 12:15, Job
12:23, Job 15:16, Job 16:21, Job 17:14, Job 18:19, Job 20:19, Job 22:20, Job
26:3, Job 26:8, Job 27:19, Job 30:3, Job 30:6, Job 31:14, Job 32:14, Job 33:9,
Job 37:5, Job 38:13, Job 38:29, Psalms 9:11, Psalms 11:7, Psalms 13:1, Psalms
17:13, Psalms 18:12, Psalms 18:42, Psalms 21:6, Psalms 22:9, Psalms 24:5,
Psalms 25:2, Psalms 28:9, Psalms 31:3, Psalms 33:2, Psalms 34:10, Psalms 36:3,
Psalms 38:11, Psalms 41:1, Psalms 41:4, Psalms 41:13, Psalms 44:8, Psalms
44:13, Psalms 44:19, Psalms 56:9, Psalms 68:10, Psalms 68:24, Psalms 73:25,
Psalms 76:7, Psalms 78:13, Psalms 86:2, Psalms 89:28, Psalms 91:1, Psalms 91:6,
Psalms 94:17, Psalms 94:21, Psalms 96:7, Psalms 99:9, Psalms 104:2, Psalms
104:18, Psalms 105:1, Psalms 106:14, Psalms 106:27, Psalms 106:28, Psalms
106:32, Psalms 119:83, Psalms 119:99, Psalms 119:148, Psalms 140:6, Psalms
142:5, Psalms 145:4, Psalms 145:6, Psalms 147:10, Psalms 148:6, Proverbs 7:22,
Proverbs 10:23, Proverbs 11:7, Proverbs 12:3, Proverbs 14:26, Proverbs 14:28,
Proverbs 15:21, Proverbs 15:26, Proverbs 17:19, Proverbs 18:4, Proverbs 22:17,
Proverbs 23:13, Proverbs 23:31, Proverbs 26:20, Proverbs 28:26, Proverbs 29:13,
Proverbs 29:20, Ecclesiastes 4:6, Ecclesiastes 4:14, Ecclesiastes 8:6,
Ecclesiastes 12:7, Isaiah 5:3, Isaiah 10:19, Isaiah 33:3, Isaiah 33:17, Isaiah
38:22, Isaiah 49:17, Isaiah 62:7, Jeremiah 1:6, Jeremiah 7:19, Jeremiah 38:24,
Jeremiah 38:28, Jeremiah 39:12, Jeremiah 48:31, Ezekiel 1:17, Ezekiel 7:23,
Ezekiel 11:6, Ezekiel 20:37, Ezekiel 30:23, Daniel 1:12, Daniel 3:4, Daniel
3:8, Daniel 5:4, Daniel 6:28, Hosea 5:11, Hosea 14:1, Hosea 14:4, Amos 3:8,
Amos 5:20, Zechariah 11:14, Matthew 3:5, Matthew 5:42, Matthew 6:14, Matthew
8:14, Matthew 9:32, Matthew 15:20, Matthew 17:10, Matthew 17:18, Matthew 18:34,
Matthew 20:5, Matthew 20:14, Matthew 22:31, Matthew 23:8, Matthew 25:19,
Matthew 26:33, Matthew 26:60, Mark 2:1, Mark 6:13, Mark 7:34, Mark 9:30, Mark
14:34, Mark 15:9, Luke 1:39, Luke 1:63, Luke 1:64, Luke 1:78, Luke 3:35, Luke
4:3, Luke 4:21, Luke 6:19, Luke 10:10, Luke 11:41, Luke 12:32, Luke 14:22, Luke
17:23, Luke 18:2, Luke 18:10, Luke 22:7, Luke 24:6, John 1:3, John 6:70, John
11:13, John 14:16, John 19:3, Acts 4:15, Acts 4:18, Acts 5:7, Acts 5:35, Acts
7:54, Acts 7:57, Acts 13:9, Acts 14:10, Acts 20:17, Acts 22:23, Acts 23:32,
Acts 28:1, Romans 1:11, Romans 1:12, Romans 3:3, 1 Corinthians 3:14, 1
Corinthians 5:6, 1 Corinthians 10:9, 1 Corinthians 14:10, 1 Corinthians 15:17,
Galatians 2:11, Galatians 4:13, Galatians 5:14, Philippians 1:16, Philippians
3:20, Colossians 3:9, Hebrews 3:8, Hebrews 7:9, Hebrews 7:17, Hebrews 11:39, 2
Peter 1:2, Jude 1:20, Revelation 14:16, Genesis 4:21, Genesis 10:10, Genesis
17:4, Genesis 24:29, Genesis 24:52, Genesis 24:59, Genesis 29:26, Genesis
40:12, Genesis 41:11, Genesis 42:30, Genesis 43:31, Genesis 45:14, Genesis
50:16, Exodus 3:3, Exodus 3:19, Exodus 15:6, Exodus 15:10, Exodus 20:26, Exodus
21:31, Exodus 23:4, Exodus 25:3, Exodus 29:39, Exodus 33:15, Leviticus 7:11,
Leviticus 10:2, Leviticus 18:4, Numbers 2:33, Numbers 3:42, Numbers 4:22,
Numbers 5:12, Numbers 12:3, Numbers 15:19, Numbers 16:21, Numbers 26:53,
Numbers 26:56, Numbers 27:10, Numbers 29:29, Numbers 29:35, Numbers 31:29,
Numbers 31:36, Numbers 33:36, Deuteronomy 9:22, Deuteronomy 11:15, Deuteronomy
18:21, Deuteronomy 20:12, Deuteronomy 32:18, Joshua 19:15, Judges 1:23, Judges
2:21, Judges 13:18, 1 Samuel 1:14, 1 Samuel 3:19, 1 Samuel 11:14, 1 Samuel
16:15, 1 Samuel 28:11, 2 Samuel 1:7, 2 Samuel 8:8, 2 Samuel 15:28, 2 Samuel
15:29, 2 Samuel 22:27, 2 Samuel 22:38, 1 Kings 4:4, 1 Kings 4:20, 1 Kings 7:22,
1 Kings 17:15, 1 Chronicles 4:6, 1 Chronicles 4:15, 1 Chronicles 9:15, 1
Chronicles 11:24, 1 Chronicles 13:4, 1 Chronicles 16:12, 1 Chronicles 17:18, 2
Chronicles 7:15, 2 Chronicles 8:17, 2 Chronicles 9:3, 2 Chronicles 32:2, Ezra
5:7, Nehemiah 3:2, Nehemiah 3:9, Esther 4:6, Esther 9:23, Job 4:2, Job 4:5, Job
5:1, Job 11:14, Job 15:22, Job 16:5, Job 17:8, Job 19:5, Job 19:13, Job 21:16,
Job 23:7, Job 24:25, Job 27:8, Job 29:23, Job 30:10, Job 34:23, Job 39:1, Job
39:26, Psalms 2:9, Psalms 4:8, Psalms 6:8, Psalms 10:11, Psalms 16:6, Psalms
20:7, Psalms 21:1, Psalms 22:21, Psalms 24:1, Psalms 25:20, Psalms 33:5, Psalms
36:2, Psalms 39:3, Psalms 50:8, Psalms 56:1, Psalms 58:7, Psalms 63:10, Psalms
71:11, Psalms 76:3, Psalms 78:46, Psalms 78:56, Psalms 80:5, Psalms 88:18,
Psalms 89:47, Psalms 96:8, Psalms 102:25, Psalms 103:22, Psalms 104:9, Psalms
104:30, Psalms 106:10, Psalms 106:40, Psalms 106:41, Psalms 107:6, Psalms
107:13, Psalms 107:19, Psalms 107:28, Psalms 112:2, Psalms 118:11, Psalms
119:27, Psalms 135:9, Psalms 140:9, Proverbs 1:5, Proverbs 4:5, Proverbs 9:8,
Proverbs 10:3, Proverbs 10:31, Proverbs 12:22, Proverbs 15:10, Proverbs 15:15,
Proverbs 15:24, Proverbs 17:18, Proverbs 18:1, Proverbs 21:7, Proverbs 21:13,
Proverbs 23:9, Proverbs 23:22, Proverbs 24:28, Proverbs 26:6, Proverbs 26:21,
Proverbs 29:1, Proverbs 29:15, Proverbs 31:30, Isaiah 1:12, Isaiah 5:18, Isaiah
10:1, Isaiah 16:11, Isaiah 30:7, Isaiah 33:13, Isaiah 37:28, Isaiah 42:20,
Isaiah 43:7, Isaiah 55:8, Jeremiah 5:13, Jeremiah 34:6, Jeremiah 46:15,
Lamentations 3:14, Ezekiel 1:14, Ezekiel 8:9, Ezekiel 33:18, Ezekiel 39:12,
Ezekiel 43:26, Ezekiel 48:3, Ezekiel 48:6, Daniel 2:3, Daniel 8:20, Hosea 6:11,
Joel 2:24, Amos 3:13, Jonah 1:15, Micah 7:13, Habakkuk 3:7, Zephaniah 2:6,
Haggai 2:20, Zechariah 2:13, Matthew 5:6, Matthew 12:15, Matthew 14:29, Matthew
20:26, Matthew 21:20, Matthew 22:34, Matthew 24:19, Matthew 26:22, Mark 1:28,
Mark 1:30, Mark 6:6, Mark 6:19, Mark 7:2, Mark 8:14, Mark 10:4, Mark 13:17,
Mark 13:25, Luke 3:28, Luke 3:32, Luke 4:11, Luke 4:12, Luke 9:25, Luke 9:50,
Luke 12:6, Luke 13:22, Luke 15:10, Luke 16:14, Luke 18:30, Luke 22:24, Luke
24:4, John 1:10, John 6:38, John 7:51, John 9:40, John 10:15, John 14:5, Acts
1:1, Acts 2:15, Acts 4:8, Acts 9:28, Acts 22:4, Acts 23:2, Acts 27:25, Romans
2:16, Romans 5:3, Romans 16:14, Romans 16:21, 1 Corinthians 1:13, 1 Corinthians
7:8, 1 Corinthians 7:26, 1 Corinthians 11:14, 1 Corinthians 14:1, 2 Corinthians
10:11, Galatians 4:20, Ephesians 1:22, Ephesians 2:6, Ephesians 2:17, Ephesians
3:11, Ephesians 4:21, Ephesians 6:17, Philippians 2:4, 1 Timothy 3:4, 1 Timothy
5:19, Hebrews 2:5, Hebrews 5:4, Hebrews 8:12, Hebrews 13:24, James 3:15, 1
Peter 1:4, 2 Peter 2:7, 1 John 2:23, 1 John 3:4, Revelation 1:10, Revelation
3:16, Revelation 5:7, Revelation 8:2, Revelation 18:18, Genesis 8:7, Genesis
11:13, Genesis 25:3, Genesis 27:16, Genesis 31:44, Genesis 34:9, Genesis 35:23,
Genesis 36:9, Genesis 40:21, Genesis 42:23, Genesis 45:2, Genesis 48:12,
Genesis 50:18, Exodus 2:8, Exodus 12:38, Exodus 28:24, Exodus 33:23, Exodus
34:19, Leviticus 18:8, Leviticus 25:17, Numbers 3:48, Numbers 4:29, Numbers
10:15, Numbers 11:2, Numbers 11:6, Numbers 14:42, Numbers 22:14, Numbers 23:12,
Numbers 29:20, Deuteronomy 7:17, Deuteronomy 13:12, Deuteronomy 21:7, Joshua
16:2, Joshua 21:30, Joshua 21:36, Joshua 22:26, Judges 2:11, Judges 14:1,
Judges 21:20, 1 Samuel 4:22, 1 Samuel 17:6, 1 Samuel 28:5, 2 Samuel 3:4, 2
Samuel 6:14, 2 Samuel 12:12, 2 Samuel 21:21, 2 Samuel 22:47, 2 Samuel 23:22, 1
Kings 2:12, 1 Kings 6:37, 1 Kings 11:8, 1 Kings 11:30, 1 Kings 21:9, 2 Kings
8:17, 2 Kings 24:11, 1 Chronicles 5:22, 1 Chronicles 7:17, 1 Chronicles 15:22,
1 Chronicles 20:7, 2 Chronicles 6:40, 2 Chronicles 14:12, 2 Chronicles 20:8, 2
Chronicles 24:2, 2 Chronicles 28:14, 2 Chronicles 34:5, Ezra 4:4, Ezra 10:12,
Nehemiah 11:19, Job 1:11, Job 4:21, Job 6:3, Job 7:1, Job 9:27, Job 10:18, Job
12:20, Job 15:14, Job 15:24, Job 19:10, Job 19:21, Job 20:28, Job 23:6, Job
23:17, Job 30:18, Job 33:3, Job 33:25, Job 40:11, Job 41:10, Job 41:26, Psalms
9:12, Psalms 12:2, Psalms 13:3, Psalms 13:4, Psalms 22:8, Psalms 25:12, Psalms
29:2, Psalms 31:15, Psalms 38:4, Psalms 38:16, Psalms 41:9, Psalms 45:16,
Psalms 46:5, Psalms 58:1, Psalms 59:10, Psalms 60:5, Psalms 64:9, Psalms 74:13,
Psalms 78:45, Psalms 89:49, Psalms 92:10, Psalms 103:10, Psalms 105:5, Psalms
106:6, Psalms 107:11, Psalms 108:6, Psalms 109:19, Psalms 111:8, Psalms 112:8,
Psalms 118:26, Psalms 119:23, Psalms 119:88, Psalms 119:133, Psalms 136:6,
Psalms 136:16, Psalms 147:20, Proverbs 1:7, Proverbs 2:7, Proverbs 9:18,
Proverbs 10:20, Proverbs 10:25, Proverbs 13:24, Proverbs 14:21, Proverbs 16:12,
Proverbs 16:21, Proverbs 17:14, Proverbs 18:21, Proverbs 19:6, Proverbs 20:11,
Proverbs 20:17, Proverbs 20:29, Proverbs 22:6, Proverbs 25:2, Proverbs 26:9,
Proverbs 26:12, Proverbs 26:15, Proverbs 26:17, Proverbs 28:5, Proverbs 28:27,
Ecclesiastes 7:1, Ecclesiastes 9:17, Song of Solomon 8:13, Song of Solomon
8:14, Isaiah 5:15, Isaiah 17:7, Isaiah 32:16, Isaiah 33:4, Isaiah 45:22, Isaiah
65:21, Jeremiah 22:1, Jeremiah 23:21, Jeremiah 27:2, Jeremiah 28:7, Jeremiah
49:11, Jeremiah 49:38, Ezekiel 18:32, Ezekiel 24:22, Ezekiel 33:3, Ezekiel
46:10, Ezekiel 48:24, Ezekiel 48:25, Hosea 1:3, Amos 3:7, Amos 5:23, Amos 8:7,
Micah 7:15, Nahum 3:11, Zechariah 4:14, Zechariah 10:12, Matthew 2:19, Matthew
6:4, Matthew 8:18, Matthew 10:17, Matthew 10:39, Matthew 12:12, Matthew 13:6,
Matthew 15:17, Matthew 15:26, Matthew 23:31, Matthew 24:5, Mark 1:9, Mark 1:26,
Mark 1:39, Mark 4:29, Mark 5:37, Mark 6:10, Mark 6:51, Mark 10:5, Mark 15:11,
Mark 15:45, Luke 7:1, Luke 9:59, Luke 10:32, Luke 13:9, Luke 14:33, Luke 17:33,
Luke 20:24, Luke 23:30, Luke 24:9, John 1:40, John 3:6, John 6:29, John 6:68,
John 9:19, John 11:1, John 11:24, John 13:37, John 14:13, John 15:8, John
18:29, Acts 3:14, Acts 6:8, Acts 8:11, Acts 9:19, Acts 11:8, Acts 11:14, Acts
19:15, Acts 19:18, Acts 21:6, Acts 26:15, Romans 2:18, Romans 2:24, Romans
3:24, Romans 12:17, Romans 15:6, Romans 16:11, 1 Corinthians 4:21, 1
Corinthians 8:11, 1 Corinthians 11:12, 1 Corinthians 16:5, 2 Corinthians 1:22,
Galatians 2:3, Galatians 3:3, Ephesians 2:21, Colossians 4:15, Hebrews 7:15,
Hebrews 9:1, Hebrews 11:24, James 2:22, 1 Peter 4:18, 1 John 2:12, 1 John 4:13,
Jude 1:17, Revelation 8:9, Revelation 22:20, Genesis 4:5, Genesis 4:19, Genesis
6:6, Genesis 11:5, Genesis 20:4, Genesis 24:24, Genesis 29:4, Genesis 30:13,
Genesis 41:17, Genesis 49:22, Exodus 5:12, Exodus 6:29, Exodus 7:13, Exodus
8:25, Exodus 16:28, Exodus 29:38, Exodus 33:4, Exodus 35:28, Exodus 37:12,
Leviticus 1:7, Leviticus 14:46, Leviticus 19:28, Numbers 4:42, Numbers 5:10,
Numbers 9:8, Numbers 10:24, Numbers 10:28, Numbers 22:19, Numbers 23:2, Numbers
23:26, Numbers 29:32, Numbers 33:6, Numbers 33:47, Numbers 35:7, Deuteronomy
1:37, Deuteronomy 27:23, Deuteronomy 33:18, Judges 4:1, Judges 11:6, Judges
11:28, Judges 18:11, Ruth 4:2, 1 Samuel 12:16, 1 Samuel 13:1, 1 Samuel 20:32, 1
Samuel 20:40, 2 Samuel 7:3, 2 Samuel 8:16, 2 Samuel 18:15, 1 Kings 1:50, 1
Kings 12:5, 1 Kings 18:3, 2 Kings 1:7, 2 Kings 5:4, 2 Kings 9:31, 2 Kings 21:5,
2 Kings 23:23, 1 Chronicles 12:28, 1 Chronicles 16:30, 2 Chronicles 4:1, 2
Chronicles 25:28, 2 Chronicles 28:2, 2 Chronicles 28:22, 2 Chronicles 33:5,
Ezra 5:4, Ezra 9:10, Ezra 10:23, Nehemiah 11:21, Job 1:20, Job 6:23, Job 8:18,
Job 20:7, Job 21:20, Job 22:18, Job 27:2, Job 27:7, Job 27:11, Job 31:11, Job
32:16, Job 36:19, Job 38:17, Job 39:6, Psalms 11:1, Psalms 21:2, Psalms 24:6,
Psalms 33:8, Psalms 33:16, Psalms 35:1, Psalms 38:10, Psalms 48:13, Psalms
50:22, Psalms 55:18, Psalms 65:7, Psalms 68:9, Psalms 73:15, Psalms 80:15,
Psalms 82:1, Psalms 89:39, Psalms 89:46, Psalms 89:51, Psalms 95:1, Psalms
105:8, Psalms 121:8, Psalms 136:15, Proverbs 1:31, Proverbs 4:9, Proverbs 6:25,
Proverbs 8:34, Proverbs 10:6, Proverbs 10:26, Proverbs 11:28, Proverbs 12:6,
Proverbs 13:11, Proverbs 14:16, Proverbs 16:22, Proverbs 16:30, Proverbs 17:9,
Proverbs 25:3, Proverbs 25:19, Proverbs 26:25, Proverbs 27:18, Proverbs 28:23,
Proverbs 31:21, Ecclesiastes 7:29, Song of Solomon 1:3, Isaiah 7:5, Isaiah
10:23, Isaiah 23:10, Isaiah 24:3, Isaiah 37:25, Isaiah 45:16, Isaiah 48:15,
Isaiah 52:13, Isaiah 57:3, Jeremiah 5:23, Jeremiah 7:17, Jeremiah 10:15,
Jeremiah 23:1, Jeremiah 26:17, Jeremiah 37:11, Jeremiah 42:3, Jeremiah 42:12,
Jeremiah 51:18, Lamentations 3:48, Ezekiel 3:4, Ezekiel 12:18, Ezekiel 16:9,
Ezekiel 24:9, Ezekiel 45:16, Ezekiel 48:5, Ezekiel 48:26, Daniel 6:1, Daniel
6:11, Daniel 8:21, Daniel 11:22, Hosea 2:1, Hosea 4:18, Hosea 8:9, Obadiah
1:21, Micah 5:9, Nahum 2:8, Zechariah 8:20, Matthew 5:31, Matthew 11:2, Matthew
15:39, Matthew 18:27, Matthew 21:34, Matthew 24:34, Matthew 25:8, Mark 4:35,
Mark 6:18, Mark 11:14, Mark 13:15, Mark 13:30, Mark 14:20, Mark 14:66, Mark
16:11, Mark 16:15, Luke 4:31, Luke 5:9, Luke 6:11, Luke 8:50, Luke 9:8, Luke
9:35, Luke 10:37, Luke 10:39, Luke 12:51, Luke 19:35, Luke 21:31, Luke 22:6,
Luke 22:45, Luke 24:22, Luke 24:26, John 1:7, John 1:43, John 3:14, John 3:27,
John 3:34, John 4:22, John 11:19, John 13:32, John 13:35, John 19:33, John
20:22, Acts 4:37, Acts 7:21, Acts 9:7, Acts 10:44, Acts 12:13, Acts 13:35, Acts
13:42, Acts 14:18, Acts 15:19, Acts 16:31, Acts 19:36, Romans 1:1, Romans 2:28,
Romans 3:29, Romans 6:10, 1 Corinthians 3:7, 1 Corinthians 4:11, 1 Corinthians
10:6, 1 Corinthians 10:19, 1 Corinthians 11:10, 1 Corinthians 11:21, 1
Corinthians 15:4, 2 Corinthians 5:13, 2 Corinthians 6:1, 2 Corinthians 8:21, 2
Corinthians 8:24, 2 Corinthians 9:14, 2 Corinthians 13:9, Galatians 4:22,
Galatians 5:5, Ephesians 1:5, Ephesians 6:20, Philippians 2:7, Colossians 3:25,
1 Thessalonians 4:3, 1 Timothy 2:5, 2 Timothy 3:4, Hebrews 5:2, Hebrews 7:18,
James 2:4, James 2:13, 1 John 2:10, Revelation 3:15, Revelation 8:1, Revelation
16:11, Revelation 21:7, Revelation 21:22, Genesis 10:20, Genesis 14:18, Genesis
16:15, Genesis 18:23, Genesis 21:4, Genesis 21:13, Genesis 21:25, Genesis
21:27, Genesis 22:1, Genesis 24:21, Genesis 25:11, Genesis 37:15, Genesis
37:16, Genesis 37:29, Genesis 45:15, Exodus 7:14, Exodus 22:20, Exodus 26:26,
Exodus 27:6, Exodus 34:23, Exodus 37:2, Exodus 40:2, Leviticus 7:31, Leviticus
8:12, Leviticus 11:37, Leviticus 13:47, Leviticus 18:12, Leviticus 18:16,
Leviticus 19:4, Leviticus 19:12, Leviticus 22:30, Leviticus 23:5, Leviticus
26:10, Numbers 2:7, Numbers 14:15, Numbers 16:31, Numbers 31:18, Numbers 32:24,
Numbers 33:49, Numbers 34:7, Deuteronomy 11:27, Deuteronomy 14:9, Deuteronomy
20:2, Deuteronomy 27:21, Joshua 13:26, Joshua 19:17, Joshua 19:38, Joshua
21:23, Joshua 22:1, Judges 2:16, Judges 8:31, Judges 9:17, Judges 11:30, 1
Samuel 5:12, 1 Samuel 8:10, 1 Samuel 9:18, 1 Samuel 12:21, 1 Samuel 16:6, 1
Samuel 16:17, 1 Samuel 29:7, 2 Samuel 7:5, 2 Samuel 7:13, 2 Samuel 14:8, 2
Samuel 17:7, 2 Samuel 22:39, 1 Kings 8:57, 1 Kings 20:26, 2 Kings 6:3, 2 Kings
8:11, 2 Kings 8:22, 2 Kings 10:12, 2 Kings 12:6, 2 Kings 19:27, 1 Chronicles
1:29, 1 Chronicles 11:46, 1 Chronicles 12:31, 1 Chronicles 16:43, 1 Chronicles
18:14, 2 Chronicles 20:36, 2 Chronicles 31:7, Nehemiah 13:8, Esther 1:9, Job
8:22, Job 9:12, Job 17:9, Job 21:8, Job 21:30, Job 22:7, Job 26:2, Job 27:17,
Job 30:11, Job 31:22, Job 31:31, Job 37:20, Job 39:2, Job 39:11, Job 40:2, Job
40:12, Job 41:12, Job 42:16, Psalms 2:7, Psalms 11:5, Psalms 18:14, Psalms
21:8, Psalms 22:31, Psalms 32:11, Psalms 33:12, Psalms 37:9, Psalms 37:36,
Psalms 37:38, Psalms 41:8, Psalms 54:7, Psalms 56:8, Psalms 66:4, Psalms 68:7,
Psalms 73:26, Psalms 75:3, Psalms 76:10, Psalms 78:26, Psalms 78:53, Psalms
78:69, Psalms 86:11, Psalms 88:12, Psalms 89:12, Psalms 89:43, Psalms 92:4,
Psalms 92:15, Psalms 95:9, Psalms 104:33, Psalms 107:30, Psalms 110:1, Psalms
125:1, Psalms 141:8, Psalms 143:10, Psalms 147:11, Proverbs 2:22, Proverbs
10:24, Proverbs 12:12, Proverbs 12:27, Proverbs 13:25, Proverbs 16:19, Proverbs
19:2, Proverbs 19:10, Proverbs 19:21, Proverbs 22:12, Proverbs 22:18, Proverbs
24:25, Proverbs 27:21, Proverbs 28:6, Proverbs 28:11, Proverbs 28:28, Proverbs
29:19, Ecclesiastes 2:22, Ecclesiastes 10:8, Ecclesiastes 12:14, Song of
Solomon 6:4, Isaiah 2:13, Isaiah 22:10, Isaiah 28:11, Isaiah 28:29, Isaiah
30:11, Isaiah 33:11, Isaiah 33:22, Isaiah 42:8, Isaiah 42:21, Isaiah 49:16,
Isaiah 66:7, Jeremiah 6:27, Jeremiah 38:5, Jeremiah 51:61, Ezekiel 16:11,
Ezekiel 16:12, Ezekiel 34:31, Ezekiel 37:27, Ezekiel 43:15, Ezekiel 48:4,
Daniel 7:15, Hosea 2:22, Zephaniah 3:16, Matthew 1:14, Matthew 8:27, Matthew
9:38, Matthew 13:40, Matthew 14:8, Matthew 20:4, Matthew 28:14, Matthew 28:16,
Mark 2:5, Mark 2:7, Mark 3:31, Mark 5:9, Mark 12:29, Mark 12:37, Mark 14:4,
Mark 16:2, Luke 1:26, Luke 3:34, Luke 4:5, Luke 5:22, Luke 6:47, Luke 7:7, Luke
7:41, Luke 8:6, Luke 8:20, Luke 10:41, Luke 13:13, Luke 15:16, Luke 18:1, Luke
19:33, Luke 19:48, Luke 22:23, Luke 22:70, John 1:18, John 2:1, John 8:59, John
16:8, John 17:15, John 17:20, John 18:21, John 18:34, John 20:11, Acts 2:7,
Acts 3:15, Acts 11:21, Acts 13:20, Acts 13:24, Acts 17:30, Acts 20:29, Acts
25:18, Acts 26:6, Romans 2:10, Romans 4:2, Romans 7:20, Romans 8:6, Romans
12:4, 1 Corinthians 1:25, 1 Corinthians 10:30, 1 Corinthians 11:15, 1
Corinthians 12:2, 1 Corinthians 12:26, 1 Corinthians 15:14, 2 Corinthians 8:16,
2 Corinthians 11:31, Galatians 5:15, Ephesians 4:32, Philippians 2:9, 1
Thessalonians 5:13, 1 Timothy 1:1, 1 Timothy 1:11, 2 Timothy 2:23, 2 Timothy
3:13, Titus 1:13, Philemon 1:21, Hebrews 12:4, Hebrews 13:6, Hebrews 13:19, 1
Peter 2:14, 2 Peter 3:6, 1 John 3:20, Genesis 2:10, Genesis 2:16, Genesis 3:18,
Genesis 5:4, Genesis 10:31, Genesis 14:21, Genesis 18:22, Genesis 24:1, Genesis
24:58, Genesis 26:21, Genesis 31:48, Genesis 40:18, Genesis 44:28, Genesis
50:26, Exodus 1:9, Exodus 12:20, Exodus 21:21, Exodus 25:14, Exodus 25:25,
Exodus 26:16, Exodus 30:30, Exodus 34:14, Exodus 40:8, Exodus 40:30, Exodus
40:34, Leviticus 4:16, Leviticus 11:5, Leviticus 13:22, Leviticus 26:24,
Numbers 2:29, Numbers 10:32, Numbers 16:49, Numbers 23:8, Numbers 27:13,
Numbers 28:4, Numbers 32:41, Deuteronomy 6:13, Deuteronomy 13:11, Deuteronomy
22:30, Deuteronomy 26:9, Deuteronomy 27:17, Deuteronomy 30:7, Deuteronomy
30:14, Deuteronomy 32:19, Deuteronomy 33:15, Joshua 4:13, Joshua 10:17, Joshua
10:36, Joshua 13:15, Joshua 21:17, Joshua 24:24, Judges 7:21, Judges 18:31,
Ruth 3:6, 1 Samuel 2:2, 1 Samuel 7:4, 1 Samuel 17:27, 1 Samuel 23:8, 2 Samuel
1:11, 2 Samuel 5:25, 2 Samuel 11:26, 2 Samuel 22:42, 2 Samuel 23:14, 1 Kings
8:40, 1 Kings 10:4, 1 Kings 18:20, 1 Kings 21:23, 2 Kings 4:44, 2 Kings 6:24, 2
Kings 24:19, 1 Chronicles 3:9, 1 Chronicles 11:16, 1 Chronicles 26:24, 1
Chronicles 26:27, 2 Chronicles 11:3, 2 Chronicles 20:35, 2 Chronicles 27:3, 2
Chronicles 33:21, Ezra 10:33, Nehemiah 13:20, Job 4:10, Job 5:24, Job 9:16, Job
10:16, Job 30:4, Job 30:24, Job 31:9, Job 35:15, Job 36:5, Job 37:6, Job 38:4,
Job 38:22, Job 41:25, Psalms 6:2, Psalms 7:14, Psalms 10:15, Psalms 16:8,
Psalms 17:1, Psalms 20:1, Psalms 22:22, Psalms 30:1, Psalms 30:7, Psalms 34:17,
Psalms 49:5, Psalms 56:4, Psalms 60:2, Psalms 61:4, Psalms 62:3, Psalms 66:20,
Psalms 73:20, Psalms 80:12, Psalms 89:3, Psalms 89:4, Psalms 96:11, Psalms
102:15, Psalms 108:4, Psalms 113:9, Psalms 139:21, Proverbs 1:32, Proverbs
1:33, Proverbs 3:32, Proverbs 8:27, Proverbs 13:7, Proverbs 13:23, Proverbs
14:2, Proverbs 14:27, Proverbs 14:32, Proverbs 15:11, Proverbs 16:17, Proverbs
17:5, Proverbs 20:13, Proverbs 21:1, Proverbs 21:22, Proverbs 22:15, Proverbs
24:6, Proverbs 25:17, Proverbs 26:26, Proverbs 28:4, Proverbs 29:2, Proverbs
30:23, Ecclesiastes 7:16, Ecclesiastes 7:21, Song of Solomon 5:12, Isaiah 20:5,
Isaiah 21:14, Isaiah 22:7, Isaiah 41:8, Isaiah 41:29, Isaiah 53:1, Isaiah
66:13, Jeremiah 30:9, Jeremiah 42:13, Jeremiah 51:32, Jeremiah 51:54, Jeremiah
52:2, Jeremiah 52:29, Ezekiel 1:18, Ezekiel 10:15, Ezekiel 26:13, Ezekiel
33:33, Daniel 11:42, Hosea 4:19, Micah 5:12, Nahum 1:7, Zechariah 7:6,
Zechariah 7:9, Matthew 3:17, Matthew 4:7, Matthew 5:34, Matthew 8:31, Matthew
9:30, Matthew 14:9, Matthew 15:27, Matthew 22:28, Matthew 22:44, Matthew 23:17,
Matthew 24:23, Matthew 24:44, Matthew 25:25, Matthew 26:25, Matthew 26:48,
Matthew 27:52, Matthew 28:18, Mark 1:23, Mark 3:34, Mark 4:7, Mark 4:28, Mark
8:29, Mark 10:43, Luke 1:33, Luke 2:40, Luke 3:36, Luke 4:13, Luke 5:34, Luke
6:2, Luke 6:15, Luke 7:17, Luke 9:57, Luke 11:2, Luke 11:44, Luke 12:26, Luke
12:50, Luke 22:67, Luke 24:15, John 1:13, John 2:4, John 2:7, John 5:35, John
6:37, John 7:19, John 7:25, John 10:17, John 11:6, John 11:38, John 11:40, John
15:11, Acts 1:23, Acts 2:21, Acts 7:46, Acts 17:12, Acts 21:14, Acts 22:16,
Acts 22:27, Acts 24:11, Romans 1:14, Romans 3:12, Romans 3:31, Romans 14:21, 1
Corinthians 1:1, 1 Corinthians 4:14, 2 Corinthians 8:13, Galatians 4:8,
Galatians 5:22, Galatians 5:24, Ephesians 3:2, Ephesians 4:30, Philippians
4:19, Colossians 4:1, 2 Timothy 2:9, 2 Timothy 2:26, 2 Timothy 4:14, Titus
3:13, Hebrews 10:27, Hebrews 12:14, James 2:10, James 2:21, James 3:10, 1 John
4:5, 1 John 4:14, 1 John 5:5, Revelation 5:10, Revelation 6:7, Revelation 10:5,
Revelation 13:13, Revelation 17:18, Genesis 26:12, Genesis 26:14, Genesis
29:14, Genesis 29:23, Genesis 29:28, Genesis 31:51, Genesis 33:4, Genesis 43:6,
Genesis 43:19, Genesis 44:13, Exodus 7:7, Exodus 28:34, Exodus 35:14, Exodus
36:14, Exodus 40:3, Leviticus 7:17, Leviticus 8:8, Leviticus 9:14, Leviticus
20:15, Leviticus 21:2, Leviticus 23:30, Leviticus 24:21, Leviticus 27:12,
Numbers 3:22, Numbers 3:34, Numbers 8:3, Numbers 10:23, Numbers 11:3, Numbers
13:21, Numbers 17:12, Numbers 18:18, Numbers 28:25, Numbers 32:42, Deuteronomy
4:35, Deuteronomy 6:8, Deuteronomy 11:32, Deuteronomy 15:8, Deuteronomy 20:13,
Deuteronomy 21:11, Deuteronomy 25:16, Deuteronomy 32:16, Joshua 12:4, Joshua
14:13, Joshua 15:2, Joshua 24:10, Joshua 24:29, Judges 8:9, Judges 18:13, 1
Samuel 12:4, 1 Samuel 14:46, 1 Samuel 20:24, 1 Samuel 23:16, 2 Samuel 9:5, 2
Samuel 14:21, 2 Samuel 22:18, 1 Kings 1:10, 1 Kings 6:33, 1 Kings 8:49, 1 Kings
11:16, 1 Kings 13:30, 1 Kings 18:41, 1 Kings 22:7, 2 Kings 4:37, 2 Kings 6:16,
2 Kings 10:16, 2 Kings 17:10, 2 Kings 17:22, 2 Kings 21:26, 2 Kings 24:9, 1
Chronicles 3:24, 1 Chronicles 8:39, 1 Chronicles 16:25, 1 Chronicles 17:22, 1
Chronicles 27:26, 2 Chronicles 3:5, 2 Chronicles 11:11, 2 Chronicles 12:6, 2
Chronicles 15:10, 2 Chronicles 18:6, 2 Chronicles 33:17, Nehemiah 3:5, Nehemiah
7:57, Nehemiah 13:3, Job 2:8, Job 9:32, Job 11:15, Job 17:4, Job 21:15, Job
21:28, Job 24:22, Job 29:12, Job 33:28, Job 36:2, Job 38:12, Psalms 9:4, Psalms
33:6, Psalms 44:22, Psalms 60:4, Psalms 71:4, Psalms 72:5, Psalms 72:14, Psalms
74:14, Psalms 74:16, Psalms 77:17, Psalms 83:3, Psalms 89:8, Psalms 109:20,
Psalms 123:3, Psalms 140:3, Psalms 140:7, Proverbs 1:21, Proverbs 2:16,
Proverbs 3:33, Proverbs 6:1, Proverbs 6:15, Proverbs 10:19, Proverbs 11:26,
Proverbs 12:26, Proverbs 14:3, Proverbs 14:29, Proverbs 19:13, Proverbs 20:5,
Proverbs 20:15, Proverbs 22:11, Proverbs 22:14, Proverbs 25:16, Proverbs 31:5,
Song of Solomon 3:3, Song of Solomon 5:3, Song of Solomon 8:4, Song of Solomon
8:10, Isaiah 8:15, Isaiah 30:31, Isaiah 33:5, Isaiah 34:12, Isaiah 36:14,
Isaiah 48:10, Isaiah 52:3, Isaiah 54:13, Isaiah 57:7, Jeremiah 1:12, Jeremiah
4:24, Jeremiah 17:14, Jeremiah 18:9, Jeremiah 20:14, Jeremiah 25:22, Jeremiah
35:10, Ezekiel 40:35, Jonah 3:2, Habakkuk 3:4, Zechariah 4:3, Zechariah 13:5,
Matthew 1:24, Matthew 3:14, Matthew 4:17, Matthew 6:3, Matthew 7:14, Matthew
12:26, Matthew 14:30, Matthew 19:25, Matthew 21:30, Matthew 22:8, Matthew
25:18, Matthew 26:37, Matthew 27:7, Matthew 27:26, Matthew 27:58, Mark 3:13,
Mark 7:1, Mark 7:14, Mark 9:10, Mark 11:4, Mark 13:29, Mark 14:23, Luke 1:31,
Luke 2:1, Luke 3:24, Luke 3:25, Luke 3:29, Luke 3:30, Luke 3:31, Luke 9:6, Luke
10:23, Luke 11:11, Luke 14:11, Luke 17:34, Luke 19:31, Luke 20:33, Luke 22:15,
Luke 23:19, John 4:34, John 5:38, John 6:9, John 6:41, John 6:52, John 7:8,
John 7:33, John 8:22, John 8:34, John 8:38, John 9:9, John 11:45, John 15:25,
Acts 10:15, Acts 14:4, Acts 15:11, Acts 16:39, Acts 27:38, 1 Corinthians 3:12,
1 Corinthians 4:1, 1 Corinthians 4:12, 1 Corinthians 8:9, 1 Corinthians 15:43,
2 Corinthians 6:15, Ephesians 6:23, Philippians 2:6, Philippians 3:2,
Colossians 4:17, 1 Thessalonians 3:1, 1 Thessalonians 5:9, 1 Timothy 1:14, 2
Timothy 2:8, 2 Timothy 4:6, Hebrews 3:15, Hebrews 5:6, Hebrews 10:19, 1 Peter
3:17, 1 Peter 5:13, 1 John 5:2, 3 John 1:8, Revelation 7:4, Revelation 9:16,
Revelation 11:4, Revelation 16:7, Revelation 18:11, Genesis 5:22, Genesis
15:15, Genesis 29:21, Genesis 37:34, Genesis 38:7, Genesis 39:13, Genesis
41:38, Exodus 16:13, Exodus 16:26, Exodus 18:2, Exodus 22:21, Exodus 30:29,
Exodus 32:9, Exodus 34:5, Exodus 36:26, Exodus 37:13, Leviticus 10:10,
Leviticus 13:41, Leviticus 21:15, Leviticus 24:6, Leviticus 25:36, Leviticus
27:22, Numbers 14:28, Numbers 18:22, Numbers 21:15, Numbers 25:3, Numbers
28:17, Numbers 32:18, Numbers 34:5, Numbers 35:20, Numbers 35:22, Deuteronomy
2:33, Deuteronomy 8:5, Deuteronomy 11:3, Deuteronomy 30:11, Joshua 8:12, Joshua
21:26, Judges 1:6, Judges 3:30, Judges 13:13, Ruth 2:5, 1 Samuel 10:20, 1
Samuel 16:14, 2 Samuel 8:15, 2 Samuel 12:25, 2 Samuel 13:14, 2 Samuel 16:15, 2
Samuel 20:5, 1 Kings 7:5, 1 Kings 10:16, 1 Kings 16:30, 2 Kings 3:18, 2 Kings
19:34, 2 Kings 23:32, 2 Kings 23:37, 1 Chronicles 8:33, 1 Chronicles 13:3, 1
Chronicles 18:15, 1 Chronicles 23:30, 2 Chronicles 4:17, 2 Chronicles 4:20, 2
Chronicles 5:3, 2 Chronicles 16:11, 2 Chronicles 21:5, 2 Chronicles 29:14, Ezra
4:22, Nehemiah 5:1, Nehemiah 7:59, Job 5:21, Job 7:8, Job 8:15, Job 14:20, Job
18:21, Job 21:21, Job 29:24, Job 37:15, Job 38:32, Job 39:12, Psalms 4:3,
Psalms 12:4, Psalms 25:14, Psalms 33:10, Psalms 33:18, Psalms 36:1, Psalms
45:14, Psalms 51:6, Psalms 68:1, Psalms 68:3, Psalms 69:3, Psalms 69:23, Psalms
69:36, Psalms 71:23, Psalms 74:3, Psalms 75:10, Psalms 78:57, Psalms 80:6,
Psalms 86:5, Psalms 89:15, Psalms 89:48, Psalms 96:12, Psalms 97:8, Psalms
98:4, Psalms 106:26, Psalms 107:8, Psalms 107:15, Psalms 107:21, Psalms 107:31,
Psalms 109:2, Psalms 111:6, Psalms 112:5, Psalms 119:75, Psalms 140:10, Psalms
140:11, Psalms 140:13, Psalms 146:2, Proverbs 9:7, Proverbs 9:10, Proverbs
11:14, Proverbs 15:14, Proverbs 20:28, Proverbs 22:1, Proverbs 23:21, Proverbs
24:13, Proverbs 25:21, Proverbs 26:27, Proverbs 29:7, Ecclesiastes 3:2,
Ecclesiastes 11:2, Isaiah 28:24, Isaiah 32:20, Isaiah 37:35, Isaiah 48:4,
Isaiah 48:12, Isaiah 61:5, Jeremiah 4:27, Jeremiah 13:9, Jeremiah 23:29,
Jeremiah 25:16, Jeremiah 26:22, Ezekiel 15:3, Ezekiel 20:25, Ezekiel 21:6,
Ezekiel 21:13, Ezekiel 37:3, Ezekiel 44:1, Daniel 1:16, Daniel 4:2, Daniel 5:9,
Daniel 11:1, Daniel 12:9, Hosea 8:11, Joel 2:30, Jonah 2:4, Jonah 3:9, Haggai
1:10, Matthew 11:17, Matthew 13:8, Matthew 13:25, Matthew 14:11, Matthew 14:14,
Matthew 15:3, Matthew 16:2, Matthew 27:34, Matthew 28:8, Matthew 28:13, Mark
6:28, Mark 12:13, Mark 15:2, Mark 15:33, Luke 1:21, Luke 6:13, Luke 7:42, Luke
8:34, Luke 9:20, Luke 16:17, Luke 17:3, Luke 17:15, Luke 18:40, Luke 19:20,
Luke 21:20, Luke 22:40, Luke 23:3, Luke 23:51, John 3:10, John 5:26, John 5:28,
John 6:2, John 6:60, John 7:7, John 8:48, John 9:32, John 19:18, Acts 2:43,
Acts 4:3, Acts 4:14, Acts 6:15, Acts 13:28, Romans 7:9, Romans 7:11, Romans
13:14, Romans 16:10, 1 Corinthians 7:3, 1 Corinthians 7:27, 1 Corinthians
10:17, 1 Corinthians 10:18, 1 Corinthians 11:16, 2 Corinthians 5:5, Galatians
5:20, Galatians 6:9, Ephesians 6:11, Philippians 1:10, Philippians 2:26,
Colossians 1:4, 1 Timothy 4:13, Hebrews 2:1, Hebrews 3:2, Hebrews 5:13, Hebrews
10:23, Hebrews 13:12, Hebrews 13:16, James 3:16, James 4:9, 2 John 1:8,
Revelation 21:11, Revelation 21:24, Genesis 1:8, Genesis 4:16, Genesis 5:2,
Genesis 9:19, Genesis 12:17, Genesis 14:19, Genesis 19:10, Genesis 21:21,
Genesis 26:5, Genesis 37:18, Genesis 38:19, Genesis 41:33, Genesis 44:9, Exodus
10:4, Exodus 20:2, Exodus 26:21, Exodus 28:7, Exodus 32:3, Exodus 32:35, Exodus
33:6, Exodus 35:17, Exodus 36:10, Exodus 36:18, Exodus 36:30, Exodus 37:29,
Exodus 40:22, Exodus 40:37, Leviticus 7:5, Leviticus 7:6, Leviticus 8:5,
Leviticus 9:8, Leviticus 11:3, Leviticus 13:50, Leviticus 18:6, Leviticus
18:13, Leviticus 18:20, Leviticus 24:22, Numbers 3:2, Numbers 3:30, Numbers
10:19, Numbers 17:4, Numbers 20:18, Numbers 20:21, Numbers 22:40, Deuteronomy
27:18, Deuteronomy 29:9, Deuteronomy 34:10, Joshua 19:14, Judges 17:13, 1
Samuel 3:20, 1 Samuel 14:8, 1 Samuel 17:53, 1 Samuel 25:44, 2 Samuel 12:6, 2
Samuel 12:29, 1 Kings 2:6, 1 Kings 7:46, 1 Kings 15:1, 1 Kings 21:1, 1 Kings
22:9, 1 Kings 22:41, 2 Kings 3:15, 2 Kings 17:38, 2 Kings 22:15, 1 Chronicles
1:40, 1 Chronicles 6:72, 1 Chronicles 9:17, 1 Chronicles 13:12, 1 Chronicles
14:4, 1 Chronicles 23:10, 1 Chronicles 23:22, 1 Chronicles 23:27, 2 Chronicles
2:9, 2 Chronicles 4:18, 2 Chronicles 8:1, 2 Chronicles 15:3, 2 Chronicles 18:8,
2 Chronicles 27:8, 2 Chronicles 34:23, Ezra 8:27, Nehemiah 4:8, Nehemiah 7:4,
Nehemiah 11:14, Nehemiah 11:31, Esther 9:32, Job 12:7, Job 13:27, Job 14:21,
Job 15:33, Job 19:7, Job 19:16, Job 26:10, Job 27:14, Job 31:40, Job 33:21, Job
34:28, Job 38:11, Job 41:11, Psalms 3:6, Psalms 5:8, Psalms 8:8, Psalms 9:1,
Psalms 9:18, Psalms 10:4, Psalms 18:26, Psalms 31:18, Psalms 37:22, Psalms
37:33, Psalms 37:39, Psalms 39:4, Psalms 46:4, Psalms 50:7, Psalms 61:5, Psalms
69:15, Psalms 78:12, Psalms 78:51, Psalms 86:12, Psalms 102:13, Psalms 107:17,
Psalms 109:15, Psalms 109:29, Psalms 119:149, Psalms 119:176, Psalms 149:9,
Proverbs 3:18, Proverbs 7:7, Proverbs 8:24, Proverbs 10:9, Proverbs 11:3,
Proverbs 13:18, Proverbs 13:19, Proverbs 14:31, Proverbs 15:32, Proverbs 16:20,
Proverbs 17:26, Proverbs 22:21, Proverbs 29:3, Ecclesiastes 2:20, Ecclesiastes
4:2, Ecclesiastes 9:4, Ecclesiastes 10:5, Song of Solomon 2:8, Isaiah 12:5,
Isaiah 22:17, Isaiah 28:20, Jeremiah 28:2, Jeremiah 32:11, Jeremiah 44:16,
Ezekiel 4:11, Ezekiel 8:4, Ezekiel 10:10, Ezekiel 15:8, Ezekiel 41:21, Ezekiel
42:9, Ezekiel 42:16, Hosea 4:7, Hosea 9:5, Joel 3:5, Amos 5:27, Nahum 3:9,
Haggai 2:21, Zechariah 14:3, Malachi 4:5, Matthew 1:11, Matthew 5:1, Matthew
12:36, Matthew 12:49, Matthew 19:11, Matthew 22:7, Matthew 26:28, Matthew
27:20, Mark 1:41, Mark 4:30, Mark 7:28, Mark 7:29, Mark 8:10, Mark 8:28, Mark
11:21, Mark 14:6, Mark 14:33, Mark 16:16, Luke 1:51, Luke 2:13, Luke 2:17, Luke
3:26, Luke 6:12, Luke 6:26, Luke 8:21, Luke 9:61, Luke 10:33, Luke 12:13, Luke
13:26, Luke 16:30, Luke 20:42, Luke 22:4, Luke 22:8, Luke 22:22, Luke 24:30,
John 5:9, John 9:29, John 9:34, John 12:46, John 14:29, John 16:16, John 17:22,
John 18:2, John 20:8, Acts 7:14, Acts 10:14, Acts 10:31, Acts 11:6, Acts 13:16,
Acts 14:2, Acts 15:14, Acts 25:1, Romans 3:30, Romans 9:10, 1 Corinthians 1:9,
1 Corinthians 6:4, 1 Corinthians 9:11, 1 Corinthians 11:29, 2 Corinthians 2:9,
2 Corinthians 6:9, 2 Corinthians 10:18, Galatians 6:16, Ephesians 5:8,
Ephesians 5:20, Philippians 2:10, Hebrews 3:18, Hebrews 7:12, Hebrews 11:10,
Hebrews 12:16, Hebrews 13:22, 1 Peter 2:4, 2 Peter 2:2, Revelation 16:8,
Revelation 19:13, Genesis 3:12, Genesis 8:3, Genesis 9:13, Genesis 9:27,
Genesis 17:25, Genesis 18:11, Genesis 19:37, Genesis 21:18, Genesis 24:18,
Genesis 27:32, Genesis 31:40, Genesis 36:20, Genesis 37:21, Genesis 38:5,
Genesis 46:10, Genesis 47:7, Exodus 1:1, Exodus 5:9, Exodus 6:30, Exodus 8:7,
Exodus 20:23, Exodus 25:40, Exodus 28:37, Exodus 29:16, Exodus 35:27, Exodus
35:34, Leviticus 4:32, Leviticus 11:38, Leviticus 14:15, Leviticus 16:8,
Leviticus 26:9, Numbers 1:5, Numbers 2:22, Numbers 15:18, Numbers 15:27,
Numbers 16:12, Numbers 16:50, Numbers 22:1, Numbers 23:5, Numbers 23:15,
Numbers 30:15, Numbers 31:2, Deuteronomy 5:6, Deuteronomy 11:16, Deuteronomy
18:8, Deuteronomy 23:9, Deuteronomy 29:4, Deuteronomy 34:2, Deuteronomy 34:3,
Joshua 10:29, Joshua 21:28, Judges 9:21, Judges 9:30, Judges 9:32, 1 Samuel
3:7, 1 Samuel 8:21, 1 Samuel 17:31, 1 Samuel 17:41, 1 Samuel 31:5, 2 Samuel
1:25, 2 Samuel 23:29, 1 Kings 1:29, 1 Kings 6:25, 1 Kings 7:28, 1 Kings 13:20,
1 Kings 15:2, 1 Kings 16:25, 1 Kings 20:4, 1 Kings 21:3, 1 Chronicles 1:9, 1
Chronicles 2:34, 1 Chronicles 10:10, 1 Chronicles 23:26, 1 Chronicles 27:3, 1
Chronicles 27:9, 1 Chronicles 27:12, 2 Chronicles 2:1, 2 Chronicles 8:10, 2
Chronicles 26:17, 2 Chronicles 34:1, Ezra 2:55, Ezra 8:2, Nehemiah 10:30,
Nehemiah 11:15, Job 2:5, Job 22:23, Job 24:11, Job 24:16, Job 36:9, Job 37:16,
Job 39:4, Job 41:30, Psalms 2:8, Psalms 18:17, Psalms 29:3, Psalms 31:8, Psalms
32:10, Psalms 34:16, Psalms 35:24, Psalms 42:3, Psalms 44:5, Psalms 60:3,
Psalms 69:28, Psalms 74:4, Psalms 83:18, Psalms 86:13, Psalms 89:5, Psalms
92:11, Psalms 106:9, Psalms 119:73, Psalms 119:116, Psalms 128:5, Psalms 134:1,
Proverbs 4:4, Proverbs 5:10, Proverbs 10:11, Proverbs 12:10, Proverbs 12:18,
Proverbs 13:14, Proverbs 14:4, Proverbs 14:35, Proverbs 15:9, Proverbs 15:19,
Proverbs 15:27, Proverbs 17:24, Proverbs 20:19, Proverbs 21:9, Proverbs 21:27,
Proverbs 23:24, Proverbs 24:22, Proverbs 25:24, Proverbs 25:26, Proverbs 30:20,
Ecclesiastes 5:7, Ecclesiastes 10:3, Ecclesiastes 10:13, Song of Solomon 5:14,
Isaiah 3:10, Isaiah 3:18, Isaiah 6:12, Isaiah 17:4, Isaiah 19:10, Isaiah 21:13,
Isaiah 32:18, Isaiah 38:9, Isaiah 43:26, Isaiah 64:10, Jeremiah 6:14, Jeremiah
7:5, Jeremiah 7:7, Jeremiah 8:11, Jeremiah 30:2, Jeremiah 37:4, Jeremiah 41:15,
Jeremiah 49:35, Ezekiel 7:10, Ezekiel 11:3, Ezekiel 12:24, Ezekiel 16:18,
Ezekiel 30:14, Ezekiel 35:7, Ezekiel 47:7, Daniel 3:23, Hosea 6:6, Hosea 8:12,
Hosea 12:12, Hosea 14:6, Joel 3:1, Amos 2:3, Amos 5:17, Habakkuk 2:10,
Zephaniah 1:6, Zechariah 4:11, Zechariah 14:9, Matthew 1:6, Matthew 1:9,
Matthew 5:35, Matthew 7:7, Matthew 7:15, Matthew 7:23, Matthew 11:22, Matthew
15:34, Matthew 18:14, Matthew 20:15, Matthew 22:11, Matthew 26:44, Matthew
27:14, Mark 2:13, Mark 3:7, Mark 8:11, Mark 10:13, Luke 1:44, Luke 5:6, Luke
7:11, Luke 8:19, Luke 9:31, Luke 13:8, Luke 24:28, John 1:30, John 6:71, John
8:18, John 10:9, John 13:31, Acts 1:10, Acts 2:10, Acts 5:22, Acts 7:39, Acts
11:9, Acts 19:28, Acts 19:37, Acts 20:2, Acts 20:34, Acts 24:20, Romans 7:15,
Romans 10:10, 1 Corinthians 3:8, 1 Corinthians 10:5, 1 Corinthians 12:6, 1
Corinthians 15:31, 2 Corinthians 11:13, 2 Corinthians 11:22, 2 Corinthians
12:15, Galatians 4:12, Ephesians 2:13, Ephesians 2:16, Philippians 1:9, 1
Thessalonians 4:8, 1 Thessalonians 5:2, 1 Timothy 1:19, 1 Timothy 3:1, 1
Timothy 3:5, Titus 1:14, Philemon 1:1, Hebrews 3:16, Hebrews 10:20, James 1:19,
2 Peter 1:18, 1 John 3:11, Revelation 22:10, Genesis 7:15, Genesis 8:12,
Genesis 9:1, Genesis 9:22, Genesis 11:2, Genesis 14:6, Genesis 20:18, Genesis
27:18, Genesis 29:18, Genesis 32:8, Genesis 36:31, Genesis 37:26, Genesis
41:26, Genesis 46:21, Genesis 47:25, Exodus 4:16, Exodus 8:23, Exodus 9:31,
Exodus 13:22, Exodus 27:5, Exodus 27:15, Exodus 30:27, Exodus 36:22, Exodus
39:10, Exodus 40:17, Leviticus 4:11, Leviticus 16:9, Leviticus 16:31, Leviticus
25:20, Leviticus 27:34, Numbers 2:31, Numbers 20:27, Deuteronomy 9:13,
Deuteronomy 14:12, Deuteronomy 24:11, Deuteronomy 27:16, Joshua 24:16, Judges
10:14, Judges 20:21, Judges 21:9, 1 Samuel 10:4, 1 Samuel 14:5, 1 Samuel 22:20,
1 Samuel 23:15, 2 Samuel 6:9, 2 Samuel 15:13, 2 Samuel 20:24, 1 Kings 2:43, 1
Kings 16:28, 2 Kings 4:3, 2 Kings 25:12, 1 Chronicles 4:20, 1 Chronicles 4:38,
1 Chronicles 16:33, 1 Chronicles 18:9, 1 Chronicles 27:4, 1 Chronicles 27:8, 2
Chronicles 3:9, 2 Chronicles 8:2, 2 Chronicles 13:21, 2 Chronicles 26:22, 2
Chronicles 27:4, 2 Chronicles 30:11, Ezra 2:57, Ezra 8:19, Esther 7:5, Job
12:8, Job 13:9, Job 27:5, Job 31:16, Psalms 5:3, Psalms 8:6, Psalms 17:4,
Psalms 18:25, Psalms 22:16, Psalms 31:1, Psalms 45:6, Psalms 45:10, Psalms
69:16, Psalms 69:22, Psalms 80:16, Psalms 83:4, Psalms 88:9, Psalms 89:6,
Psalms 90:14, Psalms 91:7, Psalms 103:13, Psalms 103:20, Psalms 109:30, Psalms
112:1, Psalms 118:19, Psalms 119:90, Psalms 119:160, Psalms 141:7, Psalms
144:15, Proverbs 10:17, Proverbs 10:32, Proverbs 12:13, Proverbs 16:16,
Proverbs 17:8, Proverbs 22:5, Proverbs 24:16, Proverbs 28:20, Proverbs 29:9,
Proverbs 31:15, Ecclesiastes 7:6, Isaiah 5:17, Isaiah 8:17, Isaiah 23:2, Isaiah
27:5, Isaiah 33:12, Isaiah 43:25, Jeremiah 11:2, Jeremiah 15:21, Jeremiah 25:2,
Jeremiah 48:42, Jeremiah 51:63, Ezekiel 10:18, Ezekiel 10:21, Ezekiel 27:30,
Ezekiel 34:11, Ezekiel 34:22, Ezekiel 47:6, Ezekiel 48:30, Hosea 12:10, Joel
1:15, Amos 1:4, Amos 5:2, Jonah 1:16, Jonah 4:3, Haggai 1:4, Haggai 1:15,
Zechariah 2:3, Malachi 1:5, Matthew 1:16, Matthew 9:25, Matthew 13:42, Matthew
13:50, Matthew 18:1, Matthew 20:7, Matthew 26:38, Matthew 27:23, Mark 3:9, Mark
4:22, Mark 5:22, Mark 7:17, Mark 9:34, Mark 10:11, Mark 14:51, Mark 14:69, Mark
15:12, Luke 5:31, Luke 10:6, Luke 12:52, Luke 12:55, Luke 23:44, Luke 23:55,
Luke 24:13, John 1:32, John 2:8, John 5:11, John 6:1, John 9:4, John 10:28,
John 11:15, John 11:30, John 11:49, John 12:12, John 12:44, John 13:4, John
18:9, Acts 4:11, Acts 5:19, Acts 7:12, Acts 9:30, Acts 10:1, Acts 17:20, Acts
18:22, Acts 24:19, Acts 25:27, Acts 26:9, Acts 26:32, Romans 6:23, Romans 8:2,
1 Corinthians 1:11, 1 Corinthians 1:24, 1 Corinthians 2:7, 1 Corinthians 10:25,
1 Corinthians 15:23, 1 Corinthians 16:3, 2 Corinthians 5:8, 2 Corinthians 10:4,
Galatians 1:11, Galatians 1:18, Galatians 2:1, Galatians 4:18, Galatians 5:2,
Galatians 5:3, Ephesians 2:20, Ephesians 4:24, Ephesians 5:24, Colossians 3:10,
1 Thessalonians 3:3, 2 Thessalonians 3:9, 1 Timothy 3:11, 2 Timothy 4:11, Titus
3:7, Philemon 1:15, Hebrews 2:7, Hebrews 2:13, Hebrews 2:18, Hebrews 5:11,
Hebrews 12:18, James 2:9, 1 Peter 2:2, 1 Peter 2:19, 1 Peter 4:10, 2 Peter
1:20, Revelation 1:14, Revelation 4:2, Revelation 5:4, Revelation 10:11,
Revelation 21:17, Genesis 1:15, Genesis 8:8, Genesis 10:7, Genesis 10:18,
Genesis 11:28, Genesis 17:21, Genesis 24:17, Genesis 25:10, Genesis 32:3,
Genesis 36:30, Genesis 38:30, Genesis 45:28, Exodus 12:28, Exodus 17:4, Exodus
21:16, Exodus 25:35, Exodus 32:16, Exodus 37:7, Exodus 38:4, Exodus 38:22,
Exodus 39:42, Leviticus 2:7, Leviticus 19:26, Leviticus 22:12, Leviticus 22:15,
Numbers 6:16, Numbers 7:12, Numbers 15:7, Numbers 31:10, Numbers 34:23, Numbers
35:10, Deuteronomy 8:6, Deuteronomy 8:17, Deuteronomy 14:5, Deuteronomy 22:12,
Deuteronomy 24:22, Deuteronomy 27:13, Deuteronomy 27:24, Joshua 3:9, Joshua
10:18, Joshua 10:22, Joshua 16:7, Judges 1:20, Judges 5:24, Judges 6:40, Judges
13:15, Judges 17:12, Judges 20:46, Ruth 1:5, 1 Samuel 1:5, 1 Samuel 10:26, 1
Samuel 16:19, 1 Samuel 31:13, 2 Samuel 2:11, 2 Samuel 3:9, 2 Samuel 7:17, 2
Samuel 10:15, 2 Samuel 14:12, 2 Samuel 17:28, 2 Samuel 22:26, 1 Kings 16:6, 1
Kings 19:1, 1 Kings 20:2, 2 Kings 18:33, 1 Chronicles 2:16, 1 Chronicles 2:25,
1 Chronicles 4:31, 1 Chronicles 8:36, 1 Chronicles 9:39, 1 Chronicles 9:42, 1
Chronicles 14:16, 1 Chronicles 17:15, 1 Chronicles 24:23, 2 Chronicles 8:5, 2
Chronicles 11:20, 2 Chronicles 24:8, 2 Chronicles 29:13, 2 Chronicles 31:8, 2
Chronicles 31:11, 2 Chronicles 36:6, Nehemiah 8:11, Esther 1:1, Job 9:4, Job
19:27, Job 20:8, Job 32:5, Job 33:27, Psalms 34:22, Psalms 61:7, Psalms 62:8,
Psalms 68:21, Psalms 69:14, Psalms 72:19, Psalms 77:19, Psalms 89:24, Psalms
100:4, Psalms 100:5, Psalms 102:28, Psalms 104:13, Psalms 105:37, Psalms
107:43, Psalms 130:6, Psalms 141:6, Psalms 143:5, Psalms 145:12, Proverbs 1:24,
Proverbs 6:5, Proverbs 10:5, Proverbs 11:11, Proverbs 14:22, Proverbs 17:27,
Proverbs 18:24, Proverbs 24:15, Proverbs 24:29, Proverbs 27:9, Proverbs 27:25,
Isaiah 1:28, Isaiah 5:10, Isaiah 5:16, Isaiah 12:6, Isaiah 14:17, Isaiah 16:2,
Isaiah 19:24, Isaiah 29:1, Isaiah 29:12, Isaiah 36:21, Isaiah 38:21, Isaiah
41:24, Isaiah 46:2, Jeremiah 7:15, Jeremiah 20:15, Jeremiah 22:19, Jeremiah
23:11, Jeremiah 28:10, Jeremiah 32:16, Jeremiah 33:17, Jeremiah 36:11, Jeremiah
44:20, Ezekiel 12:9, Ezekiel 16:44, Ezekiel 19:6, Ezekiel 20:29, Ezekiel 40:45,
Amos 5:9, Habakkuk 2:2, Zephaniah 3:18, Zechariah 2:12, Zechariah 9:12,
Zechariah 14:1, Malachi 3:12, Matthew 10:22, Matthew 16:25, Matthew 17:23,
Matthew 18:29, Matthew 19:27, Matthew 20:34, Matthew 21:26, Matthew 27:43, Mark
5:27, Mark 8:8, Mark 9:36, Mark 10:15, Mark 12:4, Mark 12:23, Mark 13:13, Mark
14:32, Luke 1:11, Luke 3:27, Luke 7:33, Luke 8:30, Luke 9:24, Luke 10:17, Luke
11:30, Luke 18:17, Luke 19:9, Luke 21:30, Luke 22:46, Luke 22:71, Luke 23:15,
Luke 24:20, John 5:21, John 9:2, John 14:30, John 15:7, John 16:24, John 18:30,
John 19:28, John 19:34, John 20:6, John 21:9, Acts 11:22, Acts 15:40, Acts
18:28, Acts 22:7, Acts 27:15, Acts 27:23, Acts 28:14, Romans 1:30, Romans 8:24,
Romans 16:15, 1 Corinthians 6:3, 1 Corinthians 8:8, 1 Corinthians 9:19, 1
Corinthians 14:4, 1 Corinthians 14:20, 1 Corinthians 15:20, 2 Corinthians 6:18,
2 Corinthians 11:17, Galatians 3:2, Galatians 3:24, Galatians 4:4, Ephesians
1:9, Ephesians 4:8, Philippians 2:3, Philippians 2:19, Colossians 2:15,
Colossians 2:22, 1 Timothy 1:17, Titus 2:13, Hebrews 9:21, Hebrews 10:38, James
2:1, 1 Peter 1:25, 1 John 3:22, Jude 1:18, Revelation 1:2, Revelation 2:3,
Revelation 2:16, Revelation 7:7, Revelation 22:12, Genesis 2:13, Genesis 6:14,
Genesis 9:6, Genesis 13:1, Genesis 21:8, Genesis 27:28, Genesis 31:15, Genesis
34:1, Genesis 45:24, Genesis 46:2, Genesis 48:3, Genesis 49:27, Exodus 2:17,
Exodus 5:18, Exodus 7:3, Exodus 12:51, Exodus 29:3, Exodus 29:4, Exodus 29:19,
Exodus 31:8, Exodus 40:6, Leviticus 18:19, Leviticus 25:14, Leviticus 26:28,
Numbers 3:6, Numbers 5:23, Numbers 8:25, Numbers 11:28, Numbers 12:12, Numbers
14:41, Numbers 23:18, Numbers 34:8, Deuteronomy 1:10, Deuteronomy 2:35,
Deuteronomy 3:25, Deuteronomy 7:21, Deuteronomy 10:7, Deuteronomy 27:25,
Deuteronomy 28:41, Deuteronomy 33:1, Deuteronomy 34:5, Joshua 13:24, Joshua
20:2, Judges 3:18, Judges 6:16, Judges 18:16, Judges 19:7, 1 Samuel 1:6, 1
Samuel 6:10, 1 Samuel 14:31, 1 Samuel 20:17, 1 Samuel 24:22, 1 Samuel 25:16, 1
Samuel 28:16, 1 Samuel 28:25, 1 Samuel 31:10, 2 Samuel 13:7, 2 Samuel 22:25, 2
Samuel 22:40, 2 Samuel 23:6, 1 Kings 5:4, 1 Kings 10:8, 1 Kings 12:13, 2 Kings
17:3, 2 Kings 17:30, 2 Kings 17:39, 2 Kings 18:3, 2 Kings 18:8, 1 Chronicles
6:19, 1 Chronicles 7:20, 1 Chronicles 10:3, 1 Chronicles 11:1, 1 Chronicles
27:13, 2 Chronicles 20:13, 2 Chronicles 28:20, 2 Chronicles 29:2, 2 Chronicles
33:1, 2 Chronicles 36:11, Nehemiah 3:18, Nehemiah 11:9, Esther 3:5, Esther
5:13, Job 3:13, Job 22:6, Job 22:28, Job 30:22, Job 35:11, Job 36:18, Job
39:24, Psalms 8:5, Psalms 18:39, Psalms 24:7, Psalms 24:9, Psalms 36:8, Psalms
57:9, Psalms 58:9, Psalms 63:5, Psalms 74:1, Psalms 78:58, Psalms 79:12, Psalms
82:3, Psalms 90:15, Psalms 99:1, Psalms 107:3, Psalms 107:32, Psalms 108:3,
Psalms 109:28, Psalms 109:31, Psalms 143:11, Psalms 145:21, Proverbs 11:20,
Proverbs 15:6, Proverbs 17:20, Proverbs 17:28, Proverbs 18:8, Proverbs 18:20,
Proverbs 19:1, Proverbs 23:34, Proverbs 24:11, Proverbs 24:24, Proverbs 26:22,
Proverbs 28:12, Proverbs 28:18, Proverbs 29:16, Proverbs 31:2, Ecclesiastes
7:4, Ecclesiastes 7:10, Isaiah 10:34, Isaiah 32:9, Isaiah 38:6, Isaiah 51:15,
Isaiah 62:3, Isaiah 64:1, Jeremiah 2:17, Jeremiah 3:11, Jeremiah 10:4, Jeremiah
23:37, Jeremiah 23:40, Jeremiah 25:17, Jeremiah 35:5, Ezekiel 3:8, Ezekiel 4:1,
Ezekiel 6:10, Ezekiel 9:10, Ezekiel 17:14, Ezekiel 32:14, Ezekiel 33:17, Daniel
2:22, Daniel 3:6, Daniel 10:15, Hosea 1:9, Matthew 5:10, Matthew 6:33, Matthew
10:10, Matthew 12:3, Matthew 15:14, Matthew 19:10, Matthew 19:16, Matthew 22:3,
Matthew 25:36, Mark 1:3, Mark 2:24, Mark 3:26, Mark 8:22, Mark 10:2, Mark
14:71, Mark 15:19, Luke 1:24, Luke 6:30, Luke 6:39, Luke 7:2, Luke 10:36, Luke
12:30, Luke 12:38, Luke 13:21, Luke 15:2, Luke 19:7, John 4:40, John 5:16, John
5:34, John 7:10, John 8:13, John 10:6, John 13:7, John 13:14, John 16:27, John
20:4, John 20:14, John 20:16, John 20:21, Acts 2:28, Acts 7:23, Acts 8:24, Acts
9:4, Acts 23:31, Acts 25:13, Acts 26:12, Acts 28:10, Acts 28:16, Romans 1:10,
Romans 3:7, Romans 5:20, 1 Corinthians 8:13, 1 Corinthians 11:26, 2 Corinthians
2:7, 2 Corinthians 11:28, 2 Corinthians 11:32, 2 Corinthians 12:5, Galatians
4:19, Ephesians 3:17, Philippians 1:12, Philippians 1:26, Colossians 4:13, 1
Thessalonians 5:5, 1 Timothy 3:12, 1 Timothy 5:22, 2 Timothy 1:2, 2 Timothy
1:15, 2 Timothy 3:9, Hebrews 11:40, Hebrews 13:2, James 3:3, James 4:6, 1 Peter
2:13, 1 Peter 2:25, 1 Peter 4:16, 1 John 4:12, Revelation 5:3, Revelation 9:21,
Revelation 18:24, Revelation 20:14, Genesis 2:8, Genesis 27:3, Genesis 28:16,
Genesis 29:16, Genesis 31:49, Genesis 32:2, Genesis 32:13, Genesis 34:27,
Genesis 36:21, Genesis 47:31, Exodus 2:12, Exodus 21:5, Exodus 26:14, Exodus
38:14, Exodus 39:13, Exodus 40:24, Leviticus 14:38, Leviticus 25:7, Leviticus
25:42, Leviticus 26:32, Numbers 2:16, Numbers 3:49, Numbers 8:14, Numbers
15:33, Numbers 20:22, Numbers 22:24, Deuteronomy 6:5, Deuteronomy 12:32,
Deuteronomy 15:3, Deuteronomy 22:28, Joshua 11:7, Joshua 11:13, Judges 5:10,
Judges 5:18, 1 Samuel 8:14, 1 Samuel 9:23, 1 Samuel 11:6, 1 Samuel 17:11, 1
Samuel 25:9, 1 Samuel 27:6, 1 Samuel 31:6, 2 Samuel 5:1, 2 Samuel 18:16, 1
Kings 3:25, 1 Kings 4:6, 1 Kings 9:12, 1 Kings 12:3, 1 Kings 14:16, 1 Kings
15:10, 1 Kings 18:9, 1 Kings 22:36, 2 Kings 4:21, 2 Kings 15:34, 2 Kings 16:4,
1 Chronicles 2:7, 1 Chronicles 6:80, 1 Chronicles 7:14, 1 Chronicles 9:20, 1
Chronicles 22:6, 2 Chronicles 13:20, 2 Chronicles 15:14, 2 Chronicles 22:3, 2
Chronicles 28:4, 2 Chronicles 35:27, Nehemiah 4:20, Nehemiah 6:5, Nehemiah
12:10, Job 2:4, Job 5:4, Job 5:13, Job 5:17, Job 6:6, Job 15:29, Job 24:17, Job
34:6, Job 34:37, Psalms 10:6, Psalms 18:41, Psalms 32:2, Psalms 32:8, Psalms
51:17, Psalms 62:12, Psalms 66:6, Psalms 75:1, Psalms 78:71, Psalms 79:3,
Psalms 90:4, Psalms 91:13, Psalms 106:1, Psalms 109:17, Psalms 116:16, Psalms
124:7, Psalms 145:7, Psalms 147:8, Proverbs 1:11, Proverbs 11:6, Proverbs
12:11, Proverbs 13:4, Proverbs 15:28, Proverbs 21:5, Proverbs 25:18, Proverbs
28:8, Proverbs 28:14, Proverbs 30:16, Ecclesiastes 1:10, Ecclesiastes 4:13,
Isaiah 1:20, Isaiah 3:11, Isaiah 24:14, Isaiah 27:3, Isaiah 33:24, Isaiah 35:1,
Isaiah 38:7, Isaiah 40:19, Isaiah 41:28, Isaiah 54:12, Isaiah 59:1, Jeremiah
5:21, Jeremiah 6:25, Jeremiah 27:17, Jeremiah 29:9, Jeremiah 33:3, Jeremiah
49:27, Ezekiel 2:9, Ezekiel 3:5, Ezekiel 23:5, Ezekiel 30:17, Ezekiel 34:5,
Ezekiel 37:5, Ezekiel 38:3, Daniel 11:9, Hosea 2:14, Hosea 6:2, Hosea 6:10,
Amos 2:16, Malachi 3:13, Matthew 1:10, Matthew 1:13, Matthew 1:15, Matthew 2:7,
Matthew 6:15, Matthew 6:22, Matthew 6:32, Matthew 9:23, Matthew 12:28, Matthew
15:6, Matthew 22:30, Matthew 22:42, Matthew 27:5, Mark 2:20, Mark 7:19, Mark
9:21, Mark 10:37, Mark 12:10, Mark 14:31, Mark 14:48, Mark 14:64, Mark 15:14,
Mark 15:17, Mark 15:42, Luke 3:37, Luke 6:14, Luke 6:40, Luke 10:31, Luke
11:20, Luke 13:12, Luke 15:14, Luke 16:28, Luke 22:17, Luke 22:39, John 1:46,
John 3:28, John 6:25, John 17:3, John 18:4, John 18:12, John 20:30, Acts 1:5,
Acts 2:24, Acts 9:32, Acts 9:37, Acts 12:18, Acts 13:19, Acts 14:6, Acts 16:24,
Acts 22:12, Acts 27:22, Acts 27:44, Romans 4:3, Romans 8:22, Romans 10:21,
Romans 13:8, 1 Corinthians 2:16, 1 Corinthians 3:4, 1 Corinthians 15:53, 2
Corinthians 3:2, Galatians 5:4, Ephesians 5:29, Philippians 2:22, Colossians
3:8, 1 Thessalonians 2:5, 1 Thessalonians 2:19, 1 Thessalonians 3:12, 2
Thessalonians 2:14, 2 Thessalonians 3:7, 1 Timothy 5:1, 2 Timothy 2:4, Philemon
1:5, Hebrews 1:4, Hebrews 1:6, Hebrews 11:25, 1 John 2:2, 1 John 2:4, 1 John
5:3, Revelation 16:4, Revelation 17:9, Revelation 19:14, Revelation 20:15,
Revelation 22:7, Genesis 2:22, Genesis 12:20, Genesis 18:15, Genesis 21:2,
Genesis 26:26, Genesis 27:11, Genesis 27:17, Genesis 31:7, Genesis 31:28,
Genesis 34:28, Exodus 3:10, Exodus 4:26, Exodus 5:17, Exodus 8:27, Exodus 12:9,
Exodus 12:41, Exodus 13:6, Exodus 19:19, Exodus 22:2, Exodus 22:15, Exodus
26:30, Exodus 27:8, Exodus 28:40, Exodus 37:20, Exodus 39:31, Leviticus 7:10,
Leviticus 14:5, Leviticus 16:7, Leviticus 27:25, Numbers 3:3, Numbers 16:34,
Numbers 24:18, Numbers 33:14, Deuteronomy 1:24, Deuteronomy 8:8, Deuteronomy
9:17, Deuteronomy 10:13, Deuteronomy 12:9, Deuteronomy 24:6, Deuteronomy 28:38,
Deuteronomy 28:44, Joshua 13:7, Judges 1:11, Judges 9:8, Judges 18:6, Judges
21:15, 1 Samuel 16:22, 1 Samuel 18:28, 1 Samuel 24:14, 1 Samuel 25:32, 2 Samuel
5:14, 2 Samuel 14:10, 2 Samuel 19:33, 1 Kings 4:3, 1 Kings 9:28, 1 Kings 21:5,
2 Kings 14:20, 2 Kings 14:29, 2 Kings 15:3, 2 Kings 19:30, 2 Kings 25:20, 1
Chronicles 8:8, 1 Chronicles 9:14, 1 Chronicles 12:22, 1 Chronicles 14:17, 1
Chronicles 22:7, 1 Chronicles 23:6, 1 Chronicles 24:1, 1 Chronicles 24:20, 1
Chronicles 27:15, 1 Chronicles 28:10, 2 Chronicles 9:15, 2 Chronicles 13:17, 2
Chronicles 17:13, 2 Chronicles 26:4, 2 Chronicles 36:2, Esther 2:10, Esther
2:19, Job 8:4, Job 11:18, Job 15:20, Job 19:12, Job 33:15, Psalms 4:6, Psalms
6:6, Psalms 22:25, Psalms 31:2, Psalms 35:20, Psalms 50:1, Psalms 50:3, Psalms
64:10, Psalms 69:35, Psalms 70:5, Psalms 74:19, Psalms 77:16, Psalms 78:7,
Psalms 86:9, Psalms 89:7, Psalms 98:2, Psalms 104:15, Proverbs 5:20, Proverbs
10:1, Proverbs 19:19, Proverbs 19:26, Proverbs 20:2, Proverbs 28:7, Proverbs
28:17, Proverbs 31:4, Ecclesiastes 2:9, Ecclesiastes 3:13, Ecclesiastes 3:21,
Ecclesiastes 5:4, Ecclesiastes 5:13, Song of Solomon 2:15, Song of Solomon 7:9,
Isaiah 1:25, Isaiah 8:13, Isaiah 11:1, Isaiah 14:10, Isaiah 21:5, Isaiah 37:31,
Isaiah 59:20, Isaiah 63:19, Isaiah 64:12, Jeremiah 23:30, Jeremiah 31:39,
Jeremiah 33:2, Jeremiah 36:18, Jeremiah 51:13, Jeremiah 52:26, Lamentations
3:32, Ezekiel 28:15, Ezekiel 31:2, Ezekiel 33:19, Ezekiel 39:24, Ezekiel 40:14,
Ezekiel 42:2, Daniel 4:5, Amos 2:12, Micah 7:7, Habakkuk 2:14, Zephaniah 1:16,
Zechariah 4:1, Zechariah 7:13, Matthew 1:21, Matthew 7:16, Matthew 10:11,
Matthew 14:6, Matthew 16:1, Matthew 21:3, Matthew 26:27, Matthew 26:61, Matthew
27:37, Matthew 27:53, Matthew 28:5, Mark 1:29, Mark 6:15, Mark 9:28, Mark
16:12, Luke 1:29, Luke 5:2, Luke 9:44, Luke 10:42, Luke 11:37, Luke 11:43, Luke
14:29, Luke 16:5, Luke 16:19, Luke 18:4, Luke 19:4, Luke 24:25, John 4:5, John
7:30, John 8:23, John 11:16, John 18:13, John 18:32, John 19:42, John 21:4,
Acts 2:9, Acts 8:19, Acts 9:24, Acts 20:21, Acts 20:23, Acts 25:4, Romans 2:19,
Romans 4:14, Romans 6:3, 1 Corinthians 3:5, 1 Corinthians 7:19, 1 Corinthians
11:19, 2 Corinthians 1:3, 2 Corinthians 3:11, 2 Corinthians 11:10, Galatians
4:6, Ephesians 1:10, Ephesians 3:21, Ephesians 4:4, Ephesians 6:5, Philippians
1:23, Philippians 4:11, Colossians 1:2, Colossians 1:13, 1 Thessalonians 5:1, 2
Thessalonians 2:9, 2 Thessalonians 2:12, 2 Thessalonians 3:16, 1 Timothy 2:12,
1 Timothy 3:10, Hebrews 4:11, Hebrews 7:20, James 1:4, 1 Peter 3:8, 2 Peter
1:14, 3 John 1:5, Revelation 1:12, Revelation 7:6, Revelation 11:16, Genesis
4:2, Genesis 5:1, Genesis 6:12, Genesis 16:7, Genesis 17:6, Genesis 18:12,
Genesis 21:29, Genesis 26:27, Genesis 29:9, Genesis 30:29, Genesis 30:39,
Genesis 41:13, Genesis 41:52, Exodus 1:15, Exodus 2:18, Exodus 6:18, Exodus
12:2, Exodus 16:2, Exodus 17:11, Exodus 20:19, Exodus 22:26, Exodus 23:30,
Exodus 30:7, Exodus 39:39, Leviticus 10:11, Leviticus 11:25, Leviticus 13:44,
Leviticus 19:25, Leviticus 21:11, Numbers 8:10, Numbers 26:45, Numbers 33:51,
Deuteronomy 3:5, Deuteronomy 4:48, Deuteronomy 5:3, Deuteronomy 16:12,
Deuteronomy 16:21, Deuteronomy 25:10, Deuteronomy 30:8, Joshua 9:25, Joshua
10:7, Joshua 13:2, Joshua 13:28, Joshua 18:2, Judges 1:5, Judges 3:23, Judges
4:8, Judges 11:32, Judges 12:14, Judges 13:24, Judges 14:10, Judges 18:4,
Judges 18:21, Ruth 2:1, Ruth 2:16, 1 Samuel 1:17, 1 Samuel 2:11, 1 Samuel 2:23,
1 Samuel 17:19, 1 Samuel 18:11, 1 Samuel 20:22, 1 Samuel 20:23, 1 Samuel 23:18,
2 Samuel 7:1, 2 Samuel 8:17, 2 Samuel 23:19, 1 Kings 3:5, 1 Kings 4:5, 1 Kings
7:19, 2 Kings 3:8, 2 Kings 6:14, 2 Kings 7:14, 2 Kings 17:2, 2 Kings 17:5, 1
Chronicles 4:12, 1 Chronicles 5:8, 1 Chronicles 6:39, 1 Chronicles 6:66, 1
Chronicles 9:32, 1 Chronicles 11:21, 1 Chronicles 18:16, 1 Chronicles 23:19, 1
Chronicles 29:28, 2 Chronicles 3:13, 2 Chronicles 15:11, 2 Chronicles 22:12, 2
Chronicles 34:6, 2 Chronicles 35:2, Ezra 8:3, Ezra 10:30, Job 5:5, Job 5:25,
Job 24:1, Job 27:6, Job 28:3, Job 31:28, Job 33:24, Job 36:11, Psalms 1:5,
Psalms 21:10, Psalms 27:2, Psalms 35:17, Psalms 36:4, Psalms 42:7, Psalms
55:22, Psalms 58:8, Psalms 64:5, Psalms 68:22, Psalms 69:26, Psalms 74:20,
Psalms 81:16, Psalms 90:5, Psalms 102:18, Psalms 105:44, Psalms 111:9, Psalms
115:7, Psalms 118:15, Psalms 123:4, Psalms 138:4, Psalms 140:12, Psalms 146:7,
Proverbs 1:19, Proverbs 1:28, Proverbs 3:28, Proverbs 6:26, Proverbs 11:5,
Proverbs 18:19, Proverbs 29:18, Song of Solomon 3:7, Song of Solomon 5:8,
Isaiah 21:12, Isaiah 22:12, Isaiah 32:3, Isaiah 41:5, Isaiah 57:20, Isaiah
65:3, Jeremiah 2:33, Jeremiah 3:9, Jeremiah 5:11, Jeremiah 5:27, Jeremiah 9:6,
Jeremiah 12:17, Jeremiah 31:30, Jeremiah 36:17, Jeremiah 36:19, Jeremiah 48:13,
Jeremiah 51:10, Jeremiah 51:20, Jeremiah 51:45, Jeremiah 51:49, Ezekiel 1:9,
Ezekiel 1:12, Ezekiel 4:10, Ezekiel 7:18, Ezekiel 11:18, Ezekiel 13:12, Ezekiel
20:4, Ezekiel 22:24, Ezekiel 24:1, Ezekiel 24:5, Ezekiel 30:8, Ezekiel 41:20,
Hosea 2:17, Hosea 4:16, Jonah 2:5, Jonah 4:7, Habakkuk 3:9, Haggai 2:15,
Zechariah 8:15, Matthew 1:7, Matthew 2:12, Matthew 9:8, Matthew 10:27, Matthew
10:32, Matthew 14:5, Matthew 19:4, Matthew 20:28, Matthew 22:29, Matthew 25:16,
Mark 5:36, Mark 5:43, Mark 10:34, Mark 13:21, Mark 15:4, Luke 2:8, Luke 9:29,
Luke 12:7, Luke 14:19, Luke 14:32, Luke 15:24, Luke 16:11, Luke 16:23, Luke
18:32, John 1:12, John 11:52, John 16:18, John 21:22, Acts 5:27, Acts 7:22,
Acts 7:56, Acts 8:31, Acts 8:35, Acts 15:27, Acts 16:11, Acts 23:16, Acts
23:28, Acts 27:31, Romans 2:21, Romans 9:1, Romans 12:16, Romans 14:9, 1
Corinthians 1:4, 1 Corinthians 5:12, 1 Corinthians 7:10, 1 Corinthians 7:38, 1
Corinthians 15:49, 2 Corinthians 2:12, 2 Corinthians 6:8, 2 Corinthians 8:6, 2
Corinthians 8:8, Ephesians 1:14, Ephesians 2:8, Philippians 2:2, Colossians
1:12, 1 Timothy 1:5, 1 Timothy 2:8, 1 Timothy 6:14, Titus 3:15, Hebrews 8:7,
Hebrews 13:18, James 1:1, James 3:9, 1 John 1:6, 1 John 2:17, Revelation 1:18,
Revelation 10:3, Revelation 21:15, Genesis 3:23, Genesis 7:18, Genesis 10:21,
Genesis 11:27, Genesis 13:4, Genesis 15:3, Genesis 18:33, Genesis 21:20,
Genesis 22:18, Genesis 34:20, Genesis 35:20, Genesis 43:25, Genesis 45:12,
Genesis 46:30, Exodus 2:24, Exodus 6:19, Exodus 16:5, Exodus 16:25, Exodus
28:17, Exodus 32:22, Leviticus 4:5, Leviticus 11:8, Leviticus 18:25, Leviticus
18:28, Numbers 1:4, Numbers 3:1, Numbers 4:10, Numbers 6:23, Numbers 12:11,
Numbers 22:12, Numbers 26:21, Numbers 26:30, Numbers 28:10, Numbers 28:23,
Numbers 31:13, Numbers 34:6, Numbers 35:26, Deuteronomy 4:17, Deuteronomy
10:14, Deuteronomy 16:5, Deuteronomy 24:10, Deuteronomy 33:28, Joshua 7:20,
Joshua 13:17, Joshua 21:33, Judges 3:21, Judges 11:16, Judges 16:16, Judges
17:11, 1 Samuel 1:21, 1 Samuel 20:11, 1 Samuel 21:14, 2 Samuel 1:14, 2 Samuel
2:9, 2 Samuel 16:17, 2 Samuel 18:6, 1 Kings 1:14, 1 Kings 10:24, 1 Kings 13:23,
1 Kings 17:11, 2 Kings 11:6, 2 Kings 20:7, 1 Chronicles 1:33, 1 Chronicles 4:3,
1 Chronicles 4:43, 1 Chronicles 6:3, 1 Chronicles 16:7, 2 Chronicles 13:22, 2
Chronicles 14:3, Nehemiah 3:24, Nehemiah 12:41, Job 1:14, Job 4:20, Job 9:19,
Job 20:20, Job 21:34, Job 32:11, Job 33:23, Psalms 10:7, Psalms 12:1, Psalms
21:7, Psalms 30:12, Psalms 31:9, Psalms 32:4, Psalms 36:10, Psalms 66:3, Psalms
68:33, Psalms 74:9, Psalms 89:11, Psalms 91:14, Psalms 91:15, Psalms 104:28,
Proverbs 1:23, Proverbs 8:30, Proverbs 13:2, Proverbs 16:5, Proverbs 19:23,
Proverbs 21:11, Proverbs 22:16, Proverbs 25:8, Proverbs 30:33, Ecclesiastes
1:14, Ecclesiastes 5:14, Isaiah 23:7, Isaiah 41:27, Isaiah 43:13, Isaiah 57:18,
Isaiah 63:18, Jeremiah 3:15, Jeremiah 14:20, Jeremiah 19:12, Jeremiah 22:16,
Jeremiah 35:1, Jeremiah 47:6, Jeremiah 48:40, Ezekiel 13:3, Ezekiel 21:20,
Ezekiel 21:25, Ezekiel 26:6, Ezekiel 30:15, Ezekiel 34:15, Ezekiel 35:4,
Ezekiel 38:7, Ezekiel 39:3, Daniel 2:32, Daniel 5:1, Daniel 5:18, Daniel 12:8,
Hosea 2:10, Hosea 5:8, Amos 6:5, Amos 6:13, Amos 7:13, Amos 9:10, Jonah 1:2,
Nahum 1:9, Nahum 2:5, Zechariah 11:10, Matthew 1:4, Matthew 9:12, Matthew 10:3,
Matthew 12:38, Matthew 19:6, Matthew 19:26, Matthew 22:12, Matthew 23:28, Mark
1:21, Mark 1:40, Mark 3:2, Mark 3:6, Mark 4:34, Mark 5:41, Mark 8:2, Mark 8:4,
Mark 9:14, Mark 10:45, Mark 12:6, Mark 14:67, Luke 1:42, Luke 5:35, Luke 8:4,
Luke 9:9, Luke 9:62, Luke 16:12, Luke 18:7, Luke 22:2, John 1:41, John 6:7,
John 6:44, John 7:15, John 12:21, John 16:15, John 16:26, John 17:2, John
19:32, John 21:14, Acts 1:15, Acts 2:41, Acts 9:1, Acts 9:3, Acts 9:41, Acts
18:3, Acts 18:21, Acts 27:4, Acts 27:11, Romans 4:6, Romans 4:24, Romans 5:1,
Romans 5:13, Romans 8:20, Romans 11:6, Romans 13:5, Romans 16:20, 1 Corinthians
3:2, 1 Corinthians 12:25, 1 Corinthians 13:3, 1 Corinthians 15:42, Galatians
5:1, Philippians 1:11, Philippians 1:17, Philippians 1:22, 1 Thessalonians
5:15, Hebrews 7:23, Hebrews 10:10, Hebrews 10:28, Hebrews 11:33, Hebrews 13:23,
James 5:10, 1 Peter 5:6, 2 Peter 1:6, Revelation 2:12, Revelation 12:15,
Genesis 18:20, Genesis 18:27, Genesis 19:38, Genesis 20:2, Genesis 25:4,
Genesis 27:13, Genesis 28:3, Genesis 35:17, Genesis 38:2, Genesis 39:18,
Genesis 42:5, Exodus 2:2, Exodus 7:12, Exodus 12:5, Exodus 14:7, Exodus 15:4,
Exodus 16:21, Exodus 18:13, Exodus 24:6, Exodus 25:26, Exodus 28:14, Exodus
39:9, Leviticus 7:26, Leviticus 9:21, Leviticus 24:5, Leviticus 25:53, Numbers
3:33, Numbers 15:32, Numbers 17:13, Numbers 26:3, Numbers 29:17, Numbers 32:20,
Numbers 33:48, Deuteronomy 1:13, Deuteronomy 1:45, Deuteronomy 8:10,
Deuteronomy 18:2, Deuteronomy 18:19, Deuteronomy 23:1, Joshua 1:3, Joshua 3:11,
Joshua 19:32, Judges 1:28, Judges 5:2, Judges 7:17, Judges 9:40, Judges 12:7,
Ruth 1:20, 1 Samuel 2:26, 1 Samuel 17:54, 1 Samuel 24:9, 1 Samuel 26:18, 1
Samuel 26:22, 2 Samuel 2:12, 2 Samuel 7:15, 2 Samuel 11:16, 2 Samuel 14:5, 2
Samuel 14:27, 2 Samuel 19:3, 2 Samuel 22:9, 2 Samuel 24:11, 1 Kings 4:30, 1
Kings 8:17, 1 Kings 17:3, 2 Kings 4:12, 2 Kings 14:4, 2 Kings 18:36, 2 Kings
19:24, 1 Chronicles 3:15, 1 Chronicles 6:48, 1 Chronicles 9:18, 1 Chronicles
17:4, 1 Chronicles 21:6, 1 Chronicles 27:20, 2 Chronicles 6:7, 2 Chronicles
14:4, 2 Chronicles 20:4, 2 Chronicles 20:11, Ezra 6:4, Job 3:5, Job 17:5, Job
28:11, Job 31:12, Psalms 8:1, Psalms 10:2, Psalms 10:17, Psalms 18:8, Psalms
19:5, Psalms 25:3, Psalms 31:21, Psalms 45:9, Psalms 46:10, Psalms 50:16,
Psalms 53:3, Psalms 53:4, Psalms 62:10, Psalms 69:9, Psalms 74:11, Psalms
78:50, Psalms 95:2, Psalms 104:1, Psalms 107:26, Psalms 116:3, Psalms 128:2,
Psalms 139:12, Psalms 141:2, Proverbs 11:9, Proverbs 11:21, Proverbs 12:4,
Proverbs 17:15, Proverbs 22:29, Proverbs 25:5, Proverbs 26:2, Proverbs 27:14,
Proverbs 27:22, Ecclesiastes 3:12, Ecclesiastes 5:20, Ecclesiastes 10:1,
Ecclesiastes 10:14, Song of Solomon 3:8, Isaiah 17:1, Isaiah 26:13, Isaiah
40:17, Isaiah 45:10, Isaiah 61:2, Jeremiah 11:9, Jeremiah 14:2, Jeremiah 33:7,
Jeremiah 48:20, Ezekiel 2:2, Ezekiel 8:7, Ezekiel 20:11, Ezekiel 22:21, Ezekiel
23:6, Ezekiel 23:41, Ezekiel 29:1, Ezekiel 36:24, Ezekiel 37:4, Ezekiel 40:31,
Daniel 2:19, Daniel 2:20, Amos 5:26, Jonah 2:7, Micah 6:1, Habakkuk 2:4,
Zephaniah 3:4, Matthew 5:46, Matthew 10:34, Matthew 13:49, Matthew 15:37,
Matthew 18:26, Matthew 23:26, Matthew 27:15, Matthew 27:32, Mark 3:21, Mark
3:29, Mark 4:13, Mark 4:21, Mark 5:29, Mark 6:36, Mark 9:15, Mark 12:5, Mark
12:18, Luke 1:25, Luke 4:1, Luke 6:32, Luke 8:38, Luke 8:52, Luke 13:24, Luke
14:3, Luke 17:29, Luke 19:12, Luke 21:5, Luke 23:23, Luke 24:35, John 6:31,
John 6:54, John 6:65, John 7:38, John 8:11, John 8:31, John 8:37, John 11:20,
John 12:25, John 19:9, Acts 1:26, Acts 3:18, Acts 3:23, Acts 4:7, Acts 8:16,
Acts 13:4, Acts 15:8, Acts 17:14, Acts 23:34, Romans 3:22, Romans 9:9, Romans
9:31, Romans 15:1, 1 Corinthians 4:4, 1 Corinthians 6:10, 1 Corinthians 10:1, 1
Corinthians 12:11, 2 Corinthians 1:5, 2 Corinthians 1:23, 2 Corinthians 2:15,
Galatians 4:3, Ephesians 3:18, Ephesians 4:10, 2 Thessalonians 3:4, 1 Timothy
5:9, 1 Timothy 5:20, 2 Timothy 4:16, Titus 2:7, Titus 3:1, Hebrews 9:17, James
1:15, 2 Peter 1:5, 1 John 3:6, Revelation 6:13, Genesis 1:27, Genesis 9:18,
Genesis 18:13, Genesis 34:26, Genesis 37:23, Genesis 39:2, Genesis 40:9,
Genesis 41:7, Genesis 43:22, Genesis 50:2, Exodus 2:20, Exodus 3:21, Exodus
4:8, Exodus 4:30, Exodus 9:21, Exodus 12:43, Exodus 21:10, Exodus 21:11, Exodus
24:11, Exodus 30:14, Exodus 39:24, Leviticus 9:13, Leviticus 11:7, Leviticus
11:24, Numbers 14:23, Numbers 15:21, Numbers 15:41, Numbers 21:14, Numbers
24:2, Numbers 28:5, Numbers 30:13, Numbers 31:42, Numbers 32:25, Deuteronomy
2:15, Deuteronomy 16:17, Deuteronomy 20:15, Deuteronomy 28:2, Deuteronomy
34:12, Joshua 3:5, Joshua 8:15, Joshua 21:19, Judges 5:7, Judges 6:12, 1 Samuel
14:38, 1 Samuel 19:15, 1 Samuel 20:35, 1 Samuel 25:1, 1 Samuel 27:7, 1 Samuel
28:10, 1 Samuel 31:3, 2 Samuel 1:5, 2 Samuel 2:14, 2 Samuel 2:28, 2 Samuel
15:26, 1 Kings 2:45, 1 Kings 6:9, 1 Kings 22:25, 2 Kings 4:23, 2 Kings 15:37, 2
Kings 25:28, 1 Chronicles 9:4, 1 Chronicles 15:14, 1 Chronicles 27:11, 2
Chronicles 3:14, 2 Chronicles 11:12, 2 Chronicles 18:24, Ezra 8:24, Nehemiah
3:32, Esther 2:2, Esther 9:10, Job 10:1, Job 14:14, Job 15:23, Job 22:30, Job
29:13, Job 32:12, Psalms 9:15, Psalms 11:6, Psalms 14:3, Psalms 25:5, Psalms
26:1, Psalms 44:17, Psalms 51:16, Psalms 58:10, Psalms 71:16, Psalms 73:27,
Psalms 78:49, Psalms 81:5, Psalms 84:2, Psalms 97:2, Psalms 99:7, Psalms 99:8,
Psalms 103:11, Psalms 106:45, Proverbs 11:13, Proverbs 11:24, Proverbs 12:14,
Proverbs 16:15, Proverbs 16:32, Proverbs 28:16, Isaiah 22:8, Isaiah 22:9,
Isaiah 24:4, Isaiah 24:21, Isaiah 28:12, Isaiah 30:9, Isaiah 40:7, Isaiah 45:5,
Isaiah 54:15, Isaiah 63:8, Jeremiah 2:9, Jeremiah 8:21, Jeremiah 20:13,
Jeremiah 31:17, Jeremiah 39:8, Jeremiah 49:21, Ezekiel 16:54, Ezekiel 21:9,
Ezekiel 23:36, Ezekiel 24:4, Ezekiel 24:10, Ezekiel 27:5, Ezekiel 29:2, Ezekiel
31:1, Ezekiel 32:22, Ezekiel 46:8, Hosea 8:6, Hosea 9:17, Joel 3:10, Amos 8:6,
Micah 2:6, Habakkuk 2:9, Zephaniah 1:11, Zephaniah 3:10, Zephaniah 3:12,
Matthew 1:8, Matthew 4:13, Matthew 7:8, Matthew 7:12, Matthew 8:2, Matthew
8:17, Matthew 11:24, Matthew 13:34, Matthew 13:43, Matthew 13:47, Matthew
14:20, Matthew 19:7, Matthew 22:23, Matthew 24:50, Matthew 27:4, Mark 1:15,
Mark 3:28, Mark 5:16, Mark 5:34, Mark 6:5, Mark 7:21, Mark 9:13, Mark 12:35,
Mark 14:10, Mark 16:3, Luke 2:12, Luke 2:35, Luke 2:49, Luke 9:1, Luke 11:10,
Luke 13:31, Luke 16:22, Luke 19:13, Luke 19:23, John 1:25, John 7:45, John
9:35, John 12:50, John 14:7, John 15:21, John 19:36, Acts 1:25, Acts 4:4, Acts
5:8, Acts 7:3, Acts 9:34, Acts 10:10, Acts 10:19, Acts 17:2, Acts 24:8, Romans
3:13, Romans 11:9, 1 Corinthians 3:17, 1 Corinthians 5:2, 2 Corinthians 1:24, 2
Corinthians 8:3, 2 Corinthians 8:15, 2 Corinthians 8:17, 2 Corinthians 8:18,
Ephesians 4:15, 1 Thessalonians 5:12, 1 Timothy 4:4, 1 Timothy 5:24, Titus
1:12, Hebrews 10:30, Hebrews 10:32, 1 Peter 1:5, 1 Peter 4:2, Revelation 1:8,
Revelation 2:26, Revelation 7:10, Revelation 7:16, Revelation 8:4, Revelation
21:13, Genesis 4:10, Genesis 5:3, Genesis 11:8, Genesis 14:11, Genesis 24:9,
Genesis 34:3, Genesis 34:17, Genesis 36:16, Genesis 39:10, Genesis 41:2, Exodus
13:8, Exodus 22:17, Exodus 29:15, Exodus 30:33, Exodus 35:11, Exodus 39:38,
Leviticus 11:39, Numbers 5:28, Numbers 10:21, Numbers 21:27, Numbers 23:16,
Numbers 25:2, Numbers 32:26, Deuteronomy 23:11, Deuteronomy 33:20, Joshua 1:16,
Joshua 2:17, Joshua 4:4, Joshua 5:2, Joshua 9:20, Joshua 10:41, Judges 1:32,
Judges 3:29, Judges 5:13, Judges 19:21, Judges 20:27, Judges 21:1, 1 Samuel
3:12, 1 Samuel 8:2, 1 Samuel 8:3, 1 Samuel 8:19, 1 Samuel 17:10, 1 Samuel 19:6,
1 Samuel 23:27, 2 Samuel 1:3, 2 Samuel 1:9, 2 Samuel 6:13, 2 Samuel 9:8, 2
Samuel 15:16, 2 Samuel 19:30, 2 Samuel 20:13, 2 Samuel 20:16, 1 Kings 7:3, 1
Kings 11:14, 1 Kings 13:13, 1 Kings 15:12, 2 Kings 10:35, 2 Kings 11:3, 2 Kings
23:14, 1 Chronicles 4:23, 1 Chronicles 4:39, 1 Chronicles 6:65, 1 Chronicles
16:31, 1 Chronicles 26:7, 1 Chronicles 28:3, 1 Chronicles 28:14, 2 Chronicles
20:3, 2 Chronicles 29:29, 2 Chronicles 32:10, Ezra 5:10, Ezra 7:12, Ezra 10:25,
Nehemiah 3:3, Nehemiah 4:11, Nehemiah 5:4, Esther 9:14, Job 12:3, Job 24:15,
Job 27:13, Psalms 18:13, Psalms 19:9, Psalms 22:15, Psalms 35:25, Psalms 54:6,
Psalms 58:11, Psalms 61:2, Psalms 65:10, Psalms 80:17, Psalms 92:9, Psalms
93:4, Psalms 101:7, Psalms 119:48, Psalms 142:3, Proverbs 14:33, Proverbs 23:5,
Ecclesiastes 6:6, Ecclesiastes 12:2, Isaiah 3:15, Isaiah 13:2, Isaiah 13:17,
Isaiah 15:3, Isaiah 21:15, Isaiah 25:12, Jeremiah 9:14, Jeremiah 20:17,
Jeremiah 26:1, Jeremiah 33:1, Jeremiah 44:5, Jeremiah 52:32, Ezekiel 16:40,
Ezekiel 19:3, Ezekiel 20:17, Ezekiel 22:6, Ezekiel 23:43, Ezekiel 24:19,
Ezekiel 32:1, Ezekiel 32:6, Ezekiel 35:13, Ezekiel 36:27, Ezekiel 40:38,
Ezekiel 48:9, Daniel 2:17, Daniel 4:24, Daniel 11:26, Daniel 11:34, Amos 5:25,
Micah 1:15, Micah 4:11, Zechariah 2:5, Zechariah 8:11, Zechariah 11:8, Malachi
1:3, Matthew 1:5, Matthew 7:3, Matthew 10:29, Matthew 15:2, Matthew 16:14,
Matthew 19:3, Matthew 20:13, Matthew 22:46, Matthew 25:1, Matthew 25:14,
Matthew 26:15, Matthew 27:57, Mark 4:36, Mark 5:31, Mark 8:7, Mark 8:15, Mark
9:7, Mark 11:24, Mark 12:2, Luke 6:33, Luke 6:41, Luke 13:27, Luke 17:21, Luke
19:24, Luke 19:38, Luke 22:18, Luke 24:36, John 4:18, John 5:32, John 6:30,
John 7:27, John 8:47, John 10:10, John 18:33, John 19:5, Acts 3:7, Acts 10:47,
Acts 11:11, Acts 14:5, Acts 25:22, Acts 26:25, Romans 11:7, Romans 11:13,
Romans 11:30, 1 Corinthians 1:7, 1 Corinthians 7:40, 1 Corinthians 8:12, 1
Corinthians 13:1, 1 Corinthians 15:1, 1 Corinthians 15:45, 1 Corinthians 16:7,
1 Corinthians 16:10, 2 Corinthians 4:7, 2 Corinthians 4:17, 2 Corinthians 5:6,
2 Corinthians 8:1, 2 Corinthians 12:16, Galatians 3:11, Galatians 4:17,
Ephesians 1:15, Ephesians 4:31, Ephesians 5:2, Ephesians 5:28, Ephesians 5:33,
Ephesians 6:14, 2 Timothy 4:5, Titus 1:4, Philemon 1:19, Hebrews 1:14, Hebrews
6:13, James 3:7, 1 Peter 1:6, 1 Peter 1:20, 1 Peter 2:15, 1 Peter 2:16, 1 Peter
3:5, 2 Peter 3:13, 1 John 3:7, Revelation 1:6, Revelation 1:15, Revelation
1:19, Revelation 7:5, Revelation 13:11, Genesis 6:2, Genesis 16:1, Genesis
21:33, Genesis 22:11, Genesis 23:18, Genesis 34:10, Genesis 39:3, Genesis
44:14, Exodus 5:5, Exodus 9:12, Exodus 12:25, Exodus 21:3, Exodus 23:1, Exodus
23:7, Exodus 26:3, Exodus 28:36, Exodus 32:21, Exodus 32:32, Exodus 35:4,
Exodus 39:28, Exodus 40:4, Leviticus 8:10, Leviticus 19:5, Leviticus 22:19,
Leviticus 23:31, Leviticus 25:32, Leviticus 25:39, Leviticus 25:51, Numbers
4:2, Numbers 23:6, Numbers 31:20, Numbers 31:27, Numbers 33:53, Numbers 35:19,
Deuteronomy 1:20, Deuteronomy 1:35, Deuteronomy 19:19, Deuteronomy 21:22,
Deuteronomy 26:4, Joshua 1:1, Joshua 6:14, Joshua 13:32, Joshua 21:12, Judges
1:18, Judges 5:21, Judges 6:6, Judges 7:9, Judges 9:13, Judges 15:3, Judges
19:14, Ruth 1:14, 1 Samuel 5:2, 1 Samuel 8:15, 1 Samuel 15:29, 1 Samuel 16:21,
1 Samuel 23:6, 1 Samuel 30:5, 2 Samuel 1:15, 2 Samuel 8:18, 2 Samuel 10:10, 2
Samuel 10:13, 2 Samuel 19:12, 2 Samuel 23:23, 2 Samuel 24:23, 1 Kings 7:34, 1
Kings 8:14, 1 Kings 18:15, 2 Kings 9:8, 2 Kings 13:9, 1 Chronicles 3:22, 1
Chronicles 6:10, 1 Chronicles 11:25, 1 Chronicles 16:6, 1 Chronicles 19:14, 1
Chronicles 22:1, 1 Chronicles 22:4, 2 Chronicles 6:3, 2 Chronicles 6:11, 2
Chronicles 9:7, 2 Chronicles 32:20, 2 Chronicles 32:28, 2 Chronicles 35:26,
Ezra 2:65, Nehemiah 1:10, Nehemiah 6:17, Nehemiah 9:16, Nehemiah 12:40, Job
7:4, Job 9:20, Job 10:3, Job 12:6, Job 16:13, Job 19:15, Job 23:9, Job 24:9,
Job 31:13, Job 34:11, Psalms 6:10, Psalms 8:3, Psalms 9:10, Psalms 12:6, Psalms
22:1, Psalms 23:5, Psalms 30:11, Psalms 49:13, Psalms 71:13, Psalms 74:23,
Psalms 86:16, Psalms 89:2, Psalms 89:14, Psalms 93:3, Psalms 104:24, Psalms
109:18, Psalms 110:4, Psalms 129:8, Psalms 140:8, Psalms 148:13, Proverbs 4:18,
Proverbs 6:23, Proverbs 24:27, Song of Solomon 5:15, Song of Solomon 6:2,
Isaiah 3:3, Isaiah 5:27, Isaiah 10:25, Isaiah 10:29, Isaiah 14:24, Isaiah 21:4,
Isaiah 26:16, Isaiah 27:7, Isaiah 33:2, Isaiah 57:14, Isaiah 60:12, Isaiah
64:3, Jeremiah 1:1, Jeremiah 4:8, Jeremiah 4:23, Jeremiah 10:23, Jeremiah 36:1,
Jeremiah 37:8, Jeremiah 51:37, Ezekiel 2:7, Ezekiel 8:8, Ezekiel 8:15, Ezekiel
21:30, Ezekiel 25:5, Ezekiel 28:8, Ezekiel 30:20, Ezekiel 32:28, Ezekiel 34:19,
Ezekiel 38:10, Ezekiel 47:23, Daniel 4:13, Hosea 4:5, Hosea 4:9, Hosea 7:9,
Hosea 9:12, Hosea 10:3, Amos 7:15, Nahum 2:10, Haggai 1:2, Zechariah 2:10,
Zechariah 7:2, Zechariah 8:7, Zechariah 9:3, Malachi 4:4, Matthew 13:39,
Matthew 14:24, Matthew 15:5, Matthew 18:23, Matthew 20:17, Matthew 23:3,
Matthew 26:35, Matthew 27:62, Mark 7:13, Mark 7:36, Mark 13:24, Mark 14:47,
Luke 1:1, Luke 1:2, Luke 1:45, Luke 7:49, Luke 8:55, Luke 9:17, Luke 9:38, Luke
12:19, Luke 15:25, Luke 20:11, Luke 20:15, Luke 20:18, Luke 21:4, Luke 23:39,
Luke 23:47, John 8:3, John 8:24, John 10:5, John 11:11, John 18:14, Acts 1:21,
Acts 3:24, Acts 5:32, Acts 15:33, Acts 16:29, Acts 18:10, Acts 22:8, Acts 27:8,
Acts 27:16, Romans 2:7, Romans 6:9, 1 Corinthians 1:16, 1 Corinthians 9:1, 1
Corinthians 9:2, 1 Corinthians 15:37, 1 Corinthians 16:1, 2 Corinthians 5:17, 2
Corinthians 8:5, 2 Corinthians 9:9, Galatians 1:7, 1 Thessalonians 2:10, 1
Thessalonians 2:15, 2 Thessalonians 1:1, Titus 3:2, Hebrews 6:8, Hebrews 10:12,
2 Peter 1:15, Genesis 2:18, Genesis 3:11, Genesis 10:9, Genesis 13:11, Genesis
18:1, Genesis 27:23, Genesis 33:3, Genesis 37:36, Genesis 45:7, Exodus 3:11,
Exodus 5:11, Exodus 7:24, Exodus 19:22, Exodus 21:2, Exodus 21:30, Exodus
22:13, Exodus 26:7, Exodus 27:14, Exodus 30:31, Exodus 39:37, Leviticus 3:16,
Leviticus 15:16, Leviticus 17:3, Leviticus 26:18, Leviticus 26:19, Numbers
3:50, Numbers 32:23, Deuteronomy 10:18, Deuteronomy 10:20, Deuteronomy 19:2,
Deuteronomy 27:7, Deuteronomy 31:30, Joshua 6:1, Joshua 24:25, Judges 15:15, 1
Samuel 8:6, 1 Samuel 20:36, 2 Samuel 2:2, 2 Samuel 8:13, 2 Samuel 9:13, 2
Samuel 12:14, 2 Samuel 20:4, 2 Samuel 22:8, 1 Kings 1:36, 1 Kings 8:41, 1 Kings
10:6, 1 Kings 11:37, 1 Kings 17:22, 1 Kings 20:37, 1 Kings 20:38, 2 Kings 4:17,
2 Kings 10:27, 2 Kings 16:1, 2 Kings 18:29, 2 Kings 21:4, 2 Kings 24:10, 2
Kings 25:29, 1 Chronicles 2:54, 1 Chronicles 5:16, 1 Chronicles 11:8, 1
Chronicles 17:14, 1 Chronicles 21:30, 1 Chronicles 23:17, 1 Chronicles 24:2, 1
Chronicles 27:10, 1 Chronicles 27:21, 2 Chronicles 2:15, 2 Chronicles 6:6, 2
Chronicles 9:5, 2 Chronicles 13:6, 2 Chronicles 14:10, 2 Chronicles 15:4, 2
Chronicles 19:9, 2 Chronicles 26:14, 2 Chronicles 33:20, 2 Chronicles 35:23, 2
Chronicles 36:1, Ezra 6:10, Nehemiah 4:21, Nehemiah 7:67, Job 3:9, Job 8:6, Job
10:17, Job 30:12, Psalms 10:3, Psalms 17:15, Psalms 18:20, Psalms 36:7, Psalms
52:8, Psalms 54:3, Psalms 64:8, Psalms 68:8, Psalms 69:2, Psalms 71:19, Psalms
73:28, Psalms 92:7, Psalms 104:25, Psalms 125:2, Psalms 125:5, Psalms 130:7,
Psalms 139:14, Psalms 142:6, Proverbs 8:13, Proverbs 10:13, Proverbs 11:29,
Proverbs 30:32, Ecclesiastes 2:13, Ecclesiastes 4:3, Ecclesiastes 9:7, Song of
Solomon 1:5, Isaiah 1:10, Isaiah 1:16, Isaiah 8:2, Isaiah 8:10, Isaiah 15:6,
Isaiah 15:8, Isaiah 29:2, Isaiah 29:20, Isaiah 29:24, Isaiah 32:17, Isaiah
38:13, Isaiah 43:5, Isaiah 46:9, Jeremiah 6:8, Jeremiah 17:2, Jeremiah 23:13,
Jeremiah 37:12, Jeremiah 50:23, Jeremiah 52:33, Ezekiel 14:5, Ezekiel 18:11,
Ezekiel 27:36, Ezekiel 31:13, Ezekiel 36:28, Ezekiel 37:13, Ezekiel 40:15,
Ezekiel 41:1, Ezekiel 41:18, Hosea 12:6, Joel 2:8, Joel 3:11, Obadiah 1:10,
Micah 1:9, Micah 3:1, Matthew 1:19, Matthew 6:31, Matthew 10:16, Matthew 15:19,
Matthew 17:2, Matthew 18:35, Matthew 21:45, Matthew 21:46, Matthew 23:5,
Matthew 24:39, Matthew 26:41, Mark 1:31, Mark 3:11, Mark 12:40, Mark 14:38,
Luke 1:27, Luke 4:26, Luke 8:44, Luke 14:14, Luke 17:37, Luke 20:2, Luke 20:25,
Luke 20:47, Luke 21:37, Luke 22:30, Luke 22:49, Luke 23:27, Luke 24:1, John
3:3, John 3:12, John 10:4, John 13:19, John 14:6, John 19:2, Acts 1:6, Acts
1:7, Acts 7:29, Acts 11:24, Acts 15:28, Acts 15:32, Acts 18:9, Acts 21:35, Acts
22:9, Acts 22:28, 1 Corinthians 3:22, 1 Corinthians 7:7, 1 Corinthians 11:32, 1
Corinthians 14:28, 2 Corinthians 5:21, Ephesians 2:5, Philippians 4:1,
Colossians 2:7, Colossians 3:12, Colossians 3:24, 1 Timothy 5:23, 2 Timothy
2:24, 2 Timothy 3:14, Titus 2:2, Hebrews 2:12, Hebrews 5:3, Hebrews 6:11,
Hebrews 6:12, Hebrews 10:36, James 2:14, James 3:14, 1 John 3:15, Revelation
9:10, Genesis 4:9, Genesis 6:3, Genesis 11:7, Genesis 15:12, Genesis 22:20,
Genesis 24:36, Genesis 26:2, Genesis 28:1, Genesis 29:19, Genesis 32:15,
Genesis 36:13, Genesis 40:3, Exodus 5:13, Exodus 21:27, Exodus 21:33, Exodus
38:28, Exodus 40:12, Leviticus 14:2, Leviticus 14:47, Leviticus 14:49,
Leviticus 22:8, Leviticus 25:26, Numbers 4:3, Numbers 8:13, Numbers 14:5,
Numbers 15:22, Numbers 21:20, Numbers 21:32, Numbers 22:17, Numbers 27:20,
Numbers 30:1, Deuteronomy 7:11, Deuteronomy 14:27, Deuteronomy 30:17,
Deuteronomy 32:44, Joshua 7:16, Joshua 8:7, Joshua 14:8, Joshua 15:17, Joshua
19:16, Judges 1:29, Judges 8:4, Judges 11:10, Judges 11:15, Judges 18:8, 1
Samuel 6:11, 1 Samuel 11:13, 1 Samuel 15:14, 2 Samuel 1:18, 2 Samuel 11:19, 2
Samuel 16:19, 2 Samuel 22:21, 2 Samuel 22:43, 2 Samuel 24:8, 1 Kings 1:12, 1
Kings 2:17, 1 Kings 7:37, 1 Kings 13:7, 1 Kings 20:21, 2 Kings 4:19, 2 Kings
13:20, 1 Chronicles 8:28, 1 Chronicles 18:3, 1 Chronicles 19:11, 1 Chronicles
25:9, 1 Chronicles 26:1, 1 Chronicles 26:22, 1 Chronicles 27:34, 2 Chronicles
7:2, 2 Chronicles 9:26, 2 Chronicles 20:5, Nehemiah 11:16, Nehemiah 12:30, Job
10:22, Job 12:5, Job 19:29, Job 20:23, Job 29:25, Job 35:9, Job 35:14, Job
37:21, Job 39:16, Psalms 10:18, Psalms 19:7, Psalms 53:2, Psalms 59:7, Psalms
59:11, Psalms 63:11, Psalms 78:6, Psalms 78:31, Psalms 79:6, Psalms 79:11,
Psalms 117:2, Psalms 118:12, Proverbs 13:13, Ecclesiastes 11:10, Isaiah 1:17,
Isaiah 4:6, Isaiah 7:13, Isaiah 26:8, Isaiah 28:5, Isaiah 47:7, Jeremiah 1:14,
Jeremiah 16:17, Jeremiah 18:14, Jeremiah 23:31, Jeremiah 26:7, Jeremiah 31:1,
Jeremiah 51:8, Jeremiah 52:16, Lamentations 4:17, Ezekiel 7:22, Ezekiel 11:10,
Ezekiel 16:29, Ezekiel 23:38, Ezekiel 27:26, Ezekiel 30:3, Ezekiel 31:7,
Ezekiel 44:14, Daniel 7:18, Daniel 10:17, Hosea 2:16, Hosea 13:4, Joel 3:14,
Amos 3:2, Micah 2:10, Micah 5:10, Nahum 1:10, Nahum 3:12, Nahum 3:16, Matthew
5:15, Matthew 5:23, Matthew 10:18, Matthew 10:26, Matthew 13:48, Matthew 23:39,
Matthew 27:56, Matthew 27:63, Mark 2:10, Mark 4:37, Mark 5:5, Mark 6:8, Mark
7:10, Mark 11:8, Mark 12:9, Luke 1:58, Luke 5:25, Luke 7:40, Luke 10:38, Luke
14:1, Luke 16:6, Luke 18:3, Luke 19:29, Luke 22:42, Luke 23:41, Luke 23:56,
Luke 24:46, John 6:23, John 7:36, John 9:25, John 10:3, John 16:28, John 17:5,
John 19:19, Acts 1:24, Acts 2:45, Acts 4:6, Acts 5:31, Acts 7:31, Acts 14:9,
Acts 20:30, Acts 22:6, Acts 23:19, Acts 23:33, Acts 25:2, Acts 28:28, Romans
1:8, Romans 2:9, Romans 10:16, Romans 15:15, 1 Corinthians 3:1, 1 Corinthians
3:19, 1 Corinthians 9:14, 1 Corinthians 10:8, 1 Corinthians 10:29, 1
Corinthians 11:7, 1 Corinthians 15:9, 1 Corinthians 16:17, 2 Corinthians 3:5, 2
Corinthians 5:18, 2 Corinthians 8:20, 2 Corinthians 9:11, 2 Corinthians 13:14,
Ephesians 3:19, Philippians 3:17, 1 Timothy 1:2, 1 Timothy 5:11, Philemon 1:9,
Hebrews 10:7, Hebrews 11:21, Hebrews 12:13, 1 Peter 4:7, 1 John 3:16, 1 John
4:7, Revelation 10:2, Revelation 11:3, Genesis 10:1, Genesis 15:16, Genesis
29:30, Genesis 31:3, Genesis 31:30, Genesis 41:32, Genesis 50:21, Exodus 4:19,
Exodus 5:15, Exodus 8:6, Exodus 12:10, Exodus 19:14, Exodus 38:2, Leviticus
7:32, Leviticus 14:27, Leviticus 15:23, Leviticus 21:3, Leviticus 25:23,
Leviticus 25:34, Leviticus 27:15, Numbers 10:4, Numbers 17:3, Numbers 20:29,
Numbers 23:29, Numbers 27:18, Numbers 30:3, Numbers 32:31, Numbers 35:14,
Deuteronomy 7:18, Deuteronomy 12:22, Deuteronomy 20:4, Deuteronomy 29:24,
Joshua 2:2, Joshua 4:6, Joshua 6:2, Joshua 9:26, Joshua 13:11, Joshua 15:14,
Joshua 15:15, Judges 9:11, 1 Samuel 7:16, 1 Samuel 9:10, 1 Samuel 19:16, 1
Samuel 20:18, 1 Samuel 22:10, 1 Samuel 24:17, 1 Samuel 25:6, 1 Samuel 28:6, 2
Samuel 13:35, 2 Samuel 18:21, 1 Kings 18:39, 1 Kings 20:19, 2 Kings 2:13, 2
Kings 10:18, 2 Kings 19:33, 1 Chronicles 1:17, 1 Chronicles 5:21, 1 Chronicles
6:15, 1 Chronicles 6:44, 1 Chronicles 23:9, 1 Chronicles 26:29, 2 Chronicles
6:17, 2 Chronicles 15:17, 2 Chronicles 17:4, 2 Chronicles 25:3, 2 Chronicles
26:7, 2 Chronicles 29:20, Ezra 10:17, Nehemiah 12:12, Esther 5:10, Esther 6:12,
Esther 7:6, Job 1:13, Job 14:19, Job 21:19, Psalms 32:7, Psalms 42:8, Psalms
48:2, Psalms 60:6, Psalms 74:8, Psalms 81:10, Psalms 97:7, Psalms 143:1,
Proverbs 15:8, Proverbs 27:27, Ecclesiastes 4:15, Ecclesiastes 7:8, Isaiah
16:1, Isaiah 29:19, Isaiah 37:34, Isaiah 38:10, Jeremiah 2:32, Jeremiah 18:7,
Jeremiah 21:6, Jeremiah 26:6, Jeremiah 40:13, Jeremiah 46:24, Jeremiah 48:9,
Jeremiah 50:46, Jeremiah 51:21, Jeremiah 52:28, Ezekiel 1:8, Ezekiel 19:4,
Ezekiel 22:5, Ezekiel 32:17, Ezekiel 36:13, Ezekiel 44:20, Daniel 6:6, Daniel
9:5, Hosea 2:11, Hosea 2:21, Hosea 7:5, Joel 1:3, Amos 7:11, Micah 6:12, Nahum
2:9, Nahum 3:8, Habakkuk 1:2, Zephaniah 3:3, Matthew 8:34, Matthew 9:27,
Matthew 10:8, Matthew 12:27, Matthew 13:20, Matthew 21:44, Matthew 25:31,
Matthew 26:50, Mark 1:22, Mark 4:31, Mark 6:55, Mark 9:33, Mark 12:25, Mark
13:7, Mark 14:53, Mark 15:7, Luke 1:6, Luke 4:8, Luke 5:5, Luke 6:3, Luke 6:25,
Luke 11:19, Luke 13:29, Luke 15:18, Luke 17:1, Luke 19:46, Luke 22:58, Luke
24:41, John 4:17, John 6:17, John 8:2, John 8:25, John 8:29, John 8:53, John
11:27, John 11:37, John 12:28, John 12:29, John 13:2, John 14:19, John 17:25,
John 19:27, Acts 2:18, Acts 4:2, Acts 6:11, Acts 7:27, Acts 9:25, Acts 10:36,
Acts 10:48, Acts 13:12, Acts 15:35, Acts 16:25, Acts 19:22, Acts 20:22, Acts
23:22, Acts 27:5, Acts 28:9, Romans 2:20, Romans 11:31, Romans 16:5, 1
Corinthians 3:15, 1 Corinthians 7:13, 1 Corinthians 10:23, 1 Corinthians 14:27,
1 Corinthians 15:2, Galatians 2:21, Ephesians 4:9, Colossians 3:15, 1
Thessalonians 3:9, 1 Timothy 1:20, 2 Timothy 4:13, Hebrews 3:5, Hebrews 6:2,
Hebrews 10:9, James 3:13, 1 Peter 2:18, 1 John 5:14, Jude 1:21, Revelation
9:13, Revelation 17:11, Revelation 20:5, Genesis 3:10, Genesis 6:9, Genesis
7:8, Genesis 8:2, Genesis 8:4, Genesis 9:3, Genesis 23:20, Genesis 25:12,
Genesis 30:43, Genesis 32:26, Genesis 34:13, Genesis 41:57, Genesis 42:20,
Genesis 44:7, Genesis 44:22, Exodus 1:17, Exodus 3:14, Exodus 17:16, Exodus
21:34, Exodus 23:20, Exodus 24:18, Exodus 25:9, Exodus 25:28, Exodus 25:34,
Exodus 34:21, Leviticus 13:24, Leviticus 15:21, Leviticus 15:32, Leviticus
16:1, Leviticus 18:5, Leviticus 25:21, Numbers 1:49, Numbers 2:9, Numbers 19:3,
Numbers 23:1, Numbers 26:40, Numbers 26:55, Numbers 27:19, Numbers 31:17,
Deuteronomy 2:20, Deuteronomy 6:12, Deuteronomy 7:23, Deuteronomy 19:18,
Deuteronomy 19:21, Deuteronomy 21:2, Deuteronomy 28:37, Deuteronomy 28:43,
Joshua 6:3, Joshua 8:17, Judges 1:12, Judges 2:23, Judges 9:56, Judges 20:16,
Judges 20:17, 1 Samuel 10:6, 1 Samuel 10:9, 1 Samuel 14:16, 1 Samuel 16:10, 1
Samuel 20:16, 1 Samuel 22:4, 1 Samuel 22:23, 1 Samuel 23:9, 1 Samuel 24:1, 1
Samuel 25:27, 2 Samuel 3:20, 2 Samuel 11:7, 2 Samuel 13:11, 2 Samuel 15:5, 2
Samuel 19:4, 1 Kings 6:18, 1 Kings 7:33, 1 Kings 20:18, 2 Kings 3:10, 2 Kings
4:20, 2 Kings 14:18, 1 Chronicles 5:6, 1 Chronicles 7:5, 1 Chronicles 21:20, 1
Chronicles 23:5, 1 Chronicles 23:25, 1 Chronicles 26:2, 1 Chronicles 26:11, 1
Chronicles 27:14, 2 Chronicles 9:2, 2 Chronicles 20:1, 2 Chronicles 21:14, Ezra
4:8, Esther 2:4, Job 30:15, Job 37:23, Job 40:23, Psalms 9:14, Psalms 14:4,
Psalms 18:24, Psalms 43:3, Psalms 45:17, Psalms 46:2, Psalms 49:10, Psalms
74:7, Psalms 89:50, Psalms 104:29, Psalms 112:10, Psalms 144:7, Psalms 146:8,
Proverbs 23:7, Proverbs 28:13, Ecclesiastes 8:3, Ecclesiastes 8:5, Song of
Solomon 5:13, Song of Solomon 7:2, Isaiah 1:9, Isaiah 2:8, Isaiah 8:12, Isaiah
17:2, Isaiah 21:10, Isaiah 22:23, Isaiah 32:13, Isaiah 41:13, Isaiah 57:19,
Isaiah 64:8, Jeremiah 1:11, Jeremiah 3:22, Jeremiah 8:5, Jeremiah 21:5,
Jeremiah 32:22, Jeremiah 36:25, Jeremiah 50:1, Jeremiah 51:41, Ezekiel 11:2,
Ezekiel 22:2, Ezekiel 23:9, Ezekiel 23:33, Ezekiel 29:17, Daniel 11:29, Hosea
8:5, Hosea 13:1, Hosea 14:5, Joel 2:31, Amos 4:12, Amos 7:12, Obadiah 1:9,
Obadiah 1:14, Nahum 1:5, Matthew 1:2, Matthew 1:3, Matthew 4:8, Matthew 4:15,
Matthew 5:47, Matthew 10:13, Matthew 11:20, Matthew 12:20, Matthew 26:2,
Matthew 26:53, Matthew 28:9, Mark 1:4, Mark 1:6, Mark 4:25, Mark 5:20, Mark
6:24, Mark 6:35, Mark 10:25, Luke 3:33, Luke 4:39, Luke 7:30, Luke 9:27, Luke
11:9, Luke 16:4, Luke 17:14, Luke 19:14, Luke 21:15, Luke 23:40, Luke 24:7,
John 2:14, John 7:4, John 8:16, John 10:41, John 11:8, John 14:11, John 17:9,
John 19:30, John 20:12, John 20:23, Acts 2:19, Acts 2:42, Acts 7:13, Acts 7:37,
Acts 10:3, Acts 11:29, Romans 1:9, Romans 2:22, Romans 5:7, Romans 8:10, Romans
9:6, Romans 13:6, 1 Corinthians 1:28, 2 Corinthians 1:15, 2 Corinthians 4:10, 2
Corinthians 4:16, Galatians 3:23, Ephesians 4:19, Ephesians 4:22, Ephesians
6:8, Philippians 1:25, Philippians 2:30, Philippians 4:7, 1 Thessalonians 4:11,
1 Timothy 2:15, Titus 2:10, Titus 3:10, Hebrews 1:10, Hebrews 11:15, Hebrews
11:38, Hebrews 12:20, 2 John 1:4, Revelation 5:2, Revelation 20:2, Genesis
24:50, Genesis 26:11, Genesis 27:7, Genesis 30:9, Genesis 30:18, Genesis 39:11,
Genesis 41:25, Genesis 41:31, Genesis 41:39, Genesis 42:29, Genesis 44:29,
Genesis 44:34, Genesis 45:17, Exodus 10:16, Exodus 10:22, Exodus 14:3, Exodus
20:12, Exodus 26:32, Exodus 30:25, Exodus 37:6, Exodus 38:9, Exodus 40:13,
Leviticus 8:18, Leviticus 11:11, Leviticus 19:3, Numbers 3:15, Numbers 10:7,
Numbers 15:8, Numbers 15:10, Numbers 19:5, Numbers 21:6, Numbers 24:24, Numbers
32:27, Deuteronomy 2:26, Deuteronomy 7:3, Joshua 9:8, Joshua 10:31, Joshua
15:16, Judges 5:3, Judges 5:9, Judges 8:23, Judges 9:46, Judges 15:7, Judges
21:4, 1 Samuel 12:13, 1 Samuel 13:9, 1 Samuel 16:8, 1 Samuel 23:1, 1 Samuel
24:12, 1 Samuel 24:13, 2 Samuel 3:38, 2 Samuel 8:7, 2 Samuel 12:16, 2 Samuel
13:39, 2 Samuel 14:31, 2 Samuel 16:14, 2 Samuel 18:8, 1 Kings 1:1, 1 Kings
4:29, 1 Kings 7:27, 1 Kings 10:3, 1 Kings 10:28, 1 Kings 18:22, 1 Kings 19:5, 1
Kings 22:28, 2 Kings 4:14, 2 Kings 6:26, 2 Kings 11:1, 2 Kings 11:13, 2 Kings
12:2, 2 Kings 24:17, 1 Chronicles 5:2, 1 Chronicles 8:32, 1 Chronicles 10:8, 1
Chronicles 18:7, 2 Chronicles 11:15, 2 Chronicles 18:27, 2 Chronicles 31:20,
Ezra 9:3, Nehemiah 3:27, Nehemiah 7:72, Nehemiah 12:7, Esther 9:21, Job 4:19,
Job 5:23, Job 6:10, Job 14:7, Job 15:28, Job 20:22, Job 24:14, Job 38:24, Job
38:41, Psalms 3:7, Psalms 9:5, Psalms 27:3, Psalms 29:9, Psalms 30:3, Psalms
37:25, Psalms 38:3, Psalms 42:9, Psalms 43:4, Psalms 59:17, Psalms 70:4, Psalms
72:10, Psalms 76:11, Psalms 84:6, Psalms 109:14, Psalms 109:21, Psalms 137:8,
Psalms 139:15, Psalms 147:1, Proverbs 7:23, Proverbs 16:6, Proverbs 29:27,
Ecclesiastes 1:7, Ecclesiastes 2:1, Ecclesiastes 3:15, Song of Solomon 4:14,
Song of Solomon 7:5, Isaiah 6:4, Isaiah 11:7, Isaiah 14:27, Isaiah 24:8, Isaiah
28:6, Isaiah 65:6, Jeremiah 4:17, Jeremiah 5:26, Jeremiah 7:21, Jeremiah 7:26,
Jeremiah 23:25, Jeremiah 31:5, Jeremiah 31:24, Jeremiah 36:13, Jeremiah 50:8,
Ezekiel 17:4, Ezekiel 22:16, Ezekiel 23:19, Ezekiel 23:30, Ezekiel 23:46,
Ezekiel 25:8, Ezekiel 32:8, Ezekiel 34:3, Ezekiel 36:21, Ezekiel 45:22, Daniel
5:6, Daniel 10:3, Daniel 12:13, Hosea 7:2, Hosea 11:3, Joel 3:6, Amos 6:6,
Jonah 1:9, Micah 1:3, Habakkuk 1:10, Zephaniah 3:14, Zechariah 12:11, Zechariah
13:8, Malachi 3:15, Matthew 7:2, Matthew 14:36, Matthew 15:4, Matthew 21:43,
Matthew 24:27, Matthew 24:36, Matthew 26:10, Matthew 26:34, Matthew 28:15, Mark
1:38, Mark 10:48, Mark 11:28, Mark 14:37, Luke 1:18, Luke 1:79, Luke 4:33, Luke
5:4, Luke 7:4, Luke 12:4, John 1:21, John 2:20, John 4:1, John 10:40, John
11:2, John 11:41, John 14:22, Acts 10:21, Acts 21:19, Acts 28:31, Romans 1:23,
Romans 8:7, Romans 11:4, Romans 11:16, Romans 15:26, 1 Corinthians 1:19, 1
Corinthians 4:13, 1 Corinthians 5:4, 1 Corinthians 16:6, 2 Corinthians 4:14, 2
Corinthians 6:7, 2 Corinthians 6:10, 2 Corinthians 11:2, Galatians 3:18,
Ephesians 6:4, Ephesians 6:19, 1 Thessalonians 1:10, 2 Thessalonians 2:1, 2
Thessalonians 3:1, 1 Timothy 2:1, Titus 2:9, Hebrews 9:5, Hebrews 10:33,
Hebrews 10:39, James 4:1, 1 Peter 3:3, 2 Peter 2:17, 1 John 5:15, Revelation
13:17, Revelation 14:12, Genesis 2:24, Genesis 3:5, Genesis 7:16, Genesis 8:22,
Genesis 10:30, Genesis 11:10, Genesis 12:13, Genesis 17:15, Genesis 18:26,
Genesis 19:5, Genesis 21:22, Genesis 29:20, Genesis 29:27, Genesis 30:25,
Genesis 34:29, Genesis 35:6, Genesis 42:1, Genesis 45:16, Genesis 46:18,
Genesis 48:2, Exodus 5:22, Exodus 18:11, Exodus 19:17, Exodus 21:14, Exodus
21:20, Exodus 25:18, Exodus 25:37, Exodus 29:29, Leviticus 1:16, Leviticus
11:33, Leviticus 14:32, Leviticus 16:6, Leviticus 20:26, Leviticus 22:7,
Leviticus 24:20, Leviticus 25:3, Numbers 2:24, Numbers 3:43, Numbers 4:35,
Numbers 4:39, Numbers 13:24, Numbers 19:6, Numbers 19:17, Numbers 21:35,
Numbers 31:24, Numbers 32:30, Numbers 35:24, Numbers 35:29, Deuteronomy 28:24,
Deuteronomy 28:66, Joshua 9:7, Joshua 10:42, Joshua 21:45, Judges 9:26, Judges
11:5, Judges 13:10, Judges 15:8, Judges 21:11, 1 Samuel 3:2, 1 Samuel 3:21, 1
Samuel 7:11, 1 Samuel 14:48, 1 Samuel 26:13, 1 Samuel 30:4, 2 Samuel 6:15, 2
Samuel 7:2, 2 Samuel 7:16, 2 Samuel 7:24, 2 Samuel 7:28, 2 Samuel 13:17, 2
Samuel 19:25, 2 Samuel 19:36, 1 Kings 1:28, 1 Kings 6:2, 1 Kings 6:31, 1 Kings
11:5, 1 Kings 12:31, 1 Kings 15:14, 1 Kings 19:12, 1 Kings 22:33, 2 Kings 6:13,
2 Kings 9:35, 2 Kings 10:32, 2 Kings 15:1, 2 Kings 18:1, 2 Kings 25:6, 2 Kings
25:10, 1 Chronicles 3:21, 1 Chronicles 11:4, 1 Chronicles 12:14, 1 Chronicles
13:5, 1 Chronicles 20:8, 1 Chronicles 27:2, 1 Chronicles 28:19, 2 Chronicles
6:42, 2 Chronicles 12:16, 2 Chronicles 26:8, 2 Chronicles 29:23, Ezra 10:19,
Nehemiah 4:6, Nehemiah 13:31, Esther 1:4, Esther 6:5, Esther 9:30, Job 12:24,
Job 22:3, Job 24:13, Job 28:28, Job 34:29, Psalms 4:2, Psalms 9:6, Psalms 17:7,
Psalms 22:26, Psalms 37:10, Psalms 43:1, Psalms 49:18, Psalms 68:23, Psalms
86:15, Psalms 95:7, Psalms 102:24, Proverbs 11:10, Proverbs 19:25, Proverbs
24:14, Proverbs 25:20, Proverbs 28:24, Proverbs 30:1, Ecclesiastes 2:18,
Ecclesiastes 7:27, Ecclesiastes 9:16, Ecclesiastes 12:13, Isaiah 1:3, Isaiah
1:29, Isaiah 9:9, Isaiah 9:16, Isaiah 14:4, Isaiah 22:1, Isaiah 22:15, Isaiah
40:3, Isaiah 52:6, Isaiah 64:9, Jeremiah 2:21, Jeremiah 2:36, Jeremiah 4:3,
Jeremiah 13:18, Jeremiah 25:11, Jeremiah 26:5, Jeremiah 43:7, Jeremiah 45:3,
Jeremiah 47:5, Jeremiah 48:47, Jeremiah 50:38, Jeremiah 52:23, Ezekiel 1:25,
Ezekiel 4:15, Ezekiel 22:13, Ezekiel 27:6, Ezekiel 29:8, Ezekiel 36:14, Ezekiel
39:8, Ezekiel 43:5, Ezekiel 44:31, Daniel 2:12, Daniel 4:11, Daniel 8:14, Hosea
5:9, Hosea 5:10, Amos 5:18, Obadiah 1:8, Nahum 3:14, Habakkuk 2:7, Zechariah
1:9, Zechariah 7:11, Matthew 5:12, Matthew 13:38, Matthew 15:29, Matthew 19:13,
Matthew 20:10, Matthew 21:13, Matthew 25:15, Matthew 25:35, Matthew 26:52,
Matthew 27:21, Matthew 28:20, Mark 1:2, Mark 2:9, Mark 5:18, Mark 6:7, Mark
7:26, Mark 11:32, Luke 1:9, Luke 1:76, Luke 2:23, Luke 6:6, Luke 7:3, Luke
7:14, Luke 10:25, Luke 18:34, Luke 22:26, Luke 22:34, Luke 22:55, John 1:47,
John 2:16, John 4:38, John 5:2, John 6:21, John 9:7, John 9:30, John 11:25,
John 12:2, John 12:19, John 18:11, John 19:40, Acts 2:11, Acts 2:34, Acts 3:11,
Acts 5:5, Acts 8:18, Acts 19:10, Acts 21:31, Acts 22:2, Acts 24:26, Acts 27:29,
Romans 4:5, Romans 9:23, Romans 14:11, Romans 15:3, 1 Corinthians 2:8, 1
Corinthians 12:21, 2 Corinthians 4:5, 2 Corinthians 11:16, Ephesians 3:9,
Philippians 3:18, Colossians 1:11, Colossians 4:6, Colossians 4:8, 1 Timothy
3:8, 2 Timothy 1:1, Hebrews 11:27, James 3:12, 1 Peter 1:24, 1 John 2:5, 1 John
2:29, 3 John 1:2, 3 John 1:11, Revelation 2:8, Revelation 6:14, Revelation 7:8,
Revelation 20:1, Genesis 2:14, Genesis 4:11, Genesis 6:15, Genesis 7:19,
Genesis 12:11, Genesis 15:7, Genesis 15:14, Genesis 18:7, Genesis 19:21,
Genesis 19:22, Genesis 24:23, Genesis 42:4, Genesis 44:12, Genesis 47:28,
Genesis 48:1, Genesis 49:13, Exodus 2:22, Exodus 8:13, Exodus 11:6, Exodus
19:10, Exodus 31:3, Exodus 32:28, Exodus 35:16, Leviticus 2:5, Leviticus 4:17,
Leviticus 11:28, Leviticus 14:39, Leviticus 15:5, Leviticus 16:28, Leviticus
18:27, Leviticus 18:29, Leviticus 21:20, Leviticus 22:16, Leviticus 25:40,
Leviticus 26:21, Numbers 4:43, Numbers 13:18, Numbers 13:27, Numbers 16:29,
Numbers 16:45, Numbers 21:11, Numbers 30:9, Numbers 31:5, Numbers 34:9,
Deuteronomy 4:18, Deuteronomy 9:8, Deuteronomy 12:8, Deuteronomy 14:6,
Deuteronomy 24:17, Deuteronomy 27:5, Deuteronomy 28:60, Deuteronomy 33:26,
Joshua 9:5, Joshua 13:10, Judges 9:52, Judges 16:10, Judges 17:7, 1 Samuel 1:4,
1 Samuel 17:38, 2 Samuel 2:17, 2 Samuel 3:36, 1 Kings 1:7, 1 Kings 1:24, 1
Kings 4:23, 1 Kings 8:2, 1 Kings 8:26, 1 Kings 8:51, 1 Kings 9:10, 1 Kings
12:12, 1 Kings 15:8, 2 Kings 6:1, 2 Kings 13:16, 1 Chronicles 15:20, 1
Chronicles 29:24, 2 Chronicles 1:16, 2 Chronicles 4:9, 2 Chronicles 6:31, 2
Chronicles 9:23, 2 Chronicles 10:12, 2 Chronicles 25:11, 2 Chronicles 33:4,
Nehemiah 3:11, Nehemiah 3:12, Esther 3:3, Esther 3:11, Job 15:30, Job 18:4,
Psalms 9:13, Psalms 15:3, Psalms 18:7, Psalms 38:12, Psalms 88:8, Psalms
104:35, Psalms 108:7, Psalms 110:6, Psalms 115:12, Psalms 137:3, Psalms 140:4,
Proverbs 4:16, Proverbs 13:22, Ecclesiastes 5:10, Ecclesiastes 5:11,
Ecclesiastes 6:9, Song of Solomon 4:6, Isaiah 2:10, Isaiah 5:1, Isaiah 6:3,
Isaiah 13:16, Isaiah 15:7, Isaiah 24:11, Isaiah 32:4, Isaiah 34:9, Isaiah
38:19, Isaiah 45:7, Isaiah 48:9, Jeremiah 3:23, Jeremiah 10:19, Jeremiah 11:23,
Jeremiah 13:1, Jeremiah 22:12, Jeremiah 30:23, Jeremiah 31:2, Jeremiah 44:4,
Jeremiah 48:27, Jeremiah 48:37, Lamentations 4:5, Ezekiel 12:11, Ezekiel 22:27,
Ezekiel 24:12, Ezekiel 27:8, Ezekiel 27:13, Ezekiel 28:10, Ezekiel 30:10,
Ezekiel 34:24, Ezekiel 40:20, Ezekiel 44:8, Ezekiel 44:16, Amos 5:14, Malachi
3:8, Matthew 4:3, Matthew 10:5, Matthew 14:3, Matthew 15:11, Matthew 19:9,
Matthew 21:1, Matthew 24:1, Matthew 28:10, Matthew 28:12, Mark 4:41, Mark
12:16, Mark 12:31, Mark 13:3, Mark 13:22, Mark 14:11, Luke 2:20, Luke 9:34,
Luke 16:21, Luke 20:6, Luke 20:13, Luke 20:36, Luke 22:32, Luke 23:34, John
1:31, John 4:20, John 4:39, John 7:1, John 8:40, John 10:21, John 20:20, Acts
3:8, Acts 7:11, Acts 7:24, Acts 8:30, Acts 12:21, Acts 14:8, Acts 20:31, Romans
2:13, Romans 4:20, 1 Corinthians 8:5, 1 Corinthians 9:17, 1 Corinthians 14:3, 1
Corinthians 14:24, 2 Corinthians 1:7, 2 Corinthians 3:9, 2 Corinthians 10:10, 2
Corinthians 13:3, Galatians 1:23, Galatians 6:4, Ephesians 1:20, Ephesians
5:31, Ephesians 6:22, Colossians 1:5, 1 Thessalonians 3:7, 1 Thessalonians
3:10, 1 Thessalonians 5:14, 2 Thessalonians 2:10, 2 Thessalonians 3:10, 2
Timothy 1:6, 2 Timothy 1:13, Titus 1:10, Hebrews 11:26, James 5:5, 1 Peter
3:14, 1 Peter 4:19, 1 John 1:9, 1 John 2:15, 3 John 1:3, Revelation 9:3,
Revelation 9:18, Genesis 1:6, Genesis 1:18, Genesis 6:21, Genesis 12:15,
Genesis 14:1, Genesis 14:12, Genesis 17:11, Genesis 19:32, Genesis 25:8,
Genesis 33:7, Genesis 35:18, Genesis 36:5, Genesis 48:11, Exodus 12:8, Exodus
32:17, Exodus 37:3, Exodus 37:26, Leviticus 4:29, Leviticus 6:14, Leviticus
8:4, Leviticus 15:28, Leviticus 19:14, Leviticus 22:29, Numbers 3:9, Numbers
13:16, Numbers 16:16, Deuteronomy 1:30, Deuteronomy 2:27, Deuteronomy 7:14,
Deuteronomy 8:13, Deuteronomy 9:29, Deuteronomy 10:21, Deuteronomy 21:9,
Deuteronomy 27:26, Joshua 11:5, Joshua 11:9, Joshua 14:2, Judges 1:13, Judges
2:6, Judges 3:31, Judges 5:12, Judges 6:17, Judges 9:41, 1 Samuel 4:14, 1
Samuel 15:16, 1 Samuel 17:30, 1 Samuel 25:19, 2 Samuel 2:3, 2 Samuel 2:19, 2
Samuel 4:1, 2 Samuel 8:5, 2 Samuel 13:22, 2 Samuel 18:1, 2 Samuel 19:29, 2
Samuel 20:18, 2 Samuel 24:12, 1 Kings 11:17, 2 Kings 4:9, 2 Kings 9:32, 2 Kings
17:14, 2 Kings 21:21, 1 Chronicles 2:42, 1 Chronicles 3:5, 1 Chronicles 4:18, 1
Chronicles 5:13, 1 Chronicles 6:63, 1 Chronicles 9:25, 1 Chronicles 13:11, 1
Chronicles 13:13, 1 Chronicles 17:20, 1 Chronicles 18:5, 1 Chronicles 21:10, 2
Chronicles 23:16, 2 Chronicles 23:21, 2 Chronicles 27:9, 2 Chronicles 29:3,
Ezra 7:1, Ezra 8:26, Nehemiah 9:7, Nehemiah 9:33, Job 6:4, Job 9:24, Job 16:12,
Job 31:18, Psalms 10:5, Psalms 14:2, Psalms 19:10, Psalms 22:14, Psalms 25:10,
Psalms 31:23, Psalms 35:19, Psalms 37:14, Psalms 42:10, Psalms 45:8, Psalms
48:10, Psalms 51:14, Psalms 55:15, Psalms 68:13, Psalms 77:6, Psalms 77:18,
Psalms 142:4, Proverbs 30:9, Ecclesiastes 1:9, Ecclesiastes 10:4, Song of
Solomon 8:8, Isaiah 6:6, Isaiah 14:3, Isaiah 16:7, Isaiah 29:3, Isaiah 33:8,
Isaiah 44:22, Isaiah 47:3, Isaiah 48:11, Isaiah 65:17, Jeremiah 6:24, Jeremiah
6:28, Jeremiah 15:5, Jeremiah 22:26, Jeremiah 23:19, Jeremiah 34:9, Jeremiah
38:3, Jeremiah 46:4, Jeremiah 47:1, Jeremiah 48:19, Jeremiah 50:36, Ezekiel
3:1, Ezekiel 15:2, Ezekiel 16:42, Ezekiel 21:2, Ezekiel 21:5, Ezekiel 22:10,
Ezekiel 27:29, Ezekiel 28:5, Ezekiel 33:20, Ezekiel 45:12, Ezekiel 47:14,
Ezekiel 48:17, Daniel 2:16, Daniel 5:26, Daniel 7:2, Daniel 7:26, Daniel 10:4,
Hosea 5:3, Hosea 5:6, Joel 1:10, Micah 3:2, Micah 7:8, Zechariah 4:5, Zechariah
8:2, Zechariah 11:11, Malachi 3:4, Matthew 6:19, Matthew 7:4, Matthew 7:24,
Matthew 9:14, Matthew 12:5, Matthew 12:43, Matthew 18:13, Matthew 25:30,
Matthew 26:57, Matthew 26:62, Matthew 27:22, Mark 3:32, Mark 5:14, Mark 5:38,
Mark 7:9, Mark 7:32, Mark 8:35, Mark 10:27, Mark 10:40, Mark 12:7, Mark 12:15,
Mark 13:4, Mark 15:24, Luke 1:59, Luke 1:65, Luke 3:3, Luke 5:8, Luke 5:13,
Luke 6:21, Luke 9:23, Luke 9:60, Luke 11:4, Luke 11:48, Luke 15:15, Luke 15:32,
Luke 18:25, Luke 19:3, Luke 24:24, John 1:19, John 1:22, John 4:15, John 4:50,
John 5:43, John 6:63, John 7:3, John 14:2, Acts 4:29, Acts 9:18, Acts 13:29,
Acts 16:7, Acts 18:12, Acts 23:8, Acts 23:17, Romans 8:36, Romans 13:2, Romans
16:12, 1 Corinthians 2:10, 1 Corinthians 7:1, 1 Corinthians 7:16, 1 Corinthians
9:27, 2 Corinthians 3:10, 2 Corinthians 7:10, 2 Corinthians 9:7, 2 Corinthians
12:12, Galatians 1:4, Galatians 1:12, Galatians 4:1, Galatians 4:23, Ephesians
5:3, Ephesians 6:6, Philippians 1:6, Philippians 3:1, Colossians 1:7, Hebrews
4:4, Hebrews 6:16, Hebrews 11:28, Hebrews 12:19, James 1:18, 1 Peter 4:14, 1
John 2:21, 1 John 5:13, Revelation 19:5, Genesis 7:7, Genesis 12:18, Genesis
12:19, Genesis 21:30, Genesis 22:19, Genesis 24:13, Genesis 35:12, Genesis
35:26, Genesis 36:12, Genesis 41:19, Genesis 44:10, Genesis 44:23, Exodus 1:18,
Exodus 4:3, Exodus 7:1, Exodus 8:18, Exodus 9:16, Exodus 17:10, Exodus 18:3,
Exodus 19:4, Exodus 23:9, Exodus 26:17, Exodus 28:23, Exodus 29:14, Exodus
36:5, Exodus 40:20, Leviticus 1:4, Leviticus 1:10, Leviticus 6:11, Leviticus
9:6, Leviticus 18:21, Leviticus 19:21, Leviticus 25:38, Leviticus 26:31,
Numbers 1:10, Numbers 3:21, Numbers 7:11, Numbers 10:3, Numbers 11:13, Numbers
11:15, Numbers 14:38, Numbers 19:22, Numbers 20:2, Numbers 20:4, Numbers 20:20,
Numbers 26:23, Numbers 28:6, Numbers 32:38, Numbers 34:29, Deuteronomy 4:7,
Deuteronomy 9:20, Deuteronomy 18:4, Deuteronomy 28:27, Deuteronomy 29:15,
Deuteronomy 29:17, Deuteronomy 29:27, Deuteronomy 31:15, Joshua 2:6, Joshua
13:5, Joshua 23:10, Joshua 24:5, Joshua 24:23, Judges 1:26, Judges 5:8, Judges
8:33, Judges 9:34, Judges 13:12, Judges 13:17, Judges 19:20, Judges 20:43, 1
Samuel 1:28, 1 Samuel 3:3, 1 Samuel 12:24, 1 Samuel 14:18, 1 Samuel 16:20, 1
Samuel 20:7, 2 Samuel 9:1, 2 Samuel 11:9, 2 Samuel 12:15, 2 Samuel 12:23, 2
Samuel 13:37, 2 Samuel 15:15, 2 Samuel 17:1, 2 Samuel 22:31, 1 Kings 5:16, 1
Kings 11:12, 2 Kings 2:18, 2 Kings 6:27, 2 Kings 22:7, 1 Chronicles 2:50, 1
Chronicles 9:31, 1 Chronicles 9:38, 1 Chronicles 13:7, 1 Chronicles 24:30, 2
Chronicles 2:2, 2 Chronicles 3:15, 2 Chronicles 8:12, 2 Chronicles 11:13, 2
Chronicles 17:3, 2 Chronicles 26:1, 2 Chronicles 29:36, Ezra 7:10, Nehemiah
11:23, Esther 4:2, Job 1:6, Job 16:9, Job 24:12, Job 31:7, Job 34:19, Psalms
11:4, Psalms 18:30, Psalms 18:35, Psalms 18:50, Psalms 19:8, Psalms 35:13,
Psalms 40:2, Psalms 40:3, Psalms 40:4, Psalms 45:2, Psalms 66:7, Psalms 104:3,
Psalms 128:3, Psalms 143:7, Proverbs 9:9, Proverbs 28:19, Ecclesiastes 2:17,
Ecclesiastes 5:16, Ecclesiastes 10:10, Song of Solomon 2:12, Song of Solomon
2:17, Isaiah 1:8, Isaiah 1:14, Isaiah 11:8, Isaiah 14:6, Isaiah 53:4, Jeremiah
4:6, Jeremiah 4:14, Jeremiah 5:9, Jeremiah 9:9, Jeremiah 13:19, Jeremiah 13:23,
Jeremiah 28:13, Jeremiah 36:24, Jeremiah 39:2, Jeremiah 49:17, Jeremiah 49:33,
Lamentations 4:1, Ezekiel 12:15, Ezekiel 19:2, Ezekiel 20:20, Ezekiel 20:35,
Ezekiel 23:44, Ezekiel 26:9, Ezekiel 34:17, Ezekiel 34:20, Ezekiel 36:2,
Ezekiel 36:7, Ezekiel 39:6, Ezekiel 46:15, Ezekiel 47:20, Daniel 4:1, Hosea
7:10, Joel 2:12, Malachi 1:12, Matthew 1:12, Matthew 1:23, Matthew 2:4, Matthew
6:28, Matthew 11:1, Matthew 11:29, Matthew 13:28, Matthew 13:41, Matthew 15:12,
Matthew 15:33, Matthew 21:28, Mark 4:16, Mark 5:2, Mark 7:3, Mark 9:17, Mark
14:40, Mark 14:49, Mark 16:19, Luke 1:48, Luke 2:26, Luke 6:20, Luke 9:52, Luke
14:7, Luke 17:24, Luke 23:49, John 5:13, John 5:44, John 9:41, Acts 1:12, Acts
2:4, Acts 4:1, Acts 5:41, Acts 5:42, Acts 6:13, Acts 9:12, Acts 13:21, Acts
16:20, Acts 18:19, Acts 20:10, Acts 20:19, Acts 23:7, Acts 24:18, Acts 26:31,
Acts 28:26, Romans 3:20, Romans 5:9, Romans 8:38, 1 Corinthians 1:18, 1
Corinthians 2:4, 1 Corinthians 11:2, 1 Corinthians 14:12, 2 Corinthians 6:4,
Ephesians 2:7, Philippians 2:8, Philippians 3:10, Philippians 3:19, 1 Timothy
3:7, 2 Timothy 2:25, Hebrews 6:19, Hebrews 9:25, Hebrews 12:8, James 1:5, James
4:12, 1 Peter 5:8, 1 John 1:5, 1 John 4:2, 2 John 1:1, Revelation 7:13,
Revelation 9:6, Revelation 9:14, Genesis 2:11, Genesis 4:1, Genesis 4:18,
Genesis 10:5, Genesis 12:2, Genesis 21:26, Genesis 24:56, Genesis 27:12,
Genesis 30:36, Genesis 31:14, Genesis 31:21, Genesis 31:46, Genesis 33:2,
Genesis 35:8, Genesis 46:17, Genesis 46:28, Genesis 49:31, Exodus 6:4, Exodus
8:12, Exodus 10:25, Exodus 15:23, Exodus 16:24, Exodus 27:7, Exodus 27:19,
Exodus 28:42, Exodus 40:19, Leviticus 7:13, Leviticus 15:2, Leviticus 20:21,
Leviticus 25:18, Leviticus 25:54, Leviticus 27:9, Numbers 3:20, Numbers 5:9,
Numbers 6:10, Numbers 14:8, Numbers 20:3, Numbers 29:16, Numbers 29:25, Numbers
32:7, Deuteronomy 1:38, Deuteronomy 4:8, Deuteronomy 4:33, Deuteronomy 9:11,
Deuteronomy 12:23, Deuteronomy 25:8, Deuteronomy 29:6, Deuteronomy 29:12,
Deuteronomy 29:26, Deuteronomy 33:5, Joshua 4:11, Joshua 10:33, Joshua 10:34,
Joshua 18:21, Joshua 19:11, Judges 13:21, Judges 20:41, Ruth 1:15, Ruth 3:1, 1
Samuel 8:20, 1 Samuel 14:9, 1 Samuel 25:22, 1 Samuel 27:2, 1 Samuel 28:4, 2
Samuel 5:11, 2 Samuel 12:27, 2 Samuel 19:15, 2 Samuel 19:34, 2 Samuel 22:51, 1
Kings 6:19, 1 Kings 9:23, 1 Kings 13:34, 1 Kings 14:23, 1 Kings 20:41, 2 Kings
6:5, 2 Kings 9:28, 2 Kings 10:4, 2 Kings 12:5, 2 Kings 12:8, 2 Kings 14:21, 2
Kings 15:4, 2 Kings 17:19, 1 Chronicles 12:21, 1 Chronicles 12:39, 1 Chronicles
16:3, 1 Chronicles 26:6, 1 Chronicles 27:28, 1 Chronicles 28:7, 2 Chronicles
11:22, 2 Chronicles 14:6, 2 Chronicles 17:16, 2 Chronicles 20:32, 2 Chronicles
20:33, 2 Chronicles 21:16, 2 Chronicles 26:13, Ezra 6:15, Nehemiah 4:1,
Nehemiah 4:12, Job 14:12, Job 21:33, Psalms 44:2, Psalms 87:5, Psalms 100:3,
Psalms 106:43, Psalms 109:16, Psalms 112:9, Psalms 115:1, Psalms 122:4, Psalms
131:2, Proverbs 5:19, Proverbs 11:15, Proverbs 25:7, Proverbs 30:15, Isaiah
1:5, Isaiah 8:20, Isaiah 27:6, Isaiah 28:10, Isaiah 34:3, Isaiah 36:17, Isaiah
36:19, Isaiah 43:28, Isaiah 60:22, Isaiah 66:23, Jeremiah 4:20, Jeremiah 5:29,
Jeremiah 9:17, Jeremiah 12:8, Jeremiah 27:1, Jeremiah 33:25, Jeremiah 48:10,
Jeremiah 52:14, Ezekiel 14:19, Ezekiel 19:5, Ezekiel 24:8, Ezekiel 31:9,
Ezekiel 36:1, Ezekiel 40:6, Ezekiel 40:11, Ezekiel 42:8, Ezekiel 45:2, Daniel
7:12, Amos 2:14, Amos 3:4, Nahum 2:1, Haggai 2:5, Zechariah 6:8, Zechariah
9:11, Zechariah 10:8, Malachi 2:4, Matthew 3:4, Matthew 8:24, Matthew 12:46,
Matthew 13:2, Matthew 16:22, Matthew 18:3, Matthew 20:19, Matthew 22:32,
Matthew 26:74, Matthew 27:1, Mark 6:26, Mark 6:27, Mark 8:3, Mark 11:29, Mark
13:32, Mark 14:16, Mark 14:35, Luke 5:27, Luke 6:18, Luke 9:19, Luke 11:50,
Luke 18:24, John 1:29, John 3:20, John 6:14, John 10:29, John 10:32, John
14:24, John 17:13, John 20:18, John 21:1, Acts 4:9, Acts 7:19, Acts 7:33, Acts
8:14, Acts 20:25, Acts 25:12, Romans 2:8, Romans 9:15, Romans 11:3, Romans
11:15, 1 Corinthians 6:1, 1 Corinthians 7:2, 1 Corinthians 15:44, 2 Corinthians
7:2, 2 Corinthians 7:3, 2 Corinthians 11:27, Galatians 2:5, Galatians 5:6,
Ephesians 1:7, Ephesians 2:14, Philippians 2:28, 1 Timothy 3:6, 1 Timothy 4:14,
2 Timothy 1:16, Hebrews 2:6, Hebrews 3:17, Hebrews 12:3, 2 John 1:10, Genesis
4:8, Genesis 12:12, Genesis 14:20, Genesis 14:22, Genesis 15:4, Genesis 19:25,
Genesis 24:51, Genesis 25:27, Genesis 25:30, Genesis 33:8, Genesis 35:27,
Genesis 43:27, Genesis 43:28, Genesis 44:5, Genesis 45:13, Genesis 46:4,
Genesis 49:17, Exodus 11:9, Exodus 14:30, Exodus 19:7, Exodus 22:4, Exodus
29:17, Exodus 29:44, Exodus 40:32, Leviticus 1:14, Leviticus 4:23, Leviticus
6:26, Leviticus 14:35, Leviticus 15:4, Leviticus 15:17, Leviticus 16:30,
Leviticus 19:32, Leviticus 21:18, Leviticus 23:19, Leviticus 27:29, Numbers
13:17, Numbers 15:2, Numbers 22:37, Numbers 25:5, Numbers 29:3, Numbers 29:34,
Numbers 32:16, Numbers 35:16, Numbers 35:31, Deuteronomy 6:23, Deuteronomy
11:1, Deuteronomy 15:22, Deuteronomy 22:16, Deuteronomy 27:1, Joshua 7:22,
Joshua 19:48, Judges 11:40, Judges 15:17, Judges 20:8, Ruth 3:2, 1 Samuel
17:32, 1 Samuel 20:33, 1 Samuel 31:8, 2 Samuel 1:1, 2 Samuel 2:8, 2 Samuel
3:32, 2 Samuel 6:8, 2 Samuel 8:3, 2 Samuel 15:6, 2 Samuel 17:19, 2 Samuel
21:22, 1 Kings 1:4, 1 Kings 3:2, 1 Kings 8:19, 1 Kings 17:9, 1 Kings 18:46, 1
Kings 22:46, 2 Kings 4:5, 2 Kings 15:11, 2 Kings 19:31, 1 Chronicles 5:7, 1
Chronicles 6:31, 1 Chronicles 7:10, 1 Chronicles 9:34, 1 Chronicles 14:1, 1
Chronicles 25:7, 1 Chronicles 26:20, 2 Chronicles 14:9, 2 Chronicles 24:17,
Ezra 8:13, Nehemiah 11:11, Job 20:25, Job 24:20, Job 34:20, Job 39:25, Psalms
19:14, Psalms 23:6, Psalms 35:14, Psalms 55:21, Psalms 56:13, Psalms 78:21,
Psalms 79:9, Psalms 94:23, Psalms 101:8, Psalms 137:6, Proverbs 24:31, Song of
Solomon 6:10, Isaiah 1:21, Isaiah 5:28, Isaiah 10:32, Isaiah 23:9, Isaiah 24:1,
Isaiah 38:16, Isaiah 40:27, Isaiah 42:17, Isaiah 48:2, Isaiah 55:9, Isaiah
63:10, Jeremiah 2:10, Jeremiah 12:2, Jeremiah 13:20, Jeremiah 15:13, Jeremiah
21:8, Jeremiah 22:5, Jeremiah 25:36, Jeremiah 30:7, Jeremiah 39:11, Jeremiah
46:6, Ezekiel 14:17, Ezekiel 18:14, Ezekiel 23:21, Ezekiel 28:19, Ezekiel
29:11, Ezekiel 35:9, Ezekiel 37:28, Daniel 2:7, Daniel 9:3, Hosea 2:6, Hosea
10:2, Hosea 11:2, Hosea 13:6, Amos 3:10, Amos 8:9, Nahum 2:7, Habakkuk 2:13,
Zephaniah 3:2, Matthew 5:24, Matthew 9:13, Matthew 12:7, Matthew 16:9, Matthew
17:22, Matthew 21:8, Matthew 24:51, Matthew 26:40, Matthew 27:55, Mark 3:17,
Mark 7:31, Mark 10:47, Mark 16:5, Luke 3:2, Luke 3:21, Luke 6:37, Luke 7:36,
Luke 8:17, Luke 14:35, Luke 17:28, Luke 18:15, Luke 20:5, Luke 22:56, Luke
24:47, John 2:6, John 9:3, John 12:1, John 13:27, John 14:31, John 19:17, John
20:7, John 21:19, Acts 1:9, Acts 2:25, Acts 5:17, Acts 7:36, Acts 10:2, Acts
10:37, Acts 10:43, Acts 11:1, Acts 17:24, Acts 18:24, Acts 28:19, Romans 1:28,
Romans 9:7, Romans 12:6, 1 Corinthians 1:27, 1 Corinthians 2:1, 1 Corinthians
7:9, 1 Corinthians 9:25, 1 Corinthians 11:24, 2 Corinthians 3:1, 2 Corinthians
13:1, Galatians 1:13, Galatians 2:13, Galatians 4:25, Ephesians 1:19, Ephesians
5:23, Ephesians 6:16, Philippians 1:19, 2 Thessalonians 2:7, 2 Timothy 3:10,
Titus 1:16, Hebrews 7:13, Hebrews 10:11, James 2:6, 2 Peter 3:3, 1 John 4:4, 1
John 4:10, Revelation 16:6, Revelation 18:20, Revelation 21:14, Revelation
21:23, Genesis 1:5, Genesis 1:10, Genesis 4:26, Genesis 15:17, Genesis 18:6,
Genesis 18:29, Genesis 22:8, Genesis 25:17, Genesis 29:6, Genesis 29:12,
Genesis 39:21, Genesis 40:7, Exodus 5:7, Exodus 12:33, Exodus 15:7, Exodus
23:8, Exodus 34:22, Exodus 38:7, Leviticus 8:22, Leviticus 18:18, Leviticus
21:9, Leviticus 22:10, Leviticus 27:24, Numbers 2:20, Numbers 5:4, Numbers 6:4,
Numbers 8:2, Numbers 8:9, Numbers 15:36, Numbers 22:3, Numbers 22:16, Numbers
22:41, Numbers 24:11, Numbers 27:12, Numbers 28:28, Numbers 29:7, Numbers
29:31, Numbers 30:6, Numbers 32:6, Deuteronomy 14:25, Deuteronomy 15:20,
Deuteronomy 18:7, Deuteronomy 23:17, Deuteronomy 29:8, Deuteronomy 29:16,
Joshua 10:4, Joshua 10:14, Joshua 17:13, Joshua 19:31, Judges 4:10, Judges
4:20, Judges 5:27, Judges 11:1, Judges 20:14, Judges 20:47, Judges 21:2, Ruth
2:17, 1 Samuel 11:8, 1 Samuel 14:7, 1 Samuel 15:8, 1 Samuel 30:10, 2 Samuel
2:18, 2 Samuel 3:30, 2 Samuel 13:1, 2 Samuel 13:3, 2 Samuel 23:7, 1 Kings 6:10,
1 Kings 11:6, 1 Kings 21:25, 2 Kings 3:3, 2 Kings 9:10, 2 Kings 14:1, 2 Kings
16:12, 2 Kings 16:19, 2 Kings 18:15, 2 Kings 21:25, 1 Chronicles 4:2, 1
Chronicles 4:9, 1 Chronicles 4:14, 1 Chronicles 9:23, 1 Chronicles 15:3, 1
Chronicles 15:21, 1 Chronicles 21:4, 2 Chronicles 6:12, 2 Chronicles 12:1, 2
Chronicles 14:5, 2 Chronicles 18:32, 2 Chronicles 35:17, Ezra 3:1, Ezra 6:2,
Nehemiah 5:10, Esther 2:11, Job 11:20, Psalms 14:1, Psalms 24:4, Psalms 27:12,
Psalms 31:17, Psalms 45:1, Psalms 46:9, Psalms 51:1, Psalms 67:4, Psalms 68:2,
Psalms 76:5, Psalms 78:55, Psalms 80:1, Psalms 86:14, Psalms 91:4, Psalms
97:10, Psalms 99:4, Proverbs 1:27, Ecclesiastes 8:9, Isaiah 19:12, Isaiah 23:3,
Isaiah 45:4, Isaiah 45:12, Isaiah 63:6, Jeremiah 2:22, Jeremiah 7:3, Jeremiah
9:18, Jeremiah 9:25, Jeremiah 26:4, Jeremiah 32:31, Jeremiah 40:2, Ezekiel 5:5,
Ezekiel 11:9, Ezekiel 11:22, Ezekiel 14:10, Ezekiel 16:26, Ezekiel 16:30,
Ezekiel 18:4, Ezekiel 24:18, Ezekiel 40:12, Ezekiel 45:24, Ezekiel 46:22,
Daniel 1:11, Daniel 2:42, Daniel 5:8, Daniel 8:16, Hosea 11:5, Hosea 11:10,
Amos 3:6, Amos 6:11, Micah 6:10, Zechariah 5:5, Zechariah 8:22, Matthew 4:25,
Matthew 5:17, Matthew 8:3, Matthew 12:22, Matthew 12:34, Matthew 14:22, Matthew
14:31, Matthew 14:35, Matthew 19:1, Matthew 19:14, Matthew 26:3, Mark 1:24,
Mark 6:33, Mark 7:33, Mark 9:37, Mark 11:1, Mark 15:31, Mark 16:17, Luke 2:9,
Luke 2:46, Luke 4:17, Luke 6:10, Luke 8:42, Luke 9:28, Luke 11:14, Luke 18:9,
Luke 20:16, Luke 23:5, John 3:22, John 5:10, John 5:45, John 6:61, John 7:22,
John 9:8, John 9:31, John 13:34, John 18:5, John 18:35, Acts 4:17, Acts 7:41,
Acts 8:33, Acts 8:34, Acts 16:23, Acts 16:38, Acts 17:32, Acts 19:8, Acts 27:9,
Romans 3:8, Romans 3:27, Romans 5:11, Romans 9:20, Romans 13:12, Romans 15:21,
1 Corinthians 9:24, 1 Corinthians 10:7, 1 Corinthians 15:12, 2 Corinthians
1:13, 2 Corinthians 2:16, 2 Corinthians 5:14, 2 Corinthians 8:12, 2 Corinthians
12:1, 2 Corinthians 12:3, Galatians 6:10, Ephesians 1:1, Ephesians 1:4,
Ephesians 4:1, Philippians 1:13, Colossians 1:28, 1 Thessalonians 3:2, Titus
3:14, Hebrews 6:9, Hebrews 6:20, Hebrews 7:6, Hebrews 7:8, Hebrews 8:4, Hebrews
9:10, James 5:9, 1 Peter 1:23, 1 Peter 4:4, 1 Peter 4:13, 2 John 1:3, 3 John
1:6, Revelation 12:7, Genesis 7:17, Genesis 12:10, Genesis 18:16, Genesis
24:20, Genesis 24:55, Genesis 30:42, Genesis 34:15, Genesis 38:17, Genesis
43:3, Genesis 46:25, Exodus 2:19, Exodus 3:20, Exodus 8:10, Exodus 8:15, Exodus
14:18, Exodus 21:18, Exodus 23:28, Exodus 24:2, Exodus 28:10, Exodus 28:26,
Exodus 34:31, Exodus 35:31, Exodus 36:4, Exodus 39:19, Exodus 40:18, Leviticus
2:3, Leviticus 2:10, Leviticus 13:15, Leviticus 13:19, Leviticus 14:43, Numbers
10:17, Numbers 10:18, Numbers 11:34, Numbers 24:3, Numbers 24:4, Numbers 24:15,
Numbers 29:22, Numbers 29:28, Numbers 29:38, Numbers 31:41, Numbers 32:12,
Numbers 32:39, Numbers 33:7, Deuteronomy 4:22, Deuteronomy 4:49, Deuteronomy
21:10, Deuteronomy 28:10, Joshua 6:7, Joshua 19:39, Joshua 21:25, Judges 6:34,
Judges 7:23, Judges 21:6, Judges 21:17, Ruth 4:13, 1 Samuel 17:22, 1 Samuel
18:7, 1 Samuel 19:13, 1 Samuel 24:20, 2 Samuel 3:17, 2 Samuel 9:12, 2 Samuel
15:3, 2 Samuel 19:21, 1 Kings 12:25, 1 Kings 14:28, 1 Kings 17:5, 1 Kings
18:28, 2 Kings 2:1, 2 Kings 5:16, 2 Kings 8:25, 2 Kings 10:3, 2 Kings 14:17, 2
Kings 22:10, 2 Kings 25:30, 1 Chronicles 4:19, 1 Chronicles 11:17, 1 Chronicles
15:11, 1 Chronicles 16:38, 1 Chronicles 29:4, 2 Chronicles 5:14, 2 Chronicles
15:13, 2 Chronicles 17:6, Nehemiah 6:8, Nehemiah 13:27, Nehemiah 13:29,
Nehemiah 13:30, Job 16:4, Job 37:12, Psalms 10:8, Psalms 30:9, Psalms 36:6,
Psalms 37:40, Psalms 53:1, Psalms 65:13, Psalms 82:5, Psalms 111:1, Psalms
126:6, Proverbs 3:3, Proverbs 23:29, Ecclesiastes 4:12, Song of Solomon 6:1,
Song of Solomon 8:12, Isaiah 8:11, Isaiah 29:15, Isaiah 37:20, Isaiah 38:18,
Isaiah 40:5, Isaiah 42:3, Isaiah 42:7, Isaiah 42:9, Isaiah 45:17, Isaiah 47:2,
Isaiah 51:12, Isaiah 66:10, Jeremiah 5:10, Jeremiah 7:4, Jeremiah 8:17,
Jeremiah 12:11, Jeremiah 18:16, Jeremiah 31:29, Jeremiah 32:15, Jeremiah 42:9,
Jeremiah 42:19, Jeremiah 47:7, Lamentations 4:14, Ezekiel 2:4, Ezekiel 4:7,
Ezekiel 4:13, Ezekiel 10:3, Ezekiel 11:20, Ezekiel 16:48, Ezekiel 23:20,
Ezekiel 33:14, Ezekiel 40:18, Ezekiel 40:32, Ezekiel 41:13, Ezekiel 42:7,
Ezekiel 46:3, Daniel 9:1, Daniel 9:8, Daniel 12:5, Hosea 6:9, Hosea 9:13, Hosea
10:15, Joel 3:7, Micah 4:5, Nahum 1:4, Nahum 1:8, Haggai 1:13, Haggai 2:1,
Haggai 2:3, Zechariah 6:14, Matthew 2:2, Matthew 5:11, Matthew 11:10, Matthew
16:24, Matthew 22:25, Matthew 22:37, Matthew 26:59, Matthew 28:11, Mark 1:20,
Mark 11:3, Mark 12:24, Mark 14:5, Mark 14:7, Luke 2:10, Luke 7:27, Luke 12:8,
Luke 13:6, Luke 15:30, Luke 21:16, Luke 21:28, Luke 22:20, Luke 22:54, John
2:11, John 2:23, John 6:12, John 6:57, John 10:25, John 14:3, John 15:22, John
19:14, John 19:25, Acts 4:23, Acts 11:13, Acts 14:14, Acts 16:33, Acts 19:31,
Romans 14:17, 1 Corinthians 6:5, 1 Corinthians 7:32, Ephesians 4:17,
Philippians 3:15, 1 Timothy 5:17, 1 Timothy 6:15, 2 Timothy 4:2, Titus 2:8,
Hebrews 1:13, Hebrews 4:13, 2 Peter 2:11, 2 Peter 3:11, 1 John 3:14, Revelation
2:19, Revelation 21:2, Genesis 2:3, Genesis 8:19, Genesis 12:6, Genesis 13:12,
Genesis 20:12, Genesis 24:42, Genesis 26:32, Genesis 27:5, Genesis 30:6,
Genesis 31:23, Genesis 36:10, Genesis 40:4, Genesis 41:5, Genesis 46:8, Exodus
8:11, Exodus 13:11, Exodus 20:25, Exodus 25:17, Exodus 25:21, Exodus 31:7,
Exodus 34:32, Exodus 37:10, Leviticus 9:12, Leviticus 11:36, Leviticus 16:22,
Leviticus 18:14, Leviticus 18:15, Leviticus 19:31, Numbers 1:16, Numbers 11:5,
Numbers 12:2, Numbers 15:13, Numbers 26:48, Numbers 32:21, Numbers 34:15,
Deuteronomy 4:28, Deuteronomy 14:1, Deuteronomy 16:9, Deuteronomy 16:20,
Deuteronomy 20:9, Deuteronomy 22:1, Joshua 1:6, Joshua 1:17, Joshua 2:20,
Joshua 4:21, Joshua 5:8, Joshua 13:33, Joshua 19:23, Judges 1:34, Judges 10:16,
Ruth 1:4, 1 Samuel 3:18, 1 Samuel 9:11, 1 Samuel 9:17, 1 Samuel 13:10, 1 Samuel
15:4, 1 Samuel 17:42, 1 Samuel 25:5, 2 Samuel 2:6, 2 Samuel 8:12, 2 Samuel
14:4, 2 Samuel 19:16, 2 Samuel 23:15, 1 Kings 1:26, 1 Kings 2:23, 1 Kings 9:26,
1 Kings 9:27, 1 Kings 10:20, 1 Kings 11:23, 1 Kings 17:6, 1 Kings 22:18, 2
Kings 5:3, 2 Kings 11:16, 2 Kings 12:20, 2 Kings 15:32, 2 Kings 18:20, 1
Chronicles 9:13, 1 Chronicles 27:5, 1 Chronicles 27:7, 1 Chronicles 29:8, 2
Chronicles 1:8, 2 Chronicles 1:13, 2 Chronicles 18:17, 2 Chronicles 29:9, 2
Chronicles 32:29, Ezra 4:21, Nehemiah 3:26, Nehemiah 6:19, Nehemiah 11:20,
Esther 5:4, Job 7:20, Job 35:6, Psalms 18:43, Psalms 19:6, Psalms 44:1, Psalms
55:19, Psalms 68:6, Psalms 71:15, Proverbs 30:8, Ecclesiastes 3:17,
Ecclesiastes 5:12, Ecclesiastes 9:15, Song of Solomon 5:5, Song of Solomon 6:5,
Song of Solomon 7:1, Isaiah 1:31, Isaiah 6:7, Isaiah 6:8, Isaiah 6:9, Isaiah
7:16, Isaiah 8:1, Isaiah 8:6, Isaiah 14:16, Isaiah 19:19, Isaiah 21:7, Isaiah
22:2, Isaiah 23:16, Isaiah 27:4, Isaiah 27:8, Isaiah 29:18, Isaiah 30:3, Isaiah
30:24, Isaiah 36:5, Isaiah 44:25, Isaiah 56:1, Jeremiah 1:9, Jeremiah 2:30,
Jeremiah 6:17, Jeremiah 8:4, Jeremiah 17:23, Jeremiah 22:20, Jeremiah 29:4,
Jeremiah 32:41, Jeremiah 38:13, Jeremiah 49:4, Jeremiah 50:27, Jeremiah 50:41,
Ezekiel 16:60, Ezekiel 19:8, Ezekiel 23:34, Ezekiel 23:48, Ezekiel 26:18,
Ezekiel 34:21, Ezekiel 48:34, Daniel 2:37, Daniel 6:18, Daniel 9:22, Daniel
10:5, Hosea 6:1, Hosea 11:7, Hosea 12:4, Jonah 2:9, Micah 7:5, Micah 7:20,
Zechariah 1:10, Matthew 5:21, Matthew 8:33, Matthew 9:11, Matthew 20:20,
Matthew 27:51, Mark 3:14, Mark 5:26, Mark 14:61, Luke 2:24, Luke 3:11, Luke
6:9, Luke 9:3, Luke 9:14, Luke 18:8, Luke 19:21, Luke 19:27, John 3:17, John
3:23, John 4:12, John 9:39, John 11:51, John 13:8, John 18:17, Acts 3:26, Acts
7:17, Acts 7:55, Acts 8:20, Acts 8:38, Acts 16:40, Acts 23:12, Acts 23:29, Acts
23:35, Acts 27:3, Romans 1:24, Romans 2:26, Romans 8:32, Romans 15:31, 1
Corinthians 14:11, 2 Corinthians 1:14, Galatians 3:5, Ephesians 3:20,
Colossians 2:14, 2 Thessalonians 3:12, 1 Timothy 5:18, 1 Timothy 6:11, 2
Timothy 2:18, 1 Peter 2:11, 1 Peter 3:10, 1 John 2:22, Revelation 7:3, Genesis
4:22, Genesis 14:23, Genesis 21:7, Genesis 26:31, Genesis 27:14, Genesis 32:29,
Genesis 36:15, Genesis 50:25, Exodus 3:5, Exodus 12:7, Exodus 13:16, Exodus
15:11, Exodus 15:15, Exodus 18:6, Exodus 27:17, Exodus 28:6, Exodus 36:29,
Exodus 38:10, Exodus 39:16, Leviticus 6:3, Leviticus 8:17, Leviticus 8:27,
Leviticus 11:31, Leviticus 11:45, Leviticus 21:5, Leviticus 24:8, Leviticus
27:20, Numbers 3:28, Numbers 3:51, Numbers 5:29, Numbers 12:1, Numbers 29:37,
Deuteronomy 1:11, Deuteronomy 9:25, Deuteronomy 19:13, Deuteronomy 28:47,
Joshua 5:11, Joshua 15:4, Joshua 17:5, Judges 2:22, Judges 3:16, Judges 5:6, 1
Samuel 1:16, 1 Samuel 15:13, 1 Samuel 30:7, 2 Samuel 16:22, 2 Samuel 22:49, 1
Kings 9:1, 1 Kings 10:27, 1 Kings 14:3, 1 Kings 14:17, 1 Kings 20:11, 1 Kings
22:53, 2 Kings 6:31, 2 Kings 9:34, 2 Kings 13:13, 1 Chronicles 5:17, 1
Chronicles 7:3, 1 Chronicles 15:1, 2 Chronicles 3:7, 2 Chronicles 4:7, 2
Chronicles 4:19, 2 Chronicles 9:19, 2 Chronicles 9:27, 2 Chronicles 15:12, 2
Chronicles 23:19, 2 Chronicles 25:25, 2 Chronicles 26:9, 2 Chronicles 36:7,
Nehemiah 4:18, Nehemiah 5:16, Nehemiah 6:11, Nehemiah 8:8, Nehemiah 9:14,
Nehemiah 10:32, Job 12:4, Job 20:26, Job 33:26, Job 36:7, Psalms 7:8, Psalms
28:2, Psalms 72:4, Psalms 79:1, Psalms 98:9, Psalms 101:2, Psalms 101:5, Psalms
104:14, Proverbs 17:2, Ecclesiastes 3:5, Ecclesiastes 12:12, Isaiah 10:10,
Isaiah 14:8, Isaiah 19:8, Isaiah 48:7, Isaiah 49:12, Isaiah 65:2, Jeremiah
4:18, Jeremiah 6:29, Jeremiah 32:9, Jeremiah 50:30, Ezekiel 7:14, Ezekiel
17:18, Ezekiel 19:10, Ezekiel 29:20, Ezekiel 32:3, Ezekiel 38:19, Ezekiel
39:29, Ezekiel 40:34, Ezekiel 40:37, Ezekiel 48:32, Daniel 2:13, Daniel 4:16,
Daniel 8:18, Hosea 7:7, Hosea 11:6, Joel 3:3, Amos 9:12, Habakkuk 3:10,
Zechariah 6:11, Zechariah 14:19, Matthew 3:15, Matthew 8:29, Matthew 11:12,
Matthew 12:2, Matthew 12:33, Matthew 18:19, Matthew 25:37, Matthew 27:48, Mark
1:10, Mark 2:23, Mark 4:39, Mark 11:9, Mark 14:30, Mark 14:44, Mark 14:55, Mark
16:7, Luke 1:41, Luke 4:2, Luke 7:21, Luke 9:41, Luke 11:18, Luke 22:44, Luke
24:27, John 5:39, John 9:6, John 9:21, John 19:4, Acts 3:20, Acts 4:12, Acts
4:26, Acts 4:30, Acts 5:25, Acts 7:30, Acts 7:32, Acts 9:13, Acts 10:11, Acts
10:32, Acts 12:3, Acts 16:22, Acts 19:24, Acts 26:4, Acts 28:18, Romans 6:5,
Romans 15:23, 1 Corinthians 4:19, 1 Corinthians 6:19, 1 Corinthians 9:5, 2
Corinthians 2:5, 2 Corinthians 2:13, Galatians 3:1, Ephesians 3:7, Ephesians
5:6, Ephesians 5:19, Philippians 2:16, Philippians 4:9, Colossians 1:20, 1
Timothy 1:12, 1 Timothy 2:2, 2 Timothy 1:18, Titus 1:11, Hebrews 3:12, Hebrews
7:19, Hebrews 9:6, Hebrews 12:24, James 1:23, James 3:5, 1 Peter 2:8, 2 Peter
3:14, 1 John 5:4, Revelation 3:2, Revelation 17:5, Revelation 22:1, Genesis
1:16, Genesis 9:17, Genesis 24:12, Genesis 31:31, Genesis 39:17, Genesis 47:16,
Genesis 48:18, Genesis 49:3, Exodus 3:4, Exodus 9:28, Exodus 10:17, Exodus
18:23, Exodus 18:26, Exodus 19:11, Exodus 23:18, Exodus 27:12, Exodus 32:25,
Exodus 34:12, Leviticus 1:8, Leviticus 7:19, Leviticus 19:2, Numbers 1:52,
Numbers 2:27, Numbers 4:6, Numbers 13:19, Numbers 15:6, Numbers 36:11,
Deuteronomy 10:22, Deuteronomy 11:11, Deuteronomy 13:9, Deuteronomy 22:27,
Deuteronomy 31:8, Deuteronomy 31:10, Deuteronomy 32:52, Deuteronomy 33:3,
Judges 2:4, Judges 19:13, 1 Samuel 3:10, 1 Samuel 4:9, 1 Samuel 9:25, 1 Samuel
13:20, 1 Samuel 25:23, 1 Samuel 26:9, 2 Samuel 3:6, 2 Samuel 8:1, 2 Samuel
13:26, 2 Samuel 13:30, 2 Samuel 22:7, 2 Samuel 23:3, 1 Kings 8:7, 1 Kings
11:15, 1 Kings 15:34, 1 Kings 17:24, 1 Kings 22:48, 2 Kings 1:18, 2 Kings 6:21,
2 Kings 9:30, 2 Kings 11:10, 2 Kings 12:3, 2 Kings 14:5, 2 Kings 17:18, 2 Kings
19:8, 2 Kings 20:10, 2 Kings 25:9, 1 Chronicles 13:9, 1 Chronicles 19:4, 1
Chronicles 29:27, 2 Chronicles 17:19, 2 Chronicles 18:25, 2 Chronicles 24:16, 2
Chronicles 24:26, 2 Chronicles 30:2, Ezra 5:13, Ezra 7:22, Nehemiah 2:14, Job
4:16, Job 23:12, Psalms 7:5, Psalms 7:6, Psalms 7:17, Psalms 27:1, Psalms
31:13, Psalms 71:6, Psalms 78:20, Psalms 101:3, Psalms 102:2, Psalms 119:78,
Psalms 144:12, Psalms 146:9, Proverbs 28:10, Isaiah 13:3, Isaiah 14:12, Isaiah
19:6, Isaiah 42:4, Isaiah 46:4, Isaiah 49:20, Isaiah 52:2, Isaiah 57:9, Isaiah
65:4, Isaiah 66:6, Isaiah 66:16, Jeremiah 1:19, Jeremiah 12:7, Jeremiah 14:6,
Jeremiah 18:10, Jeremiah 26:24, Jeremiah 31:14, Jeremiah 31:22, Jeremiah 35:16,
Jeremiah 40:6, Jeremiah 46:19, Ezekiel 17:8, Ezekiel 18:8, Ezekiel 23:14,
Ezekiel 24:2, Ezekiel 40:27, Ezekiel 40:43, Ezekiel 42:4, Ezekiel 46:23, Daniel
3:18, Daniel 6:25, Hosea 9:9, Hosea 12:9, Joel 2:10, Amos 9:2, Micah 4:9,
Haggai 2:10, Zechariah 13:6, Zechariah 14:11, Matthew 2:20, Matthew 4:4,
Matthew 7:26, Matthew 8:11, Matthew 8:20, Matthew 9:36, Matthew 10:15, Matthew
11:8, Matthew 12:35, Matthew 16:18, Matthew 18:32, Matthew 19:23, Matthew 20:1,
Matthew 20:31, Matthew 25:43, Matthew 26:42, Matthew 27:31, Mark 3:4, Mark
5:39, Mark 8:25, Mark 11:31, Mark 12:32, Luke 4:34, Luke 5:1, Luke 7:43, Luke
9:58, Luke 11:49, Luke 12:20, Luke 17:4, Luke 21:26, Luke 23:12, Luke 23:28,
John 4:11, John 6:13, John 7:31, John 11:47, John 13:16, John 15:10, John
16:22, John 17:14, John 19:26, John 19:41, John 20:29, Acts 1:2, Acts 2:20,
Acts 4:36, Acts 5:23, Acts 7:7, Acts 7:25, Acts 15:25, Acts 17:22, Acts 19:6,
Acts 24:15, Acts 27:28, Romans 1:17, Romans 11:23, Romans 15:5, 1 Corinthians
10:4, 2 Corinthians 10:16, Galatians 1:1, Galatians 3:15, Philippians 1:29,
Colossians 3:1, 2 Thessalonians 1:9, 1 Timothy 5:5, Titus 2:3, Philemon 1:22,
James 3:1, James 4:8, 1 Peter 2:10, 2 Peter 1:21, 2 Peter 2:16, 3 John 1:9,
Revelation 1:13, Revelation 21:1, Genesis 12:1, Genesis 18:18, Genesis 20:1,
Genesis 20:17, Genesis 21:19, Genesis 30:26, Genesis 39:12, Genesis 40:19,
Genesis 41:10, Genesis 45:5, Exodus 6:3, Exodus 6:26, Exodus 9:20, Exodus 9:35,
Exodus 16:14, Exodus 22:1, Exodus 22:24, Exodus 29:10, Exodus 34:30, Exodus
40:36, Leviticus 3:17, Leviticus 17:2, Leviticus 23:4, Leviticus 26:35, Numbers
11:23, Numbers 14:12, Numbers 15:9, Numbers 18:5, Numbers 19:8, Numbers 21:25,
Numbers 21:30, Numbers 29:19, Deuteronomy 6:21, Deuteronomy 10:2, Deuteronomy
15:16, Deuteronomy 28:18, Joshua 8:10, Joshua 8:32, Joshua 11:22, Joshua 17:12,
Judges 6:1, Judges 6:14, Judges 21:13, 1 Samuel 4:12, 1 Samuel 8:9, 1 Samuel
18:13, 1 Samuel 31:1, 2 Samuel 1:24, 2 Samuel 12:17, 2 Samuel 15:11, 2 Samuel
16:12, 2 Samuel 20:9, 2 Samuel 22:44, 1 Kings 3:13, 1 Kings 13:16, 1 Kings
16:10, 1 Kings 22:26, 2 Kings 8:7, 2 Kings 8:28, 2 Kings 15:8, 2 Kings 15:10, 2
Kings 18:6, 2 Kings 25:3, 1 Chronicles 6:33, 1 Chronicles 10:1, 1 Chronicles
26:4, 2 Chronicles 13:4, 2 Chronicles 15:18, 2 Chronicles 24:10, 2 Chronicles
25:26, 2 Chronicles 30:13, Ezra 5:9, Nehemiah 7:71, Nehemiah 12:1, Nehemiah
12:25, Esther 2:5, Esther 8:6, Job 16:8, Psalms 13:2, Psalms 22:27, Psalms
28:5, Psalms 37:34, Psalms 40:16, Psalms 40:17, Psalms 41:6, Psalms 42:6,
Psalms 49:11, Psalms 52:9, Psalms 59:3, Psalms 68:17, Psalms 70:2, Psalms 79:8,
Psalms 127:5, Psalms 132:12, Proverbs 6:22, Proverbs 14:14, Ecclesiastes 4:10,
Ecclesiastes 12:11, Song of Solomon 5:16, Isaiah 19:16, Isaiah 26:1, Isaiah
40:6, Isaiah 47:5, Isaiah 62:12, Jeremiah 1:2, Jeremiah 11:3, Jeremiah 14:4,
Jeremiah 17:5, Jeremiah 23:26, Jeremiah 33:6, Jeremiah 34:4, Jeremiah 50:43,
Jeremiah 51:1, Jeremiah 52:6, Jeremiah 52:13, Lamentations 4:16, Ezekiel 2:5,
Ezekiel 3:10, Ezekiel 6:5, Ezekiel 11:23, Ezekiel 16:59, Ezekiel 18:9, Ezekiel
22:15, Ezekiel 27:25, Ezekiel 38:2, Ezekiel 38:21, Ezekiel 43:9, Ezekiel 46:24,
Daniel 1:1, Hosea 4:2, Joel 1:17, Jonah 1:17, Habakkuk 1:16, Habakkuk 2:15,
Habakkuk 3:11, Zephaniah 2:10, Zechariah 5:8, Matthew 5:39, Matthew 12:13,
Matthew 12:24, Matthew 14:23, Matthew 17:1, Matthew 21:27, Matthew 24:9,
Matthew 28:1, Mark 5:21, Mark 6:50, Mark 10:51, Luke 2:43, Luke 3:15, Luke
6:23, Luke 15:21, Luke 19:26, John 3:5, John 4:25, John 5:37, John 7:37, John
9:17, John 13:3, John 16:30, John 19:29, Acts 2:47, Acts 5:39, Acts 8:3, Acts
8:10, Acts 12:14, Acts 16:6, Acts 17:16, Acts 20:20, Acts 22:19, Acts 25:3,
Acts 25:14, Acts 26:1, Acts 27:34, Romans 2:25, Romans 6:21, Romans 8:18,
Romans 9:32, Romans 10:8, Romans 16:4, 1 Corinthians 10:33, 1 Corinthians
11:23, 1 Corinthians 16:11, 2 Corinthians 1:10, 2 Corinthians 9:6, 2
Corinthians 11:25, Ephesians 5:4, 1 Thessalonians 2:6, 1 Timothy 4:12, 2
Timothy 4:21, Hebrews 1:8, Hebrews 2:11, Hebrews 11:19, James 1:26, 1 Peter
1:10, 1 Peter 3:22, Jude 1:23, Genesis 2:17, Genesis 3:13, Genesis 4:12,
Genesis 12:4, Genesis 24:33, Genesis 27:21, Genesis 32:30, Genesis 34:11,
Genesis 42:27, Genesis 46:1, Exodus 4:27, Exodus 6:9, Exodus 6:27, Exodus
14:23, Exodus 21:26, Exodus 23:25, Exodus 25:36, Exodus 28:33, Exodus 29:18,
Exodus 33:22, Exodus 36:34, Exodus 37:22, Leviticus 7:8, Leviticus 7:33,
Leviticus 14:22, Leviticus 20:10, Leviticus 27:2, Numbers 1:3, Numbers 2:5,
Numbers 10:31, Numbers 12:15, Numbers 13:31, Numbers 14:6, Numbers 14:31,
Numbers 20:13, Numbers 21:28, Numbers 28:27, Numbers 29:18, Numbers 29:21,
Numbers 29:24, Numbers 29:27, Numbers 29:30, Numbers 29:33, Numbers 32:15,
Deuteronomy 13:8, Deuteronomy 31:4, Deuteronomy 34:6, Joshua 21:8, Judges 17:5,
Judges 18:15, 1 Samuel 1:26, 1 Samuel 3:15, 1 Samuel 10:12, 1 Samuel 17:4, 1
Samuel 17:43, 1 Samuel 18:26, 2 Samuel 5:9, 2 Samuel 13:23, 2 Samuel 14:18, 2
Samuel 19:10, 1 Kings 1:31, 1 Kings 5:17, 1 Kings 6:35, 1 Kings 7:47, 1 Kings
8:11, 1 Kings 11:25, 1 Kings 11:43, 1 Kings 19:8, 1 Kings 21:26, 2 Kings 19:13,
2 Kings 24:4, 1 Chronicles 8:40, 1 Chronicles 12:33, 1 Chronicles 27:23, 1
Chronicles 27:29, 1 Chronicles 29:23, 2 Chronicles 7:5, 2 Chronicles 9:31, 2
Chronicles 12:8, 2 Chronicles 15:6, 2 Chronicles 18:20, 2 Chronicles 19:6, 2
Chronicles 20:19, 2 Chronicles 23:12, 2 Chronicles 24:21, 2 Chronicles 34:18,
Ezra 7:19, Ezra 10:7, Nehemiah 7:65, Nehemiah 9:31, Esther 2:22, Job 16:10, Job
30:1, Psalms 11:2, Psalms 20:6, Psalms 21:9, Psalms 28:1, Psalms 31:20, Psalms
32:9, Psalms 57:6, Psalms 64:6, Psalms 66:12, Psalms 78:5, Psalms 89:1, Psalms
106:48, Psalms 143:3, Ecclesiastes 1:17, Ecclesiastes 8:11, Ecclesiastes 8:13,
Song of Solomon 4:3, Song of Solomon 4:4, Isaiah 3:17, Isaiah 13:18, Isaiah
25:7, Isaiah 37:13, Isaiah 38:20, Isaiah 41:12, Isaiah 51:14, Isaiah 56:4,
Isaiah 56:8, Isaiah 64:4, Jeremiah 3:10, Jeremiah 3:20, Jeremiah 14:21,
Jeremiah 20:16, Jeremiah 37:19, Jeremiah 44:24, Jeremiah 51:60, Ezekiel 11:11,
Ezekiel 12:20, Ezekiel 20:46, Ezekiel 26:4, Ezekiel 27:10, Ezekiel 27:21,
Ezekiel 33:26, Ezekiel 34:23, Ezekiel 38:6, Daniel 10:14, Daniel 11:23, Hosea
5:4, Hosea 5:5, Hosea 9:3, Joel 2:9, Amos 5:6, Jonah 3:4, Micah 1:12, Zephaniah
1:5, Zephaniah 1:7, Zechariah 14:7, Matthew 5:28, Matthew 9:16, Matthew 10:28,
Matthew 11:16, Matthew 13:24, Matthew 16:11, Matthew 19:5, Matthew 20:6,
Matthew 24:6, Mark 1:19, Mark 2:2, Mark 2:25, Mark 6:38, Mark 8:20, Mark 16:20,
Luke 3:23, Luke 9:10, Luke 10:16, Luke 11:5, John 3:4, John 3:16, John 8:20,
John 8:41, John 11:28, John 12:48, John 19:7, John 19:35, Acts 5:40, Acts 7:51,
Acts 12:15, Acts 13:14, Romans 8:28, Romans 10:12, Romans 11:33, Romans 15:12,
1 Corinthians 1:12, 1 Corinthians 7:31, 1 Corinthians 10:20, 1 Corinthians
11:5, 1 Corinthians 14:7, 1 Corinthians 15:24, 2 Corinthians 1:16, 2
Corinthians 1:20, 2 Corinthians 11:7, Colossians 4:7, 2 Thessalonians 1:8, 1
Timothy 5:14, Hebrews 3:1, Hebrews 6:6, Hebrews 7:14, James 2:2, Revelation
18:1, Revelation 19:7, Revelation 19:12, Genesis 1:22, Genesis 7:3, Genesis
16:4, Genesis 16:10, Genesis 17:27, Genesis 18:21, Genesis 24:31, Genesis
25:34, Genesis 30:1, Genesis 30:8, Genesis 34:8, Genesis 38:22, Genesis 40:11,
Genesis 42:15, Genesis 50:3, Exodus 4:11, Exodus 4:23, Exodus 7:18, Exodus 8:1,
Exodus 10:8, Exodus 12:34, Exodus 15:8, Exodus 15:27, Exodus 19:21, Exodus
23:29, Exodus 24:5, Exodus 29:24, Exodus 31:11, Exodus 36:13, Leviticus 2:12,
Leviticus 22:32, Leviticus 27:30, Numbers 3:7, Numbers 13:30, Numbers 14:13,
Numbers 16:10, Numbers 26:37, Deuteronomy 4:45, Deuteronomy 7:20, Deuteronomy
18:15, Deuteronomy 19:12, Deuteronomy 27:6, Deuteronomy 33:23, Judges 8:11,
Judges 18:5, Judges 18:20, Judges 19:26, Ruth 2:15, 1 Samuel 1:18, 1 Samuel
8:16, 1 Samuel 11:4, 1 Samuel 17:44, 1 Samuel 26:17, 1 Samuel 29:1, 1 Samuel
30:19, 2 Samuel 9:4, 2 Samuel 13:12, 2 Samuel 13:31, 2 Samuel 17:6, 2 Samuel
20:14, 1 Kings 3:3, 1 Kings 6:34, 1 Kings 8:31, 1 Kings 8:34, 1 Kings 12:23, 1
Kings 14:14, 1 Kings 15:26, 2 Kings 6:2, 2 Kings 9:9, 2 Kings 19:1, 1
Chronicles 21:28, 1 Chronicles 26:10, 2 Chronicles 1:1, 2 Chronicles 4:5, 2
Chronicles 6:22, 2 Chronicles 19:3, Nehemiah 1:8, Nehemiah 3:10, Esther 3:10,
Job 20:18, Psalms 8:2, Psalms 40:11, Psalms 72:17, Psalms 127:2, Psalms 132:11,
Psalms 138:8, Psalms 144:14, Proverbs 28:2, Song of Solomon 8:9, Isaiah 4:3,
Isaiah 8:3, Isaiah 9:4, Isaiah 9:5, Isaiah 9:19, Isaiah 14:11, Isaiah 21:8,
Isaiah 37:1, Jeremiah 5:4, Jeremiah 15:14, Jeremiah 17:10, Jeremiah 18:17,
Jeremiah 19:2, Jeremiah 29:11, Jeremiah 36:22, Jeremiah 37:9, Jeremiah 41:3,
Jeremiah 41:7, Jeremiah 46:11, Lamentations 4:9, Ezekiel 1:5, Ezekiel 6:4,
Ezekiel 7:21, Ezekiel 8:14, Ezekiel 9:7, Ezekiel 10:5, Ezekiel 12:10, Ezekiel
20:12, Ezekiel 29:6, Ezekiel 32:20, Ezekiel 36:18, Ezekiel 36:34, Ezekiel
42:10, Ezekiel 48:35, Daniel 2:1, Daniel 2:39, Daniel 9:10, Daniel 11:19, Hosea
5:15, Joel 1:18, Joel 1:19, Joel 2:7, Amos 4:3, Amos 7:7, Micah 2:2, Micah 3:7,
Micah 7:16, Habakkuk 1:4, Zechariah 1:15, Matthew 13:13, Matthew 13:55, Matthew
14:26, Matthew 21:38, Matthew 24:7, Mark 4:5, Mark 4:11, Mark 4:12, Mark 9:19,
Mark 10:49, Mark 14:22, Mark 14:36, Luke 1:80, Luke 4:14, Luke 6:8, Luke 7:16,
Luke 8:23, Luke 9:5, Luke 10:20, Luke 12:47, Luke 14:17, Luke 14:28, Luke
20:21, Luke 21:7, Luke 23:50, John 3:21, John 6:58, John 8:54, Acts 11:16, Acts
13:5, Acts 13:8, Acts 13:13, Acts 13:26, Acts 14:26, Acts 16:17, Acts 17:1,
Acts 17:7, Acts 20:1, Acts 21:39, Acts 22:18, Romans 15:28, Romans 16:23, 1
Corinthians 5:5, 1 Corinthians 13:8, 1 Corinthians 14:22, 1 Corinthians 15:6, 1
Corinthians 15:39, 1 Thessalonians 1:3, 1 Thessalonians 1:6, 2 Thessalonians
3:17, Titus 3:12, Hebrews 10:26, Hebrews 13:3, 1 Peter 1:21, Revelation 11:17,
Revelation 12:6, Revelation 12:13, Revelation 22:11, Genesis 15:2, Genesis
22:16, Genesis 23:15, Genesis 24:2, Genesis 31:26, Genesis 37:33, Genesis 38:1,
Genesis 38:20, Genesis 40:10, Genesis 44:15, Genesis 49:1, Genesis 49:33,
Genesis 50:14, Exodus 2:7, Exodus 6:15, Exodus 7:11, Exodus 12:37, Exodus 20:7,
Exodus 25:23, Exodus 27:4, Exodus 32:7, Exodus 32:31, Exodus 39:26, Leviticus
13:23, Leviticus 13:54, Leviticus 14:16, Leviticus 23:12, Leviticus 23:15,
Leviticus 26:15, Leviticus 26:46, Leviticus 27:32, Numbers 4:8, Numbers 10:12,
Numbers 15:35, Numbers 18:29, Numbers 20:15, Numbers 21:9, Numbers 33:40,
Numbers 34:17, Deuteronomy 4:12, Deuteronomy 10:9, Deuteronomy 22:7,
Deuteronomy 24:20, Deuteronomy 25:6, Deuteronomy 27:10, Deuteronomy 30:12,
Deuteronomy 31:5, Deuteronomy 31:18, Deuteronomy 33:24, Joshua 2:15, Joshua
13:25, Joshua 14:15, Joshua 21:9, Joshua 24:20, Judges 3:5, Judges 8:25, Judges
8:32, Judges 20:12, Judges 20:20, 1 Samuel 4:5, 1 Samuel 11:10, 1 Samuel 12:1,
1 Samuel 13:8, 1 Samuel 13:17, 1 Samuel 17:18, 1 Samuel 24:2, 1 Samuel 30:20, 2
Samuel 3:16, 2 Samuel 3:37, 2 Samuel 16:16, 1 Kings 1:15, 1 Kings 4:34, 1 Kings
9:24, 1 Kings 14:20, 1 Kings 16:3, 1 Kings 16:22, 1 Kings 18:37, 1 Kings 19:18,
2 Kings 2:7, 2 Kings 8:10, 2 Kings 8:24, 2 Kings 9:16, 2 Kings 11:7, 2 Kings
15:13, 2 Kings 18:7, 2 Kings 23:21, 1 Chronicles 4:22, 1 Chronicles 7:11, 1
Chronicles 9:26, 1 Chronicles 9:27, 1 Chronicles 16:2, 2 Chronicles 24:19, 2
Chronicles 28:11, 2 Chronicles 30:12, Nehemiah 13:17, Esther 9:5, Job 14:5, Job
37:4, Psalms 2:2, Psalms 16:11, Psalms 18:48, Psalms 31:7, Psalms 31:10, Psalms
40:9, Psalms 41:2, Psalms 42:5, Psalms 68:35, Psalms 144:13, Proverbs 20:16,
Ecclesiastes 1:8, Isaiah 10:17, Isaiah 30:5, Isaiah 31:5, Isaiah 37:8, Isaiah
37:32, Isaiah 50:8, Isaiah 60:15, Isaiah 65:11, Jeremiah 9:7, Jeremiah 13:25,
Jeremiah 35:19, Jeremiah 48:46, Jeremiah 50:31, Lamentations 4:11, Ezekiel
4:17, Ezekiel 7:12, Ezekiel 22:9, Ezekiel 27:17, Ezekiel 36:37, Ezekiel 37:2,
Ezekiel 44:29, Ezekiel 48:14, Daniel 3:16, Hosea 2:19, Hosea 12:2, Hosea 12:8,
Joel 1:9, Amos 7:2, Micah 2:9, Nahum 3:13, Zechariah 2:2, Zechariah 8:17,
Zechariah 9:4, Zechariah 9:17, Matthew 2:1, Matthew 16:13, Matthew 25:40,
Matthew 26:56, Matthew 28:19, Mark 7:27, Mark 7:37, Mark 9:39, Mark 14:25, Luke
1:32, Luke 1:38, Luke 6:44, Luke 7:47, Luke 11:22, Luke 11:33, Luke 12:54, Luke
23:53, John 1:23, John 2:12, John 4:6, John 5:6, John 12:17, John 13:20, John
18:23, Acts 2:2, Acts 2:39, Acts 2:40, Acts 4:19, Acts 5:26, Acts 7:20, Acts
8:40, Acts 13:45, Acts 17:10, Acts 20:11, Acts 27:35, Acts 28:22, Romans 3:21,
Romans 5:19, Romans 8:21, Romans 9:26, 1 Corinthians 4:3, 1 Corinthians 6:7, 1
Corinthians 12:13, 1 Corinthians 14:2, 1 Corinthians 15:50, Galatians 1:17,
Ephesians 2:10, Ephesians 4:25, Philippians 2:1, Colossians 3:17, 2 Timothy
3:2, Titus 3:9, Hebrews 1:12, Hebrews 4:16, Hebrews 11:22, Hebrews 11:29, James
2:8, 2 Peter 1:11, 2 Peter 3:2, 2 Peter 3:8, Jude 1:24, Revelation 9:11,
Revelation 17:6, Genesis 13:18, Genesis 15:10, Genesis 17:9, Genesis 24:19,
Genesis 25:18, Genesis 34:14, Genesis 40:15, Genesis 41:50, Genesis 42:32,
Genesis 43:2, Genesis 46:7, Exodus 2:16, Exodus 10:10, Exodus 12:46, Exodus
23:13, Exodus 27:10, Exodus 30:3, Exodus 32:5, Exodus 34:2, Exodus 36:35,
Leviticus 4:33, Leviticus 7:4, Leviticus 17:9, Leviticus 23:11, Leviticus 24:2,
Numbers 3:46, Numbers 20:26, Numbers 22:29, Numbers 23:14, Numbers 24:14,
Numbers 26:5, Numbers 27:22, Numbers 31:49, Numbers 36:5, Deuteronomy 5:11,
Deuteronomy 11:23, Joshua 4:24, Joshua 8:3, Joshua 9:22, Joshua 17:8, Judges
1:8, Judges 16:8, 1 Samuel 2:9, 1 Samuel 3:5, 1 Samuel 7:17, 1 Samuel 11:12, 1
Samuel 15:2, 1 Samuel 15:19, 1 Samuel 17:48, 1 Samuel 17:58, 1 Samuel 21:15, 1
Samuel 23:28, 1 Samuel 28:13, 2 Samuel 24:5, 1 Kings 16:14, 1 Kings 19:3, 1
Kings 20:16, 2 Kings 3:23, 2 Kings 4:4, 2 Kings 8:4, 2 Kings 12:19, 2 Kings
16:20, 1 Chronicles 3:4, 1 Chronicles 6:67, 1 Chronicles 12:4, 1 Chronicles
16:29, 1 Chronicles 16:36, 1 Chronicles 16:39, 2 Chronicles 5:8, 2 Chronicles
6:9, 2 Chronicles 11:18, 2 Chronicles 28:25, 2 Chronicles 29:10, 2 Chronicles
32:19, 2 Chronicles 34:16, Nehemiah 3:19, Nehemiah 5:17, Job 7:11, Job 34:33,
Psalms 9:16, Psalms 15:4, Psalms 87:4, Psalms 90:17, Psalms 98:1, Psalms
118:27, Psalms 137:7, Psalms 140:5, Psalms 144:11, Proverbs 1:22, Ecclesiastes
1:6, Ecclesiastes 2:23, Isaiah 2:12, Isaiah 9:2, Isaiah 10:7, Isaiah 15:4,
Isaiah 31:7, Isaiah 32:10, Isaiah 40:10, Isaiah 41:4, Isaiah 43:3, Isaiah 45:2,
Isaiah 50:6, Isaiah 62:9, Isaiah 65:19, Jeremiah 7:9, Jeremiah 8:22, Jeremiah
9:11, Jeremiah 20:2, Jeremiah 22:23, Jeremiah 38:12, Jeremiah 49:34, Jeremiah
52:10, Lamentations 4:2, Lamentations 4:18, Ezekiel 3:22, Ezekiel 3:24, Ezekiel
5:9, Ezekiel 10:20, Ezekiel 16:10, Ezekiel 16:38, Ezekiel 18:12, Ezekiel 18:15,
Ezekiel 18:23, Ezekiel 18:28, Ezekiel 20:23, Ezekiel 27:19, Ezekiel 28:4,
Ezekiel 30:16, Ezekiel 36:29, Ezekiel 39:13, Ezekiel 40:47, Daniel 8:1, Hosea
6:5, Hosea 9:8, Hosea 12:14, Joel 3:9, Joel 3:13, Micah 5:1, Micah 5:13, Micah
6:9, Zechariah 10:4, Matthew 5:20, Matthew 6:20, Matthew 6:34, Matthew 10:14,
Matthew 13:11, Matthew 16:8, Matthew 16:28, Matthew 18:21, Matthew 24:21,
Matthew 24:32, Matthew 26:29, Matthew 26:73, Matthew 27:11, Matthew 27:27, Mark
11:33, Mark 13:27, Mark 13:28, Mark 14:9, Mark 14:62, Luke 5:15, Luke 9:18,
Luke 11:53, Luke 12:5, Luke 12:18, Luke 13:1, Luke 18:5, Luke 19:42, Luke
20:14, Luke 22:35, Luke 22:53, Luke 24:49, John 4:46, John 4:52, John 5:14,
John 7:32, John 12:27, Acts 2:31, Acts 9:10, Acts 9:22, Acts 10:41, Acts 15:30,
Acts 15:38, Acts 17:28, Acts 24:12, Romans 4:10, Romans 5:2, Romans 8:13,
Romans 9:21, Romans 10:5, Romans 11:18, Romans 14:14, 1 Corinthians 1:30, 1
Corinthians 7:21, 1 Corinthians 8:1, 1 Corinthians 10:21, 1 Corinthians 15:48,
2 Corinthians 4:15, 2 Corinthians 5:15, 2 Corinthians 8:11, 2 Corinthians 10:5,
2 Corinthians 11:6, 2 Corinthians 12:13, Galatians 2:8, Ephesians 2:19,
Ephesians 3:16, Ephesians 6:13, Colossians 3:11, 2 Thessalonians 2:15, 2
Thessalonians 2:16, 2 Timothy 2:2, Hebrews 3:13, Hebrews 13:15, 2 Peter 1:12, 2
Peter 2:9, Revelation 12:3, Revelation 13:6, Revelation 19:8, Genesis 1:9,
Genesis 4:4, Genesis 13:3, Genesis 27:22, Genesis 32:18, Genesis 34:2, Genesis
34:23, Genesis 35:16, Genesis 40:1, Exodus 5:4, Exodus 5:10, Exodus 6:5, Exodus
7:2, Exodus 10:28, Exodus 15:13, Exodus 15:21, Exodus 18:4, Exodus 19:6, Exodus
26:12, Exodus 29:30, Exodus 29:32, Exodus 31:16, Exodus 37:27, Leviticus 4:21,
Leviticus 9:17, Leviticus 11:2, Leviticus 16:20, Leviticus 20:20, Leviticus
21:8, Leviticus 23:28, Leviticus 27:19, Numbers 2:32, Numbers 4:11, Numbers
18:4, Numbers 21:4, Numbers 21:8, Numbers 23:4, Numbers 25:7, Numbers 28:15,
Numbers 32:4, Deuteronomy 4:16, Deuteronomy 4:39, Deuteronomy 15:5, Deuteronomy
19:17, Deuteronomy 32:4, Deuteronomy 33:10, Joshua 6:19, Joshua 10:8, Joshua
21:16, Judges 11:22, Judges 15:4, Judges 16:11, Judges 18:26, Ruth 1:11, Ruth
3:9, 1 Samuel 1:13, 1 Samuel 3:14, 1 Samuel 14:29, 1 Samuel 16:3, 1 Samuel
18:19, 1 Samuel 20:26, 1 Samuel 24:18, 1 Samuel 28:12, 2 Samuel 3:10, 2 Samuel
8:11, 2 Samuel 24:1, 1 Kings 1:40, 1 Kings 2:37, 1 Kings 3:27, 1 Kings 11:10, 1
Kings 15:15, 1 Kings 15:31, 1 Kings 17:20, 1 Kings 18:45, 2 Kings 1:8, 2 Kings
3:22, 2 Kings 4:7, 2 Kings 4:24, 2 Kings 8:23, 2 Kings 14:16, 2 Kings 15:36, 2
Kings 23:28, 2 Kings 25:15, 1 Chronicles 2:18, 1 Chronicles 9:2, 1 Chronicles
9:28, 1 Chronicles 18:1, 1 Chronicles 18:13, 1 Chronicles 19:13, 1 Chronicles
22:15, 1 Chronicles 26:8, 1 Chronicles 26:16, 2 Chronicles 9:10, 2 Chronicles
12:2, 2 Chronicles 12:11, 2 Chronicles 23:4, 2 Chronicles 23:15, 2 Chronicles
32:3, 2 Chronicles 35:1, Nehemiah 5:3, Nehemiah 9:20, Nehemiah 12:28, Nehemiah
12:42, Nehemiah 13:4, Job 42:14, Psalms 20:5, Psalms 22:23, Psalms 28:3, Psalms
37:20, Psalms 111:10, Psalms 148:14, Proverbs 25:13, Proverbs 30:17,
Ecclesiastes 1:11, Isaiah 5:9, Isaiah 5:13, Isaiah 13:22, Isaiah 14:26, Isaiah
16:3, Isaiah 25:2, Isaiah 26:17, Isaiah 42:15, Isaiah 46:1, Isaiah 53:6, Isaiah
54:6, Isaiah 59:3, Jeremiah 6:4, Jeremiah 10:3, Jeremiah 10:21, Jeremiah 22:9,
Jeremiah 24:2, Jeremiah 31:31, Jeremiah 44:11, Jeremiah 48:5, Jeremiah 48:35,
Lamentations 4:4, Lamentations 4:13, Ezekiel 7:2, Ezekiel 20:16, Ezekiel 33:16,
Ezekiel 44:28, Ezekiel 47:15, Daniel 2:11, Daniel 4:10, Daniel 6:27, Daniel
11:32, Hosea 4:10, Joel 1:5, Jonah 1:11, Micah 1:14, Micah 2:8, Habakkuk 1:5,
Habakkuk 1:15, Zephaniah 1:9, Haggai 1:8, Zechariah 5:2, Zechariah 5:6,
Zechariah 7:1, Matthew 4:10, Matthew 6:7, Matthew 7:5, Matthew 8:12, Matthew
12:31, Matthew 15:23, Matthew 15:28, Matthew 16:26, Matthew 19:24, Matthew
25:27, Matthew 25:41, Matthew 26:7, Matthew 26:36, Mark 1:35, Mark 7:25, Mark
9:41, Mark 12:38, Mark 14:68, Mark 15:15, Luke 8:3, Luke 8:33, Luke 11:17, Luke
14:23, Luke 24:33, John 4:36, John 5:23, John 5:29, John 6:35, John 6:39, John
7:17, John 7:26, John 10:24, John 11:50, John 12:47, John 21:12, Acts 8:6, Acts
9:36, Acts 10:9, Acts 15:21, Acts 18:5, Acts 21:7, Acts 22:14, Acts 27:24,
Romans 2:3, Romans 3:9, Romans 15:13, 1 Corinthians 7:11, 1 Corinthians 11:18,
2 Corinthians 6:17, Galatians 1:8, Galatians 4:14, Philippians 1:1, Philippians
3:3, Philippians 3:5, 2 Thessalonians 1:7, 2 Timothy 1:3, 2 Timothy 3:6, 2
Timothy 3:16, Philemon 1:13, 1 Peter 3:6, 2 Peter 1:9, 2 Peter 2:19, 1 John
4:9, Revelation 2:11, Revelation 4:9, Revelation 18:15, Genesis 1:31, Genesis
13:8, Genesis 14:9, Genesis 20:11, Genesis 26:25, Genesis 27:4, Genesis 28:17,
Genesis 39:15, Genesis 43:26, Genesis 49:7, Exodus 10:11, Exodus 18:20, Exodus
29:35, Exodus 31:10, Exodus 36:15, Exodus 37:8, Exodus 39:23, Exodus 39:43,
Leviticus 4:9, Leviticus 7:7, Leviticus 8:14, Leviticus 13:46, Leviticus 15:22,
Leviticus 16:3, Leviticus 16:26, Leviticus 22:11, Leviticus 23:16, Leviticus
27:26, Numbers 3:47, Numbers 9:19, Numbers 15:23, Numbers 16:28, Numbers 18:31,
Numbers 20:14, Numbers 29:9, Deuteronomy 2:6, Deuteronomy 2:28, Deuteronomy
2:34, Deuteronomy 3:10, Deuteronomy 6:17, Deuteronomy 29:5, Deuteronomy 32:25,
Joshua 11:1, Joshua 13:4, Joshua 15:47, Joshua 21:3, Joshua 22:12, Judges 1:4,
Judges 5:19, Judges 8:19, Judges 9:9, Judges 10:12, Judges 10:15, Judges 13:2,
Judges 15:16, Judges 16:6, Ruth 2:4, 1 Samuel 2:17, 1 Samuel 6:20, 1 Samuel
18:18, 1 Samuel 25:40, 1 Samuel 29:5, 1 Samuel 30:3, 2 Samuel 7:21, 2 Samuel
18:7, 2 Samuel 19:31, 2 Samuel 24:6, 1 Kings 1:32, 1 Kings 2:11, 1 Kings 2:40,
1 Kings 3:17, 1 Kings 4:28, 1 Kings 11:41, 1 Kings 22:27, 2 Kings 4:36, 2 Kings
5:24, 2 Kings 19:11, 2 Kings 25:5, 2 Kings 25:18, 1 Chronicles 6:57, 1
Chronicles 9:9, 1 Chronicles 9:44, 1 Chronicles 10:14, 1 Chronicles 27:30, 2
Chronicles 7:13, 2 Chronicles 17:10, 2 Chronicles 21:1, 2 Chronicles 33:12,
Nehemiah 7:1, Nehemiah 11:13, Esther 3:14, Esther 5:3, Esther 6:14, Esther
8:12, Job 24:5, Job 24:18, Psalms 1:1, Psalms 35:4, Psalms 51:19, Psalms 77:2,
Psalms 106:47, Proverbs 27:13, Isaiah 5:29, Isaiah 21:11, Isaiah 21:17, Isaiah
24:15, Isaiah 24:22, Isaiah 26:5, Isaiah 30:8, Isaiah 37:11, Isaiah 41:23,
Isaiah 43:4, Isaiah 51:19, Isaiah 65:10, Jeremiah 20:1, Jeremiah 23:34,
Jeremiah 39:17, Jeremiah 48:28, Jeremiah 49:31, Ezekiel 1:15, Ezekiel 19:7,
Ezekiel 20:42, Ezekiel 27:34, Ezekiel 44:10, Daniel 2:15, Daniel 5:14, Amos
7:16, Jonah 1:4, Jonah 4:9, Zechariah 3:10, Zechariah 13:4, Malachi 1:7,
Matthew 6:23, Matthew 7:6, Matthew 7:13, Matthew 9:22, Matthew 12:44, Matthew
17:24, Matthew 19:8, Matthew 26:13, Matthew 27:17, Mark 5:33, Mark 6:4, Mark
7:11, Mark 9:35, Mark 9:45, Mark 14:13, Mark 14:27, Luke 5:26, Luke 5:30, Luke
13:11, Luke 13:16, Luke 18:43, Luke 20:26, Luke 22:60, Luke 23:48, Luke 24:5,
Luke 24:23, John 3:11, John 6:10, John 11:42, John 11:55, Acts 2:36, Acts 2:37,
Acts 14:20, Acts 14:21, Acts 15:16, Acts 23:1, Acts 24:27, Acts 28:3, Romans
9:29, Romans 10:15, Romans 11:8, Romans 14:8, 1 Corinthians 3:18, 1 Corinthians
7:22, 1 Corinthians 9:22, 1 Corinthians 11:17, 1 Corinthians 14:25, 1
Corinthians 14:35, 1 Corinthians 15:41, 2 Corinthians 7:15, Philippians 2:17,
Colossians 1:22, Colossians 2:16, 1 Thessalonians 1:1, 1 Thessalonians 4:14, 1
Timothy 4:16, Titus 2:5, Hebrews 4:14, Hebrews 9:22, Hebrews 13:7, James 1:13,
Jude 1:1, Revelation 3:21, Revelation 5:1, Revelation 7:12, Revelation 13:16,
Revelation 16:5, Revelation 22:3, Genesis 2:2, Genesis 14:16, Genesis 23:2,
Genesis 24:37, Genesis 24:41, Genesis 24:61, Genesis 25:9, Genesis 25:21,
Genesis 27:15, Genesis 30:2, Genesis 32:12, Genesis 35:5, Genesis 39:19, Exodus
5:23, Exodus 21:32, Exodus 22:14, Exodus 25:11, Exodus 27:2, Leviticus 3:10,
Leviticus 3:15, Leviticus 7:9, Leviticus 10:13, Leviticus 11:22, Leviticus
14:4, Leviticus 14:23, Leviticus 14:42, Leviticus 18:11, Leviticus 19:17,
Leviticus 27:7, Numbers 4:34, Numbers 9:11, Numbers 14:45, Numbers 15:5,
Numbers 16:11, Numbers 35:11, Deuteronomy 6:25, Deuteronomy 9:27, Deuteronomy
16:13, Deuteronomy 17:3, Deuteronomy 22:4, Deuteronomy 23:7, Joshua 9:15,
Joshua 10:26, Joshua 22:21, Judges 3:6, Judges 6:3, Judges 6:32, Judges 21:18,
Ruth 1:7, Ruth 3:11, Ruth 3:17, 1 Samuel 2:34, 1 Samuel 5:5, 1 Samuel 10:10, 1
Samuel 12:18, 1 Samuel 14:10, 1 Samuel 20:19, 1 Samuel 20:38, 2 Samuel 5:13, 2
Samuel 15:7, 2 Samuel 18:23, 2 Samuel 20:11, 2 Samuel 24:18, 1 Kings 8:61, 1
Kings 10:1, 1 Kings 13:1, 1 Kings 14:18, 1 Kings 14:29, 1 Kings 15:17, 1 Kings
15:25, 1 Kings 16:12, 1 Kings 17:16, 1 Kings 18:34, 1 Kings 19:7, 1 Kings
21:21, 1 Kings 22:12, 2 Kings 3:4, 2 Kings 6:9, 2 Kings 15:6, 2 Kings 17:1, 2
Kings 17:33, 1 Chronicles 2:24, 1 Chronicles 3:19, 1 Chronicles 6:77, 1
Chronicles 9:8, 1 Chronicles 12:29, 1 Chronicles 12:37, 1 Chronicles 15:15, 2
Chronicles 1:15, 2 Chronicles 4:11, 2 Chronicles 7:18, 2 Chronicles 8:7, 2
Chronicles 18:11, 2 Chronicles 30:19, 2 Chronicles 36:3, Ezra 6:1, Nehemiah
3:20, Nehemiah 5:2, Nehemiah 8:5, Nehemiah 9:2, Nehemiah 12:29, Job 10:15,
Psalms 31:22, Psalms 39:6, Psalms 48:8, Psalms 50:23, Psalms 59:12, Psalms
68:4, Psalms 133:2, Psalms 142:7, Psalms 143:12, Ecclesiastes 9:14, Song of
Solomon 3:10, Isaiah 7:23, Isaiah 13:5, Isaiah 14:32, Isaiah 21:16, Isaiah
33:6, Isaiah 43:17, Isaiah 44:20, Isaiah 48:13, Isaiah 52:9, Isaiah 59:5,
Isaiah 59:11, Isaiah 66:11, Jeremiah 1:5, Jeremiah 2:11, Jeremiah 4:13,
Jeremiah 6:3, Jeremiah 7:11, Jeremiah 7:27, Jeremiah 18:8, Jeremiah 22:17,
Jeremiah 25:4, Jeremiah 44:13, Jeremiah 48:17, Jeremiah 49:26, Jeremiah 51:26,
Ezekiel 1:7, Ezekiel 27:15, Ezekiel 29:13, Ezekiel 30:5, Ezekiel 31:3, Ezekiel
31:5, Ezekiel 31:10, Ezekiel 36:25, Ezekiel 39:20, Ezekiel 43:23, Daniel 8:6,
Hosea 10:10, Obadiah 1:4, Nahum 2:12, Zechariah 3:1, Zechariah 12:5, Malachi
2:12, Matthew 7:27, Matthew 8:13, Matthew 23:30, Matthew 24:45, Mark 8:1, Mark
9:22, Mark 12:30, Mark 12:44, Mark 16:9, Luke 1:66, Luke 2:39, Luke 4:20, Luke
4:27, Luke 7:19, Luke 7:29, Luke 16:31, Luke 17:10, Luke 18:16, Luke 18:39,
Luke 19:43, Luke 23:7, John 4:53, John 8:21, John 8:26, John 11:48, Acts 8:7,
Acts 10:7, Acts 11:23, Acts 13:31, Acts 17:19, Acts 17:21, Acts 17:34, Acts
18:7, Acts 21:33, Acts 22:26, Acts 25:20, Acts 26:7, Acts 28:11, Romans 3:26,
Romans 8:39, 1 Corinthians 12:8, 1 Corinthians 12:12, 1 Corinthians 12:15, 1
Corinthians 12:24, Galatians 1:6, Galatians 2:17, Ephesians 3:10, Colossians
2:1, 1 Timothy 1:10, 1 Timothy 6:5, 2 Timothy 2:14, Titus 2:12, Hebrews 2:2,
Hebrews 4:1, Hebrews 6:10, James 1:6, James 5:20, 1 John 3:23, Jude 1:8,
Revelation 9:15, Revelation 14:20, Revelation 16:17, Genesis 10:25, Genesis
17:5, Genesis 22:5, Genesis 23:4, Genesis 24:63, Genesis 27:9, Genesis 27:40,
Genesis 31:5, Genesis 31:36, Genesis 31:53, Genesis 36:14, Genesis 39:4,
Genesis 40:14, Genesis 44:33, Genesis 47:12, Exodus 13:12, Exodus 16:20, Exodus
18:18, Exodus 20:20, Exodus 21:13, Exodus 32:18, Exodus 34:16, Exodus 34:27,
Exodus 38:25, Leviticus 3:4, Leviticus 7:25, Leviticus 9:5, Leviticus 15:20,
Leviticus 16:5, Leviticus 19:13, Leviticus 22:14, Leviticus 25:44, Numbers
4:23, Numbers 4:45, Numbers 18:12, Numbers 24:21, Deuteronomy 1:42, Deuteronomy
4:27, Deuteronomy 6:22, Deuteronomy 10:15, Deuteronomy 14:28, Deuteronomy 21:6,
Deuteronomy 26:1, Deuteronomy 26:8, Joshua 4:19, Joshua 8:34, Joshua 10:21,
Joshua 19:13, Joshua 21:7, Judges 3:2, Judges 21:3, Ruth 2:21, Ruth 3:4, 1
Samuel 1:20, 1 Samuel 4:16, 1 Samuel 9:14, 1 Samuel 15:1, 1 Samuel 25:33, 1
Samuel 28:17, 1 Samuel 29:11, 2 Samuel 2:15, 2 Samuel 2:25, 2 Samuel 23:12, 1
Kings 1:21, 1 Kings 2:35, 2 Kings 4:30, 2 Kings 14:3, 2 Kings 15:21, 2 Kings
20:11, 2 Kings 21:1, 1 Chronicles 3:2, 1 Chronicles 7:9, 1 Chronicles 8:13, 1
Chronicles 27:27, 2 Chronicles 7:16, 2 Chronicles 13:5, Ezra 4:1, Ezra 10:15,
Nehemiah 2:15, Esther 6:8, Job 42:10, Psalms 2:12, Psalms 19:4, Psalms 30:5,
Psalms 71:20, Psalms 85:8, Psalms 86:17, Psalms 133:3, Proverbs 30:14, Isaiah
7:14, Isaiah 11:3, Isaiah 13:19, Isaiah 41:14, Isaiah 49:2, Isaiah 59:14,
Isaiah 64:11, Isaiah 65:14, Isaiah 65:18, Jeremiah 2:35, Jeremiah 3:5, Jeremiah
3:7, Jeremiah 6:13, Jeremiah 25:7, Jeremiah 27:19, Jeremiah 32:39, Jeremiah
35:3, Jeremiah 37:18, Jeremiah 46:13, Jeremiah 51:3, Jeremiah 52:24, Ezekiel
1:19, Ezekiel 13:17, Ezekiel 18:27, Ezekiel 24:3, Ezekiel 27:18, Ezekiel 36:10,
Ezekiel 38:18, Ezekiel 39:19, Ezekiel 40:28, Ezekiel 41:5, Ezekiel 41:9,
Ezekiel 44:6, Ezekiel 45:14, Daniel 2:8, Daniel 2:34, Daniel 4:20, Daniel 8:9,
Daniel 11:44, Hosea 5:7, Hosea 7:14, Joel 1:6, Amos 7:14, Obadiah 1:17, Jonah
3:5, Micah 4:6, Micah 6:15, Micah 7:19, Malachi 3:2, Matthew 5:18, Matthew
6:18, Matthew 10:35, Matthew 10:37, Matthew 12:10, Matthew 12:11, Matthew
16:12, Matthew 18:18, Matthew 23:29, Matthew 24:22, Matthew 25:9, Matthew
25:45, Matthew 26:69, Matthew 27:6, Mark 3:18, Mark 4:38, Mark 6:45, Mark
10:23, Mark 10:35, Mark 11:27, Mark 12:17, Luke 2:37, Luke 5:18, Luke 6:29,
Luke 7:28, Luke 8:32, Luke 16:10, John 1:50, John 3:36, John 6:19, John 10:36,
John 11:33, John 13:5, John 13:21, John 16:2, John 18:38, Acts 7:58, Acts 13:7,
Acts 15:17, Acts 15:39, Acts 17:25, Acts 19:25, Acts 25:25, Romans 5:18, Romans
7:5, Romans 9:3, Romans 9:30, 1 Corinthians 7:25, 1 Corinthians 11:3, 1
Corinthians 15:3, 2 Corinthians 7:5, Galatians 1:16, Galatians 3:22,
Philippians 1:14, Philippians 3:21, 1 Thessalonians 4:10, 1 Timothy 6:19, 1
Timothy 6:20, 2 Timothy 2:15, 2 Timothy 2:22, Philemon 1:14, Hebrews 9:8,
Hebrews 11:31, Hebrews 11:32, James 4:13, Revelation 1:17, Revelation 3:17,
Genesis 2:21, Genesis 6:18, Genesis 12:3, Genesis 14:15, Genesis 18:14, Genesis
20:8, Genesis 28:22, Genesis 29:15, Genesis 31:24, Genesis 32:22, Genesis 41:3,
Genesis 41:24, Genesis 41:49, Genesis 41:51, Genesis 45:6, Genesis 46:3,
Genesis 47:30, Genesis 49:8, Exodus 1:11, Exodus 12:35, Exodus 14:29, Exodus
16:22, Exodus 23:33, Exodus 24:10, Exodus 32:24, Exodus 35:30, Exodus 36:9,
Exodus 40:5, Exodus 40:35, Leviticus 8:9, Leviticus 9:10, Leviticus 15:12,
Leviticus 16:32, Leviticus 18:10, Leviticus 18:24, Leviticus 19:29, Leviticus
24:7, Leviticus 25:27, Leviticus 25:41, Leviticus 27:11, Numbers 2:12, Numbers
8:24, Numbers 17:9, Numbers 22:20, Numbers 22:26, Numbers 32:2, Deuteronomy
13:7, Deuteronomy 26:7, Deuteronomy 28:21, Deuteronomy 28:39, Deuteronomy
29:28, Deuteronomy 30:4, Joshua 15:12, Joshua 22:3, Joshua 24:30, Judges 3:13,
Judges 8:16, Judges 11:23, 1 Samuel 3:11, 1 Samuel 10:27, 1 Samuel 26:10, 2
Samuel 1:13, 2 Samuel 5:5, 2 Samuel 13:29, 2 Samuel 13:33, 1 Kings 1:20, 1
Kings 7:26, 1 Kings 7:48, 1 Kings 8:22, 1 Kings 10:25, 1 Kings 16:8, 1 Kings
22:16, 2 Kings 15:31, 2 Kings 15:38, 2 Kings 17:28, 2 Kings 18:13, 2 Kings
19:19, 2 Kings 24:5, 1 Chronicles 1:19, 1 Chronicles 4:4, 1 Chronicles 15:26, 1
Chronicles 26:17, 1 Chronicles 26:25, 1 Chronicles 27:6, 2 Chronicles 7:9, 2
Chronicles 18:15, 2 Chronicles 20:29, 2 Chronicles 24:1, 2 Chronicles 28:26, 2
Chronicles 32:24, Nehemiah 4:15, Nehemiah 9:12, Nehemiah 9:13, Job 32:3, Psalms
52:7, Psalms 71:22, Psalms 84:11, Psalms 90:2, Proverbs 19:7, Ecclesiastes
3:18, Ecclesiastes 4:4, Ecclesiastes 9:5, Ecclesiastes 12:9, Isaiah 30:12,
Isaiah 35:9, Isaiah 36:1, Isaiah 38:11, Isaiah 51:2, Isaiah 52:10, Jeremiah
2:34, Jeremiah 4:26, Jeremiah 7:16, Jeremiah 8:8, Jeremiah 15:18, Jeremiah
23:27, Jeremiah 27:4, Jeremiah 31:3, Jeremiah 38:26, Jeremiah 51:31, Jeremiah
51:50, Jeremiah 52:9, Lamentations 4:19, Ezekiel 1:23, Ezekiel 2:8, Ezekiel
18:16, Ezekiel 24:7, Ezekiel 27:32, Ezekiel 34:30, Ezekiel 37:10, Ezekiel
46:13, Ezekiel 47:16, Ezekiel 48:16, Daniel 8:15, Daniel 8:26, Daniel 11:12,
Hosea 10:4, Joel 1:2, Joel 1:11, Amos 5:19, Jonah 2:2, Habakkuk 3:3, Zechariah
7:10, Malachi 2:3, Matthew 13:5, Matthew 18:7, Matthew 27:42, Matthew 27:60,
Mark 10:24, Mark 12:41, Mark 15:16, Mark 15:44, Luke 4:43, Luke 8:2, Luke
12:56, Luke 21:9, Luke 22:11, Luke 22:25, Luke 24:17, Luke 24:32, Luke 24:39,
John 4:21, John 6:15, John 6:45, John 7:42, John 8:39, John 19:10, Acts 1:14,
Acts 2:6, Acts 2:30, Acts 8:22, Acts 10:24, Acts 12:9, Acts 19:40, Acts 22:13,
Acts 25:17, Acts 26:13, Acts 27:20, Acts 28:2, Romans 5:21, Romans 7:2, Romans
7:8, Romans 9:4, Romans 9:5, Romans 10:6, 1 Corinthians 12:17, 1 Corinthians
14:34, 1 Corinthians 15:34, 2 Corinthians 1:11, 2 Corinthians 5:20, 2
Corinthians 9:12, Colossians 1:25, 1 Thessalonians 4:13, Titus 1:5, Philemon
1:7, Hebrews 12:7, Hebrews 13:5, James 4:5, James 4:14, 1 Peter 1:22, 1 John
3:17, Revelation 15:7, Genesis 7:21, Genesis 17:1, Genesis 17:10, Genesis
21:10, Genesis 23:19, Genesis 30:27, Genesis 30:37, Genesis 31:16, Genesis
32:28, Genesis 35:29, Genesis 37:3, Genesis 41:44, Genesis 45:21, Genesis 47:3,
Genesis 48:6, Genesis 48:21, Exodus 4:28, Exodus 6:20, Exodus 9:11, Exodus
16:31, Exodus 18:5, Exodus 18:9, Exodus 18:25, Exodus 24:17, Exodus 26:11,
Exodus 36:32, Exodus 38:31, Exodus 39:33, Leviticus 13:53, Leviticus 19:16,
Leviticus 26:8, Numbers 22:13, Numbers 23:10, Numbers 28:20, Numbers 35:17,
Numbers 35:18, Deuteronomy 4:43, Deuteronomy 5:25, Deuteronomy 8:14,
Deuteronomy 12:29, Deuteronomy 15:15, Deuteronomy 17:17, Deuteronomy 23:24,
Deuteronomy 29:11, Deuteronomy 34:8, Joshua 2:4, Joshua 2:13, Joshua 6:11,
Joshua 15:21, Joshua 23:2, Joshua 23:9, Judges 6:38, Judges 8:6, Judges 8:34,
Ruth 1:17, 1 Samuel 12:22, 1 Samuel 19:9, 1 Samuel 23:12, 1 Samuel 24:15, 1
Samuel 30:2, 1 Samuel 30:11, 2 Samuel 19:27, 1 Kings 7:24, 1 Kings 8:52, 1
Kings 10:11, 1 Kings 11:9, 1 Kings 13:29, 1 Kings 20:20, 2 Kings 1:15, 2 Kings
3:12, 2 Kings 6:29, 2 Kings 18:34, 1 Chronicles 6:61, 1 Chronicles 9:11, 1
Chronicles 11:14, 2 Chronicles 3:16, 2 Chronicles 18:26, 2 Chronicles 22:10, 2
Chronicles 25:21, 2 Chronicles 33:23, Ezra 1:8, Ezra 4:6, Ezra 10:10, Nehemiah
1:4, Nehemiah 9:36, Esther 1:7, Job 3:6, Job 21:17, Psalms 5:9, Psalms 10:9,
Psalms 40:6, Psalms 52:5, Psalms 69:20, Psalms 95:10, Psalms 143:8,
Ecclesiastes 6:8, Ecclesiastes 9:6, Song of Solomon 6:6, Isaiah 5:26, Isaiah
7:22, Isaiah 8:22, Isaiah 19:25, Isaiah 23:8, Isaiah 26:20, Isaiah 29:9, Isaiah
46:13, Isaiah 51:10, Isaiah 54:11, Isaiah 59:15, Jeremiah 10:12, Jeremiah 22:8,
Jeremiah 23:39, Jeremiah 25:6, Jeremiah 33:14, Jeremiah 36:28, Jeremiah 38:15,
Jeremiah 41:13, Jeremiah 50:24, Jeremiah 50:35, Lamentations 4:12, Ezekiel
5:14, Ezekiel 22:19, Ezekiel 27:12, Ezekiel 30:7, Ezekiel 38:23, Ezekiel 43:24,
Ezekiel 46:4, Hosea 3:4, Joel 1:20, Jonah 1:13, Nahum 2:2, Zechariah 4:6,
Zechariah 14:15, Matthew 18:25, Matthew 26:75, Mark 9:26, Mark 14:58, Mark
15:39, Mark 16:1, Luke 2:51, Luke 5:21, Luke 5:29, Luke 8:22, Luke 8:41, Luke
9:49, Luke 13:35, Luke 19:5, Luke 21:11, Luke 24:10, Luke 24:21, John 9:15,
John 9:24, John 12:26, John 16:23, Acts 3:21, Acts 6:14, Acts 10:42, Acts
11:12, Acts 13:36, Acts 21:29, Acts 26:3, Acts 27:41, Romans 4:18, Romans 5:12,
Romans 9:25, Romans 14:23, 1 Corinthians 1:20, 1 Corinthians 10:11, 1
Corinthians 12:16, 1 Corinthians 13:12, 1 Corinthians 14:19, 2 Corinthians
8:10, 2 Corinthians 8:14, Galatians 1:14, Ephesians 1:17, Philippians 2:27,
Colossians 3:5, 2 Thessalonians 3:14, 2 Timothy 4:10, Titus 1:3, Hebrews 8:13,
Hebrews 11:11, Hebrews 12:26, James 3:17, 1 Peter 1:1, 1 Peter 2:21, 1 Peter
4:12, 2 Peter 2:14, 2 Peter 2:15, 2 Peter 3:15, 1 John 2:28, Revelation 13:5,
Genesis 24:8, Genesis 28:18, Genesis 32:4, Genesis 34:16, Genesis 37:4, Genesis
40:17, Genesis 41:43, Genesis 44:2, Exodus 4:1, Exodus 9:15, Exodus 18:19,
Exodus 19:1, Exodus 19:20, Exodus 29:2, Exodus 29:23, Exodus 30:8, Exodus
36:38, Exodus 39:8, Exodus 39:30, Leviticus 13:36, Leviticus 15:18, Leviticus
18:26, Leviticus 22:9, Leviticus 23:6, Leviticus 25:2, Leviticus 25:49, Numbers
10:11, Numbers 18:27, Numbers 23:11, Numbers 33:9, Deuteronomy 5:32,
Deuteronomy 8:11, Deuteronomy 10:3, Deuteronomy 15:21, Deuteronomy 20:16,
Deuteronomy 27:19, Deuteronomy 30:13, Deuteronomy 32:2, Deuteronomy 32:6,
Joshua 2:7, Joshua 3:14, Joshua 7:18, Joshua 7:23, Joshua 8:27, Joshua 9:19,
Joshua 19:22, Joshua 22:15, Joshua 24:4, Ruth 3:16, Ruth 3:18, 1 Samuel 14:2, 1
Samuel 22:19, 1 Samuel 23:20, 1 Samuel 24:19, 1 Samuel 26:2, 1 Samuel 30:9, 2
Samuel 15:22, 2 Samuel 19:2, 2 Samuel 21:13, 1 Kings 3:8, 1 Kings 3:14, 1 Kings
5:12, 1 Kings 6:29, 1 Kings 8:42, 1 Kings 11:1, 1 Kings 13:12, 1 Kings 15:4, 1
Kings 17:21, 1 Kings 22:23, 2 Kings 11:20, 2 Kings 12:17, 2 Kings 15:7, 2 Kings
18:35, 1 Chronicles 8:38, 1 Chronicles 15:13, 2 Chronicles 1:10, 2 Chronicles
21:11, 2 Chronicles 28:19, 2 Chronicles 30:23, Ezra 2:63, Ezra 6:7, Ezra 7:18,
Ezra 8:20, Nehemiah 1:1, Nehemiah 9:21, Nehemiah 13:14, Esther 9:20, Job 2:7,
Job 36:16, Psalms 5:7, Psalms 7:9, Psalms 28:7, Psalms 39:11, Psalms 43:2,
Psalms 59:13, Psalms 71:3, Psalms 72:15, Proverbs 30:19, Song of Solomon 2:7,
Song of Solomon 2:13, Song of Solomon 3:5, Song of Solomon 4:10, Song of
Solomon 4:11, Isaiah 6:2, Isaiah 16:12, Isaiah 20:3, Isaiah 32:11, Isaiah
33:18, Isaiah 38:15, Isaiah 48:3, Isaiah 50:9, Isaiah 52:4, Isaiah 56:12,
Jeremiah 4:9, Jeremiah 4:16, Jeremiah 9:13, Jeremiah 17:20, Jeremiah 17:22,
Jeremiah 18:12, Jeremiah 18:13, Jeremiah 22:7, Jeremiah 23:24, Jeremiah 33:8,
Jeremiah 41:12, Jeremiah 41:14, Jeremiah 42:21, Jeremiah 48:29, Jeremiah 51:15,
Jeremiah 51:43, Jeremiah 52:8, Ezekiel 3:12, Ezekiel 3:14, Ezekiel 7:16,
Ezekiel 9:11, Ezekiel 12:14, Ezekiel 17:5, Ezekiel 18:22, Ezekiel 20:14,
Ezekiel 20:33, Ezekiel 21:27, Ezekiel 22:14, Ezekiel 23:3, Ezekiel 27:7,
Ezekiel 27:31, Ezekiel 27:35, Ezekiel 30:26, Ezekiel 40:23, Ezekiel 40:26,
Ezekiel 48:31, Daniel 1:15, Daniel 2:46, Daniel 8:10, Daniel 10:9, Daniel 12:2,
Joel 1:7, Joel 3:12, Amos 6:7, Jonah 2:3, Jonah 3:6, Micah 3:9, Micah 6:4,
Nahum 3:18, Zephaniah 1:10, Haggai 2:6, Zechariah 1:14, Zechariah 9:16, Matthew
8:8, Matthew 13:57, Matthew 24:14, Matthew 24:15, Matthew 24:24, Matthew 25:22,
Mark 1:7, Mark 1:16, Mark 5:42, Mark 7:15, Mark 9:38, Mark 10:52, Mark 14:60,
Luke 3:19, Luke 4:6, Luke 9:54, Luke 10:7, Luke 10:19, Luke 11:36, John 18:39,
Acts 2:23, Acts 3:22, Acts 4:33, Acts 11:20, Acts 16:36, Acts 17:4, Acts 19:34,
Romans 1:7, Romans 5:5, Romans 11:26, Romans 16:7, 1 Corinthians 6:12, 1
Corinthians 8:4, 1 Corinthians 9:9, 1 Corinthians 15:40, 2 Corinthians 10:13, 2
Corinthians 11:15, 2 Corinthians 11:20, Galatians 3:14, Galatians 3:28,
Galatians 4:29, Galatians 5:11, Ephesians 2:15, Ephesians 3:8, Colossians 2:5,
Colossians 4:9, 1 Timothy 1:13, 1 Timothy 3:13, 2 Timothy 4:1, 2 Timothy 4:18,
Hebrews 4:6, Hebrews 7:16, Hebrews 8:3, Hebrews 12:10, Hebrews 13:4, 1 Peter
1:18, 2 Peter 3:1, 2 Peter 3:18, Revelation 16:1, Revelation 18:16, Genesis
13:16, Genesis 15:1, Genesis 17:14, Genesis 20:14, Genesis 23:8, Genesis 29:7,
Genesis 31:55, Genesis 35:7, Genesis 43:12, Genesis 46:27, Genesis 50:23,
Exodus 8:31, Exodus 9:8, Exodus 23:2, Exodus 30:9, Exodus 34:3, Exodus 39:7,
Exodus 39:25, Leviticus 11:29, Leviticus 25:25, Numbers 7:2, Numbers 8:15,
Numbers 11:4, Numbers 14:7, Numbers 14:30, Numbers 24:20, Numbers 25:15,
Numbers 26:29, Numbers 26:63, Deuteronomy 3:1, Deuteronomy 24:18, Deuteronomy
32:11, Deuteronomy 33:13, Joshua 21:41, Judges 2:3, Judges 4:13, Judges 8:35,
Judges 9:23, Judges 9:29, Judges 9:57, Judges 15:10, 1 Samuel 8:22, 1 Samuel
12:6, 1 Samuel 17:2, 1 Samuel 18:1, 1 Samuel 23:22, 1 Samuel 25:11, 1 Samuel
27:12, 1 Samuel 31:2, 2 Samuel 1:22, 2 Samuel 6:6, 2 Samuel 6:18, 2 Samuel
10:12, 2 Samuel 14:29, 2 Samuel 20:23, 1 Kings 2:13, 1 Kings 2:34, 1 Kings
9:13, 1 Kings 12:9, 1 Kings 19:6, 1 Kings 22:49, 2 Kings 5:25, 2 Kings 12:1, 2
Kings 18:28, 2 Kings 25:7, 1 Chronicles 4:40, 1 Chronicles 7:8, 1 Chronicles
10:2, 1 Chronicles 12:2, 1 Chronicles 22:11, 2 Chronicles 5:5, 2 Chronicles
9:24, 2 Chronicles 10:9, 2 Chronicles 17:5, 2 Chronicles 29:28, Nehemiah 11:5,
Nehemiah 11:24, Nehemiah 12:46, Nehemiah 13:11, Esther 1:13, Esther 9:17,
Esther 9:29, Job 42:15, Psalms 4:1, Psalms 37:28, Psalms 47:9, Psalms 79:2,
Psalms 81:7, Psalms 96:10, Psalms 102:26, Ecclesiastes 2:12, Isaiah 5:11,
Isaiah 6:1, Isaiah 8:18, Isaiah 10:27, Isaiah 13:9, Isaiah 13:14, Isaiah 24:20,
Isaiah 32:15, Isaiah 33:16, Isaiah 42:19, Isaiah 43:6, Isaiah 45:6, Jeremiah
1:13, Jeremiah 6:22, Jeremiah 12:10, Jeremiah 14:7, Jeremiah 23:18, Jeremiah
23:35, Jeremiah 25:28, Jeremiah 34:11, Jeremiah 37:2, Jeremiah 46:22, Jeremiah
50:28, Jeremiah 51:28, Lamentations 4:7, Ezekiel 3:9, Ezekiel 3:11, Ezekiel
16:6, Ezekiel 18:25, Ezekiel 28:14, Ezekiel 32:9, Ezekiel 36:8, Ezekiel 46:6,
Ezekiel 48:29, Daniel 1:3, Daniel 8:22, Hosea 7:6, Hosea 13:10, Amos 2:10, Amos
9:15, Micah 1:4, Nahum 3:7, Habakkuk 1:3, Zephaniah 1:8, Haggai 2:17, Zechariah
8:16, Zechariah 14:17, Malachi 2:10, Malachi 4:3, Matthew 10:21, Matthew 17:9,
Mark 6:21, Mark 8:19, Mark 13:1, Mark 14:18, Mark 15:20, Mark 15:41, Luke 1:36,
Luke 2:22, Luke 4:22, Luke 8:49, Luke 9:36, Luke 9:43, Luke 15:22, Luke 20:35,
Luke 22:59, John 6:42, John 8:33, John 12:49, John 19:39, John 21:2, John 21:8,
Acts 2:46, Acts 6:12, Acts 9:8, Acts 12:25, Acts 13:6, Acts 16:12, Acts 19:32,
Acts 21:32, Acts 24:24, Acts 27:10, Romans 2:27, Romans 7:1, Romans 8:30,
Romans 10:20, Romans 12:19, Romans 15:20, 1 Corinthians 4:10, 1 Corinthians
5:7, 1 Corinthians 13:11, Philippians 3:12, Philippians 4:6, Colossians 1:18, 2
Thessalonians 1:12, 1 Timothy 1:3, Hebrews 1:2, Hebrews 2:4, Hebrews 7:1,
Hebrews 10:25, Hebrews 11:17, James 1:21, James 2:16, 1 Peter 5:9, Revelation
12:11, Revelation 18:6, Revelation 22:15, Genesis 1:7, Genesis 2:23, Genesis
3:3, Genesis 3:7, Genesis 11:3, Genesis 24:11, Genesis 32:19, Genesis 33:18,
Genesis 33:19, Genesis 39:20, Genesis 43:5, Genesis 44:30, Genesis 45:22,
Genesis 46:20, Genesis 49:4, Exodus 10:23, Exodus 14:16, Exodus 23:22, Exodus
24:1, Exodus 26:25, Exodus 32:26, Exodus 35:23, Exodus 36:17, Exodus 39:29,
Exodus 40:10, Exodus 40:33, Leviticus 14:3, Leviticus 15:29, Leviticus 19:6,
Leviticus 23:34, Leviticus 24:14, Numbers 3:8, Numbers 4:46, Numbers 8:11,
Numbers 10:22, Numbers 10:35, Numbers 16:32, Numbers 31:48, Deuteronomy 2:23,
Deuteronomy 3:6, Deuteronomy 4:29, Deuteronomy 12:25, Deuteronomy 16:7,
Deuteronomy 18:5, Deuteronomy 28:40, Deuteronomy 29:7, Joshua 6:16, Joshua
15:18, Joshua 21:43, Joshua 22:34, Joshua 24:9, Judges 1:9, Judges 10:17,
Judges 11:3, Judges 14:2, Judges 20:37, 1 Samuel 2:3, 1 Samuel 10:22, 1 Samuel
22:9, 2 Samuel 5:12, 2 Samuel 7:18, 2 Samuel 11:3, 2 Samuel 18:19, 2 Samuel
19:14, 2 Samuel 21:3, 1 Kings 5:18, 1 Kings 8:18, 1 Kings 12:4, 1 Kings 13:17,
1 Kings 21:16, 1 Kings 22:20, 2 Kings 5:27, 2 Kings 7:3, 2 Kings 14:7, 2 Kings
14:26, 2 Kings 15:26, 2 Kings 18:24, 2 Kings 23:18, 2 Kings 25:26, 1 Chronicles
5:14, 1 Chronicles 5:23, 1 Chronicles 8:6, 1 Chronicles 17:16, 1 Chronicles
23:4, 2 Chronicles 6:8, 2 Chronicles 8:15, 2 Chronicles 10:4, 2 Chronicles
13:13, 2 Chronicles 13:14, 2 Chronicles 18:30, 2 Chronicles 27:7, Ezra 2:69,
Ezra 7:20, Nehemiah 13:24, Job 31:35, Psalms 15:5, Psalms 18:6, Psalms 45:4,
Psalms 68:16, Psalms 68:27, Proverbs 23:35, Ecclesiastes 2:14, Ecclesiastes
8:16, Song of Solomon 5:7, Isaiah 7:18, Isaiah 9:10, Isaiah 19:4, Isaiah 21:1,
Isaiah 29:10, Isaiah 34:13, Isaiah 36:9, Isaiah 36:13, Isaiah 36:20, Isaiah
40:21, Isaiah 51:18, Isaiah 52:8, Isaiah 54:3, Isaiah 57:5, Isaiah 63:12,
Jeremiah 2:15, Jeremiah 5:12, Jeremiah 9:1, Jeremiah 10:11, Jeremiah 11:15,
Jeremiah 25:18, Jeremiah 28:8, Jeremiah 31:6, Jeremiah 36:16, Jeremiah 36:27,
Jeremiah 40:16, Jeremiah 43:13, Jeremiah 49:8, Jeremiah 49:24, Jeremiah 51:7,
Ezekiel 13:5, Ezekiel 25:17, Ezekiel 31:11, Ezekiel 32:31, Ezekiel 38:9,
Ezekiel 42:5, Daniel 3:13, Daniel 6:2, Hosea 8:10, Hosea 11:12, Hosea 14:8,
Micah 1:8, Nahum 2:4, Zephaniah 1:14, Zechariah 11:2, Matthew 2:15, Matthew
5:16, Matthew 5:33, Matthew 8:10, Matthew 8:16, Matthew 9:20, Matthew 9:33,
Matthew 20:22, Matthew 22:24, Matthew 24:26, Mark 9:5, Mark 12:36, Mark 14:65,
Mark 15:29, Luke 3:7, Luke 6:1, Luke 6:22, Luke 19:17, Luke 23:46, John 1:48,
John 5:30, John 12:24, John 21:24, Acts 3:6, Acts 7:16, Acts 10:23, Acts 10:39,
Acts 12:23, Acts 21:1, Acts 21:37, Acts 21:38, Romans 1:5, Romans 4:9, Romans
11:20, Romans 14:10, Romans 15:24, 1 Corinthians 5:3, 1 Corinthians 7:15, 1
Corinthians 9:16, 1 Corinthians 14:37, 2 Corinthians 1:9, Galatians 1:9,
Ephesians 5:14, Philippians 1:18, 1 Thessalonians 5:8, 2 Timothy 3:8, Hebrews
12:22, James 3:2, James 5:15, 1 Peter 2:7, 1 Peter 2:24, 1 John 4:17,
Revelation 12:1, Revelation 13:3, Revelation 17:15, Revelation 20:11,
Revelation 21:10, Genesis 1:20, Genesis 13:6, Genesis 16:8, Genesis 18:8,
Genesis 19:4, Genesis 26:8, Genesis 45:9, Genesis 48:9, Genesis 48:10, Exodus
6:23, Exodus 7:5, Exodus 18:7, Exodus 29:26, Exodus 30:23, Exodus 30:37, Exodus
33:9, Leviticus 11:46, Leviticus 14:40, Leviticus 14:53, Leviticus 15:27,
Leviticus 21:17, Leviticus 22:24, Numbers 4:30, Numbers 10:14, Numbers 12:5,
Numbers 23:23, Numbers 24:6, Numbers 27:4, Numbers 35:3, Deuteronomy 8:16,
Deuteronomy 8:20, Deuteronomy 10:17, Deuteronomy 21:19, Deuteronomy 32:5,
Deuteronomy 32:32, Deuteronomy 33:27, Joshua 6:21, Joshua 8:16, Joshua 14:3,
Joshua 19:10, Joshua 19:33, Joshua 21:38, Joshua 22:14, Joshua 24:12, Judges
1:25, Judges 3:7, Judges 5:31, Judges 10:7, Judges 11:25, 1 Samuel 8:5, 1
Samuel 8:18, 1 Samuel 10:23, 1 Samuel 17:3, 1 Samuel 20:9, 1 Samuel 25:20, 1
Samuel 26:1, 2 Samuel 3:25, 2 Samuel 3:28, 2 Samuel 6:11, 2 Samuel 12:1, 2
Samuel 12:13, 2 Samuel 16:9, 2 Samuel 18:25, 2 Samuel 21:5, 1 Kings 12:8, 1
Kings 16:33, 2 Kings 15:2, 2 Kings 18:19, 2 Kings 20:18, 1 Chronicles 2:49, 1
Chronicles 7:23, 1 Chronicles 12:3, 1 Chronicles 26:14, 1 Chronicles 29:15, 2
Chronicles 4:8, 2 Chronicles 14:15, 2 Chronicles 17:11, 2 Chronicles 18:22, 2
Chronicles 34:17, Ezra 4:24, Job 7:21, Psalms 35:8, Psalms 53:6, Psalms 65:5,
Psalms 79:13, Psalms 103:17, Psalms 131:1, Ecclesiastes 6:10, Ecclesiastes
7:28, Song of Solomon 8:11, Isaiah 5:4, Isaiah 7:6, Isaiah 10:18, Isaiah 24:5,
Isaiah 34:5, Isaiah 36:4, Isaiah 37:19, Isaiah 43:12, Isaiah 44:6, Isaiah
44:18, Isaiah 57:16, Isaiah 59:2, Isaiah 65:15, Isaiah 66:22, Jeremiah 16:12,
Jeremiah 31:38, Jeremiah 32:1, Jeremiah 46:18, Jeremiah 51:55, Lamentations
1:19, Ezekiel 12:22, Ezekiel 13:7, Ezekiel 17:13, Ezekiel 41:8, Ezekiel 48:33,
Daniel 2:4, Daniel 2:29, Daniel 11:45, Daniel 12:4, Amos 3:5, Amos 4:4, Amos
4:6, Obadiah 1:15, Nahum 2:11, Zechariah 6:1, Malachi 2:9, Matthew 2:23,
Matthew 7:21, Matthew 9:10, Matthew 13:31, Matthew 19:17, Matthew 20:12,
Matthew 26:71, Matthew 28:2, Mark 1:13, Mark 15:21, Luke 7:34, Luke 11:52, Luke
15:17, Luke 17:22, Luke 23:11, John 15:2, Acts 4:34, Acts 21:27, Romans 2:12,
Romans 9:8, Romans 10:9, Romans 11:2, Romans 11:28, 1 Corinthians 2:13, 1
Corinthians 4:15, Galatians 3:13, Ephesians 1:3, 1 Thessalonians 3:13, 1
Thessalonians 4:9, 1 Timothy 2:7, Hebrews 3:6, Hebrews 11:3, James 4:2, 1 John
5:1, Jude 1:14, Revelation 3:14, Revelation 13:1, Revelation 18:4, Revelation
22:14, Genesis 2:4, Genesis 7:2, Genesis 25:22, Genesis 26:15, Genesis 31:38,
Genesis 32:7, Exodus 2:15, Exodus 3:9, Exodus 4:15, Exodus 8:28, Exodus 13:2,
Exodus 16:33, Exodus 22:16, Exodus 22:31, Exodus 26:8, Exodus 27:3, Exodus
33:17, Exodus 35:1, Exodus 36:36, Leviticus 1:12, Leviticus 19:36, Leviticus
20:9, Leviticus 26:4, Numbers 3:10, Numbers 5:3, Numbers 12:4, Numbers 12:6,
Numbers 14:25, Numbers 19:14, Numbers 22:28, Numbers 35:12, Numbers 35:34,
Deuteronomy 1:4, Deuteronomy 1:44, Deuteronomy 12:26, Deuteronomy 17:18,
Deuteronomy 18:9, Deuteronomy 27:20, Deuteronomy 28:26, Deuteronomy 32:38,
Deuteronomy 33:12, Joshua 2:21, Joshua 11:19, Judges 1:31, Judges 4:24, Judges
5:17, Judges 9:1, Judges 11:24, Judges 12:15, Judges 18:29, Ruth 2:8, 1 Samuel
18:4, 1 Samuel 19:1, 1 Samuel 21:4, 1 Samuel 23:24, 1 Samuel 24:7, 1 Samuel
25:30, 2 Samuel 2:7, 2 Samuel 6:10, 2 Samuel 12:28, 2 Samuel 13:24, 2 Samuel
14:16, 2 Samuel 24:7, 1 Kings 1:34, 1 Kings 4:25, 1 Kings 17:17, 2 Kings 5:21,
2 Kings 9:33, 2 Kings 9:37, 2 Kings 14:19, 2 Kings 15:17, 2 Kings 15:23, 2
Kings 16:13, 2 Kings 19:18, 2 Kings 23:7, 2 Kings 24:1, 1 Chronicles 1:32, 1
Chronicles 16:42, 1 Chronicles 17:19, 1 Chronicles 22:10, 2 Chronicles 2:18, 2
Chronicles 4:3, 2 Chronicles 7:8, 2 Chronicles 10:8, 2 Chronicles 12:3, 2
Chronicles 13:19, 2 Chronicles 17:7, Ezra 4:20, Nehemiah 4:3, Nehemiah 7:45,
Job 1:1, Psalms 27:5, Psalms 35:15, Psalms 42:11, Psalms 43:5, Psalms 59:5,
Psalms 71:24, Psalms 98:3, Psalms 125:3, Isaiah 1:2, Isaiah 2:11, Isaiah 3:8,
Isaiah 16:6, Isaiah 20:1, Isaiah 22:22, Isaiah 23:12, Isaiah 25:5, Isaiah
25:10, Isaiah 26:15, Isaiah 28:9, Isaiah 30:21, Isaiah 34:15, Isaiah 43:19,
Isaiah 44:2, Isaiah 52:14, Isaiah 59:18, Jeremiah 2:3, Jeremiah 2:5, Jeremiah
3:3, Jeremiah 19:1, Jeremiah 30:20, Jeremiah 49:7, Jeremiah 51:36, Ezekiel
1:20, Ezekiel 3:25, Ezekiel 9:1, Ezekiel 17:10, Ezekiel 19:11, Ezekiel 21:32,
Ezekiel 40:9, Ezekiel 48:20, Daniel 2:26, Daniel 3:17, Daniel 3:20, Daniel
12:6, Amos 2:15, Zephaniah 2:13, Zechariah 10:9, Matthew 3:10, Matthew 22:10,
Matthew 25:32, Matthew 26:17, Mark 4:8, Mark 5:35, Mark 9:9, Mark 13:2, Luke
6:7, Luke 8:15, Luke 8:45, Luke 14:5, Luke 15:27, Luke 16:16, Luke 18:20, Luke
19:47, Luke 20:1, John 1:42, John 6:24, John 8:6, John 18:10, Acts 6:3, Acts
17:17, Acts 22:11, Acts 23:14, Acts 25:8, Romans 8:27, 1 Corinthians 2:9, 1
Corinthians 6:2, 1 Corinthians 6:16, 1 Corinthians 7:17, 1 Corinthians 7:29, 1
Corinthians 9:18, 1 Corinthians 16:19, 2 Corinthians 4:11, Galatians 5:13,
Philippians 3:4, Colossians 2:20, James 2:25, 1 John 3:24, 1 John 5:9, Jude
1:16, Revelation 1:16, Revelation 3:20, Revelation 4:3, Revelation 6:2,
Revelation 11:8, Genesis 4:17, Genesis 7:13, Genesis 12:16, Genesis 15:9,
Genesis 27:38, Genesis 31:50, Genesis 34:12, Genesis 36:35, Genesis 41:40,
Genesis 42:2, Genesis 42:37, Exodus 9:34, Exodus 22:30, Exodus 23:21, Exodus
32:2, Exodus 32:10, Exodus 36:37, Leviticus 13:8, Leviticus 20:12, Leviticus
20:22, Leviticus 25:22, Leviticus 26:20, Leviticus 26:37, Leviticus 27:5,
Numbers 4:5, Numbers 9:12, Numbers 27:8, Numbers 28:31, Deuteronomy 4:30,
Deuteronomy 5:26, Deuteronomy 7:10, Deuteronomy 9:2, Deuteronomy 10:5,
Deuteronomy 19:10, Deuteronomy 23:10, Deuteronomy 24:21, Deuteronomy 32:41,
Joshua 4:12, Joshua 8:26, Joshua 9:16, Joshua 11:4, Joshua 18:10, Judges 3:1,
Judges 7:16, Judges 8:14, Judges 16:26, Ruth 2:23, 1 Samuel 5:6, 1 Samuel 7:12,
1 Samuel 17:5, 1 Samuel 19:8, 1 Samuel 29:2, 2 Samuel 11:12, 2 Samuel 11:17, 1
Kings 7:40, 1 Kings 15:33, 2 Kings 5:2, 2 Kings 12:15, 2 Kings 21:18, 1
Chronicles 1:46, 1 Chronicles 12:32, 1 Chronicles 28:6, 2 Chronicles 1:9, 2
Chronicles 6:25, 2 Chronicles 7:19, 2 Chronicles 13:18, 2 Chronicles 21:15,
Nehemiah 9:1, Nehemiah 9:38, Nehemiah 12:8, Job 1:15, Psalms 25:7, Psalms
55:12, Psalms 99:6, Psalms 127:1, Proverbs 8:29, Isaiah 7:19, Isaiah 18:3,
Isaiah 29:17, Isaiah 56:10, Isaiah 58:1, Jeremiah 7:33, Jeremiah 10:2, Jeremiah
10:22, Jeremiah 13:6, Jeremiah 25:38, Jeremiah 39:6, Jeremiah 43:1, Jeremiah
49:9, Lamentations 4:3, Lamentations 4:10, Ezekiel 4:8, Ezekiel 5:8, Ezekiel
9:5, Ezekiel 13:16, Ezekiel 21:10, Ezekiel 23:47, Ezekiel 25:12, Daniel 2:21,
Daniel 7:28, Daniel 10:21, Hosea 3:3, Hosea 10:9, Hosea 13:13, Joel 2:14, Amos
8:3, Micah 4:12, Zechariah 5:11, Zechariah 12:2, Malachi 3:14, Matthew 16:4,
Matthew 16:17, Matthew 18:15, Matthew 23:18, Matthew 26:63, Mark 3:27, Mark
13:12, Luke 2:21, Luke 2:38, Luke 3:9, Luke 8:51, Luke 10:11, Luke 13:2, Luke
16:18, Luke 21:6, Luke 23:33, Luke 24:29, John 1:14, John 6:53, John 8:7, John
10:1, John 15:4, John 15:6, John 16:20, John 18:22, John 19:21, John 20:31,
Acts 2:29, Acts 4:25, Acts 5:2, Acts 9:38, Acts 14:1, Acts 18:15, Acts 20:38,
Acts 25:9, Acts 28:13, Romans 1:4, Romans 7:23, Romans 8:35, Romans 10:18,
Romans 14:5, 1 Corinthians 2:6, 1 Corinthians 3:3, 1 Corinthians 7:39, 2
Corinthians 1:19, 2 Corinthians 3:13, 1 Timothy 1:4, 2 Timothy 2:10, 2 Timothy
2:20, Hebrews 5:1, Hebrews 5:14, Hebrews 10:5, James 2:18, 2 Peter 2:18, 1 John
3:9, Revelation 12:5, Genesis 18:24, Genesis 24:44, Genesis 25:13, Genesis
25:26, Genesis 27:19, Genesis 28:9, Genesis 30:3, Genesis 38:28, Genesis 41:21,
Genesis 41:54, Genesis 47:27, Genesis 49:9, Genesis 49:15, Genesis 50:20,
Exodus 9:6, Exodus 9:18, Exodus 10:21, Exodus 14:22, Exodus 19:8, Exodus 26:29,
Exodus 37:1, Leviticus 4:10, Leviticus 9:19, Leviticus 11:13, Leviticus 11:21,
Leviticus 13:7, Leviticus 20:14, Leviticus 22:23, Leviticus 25:8, Leviticus
25:55, Numbers 7:9, Numbers 10:2, Numbers 15:20, Numbers 23:27, Numbers 32:14,
Deuteronomy 3:3, Deuteronomy 3:19, Deuteronomy 4:3, Deuteronomy 4:20,
Deuteronomy 4:31, Deuteronomy 5:27, Deuteronomy 21:3, Deuteronomy 23:19,
Deuteronomy 28:61, Deuteronomy 29:10, Deuteronomy 32:7, Joshua 8:5, Joshua
23:3, Judges 9:6, Judges 13:11, Judges 18:23, Judges 21:16, Ruth 4:14, 1 Samuel
1:2, 1 Samuel 13:16, 1 Samuel 14:26, 1 Samuel 23:4, 1 Samuel 25:37, 2 Samuel
2:27, 2 Samuel 2:29, 2 Samuel 3:19, 2 Samuel 5:23, 2 Samuel 11:24, 2 Samuel
12:5, 2 Samuel 15:35, 1 Kings 1:8, 1 Kings 1:33, 1 Kings 15:24, 1 Kings 16:5, 1
Kings 18:7, 2 Kings 1:4, 2 Kings 3:1, 2 Kings 8:15, 2 Kings 15:28, 2 Kings
23:10, 1 Chronicles 2:21, 1 Chronicles 5:25, 1 Chronicles 17:13, 1 Chronicles
27:16, 2 Chronicles 2:16, 2 Chronicles 17:14, 2 Chronicles 35:6, 2 Chronicles
35:10, 2 Chronicles 35:11, Ezra 4:14, Ezra 10:5, Nehemiah 6:2, Nehemiah 6:12,
Job 26:14, Psalms 39:5, Psalms 45:7, Psalms 135:7, Proverbs 6:3, Song of
Solomon 8:1, Isaiah 2:17, Isaiah 11:9, Isaiah 18:4, Isaiah 30:10, Isaiah 38:14,
Isaiah 40:4, Isaiah 65:5, Jeremiah 7:12, Jeremiah 15:4, Jeremiah 48:26,
Jeremiah 50:11, Ezekiel 3:17, Ezekiel 17:17, Ezekiel 20:24, Ezekiel 25:15,
Daniel 12:11, Hosea 6:4, Amos 3:1, Amos 6:12, Micah 2:7, Zephaniah 2:4,
Zephaniah 2:8, Zechariah 2:6, Zechariah 8:4, Malachi 3:18, Matthew 8:26,
Matthew 12:1, Matthew 13:12, Matthew 17:17, Matthew 22:21, Matthew 25:29,
Matthew 26:65, Mark 2:14, Mark 5:30, Mark 14:70, Mark 15:34, Luke 1:19, Luke
2:27, Luke 5:7, Luke 8:16, Luke 10:24, Luke 11:39, Luke 13:17, Luke 23:29, John
6:26, John 15:5, John 17:23, John 18:26, John 20:13, John 21:11, Acts 5:38,
Acts 8:13, Acts 16:19, Acts 16:34, Acts 19:1, Acts 20:15, Acts 21:4, Acts
25:21, Romans 1:26, Romans 8:4, Romans 10:3, Romans 16:18, Romans 16:19, 1
Corinthians 2:12, 1 Corinthians 6:15, 1 Corinthians 6:18, 2 Corinthians 1:17, 2
Corinthians 2:10, 2 Corinthians 5:11, 2 Corinthians 8:2, 2 Corinthians 11:3,
Galatians 6:13, Galatians 6:14, Ephesians 3:5, Colossians 1:10, Colossians
2:11, 1 Timothy 1:15, 1 Timothy 3:2, Hebrews 2:3, 1 Peter 3:9, 1 Peter 3:12, 2
Peter 2:3, Revelation 2:27, Revelation 6:16, Revelation 11:1, Revelation 15:6,
Revelation 16:3, Revelation 16:12, Genesis 6:16, Genesis 7:1, Genesis 16:13,
Genesis 19:20, Genesis 19:31, Genesis 21:32, Genesis 22:14, Genesis 24:16,
Genesis 25:16, Genesis 26:34, Genesis 27:20, Genesis 31:54, Genesis 32:5,
Genesis 38:23, Genesis 38:26, Exodus 2:6, Exodus 16:6, Exodus 18:16, Exodus
25:19, Exodus 26:2, Exodus 26:24, Exodus 28:25, Leviticus 3:6, Leviticus 7:35,
Leviticus 13:17, Leviticus 14:44, Leviticus 15:7, Leviticus 20:4, Leviticus
20:27, Numbers 10:8, Numbers 12:10, Numbers 13:3, Numbers 21:33, Numbers 22:25,
Numbers 22:27, Numbers 24:7, Numbers 31:21, Numbers 33:2, Deuteronomy 4:14,
Deuteronomy 4:15, Deuteronomy 4:37, Deuteronomy 9:15, Deuteronomy 28:62,
Deuteronomy 32:15, Joshua 13:13, Judges 2:9, Judges 8:8, Judges 8:22, Judges
11:38, Judges 19:4, Judges 20:22, Judges 21:7, Ruth 2:6, 1 Samuel 3:1, 1 Samuel
14:32, 1 Samuel 15:21, 1 Samuel 16:4, 1 Samuel 19:23, 1 Samuel 20:37, 1 Samuel
25:41, 1 Samuel 28:24, 2 Samuel 4:6, 1 Kings 8:27, 1 Kings 16:20, 1 Kings 19:9,
1 Kings 21:18, 1 Kings 21:27, 2 Kings 5:10, 2 Kings 6:6, 2 Kings 14:8, 2 Kings
17:25, 2 Kings 18:10, 2 Kings 25:21, 1 Chronicles 4:27, 1 Chronicles 4:33, 1
Chronicles 6:76, 1 Chronicles 11:6, 1 Chronicles 16:4, 1 Chronicles 19:12, 1
Chronicles 21:21, 1 Chronicles 29:16, 2 Chronicles 1:6, 2 Chronicles 2:11, 2
Chronicles 26:3, Ezra 5:15, Nehemiah 3:17, Nehemiah 6:13, Nehemiah 9:23, Esther
2:13, Job 14:13, Job 34:10, Psalms 39:12, Psalms 96:13, Psalms 144:2,
Ecclesiastes 5:15, Song of Solomon 1:8, Song of Solomon 3:2, Song of Solomon
4:9, Isaiah 1:24, Isaiah 9:20, Isaiah 25:1, Isaiah 33:9, Isaiah 42:14, Isaiah
45:24, Isaiah 66:15, Jeremiah 4:1, Jeremiah 5:31, Jeremiah 12:15, Jeremiah
22:10, Jeremiah 28:12, Jeremiah 29:28, Jeremiah 32:17, Jeremiah 32:25, Jeremiah
42:22, Jeremiah 49:18, Ezekiel 1:22, Ezekiel 12:27, Ezekiel 16:33, Ezekiel
26:21, Ezekiel 27:33, Ezekiel 35:8, Ezekiel 37:8, Ezekiel 44:23, Ezekiel 48:12,
Daniel 2:14, Daniel 6:5, Daniel 8:19, Hosea 7:4, Matthew 13:36, Matthew 17:15,
Matthew 24:38, Matthew 25:10, Matthew 26:58, Mark 7:18, Luke 2:44, Luke 5:33,
Luke 8:5, Luke 15:9, John 1:15, John 8:9, Acts 5:12, Acts 7:60, Acts 11:17,
Acts 13:47, Acts 17:27, Acts 18:17, Acts 21:3, Acts 24:22, Acts 26:2, Romans
1:16, Romans 7:25, Romans 9:22, Romans 14:22, 1 Corinthians 15:32, 2
Corinthians 2:17, 2 Corinthians 9:8, Galatians 4:24, Ephesians 1:21, Ephesians
3:6, Philippians 1:28, 2 Thessalonians 1:5, Titus 1:15, Hebrews 1:9, Hebrews
3:3, Hebrews 3:10, Hebrews 7:25, 2 Peter 1:10, Revelation 3:4, Revelation 6:1,
Revelation 8:11, Revelation 12:16, Revelation 18:14, Revelation 19:4,
Revelation 22:5, Genesis 8:20, Genesis 31:27, Genesis 33:17, Genesis 41:34,
Genesis 45:26, Genesis 46:32, Exodus 11:2, Exodus 20:22, Exodus 21:4, Exodus
22:8, Exodus 23:24, Exodus 25:12, Exodus 26:36, Exodus 33:3, Exodus 38:3,
Leviticus 4:15, Leviticus 10:18, Leviticus 13:10, Leviticus 19:18, Leviticus
25:52, Numbers 7:85, Numbers 16:2, Numbers 16:39, Numbers 21:29, Numbers 26:42,
Numbers 32:32, Numbers 33:4, Deuteronomy 1:43, Deuteronomy 2:31, Deuteronomy
4:2, Deuteronomy 13:4, Deuteronomy 22:15, Deuteronomy 32:30, Joshua 13:14,
Joshua 18:1, Joshua 21:20, Judges 1:24, Judges 4:16, Judges 6:15, Judges 6:18,
Judges 7:6, Judges 12:2, Judges 16:7, Judges 20:30, 1 Samuel 1:7, 1 Samuel
2:19, 1 Samuel 15:17, 1 Samuel 17:34, 2 Samuel 1:16, 2 Samuel 3:24, 2 Samuel
3:34, 2 Samuel 7:25, 2 Samuel 11:15, 2 Samuel 19:32, 1 Kings 1:37, 1 Kings
1:48, 1 Kings 10:17, 1 Kings 13:9, 2 Kings 6:8, 2 Kings 12:16, 2 Kings 19:22, 1
Chronicles 17:5, 1 Chronicles 22:12, 1 Chronicles 24:5, 1 Chronicles 26:21, 1
Chronicles 28:17, 2 Chronicles 9:16, 2 Chronicles 13:15, 2 Chronicles 15:5,
Nehemiah 1:7, Esther 8:2, Esther 9:4, Job 1:18, Psalms 14:7, Psalms 62:9,
Psalms 89:19, Ecclesiastes 7:18, Ecclesiastes 9:10, Song of Solomon 2:9, Song
of Solomon 7:13, Isaiah 14:31, Isaiah 22:13, Isaiah 22:14, Isaiah 22:24, Isaiah
28:27, Isaiah 28:28, Isaiah 33:21, Isaiah 34:1, Isaiah 54:16, Jeremiah 4:28,
Jeremiah 12:9, Jeremiah 13:4, Jeremiah 17:21, Jeremiah 32:21, Jeremiah 37:1,
Jeremiah 41:11, Jeremiah 48:39, Jeremiah 51:24, Jeremiah 52:27, Ezekiel 16:15,
Ezekiel 21:11, Ezekiel 22:3, Ezekiel 23:18, Ezekiel 26:3, Ezekiel 36:19,
Ezekiel 39:1, Ezekiel 45:13, Daniel 4:3, Daniel 11:33, Hosea 9:16, Amos 8:12,
Zechariah 1:3, Zechariah 2:8, Zechariah 11:3, Zechariah 12:13, Malachi 1:2,
Matthew 4:16, Matthew 26:26, Mark 1:5, Mark 13:20, Luke 12:39, Luke 13:33, Luke
14:18, Luke 16:7, Luke 17:20, Luke 22:10, John 1:51, John 3:19, John 5:20, John
9:18, John 13:12, John 13:38, John 14:23, Acts 1:18, Acts 1:19, Acts 5:16, Acts
7:49, Acts 8:36, Acts 9:15, Acts 14:23, Acts 16:9, Acts 20:6, Romans 13:13, 2
Corinthians 4:13, 2 Corinthians 10:14, 1 Thessalonians 2:12, 1 Thessalonians
3:4, 1 Timothy 1:7, 2 Timothy 1:8, Philemon 1:6, Hebrews 11:35, Hebrews 13:20,
Jude 1:13, Revelation 11:7, Revelation 11:12, Genesis 1:2, Genesis 6:5, Genesis
8:5, Genesis 14:24, Genesis 16:12, Genesis 19:12, Genesis 32:25, Genesis 36:40,
Genesis 42:22, Genesis 42:24, Genesis 43:15, Genesis 43:30, Genesis 45:8,
Genesis 46:12, Exodus 6:8, Exodus 9:9, Exodus 16:9, Exodus 22:3, Exodus 26:6,
Exodus 26:31, Exodus 27:20, Exodus 35:5, Exodus 39:18, Leviticus 6:6, Leviticus
14:24, Leviticus 17:8, Leviticus 17:12, Leviticus 23:8, Numbers 1:45, Numbers
3:35, Numbers 14:10, Numbers 14:27, Numbers 21:2, Numbers 26:64, Numbers 28:7,
Numbers 34:3, Numbers 35:4, Deuteronomy 18:12, Deuteronomy 25:18, Deuteronomy
32:50, Joshua 13:22, Joshua 14:11, Joshua 15:6, Joshua 21:10, Joshua 22:2,
Joshua 22:24, Joshua 23:1, Joshua 24:3, Joshua 24:18, Judges 8:28, Judges 10:4,
Judges 19:2, Ruth 1:9, 1 Samuel 1:9, 1 Samuel 9:1, 1 Samuel 19:2, 1 Samuel
23:3, 1 Samuel 23:10, 2 Samuel 13:19, 2 Samuel 23:4, 1 Kings 5:11, 1 Kings
16:4, 1 Kings 16:23, 2 Kings 11:5, 2 Kings 15:24, 2 Kings 15:27, 2 Kings 21:15,
1 Chronicles 6:62, 1 Chronicles 13:8, 1 Chronicles 14:2, 1 Chronicles 16:37, 1
Chronicles 17:25, 1 Chronicles 27:32, 2 Chronicles 4:16, 2 Chronicles 34:20,
Ezra 7:15, Nehemiah 2:2, Nehemiah 12:26, Esther 7:10, Job 2:13, Job 31:34,
Psalms 12:5, Psalms 71:18, Psalms 101:6, Ecclesiastes 8:1, Isaiah 5:20, Isaiah
22:3, Isaiah 23:11, Isaiah 32:7, Isaiah 37:23, Isaiah 44:21, Isaiah 48:21,
Jeremiah 1:10, Jeremiah 15:17, Jeremiah 16:21, Jeremiah 22:21, Jeremiah 31:36,
Jeremiah 32:33, Jeremiah 51:14, Ezekiel 16:16, Ezekiel 18:29, Ezekiel 27:22,
Ezekiel 35:10, Ezekiel 37:24, Daniel 1:17, Daniel 2:27, Daniel 4:22, Daniel
7:22, Amos 1:2, Micah 3:12, Nahum 3:3, Haggai 2:7, Zechariah 13:1, Malachi 2:5,
Matthew 7:25, Matthew 12:29, Matthew 12:39, Matthew 23:4, Matthew 25:26,
Matthew 27:40, Mark 3:22, Mark 4:24, Mark 6:25, Mark 8:27, Luke 6:34, Luke
12:10, Luke 12:27, Luke 20:17, Luke 23:25, John 8:12, John 8:42, John 17:26,
Acts 20:18, Acts 23:5, Acts 26:23, Acts 28:20, Romans 2:29, Romans 6:22, Romans
7:18, Romans 11:1, Romans 14:15, Romans 15:18, 1 Corinthians 7:35, 2
Corinthians 6:14, Galatians 4:15, Galatians 5:10, Ephesians 1:13, Ephesians
6:21, 1 Timothy 3:15, 1 Timothy 4:3, 1 Timothy 6:16, Philemon 1:16, Hebrews
11:9, Hebrews 11:34, Hebrews 12:23, James 5:14, 1 Peter 1:11, 2 Peter 2:8, 1
John 4:18, Revelation 5:12, Revelation 9:1, Revelation 14:1, Revelation 16:9,
Genesis 2:7, Genesis 24:22, Genesis 31:34, Genesis 34:19, Genesis 34:22,
Genesis 36:7, Genesis 37:17, Genesis 38:8, Genesis 40:16, Genesis 45:4, Genesis
49:11, Genesis 49:24, Exodus 1:7, Exodus 4:5, Exodus 4:25, Exodus 19:2, Exodus
23:5, Exodus 33:2, Exodus 35:25, Leviticus 4:8, Leviticus 4:24, Leviticus 7:2,
Leviticus 11:26, Leviticus 13:11, Leviticus 14:11, Leviticus 20:6, Numbers
3:40, Numbers 11:29, Numbers 14:16, Numbers 15:31, Numbers 16:18, Numbers
16:37, Numbers 18:13, Numbers 23:9, Numbers 23:21, Numbers 33:1, Numbers 36:12,
Deuteronomy 4:13, Deuteronomy 9:14, Deuteronomy 11:12, Deuteronomy 15:4,
Deuteronomy 23:23, Joshua 1:18, Joshua 9:17, Joshua 11:10, Joshua 20:3, Joshua
21:11, Judges 1:14, Judges 5:16, Judges 10:10, Judges 19:28, 1 Samuel 4:7, 1
Samuel 9:8, 1 Samuel 16:12, 1 Samuel 17:7, 1 Samuel 24:16, 1 Samuel 25:15, 1
Samuel 28:22, 2 Samuel 1:23, 2 Samuel 1:26, 2 Samuel 2:10, 2 Samuel 3:3, 2
Samuel 6:7, 2 Samuel 10:4, 2 Samuel 17:22, 2 Samuel 19:39, 2 Samuel 24:15, 1
Kings 1:3, 1 Kings 1:23, 1 Kings 7:38, 1 Kings 8:15, 1 Kings 14:7, 1 Kings
16:18, 1 Kings 18:1, 1 Kings 18:32, 1 Kings 22:50, 2 Kings 10:14, 2 Kings 14:2,
2 Kings 14:24, 2 Kings 14:27, 2 Kings 19:16, 2 Kings 25:14, 1 Chronicles 6:70,
1 Chronicles 11:5, 1 Chronicles 13:10, 2 Chronicles 6:4, 2 Chronicles 10:7, 2
Chronicles 18:34, 2 Chronicles 30:26, 2 Chronicles 30:27, 2 Chronicles 33:9,
Ezra 3:4, Nehemiah 7:2, Nehemiah 12:23, Esther 1:15, Esther 4:13, Psalms 16:4,
Psalms 22:29, Psalms 23:4, Psalms 39:1, Psalms 50:21, Psalms 65:9, Psalms
78:38, Ecclesiastes 2:24, Ecclesiastes 7:12, Ecclesiastes 12:6, Song of Solomon
4:2, Song of Solomon 8:7, Isaiah 1:15, Isaiah 12:2, Isaiah 14:30, Isaiah 17:14,
Isaiah 19:14, Isaiah 30:25, Isaiah 39:8, Isaiah 41:11, Isaiah 41:20, Isaiah
42:1, Isaiah 46:3, Isaiah 51:5, Isaiah 51:7, Isaiah 52:11, Isaiah 53:9, Isaiah
54:8, Isaiah 63:14, Isaiah 66:18, Jeremiah 2:26, Jeremiah 2:37, Jeremiah 8:9,
Jeremiah 9:21, Jeremiah 17:16, Jeremiah 19:8, Jeremiah 22:24, Jeremiah 27:12,
Jeremiah 50:14, Jeremiah 50:25, Jeremiah 52:34, Lamentations 4:20, Ezekiel 6:8,
Ezekiel 14:14, Ezekiel 15:4, Ezekiel 21:23, Ezekiel 24:24, Ezekiel 32:13,
Ezekiel 33:7, Ezekiel 39:21, Ezekiel 43:21, Amos 4:8, Jonah 2:6, Jonah 3:3,
Micah 6:6, Habakkuk 3:14, Zechariah 1:1, Zechariah 6:6, Malachi 2:7, Malachi
4:2, Matthew 13:27, Matthew 16:27, Matthew 18:16, Luke 1:3, Luke 11:34, Luke
15:7, Luke 15:8, Luke 20:9, John 6:11, John 7:12, John 10:33, John 11:9, John
18:31, John 20:27, Acts 1:3, Acts 8:25, Acts 15:4, Acts 16:10, Acts 20:13, Acts
21:16, Romans 1:18, Romans 1:25, Romans 2:4, Romans 9:27, Romans 13:11, 2
Corinthians 9:3, 2 Corinthians 10:7, 2 Corinthians 12:2, Philippians 3:13, 1
Thessalonians 2:4, Titus 1:6, Titus 1:7, Hebrews 9:2, James 2:23, 1 John 1:7,
Revelation 9:19, Revelation 13:18, Revelation 16:10, Revelation 22:18, Genesis
6:19, Genesis 28:20, Genesis 29:8, Genesis 35:10, Genesis 35:14, Genesis 35:22,
Genesis 36:2, Genesis 37:13, Genesis 39:22, Exodus 5:16, Exodus 14:8, Exodus
15:2, Exodus 15:20, Exodus 26:27, Exodus 27:1, Exodus 32:30, Exodus 34:25,
Exodus 38:15, Leviticus 4:6, Leviticus 8:11, Numbers 22:8, Numbers 22:35,
Numbers 32:5, Numbers 34:12, Deuteronomy 8:7, Deuteronomy 9:6, Deuteronomy
13:14, Deuteronomy 17:5, Deuteronomy 23:3, Deuteronomy 25:1, Deuteronomy 28:59,
Deuteronomy 30:18, Deuteronomy 31:26, Joshua 9:23, Joshua 11:2, Joshua 11:11,
Joshua 13:29, Judges 4:19, Judges 6:4, Judges 8:12, Judges 13:1, 1 Samuel 9:9,
1 Samuel 14:37, 1 Samuel 14:50, 1 Samuel 19:18, 2 Samuel 6:5, 2 Samuel 15:4, 1
Kings 3:4, 1 Kings 9:20, 1 Kings 11:19, 1 Kings 18:6, 2 Kings 3:2, 2 Kings
3:20, 2 Kings 8:19, 2 Kings 9:13, 2 Kings 23:9, 2 Kings 23:20, 1 Chronicles
14:14, 1 Chronicles 18:17, 1 Chronicles 22:3, 1 Chronicles 23:11, 1 Chronicles
28:5, 2 Chronicles 7:21, 2 Chronicles 9:25, 2 Chronicles 30:7, 2 Chronicles
36:19, Ezra 1:11, Ezra 4:16, Nehemiah 3:29, Nehemiah 4:4, Nehemiah 6:9,
Nehemiah 11:30, Esther 1:12, Esther 2:1, Psalms 1:3, Psalms 22:24, Psalms 63:1,
Psalms 65:8, Song of Solomon 6:11, Isaiah 3:1, Isaiah 7:9, Isaiah 9:18, Isaiah
10:33, Isaiah 13:20, Isaiah 19:22, Isaiah 40:15, Isaiah 40:20, Isaiah 44:17,
Isaiah 48:18, Isaiah 52:12, Isaiah 59:12, Isaiah 60:2, Isaiah 65:9, Jeremiah
1:17, Jeremiah 10:14, Jeremiah 11:11, Jeremiah 23:6, Jeremiah 25:14, Jeremiah
28:15, Jeremiah 33:15, Jeremiah 39:13, Jeremiah 51:17, Ezekiel 16:22, Ezekiel
17:19, Ezekiel 20:32, Ezekiel 23:49, Ezekiel 25:10, Ezekiel 28:9, Ezekiel 32:7,
Ezekiel 37:7, Ezekiel 40:2, Ezekiel 40:17, Ezekiel 40:25, Ezekiel 41:26,
Ezekiel 44:3, Ezekiel 47:3, Daniel 2:31, Daniel 4:6, Hosea 8:4, Hosea 10:6,
Amos 5:15, Micah 2:1, Zechariah 6:7, Zechariah 11:12, Matthew 11:7, Matthew
14:2, Matthew 20:18, Matthew 24:31, Mark 2:21, Mark 4:19, Mark 5:7, Mark 10:17,
Mark 13:19, Mark 15:32, Luke 4:9, Luke 8:1, Luke 8:8, Luke 10:34, Luke 13:32,
Luke 16:1, Luke 16:2, Luke 16:9, Luke 21:8, Luke 22:47, Luke 23:22, John 9:27,
John 11:56, John 11:57, Acts 8:26, Acts 8:39, Acts 19:2, Acts 19:4, Acts 26:5,
Romans 9:33, Romans 15:30, 1 Corinthians 11:27, 2 Corinthians 3:6, 2
Corinthians 7:4, 2 Corinthians 9:10, 2 Corinthians 10:8, Ephesians 4:18,
Ephesians 5:27, 2 Thessalonians 3:8, Hebrews 12:15, Hebrews 13:11, 2 Peter 1:8,
1 John 4:1, 1 John 4:16, Jude 1:11, Jude 1:25, Revelation 6:9, Revelation 9:9,
Revelation 13:7, Revelation 17:10, Revelation 19:21, Revelation 21:21, Genesis
19:3, Genesis 29:35, Genesis 34:5, Genesis 41:30, Genesis 42:9, Exodus 1:22,
Exodus 4:4, Exodus 4:20, Exodus 6:16, Exodus 9:7, Exodus 10:24, Exodus 14:24,
Exodus 21:28, Exodus 22:25, Exodus 26:9, Exodus 29:46, Leviticus 2:11,
Leviticus 3:14, Leviticus 6:22, Leviticus 7:24, Leviticus 8:13, Leviticus
13:39, Leviticus 18:7, Leviticus 20:11, Leviticus 20:13, Leviticus 20:23,
Leviticus 22:6, Leviticus 26:42, Numbers 9:1, Numbers 16:33, Deuteronomy 4:38,
Deuteronomy 11:14, Deuteronomy 20:11, Deuteronomy 23:13, Deuteronomy 23:16,
Deuteronomy 31:6, Deuteronomy 32:17, Joshua 2:24, Joshua 5:9, Joshua 8:4,
Joshua 8:8, Joshua 16:3, Joshua 18:6, Judges 1:1, Judges 6:20, Ruth 4:12, 1
Samuel 2:21, 1 Samuel 7:2, 1 Samuel 15:28, 1 Samuel 19:7, 1 Samuel 19:21, 1
Samuel 20:15, 1 Samuel 24:21, 1 Samuel 25:24, 1 Samuel 25:42, 2 Samuel 9:9, 2
Samuel 15:23, 2 Samuel 15:32, 2 Samuel 19:40, 2 Samuel 22:3, 1 Kings 2:38, 1
Kings 3:20, 1 Kings 6:3, 1 Kings 7:7, 1 Kings 7:45, 1 Kings 8:24, 1 Kings 13:5,
1 Kings 18:29, 1 Kings 19:17, 1 Kings 22:24, 2 Kings 7:7, 2 Kings 10:34, 2
Kings 13:8, 2 Kings 13:10, 2 Kings 17:35, 2 Kings 18:23, 2 Kings 20:8, 2 Kings
22:3, 2 Kings 22:6, 1 Chronicles 2:23, 1 Chronicles 26:12, 1 Chronicles 29:30,
2 Chronicles 6:15, 2 Chronicles 10:2, 2 Chronicles 23:9, 2 Chronicles 29:32, 2
Chronicles 36:12, 2 Chronicles 36:15, Ezra 4:5, Nehemiah 13:28, Esther 1:11,
Esther 5:5, Job 24:24, Psalms 57:3, Psalms 66:15, Psalms 88:5, Psalms 106:5,
Ecclesiastes 10:17, Song of Solomon 6:13, Isaiah 5:12, Isaiah 12:1, Isaiah
15:9, Isaiah 17:12, Isaiah 29:5, Isaiah 36:8, Isaiah 48:19, Isaiah 49:15,
Isaiah 60:10, Isaiah 62:2, Isaiah 63:5, Jeremiah 7:29, Jeremiah 9:15, Jeremiah
9:23, Jeremiah 19:14, Jeremiah 33:18, Jeremiah 36:8, Jeremiah 37:5, Jeremiah
46:12, Jeremiah 46:23, Jeremiah 50:32, Jeremiah 51:29, Lamentations 4:8,
Ezekiel 3:26, Ezekiel 10:12, Ezekiel 10:17, Ezekiel 18:26, Ezekiel 20:36,
Ezekiel 21:4, Ezekiel 22:7, Ezekiel 22:18, Ezekiel 23:11, Ezekiel 36:30,
Ezekiel 36:31, Ezekiel 43:10, Ezekiel 43:12, Daniel 1:18, Daniel 3:21, Daniel
3:22, Daniel 12:3, Hosea 11:11, Amos 9:9, Micah 3:4, Habakkuk 3:19, Matthew
2:18, Matthew 9:9, Matthew 21:5, Mark 4:20, Mark 7:5, Mark 8:12, Mark 9:50,
Mark 10:14, Mark 14:14, Luke 4:16, Luke 5:37, Luke 15:12, Luke 17:7, Luke
23:26, John 5:25, John 8:55, John 16:33, Acts 1:22, Acts 5:3, Acts 12:8, Acts
13:41, Acts 13:48, Acts 19:33, Acts 21:8, Acts 21:30, Acts 28:8, Romans 2:14,
Romans 11:12, Romans 15:14, 1 Corinthians 5:10, 1 Corinthians 15:29, 2
Corinthians 9:4, 2 Corinthians 12:10, Galatians 3:17, Colossians 3:13, Titus
2:14, Hebrews 6:17, Hebrews 7:26, 1 Peter 2:23, Revelation 21:27, Genesis 16:6,
Genesis 17:16, Genesis 28:5, Genesis 31:13, Genesis 32:6, Genesis 32:11,
Genesis 37:27, Genesis 45:18, Genesis 47:23, Exodus 1:12, Exodus 2:11, Exodus
5:2, Exodus 9:10, Exodus 21:35, Exodus 28:3, Exodus 29:37, Exodus 29:40, Exodus
34:26, Exodus 38:30, Leviticus 1:15, Leviticus 6:28, Leviticus 9:3, Leviticus
9:4, Leviticus 19:15, Leviticus 25:15, Leviticus 27:3, Numbers 2:25, Numbers
7:10, Numbers 15:4, Numbers 16:1, Numbers 29:14, Numbers 31:14, Deuteronomy
4:47, Deuteronomy 8:19, Deuteronomy 10:1, Deuteronomy 16:1, Deuteronomy 21:20,
Deuteronomy 21:21, Deuteronomy 27:9, Deuteronomy 27:12, Deuteronomy 28:14,
Deuteronomy 32:10, Deuteronomy 32:35, Joshua 10:2, Joshua 16:9, Joshua 19:29,
Joshua 21:21, Judges 3:22, Judges 6:10, 1 Samuel 7:8, 1 Samuel 13:7, 1 Samuel
17:47, 1 Samuel 21:7, 2 Samuel 7:22, 2 Samuel 8:4, 2 Samuel 14:9, 2 Samuel
16:18, 1 Kings 5:14, 1 Kings 19:15, 1 Kings 20:35, 1 Kings 22:31, 2 Kings 9:24,
2 Kings 13:4, 2 Kings 15:33, 2 Kings 17:31, 2 Kings 19:9, 2 Kings 21:9, 1
Chronicles 7:16, 1 Chronicles 11:20, 2 Chronicles 5:11, 2 Chronicles 26:5, 2
Chronicles 33:2, Ezra 6:16, Ezra 8:30, Nehemiah 3:23, Nehemiah 4:5, Nehemiah
5:9, Nehemiah 10:35, Esther 6:1, Psalms 35:10, Psalms 51:4, Psalms 84:3, Psalms
106:23, Ecclesiastes 3:16, Ecclesiastes 11:5, Ecclesiastes 11:8, Song of
Solomon 3:6, Isaiah 1:1, Isaiah 5:8, Isaiah 10:22, Isaiah 19:13, Isaiah 22:4,
Isaiah 36:3, Isaiah 36:10, Isaiah 54:5, Isaiah 60:21, Isaiah 66:9, Jeremiah
1:7, Jeremiah 2:25, Jeremiah 3:24, Jeremiah 6:7, Jeremiah 9:4, Jeremiah 9:5,
Jeremiah 22:28, Jeremiah 24:10, Jeremiah 32:43, Jeremiah 50:26, Jeremiah 51:51,
Ezekiel 2:10, Ezekiel 8:18, Ezekiel 16:28, Ezekiel 24:11, Ezekiel 37:1, Ezekiel
44:22, Hosea 2:8, Hosea 4:15, Hosea 14:3, Amos 9:11, Micah 2:11, Micah 7:12,
Zechariah 3:2, Zechariah 6:10, Malachi 2:6, Matthew 6:6, Matthew 13:33, Matthew
18:10, Mark 4:15, Mark 9:2, Mark 15:40, Luke 9:11, Luke 9:32, Luke 11:7, Luke
14:9, Luke 14:15, Luke 15:6, Luke 18:13, Luke 24:12, Acts 7:43, Acts 10:4, Acts
15:20, Acts 27:13, Acts 27:39, Romans 4:13, Romans 8:17, Romans 8:29, Romans
14:3, Romans 14:13, Romans 15:8, 1 Corinthians 1:26, 1 Corinthians 14:6,
Philippians 2:25, Colossians 1:27, 1 Timothy 6:1, Hebrews 8:1, Hebrews 10:2,
Hebrews 12:28, James 1:17, Revelation 19:19, Genesis 3:15, Genesis 4:7, Genesis
12:7, Genesis 31:25, Genesis 32:16, Genesis 35:1, Exodus 2:13, Exodus 12:21,
Exodus 12:36, Exodus 13:7, Exodus 22:7, Exodus 25:2, Exodus 25:10, Exodus
25:29, Exodus 27:9, Exodus 29:1, Exodus 35:15, Exodus 38:8, Exodus 40:21,
Leviticus 2:9, Leviticus 3:13, Leviticus 6:16, Leviticus 19:8, Leviticus 22:5,
Leviticus 25:5, Leviticus 25:29, Numbers 1:44, Numbers 2:10, Numbers 5:22,
Numbers 7:8, Numbers 10:6, Numbers 11:24, Numbers 13:28, Numbers 21:16, Numbers
24:9, Numbers 28:13, Numbers 29:2, Numbers 31:3, Deuteronomy 27:22, Deuteronomy
32:47, Deuteronomy 33:11, Joshua 1:9, Joshua 17:6, Joshua 18:15, Joshua 19:50,
Judges 6:9, Judges 6:22, Judges 10:11, Judges 11:20, Judges 18:24, Judges
20:25, Ruth 2:22, 1 Samuel 13:18, 1 Samuel 14:14, 1 Samuel 15:18, 1 Samuel
21:1, 1 Samuel 22:1, 1 Samuel 25:14, 2 Samuel 3:7, 2 Samuel 16:6, 1 Kings 7:35,
1 Kings 11:22, 1 Kings 13:31, 1 Kings 16:21, 1 Kings 20:40, 1 Kings 21:24, 2
Kings 2:17, 2 Kings 4:6, 2 Kings 4:41, 2 Kings 10:22, 2 Kings 15:15, 2 Kings
24:3, 1 Chronicles 2:53, 2 Chronicles 6:39, 2 Chronicles 9:14, 2 Chronicles
12:12, 2 Chronicles 13:2, Ezra 7:13, Nehemiah 1:5, Nehemiah 13:16, Esther 2:16,
Psalms 18:2, Psalms 27:9, Psalms 90:10, Isaiah 14:23, Isaiah 15:1, Isaiah
22:11, Isaiah 24:13, Isaiah 29:22, Isaiah 37:17, Isaiah 41:19, Isaiah 42:13,
Isaiah 44:9, Isaiah 49:1, Isaiah 51:4, Isaiah 54:14, Isaiah 55:1, Isaiah 55:3,
Isaiah 57:10, Isaiah 59:4, Isaiah 59:8, Isaiah 60:20, Jeremiah 9:8, Jeremiah
16:6, Jeremiah 18:4, Jeremiah 20:12, Jeremiah 22:2, Jeremiah 23:4, Jeremiah
25:15, Jeremiah 28:5, Jeremiah 29:7, Jeremiah 32:42, Jeremiah 36:20, Jeremiah
40:3, Jeremiah 42:8, Jeremiah 46:9, Ezekiel 7:3, Ezekiel 14:15, Ezekiel 15:5,
Ezekiel 23:12, Ezekiel 29:9, Ezekiel 29:21, Ezekiel 31:17, Ezekiel 36:32,
Ezekiel 40:10, Ezekiel 41:17, Daniel 1:19, Joel 2:25, Micah 4:4, Matthew 10:19,
Matthew 12:25, Matthew 13:21, Matthew 18:31, Matthew 21:24, Matthew 26:51, Mark
1:34, Luke 2:7, Luke 3:22, Luke 9:7, Luke 12:15, Luke 12:22, Luke 14:8, Luke
17:8, John 10:16, John 11:32, John 13:36, John 14:27, John 15:24, John 17:6,
Acts 1:20, Acts 6:2, Acts 8:12, Acts 13:2, Acts 13:33, Acts 14:11, Acts 15:1,
Acts 16:1, Acts 24:5, Romans 1:32, Romans 5:10, 1 Corinthians 14:15, 2
Corinthians 2:14, 2 Corinthians 7:13, 2 Corinthians 8:23, 2 Corinthians 11:21,
Galatians 6:8, Philippians 4:10, Colossians 4:16, 1 Timothy 4:10, 1 Timothy
6:3, Hebrews 5:5, 3 John 1:12, Revelation 2:22, Revelation 4:11, Revelation
9:5, Revelation 11:5, Revelation 14:19, Revelation 18:13, Revelation 19:11,
Genesis 9:12, Genesis 19:35, Genesis 26:10, Genesis 32:17, Genesis 38:21,
Genesis 49:28, Exodus 9:1, Exodus 15:22, Exodus 22:29, Exodus 23:19, Exodus
30:2, Exodus 30:32, Exodus 33:10, Leviticus 11:34, Leviticus 13:33, Leviticus
13:37, Leviticus 14:29, Leviticus 23:43, Numbers 6:13, Numbers 13:33, Numbers
18:21, Numbers 20:11, Numbers 22:36, Numbers 24:1, Numbers 36:13, Deuteronomy
3:17, Deuteronomy 11:9, Deuteronomy 16:8, Deuteronomy 21:1, Deuteronomy 22:5,
Deuteronomy 22:9, Deuteronomy 31:11, Joshua 5:10, Joshua 21:40, Joshua 24:6,
Joshua 24:22, Judges 3:20, Judges 6:24, Judges 6:33, Judges 11:12, 1 Samuel
11:1, 2 Samuel 13:9, 2 Samuel 13:16, 2 Samuel 15:36, 2 Samuel 22:1, 1 Kings
1:27, 1 Kings 7:49, 1 Kings 11:27, 1 Kings 14:19, 1 Kings 15:3, 1 Kings 16:27,
1 Kings 17:18, 2 Kings 7:5, 2 Kings 18:5, 2 Kings 18:25, 2 Kings 19:7, 2 Kings
19:12, 2 Kings 19:14, 2 Kings 22:16, 1 Chronicles 16:41, 1 Chronicles 17:23, 1
Chronicles 19:9, 1 Chronicles 21:2, 1 Chronicles 21:29, 1 Chronicles 29:14, 2
Chronicles 20:7, 2 Chronicles 25:1, 2 Chronicles 32:25, Esther 2:20, Job 11:6,
Job 42:9, Psalms 32:6, Psalms 35:27, Psalms 55:3, Psalms 79:10, Song of Solomon
4:16, Song of Solomon 5:9, Isaiah 4:2, Isaiah 6:11, Isaiah 8:9, Isaiah 10:3,
Isaiah 11:10, Isaiah 11:12, Isaiah 11:16, Isaiah 12:4, Isaiah 13:21, Isaiah
14:22, Isaiah 27:12, Isaiah 37:7, Isaiah 37:12, Isaiah 48:17, Isaiah 58:4,
Jeremiah 7:10, Jeremiah 18:22, Jeremiah 20:8, Jeremiah 22:22, Jeremiah 28:9,
Jeremiah 33:16, Jeremiah 34:19, Jeremiah 48:8, Ezekiel 3:6, Ezekiel 7:7,
Ezekiel 14:18, Ezekiel 18:7, Ezekiel 23:32, Ezekiel 29:7, Ezekiel 33:4, Ezekiel
33:29, Ezekiel 34:28, Ezekiel 39:2, Ezekiel 42:20, Daniel 6:14, Hosea 14:2,
Amos 2:11, Micah 6:8, Micah 7:2, Habakkuk 1:6, Zechariah 6:5, Zechariah 8:8,
Matthew 10:2, Matthew 20:25, Matthew 27:46, Mark 6:17, Luke 4:42, Luke 5:3,
John 3:31, John 7:52, John 9:11, John 12:40, John 13:18, John 15:26, Acts 5:24,
Acts 7:2, Acts 10:30, Acts 12:12, Acts 14:19, Acts 15:24, Acts 18:26, Acts
19:17, Acts 25:5, Acts 25:10, Acts 27:27, Romans 5:14, Romans 13:1, Romans
14:20, 1 Corinthians 5:8, 1 Corinthians 7:12, 1 Corinthians 12:23, 1
Corinthians 15:58, 2 Thessalonians 1:10, 1 Timothy 4:1, 1 Timothy 5:21, 2
Timothy 3:15, Hebrews 7:21, 1 Peter 1:17, 1 Peter 4:1, 2 Peter 3:7, 2 Peter
3:17, 1 John 5:18, Revelation 15:1, Revelation 16:15, Genesis 18:31, Genesis
25:6, Genesis 25:20, Genesis 30:31, Genesis 31:10, Genesis 33:15, Genesis 46:6,
Genesis 46:26, Genesis 48:22, Exodus 1:10, Exodus 12:6, Exodus 12:18, Exodus
24:16, Exodus 38:12, Leviticus 1:11, Leviticus 6:7, Leviticus 8:16, Leviticus
14:20, Leviticus 14:45, Leviticus 17:6, Leviticus 19:9, Numbers 14:44, Numbers
26:44, Numbers 29:1, Numbers 35:32, Deuteronomy 6:24, Deuteronomy 20:7,
Deuteronomy 23:25, Deuteronomy 27:2, Deuteronomy 28:33, Deuteronomy 30:2,
Joshua 2:5, Joshua 10:3, Joshua 21:13, Judges 9:4, Judges 10:1, Judges 13:9,
Judges 14:5, Judges 19:6, Judges 19:17, Judges 20:3, 1 Samuel 12:11, 1 Samuel
14:52, 1 Samuel 17:35, 1 Samuel 20:25, 1 Samuel 25:7, 2 Samuel 10:11, 2 Samuel
12:10, 2 Samuel 12:22, 2 Samuel 13:8, 2 Samuel 17:11, 2 Samuel 19:13, 1 Kings
5:1, 1 Kings 7:36, 1 Kings 8:63, 1 Kings 11:36, 1 Kings 13:8, 2 Kings 8:3, 2
Kings 9:12, 2 Kings 11:17, 2 Kings 13:5, 2 Kings 17:37, 2 Kings 18:11, 2 Kings
21:24, 2 Kings 22:2, 2 Kings 25:16, 1 Chronicles 4:21, 1 Chronicles 6:71, 1
Chronicles 11:11, 1 Chronicles 19:15, 2 Chronicles 3:17, 2 Chronicles 6:18, 2
Chronicles 25:7, 2 Chronicles 25:8, 2 Chronicles 30:14, 2 Chronicles 33:25,
Ezra 3:6, Ezra 4:11, Nehemiah 3:14, Nehemiah 3:21, Nehemiah 9:18, Nehemiah
13:7, Psalms 19:13, Psalms 37:7, Psalms 57:4, Psalms 62:4, Psalms 93:1, Psalms
110:3, Ecclesiastes 2:19, Ecclesiastes 3:22, Ecclesiastes 8:12, Song of Solomon
7:8, Isaiah 23:1, Isaiah 28:22, Isaiah 28:25, Isaiah 30:13, Isaiah 35:6, Isaiah
50:7, Isaiah 51:20, Isaiah 61:8, Jeremiah 7:22, Jeremiah 7:25, Jeremiah 10:18,
Jeremiah 11:6, Jeremiah 11:7, Jeremiah 15:11, Jeremiah 17:1, Jeremiah 17:6,
Jeremiah 31:27, Jeremiah 37:15, Jeremiah 46:8, Jeremiah 48:7, Jeremiah 52:11,
Ezekiel 16:47, Ezekiel 20:1, Ezekiel 23:28, Ezekiel 26:15, Ezekiel 29:14,
Ezekiel 33:5, Ezekiel 34:26, Ezekiel 42:15, Ezekiel 45:20, Daniel 8:23, Daniel
10:8, Hosea 8:1, Joel 2:1, Joel 2:22, Nahum 1:2, Matthew 9:6, Matthew 13:17,
Matthew 15:36, Mark 3:8, Mark 5:19, Luke 4:36, Luke 10:1, Luke 21:25, Luke
22:27, Luke 22:36, John 1:45, John 4:9, John 4:45, John 8:19, John 11:4, John
19:13, Acts 27:1, Romans 2:5, Romans 6:17, Romans 8:34, 2 Corinthians 12:18,
Colossians 4:3, 1 Thessalonians 1:9, 1 Timothy 4:8, 1 Timothy 5:8, Hebrews
9:13, 2 Peter 2:22, 2 John 1:5, Revelation 9:7, Revelation 11:11, Genesis
18:30, Genesis 19:13, Genesis 19:33, Genesis 27:1, Genesis 36:43, Genesis
41:27, Genesis 43:34, Genesis 45:3, Genesis 48:15, Exodus 6:12, Exodus 9:27,
Exodus 11:10, Exodus 14:28, Exodus 19:5, Exodus 24:14, Leviticus 2:1, Leviticus
2:8, Leviticus 8:29, Leviticus 9:23, Leviticus 11:9, Leviticus 11:47, Leviticus
15:24, Leviticus 20:16, Leviticus 21:1, Leviticus 25:11, Leviticus 27:14,
Numbers 2:18, Numbers 16:22, Numbers 18:3, Numbers 19:4, Numbers 26:15, Numbers
26:33, Numbers 36:9, Deuteronomy 2:1, Deuteronomy 13:2, Deuteronomy 19:8,
Deuteronomy 28:9, Deuteronomy 31:2, Deuteronomy 32:20, Joshua 10:25, Joshua
13:1, Joshua 14:14, Joshua 21:5, Joshua 21:34, Joshua 24:33, Judges 4:5, Judges
5:4, Judges 7:18, Judges 8:20, Judges 14:14, Judges 18:12, Judges 20:35, Judges
20:38, Judges 21:24, Ruth 4:3, Ruth 4:6, 1 Samuel 1:8, 1 Samuel 17:50, 2 Samuel
11:20, 2 Samuel 18:13, 2 Samuel 21:18, 1 Kings 1:52, 1 Kings 4:7, 1 Kings 11:7,
1 Kings 18:4, 1 Kings 18:38, 1 Kings 20:15, 1 Kings 20:30, 2 Kings 1:14, 2
Kings 15:12, 2 Kings 17:8, 2 Kings 18:2, 1 Chronicles 5:9, 1 Chronicles 7:4, 1
Chronicles 11:15, 1 Chronicles 29:25, 2 Chronicles 6:19, 2 Chronicles 7:12, 2
Chronicles 8:9, 2 Chronicles 17:9, 2 Chronicles 34:13, 2 Chronicles 35:20,
Nehemiah 6:3, Nehemiah 9:34, Job 1:4, Psalms 17:3, Psalms 55:23, Psalms 69:13,
Psalms 126:2, Psalms 138:7, Psalms 141:4, Isaiah 14:21, Isaiah 28:17, Isaiah
33:19, Isaiah 37:14, Isaiah 40:14, Isaiah 41:10, Isaiah 46:6, Isaiah 46:10,
Isaiah 49:9, Isaiah 59:16, Isaiah 62:10, Isaiah 65:23, Jeremiah 9:16, Jeremiah
9:20, Jeremiah 20:3, Jeremiah 22:15, Jeremiah 24:9, Jeremiah 30:15, Jeremiah
38:10, Jeremiah 39:1, Jeremiah 43:4, Jeremiah 46:14, Lamentations 1:11, Ezekiel
10:9, Ezekiel 13:8, Ezekiel 18:18, Ezekiel 22:11, Ezekiel 26:11, Ezekiel 38:14,
Ezekiel 43:22, Daniel 4:30, Hosea 2:9, Hosea 7:13, Amos 2:8, Amos 3:11, Amos
6:4, Amos 7:4, Jonah 4:10, Nahum 3:4, Haggai 2:18, Zechariah 1:19, Zechariah
2:9, Matthew 9:28, Matthew 10:42, Matthew 19:21, Matthew 21:2, Mark 2:19, Mark
5:40, Mark 9:43, Mark 9:47, Mark 10:1, Mark 12:12, Mark 13:34, Mark 16:6, Luke
9:39, Luke 15:13, Luke 19:30, John 1:39, John 4:35, John 5:7, John 17:1, Acts
1:4, Acts 9:26, Acts 16:16, Acts 16:27, Acts 25:19, Acts 27:30, Acts 28:21,
Romans 3:4, 1 Corinthians 1:17, 2 Corinthians 5:1, 2 Corinthians 10:1,
Galatians 5:21, Colossians 2:13, 2 Timothy 1:5, Hebrews 11:6, Hebrews 12:9,
Hebrews 12:17, 2 Peter 2:4, 2 Peter 3:5, Jude 1:10, Revelation 1:3, Revelation
8:8, Genesis 24:46, Genesis 24:54, Genesis 36:24, Genesis 50:7, Exodus 8:19,
Exodus 19:3, Exodus 22:27, Exodus 27:18, Exodus 28:8, Exodus 30:15, Exodus
30:34, Exodus 32:20, Leviticus 7:14, Leviticus 14:34, Leviticus 25:4, Numbers
1:2, Numbers 3:32, Numbers 5:17, Numbers 6:2, Numbers 16:15, Numbers 22:7,
Numbers 26:59, Numbers 26:65, Numbers 27:2, Numbers 29:36, Numbers 35:23,
Deuteronomy 2:21, Deuteronomy 6:20, Deuteronomy 7:7, Deuteronomy 12:5,
Deuteronomy 13:15, Deuteronomy 15:17, Deuteronomy 17:4, Deuteronomy 18:6,
Deuteronomy 25:3, Deuteronomy 26:11, Deuteronomy 28:7, Deuteronomy 31:9, Joshua
1:5, Joshua 2:12, Joshua 8:11, Joshua 17:17, Judges 4:2, Judges 4:3, Judges
8:2, Judges 9:35, Judges 9:37, Judges 11:9, 1 Samuel 13:19, 1 Samuel 25:10, 1
Samuel 28:2, 2 Samuel 4:9, 2 Samuel 12:24, 2 Samuel 16:13, 1 Kings 1:53, 1
Kings 8:58, 1 Kings 9:5, 1 Kings 10:15, 1 Kings 11:40, 1 Kings 12:2, 1 Kings
14:4, 1 Kings 15:30, 1 Kings 20:10, 1 Kings 22:51, 2 Kings 4:16, 2 Kings 8:2, 1
Chronicles 17:11, 2 Chronicles 1:4, 2 Chronicles 14:14, 2 Chronicles 18:23, 2
Chronicles 19:7, 2 Chronicles 22:2, 2 Chronicles 22:4, 2 Chronicles 24:9, 2
Chronicles 27:1, 2 Chronicles 36:9, Ezra 8:1, Nehemiah 12:31, Job 1:21, Job
2:1, Job 42:12, Psalms 106:38, Psalms 139:16, Ecclesiastes 7:2, Song of Solomon
8:2, Isaiah 6:13, Isaiah 26:10, Isaiah 29:6, Isaiah 30:2, Isaiah 32:14, Isaiah
37:9, Isaiah 40:11, Isaiah 44:3, Isaiah 48:6, Isaiah 51:1, Isaiah 56:2, Isaiah
57:4, Isaiah 60:18, Isaiah 66:1, Jeremiah 2:18, Jeremiah 6:9, Jeremiah 14:8,
Jeremiah 15:6, Jeremiah 15:7, Jeremiah 15:10, Jeremiah 15:16, Jeremiah 35:2,
Jeremiah 50:19, Ezekiel 10:22, Ezekiel 13:23, Ezekiel 14:6, Ezekiel 18:31,
Ezekiel 22:22, Ezekiel 39:26, Ezekiel 41:4, Daniel 9:6, Joel 2:27, Jonah 3:10,
Zechariah 3:8, Zechariah 4:7, Zechariah 9:8, Zechariah 14:14, Matthew 3:9,
Matthew 7:22, Matthew 10:1, Mark 5:23, Mark 6:31, Mark 11:25, Luke 11:1, Luke
11:27, Luke 13:15, John 2:10, John 13:29, John 17:21, John 18:1, John 19:20,
Acts 7:44, Acts 11:18, Acts 19:16, Acts 25:7, 1 Corinthians 1:21, 1 Corinthians
8:10, 1 Corinthians 9:7, 2 Corinthians 8:9, Galatians 4:30, Ephesians 4:29, 1
Timothy 1:18, 1 Timothy 6:9, Hebrews 4:2, Hebrews 10:16, Hebrews 11:37, 1 Peter
3:4, Revelation 2:1, Revelation 6:10, Revelation 14:14, Revelation 17:2,
Revelation 17:7, Revelation 18:17, Revelation 22:8, Revelation 22:16, Genesis
14:14, Genesis 19:11, Genesis 24:5, Genesis 29:33, Genesis 31:39, Genesis
33:11, Genesis 35:2, Genesis 37:32, Genesis 38:29, Genesis 43:24, Genesis 44:1,
Exodus 7:10, Exodus 7:22, Exodus 16:35, Exodus 28:39, Exodus 32:6, Exodus 33:8,
Exodus 36:2, Exodus 36:11, Leviticus 4:4, Leviticus 7:36, Leviticus 18:9,
Leviticus 23:38, Leviticus 25:9, Leviticus 26:33, Numbers 7:5, Numbers 11:10,
Numbers 16:19, Numbers 26:4, Numbers 31:52, Deuteronomy 3:8, Deuteronomy 11:31,
Deuteronomy 19:11, Deuteronomy 23:5, Deuteronomy 26:18, Deuteronomy 28:4,
Deuteronomy 34:11, Joshua 3:7, Joshua 23:7, Joshua 24:31, Judges 8:27, Judges
9:19, Judges 11:11, Judges 11:19, Ruth 2:12, 1 Samuel 2:31, 1 Samuel 14:13, 1
Samuel 15:35, 1 Samuel 26:14, 2 Samuel 17:3, 2 Samuel 19:38, 2 Samuel 24:14, 1
Kings 1:17, 1 Kings 2:27, 1 Kings 4:27, 1 Kings 8:4, 1 Kings 18:19, 1 Kings
20:5, 1 Kings 20:17, 2 Kings 13:18, 2 Kings 17:20, 2 Kings 21:14, 2 Kings
23:22, 1 Chronicles 3:1, 1 Chronicles 7:7, 1 Chronicles 9:29, 1 Chronicles
25:5, 2 Chronicles 16:8, 2 Chronicles 21:4, 2 Chronicles 28:7, 2 Chronicles
29:15, 2 Chronicles 30:10, 2 Chronicles 34:2, Ezra 7:14, Ezra 9:5, Nehemiah
3:6, Nehemiah 7:64, Esther 9:15, Job 42:3, Psalms 65:4, Psalms 84:10, Isaiah
2:20, Isaiah 3:7, Isaiah 13:10, Isaiah 34:7, Isaiah 43:20, Isaiah 57:17, Isaiah
62:5, Jeremiah 7:24, Jeremiah 10:10, Jeremiah 11:20, Jeremiah 12:12, Jeremiah
25:32, Jeremiah 30:6, Jeremiah 32:20, Jeremiah 44:1, Jeremiah 48:41, Ezekiel
7:15, Ezekiel 11:19, Ezekiel 16:20, Ezekiel 16:49, Ezekiel 18:2, Ezekiel 23:7,
Ezekiel 27:16, Ezekiel 34:25, Ezekiel 44:18, Ezekiel 45:3, Ezekiel 45:18,
Daniel 11:16, Amos 5:5, Micah 1:16, Micah 4:8, Zephaniah 1:15, Matthew 17:4,
Matthew 19:18, Matthew 23:25, Mark 7:24, Mark 14:54, Luke 1:15, Luke 3:17, Luke
8:39, John 10:38, John 18:3, John 20:1, Acts 7:40, Acts 7:45, Acts 10:45, Acts
15:10, Acts 22:20, Romans 6:6, Romans 15:9, Romans 16:17, 1 Corinthians 4:7, 1
Corinthians 4:17, 1 Corinthians 5:1, 1 Corinthians 6:11, 1 Corinthians 16:2, 2
Corinthians 5:16, 2 Corinthians 7:8, Ephesians 1:11, Ephesians 4:28, Colossians
2:12, Colossians 2:18, 1 Timothy 5:13, Hebrews 11:8, James 5:17, 2 Peter 2:6, 1
John 2:7, 1 John 2:16, Revelation 6:12, Revelation 10:10, Revelation 21:5,
Genesis 2:20, Genesis 14:10, Genesis 19:30, Genesis 24:65, Genesis 31:29,
Genesis 41:42, Genesis 41:55, Genesis 43:33, Genesis 47:13, Genesis 49:29,
Genesis 50:15, Exodus 6:14, Exodus 14:31, Exodus 28:32, Exodus 36:12, Exodus
40:38, Leviticus 3:1, Leviticus 6:27, Leviticus 16:19, Leviticus 26:34, Numbers
6:7, Numbers 9:23, Numbers 14:19, Numbers 19:7, Deuteronomy 4:11, Deuteronomy
11:22, Deuteronomy 15:12, Deuteronomy 17:1, Deuteronomy 20:18, Deuteronomy
25:15, Deuteronomy 28:58, Joshua 9:13, Joshua 19:12, Judges 1:30, Judges 3:4,
Judges 6:30, Judges 19:12, 1 Samuel 4:8, 1 Samuel 4:20, 1 Samuel 6:13, 1 Samuel
6:21, 1 Samuel 7:9, 1 Samuel 12:2, 1 Samuel 12:15, 1 Samuel 15:32, 1 Samuel
19:3, 1 Samuel 26:11, 1 Samuel 26:24, 1 Samuel 29:10, 2 Samuel 7:6, 2 Samuel
11:10, 2 Samuel 11:23, 2 Samuel 13:25, 2 Samuel 17:15, 2 Samuel 18:20, 2 Samuel
18:26, 2 Samuel 22:16, 1 Kings 6:21, 1 Kings 11:32, 1 Kings 13:14, 1 Kings
18:43, 2 Kings 2:11, 2 Kings 2:24, 2 Kings 4:22, 2 Kings 13:2, 2 Kings 16:5, 1
Chronicles 13:14, 2 Chronicles 3:3, 2 Chronicles 14:1, 2 Chronicles 20:18, 2
Chronicles 23:5, 2 Chronicles 25:20, 2 Chronicles 28:6, 2 Chronicles 30:16, 2
Chronicles 34:15, Ezra 6:18, Nehemiah 13:2, Nehemiah 13:9, Esther 1:8, Esther
2:6, Psalms 40:12, Psalms 40:14, Psalms 68:18, Ecclesiastes 5:19, Isaiah 2:7,
Isaiah 5:6, Isaiah 8:14, Isaiah 10:4, Isaiah 13:13, Isaiah 17:5, Isaiah 17:8,
Isaiah 24:6, Isaiah 24:23, Isaiah 30:16, Isaiah 34:2, Isaiah 34:14, Isaiah
42:10, Isaiah 47:6, Isaiah 49:4, Jeremiah 21:14, Jeremiah 24:3, Jeremiah 33:20,
Jeremiah 37:20, Jeremiah 43:3, Jeremiah 51:5, Jeremiah 51:44, Jeremiah 51:52,
Ezekiel 7:26, Ezekiel 11:24, Ezekiel 16:19, Ezekiel 16:25, Ezekiel 20:18,
Ezekiel 24:16, Ezekiel 45:21, Daniel 4:26, Daniel 7:16, Daniel 8:2, Daniel
11:5, Hosea 2:3, Hosea 10:1, Amos 8:14, Micah 1:2, Nahum 1:6, Haggai 2:9,
Zechariah 7:3, Malachi 1:9, Matthew 18:17, Matthew 25:44, Mark 5:15, Mark
10:19, Luke 4:38, Luke 7:20, Luke 8:18, Luke 11:13, Luke 11:46, Luke 12:45,
Luke 13:4, Luke 17:27, Luke 21:21, Luke 23:8, Luke 24:18, John 1:38, John 4:27,
John 6:64, John 7:18, John 12:36, John 18:25, John 21:16, Acts 14:13, Acts
17:29, Acts 18:23, Acts 22:10, Acts 26:11, Romans 8:15, 2 Corinthians 5:10,
Ephesians 6:18, 2 Thessalonians 2:8, Hebrews 4:15, Hebrews 6:7, Hebrews 7:3, 1
Peter 2:6, 1 Peter 3:1, 1 Peter 3:15, 1 John 2:11, 2 John 1:9, Revelation 7:15,
Revelation 9:4, Genesis 3:19, Genesis 9:16, Genesis 14:2, Genesis 23:11,
Genesis 26:1, Genesis 26:20, Genesis 27:39, Genesis 28:2, Genesis 30:20, Exodus
1:16, Exodus 2:9, Exodus 10:1, Exodus 16:7, Exodus 38:1, Exodus 40:9, Leviticus
6:21, Leviticus 14:41, Leviticus 15:6, Leviticus 15:8, Leviticus 16:13,
Leviticus 26:40, Numbers 14:29, Numbers 14:36, Numbers 16:41, Numbers 22:38,
Numbers 26:10, Deuteronomy 1:21, Deuteronomy 1:33, Deuteronomy 5:29,
Deuteronomy 22:3, Deuteronomy 32:36, Joshua 2:23, Joshua 8:13, Joshua 14:7,
Joshua 23:5, Judges 5:26, Judges 6:29, Judges 9:45, Judges 13:3, Judges 21:14,
1 Samuel 12:23, 1 Samuel 15:24, 2 Samuel 7:26, 2 Samuel 14:6, 1 Kings 2:46, 1
Kings 6:8, 1 Kings 7:32, 1 Kings 11:28, 1 Kings 13:28, 1 Kings 18:30, 1 Kings
21:8, 2 Kings 2:19, 2 Kings 4:25, 2 Kings 4:26, 2 Kings 21:2, 1 Chronicles
4:42, 1 Chronicles 7:21, 1 Chronicles 25:2, 1 Chronicles 29:9, 2 Chronicles
12:10, 2 Chronicles 17:2, 2 Chronicles 18:19, 2 Chronicles 20:24, 2 Chronicles
28:8, 2 Chronicles 28:10, 2 Chronicles 30:3, 2 Chronicles 36:5, Ezra 10:11,
Nehemiah 4:13, Esther 9:3, Psalms 18:15, Ecclesiastes 3:14, Ecclesiastes 12:1,
Isaiah 3:12, Isaiah 9:3, Isaiah 19:7, Isaiah 29:21, Isaiah 41:1, Isaiah 59:9,
Jeremiah 3:14, Jeremiah 4:2, Jeremiah 8:3, Jeremiah 11:14, Jeremiah 12:3,
Jeremiah 17:19, Jeremiah 22:14, Jeremiah 23:20, Jeremiah 26:3, Jeremiah 44:10,
Jeremiah 48:36, Jeremiah 49:23, Jeremiah 50:17, Jeremiah 51:53, Ezekiel 3:21,
Ezekiel 13:2, Ezekiel 16:17, Ezekiel 17:3, Ezekiel 20:22, Ezekiel 24:17,
Ezekiel 27:9, Ezekiel 36:26, Ezekiel 40:13, Ezekiel 44:9, Ezekiel 45:5, Ezekiel
46:16, Daniel 1:13, Daniel 7:6, Hosea 11:9, Joel 1:14, Amos 2:2, Micah 3:8,
Micah 5:3, Zephaniah 3:5, Matthew 6:26, Matthew 13:35, Matthew 21:41, Matthew
24:2, Mark 2:8, Mark 2:15, Mark 6:11, Mark 7:6, Luke 7:25, Luke 8:12, Luke
9:22, Luke 11:51, Luke 12:3, Luke 15:20, Luke 17:2, Luke 22:37, John 3:18, John
4:47, John 14:17, Acts 8:9, Acts 9:2, Acts 20:3, Acts 20:32, 1 Corinthians
14:9, 1 Corinthians 15:52, 2 Corinthians 5:19, 2 Corinthians 10:15, 2
Corinthians 13:11, Galatians 1:10, Colossians 3:22, 1 Thessalonians 4:17, 1
Timothy 6:13, Hebrews 1:5, Revelation 2:9, Revelation 4:4, Revelation 8:10,
Revelation 21:16, Genesis 19:17, Genesis 34:24, Genesis 36:18, Genesis 37:8,
Genesis 41:56, Genesis 43:8, Genesis 45:11, Genesis 45:19, Exodus 8:16, Exodus
13:18, Exodus 17:2, Exodus 28:11, Exodus 29:33, Exodus 34:6, Exodus 39:6,
Leviticus 3:8, Leviticus 4:28, Leviticus 7:30, Leviticus 9:2, Leviticus 11:43,
Numbers 4:47, Numbers 5:25, Numbers 7:86, Numbers 11:21, Numbers 19:16, Numbers
31:26, Numbers 32:19, Deuteronomy 3:26, Deuteronomy 8:9, Deuteronomy 14:8,
Deuteronomy 31:28, Joshua 5:15, Joshua 7:19, Joshua 8:9, Joshua 15:3, Joshua
16:8, Judges 7:14, Judges 11:7, Judges 18:22, Judges 20:1, Ruth 2:13, 1 Samuel
7:13, 1 Samuel 9:12, 1 Samuel 13:21, 1 Samuel 14:39, 1 Samuel 15:26, 1 Samuel
23:2, 1 Samuel 28:18, 2 Samuel 1:20, 2 Samuel 2:22, 2 Samuel 11:8, 2 Samuel
12:7, 2 Samuel 15:31, 1 Kings 6:22, 1 Kings 7:23, 1 Kings 7:39, 1 Kings 11:20,
1 Kings 11:26, 1 Kings 14:27, 1 Kings 17:19, 1 Kings 17:23, 2 Kings 9:3, 2
Kings 20:19, 1 Chronicles 9:16, 1 Chronicles 16:1, 1 Chronicles 24:3, 2
Chronicles 2:3, 2 Chronicles 4:2, 2 Chronicles 20:16, 2 Chronicles 21:2, 2
Chronicles 25:10, 2 Chronicles 32:6, Ezra 1:7, Ezra 4:10, Ezra 7:27, Nehemiah
11:7, Job 32:2, Psalms 5:11, Psalms 69:6, Psalms 78:4, Ecclesiastes 8:8,
Ecclesiastes 8:10, Isaiah 1:7, Isaiah 10:16, Isaiah 11:13, Isaiah 22:5, Isaiah
54:2, Isaiah 58:6, Isaiah 58:10, Isaiah 59:7, Isaiah 62:6, Jeremiah 11:22,
Jeremiah 23:28, Jeremiah 24:7, Jeremiah 25:13, Jeremiah 27:10, Jeremiah 32:7,
Jeremiah 36:4, Jeremiah 38:19, Jeremiah 42:11, Jeremiah 49:1, Jeremiah 49:14,
Jeremiah 51:22, Jeremiah 51:35, Jeremiah 52:30, Lamentations 1:13, Lamentations
4:21, Ezekiel 10:6, Ezekiel 30:4, Ezekiel 40:24, Ezekiel 44:27, Daniel 9:21,
Daniel 11:35, Micah 2:13, Nahum 1:12, Malachi 2:8, Malachi 3:17, Matthew 3:7,
Matthew 5:45, Matthew 6:1, Matthew 13:14, Matthew 20:8, Matthew 23:16, Matthew
25:34, Mark 4:17, Mark 8:34, Mark 13:35, Luke 10:30, Luke 12:24, Luke 12:36,
Luke 18:29, Luke 21:36, John 6:40, John 13:10, Acts 5:15, Acts 14:27, Acts
15:12, Acts 17:15, Acts 22:22, Acts 24:1, Acts 25:15, Romans 10:19, Romans
12:20, Romans 13:7, 1 Corinthians 2:11, 1 Corinthians 7:30, 2 Corinthians 7:1,
2 Corinthians 8:7, Colossians 4:10, Titus 1:9, Titus 3:5, Hebrews 9:9, Hebrews
10:22, 1 Peter 4:17, 1 Peter 5:12, 2 Peter 1:3, 1 John 2:24, 1 John 4:6,
Revelation 2:18, Revelation 15:4, Revelation 18:9, Revelation 19:1, Genesis
15:18, Genesis 20:3, Genesis 23:10, Genesis 31:1, Genesis 42:35, Genesis 44:31,
Genesis 47:20, Exodus 2:10, Exodus 3:2, Exodus 17:9, Exodus 22:10, Exodus
38:27, Leviticus 11:27, Leviticus 14:19, Leviticus 14:52, Leviticus 17:7,
Leviticus 21:12, Leviticus 26:30, Numbers 8:8, Numbers 9:3, Numbers 21:18,
Numbers 28:19, Numbers 31:9, Deuteronomy 11:13, Deuteronomy 22:8, Deuteronomy
26:16, Deuteronomy 28:8, Deuteronomy 28:32, Deuteronomy 28:35, Deuteronomy
32:22, Deuteronomy 33:8, Deuteronomy 33:9, Joshua 1:2, Joshua 1:13, Joshua
4:14, Joshua 9:6, Joshua 13:30, Joshua 15:5, Judges 1:10, 1 Samuel 3:17, 1
Samuel 9:3, 1 Samuel 14:19, 1 Samuel 15:30, 1 Samuel 19:10, 1 Samuel 30:23, 2
Samuel 2:4, 2 Samuel 3:1, 2 Samuel 3:23, 2 Samuel 10:9, 1 Kings 1:5, 1 Kings
1:11, 1 Kings 1:39, 1 Kings 1:42, 1 Kings 3:7, 1 Kings 6:20, 1 Kings 18:31, 1
Kings 18:42, 2 Kings 8:16, 2 Kings 15:18, 2 Kings 16:8, 2 Kings 16:9, 1
Chronicles 5:10, 1 Chronicles 7:15, 1 Chronicles 12:20, 1 Chronicles 18:4, 1
Chronicles 19:10, 2 Chronicles 7:17, 2 Chronicles 29:7, 2 Chronicles 29:11,
Ezra 1:6, Nehemiah 4:10, Nehemiah 12:35, Job 28:4, Ecclesiastes 11:6, Isaiah
15:2, Isaiah 30:1, Isaiah 36:15, Isaiah 39:7, Isaiah 41:9, Isaiah 46:11, Isaiah
61:4, Jeremiah 3:21, Jeremiah 9:22, Jeremiah 11:5, Jeremiah 16:7, Jeremiah
27:14, Jeremiah 42:15, Jeremiah 49:12, Jeremiah 50:40, Lamentations 1:6,
Ezekiel 11:21, Ezekiel 13:21, Ezekiel 22:30, Daniel 2:43, Hosea 11:4, Micah
1:1, Habakkuk 2:3, Zephaniah 3:9, Haggai 2:16, Haggai 2:19, Zechariah 1:17,
Zechariah 2:4, Zechariah 8:14, Matthew 8:4, Matthew 26:18, Luke 5:14, Luke 7:9,
Luke 11:26, Luke 23:35, John 6:32, John 12:13, John 14:26, Acts 13:17, Acts
26:29, 1 Corinthians 10:16, 1 Corinthians 14:23, Colossians 4:11, 2 Timothy
3:11, Hebrews 11:16, James 2:11, 2 Peter 1:16, 1 John 2:18, 1 John 4:20,
Revelation 18:10, Revelation 21:19, Genesis 11:29, Genesis 35:4, Exodus 7:21,
Exodus 12:3, Exodus 14:19, Exodus 19:23, Exodus 31:15, Exodus 31:17, Exodus
36:24, Leviticus 4:2, Leviticus 4:22, Leviticus 5:8, Leviticus 8:2, Leviticus
13:21, Leviticus 13:26, Leviticus 13:27, Leviticus 15:14, Leviticus 18:23,
Numbers 2:2, Numbers 7:83, Numbers 17:5, Numbers 22:33, Numbers 23:17, Numbers
25:14, Numbers 26:12, Numbers 26:26, Numbers 26:38, Numbers 28:11, Numbers
29:11, Numbers 35:27, Deuteronomy 4:5, Deuteronomy 18:1, Deuteronomy 18:18,
Deuteronomy 19:1, Deuteronomy 22:25, Deuteronomy 23:2, Deuteronomy 23:21,
Deuteronomy 28:49, Deuteronomy 29:21, Deuteronomy 32:39, Joshua 2:22, Joshua
6:9, Joshua 7:17, Joshua 13:9, Joshua 17:7, Judges 8:1, Judges 10:9, Judges
17:9, Judges 19:19, Judges 20:5, 1 Samuel 2:1, 1 Samuel 16:2, 2 Samuel 3:26, 2
Samuel 3:39, 2 Samuel 13:2, 2 Samuel 13:18, 2 Samuel 14:30, 2 Samuel 15:19, 1
Kings 2:44, 1 Kings 8:65, 1 Kings 12:11, 1 Kings 19:16, 2 Kings 6:10, 2 Kings
6:19, 2 Kings 6:33, 2 Kings 10:29, 2 Kings 19:20, 1 Chronicles 15:2, 1
Chronicles 29:10, 1 Chronicles 29:12, 2 Chronicles 1:2, 2 Chronicles 10:11, 2
Chronicles 13:10, 2 Chronicles 21:10, Nehemiah 4:23, Nehemiah 8:2, Esther 1:20,
Job 1:7, Psalms 28:4, Psalms 35:26, Psalms 145:13, Ecclesiastes 2:15,
Ecclesiastes 4:16, Isaiah 14:25, Isaiah 26:11, Isaiah 27:10, Isaiah 32:2,
Isaiah 41:15, Isaiah 44:14, Isaiah 51:8, Jeremiah 2:7, Jeremiah 15:1, Jeremiah
29:10, Jeremiah 30:17, Jeremiah 30:24, Jeremiah 32:18, Jeremiah 42:14, Jeremiah
45:4, Jeremiah 49:13, Jeremiah 50:3, Jeremiah 51:23, Lamentations 2:18, Ezekiel
16:14, Ezekiel 23:27, Ezekiel 26:5, Ezekiel 43:25, Ezekiel 46:21, Daniel 4:31,
Daniel 9:20, Daniel 11:13, Daniel 11:21, Daniel 11:28, Daniel 11:43, Hosea
5:14, Hosea 6:3, Amos 2:1, Amos 5:12, Zechariah 8:21, Matthew 7:11, Matthew
15:22, Matthew 22:13, Mark 11:11, Luke 2:34, Luke 5:19, Luke 9:45, Luke 11:8,
John 2:22, John 8:52, John 11:39, John 11:44, John 12:9, Acts 7:6, Acts 7:26,
Acts 9:11, Acts 15:36, Acts 23:20, Acts 27:43, 1 Corinthians 9:21, 2
Corinthians 3:14, Galatians 2:12, Colossians 2:19, 1 Thessalonians 5:23, 2
Thessalonians 2:4, Titus 1:1, Hebrews 9:12, Hebrews 12:11, James 3:4, 1 Peter
1:8, 1 Peter 5:1, 2 Peter 2:5, 1 John 4:3, 2 John 1:12, Revelation 11:2,
Revelation 11:9, Revelation 16:13, Genesis 19:15, Genesis 27:30, Genesis 27:31,
Genesis 42:19, Exodus 1:19, Exodus 10:9, Exodus 30:36, Exodus 31:18, Exodus
38:19, Exodus 39:41, Leviticus 2:16, Leviticus 6:17, Leviticus 7:37, Leviticus
13:42, Leviticus 14:12, Leviticus 15:31, Leviticus 20:5, Leviticus 27:27,
Numbers 5:24, Numbers 7:29, Numbers 11:22, Numbers 15:29, Numbers 20:10,
Numbers 23:24, Numbers 35:30, Deuteronomy 1:16, Deuteronomy 1:31, Deuteronomy
17:7, Deuteronomy 32:42, Joshua 2:3, Joshua 9:4, Joshua 9:10, Joshua 11:15,
Joshua 13:12, Joshua 18:20, Judges 4:7, Judges 5:28, Judges 8:7, Judges 16:21,
Judges 20:34, Ruth 4:17, 1 Samuel 2:32, 1 Samuel 17:36, 1 Samuel 17:57, 1
Samuel 21:13, 1 Samuel 22:11, 1 Samuel 30:14, 2 Samuel 2:24, 2 Samuel 2:30, 2
Samuel 8:6, 2 Samuel 17:13, 2 Samuel 19:20, 1 Kings 1:6, 1 Kings 2:20, 2 Kings
3:26, 2 Kings 4:10, 2 Kings 10:11, 2 Kings 15:19, 2 Kings 20:12, 2 Kings 21:19,
1 Chronicles 21:18, 1 Chronicles 27:24, 2 Chronicles 2:10, 2 Chronicles 13:7, 2
Chronicles 23:2, 2 Chronicles 25:17, 2 Chronicles 32:7, Nehemiah 2:9, Nehemiah
13:10, Esther 9:18, Ecclesiastes 5:2, Song of Solomon 7:4, Isaiah 3:14, Isaiah
14:20, Isaiah 31:9, Isaiah 35:4, Isaiah 57:1, Isaiah 63:16, Jeremiah 7:6,
Jeremiah 7:14, Jeremiah 18:20, Jeremiah 20:7, Jeremiah 37:14, Jeremiah 39:10,
Jeremiah 52:18, Ezekiel 1:3, Ezekiel 3:13, Ezekiel 7:11, Ezekiel 7:24, Ezekiel
12:28, Ezekiel 14:8, Ezekiel 21:15, Ezekiel 33:25, Ezekiel 36:33, Ezekiel
38:15, Ezekiel 39:25, Ezekiel 40:39, Ezekiel 42:11, Daniel 8:11, Hosea 5:13,
Hosea 10:11, Amos 3:14, Amos 3:15, Obadiah 1:16, Micah 6:14, Nahum 3:19,
Habakkuk 2:18, Zephaniah 2:11, Zechariah 4:9, Matthew 3:12, Matthew 15:31, Mark
11:18, Luke 7:24, Luke 12:11, Luke 13:19, Luke 21:34, John 6:5, John 14:12,
Acts 14:3, Acts 14:22, Acts 15:5, Acts 15:23, Romans 1:29, Romans 3:5, 1
Corinthians 7:4, 1 Corinthians 10:28, 1 Corinthians 11:25, 1 Corinthians 11:34,
1 Corinthians 15:28, 2 Corinthians 13:4, 2 Corinthians 13:7, Galatians 3:21, 2
Thessalonians 1:11, 2 Thessalonians 2:3, 1 Timothy 5:16, Hebrews 5:12, Hebrews
6:4, Hebrews 9:28, Hebrews 12:5, James 5:16, 1 John 1:2, 2 John 1:6, Revelation
16:14, Revelation 19:17, Genesis 8:1, Genesis 10:32, Genesis 22:6, Genesis
24:49, Genesis 30:41, Genesis 39:23, Genesis 46:15, Exodus 3:6, Exodus 4:10,
Exodus 5:19, Exodus 9:14, Exodus 9:24, Exodus 11:7, Exodus 14:26, Exodus 35:2,
Leviticus 4:27, Leviticus 6:30, Leviticus 7:15, Leviticus 7:20, Leviticus
16:23, Leviticus 20:19, Leviticus 21:7, Leviticus 25:45, Leviticus 27:21,
Numbers 3:26, Numbers 3:39, Numbers 5:2, Numbers 5:26, Numbers 15:30, Numbers
16:7, Numbers 20:16, Deuteronomy 2:29, Deuteronomy 22:14, Deuteronomy 24:14,
Deuteronomy 31:19, Deuteronomy 33:19, Joshua 10:35, Joshua 16:5, Joshua 23:6,
Judges 20:4, 1 Samuel 14:30, 1 Samuel 17:12, 1 Samuel 17:33, 1 Samuel 20:34, 1
Samuel 26:25, 1 Samuel 28:3, 2 Samuel 7:14, 2 Samuel 21:6, 2 Samuel 24:9, 1
Kings 2:36, 1 Kings 5:8, 1 Kings 8:28, 1 Kings 10:19, 1 Kings 21:20, 1 Kings
22:42, 2 Kings 18:30, 2 Kings 19:2, 2 Kings 22:1, 1 Chronicles 1:43, 1
Chronicles 17:10, 1 Chronicles 18:6, 1 Chronicles 23:31, 2 Chronicles 3:12, 2
Chronicles 24:7, 2 Chronicles 29:1, 2 Chronicles 35:4, Ezra 2:62, Nehemiah
8:14, Nehemiah 9:4, Esther 5:12, Psalms 74:2, Ecclesiastes 7:25, Isaiah 8:4,
Isaiah 37:2, Isaiah 41:18, Isaiah 44:8, Isaiah 56:5, Isaiah 59:13, Jeremiah
4:5, Jeremiah 7:30, Jeremiah 9:19, Jeremiah 10:7, Jeremiah 26:12, Jeremiah
27:7, Jeremiah 34:8, Jeremiah 35:6, Jeremiah 41:6, Jeremiah 48:38, Jeremiah
51:2, Jeremiah 52:21, Ezekiel 13:11, Ezekiel 13:15, Ezekiel 16:3, Ezekiel
24:23, Ezekiel 26:14, Ezekiel 33:9, Daniel 9:19, Daniel 10:7, Amos 4:2, Micah
3:3, Micah 7:4, Habakkuk 2:1, Matthew 2:8, Matthew 6:30, Matthew 8:32, Matthew
11:5, Matthew 13:54, Matthew 15:30, Mark 6:34, Mark 8:17, Mark 9:1, Mark 9:20,
Mark 12:34, Luke 3:5, Luke 16:3, Luke 22:66, John 3:26, John 7:39, John 12:6,
John 21:3, Acts 4:24, Acts 7:10, Acts 11:28, Acts 17:3, Acts 17:13, Acts 19:12,
Acts 22:24, Acts 24:10, Romans 12:8, 1 Corinthians 14:26, 2 Corinthians 4:6,
Galatians 2:4, Ephesians 4:13, Philippians 4:12, 2 Timothy 2:19, James 1:25, 2
Peter 2:10, 2 John 1:7, Genesis 3:24, Genesis 7:4, Genesis 8:11, Genesis 16:3,
Genesis 18:10, Genesis 22:12, Genesis 24:53, Genesis 24:60, Genesis 28:4,
Genesis 31:12, Genesis 35:11, Genesis 44:26, Exodus 12:31, Exodus 24:7, Exodus
35:19, Leviticus 7:38, Leviticus 9:22, Leviticus 13:56, Leviticus 14:37,
Numbers 4:31, Numbers 6:15, Numbers 7:23, Numbers 7:77, Numbers 11:11, Numbers
24:16, Deuteronomy 9:19, Deuteronomy 12:14, Deuteronomy 16:2, Deuteronomy
18:14, Deuteronomy 24:13, Deuteronomy 28:54, Deuteronomy 32:8, Joshua 7:2,
Joshua 9:21, Joshua 22:17, Judges 9:25, Judges 16:19, Judges 20:2, Judges
20:15, 1 Samuel 3:9, 1 Samuel 4:1, 1 Samuel 10:14, 1 Samuel 12:7, 2 Samuel
15:27, 2 Samuel 18:17, 2 Samuel 24:20, 1 Kings 4:19, 1 Kings 8:21, 1 Kings
22:11, 2 Kings 2:10, 2 Kings 4:2, 2 Kings 4:8, 2 Kings 6:28, 2 Kings 9:20, 2
Kings 19:25, 2 Kings 21:17, 2 Kings 24:18, 1 Chronicles 10:13, 1 Chronicles
12:23, 1 Chronicles 15:25, 1 Chronicles 16:35, 1 Chronicles 21:5, 1 Chronicles
21:13, 1 Chronicles 23:32, 2 Chronicles 4:13, 2 Chronicles 18:10, 2 Chronicles
21:9, 2 Chronicles 28:21, 2 Chronicles 31:4, Ezra 2:42, Ezra 7:23, Ezra 8:15,
Ezra 8:28, Nehemiah 4:17, Job 32:6, Song of Solomon 2:3, Song of Solomon 5:6,
Isaiah 1:13, Isaiah 5:19, Isaiah 8:8, Isaiah 26:14, Isaiah 26:18, Isaiah 43:1,
Isaiah 45:3, Isaiah 45:19, Isaiah 50:10, Isaiah 59:10, Isaiah 60:4, Isaiah
63:17, Jeremiah 8:7, Jeremiah 11:21, Jeremiah 26:13, Jeremiah 27:6, Jeremiah
27:13, Jeremiah 27:22, Jeremiah 38:20, Jeremiah 51:39, Jeremiah 52:1, Ezekiel
3:23, Ezekiel 7:8, Ezekiel 7:20, Ezekiel 13:6, Ezekiel 17:21, Ezekiel 22:28,
Ezekiel 25:9, Ezekiel 34:29, Ezekiel 36:35, Ezekiel 42:3, Ezekiel 48:11, Daniel
4:7, Hosea 9:1, Hosea 14:7, Joel 1:12, Amos 7:9, Matthew 4:18, Matthew 5:30,
Matthew 12:18, Matthew 12:40, Matthew 25:21, Matthew 25:23, Matthew 26:47,
Matthew 27:3, Mark 1:44, Mark 2:17, Mark 6:37, Luke 4:29, Luke 5:10, Luke 8:43,
Luke 9:26, Luke 12:28, Luke 12:42, Luke 18:11, Luke 22:19, John 13:33, Acts
13:10, Romans 1:21, Galatians 2:7, 1 Timothy 2:9, Hebrews 9:23, 1 Peter 5:2,
Jude 1:5, Revelation 6:4, Revelation 13:12, Revelation 14:8, Revelation 16:21,
Revelation 17:14, Revelation 21:20, Genesis 5:29, Genesis 15:5, Genesis 17:13,
Genesis 27:34, Genesis 29:32, Genesis 31:8, Genesis 43:9, Genesis 49:10, Exodus
15:9, Exodus 21:36, Exodus 26:10, Exodus 37:16, Exodus 39:14, Leviticus 3:3,
Leviticus 21:14, Leviticus 22:27, Leviticus 25:35, Leviticus 26:17, Numbers
4:41, Numbers 5:6, Numbers 7:35, Numbers 7:47, Numbers 7:65, Numbers 7:87,
Numbers 8:26, Numbers 12:8, Numbers 14:11, Numbers 30:11, Deuteronomy 3:4,
Deuteronomy 13:18, Deuteronomy 24:15, Deuteronomy 29:29, Joshua 5:7, Joshua
15:63, Joshua 18:3, Joshua 23:12, Judges 1:19, Judges 2:2, Judges 4:15, Judges
7:7, Judges 13:19, Ruth 1:21, Ruth 2:10, 1 Samuel 6:2, 1 Samuel 9:26, 1 Samuel
14:28, 1 Samuel 17:9, 1 Samuel 17:17, 1 Samuel 22:5, 1 Samuel 30:24, 2 Samuel
3:31, 2 Samuel 15:8, 2 Samuel 17:2, 1 Kings 3:18, 1 Kings 3:21, 1 Kings 4:33, 1
Kings 13:25, 1 Kings 22:45, 2 Kings 6:12, 2 Kings 8:14, 2 Kings 16:6, 2 Kings
24:16, 1 Chronicles 6:54, 1 Chronicles 9:12, 2 Chronicles 1:14, 2 Chronicles
7:1, 2 Chronicles 25:12, Ezra 2:2, Ezra 2:68, Ezra 5:1, Nehemiah 2:20, Esther
3:1, Esther 6:3, Job 2:2, Song of Solomon 2:14, Isaiah 7:3, Isaiah 21:2, Isaiah
28:1, Isaiah 37:16, Isaiah 37:21, Isaiah 44:16, Isaiah 60:13, Isaiah 64:2,
Jeremiah 19:5, Jeremiah 24:6, Jeremiah 27:21, Jeremiah 42:1, Jeremiah 48:12,
Jeremiah 50:12, Jeremiah 50:18, Lamentations 1:16, Lamentations 4:6, Ezekiel
3:15, Ezekiel 3:19, Ezekiel 4:5, Ezekiel 8:10, Ezekiel 10:1, Ezekiel 12:2,
Ezekiel 22:12, Ezekiel 25:6, Ezekiel 32:21, Ezekiel 37:11, Ezekiel 39:15,
Ezekiel 47:13, Daniel 2:6, Daniel 3:1, Daniel 8:27, Hosea 8:7, Hosea 13:8, Joel
3:17, Joel 3:19, Amos 1:14, Jonah 1:7, Nahum 3:15, Malachi 3:11, Matthew 10:23,
Matthew 13:44, Matthew 14:13, Mark 5:4, Mark 6:3, Mark 10:38, Mark 12:43, Luke
3:4, Luke 4:35, Luke 7:37, Luke 9:42, Luke 21:23, John 5:24, John 14:21, John
18:15, Acts 4:21, Acts 14:17, Acts 18:8, Acts 21:34, Acts 23:11, Acts 24:21,
Acts 28:25, Romans 2:15, Romans 7:6, Romans 15:4, 1 Corinthians 4:9, Ephesians
6:9, 1 Thessalonians 2:9, 1 Thessalonians 4:6, 2 Timothy 4:3, James 1:27, James
5:3, 1 Peter 1:13, 1 Peter 4:3, 2 Peter 2:21, 2 Peter 3:4, Revelation 2:23,
Revelation 17:1, Revelation 17:16, Revelation 19:9, Revelation 20:9, Genesis
9:15, Genesis 14:13, Genesis 18:28, Genesis 27:25, Genesis 28:15, Genesis 32:9,
Genesis 37:7, Genesis 40:13, Genesis 41:14, Genesis 41:35, Genesis 48:13,
Exodus 3:7, Exodus 5:1, Exodus 23:27, Exodus 24:8, Leviticus 2:4, Leviticus
4:14, Leviticus 15:3, Numbers 28:3, Numbers 29:8, Numbers 29:12, Numbers 30:7,
Deuteronomy 6:15, Deuteronomy 7:12, Deuteronomy 11:25, Deuteronomy 17:9,
Deuteronomy 29:13, Deuteronomy 32:13, Joshua 3:6, Joshua 24:19, Joshua 24:26,
Judges 1:21, Judges 3:27, Judges 18:18, 1 Samuel 1:15, 1 Samuel 12:12, 1 Samuel
13:12, 1 Samuel 13:22, 1 Samuel 20:6, 1 Samuel 20:31, 1 Samuel 24:6, 2 Samuel
3:14, 2 Samuel 10:5, 2 Samuel 10:16, 2 Samuel 13:36, 2 Samuel 21:7, 1 Kings
7:6, 1 Kings 18:18, 1 Kings 22:32, 2 Kings 8:8, 2 Kings 13:1, 2 Kings 15:35, 2
Kings 21:12, 1 Chronicles 1:50, 1 Chronicles 15:28, 1 Chronicles 17:1, 2
Chronicles 2:17, 2 Chronicles 11:1, 2 Chronicles 16:6, 2 Chronicles 18:18, 2
Chronicles 20:22, 2 Chronicles 22:8, 2 Chronicles 25:14, Ezra 4:13, Psalms
32:5, Ecclesiastes 1:16, Isaiah 5:5, Isaiah 19:2, Isaiah 30:27, Isaiah 42:6,
Isaiah 45:23, Jeremiah 1:16, Jeremiah 4:29, Jeremiah 13:22, Jeremiah 22:13,
Jeremiah 28:16, Jeremiah 31:4, Jeremiah 38:7, Jeremiah 48:15, Jeremiah 51:56,
Ezekiel 20:26, Ezekiel 21:26, Ezekiel 22:29, Ezekiel 23:35, Ezekiel 33:21,
Ezekiel 40:19, Ezekiel 47:4, Daniel 1:7, Daniel 5:20, Daniel 7:13, Hosea 13:3,
Micah 1:13, Zechariah 1:8, Zechariah 1:11, Zechariah 9:13, Matthew 2:6, Matthew
12:4, Matthew 20:21, Matthew 20:30, Matthew 26:64, Mark 6:20, Luke 1:22, Luke
4:41, Luke 6:4, Luke 10:2, Luke 10:35, Luke 16:24, Luke 17:6, John 3:8, John
4:23, John 12:38, Acts 5:37, Acts 17:11, 1 Corinthians 3:13, 1 Corinthians
10:27, 1 Corinthians 13:2, 1 Corinthians 15:15, 2 Corinthians 2:4, 2
Corinthians 7:9, 2 Corinthians 12:11, Ephesians 2:11, Colossians 1:24, 1
Thessalonians 3:5, 1 Thessalonians 4:15, Hebrews 6:1, Hebrews 11:12, 1 Peter
3:16, Revelation 14:9, Revelation 21:12, Genesis 6:13, Genesis 17:8, Genesis
46:29, Genesis 48:20, Genesis 50:8, Exodus 7:15, Exodus 18:1, Exodus 26:37,
Exodus 28:41, Exodus 30:6, Exodus 34:11, Leviticus 3:5, Leviticus 8:25,
Leviticus 10:7, Leviticus 13:57, Leviticus 21:23, Leviticus 25:6, Numbers 5:7,
Numbers 5:20, Numbers 7:53, Numbers 26:2, Numbers 26:20, Deuteronomy 2:22,
Deuteronomy 7:4, Deuteronomy 7:22, Deuteronomy 19:4, Joshua 3:8, Joshua 18:5,
Judges 14:17, Judges 16:29, 1 Samuel 3:13, 1 Samuel 11:2, 1 Samuel 12:20, 1
Samuel 15:33, 1 Samuel 23:19, 2 Samuel 4:10, 2 Samuel 5:3, 2 Samuel 20:2, 2
Samuel 20:19, 1 Kings 3:9, 1 Kings 4:31, 1 Kings 14:24, 1 Kings 16:19, 2 Kings
9:2, 2 Kings 10:31, 2 Kings 13:6, 2 Kings 23:36, 1 Chronicles 5:18, 1
Chronicles 9:33, 1 Chronicles 15:17, 1 Chronicles 29:18, 2 Chronicles 29:19, 2
Chronicles 33:13, 2 Chronicles 34:11, 2 Chronicles 36:20, Esther 8:1, Psalms
57:1, Psalms 59:16, Psalms 75:8, Ecclesiastes 7:15, Ecclesiastes 12:4, Isaiah
1:26, Isaiah 3:5, Isaiah 21:9, Isaiah 25:6, Isaiah 33:14, Isaiah 34:10, Isaiah
35:7, Isaiah 36:18, Isaiah 43:23, Isaiah 49:13, Isaiah 53:3, Jeremiah 2:28,
Jeremiah 6:12, Jeremiah 6:20, Jeremiah 10:16, Jeremiah 13:7, Jeremiah 34:13,
Jeremiah 50:39, Jeremiah 51:19, Ezekiel 1:11, Ezekiel 4:4, Ezekiel 18:13,
Ezekiel 41:25, Daniel 2:47, Daniel 2:48, Daniel 6:16, Jonah 1:6, Jonah 4:11,
Micah 5:5, Zephaniah 1:1, Zephaniah 3:15, Haggai 2:2, Zechariah 11:17, Matthew
5:29, Matthew 16:23, Matthew 26:24, Matthew 28:7, Mark 4:32, Mark 10:29, Mark
12:19, Mark 13:14, Luke 18:31, Luke 19:8, Luke 20:37, John 15:19, Acts 5:28,
Acts 7:4, Acts 13:38, Acts 17:26, Acts 19:21, Acts 23:18, Acts 28:15, 1
Corinthians 9:10, 2 Corinthians 4:18, 1 Thessalonians 2:8, 2 Thessalonians 1:4,
2 Thessalonians 2:2, 1 Timothy 6:10, 2 Timothy 1:10, James 1:12, 1 John 3:12,
Revelation 1:7, Revelation 3:10, Revelation 4:10, Revelation 14:6, Revelation
17:12, Genesis 6:17, Genesis 13:14, Genesis 24:43, Genesis 24:67, Genesis
26:28, Genesis 37:20, Genesis 39:6, Genesis 42:34, Genesis 43:14, Genesis
44:17, Genesis 49:6, Exodus 1:14, Exodus 4:6, Exodus 9:23, Exodus 9:33, Exodus
14:17, Exodus 26:19, Exodus 26:35, Exodus 29:13, Exodus 37:17, Exodus 38:26,
Exodus 39:3, Exodus 39:32, Leviticus 12:5, Leviticus 16:12, Leviticus 21:6,
Leviticus 23:2, Leviticus 24:10, Numbers 3:12, Numbers 7:17, Numbers 7:59,
Numbers 13:22, Numbers 14:33, Numbers 23:19, Numbers 25:4, Numbers 28:9,
Numbers 30:16, Deuteronomy 1:3, Deuteronomy 9:1, Deuteronomy 10:6, Deuteronomy
12:20, Deuteronomy 17:6, Deuteronomy 18:20, Deuteronomy 22:22, Deuteronomy
33:7, Deuteronomy 34:1, Joshua 8:21, Joshua 13:16, Joshua 15:1, Joshua 19:49,
Judges 4:17, Judges 13:14, Judges 14:8, Ruth 3:14, 1 Samuel 3:6, 1 Samuel 9:22,
1 Samuel 14:17, 1 Samuel 14:40, 1 Samuel 17:1, 1 Samuel 22:3, 1 Samuel 30:17, 2
Samuel 2:5, 2 Samuel 15:10, 2 Samuel 18:4, 2 Samuel 18:27, 2 Samuel 21:15, 2
Samuel 21:16, 1 Kings 16:26, 2 Kings 5:12, 2 Kings 14:11, 2 Kings 15:9, 2 Kings
17:23, 2 Kings 24:8, 1 Chronicles 11:13, 1 Chronicles 29:7, 2 Chronicles 29:8,
2 Chronicles 34:14, Ezra 6:11, Nehemiah 5:12, Nehemiah 8:12, Nehemiah 12:38,
Job 1:12, Ecclesiastes 10:20, Isaiah 7:8, Isaiah 13:11, Isaiah 23:15, Isaiah
30:20, Isaiah 40:31, Isaiah 53:5, Isaiah 59:6, Isaiah 59:17, Jeremiah 4:22,
Jeremiah 6:26, Jeremiah 9:2, Jeremiah 10:20, Jeremiah 13:14, Jeremiah 17:3,
Jeremiah 17:24, Jeremiah 29:17, Lamentations 2:16, Ezekiel 5:1, Ezekiel 11:5,
Ezekiel 25:16, Ezekiel 31:4, Ezekiel 35:3, Ezekiel 39:27, Ezekiel 43:19,
Ezekiel 46:5, Daniel 11:38, Hosea 10:13, Hosea 12:11, Joel 3:8, Micah 1:6,
Zephaniah 2:3, Zechariah 14:20, Mark 2:12, Mark 8:23, Luke 8:24, Luke 12:46,
Luke 13:7, Luke 16:8, Luke 16:15, John 12:42, Acts 7:5, Acts 16:3, Romans 8:3,
Romans 11:11, Romans 12:1, 1 Corinthians 4:8, 1 Corinthians 9:13, Philippians
2:12, Philippians 2:15, 1 Thessalonians 2:16, Hebrews 7:28, Hebrews 8:11, 2
Peter 1:17, 1 John 2:1, Revelation 1:5, Revelation 6:5, Revelation 7:17,
Revelation 10:7, Revelation 22:9, Genesis 1:14, Genesis 4:23, Genesis 9:5,
Genesis 9:11, Genesis 40:8, Genesis 46:5, Genesis 48:5, Exodus 13:14, Exodus
14:20, Exodus 14:21, Exodus 14:25, Leviticus 2:14, Leviticus 8:23, Leviticus
13:13, Leviticus 15:33, Leviticus 23:20, Leviticus 25:16, Leviticus 26:13,
Numbers 4:9, Numbers 4:33, Numbers 4:37, Numbers 14:3, Numbers 14:24, Numbers
15:26, Numbers 18:32, Numbers 20:6, Numbers 21:26, Numbers 32:28, Deuteronomy
10:10, Deuteronomy 15:14, Deuteronomy 20:6, Deuteronomy 27:4, Joshua 9:27,
Joshua 18:9, Judges 16:24, Ruth 1:12, 1 Samuel 6:17, 2 Samuel 4:11, 2 Samuel
8:14, 2 Samuel 10:17, 2 Samuel 16:5, 2 Samuel 20:7, 1 Kings 3:23, 1 Kings 4:24,
1 Kings 7:12, 1 Kings 10:26, 1 Kings 11:4, 1 Kings 12:6, 1 Kings 14:22, 1 Kings
16:15, 1 Kings 19:2, 1 Kings 21:10, 1 Kings 22:3, 2 Kings 1:11, 2 Kings 9:14, 2
Kings 10:2, 2 Kings 10:8, 2 Kings 10:17, 2 Kings 14:23, 2 Kings 23:31, 2 Kings
25:22, 1 Chronicles 18:8, 1 Chronicles 21:8, 1 Chronicles 21:24, 1 Chronicles
22:2, 2 Chronicles 1:5, 2 Chronicles 10:6, 2 Chronicles 16:2, 2 Chronicles
20:2, 2 Chronicles 31:18, Ezra 8:36, Nehemiah 3:7, Nehemiah 4:22, Nehemiah
11:12, Psalms 27:6, Psalms 53:5, Psalms 78:8, Ecclesiastes 5:1, Isaiah 3:9,
Isaiah 9:12, Isaiah 10:2, Isaiah 19:23, Isaiah 30:17, Isaiah 34:17, Isaiah
39:4, Isaiah 41:17, Isaiah 44:7, Isaiah 45:9, Isaiah 45:11, Isaiah 49:10,
Isaiah 60:11, Jeremiah 2:20, Jeremiah 7:13, Jeremiah 12:1, Jeremiah 15:15,
Jeremiah 21:1, Jeremiah 25:5, Jeremiah 29:2, Jeremiah 31:19, Jeremiah 32:5,
Jeremiah 48:18, Jeremiah 50:5, Lamentations 2:12, Ezekiel 20:7, Ezekiel 21:3,
Ezekiel 21:31, Ezekiel 23:17, Ezekiel 27:24, Ezekiel 29:16, Ezekiel 36:12,
Ezekiel 39:18, Ezekiel 43:2, Ezekiel 47:19, Daniel 3:14, Daniel 4:8, Daniel
11:41, Hosea 7:1, Hosea 12:1, Amos 5:22, Jonah 1:12, Jonah 1:14, Jonah 3:8,
Zechariah 3:5, Zechariah 14:8, Matthew 16:19, Matthew 26:45, Mark 9:18, Mark
10:39, Mark 11:2, Mark 15:36, Mark 16:18, Luke 1:13, Luke 24:19, John 7:23,
John 12:34, John 14:9, John 19:15, Acts 3:2, Acts 3:10, Acts 5:34, Acts 10:38,
Acts 23:27, Acts 25:6, Acts 26:24, Acts 28:7, Romans 8:9, 2 Corinthians 7:14,
Ephesians 4:14, 1 Thessalonians 2:17, Hebrews 8:6, 1 Peter 3:18, 1 Peter 4:6, 2
Peter 3:12, 1 John 3:2, Revelation 5:11, Revelation 13:8, Revelation 20:8,
Genesis 14:5, Genesis 14:7, Genesis 31:41, Genesis 31:52, Genesis 35:3, Genesis
38:12, Genesis 41:15, Genesis 41:36, Genesis 42:25, Genesis 45:10, Exodus 4:31,
Exodus 14:2, Exodus 22:6, Exodus 38:23, Leviticus 15:15, Leviticus 26:41,
Numbers 7:71, Numbers 16:26, Numbers 18:6, Numbers 21:3, Numbers 22:30, Numbers
22:31, Numbers 22:32, Numbers 31:28, Deuteronomy 1:27, Deuteronomy 4:36,
Deuteronomy 8:18, Deuteronomy 11:21, Deuteronomy 12:7, Deuteronomy 15:11,
Deuteronomy 17:10, Deuteronomy 22:26, Deuteronomy 25:2, Joshua 19:27, Joshua
19:34, Judges 1:17, Judges 7:2, Judges 14:4, Judges 18:25, 1 Samuel 6:7, 1
Samuel 25:3, 1 Samuel 30:26, 2 Samuel 1:2, 2 Samuel 2:32, 2 Samuel 16:23, 2
Samuel 17:27, 1 Kings 2:9, 1 Kings 6:7, 1 Kings 7:18, 1 Kings 13:24, 1 Kings
21:7, 2 Kings 3:17, 2 Kings 9:1, 2 Kings 10:7, 2 Kings 16:11, 2 Kings 17:29, 1
Chronicles 5:24, 2 Chronicles 2:8, 2 Chronicles 32:23, 2 Chronicles 32:30, 2
Chronicles 33:16, Ezra 2:70, Nehemiah 12:22, Psalms 31:19, Isaiah 5:30, Isaiah
13:8, Isaiah 28:19, Isaiah 30:22, Isaiah 30:32, Isaiah 44:5, Isaiah 56:3,
Isaiah 57:11, Jeremiah 9:3, Jeremiah 14:9, Jeremiah 19:6, Jeremiah 23:36,
Jeremiah 42:10, Jeremiah 43:9, Jeremiah 44:29, Jeremiah 50:34, Lamentations
1:8, Lamentations 1:10, Lamentations 1:22, Ezekiel 5:4, Ezekiel 16:31, Ezekiel
16:46, Ezekiel 16:63, Ezekiel 20:27, Ezekiel 20:30, Ezekiel 24:27, Ezekiel
33:2, Ezekiel 41:19, Ezekiel 47:17, Daniel 3:25, Daniel 6:8, Daniel 10:13,
Hosea 1:7, Hosea 2:23, Hosea 4:3, Hosea 7:12, Joel 2:26, Amos 5:3, Amos 9:4,
Amos 9:5, Obadiah 1:3, Zechariah 9:1, Zechariah 10:10, Matthew 18:9, Mark 14:1,
Luke 2:25, Luke 4:40, Luke 11:29, Luke 14:26, Luke 22:52, John 2:15, John 7:35,
John 19:11, Acts 1:8, Acts 4:16, Acts 5:10, Romans 3:19, Romans 13:3, 1
Corinthians 14:16, 2 Corinthians 1:4, Galatians 6:1, Ephesians 2:2, 1
Thessalonians 1:8, 1 Thessalonians 5:3, 2 Timothy 1:9, Hebrews 2:10, 1 Peter
2:12, 2 Peter 3:9, Revelation 1:4, Revelation 2:7, Revelation 13:4, Revelation
16:2, Revelation 20:13, Genesis 16:11, Genesis 19:28, Genesis 20:5, Genesis
26:29, Genesis 29:25, Genesis 29:34, Genesis 44:8, Exodus 6:7, Exodus 10:14,
Exodus 12:14, Exodus 13:13, Exodus 16:10, Exodus 23:23, Exodus 30:18, Exodus
32:23, Exodus 34:1, Exodus 34:24, Leviticus 9:15, Leviticus 10:9, Leviticus
11:4, Leviticus 14:18, Leviticus 16:10, Numbers 3:25, Numbers 13:2, Numbers
20:5, Numbers 30:2, Numbers 32:9, Numbers 34:11, Deuteronomy 3:27, Deuteronomy
7:5, Deuteronomy 10:11, Deuteronomy 11:19, Deuteronomy 12:2, Deuteronomy 20:20,
Deuteronomy 26:17, Joshua 8:6, Joshua 10:19, Joshua 11:16, Joshua 17:10, Joshua
24:1, Judges 2:15, Judges 20:36, 1 Samuel 1:19, 1 Samuel 4:21, 2 Samuel 4:5, 2
Samuel 14:20, 1 Kings 6:16, 1 Kings 7:25, 1 Kings 7:29, 1 Kings 8:30, 1 Kings
11:13, 1 Kings 11:24, 1 Kings 16:13, 2 Kings 8:18, 2 Kings 8:27, 2 Kings 13:11,
2 Kings 17:11, 2 Kings 20:3, 2 Kings 22:18, 1 Chronicles 7:28, 1 Chronicles
17:17, 2 Chronicles 4:4, 2 Chronicles 5:10, 2 Chronicles 18:21, 2 Chronicles
21:6, 2 Chronicles 33:22, 2 Chronicles 34:26, 2 Chronicles 36:13, Nehemiah
13:1, Nehemiah 13:21, Esther 4:5, Esther 4:7, Esther 7:3, Ecclesiastes 2:16,
Ecclesiastes 3:11, Isaiah 1:6, Isaiah 3:6, Isaiah 9:21, Isaiah 26:9, Isaiah
30:15, Isaiah 37:26, Isaiah 40:2, Isaiah 47:12, Isaiah 51:9, Jeremiah 2:24,
Jeremiah 4:11, Jeremiah 7:2, Jeremiah 11:16, Jeremiah 14:13, Jeremiah 25:20,
Jeremiah 26:23, Jeremiah 31:21, Jeremiah 51:47, Jeremiah 51:48, Lamentations
1:4, Ezekiel 3:3, Ezekiel 13:10, Ezekiel 14:23, Ezekiel 20:34, Ezekiel 22:31,
Ezekiel 28:12, Ezekiel 32:18, Ezekiel 33:32, Ezekiel 35:5, Ezekiel 42:1,
Ezekiel 48:28, Daniel 2:49, Hosea 1:6, Hosea 2:2, Amos 4:1, Amos 4:11, Micah
3:6, Micah 4:7, Nahum 1:3, Habakkuk 2:19, Zechariah 9:14, Matthew 3:3, Matthew
8:28, Matthew 26:31, Mark 14:21, Luke 8:13, Luke 9:13, John 3:2, John 10:12,
John 11:31, John 16:32, Acts 6:7, Acts 9:40, Acts 16:4, 1 Corinthians 12:3, 1
Corinthians 15:54, 2 Corinthians 1:1, 2 Corinthians 6:2, 2 Corinthians 11:12,
Galatians 3:8, Ephesians 1:18, 1 Timothy 6:12, Hebrews 4:7, 1 Peter 2:5,
Revelation 7:11, Revelation 14:2, Revelation 17:17, Revelation 21:6, Genesis
11:9, Genesis 18:32, Genesis 22:7, Genesis 31:35, Genesis 33:5, Genesis 37:14,
Genesis 41:45, Genesis 41:46, Exodus 7:4, Exodus 9:4, Exodus 12:30, Exodus
20:11, Exodus 28:35, Exodus 29:12, Exodus 29:25, Exodus 30:4, Exodus 34:15,
Exodus 37:18, Leviticus 9:18, Leviticus 13:12, Leviticus 13:45, Leviticus
14:31, Leviticus 15:30, Leviticus 16:11, Leviticus 18:30, Leviticus 22:22,
Leviticus 24:9, Leviticus 26:1, Leviticus 26:26, Leviticus 27:23, Numbers 7:41,
Numbers 15:28, Numbers 16:17, Numbers 21:1, Numbers 28:2, Deuteronomy 1:36,
Deuteronomy 3:28, Deuteronomy 16:10, Deuteronomy 19:3, Deuteronomy 20:3,
Deuteronomy 21:15, Deuteronomy 24:16, Deuteronomy 30:3, Deuteronomy 31:27,
Joshua 16:10, Joshua 18:11, Joshua 20:5, Joshua 24:14, Judges 5:23, Judges 9:7,
Judges 9:31, Judges 11:31, Judges 16:23, Judges 20:40, Ruth 1:8, Ruth 1:19,
Ruth 2:3, Ruth 2:7, Ruth 3:7, 1 Samuel 12:5, 1 Samuel 14:15, 1 Samuel 15:3, 1
Samuel 19:22, 1 Samuel 27:3, 1 Samuel 30:8, 2 Samuel 2:21, 2 Samuel 23:13, 1
Kings 1:30, 1 Kings 3:12, 1 Kings 5:7, 1 Kings 16:29, 2 Kings 4:40, 2 Kings
13:3, 2 Kings 17:17, 2 Kings 22:12, 1 Chronicles 6:78, 1 Chronicles 10:9, 2
Chronicles 8:16, 2 Chronicles 11:17, 2 Chronicles 35:16, Ezra 8:16, Ezra 9:6,
Nehemiah 1:2, Nehemiah 3:8, Nehemiah 4:19, Nehemiah 9:22, Job 1:3, Psalms
10:14, Ecclesiastes 5:6, Ecclesiastes 6:12, Song of Solomon 4:1, Isaiah 7:2,
Isaiah 11:2, Isaiah 28:18, Isaiah 28:21, Isaiah 34:11, Isaiah 42:11, Jeremiah
11:12, Jeremiah 13:21, Jeremiah 31:18, Jeremiah 32:28, Jeremiah 37:3, Jeremiah
42:6, Jeremiah 50:21, Ezekiel 10:16, Ezekiel 12:4, Ezekiel 18:17, Ezekiel
26:19, Ezekiel 33:28, Ezekiel 46:7, Daniel 4:37, Daniel 5:5, Daniel 8:12,
Daniel 10:20, Daniel 11:37, Hosea 10:12, Joel 2:3, Obadiah 1:11, Zechariah
11:5, Zechariah 12:1, Zechariah 12:3, Malachi 4:6, Matthew 6:24, Matthew 20:23,
Matthew 23:34, Matthew 25:20, Mark 3:5, Mark 8:33, Mark 10:46, Mark 11:17, Luke
4:23, Luke 8:37, Luke 10:40, Luke 17:31, Luke 19:11, Luke 20:19, Luke 23:2,
John 16:7, John 18:20, Acts 13:34, Acts 20:16, Romans 8:23, Romans 8:26, Romans
9:17, 1 Corinthians 16:15, Galatians 2:6, Galatians 6:12, Colossians 1:9,
Hebrews 11:23, Hebrews 13:21, James 2:5, Revelation 18:8, Revelation 21:9,
Genesis 4:25, Genesis 19:1, Genesis 24:10, Genesis 24:35, Genesis 26:4, Genesis
28:12, Genesis 30:30, Genesis 44:32, Genesis 47:11, Exodus 6:25, Exodus 9:3,
Exodus 12:11, Exodus 14:11, Exodus 17:14, Exodus 28:21, Exodus 29:9, Exodus
29:42, Leviticus 4:12, Leviticus 11:44, Leviticus 15:11, Leviticus 17:11,
Leviticus 23:41, Leviticus 24:11, Numbers 3:45, Numbers 8:16, Numbers 16:13,
Numbers 35:28, Deuteronomy 13:10, Deuteronomy 21:18, Joshua 7:6, Joshua 7:9,
Joshua 22:13, Judges 8:18, Judges 13:8, Ruth 1:1, Ruth 1:22, Ruth 2:18, Ruth
4:15, 1 Samuel 19:24, 1 Samuel 20:1, 1 Samuel 23:7, 1 Samuel 28:23, 2 Samuel
7:12, 2 Samuel 9:2, 2 Samuel 11:4, 2 Samuel 11:27, 2 Samuel 18:31, 1 Kings
3:28, 1 Kings 7:42, 1 Kings 9:11, 1 Kings 9:22, 1 Kings 20:14, 2 Kings 4:35, 2
Kings 8:13, 2 Kings 17:32, 2 Kings 18:9, 2 Kings 20:15, 2 Kings 24:20, 1
Chronicles 17:27, 1 Chronicles 19:7, 2 Chronicles 23:6, 2 Chronicles 24:18, 2
Chronicles 29:5, Nehemiah 2:10, Nehemiah 3:30, Nehemiah 7:7, Nehemiah 7:70,
Nehemiah 12:45, Psalms 5:10, Psalms 44:3, Ecclesiastes 11:3, Isaiah 14:13,
Isaiah 30:19, Isaiah 34:4, Isaiah 38:5, Isaiah 48:20, Isaiah 59:19, Isaiah
60:5, Isaiah 60:16, Isaiah 60:19, Jeremiah 18:6, Jeremiah 27:5, Jeremiah 27:9,
Jeremiah 29:22, Jeremiah 33:21, Lamentations 1:18, Ezekiel 7:4, Ezekiel 16:41,
Ezekiel 19:9, Ezekiel 23:15, Ezekiel 26:2, Ezekiel 29:15, Ezekiel 32:15,
Ezekiel 33:15, Ezekiel 40:3, Ezekiel 45:11, Daniel 2:40, Daniel 6:22, Habakkuk
3:6, Zechariah 6:12, Matthew 4:23, Matthew 9:2, Matthew 11:11, Matthew 13:22,
Matthew 26:39, Mark 9:12, Luke 5:12, Luke 7:32, Luke 11:42, Luke 13:28, John
6:27, John 17:8, John 20:26, Acts 12:4, Acts 18:6, Acts 24:23, Acts 27:7,
Romans 11:17, Romans 14:4, 1 Corinthians 7:28, 1 Corinthians 8:6, 2 Corinthians
11:23, 2 Peter 1:1, Revelation 1:1, Revelation 19:2, Genesis 1:29, Genesis
18:5, Genesis 23:13, Genesis 50:24, Exodus 14:9, Exodus 15:17, Exodus 16:18,
Exodus 26:5, Exodus 29:34, Exodus 29:36, Exodus 30:21, Exodus 35:24, Leviticus
8:33, Numbers 7:84, Numbers 9:17, Numbers 9:18, Numbers 14:22, Numbers 18:16,
Numbers 27:7, Deuteronomy 1:1, Deuteronomy 6:7, Deuteronomy 7:15, Deuteronomy
11:29, Deuteronomy 34:9, Joshua 3:1, Ruth 3:15, 1 Samuel 1:1, 1 Samuel 2:16, 1
Samuel 8:7, 1 Samuel 10:24, 1 Samuel 14:33, 1 Samuel 31:12, 2 Samuel 13:4, 2
Samuel 16:4, 2 Samuel 18:14, 1 Kings 6:5, 1 Kings 7:30, 1 Kings 8:6, 1 Kings
8:38, 1 Kings 8:54, 1 Kings 15:7, 1 Kings 18:33, 1 Kings 21:11, 1 Kings 22:17,
2 Kings 9:22, 2 Kings 11:8, 2 Kings 15:14, 2 Kings 17:21, 1 Chronicles 12:15, 1
Chronicles 14:10, 1 Chronicles 14:15, 1 Chronicles 28:13, 2 Chronicles 6:21, 2
Chronicles 11:14, 2 Chronicles 18:16, 2 Chronicles 20:27, 2 Chronicles 20:34, 2
Chronicles 23:17, 2 Chronicles 32:8, 2 Chronicles 34:32, Ezra 6:6, Ezra 7:11,
Nehemiah 6:14, Nehemiah 8:13, Nehemiah 9:11, Esther 2:23, Psalms 31:11, Psalms
141:5, Ecclesiastes 2:10, Isaiah 10:6, Isaiah 19:11, Isaiah 26:19, Isaiah 29:7,
Isaiah 39:1, Isaiah 41:16, Isaiah 44:28, Isaiah 45:13, Isaiah 47:15, Jeremiah
2:13, Jeremiah 4:10, Jeremiah 4:19, Jeremiah 7:23, Jeremiah 13:17, Jeremiah
23:7, Jeremiah 27:11, Jeremiah 28:3, Jeremiah 39:18, Jeremiah 42:5, Jeremiah
51:62, Ezekiel 1:1, Ezekiel 4:2, Ezekiel 16:4, Ezekiel 20:43, Ezekiel 23:8,
Ezekiel 35:6, Daniel 11:11, Daniel 11:31, Hosea 8:14, Amos 1:3, Micah 7:3,
Haggai 1:11, Matthew 11:21, Matthew 17:5, Matthew 18:28, Mark 6:22, Luke 1:20,
Luke 5:24, Luke 11:24, Luke 19:22, John 6:51, John 13:26, John 19:12, Acts
1:16, Romans 16:2, 1 Corinthians 2:14, 1 Corinthians 7:36, 1 Corinthians 14:21,
Hebrews 13:9, Revelation 4:5, Revelation 10:1, Revelation 11:10, Genesis 13:7,
Genesis 19:16, Genesis 20:13, Genesis 31:37, Genesis 42:13, Genesis 43:29,
Exodus 2:14, Exodus 4:7, Exodus 8:8, Exodus 17:5, Exodus 19:13, Exodus 19:18,
Exodus 26:4, Exodus 34:28, Numbers 2:17, Numbers 9:7, Numbers 34:13,
Deuteronomy 4:23, Deuteronomy 7:24, Deuteronomy 13:13, Deuteronomy 30:5,
Deuteronomy 31:13, Joshua 15:19, Judges 2:7, Judges 2:10, Judges 8:24, Judges
11:27, Judges 11:39, Judges 19:8, Judges 20:32, 1 Samuel 5:7, 1 Samuel 24:3, 1
Samuel 26:23, 2 Samuel 6:22, 2 Samuel 17:29, 1 Kings 1:35, 1 Kings 10:7, 1
Kings 14:31, 1 Kings 15:13, 1 Kings 18:25, 1 Kings 20:12, 2 Kings 3:14, 2 Kings
3:24, 2 Kings 6:30, 2 Kings 8:21, 2 Kings 22:8, 1 Chronicles 16:40, 2
Chronicles 5:7, 2 Chronicles 8:8, 2 Chronicles 9:18, 2 Chronicles 9:21, 2
Chronicles 13:3, 2 Chronicles 22:5, 2 Chronicles 24:13, 2 Chronicles 36:4,
Nehemiah 2:6, Job 1:10, Psalms 138:2, Song of Solomon 1:4, Song of Solomon
3:11, Isaiah 2:21, Isaiah 36:6, Isaiah 38:8, Isaiah 48:16, Isaiah 62:1, Isaiah
64:7, Jeremiah 2:23, Jeremiah 3:18, Jeremiah 11:13, Jeremiah 16:3, Jeremiah
18:15, Jeremiah 29:19, Jeremiah 44:6, Jeremiah 49:29, Ezekiel 16:5, Ezekiel
18:21, Ezekiel 27:11, Ezekiel 44:4, Ezekiel 48:15, Daniel 11:27, Joel 2:16,
Nahum 3:5, Habakkuk 1:12, Habakkuk 3:13, Matthew 9:35, Matthew 12:32, Matthew
21:12, Matthew 25:24, Mark 2:16, Mark 9:42, Mark 12:28, Mark 15:43, Luke 2:4,
Luke 20:10, Luke 20:46, Luke 22:61, John 4:42, John 16:25, John 21:25, Acts
1:11, Acts 7:38, Acts 10:33, Acts 11:19, Acts 19:38, Romans 8:5, Romans 9:11, 2
Corinthians 10:2, 2 Corinthians 13:2, Galatians 3:10, Ephesians 2:3, Ephesians
5:5, Hebrews 9:14, Hebrews 10:8, Hebrews 11:5, James 1:11, James 4:4, 1 Peter
2:20, 1 John 1:1, Revelation 10:4, Genesis 14:17, Genesis 18:2, Genesis 36:39,
Genesis 39:8, Exodus 10:19, Exodus 25:32, Leviticus 5:17, Leviticus 6:5,
Leviticus 25:31, Numbers 7:3, Numbers 20:28, Numbers 22:11, Numbers 27:17,
Deuteronomy 28:36, Deuteronomy 29:25, Deuteronomy 32:27, Joshua 2:9, Joshua
2:16, Joshua 4:23, Joshua 9:12, Judges 12:9, Judges 19:11, Ruth 1:6, 1 Samuel
2:22, 1 Samuel 4:2, 1 Samuel 14:11, 1 Samuel 18:10, 1 Samuel 23:14, 2 Samuel
12:21, 2 Samuel 19:19, 2 Samuel 20:17, 1 Kings 7:17, 2 Kings 2:8, 2 Kings 8:26,
2 Kings 9:7, 2 Kings 24:15, 2 Chronicles 31:17, 2 Chronicles 34:7, 2 Chronicles
36:16, Ezra 4:19, Nehemiah 2:1, Nehemiah 12:37, Nehemiah 13:18, Esther 1:3,
Ecclesiastes 1:13, Ecclesiastes 12:3, Isaiah 22:18, Isaiah 31:2, Isaiah 38:17,
Isaiah 44:24, Isaiah 47:14, Isaiah 49:19, Isaiah 58:7, Isaiah 64:6, Jeremiah
5:5, Jeremiah 16:14, Jeremiah 23:10, Jeremiah 29:8, Jeremiah 33:12, Jeremiah
51:64, Lamentations 4:15, Ezekiel 11:12, Ezekiel 15:7, Ezekiel 19:12, Ezekiel
21:29, Ezekiel 26:8, Ezekiel 27:3, Ezekiel 32:16, Ezekiel 40:40, Daniel 2:18,
Daniel 7:1, Daniel 9:23, Hosea 13:14, Amos 4:5, Obadiah 1:13, Jonah 4:5, Micah
5:7, Nahum 2:3, Habakkuk 3:8, Zephaniah 1:12, Zechariah 4:12, Zechariah 7:5,
Zechariah 8:6, Zechariah 10:7, Matthew 11:19, Matthew 27:29, Mark 2:22, Mark
6:14, Luke 1:5, Luke 3:14, Luke 16:13, John 4:10, Acts 2:14, Acts 7:34, Acts
7:52, Acts 16:13, Acts 16:26, Acts 18:14, Acts 21:13, Acts 26:26, 1 Corinthians
8:7, Hebrews 9:7, Hebrews 9:24, Hebrews 12:27, Revelation 7:1, Revelation 10:8,
Revelation 17:3, Revelation 22:19, Genesis 10:19, Genesis 17:17, Genesis 24:15,
Genesis 32:32, Genesis 37:9, Genesis 48:17, Exodus 20:4, Exodus 30:20, Exodus
40:15, Leviticus 1:2, Leviticus 4:26, Leviticus 6:18, Leviticus 8:28, Leviticus
9:9, Leviticus 10:16, Leviticus 13:32, Leviticus 19:23, Numbers 9:20, Numbers
23:7, Deuteronomy 7:26, Deuteronomy 11:8, Deuteronomy 19:14, Deuteronomy 26:19,
Joshua 6:4, Joshua 6:22, Joshua 6:24, Joshua 12:5, Joshua 13:23, Joshua 21:2,
Joshua 22:18, Judges 6:2, Judges 9:36, 1 Samuel 2:5, 2 Samuel 13:34, 2 Samuel
19:18, 1 Kings 2:28, 1 Kings 7:16, 1 Kings 13:3, 1 Kings 14:9, 1 Kings 14:11, 1
Kings 17:14, 1 Kings 22:19, 2 Kings 17:41, 1 Chronicles 2:3, 1 Chronicles 14:8,
2 Chronicles 2:6, 2 Chronicles 9:6, 2 Chronicles 20:12, 2 Chronicles 20:26, 2
Chronicles 34:24, 2 Chronicles 36:21, Ezra 5:5, Ecclesiastes 2:7, Ecclesiastes
2:8, Isaiah 7:17, Isaiah 10:26, Isaiah 17:3, Isaiah 30:18, Isaiah 38:3, Isaiah
42:25, Isaiah 53:2, Jeremiah 21:10, Jeremiah 25:34, Jeremiah 34:15, Jeremiah
37:13, Jeremiah 50:33, Jeremiah 52:3, Ezekiel 47:10, Daniel 5:13, Daniel 11:10,
Daniel 11:20, Hosea 4:12, Amos 6:1, Amos 8:8, Micah 6:2, Habakkuk 2:8,
Zechariah 11:7, Zechariah 11:9, Matthew 19:29, Matthew 21:15, Mark 14:43, Luke
15:4, Acts 3:12, Acts 4:13, Acts 12:11, Acts 13:50, Acts 20:28, Acts 22:25,
Acts 22:29, 2 Corinthians 4:4, 2 Corinthians 9:2, 2 Thessalonians 1:3, 2
Timothy 1:12, Revelation 5:5, Revelation 16:18, Revelation 21:4, Revelation
22:17, Genesis 4:15, Genesis 13:9, Genesis 26:9, Genesis 47:26, Exodus 5:21,
Exodus 6:13, Exodus 19:16, Exodus 26:33, Exodus 34:34, Exodus 37:9, Exodus
39:20, Leviticus 4:20, Leviticus 9:24, Leviticus 11:42, Leviticus 13:58,
Numbers 3:27, Numbers 5:30, Numbers 26:35, Numbers 26:57, Numbers 36:6,
Deuteronomy 2:4, Deuteronomy 5:8, Deuteronomy 16:19, Deuteronomy 18:10,
Deuteronomy 21:4, Joshua 12:3, Judges 3:9, Judges 10:18, Judges 14:13, Judges
15:2, Judges 15:13, 1 Samuel 10:16, 1 Samuel 12:19, 1 Samuel 14:43, 1 Samuel
15:11, 1 Samuel 16:23, 1 Samuel 19:17, 1 Samuel 23:17, 1 Samuel 25:35, 2 Samuel
14:25, 2 Samuel 15:18, 2 Samuel 18:11, 1 Kings 6:32, 1 Kings 22:30, 2 Kings
2:21, 2 Kings 3:19, 2 Kings 9:11, 1 Chronicles 9:1, 1 Chronicles 17:7, 1
Chronicles 17:8, 1 Chronicles 22:13, 2 Chronicles 4:12, 2 Chronicles 7:11, 2
Chronicles 11:16, 2 Chronicles 20:14, 2 Chronicles 26:16, 2 Chronicles 32:26,
Ezra 5:16, Ezra 7:9, Ezra 8:18, Nehemiah 4:16, Job 1:8, Psalms 106:7, Isaiah
6:5, Isaiah 7:20, Isaiah 10:20, Isaiah 16:5, Isaiah 19:17, Isaiah 21:3, Isaiah
23:17, Isaiah 52:1, Jeremiah 4:7, Jeremiah 23:3, Jeremiah 29:26, Jeremiah
32:40, Jeremiah 35:8, Jeremiah 49:28, Jeremiah 50:6, Jeremiah 51:6,
Lamentations 1:15, Ezekiel 20:15, Ezekiel 21:21, Ezekiel 32:26, Ezekiel 44:25,
Ezekiel 45:8, Daniel 2:2, Daniel 7:24, Hosea 3:5, Joel 2:5, Nahum 3:17,
Habakkuk 1:13, Habakkuk 3:2, Zephaniah 3:17, Haggai 2:13, Zechariah 1:12,
Zechariah 12:7, Matthew 4:21, Matthew 17:12, Matthew 21:9, Mark 2:4, Mark
10:30, Luke 10:27, Luke 18:14, Luke 18:22, Luke 19:44, John 11:54, Acts 2:38,
Acts 3:25, Acts 18:25, Acts 27:2, Acts 27:17, Romans 16:25, 1 Corinthians 11:6,
1 Corinthians 16:12, 2 Corinthians 1:8, Hebrews 9:11, 1 John 2:8, Revelation
3:3, Revelation 9:2, Genesis 24:3, Genesis 24:32, Genesis 31:33, Genesis 37:28,
Genesis 45:23, Exodus 3:12, Exodus 18:12, Exodus 25:31, Exodus 34:35, Leviticus
1:9, Leviticus 11:35, Leviticus 11:40, Leviticus 14:6, Leviticus 14:7,
Leviticus 26:39, Numbers 4:28, Numbers 9:6, Numbers 25:13, Numbers 35:6,
Deuteronomy 1:25, Deuteronomy 6:11, Deuteronomy 10:8, Deuteronomy 11:18,
Deuteronomy 14:2, Deuteronomy 16:18, Deuteronomy 30:19, Deuteronomy 32:24,
Joshua 4:9, Joshua 5:5, Joshua 11:17, Joshua 16:1, Joshua 20:7, Judges 1:15,
Judges 2:20, Judges 6:27, Judges 8:3, Judges 11:37, 1 Samuel 8:8, 1 Samuel
14:20, 1 Samuel 17:40, 1 Samuel 18:30, 1 Samuel 30:1, 2 Samuel 5:17, 2 Samuel
7:9, 2 Samuel 7:19, 2 Samuel 14:24, 2 Samuel 18:24, 1 Kings 4:12, 1 Kings 7:9,
1 Kings 12:7, 1 Kings 18:24, 2 Kings 5:13, 2 Kings 10:1, 2 Kings 12:12, 2 Kings
18:12, 2 Kings 18:21, 1 Chronicles 25:4, 2 Chronicles 16:1, 2 Chronicles 20:10,
2 Chronicles 32:13, Ezra 10:13, Nehemiah 11:25, Isaiah 3:16, Isaiah 4:1, Isaiah
10:12, Isaiah 14:29, Isaiah 17:11, Isaiah 25:11, Isaiah 31:8, Isaiah 40:24,
Isaiah 41:25, Isaiah 43:24, Isaiah 48:5, Jeremiah 12:13, Jeremiah 21:13,
Jeremiah 24:5, Jeremiah 25:26, Jeremiah 32:2, Jeremiah 38:16, Jeremiah 39:14,
Ezekiel 16:53, Ezekiel 18:30, Ezekiel 40:36, Ezekiel 47:5, Ezekiel 47:8, Daniel
2:25, Daniel 6:3, Daniel 8:17, Daniel 9:14, Joel 2:19, Joel 3:16, Amos 1:6,
Amos 8:2, Malachi 2:13, Matthew 13:19, Matthew 18:12, Mark 14:12, Mark 14:41,
Luke 16:26, John 1:33, John 12:16, John 14:28, Acts 4:32, Acts 8:32, Acts
19:29, Acts 27:33, Romans 2:1, Romans 6:4, Romans 11:25, 1 Corinthians 3:10, 1
Corinthians 12:28, Colossians 2:2, 1 Timothy 4:6, Hebrews 6:18, 1 John 3:1, 1
John 3:8, Revelation 2:5, Revelation 10:6, Revelation 15:8, Genesis 29:13,
Genesis 33:1, Genesis 43:21, Genesis 45:27, Exodus 2:23, Exodus 7:9, Exodus
14:4, Exodus 19:12, Exodus 21:19, Exodus 29:41, Exodus 39:5, Leviticus 8:35,
Leviticus 27:6, Numbers 4:49, Numbers 6:9, Numbers 14:43, Numbers 20:1, Numbers
20:24, Deuteronomy 5:23, Deuteronomy 7:9, Deuteronomy 28:30, Deuteronomy 29:1,
Joshua 9:9, Joshua 11:3, Judges 6:8, Judges 6:35, Ruth 3:3, 1 Samuel 6:6, 1
Samuel 9:5, 1 Samuel 9:7, 1 Samuel 14:1, 1 Samuel 15:23, 1 Samuel 18:22, 1
Samuel 23:5, 2 Samuel 14:33, 2 Samuel 23:18, 1 Kings 1:41, 2 Kings 2:23, 2
Kings 5:6, 2 Kings 19:21, 2 Kings 20:9, 2 Kings 24:7, 1 Chronicles 12:1, 1
Chronicles 20:5, 2 Chronicles 6:29, 2 Chronicles 32:1, 2 Chronicles 35:5, Ezra
8:21, Ezra 9:4, Nehemiah 9:37, Nehemiah 13:6, Esther 6:2, Job 2:10,
Ecclesiastes 7:14, Isaiah 40:28, Isaiah 47:1, Isaiah 47:10, Isaiah 61:6,
Jeremiah 5:1, Jeremiah 6:6, Jeremiah 23:22, Jeremiah 25:27, Jeremiah 29:6,
Jeremiah 29:16, Jeremiah 31:10, Jeremiah 32:19, Jeremiah 42:16, Jeremiah 51:30,
Ezekiel 3:7, Ezekiel 12:13, Ezekiel 23:22, Ezekiel 29:10, Ezekiel 30:6, Ezekiel
33:10, Ezekiel 37:6, Ezekiel 41:3, Ezekiel 43:14, Daniel 7:5, Daniel 8:8,
Daniel 11:14, Amos 8:11, Obadiah 1:12, Micah 7:1, Zephaniah 3:19, Zechariah
10:1, Zechariah 14:13, Matthew 5:25, Matthew 5:32, Matthew 9:18, Luke 2:36,
Luke 8:27, Luke 8:28, John 21:6, Acts 23:30, Acts 27:40, Galatians 3:16,
Philippians 1:20, Philippians 4:18, 1 Thessalonians 2:14, 2 Timothy 4:17, 1
Peter 3:21, 1 Peter 5:10, Genesis 1:24, Genesis 4:14, Genesis 14:8, Genesis
23:6, Genesis 24:47, Genesis 29:2, Genesis 38:9, Genesis 39:14, Genesis 40:5,
Genesis 41:48, Exodus 3:1, Exodus 6:1, Exodus 7:16, Exodus 28:27, Leviticus
4:30, Leviticus 5:10, Leviticus 22:2, Numbers 1:38, Numbers 10:33, Numbers
13:29, Numbers 14:34, Numbers 22:34, Numbers 25:8, Numbers 26:54, Numbers 31:8,
Deuteronomy 5:1, Deuteronomy 11:30, Deuteronomy 21:14, Deuteronomy 29:2,
Deuteronomy 33:2, Joshua 10:23, Joshua 10:32, Joshua 22:20, Joshua 24:13,
Judges 16:27, Judges 16:28, Judges 17:8, Judges 21:8, Ruth 2:2, Ruth 3:10, 1
Samuel 2:20, 1 Samuel 3:8, 1 Samuel 11:5, 1 Samuel 13:6, 1 Samuel 14:49, 2
Samuel 1:21, 2 Samuel 13:15, 2 Samuel 16:10, 2 Samuel 24:25, 1 Kings 4:21, 1
Kings 7:21, 1 Kings 16:11, 1 Kings 17:13, 1 Kings 20:1, 1 Kings 22:52, 2 Kings
10:33, 2 Kings 17:27, 2 Kings 19:35, 2 Kings 21:6, 2 Kings 22:4, 1 Chronicles
19:18, 1 Chronicles 27:25, 2 Chronicles 6:24, 2 Chronicles 6:36, 2 Chronicles
11:21, 2 Chronicles 19:4, 2 Chronicles 31:21, 2 Chronicles 32:4, 2 Chronicles
34:10, Ezra 3:3, Ezra 4:7, Nehemiah 2:16, Nehemiah 9:30, Ecclesiastes 7:26,
Isaiah 1:18, Isaiah 5:14, Isaiah 29:23, Isaiah 33:23, Isaiah 37:22, Isaiah
40:22, Isaiah 55:10, Isaiah 55:11, Isaiah 58:8, Jeremiah 7:28, Jeremiah 23:9,
Jeremiah 44:18, Jeremiah 46:5, Jeremiah 50:4, Jeremiah 50:13, Lamentations
1:12, Lamentations 2:22, Ezekiel 14:3, Ezekiel 14:16, Ezekiel 23:39, Ezekiel
28:7, Ezekiel 30:11, Ezekiel 30:24, Ezekiel 34:6, Daniel 8:5, Micah 6:7, Micah
7:6, Zechariah 14:16, Matthew 12:41, Mark 1:27, Mark 10:42, Mark 11:13, Luke
9:16, Luke 11:32, John 8:28, John 14:10, John 17:24, John 18:18, Acts 19:26,
Acts 23:3, Romans 4:12, 2 Corinthians 3:3, 2 Corinthians 8:22, Philippians 3:9,
Colossians 2:8, Titus 3:3, 1 John 1:3, Revelation 22:6, Genesis 3:16, Genesis
23:9, Genesis 27:45, Genesis 42:36, Genesis 43:23, Exodus 7:17, Exodus 29:5,
Exodus 37:25, Leviticus 6:2, Leviticus 19:34, Leviticus 23:3, Leviticus 26:6,
Numbers 6:17, Numbers 8:21, Numbers 14:40, Numbers 15:38, Numbers 28:12,
Numbers 33:52, Deuteronomy 11:28, Deuteronomy 16:4, Deuteronomy 24:3,
Deuteronomy 24:8, Deuteronomy 28:22, Deuteronomy 32:46, Joshua 6:6, Joshua
18:28, Judges 1:35, Judges 5:15, Judges 11:29, Judges 16:15, Judges 19:23,
Judges 20:33, 1 Samuel 8:11, 1 Samuel 10:11, 1 Samuel 28:20, 2 Samuel 5:24, 2
Samuel 7:11, 2 Samuel 9:6, 2 Samuel 15:21, 2 Samuel 15:25, 2 Samuel 17:18, 2
Samuel 19:17, 1 Kings 9:8, 1 Kings 14:26, 2 Kings 11:11, 2 Kings 16:17, 2 Kings
18:16, 2 Kings 23:26, 2 Chronicles 3:4, 2 Chronicles 23:7, 2 Chronicles 28:1, 2
Chronicles 32:32, Nehemiah 2:7, Esther 8:14, Job 2:12, Song of Solomon 7:12,
Song of Solomon 8:5, Isaiah 4:4, Isaiah 17:10, Isaiah 28:2, Isaiah 49:18,
Isaiah 51:17, Isaiah 52:15, Isaiah 55:7, Isaiah 56:11, Isaiah 62:11, Jeremiah
22:6, Jeremiah 40:14, Ezekiel 6:12, Ezekiel 8:1, Ezekiel 15:6, Ezekiel 23:40,
Ezekiel 31:6, Ezekiel 42:12, Ezekiel 43:3, Hosea 5:1, Amos 6:8, Jonah 1:8,
Habakkuk 1:8, Matthew 2:9, Matthew 11:25, Matthew 23:13, Matthew 24:43, Luke
9:48, Luke 16:25, John 4:14, John 10:18, John 19:6, John 21:20, Acts 7:35, Acts
13:15, Acts 20:7, Acts 24:25, Acts 26:22, Romans 12:2, 2 Corinthians 12:19,
Philippians 4:15, Colossians 1:6, Colossians 2:23, Hebrews 10:34, 1 Peter 5:5,
Revelation 2:24, Revelation 3:5, Revelation 8:3, Revelation 16:19, Genesis
1:11, Genesis 9:10, Genesis 24:40, Genesis 27:27, Genesis 37:35, Exodus 8:5,
Exodus 15:16, Exodus 17:7, Exodus 21:6, Exodus 24:3, Exodus 25:20, Exodus 26:1,
Exodus 31:6, Exodus 32:19, Exodus 32:29, Leviticus 12:2, Numbers 1:26, Numbers
1:40, Numbers 6:3, Numbers 8:22, Numbers 10:25, Numbers 35:15, Deuteronomy
9:16, Judges 4:18, Judges 8:5, Judges 9:51, Judges 20:6, 1 Samuel 1:22, 1
Samuel 22:14, 1 Samuel 26:8, 1 Samuel 28:1, 1 Samuel 31:9, 2 Samuel 14:17, 2
Samuel 17:17, 1 Kings 6:24, 1 Kings 18:40, 2 Kings 5:14, 2 Kings 17:36, 2 Kings
18:18, 1 Chronicles 7:29, 1 Chronicles 7:40, 1 Chronicles 26:30, 1 Chronicles
29:29, 2 Chronicles 1:17, 2 Chronicles 14:8, 2 Chronicles 16:4, 2 Chronicles
16:12, 2 Chronicles 25:15, 2 Chronicles 32:11, 2 Chronicles 32:14, 2 Chronicles
32:18, 2 Chronicles 33:3, Ezra 1:2, Nehemiah 2:12, Nehemiah 7:63, Nehemiah 8:1,
Nehemiah 12:36, Psalms 40:5, Song of Solomon 8:6, Isaiah 11:6, Isaiah 20:4,
Isaiah 22:16, Isaiah 23:4, Isaiah 25:8, Isaiah 38:12, Isaiah 48:14, Isaiah
51:22, Isaiah 55:12, Isaiah 55:13, Isaiah 58:12, Isaiah 60:7, Jeremiah 13:27,
Jeremiah 14:3, Jeremiah 29:3, Jeremiah 29:31, Jeremiah 44:3, Jeremiah 46:16,
Jeremiah 48:32, Lamentations 1:5, Ezekiel 10:14, Ezekiel 13:13, Ezekiel 13:22,
Ezekiel 30:9, Ezekiel 32:23, Ezekiel 38:11, Ezekiel 38:17, Ezekiel 40:44,
Ezekiel 40:49, Daniel 9:4, Amos 6:14, Zechariah 2:11, Matthew 2:22, Matthew
8:9, Matthew 13:32, Matthew 13:52, Matthew 23:27, Mark 13:8, Luke 8:25, Luke
10:13, John 5:18, John 7:28, Acts 11:5, Acts 12:6, Acts 13:1, Acts 17:31, Acts
19:13, Romans 3:25, Romans 4:19, Romans 10:14, Romans 15:16, 2 Corinthians 2:3,
2 Corinthians 7:7, 1 Timothy 6:17, Hebrews 4:3, Hebrews 7:2, 1 John 5:6,
Revelation 1:11, Revelation 8:5, Revelation 14:7, Genesis 19:19, Genesis 22:2,
Genesis 22:9, Genesis 28:13, Genesis 30:38, Genesis 40:20, Genesis 49:30,
Exodus 8:22, Exodus 11:1, Exodus 13:21, Exodus 15:1, Exodus 31:14, Exodus 39:1,
Leviticus 5:9, Leviticus 5:12, Leviticus 10:1, Leviticus 11:10, Leviticus
16:34, Leviticus 24:23, Numbers 15:14, Numbers 16:42, Numbers 32:13, Numbers
32:22, Numbers 33:8, Deuteronomy 2:5, Deuteronomy 3:21, Deuteronomy 3:24,
Deuteronomy 24:5, Joshua 2:11, Joshua 6:10, Joshua 19:1, Joshua 19:8, Joshua
22:23, Judges 11:33, 1 Samuel 2:13, 2 Samuel 1:12, 2 Samuel 6:3, 2 Samuel 6:17,
2 Samuel 9:11, 2 Samuel 12:8, 2 Samuel 12:19, 2 Samuel 17:12, 1 Kings 2:7, 1
Kings 2:31, 1 Kings 8:56, 2 Kings 2:9, 2 Kings 6:11, 2 Kings 10:9, 2 Kings
25:24, 1 Chronicles 2:55, 1 Chronicles 29:5, 2 Chronicles 5:6, 2 Chronicles
9:9, 2 Chronicles 18:29, 2 Chronicles 24:22, 2 Chronicles 32:22, Esther 8:3,
Isaiah 19:20, Isaiah 34:16, Isaiah 42:24, Isaiah 54:9, Jeremiah 6:21, Jeremiah
8:13, Jeremiah 15:3, Jeremiah 26:10, Jeremiah 36:2, Jeremiah 38:1, Jeremiah
48:34, Lamentations 1:1, Lamentations 2:9, Ezekiel 11:7, Ezekiel 16:51, Ezekiel
17:16, Ezekiel 35:12, Ezekiel 41:12, Ezekiel 42:6, Daniel 4:21, Daniel 7:11,
Amos 4:9, Jonah 1:10, Micah 1:11, Micah 2:12, Micah 3:5, Micah 7:10, Zephaniah
1:13, Malachi 3:3, Matthew 9:15, Matthew 27:19, Matthew 27:54, Luke 4:25, Luke
15:29, Luke 21:24, John 9:22, John 18:16, Acts 9:31, Acts 16:15, Acts 18:27,
Acts 24:14, Acts 26:14, Romans 16:26, Colossians 3:16, 1 Thessalonians 1:5, 1
Thessalonians 2:2, 1 Thessalonians 4:16, 1 Timothy 1:16, Hebrews 8:8,
Revelation 3:7, Revelation 7:14, Revelation 10:9, Revelation 12:12, Revelation
14:11, Revelation 18:21, Revelation 19:18, Revelation 20:10, Genesis 19:29,
Genesis 30:14, Genesis 36:17, Genesis 37:25, Genesis 50:4, Exodus 14:12, Exodus
20:18, Exodus 30:13, Exodus 38:11, Exodus 38:24, Leviticus 7:29, Leviticus
12:7, Leviticus 26:22, Leviticus 26:45, Numbers 1:30, Numbers 11:33, Numbers
22:22, Numbers 28:26, Deuteronomy 5:5, Deuteronomy 5:16, Deuteronomy 6:1,
Deuteronomy 6:10, Deuteronomy 7:6, Deuteronomy 7:16, Deuteronomy 8:1,
Deuteronomy 9:26, Deuteronomy 17:14, Deuteronomy 20:17, Deuteronomy 26:15,
Judges 19:29, Judges 20:39, 1 Samuel 4:10, 1 Samuel 13:3, 1 Samuel 14:22, 1
Samuel 17:49, 2 Samuel 2:16, 2 Samuel 10:14, 2 Samuel 23:5, 1 Kings 1:44, 1
Kings 8:53, 1 Kings 16:9, 1 Kings 20:29, 2 Kings 4:31, 2 Kings 7:16, 2 Kings
7:18, 2 Kings 19:10, 2 Chronicles 25:27, 2 Chronicles 31:12, 2 Chronicles
31:14, 2 Chronicles 32:12, Nehemiah 3:31, Esther 1:18, Esther 2:18, Esther 3:2,
Psalms 68:30, Psalms 72:16, Song of Solomon 1:7, Isaiah 13:4, Isaiah 16:9,
Isaiah 29:11, Isaiah 37:10, Isaiah 53:8, Isaiah 63:15, Isaiah 64:5, Jeremiah
6:19, Jeremiah 16:13, Jeremiah 20:9, Jeremiah 22:11, Jeremiah 23:33, Jeremiah
26:16, Jeremiah 32:36, Jeremiah 36:21, Jeremiah 39:9, Jeremiah 49:30,
Lamentations 2:14, Ezekiel 6:14, Ezekiel 9:4, Ezekiel 14:20, Ezekiel 16:34,
Ezekiel 17:20, Ezekiel 28:17, Ezekiel 37:12, Ezekiel 44:17, Daniel 6:17, Daniel
8:24, Daniel 9:15, Amos 7:1, Zechariah 10:5, Matthew 1:18, Luke 6:38, Luke
19:15, John 15:20, Acts 23:23, Romans 15:19, 1 Corinthians 9:20, Galatians
3:19, Hebrews 5:7, Hebrews 7:27, James 3:6, Revelation 4:6, Revelation 4:7,
Genesis 24:48, Genesis 25:23, Genesis 33:13, Genesis 38:24, Genesis 41:12,
Genesis 42:6, Exodus 9:25, Exodus 10:7, Exodus 13:19, Exodus 22:11, Exodus
23:12, Exodus 28:29, Exodus 30:12, Exodus 34:4, Leviticus 5:3, Leviticus 10:3,
Leviticus 23:32, Numbers 1:28, Numbers 1:34, Numbers 1:36, Numbers 1:42,
Numbers 2:3, Numbers 4:19, Numbers 8:17, Numbers 21:24, Numbers 31:16, Numbers
31:19, Deuteronomy 4:42, Deuteronomy 12:1, Deuteronomy 23:18, Deuteronomy 30:6,
Deuteronomy 32:49, Joshua 2:14, Joshua 3:3, Joshua 7:25, Judges 3:19, Judges
3:24, Judges 3:25, Judges 19:15, Judges 21:19, 1 Samuel 22:22, 1 Samuel 24:8, 1
Samuel 28:7, 2 Samuel 18:29, 2 Samuel 24:4, 1 Kings 2:29, 1 Kings 8:8, 1 Kings
9:6, 1 Kings 9:21, 1 Kings 10:2, 1 Kings 13:22, 1 Kings 15:5, 1 Kings 19:20, 1
Kings 22:38, 2 Kings 4:43, 2 Kings 14:15, 1 Chronicles 18:11, 1 Chronicles
28:11, 2 Chronicles 5:9, 2 Chronicles 6:30, 2 Chronicles 17:8, 2 Chronicles
21:3, 2 Chronicles 33:11, 2 Chronicles 36:18, Ezra 6:17, Esther 3:4, Proverbs
27:10, Song of Solomon 1:6, Isaiah 2:19, Isaiah 15:5, Isaiah 27:1, Isaiah
42:22, Jeremiah 5:7, Lamentations 1:9, Ezekiel 5:10, Ezekiel 11:17, Ezekiel
14:21, Ezekiel 40:21, Ezekiel 41:11, Ezekiel 45:9, Daniel 5:3, Daniel 5:15,
Daniel 11:18, Hosea 13:16, Matthew 11:23, Matthew 16:3, Mark 2:18, Mark 10:21,
Luke 1:35, Luke 6:45, Luke 7:38, John 16:4, Acts 2:33, Acts 4:31, Acts 13:22,
Acts 13:25, 1 Corinthians 9:15, 2 Corinthians 5:4, Colossians 4:12, 2 Timothy
2:21, James 5:12, 2 Peter 2:13, Revelation 13:2, Genesis 3:1, Genesis 17:19,
Genesis 28:11, Genesis 30:16, Genesis 31:32, Genesis 33:14, Genesis 39:9,
Genesis 43:16, Exodus 3:13, Exodus 16:15, Exodus 16:29, Exodus 19:24, Exodus
28:1, Leviticus 13:59, Leviticus 15:19, Leviticus 19:10, Leviticus 25:30,
Numbers 8:7, Numbers 14:9, Numbers 34:4, Deuteronomy 3:13, Deuteronomy 8:15,
Deuteronomy 11:24, Deuteronomy 22:6, Deuteronomy 26:10, Deuteronomy 33:16,
Joshua 8:35, Joshua 22:22, Judges 17:10, Judges 18:10, 1 Samuel 2:29, 1 Samuel
2:33, 1 Samuel 5:3, 1 Samuel 16:13, 1 Samuel 26:7, 1 Samuel 27:9, 2 Samuel 1:6,
2 Samuel 3:22, 2 Samuel 10:18, 2 Samuel 13:10, 2 Samuel 23:8, 2 Kings 1:9, 2
Kings 2:12, 2 Kings 14:14, 2 Kings 17:9, 2 Kings 19:3, 2 Kings 19:6, 2 Kings
20:17, 1 Chronicles 6:32, 2 Chronicles 1:12, 2 Chronicles 6:14, 2 Chronicles
20:6, 2 Chronicles 21:7, 2 Chronicles 32:27, Nehemiah 2:3, Nehemiah 2:5,
Nehemiah 2:17, Nehemiah 11:22, Nehemiah 12:43, Song of Solomon 4:8, Song of
Solomon 5:1, Isaiah 1:23, Isaiah 29:13, Isaiah 39:6, Isaiah 41:26, Isaiah
43:14, Isaiah 63:9, Jeremiah 31:16, Lamentations 2:21, Ezekiel 1:26, Ezekiel
4:6, Ezekiel 7:9, Ezekiel 17:6, Ezekiel 18:6, Ezekiel 32:12, Ezekiel 47:2,
Daniel 1:20, Daniel 9:17, Joel 2:11, Joel 2:13, Amos 2:7, Amos 2:9, Micah 7:18,
Matthew 13:30, Matthew 26:55, Mark 6:48, Mark 9:25, Luke 5:36, Luke 7:8, Acts
3:16, Acts 4:27, Acts 12:7, 2 Corinthians 3:7, Ephesians 4:16, 1 Timothy 6:4, 1
John 2:19, Genesis 6:7, Genesis 17:20, Genesis 39:1, Genesis 44:4, Genesis
47:22, Exodus 4:18, Exodus 14:13, Exodus 24:4, Exodus 32:34, Exodus 33:13,
Exodus 36:8, Leviticus 6:4, Leviticus 10:4, Leviticus 13:43, Leviticus 25:47,
Numbers 1:1, Numbers 1:24, Numbers 16:14, Numbers 28:8, Numbers 34:14,
Deuteronomy 2:37, Deuteronomy 3:18, Deuteronomy 7:2, Deuteronomy 12:10,
Deuteronomy 15:10, Deuteronomy 30:1, Deuteronomy 32:14, Joshua 5:12, Joshua
6:15, Judges 8:10, Judges 9:38, Judges 18:9, 1 Samuel 9:19, 1 Samuel 10:25, 1
Samuel 20:27, 1 Samuel 21:8, 1 Samuel 26:6, 2 Samuel 2:1, 2 Samuel 4:7, 1 Kings
2:15, 1 Kings 2:39, 1 Kings 7:41, 1 Kings 11:21, 2 Kings 16:18, 2 Kings 23:29,
2 Kings 23:34, 1 Chronicles 28:12, 2 Chronicles 16:10, 2 Chronicles 23:3, 2
Chronicles 23:10, 2 Chronicles 25:19, 2 Chronicles 35:13, Job 1:19,
Ecclesiastes 9:1, Isaiah 37:3, Isaiah 37:6, Isaiah 45:20, Isaiah 47:8, Isaiah
47:13, Jeremiah 2:2, Jeremiah 33:22, Jeremiah 34:20, Jeremiah 48:1,
Lamentations 1:20, Lamentations 2:6, Ezekiel 10:11, Ezekiel 21:12, Ezekiel
41:22, Daniel 1:8, Daniel 3:10, Daniel 8:4, Hosea 8:13, Amos 2:6, Micah 7:14,
Zephaniah 1:17, Haggai 2:14, Zechariah 9:5, Matthew 6:16, Matthew 21:16,
Matthew 24:3, Mark 8:31, Luke 8:10, Acts 2:22, Acts 11:26, Acts 15:3, Acts
18:2, Acts 21:21, Acts 23:9, 2 Corinthians 9:5, Colossians 1:16, 1
Thessalonians 4:1, James 2:3, Jude 1:9, Revelation 13:10, Genesis 3:22, Genesis
11:4, Genesis 30:32, Genesis 31:18, Genesis 38:18, Genesis 44:18, Exodus 2:5,
Exodus 8:24, Exodus 17:3, Exodus 18:10, Exodus 36:3, Leviticus 12:4, Leviticus
13:4, Leviticus 18:3, Leviticus 22:13, Numbers 7:1, Numbers 18:20, Numbers
23:3, Numbers 31:50, Deuteronomy 2:25, Deuteronomy 5:33, Deuteronomy 17:12,
Deuteronomy 31:23, Joshua 7:11, Joshua 15:10, Joshua 15:13, Joshua 21:1, Judges
3:3, Judges 9:16, Judges 9:20, Judges 9:43, Judges 20:18, 1 Samuel 1:3, 1
Samuel 14:3, 1 Samuel 17:23, 1 Samuel 25:17, 1 Samuel 27:10, 2 Samuel 23:1, 1
Kings 8:35, 1 Kings 9:25, 1 Kings 17:1, 1 Kings 18:27, 2 Kings 1:12, 2 Kings
10:10, 2 Kings 22:5, 1 Chronicles 10:12, 2 Chronicles 3:8, 2 Chronicles 6:26, 2
Chronicles 12:15, 2 Chronicles 15:15, Ezra 3:13, Ezra 9:15, Ezra 10:18, Esther
1:14, Esther 6:10, Esther 9:24, Psalms 49:14, Ecclesiastes 2:21, Isaiah 37:33,
Isaiah 51:16, Isaiah 58:9, Isaiah 61:11, Isaiah 65:1, Jeremiah 2:31, Jeremiah
12:5, Jeremiah 31:13, Jeremiah 38:14, Jeremiah 38:27, Lamentations 1:17,
Ezekiel 23:4, Ezekiel 32:29, Ezekiel 36:20, Ezekiel 36:38, Ezekiel 41:15,
Daniel 2:38, Daniel 12:10, Hosea 1:1, Amos 7:10, Amos 9:7, Zechariah 8:10,
Zechariah 8:13, Zechariah 10:3, Matthew 3:11, Matthew 14:15, Matthew 21:19,
Matthew 21:42, Mark 4:1, Luke 2:48, Luke 6:17, Luke 8:14, Luke 20:20, John
15:15, John 17:11, Acts 17:5, Acts 17:6, Acts 21:40, Acts 26:10, Romans 8:11,
Romans 11:22, 2 Corinthians 11:9, 2 Corinthians 12:6, 2 Corinthians 12:7,
Hebrews 12:25, Genesis 17:7, Genesis 22:17, Genesis 45:1, Genesis 50:10, Exodus
9:22, Leviticus 3:2, Leviticus 5:1, Numbers 3:36, Numbers 9:15, Numbers 16:5,
Numbers 17:10, Numbers 32:1, Deuteronomy 25:11, Joshua 1:4, Joshua 10:20,
Joshua 16:6, Joshua 21:4, Joshua 21:44, Judges 9:3, Judges 9:5, Judges 9:44,
Judges 11:8, Judges 16:31, Judges 18:28, Judges 19:10, 1 Samuel 4:13, 1 Samuel
25:21, 1 Samuel 26:3, 2 Samuel 3:12, 1 Kings 10:12, 1 Kings 13:33, 1 Kings
18:13, 2 Kings 16:2, 2 Kings 16:14, 2 Kings 19:32, 2 Kings 23:33, 1 Chronicles
11:10, 1 Chronicles 17:9, 1 Chronicles 28:18, 2 Chronicles 9:20, 2 Chronicles
18:3, 2 Chronicles 28:27, Ezra 10:8, Nehemiah 9:35, Esther 2:21, Esther 9:13,
Job 1:16, Psalms 69:4, Psalms 123:2, Isaiah 14:9, Isaiah 19:18, Isaiah 30:28,
Isaiah 53:11, Isaiah 55:2, Jeremiah 14:22, Jeremiah 17:11, Jeremiah 30:19,
Jeremiah 31:15, Jeremiah 36:26, Lamentations 4:22, Ezekiel 9:8, Ezekiel 23:45,
Ezekiel 30:21, Ezekiel 37:14, Ezekiel 43:17, Daniel 3:5, Daniel 11:8, Joel 1:4,
Luke 2:15, Luke 7:6, John 3:29, John 8:14, Acts 6:1, Acts 8:27, Acts 12:19, 1
Corinthians 15:27, Ephesians 2:12, Hebrews 11:13, James 5:11, Revelation 11:19,
Revelation 13:15, Revelation 17:4, Genesis 27:33, Genesis 33:10, Exodus 2:3,
Exodus 28:15, Exodus 32:15, Leviticus 1:3, Leviticus 6:25, Leviticus 14:48,
Leviticus 17:13, Leviticus 19:22, Leviticus 22:25, Leviticus 23:10, Leviticus
27:10, Numbers 2:34, Numbers 21:5, Numbers 34:2, Deuteronomy 2:30, Deuteronomy
11:10, Deuteronomy 15:18, Deuteronomy 16:6, Deuteronomy 18:3, Deuteronomy 31:3,
Joshua 21:6, Judges 4:11, Judges 11:34, Judges 15:12, Judges 19:1, Ruth 4:5, 1
Samuel 2:27, 2 Samuel 7:8, 1 Kings 13:21, 1 Kings 22:35, 2 Kings 2:15, 2 Kings
12:10, 1 Chronicles 6:60, 1 Chronicles 17:24, 1 Chronicles 29:6, 2 Chronicles
6:20, 2 Chronicles 9:12, 2 Chronicles 15:16, 2 Chronicles 20:31, Ezra 5:2,
Nehemiah 1:3, Nehemiah 2:13, Nehemiah 5:11, Nehemiah 7:61, Nehemiah 9:15,
Esther 4:1, Esther 6:6, Ecclesiastes 2:11, Isaiah 14:1, Isaiah 17:9, Isaiah
18:5, Isaiah 25:9, Isaiah 36:2, Isaiah 37:29, Isaiah 41:22, Isaiah 58:14,
Isaiah 65:8, Jeremiah 5:14, Jeremiah 5:24, Jeremiah 7:18, Jeremiah 36:3,
Jeremiah 44:27, Jeremiah 46:25, Jeremiah 49:10, Jeremiah 51:9, Lamentations
1:2, Ezekiel 2:3, Ezekiel 5:16, Ezekiel 16:7, Ezekiel 24:25, Ezekiel 31:8,
Ezekiel 32:4, Ezekiel 36:15, Ezekiel 40:46, Ezekiel 45:15, Hosea 10:8, Amos
9:6, Malachi 2:14, Matthew 11:27, Matthew 21:31, Mark 14:72, Luke 12:37, Luke
14:31, John 13:1, Acts 27:21, 2 Corinthians 13:5, Revelation 19:15, Genesis
20:16, Genesis 21:17, Genesis 23:17, Genesis 30:40, Genesis 34:25, Genesis
38:16, Genesis 47:1, Exodus 12:13, Exodus 40:29, Leviticus 13:28, Leviticus
23:27, Leviticus 26:5, Numbers 16:47, Numbers 21:23, Deuteronomy 18:16,
Deuteronomy 31:12, Joshua 8:2, Judges 19:24, Judges 21:10, 1 Samuel 10:21, 1
Samuel 26:15, 1 Samuel 30:12, 2 Samuel 11:2, 2 Samuel 18:5, 2 Samuel 23:11, 1
Kings 1:9, 1 Kings 1:38, 1 Kings 2:24, 1 Kings 6:38, 1 Kings 8:9, 1 Kings 9:15,
1 Kings 9:16, 1 Kings 12:18, 1 Kings 14:6, 2 Kings 19:28, 2 Kings 21:13, 1
Chronicles 12:38, 1 Chronicles 15:16, 1 Chronicles 15:24, 1 Chronicles 20:4, 1
Chronicles 26:28, 2 Chronicles 18:2, 2 Chronicles 21:19, 2 Chronicles 28:3, 2
Chronicles 30:17, Ezra 3:5, Ezra 8:29, Nehemiah 3:13, Nehemiah 8:6, Esther
3:15, Esther 5:9, Proverbs 24:12, Isaiah 17:13, Isaiah 23:13, Isaiah 23:18,
Isaiah 36:7, Isaiah 44:11, Isaiah 44:15, Isaiah 48:8, Isaiah 61:9, Jeremiah
13:16, Jeremiah 31:7, Lamentations 2:3, Lamentations 2:10, Ezekiel 1:21,
Ezekiel 14:9, Ezekiel 14:13, Ezekiel 20:3, Ezekiel 20:6, Ezekiel 30:13, Ezekiel
48:13, Daniel 5:10, Daniel 8:3, Daniel 11:7, Hosea 9:6, Micah 6:5, Habakkuk
2:6, Malachi 2:16, Matthew 3:16, Matthew 18:6, Luke 10:22, John 9:16, Acts
10:17, Acts 20:4, Acts 21:20, Acts 28:6, 1 Corinthians 6:9, 1 Corinthians 7:18,
1 Corinthians 12:10, 1 Corinthians 15:10, 2 Corinthians 1:6, James 5:4, 2 Peter
2:12, 1 John 3:10, Revelation 6:15, Genesis 3:8, Genesis 24:45, Genesis 29:3,
Genesis 37:22, Exodus 10:2, Exodus 13:9, Exodus 14:10, Exodus 24:12, Exodus
36:6, Leviticus 17:10, Leviticus 21:21, Leviticus 24:3, Numbers 4:32, Numbers
14:2, Numbers 18:28, Numbers 19:21, Numbers 31:6, Numbers 36:7, Deuteronomy
15:6, Deuteronomy 17:19, Deuteronomy 22:29, Deuteronomy 24:7, Deuteronomy
28:25, Joshua 3:4, Joshua 9:18, Judges 19:16, Judges 21:12, Ruth 1:16, 1 Samuel
6:14, 1 Samuel 18:23, 1 Samuel 22:18, 2 Samuel 10:8, 2 Samuel 13:13, 2 Samuel
16:11, 2 Samuel 19:26, 2 Samuel 21:19, 1 Kings 8:5, 1 Kings 8:33, 2 Kings 2:4,
2 Kings 5:17, 2 Kings 9:19, 2 Kings 14:10, 2 Chronicles 6:41, 2 Chronicles
24:27, 2 Chronicles 36:10, Ezra 2:59, Song of Solomon 5:2, Isaiah 7:25, Isaiah
19:3, Isaiah 35:10, Isaiah 49:21, Isaiah 51:11, Isaiah 52:5, Isaiah 53:7,
Isaiah 62:8, Isaiah 65:25, Jeremiah 6:16, Jeremiah 22:25, Jeremiah 33:24,
Ezekiel 12:16, Ezekiel 16:61, Ezekiel 21:19, Ezekiel 28:23, Ezekiel 40:7,
Daniel 4:14, Hosea 9:7, Jonah 4:6, Micah 2:3, Zephaniah 2:2, Matthew 2:11, Mark
15:1, Luke 3:8, Luke 6:35, Luke 21:12, Luke 23:14, John 5:19, John 12:3, John
20:2, Acts 13:43, Acts 16:14, 1 Corinthians 1:10, 2 Corinthians 3:18, 1 Timothy
5:4, Hebrews 12:2, Genesis 1:12, Genesis 42:7, Genesis 48:14, Exodus 12:16,
Exodus 15:25, Exodus 29:27, Exodus 32:11, Leviticus 2:13, Leviticus 7:16,
Numbers 3:31, Numbers 4:12, Numbers 9:10, Numbers 17:6, Numbers 17:8, Numbers
20:19, Numbers 22:18, Numbers 23:13, Numbers 29:13, Deuteronomy 21:17,
Deuteronomy 22:2, Deuteronomy 28:64, Joshua 18:19, Judges 6:25, Judges 15:5,
Judges 16:25, Judges 21:21, Ruth 3:13, 1 Samuel 14:21, 1 Samuel 15:12, 1 Samuel
23:11, 2 Samuel 7:27, 2 Samuel 17:16, 2 Samuel 17:25, 1 Kings 11:31, 1 Kings
13:11, 1 Kings 20:6, 1 Kings 22:4, 2 Kings 1:10, 2 Kings 6:23, 2 Kings 12:13, 1
Chronicles 9:22, 1 Chronicles 21:22, 2 Chronicles 13:8, 2 Chronicles 26:23,
Nehemiah 3:25, Esther 8:15, Psalms 27:4, Isaiah 8:19, Isaiah 10:15, Isaiah
26:21, Isaiah 30:29, Isaiah 52:7, Isaiah 66:17, Jeremiah 6:1, Jeremiah 12:6,
Jeremiah 23:17, Jeremiah 25:1, Jeremiah 34:18, Jeremiah 35:13, Jeremiah 42:2,
Jeremiah 50:37, Jeremiah 51:33, Lamentations 2:1, Ezekiel 10:4, Ezekiel 19:14,
Ezekiel 20:44, Ezekiel 25:13, Ezekiel 34:16, Ezekiel 44:2, Ezekiel 45:19, Hosea
7:16, Hosea 14:9, Amos 1:8, Nahum 3:10, Habakkuk 2:17, Haggai 2:12, Zechariah
1:16, Zechariah 8:3, Zechariah 8:23, Malachi 3:7, Matthew 5:13, Matthew 9:17,
Matthew 13:23, Matthew 17:25, Mark 12:33, Mark 13:9, Luke 7:12, Acts 5:36, Acts
20:9, Romans 5:16, Romans 15:27, 1 Corinthians 6:13, Galatians 5:17, 1 Peter
1:2, 1 Peter 1:3, 1 Peter 3:20, Revelation 3:8, Genesis 2:5, Genesis 15:13,
Genesis 20:6, Genesis 21:12, Genesis 26:3, Genesis 27:46, Genesis 42:16, Exodus
5:8, Exodus 11:3, Exodus 20:17, Exodus 35:29, Leviticus 1:13, Numbers 6:12,
Numbers 18:30, Numbers 24:10, Deuteronomy 12:3, Deuteronomy 17:16, Deuteronomy
26:3, Joshua 8:19, Joshua 23:4, Judges 9:33, Judges 14:15, 1 Samuel 9:2, 1
Samuel 17:13, 1 Samuel 18:8, 1 Samuel 20:2, 1 Samuel 20:5, 1 Samuel 26:20, 2
Samuel 3:35, 2 Samuel 7:10, 2 Samuel 15:24, 2 Samuel 19:28, 2 Samuel 20:6, 1
Kings 1:45, 1 Kings 7:8, 1 Kings 13:32, 1 Kings 19:13, 1 Kings 20:27, 2 Kings
4:34, 2 Kings 5:5, 2 Kings 6:20, 2 Kings 9:5, 2 Kings 16:3, 2 Kings 17:16, 2
Kings 20:6, 2 Kings 24:14, 1 Chronicles 29:19, 2 Chronicles 1:3, 2 Chronicles
7:14, Ezra 4:17, Ezra 8:25, Esther 8:13, Isaiah 14:19, Isaiah 20:2, Isaiah
30:30, Isaiah 54:10, Isaiah 55:5, Jeremiah 5:28, Jeremiah 16:5, Jeremiah 17:13,
Jeremiah 23:16, Jeremiah 25:10, Jeremiah 31:28, Jeremiah 36:30, Jeremiah 48:45,
Jeremiah 49:5, Ezekiel 24:13, Ezekiel 39:7, Daniel 3:24, Daniel 9:13, Zechariah
7:7, Matthew 27:9, Mark 8:38, Mark 9:31, John 20:17, Acts 17:23, Acts 18:18,
Romans 4:17, 1 Corinthians 11:22, 1 Thessalonians 3:6, Hebrews 9:26, Jude 1:6,
Jude 1:7, Revelation 18:7, Genesis 20:7, Genesis 47:14, Genesis 47:24, Exodus
10:5, Exodus 32:4, Leviticus 1:5, Leviticus 20:24, Leviticus 27:16, Numbers
4:25, Numbers 8:12, Numbers 8:20, Numbers 9:21, Numbers 11:8, Numbers 13:20,
Numbers 14:35, Numbers 19:2, Numbers 27:3, Numbers 30:5, Numbers 35:2,
Deuteronomy 4:46, Deuteronomy 5:28, Deuteronomy 14:7, Deuteronomy 17:15,
Deuteronomy 21:8, Deuteronomy 28:53, Joshua 5:4, Joshua 7:5, Joshua 14:9,
Judges 11:26, 1 Samuel 6:8, 1 Samuel 16:5, 1 Samuel 18:5, 1 Samuel 21:6, 2
Samuel 18:22, 1 Kings 8:32, 1 Kings 10:22, 1 Kings 18:44, 2 Kings 2:6, 2 Kings
3:21, 2 Kings 6:25, 2 Kings 9:36, 2 Kings 19:26, 2 Kings 21:11, 2 Chronicles
6:23, Nehemiah 3:4, Nehemiah 6:7, Psalms 42:4, Ecclesiastes 9:9, Song of
Solomon 3:4, Isaiah 9:6, Isaiah 10:24, Isaiah 30:23, Isaiah 37:27, Isaiah 42:5,
Isaiah 46:7, Isaiah 49:25, Isaiah 57:6, Jeremiah 1:18, Jeremiah 14:12, Jeremiah
15:8, Jeremiah 15:20, Jeremiah 25:12, Jeremiah 36:7, Jeremiah 40:12, Jeremiah
41:18, Jeremiah 44:22, Ezekiel 4:14, Ezekiel 4:16, Ezekiel 9:3, Ezekiel 18:19,
Ezekiel 30:12, Ezekiel 32:32, Ezekiel 36:17, Ezekiel 38:22, Ezekiel 39:4,
Daniel 7:10, Hosea 2:13, Hosea 4:1, Hosea 9:15, Amos 9:8, Obadiah 1:1,
Zephaniah 2:5, Zephaniah 3:6, Matthew 16:21, Luke 24:44, 1 Corinthians 7:14, 1
Corinthians 7:37, 2 Thessalonians 3:6, 2 Timothy 4:8, Hebrews 2:14, 1 John
2:14, Revelation 7:2, Revelation 11:13, Genesis 48:4, Exodus 16:16, Numbers
1:51, Numbers 11:12, Numbers 12:14, Numbers 15:39, Numbers 16:27, Numbers 17:2,
Numbers 33:3, Deuteronomy 5:31, Deuteronomy 11:2, Deuteronomy 12:28,
Deuteronomy 15:19, Deuteronomy 16:14, Deuteronomy 17:2, Deuteronomy 23:4,
Joshua 5:14, Joshua 7:26, Joshua 17:14, Joshua 18:17, Joshua 21:32, Judges 3:8,
Judges 9:27, Judges 15:1, 1 Samuel 1:23, 1 Samuel 7:1, 1 Samuel 28:9, 2 Samuel
6:16, 2 Samuel 16:3, 1 Kings 5:5, 1 Kings 8:39, 1 Kings 10:29, 1 Kings 15:20, 1
Kings 20:22, 2 Kings 11:12, 2 Kings 13:12, 1 Chronicles 19:19, 1 Chronicles
29:20, Nehemiah 6:16, Nehemiah 9:3, Esther 2:17, Esther 9:26, Isaiah 6:10,
Isaiah 17:6, Isaiah 37:36, Isaiah 45:1, Isaiah 58:3, Isaiah 65:22, Isaiah 66:2,
Jeremiah 3:6, Jeremiah 26:20, Jeremiah 27:20, Jeremiah 30:8, Jeremiah 32:14,
Jeremiah 35:7, Jeremiah 38:9, Jeremiah 43:5, Jeremiah 48:33, Lamentations 1:3,
Ezekiel 5:13, Ezekiel 7:13, Ezekiel 9:6, Ezekiel 14:11, Ezekiel 23:10, Ezekiel
23:29, Ezekiel 40:16, Ezekiel 47:18, Hosea 1:4, Hosea 2:12, Hosea 2:15, Obadiah
1:5, Jonah 3:7, Zechariah 4:10, Zechariah 5:9, Zechariah 11:13, Zechariah
12:12, Malachi 3:16, Matthew 24:29, Matthew 24:30, John 15:16, John 20:19, Acts
9:27, Acts 13:27, Acts 20:35, 2 Corinthians 5:12, Hebrews 2:17, Genesis 19:8,
Genesis 44:20, Exodus 10:26, Exodus 12:4, Exodus 12:42, Leviticus 4:3,
Leviticus 13:5, Leviticus 13:52, Leviticus 20:3, Leviticus 24:16, Numbers
21:22, Deuteronomy 5:24, Deuteronomy 19:9, Deuteronomy 21:16, Deuteronomy
28:13, Judges 3:10, Judges 13:20, Judges 16:20, 1 Samuel 6:5, 1 Samuel 15:15, 1
Samuel 17:55, 1 Samuel 25:25, 1 Samuel 27:8, 1 Kings 3:22, 1 Kings 16:16, 1
Kings 18:5, 1 Kings 22:39, 2 Kings 9:6, 2 Kings 13:7, 2 Kings 15:5, 2 Kings
20:14, 2 Kings 25:13, 1 Chronicles 19:6, 1 Chronicles 29:1, 2 Chronicles 11:23,
2 Chronicles 23:11, 2 Chronicles 27:2, Ezra 5:11, Nehemiah 5:7, Nehemiah 6:18,
Isaiah 18:6, Isaiah 40:9, Isaiah 43:2, Isaiah 51:23, Isaiah 54:4, Isaiah 60:17,
Jeremiah 17:4, Jeremiah 25:33, Jeremiah 26:21, Jeremiah 30:16, Jeremiah 31:20,
Jeremiah 31:35, Jeremiah 47:3, Lamentations 2:20, Ezekiel 8:5, Ezekiel 12:6,
Ezekiel 23:37, Ezekiel 30:22, Ezekiel 36:36, Ezekiel 37:22, Ezekiel 37:26,
Ezekiel 44:24, Ezekiel 45:6, Ezekiel 46:19, Daniel 2:23, Hosea 1:2, Amos 6:2,
Obadiah 1:20, Micah 1:5, Micah 5:6, Matthew 10:25, Mark 5:13, Mark 10:33, Luke
7:44, Luke 20:28, John 2:9, Acts 21:5, Acts 28:4, 2 Corinthians 1:12, 2
Thessalonians 2:13, Hebrews 2:8, James 5:7, 2 Peter 1:19, Revelation 14:3,
Genesis 16:2, Genesis 19:14, Genesis 34:21, Genesis 42:33, Exodus 10:3, Exodus
10:13, Exodus 21:8, Exodus 34:18, Leviticus 10:12, Leviticus 13:49, Leviticus
27:8, Numbers 15:15, Numbers 18:2, Numbers 22:4, Numbers 24:13, Numbers 24:17,
Numbers 26:58, Numbers 26:62, Numbers 28:24, Numbers 30:4, Numbers 31:47,
Numbers 31:54, Deuteronomy 2:8, Deuteronomy 5:9, Joshua 8:18, Joshua 10:10,
Joshua 17:3, Joshua 24:2, Judges 10:8, Judges 11:36, Judges 19:30, Ruth 4:1,
Ruth 4:9, 1 Samuel 15:22, 2 Samuel 2:26, 2 Samuel 5:2, 2 Samuel 17:21, 2 Samuel
24:2, 1 Kings 8:29, 2 Kings 4:42, 2 Kings 6:18, 2 Kings 15:30, 1 Chronicles
17:6, 1 Chronicles 22:8, 2 Chronicles 29:18, 2 Chronicles 31:15, Ezra 5:12,
Nehemiah 11:1, Song of Solomon 6:9, Isaiah 3:24, Isaiah 22:21, Isaiah 33:20,
Isaiah 48:1, Jeremiah 3:13, Jeremiah 3:19, Jeremiah 12:4, Jeremiah 16:18,
Jeremiah 18:23, Jeremiah 22:30, Lamentations 2:13, Ezekiel 1:4, Ezekiel 1:10,
Ezekiel 26:7, Ezekiel 39:14, Ezekiel 43:18, Micah 5:2, Habakkuk 3:17, Zechariah
7:14, Matthew 23:35, Acts 5:9, Romans 13:4, 1 Peter 2:9, Jude 1:3, Jude 1:12,
Revelation 12:4, Genesis 17:12, Genesis 26:22, Genesis 26:24, Genesis 27:41,
Genesis 27:42, Genesis 28:6, Genesis 47:15, Genesis 49:25, Exodus 8:17, Exodus
9:13, Exodus 10:12, Exodus 22:5, Leviticus 8:21, Leviticus 23:24, Leviticus
23:40, Numbers 24:8, Numbers 35:33, Deuteronomy 28:1, Deuteronomy 28:29, Joshua
11:6, Joshua 13:8, Judges 9:54, Judges 11:21, Judges 17:4, Judges 19:5, Judges
20:42, 1 Samuel 11:3, 1 Samuel 22:2, 1 Samuel 30:13, 2 Samuel 3:13, 2 Samuel
14:26, 2 Samuel 24:22, 1 Kings 4:13, 1 Kings 12:28, 1 Kings 16:24, 2 Kings
1:17, 1 Chronicles 16:5, 1 Chronicles 20:6, 1 Chronicles 21:26, 2 Chronicles
6:34, 2 Chronicles 10:15, Ezra 4:23, Ezra 9:13, Nehemiah 8:18, Esther 6:11,
Esther 9:27, Psalms 40:10, Isaiah 19:1, Isaiah 19:21, Isaiah 39:3, Isaiah
60:14, Isaiah 63:11, Isaiah 66:8, Isaiah 66:14, Jeremiah 3:8, Jeremiah 8:10,
Jeremiah 21:2, Jeremiah 23:38, Jeremiah 26:8, Jeremiah 27:15, Jeremiah 32:3,
Jeremiah 32:37, Jeremiah 49:36, Lamentations 2:7, Lamentations 2:15, Ezekiel
37:9, Daniel 2:10, Daniel 2:28, Daniel 10:19, Hosea 10:5, Hosea 11:8, Joel
2:28, Habakkuk 2:16, Matthew 18:8, Mark 11:23, Mark 13:11, Luke 7:39, Luke
9:33, John 17:12, Acts 15:29, Romans 1:13, Romans 7:4, Galatians 4:9, 1 John
5:10, Revelation 3:1, Revelation 12:14, Revelation 15:3, Revelation 21:3,
Genesis 1:25, Genesis 46:31, Leviticus 15:10, Leviticus 18:17, Leviticus 27:33,
Numbers 11:32, Numbers 19:12, Numbers 21:7, Deuteronomy 1:8, Deuteronomy 2:36,
Deuteronomy 6:18, Deuteronomy 20:8, Deuteronomy 32:43, Joshua 11:12, Judges
5:14, Judges 6:5, 1 Samuel 2:14, 1 Samuel 7:6, 1 Samuel 9:21, 1 Samuel 16:16, 1
Samuel 21:11, 1 Samuel 23:25, 1 Samuel 30:6, 2 Samuel 1:4, 2 Samuel 2:13, 2
Samuel 14:14, 2 Samuel 18:32, 2 Samuel 21:20, 1 Kings 3:11, 1 Kings 7:20, 1
Kings 8:23, 1 Kings 8:46, 1 Kings 11:18, 1 Kings 19:19, 2 Kings 3:9, 2 Kings
4:39, 2 Kings 6:15, 2 Kings 13:21, 2 Kings 19:29, 2 Kings 20:20, 2 Kings 23:25,
1 Chronicles 15:29, 2 Chronicles 5:12, 2 Chronicles 16:7, 2 Chronicles 18:14, 2
Chronicles 19:8, 2 Chronicles 30:1, Ezra 7:26, Nehemiah 3:16, Esther 5:6,
Ecclesiastes 8:15, Isaiah 63:1, Jeremiah 2:27, Jeremiah 6:23, Jeremiah 7:31,
Jeremiah 22:4, Jeremiah 27:3, Jeremiah 32:4, Jeremiah 36:23, Jeremiah 49:22,
Jeremiah 50:7, Jeremiah 51:57, Lamentations 2:4, Ezekiel 5:15, Ezekiel 21:14,
Ezekiel 26:12, Ezekiel 28:24, Ezekiel 29:3, Ezekiel 37:21, Ezekiel 45:25,
Daniel 5:29, Daniel 6:15, Amos 7:8, Micah 5:4, Micah 7:9, Zechariah 9:7,
Zechariah 10:2, Matthew 4:24, John 12:35, Acts 20:24, Acts 24:2, Romans 5:15, 1
Corinthians 14:5, Hebrews 7:5, Hebrews 12:1, Revelation 2:2, Revelation 13:14,
Genesis 27:29, Genesis 43:32, Exodus 8:9, Exodus 8:20, Exodus 12:19, Exodus
16:12, Leviticus 4:34, Leviticus 8:26, Leviticus 23:17, Leviticus 23:21,
Leviticus 27:28, Numbers 9:5, Numbers 13:23, Numbers 28:14, Deuteronomy 2:9,
Deuteronomy 14:26, Deuteronomy 28:15, Joshua 11:23, Joshua 18:12, Judges 6:11,
Judges 6:28, Judges 7:1, 1 Samuel 5:9, 1 Samuel 13:4, 2 Samuel 5:19, 2 Samuel
9:3, 2 Samuel 15:12, 2 Samuel 17:10, 2 Samuel 23:20, 1 Kings 1:2, 1 Kings 8:44,
1 Kings 10:10, 1 Kings 16:2, 2 Kings 4:29, 1 Chronicles 10:7, 1 Chronicles
11:22, 1 Chronicles 15:27, 1 Chronicles 22:18, 2 Chronicles 3:11, 2 Chronicles
10:18, Ezra 2:61, Esther 1:5, Esther 4:3, Esther 6:4, Ecclesiastes 9:12, Isaiah
2:6, Isaiah 4:5, Isaiah 16:4, Isaiah 16:10, Isaiah 35:2, Isaiah 58:11, Jeremiah
2:8, Jeremiah 11:17, Jeremiah 16:11, Jeremiah 17:18, Jeremiah 23:5, Jeremiah
33:4, Jeremiah 34:3, Jeremiah 38:23, Jeremiah 42:17, Jeremiah 50:15, Jeremiah
50:42, Jeremiah 52:22, Ezekiel 5:17, Ezekiel 6:11, Ezekiel 24:6, Ezekiel 40:29,
Ezekiel 40:33, Ezekiel 41:2, Daniel 3:19, Matthew 21:25, Matthew 22:4, Matthew
23:15, Mark 15:46, Luke 6:48, Luke 12:33, Luke 19:37, John 5:36, Acts 10:28, 1
Corinthians 9:12, Galatians 2:20, Philippians 4:3, 1 Peter 1:7, Revelation 6:6,
Exodus 11:8, Exodus 12:12, Exodus 18:8, Exodus 18:21, Exodus 20:5, Leviticus
5:6, Leviticus 13:31, Numbers 32:11, Numbers 33:38, Numbers 35:21, Deuteronomy
2:7, Deuteronomy 10:12, Deuteronomy 13:3, Deuteronomy 13:17, Deuteronomy 15:2,
Joshua 14:6, Joshua 22:8, Judges 3:12, Judges 7:8, Judges 7:15, 1 Samuel 2:35,
1 Samuel 9:6, 1 Samuel 26:21, 1 Samuel 28:21, 1 Samuel 29:8, 1 Kings 9:4, 1
Kings 10:9, 2 Kings 7:1, 2 Kings 7:19, 1 Chronicles 15:18, 1 Chronicles 24:19,
1 Chronicles 29:3, 2 Chronicles 20:23, 2 Chronicles 25:13, Ezra 4:12, Ezra 7:7,
Esther 8:7, Psalms 17:14, Isaiah 1:4, Isaiah 5:7, Isaiah 25:4, Isaiah 40:12,
Isaiah 44:12, Isaiah 60:6, Isaiah 61:7, Jeremiah 30:14, Jeremiah 38:2, Jeremiah
39:4, Jeremiah 42:20, Jeremiah 45:1, Jeremiah 48:2, Jeremiah 48:11, Jeremiah
52:17, Lamentations 2:17, Ezekiel 17:12, Ezekiel 46:1, Daniel 6:23, Joel 2:23,
Habakkuk 3:16, Malachi 2:11, Mark 12:1, Luke 8:35, Acts 7:8, Romans 6:16, 2
Corinthians 12:9, Philippians 1:7, Genesis 11:6, Genesis 22:13, Exodus 4:21,
Exodus 9:19, Exodus 33:11, Exodus 39:40, Leviticus 16:33, Leviticus 25:46,
Leviticus 26:16, Leviticus 26:44, Leviticus 27:18, Deuteronomy 12:27, Judges
14:6, 1 Samuel 4:6, 1 Samuel 5:10, 1 Samuel 17:39, 1 Samuel 19:11, 1 Samuel
30:15, 2 Samuel 9:7, 1 Kings 5:3, 1 Kings 20:42, 2 Kings 2:3, 2 Kings 21:16, 1
Chronicles 23:29, 2 Chronicles 4:22, 2 Chronicles 7:20, 2 Chronicles 25:9, 2
Chronicles 26:15, 2 Chronicles 29:35, Ezra 6:9, Ezra 6:20, Esther 4:4, Isaiah
8:7, Isaiah 28:4, Isaiah 43:10, Isaiah 44:13, Isaiah 63:3, Isaiah 66:24,
Jeremiah 3:12, Jeremiah 14:17, Jeremiah 40:9, Jeremiah 43:2, Jeremiah 49:3,
Jeremiah 51:12, Lamentations 1:21, Ezekiel 25:14, Ezekiel 40:22, Daniel 6:13,
Daniel 11:39, Amos 1:9, Zechariah 1:7, Matthew 21:33, John 16:21, John 21:15,
Acts 5:4, Acts 6:9, Acts 16:18, Acts 19:9, Acts 26:18, 1 Timothy 5:10, 1 John
5:20, Revelation 2:13, Revelation 12:9, Revelation 14:4, Genesis 32:20, Genesis
38:25, Genesis 39:5, Exodus 8:3, Exodus 26:13, Leviticus 5:13, Leviticus 7:12,
Leviticus 15:26, Leviticus 23:14, Numbers 8:4, Deuteronomy 4:21, Deuteronomy
6:2, Deuteronomy 28:67, Joshua 7:3, Joshua 18:4, Judges 20:45, 1 Samuel 2:15, 1
Samuel 2:36, 1 Samuel 4:18, 1 Samuel 10:8, 1 Samuel 17:37, 1 Samuel 23:13, 1
Samuel 25:8, 1 Samuel 27:5, 1 Samuel 28:14, 2 Samuel 3:18, 2 Samuel 6:2, 1
Kings 8:37, 1 Kings 12:15, 2 Kings 18:22, 2 Kings 19:15, 1 Chronicles 7:2, 1
Chronicles 22:9, 2 Chronicles 9:11, 2 Chronicles 21:20, 2 Chronicles 35:22,
Ezra 1:5, Esther 7:9, Isaiah 8:21, Isaiah 29:14, Isaiah 41:7, Jeremiah 3:17,
Jeremiah 8:6, Jeremiah 23:12, Jeremiah 28:4, Jeremiah 30:21, Jeremiah 38:25,
Jeremiah 44:15, Jeremiah 46:21, Ezekiel 8:2, Ezekiel 22:25, Ezekiel 33:22,
Ezekiel 43:20, Ezekiel 43:27, Ezekiel 46:14, Hosea 1:11, Hosea 2:5, Hosea 2:7,
Joel 3:4, Habakkuk 2:5, Matthew 6:25, Mark 16:8, Luke 12:53, Acts 4:10, Acts
15:2, Acts 25:16, Acts 26:16, 2 Corinthians 11:26, 2 Corinthians 13:10, 1
Timothy 3:16, Hebrews 9:4, Revelation 1:9, Revelation 3:9, Revelation 14:15,
Genesis 6:20, Genesis 7:11, Genesis 18:25, Genesis 32:10, Genesis 41:8, Exodus
33:19, Leviticus 14:51, Leviticus 16:17, Numbers 11:20, Numbers 32:17,
Deuteronomy 1:22, Deuteronomy 3:2, Deuteronomy 11:4, Deuteronomy 28:12,
Deuteronomy 33:29, Deuteronomy 34:4, Joshua 12:6, Judges 7:12, 1 Samuel 6:19, 1
Samuel 8:12, 1 Samuel 11:15, 1 Samuel 17:51, 1 Samuel 17:52, 1 Samuel 19:4, 1
Samuel 20:8, 1 Samuel 29:9, 2 Samuel 3:27, 2 Samuel 19:42, 2 Samuel 20:15, 2
Samuel 23:9, 2 Samuel 24:21, 1 Kings 14:13, 1 Kings 21:29, 1 Kings 22:13, 2
Kings 2:2, 2 Kings 2:5, 2 Kings 5:1, 2 Kings 13:14, 2 Kings 23:27, 2 Chronicles
6:28, 2 Chronicles 7:10, 2 Chronicles 18:12, Ezra 1:3, Ezra 6:13, Ezra 8:31,
Nehemiah 12:39, Esther 7:7, Esther 9:25, Isaiah 7:4, Isaiah 22:25, Isaiah
40:26, Isaiah 50:4, Jeremiah 2:19, Jeremiah 13:10, Jeremiah 26:11, Jeremiah
29:25, Jeremiah 30:18, Jeremiah 34:7, Jeremiah 37:7, Jeremiah 41:5,
Lamentations 2:11, Ezekiel 20:9, Ezekiel 22:20, Ezekiel 26:10, Ezekiel 29:4,
Ezekiel 44:13, Ezekiel 46:17, Daniel 2:41, Daniel 7:9, Daniel 10:12, Daniel
11:15, Hosea 3:1, Obadiah 1:7, Jonah 4:8, Zephaniah 1:3, Zephaniah 3:13,
Zechariah 13:7, Malachi 1:14, Matthew 21:23, Luke 6:49, Luke 8:47, Romans 1:20,
1 John 2:13, Revelation 1:20, Revelation 6:11, Revelation 11:15, Revelation
20:3, Revelation 20:6, Genesis 1:30, Genesis 12:8, Genesis 42:21, Exodus 7:20,
Exodus 14:27, Exodus 17:1, Exodus 21:29, Exodus 28:12, Exodus 34:20, Leviticus
21:10, Numbers 21:34, Deuteronomy 1:39, Deuteronomy 23:20, Deuteronomy 27:15,
Deuteronomy 28:20, Deuteronomy 28:65, Deuteronomy 32:21, Joshua 6:17, Joshua
7:15, Joshua 22:25, Judges 6:37, Judges 7:3, 1 Samuel 17:8, 2 Samuel 5:20, 2
Samuel 13:6, 2 Samuel 13:28, 2 Samuel 14:15, 2 Samuel 21:17, 2 Samuel 23:17, 1
Kings 10:13, 1 Kings 11:34, 1 Kings 21:22, 2 Kings 5:11, 2 Kings 10:24, 2 Kings
13:25, 1 Chronicles 11:3, Isaiah 28:16, Isaiah 30:33, Isaiah 35:8, Isaiah 47:9,
Jeremiah 9:12, Jeremiah 10:9, Jeremiah 23:8, Jeremiah 32:23, Jeremiah 50:20,
Jeremiah 51:25, Jeremiah 51:59, Ezekiel 10:7, Ezekiel 16:13, Ezekiel 24:14,
Ezekiel 30:18, Ezekiel 33:24, Ezekiel 45:23, Daniel 5:17, Daniel 10:11, Amos
1:5, Amos 1:13, Amos 9:14, Zephaniah 1:4, Zechariah 7:12, Matthew 27:24,
Matthew 27:64, Mark 12:26, Luke 1:17, John 19:23, Acts 19:19, Acts 25:24,
Romans 1:27, 2 Corinthians 8:19, Galatians 4:27, Hebrews 4:12, Revelation 2:20,
Revelation 5:8, Revelation 14:10, Revelation 19:6, Genesis 1:21, Exodus 5:14,
Exodus 13:17, Exodus 17:6, Exodus 31:13, Exodus 35:22, Leviticus 13:20,
Leviticus 16:24, Leviticus 19:20, Leviticus 25:28, Numbers 5:13, Numbers 5:21,
Numbers 6:11, Numbers 7:25, Numbers 7:31, Numbers 7:37, Numbers 7:43, Numbers
7:49, Numbers 7:55, Numbers 7:61, Numbers 7:67, Numbers 7:73, Numbers 7:79,
Numbers 31:12, Deuteronomy 3:14, Deuteronomy 32:51, Judges 5:30, Judges 7:11,
Judges 13:5, Judges 18:30, 1 Samuel 12:14, 1 Samuel 13:11, 1 Samuel 13:13, 1
Samuel 15:20, 1 Samuel 18:21, 1 Samuel 25:34, 2 Samuel 6:21, 2 Samuel 11:13, 2
Samuel 14:13, 2 Samuel 15:20, 2 Samuel 15:30, 1 Kings 8:47, 1 Kings 12:20, 2
Kings 7:15, 2 Kings 17:7, 2 Kings 19:37, 1 Chronicles 5:20, 1 Chronicles 24:4,
2 Chronicles 16:9, Ezra 4:9, Nehemiah 7:6, Isaiah 1:11, Jeremiah 6:10, Jeremiah
13:12, Jeremiah 14:18, Jeremiah 14:19, Jeremiah 37:10, Jeremiah 46:26, Jeremiah
48:44, Jeremiah 51:46, Ezekiel 8:11, Ezekiel 34:18, Daniel 1:5, Daniel 4:12,
Nahum 1:14, Matthew 10:41, Luke 12:58, Luke 14:10, John 16:13, 2 Corinthians
9:13, Revelation 18:19, Exodus 9:29, Exodus 30:10, Numbers 9:22, Numbers 21:13,
Deuteronomy 12:31, Deuteronomy 20:5, Deuteronomy 28:11, Deuteronomy 28:48,
Joshua 8:20, Joshua 9:11, Joshua 17:1, Judges 4:14, Judges 7:5, Judges 9:15,
Judges 15:18, 1 Samuel 9:20, 1 Samuel 17:45, 1 Samuel 20:41, 2 Samuel 19:8, 2
Samuel 23:10, 2 Samuel 24:3, 1 Kings 1:13, 1 Kings 15:27, 1 Kings 20:23, 2
Kings 7:17, 1 Chronicles 4:17, 2 Chronicles 26:20, 2 Chronicles 32:9, 2
Chronicles 36:14, Ecclesiastes 3:19, Ecclesiastes 5:18, Isaiah 24:18, Isaiah
30:14, Jeremiah 10:25, Jeremiah 21:9, Jeremiah 25:3, Jeremiah 25:31, Jeremiah
34:16, Jeremiah 38:18, Jeremiah 50:16, Jeremiah 51:16, Jeremiah 51:34, Ezekiel
39:28, Hosea 4:6, Hosea 10:14, Zechariah 4:2, Matthew 19:28, Mark 1:45, Mark
7:4, Acts 9:39, 1 Corinthians 4:6, Revelation 18:12, Genesis 48:16, Exodus
18:22, Exodus 19:9, Leviticus 5:4, Leviticus 14:36, Leviticus 16:29, Leviticus
26:25, Deuteronomy 3:20, Deuteronomy 15:7, Deuteronomy 21:23, Deuteronomy
30:10, Joshua 12:8, Judges 12:3, Judges 13:7, Judges 19:25, Judges 19:27, Ruth
1:13, Ruth 2:9, 1 Samuel 1:24, 1 Samuel 13:14, 1 Samuel 25:28, 2 Samuel 6:19, 2
Samuel 19:41, 1 Kings 1:19, 1 Kings 9:7, 1 Kings 14:5, 1 Kings 17:10, 1 Kings
20:9, 2 Kings 7:13, 2 Kings 10:13, 2 Kings 17:6, 2 Chronicles 6:37, 2
Chronicles 24:24, 2 Chronicles 29:30, 2 Chronicles 30:24, 2 Chronicles 35:9,
Ezra 5:6, Ezra 10:1, Isaiah 11:15, Isaiah 24:16, Isaiah 36:12, Isaiah 37:30,
Isaiah 57:13, Jeremiah 8:16, Jeremiah 9:26, Jeremiah 10:5, Jeremiah 10:13,
Jeremiah 11:4, Jeremiah 31:32, Jeremiah 35:11, Jeremiah 42:4, Jeremiah 47:4,
Lamentations 1:14, Ezekiel 6:6, Ezekiel 12:23, Ezekiel 16:55, Ezekiel 16:57,
Ezekiel 33:31, Ezekiel 39:9, Ezekiel 45:1, Haggai 2:23, Zechariah 10:11, Mark
6:41, Luke 3:16, John 18:36, John 21:23, Acts 23:15, 1 Peter 3:7, Jude 1:4,
Revelation 14:13, Genesis 2:9, Genesis 16:5, Genesis 23:16, Exodus 12:17,
Exodus 13:3, Exodus 33:12, Exodus 35:21, Leviticus 5:7, Leviticus 8:7,
Leviticus 14:8, Leviticus 19:19, Leviticus 22:21, Numbers 26:9, Numbers 36:2,
Deuteronomy 4:1, Deuteronomy 4:26, Deuteronomy 9:7, Joshua 6:23, Joshua 6:25,
Joshua 7:7, Joshua 15:9, Judges 5:11, Judges 9:2, Judges 11:2, Judges 18:3, 1
Samuel 2:10, 1 Samuel 12:8, 2 Samuel 11:1, 2 Samuel 18:33, 1 Kings 7:31, 1
Kings 8:66, 1 Kings 9:19, 1 Kings 10:21, 2 Kings 3:27, 2 Kings 18:37, 2 Kings
21:3, 2 Kings 25:11, 1 Chronicles 14:11, 1 Chronicles 20:3, 2 Chronicles 33:15,
2 Chronicles 35:7, Ezra 7:6, Esther 1:10, Esther 10:2, Isaiah 5:2, Isaiah
10:14, Isaiah 31:3, Isaiah 32:6, Isaiah 33:1, Isaiah 41:2, Isaiah 44:23, Isaiah
47:11, Jeremiah 7:20, Jeremiah 49:37, Ezekiel 17:15, Ezekiel 35:11, Ezekiel
41:16, Amos 9:3, Micah 2:4, Nahum 1:15, Mark 2:26, Mark 16:14, Luke 13:25, John
21:7, Acts 8:1, Acts 22:3, Romans 5:17, Romans 6:13, 2 Corinthians 12:14,
Hebrews 10:29, Revelation 4:1, Genesis 3:14, Genesis 21:16, Genesis 27:37,
Genesis 47:17, Exodus 11:5, Exodus 15:19, Exodus 34:9, Numbers 5:14, Numbers
7:13, Numbers 19:10, Deuteronomy 3:16, Deuteronomy 9:9, Deuteronomy 33:21,
Joshua 6:18, Joshua 10:12, Joshua 14:4, Joshua 24:7, Judges 11:13, Judges
20:48, 1 Samuel 26:12, 1 Samuel 28:19, 2 Samuel 10:19, 1 Kings 12:14, 1
Chronicles 19:5, 2 Chronicles 6:32, 2 Chronicles 20:15, 2 Chronicles 29:6, Ezra
1:4, Esther 9:2, Esther 9:16, Job 42:7, Isaiah 27:13, Isaiah 29:16, Isaiah
36:22, Isaiah 49:22, Isaiah 49:26, Isaiah 50:11, Jeremiah 1:3, Jeremiah 3:2,
Jeremiah 7:34, Jeremiah 38:11, Jeremiah 44:2, Jeremiah 52:20, Lamentations 2:5,
Ezekiel 1:24, Ezekiel 23:42, Ezekiel 33:8, Ezekiel 33:30, Ezekiel 35:15, Daniel
2:5, Daniel 10:6, Hosea 13:2, Micah 4:1, Zechariah 9:15, Matthew 1:17, Mark
6:56, Acts 3:13, Acts 25:23, Ephesians 6:12, Philippians 3:8, Hebrews 2:9,
Revelation 5:9, Genesis 19:2, Genesis 30:15, Genesis 47:6, Exodus 18:14, Exodus
27:16, Exodus 33:16, Leviticus 15:13, Leviticus 23:13, Numbers 18:1,
Deuteronomy 1:19, Deuteronomy 5:21, Deuteronomy 14:24, Joshua 1:14, Joshua
8:22, Joshua 17:2, Judges 7:20, Judges 15:19, 1 Samuel 2:8, 1 Samuel 12:10, 1
Samuel 22:6, 1 Samuel 22:15, 2 Samuel 17:23, 2 Samuel 19:11, 1 Kings 11:29, 2
Kings 1:2, 2 Kings 15:16, 1 Chronicles 13:6, 1 Chronicles 19:16, 2 Chronicles
19:2, 2 Chronicles 33:18, 2 Chronicles 35:24, 2 Chronicles 35:25, Ezra 7:24,
Nehemiah 10:38, Esther 3:6, Esther 5:2, Isaiah 51:3, Isaiah 56:6, Jeremiah
40:8, Jeremiah 45:5, Jeremiah 50:2, Ezekiel 29:19, Daniel 7:4, Amos 8:5, Micah
7:17, Zechariah 3:4, Zechariah 3:7, Zechariah 3:9, Zechariah 6:13, Malachi
1:10, Matthew 12:42, Luke 13:34, John 16:17, 1 Corinthians 1:2, Hebrews 11:4,
Genesis 6:4, Genesis 18:19, Genesis 26:18, Exodus 16:4, Exodus 34:29, Leviticus
14:10, Numbers 3:41, Numbers 6:18, Deuteronomy 6:3, Deuteronomy 18:22, Joshua
2:1, Joshua 10:37, Joshua 13:31, Joshua 18:13, Judges 9:24, Judges 12:4, Judges
21:23, Ruth 2:20, 1 Samuel 25:31, 2 Samuel 14:11, 2 Samuel 21:4, 2 Samuel
23:21, 1 Kings 8:16, 1 Kings 13:18, 1 Kings 22:22, 1 Chronicles 28:15, 2
Chronicles 31:16, Ezra 7:16, Ezra 9:14, Nehemiah 8:7, Esther 8:8, Isaiah 11:4,
Jeremiah 9:24, Jeremiah 31:37, Ezekiel 5:6, Ezekiel 23:23, Daniel 7:23, Amos
3:9, Amos 3:12, Matthew 6:2, Matthew 12:45, Matthew 23:37, John 16:19, Acts
16:37, Acts 23:10, Acts 25:26, Romans 7:3, Romans 7:7, Romans 12:3, Colossians
1:23, Titus 3:8, 3 John 1:10, Genesis 8:9, Genesis 19:34, Genesis 50:13, Exodus
14:5, Exodus 27:11, Exodus 28:4, Leviticus 6:10, Leviticus 16:18, Leviticus
26:43, Numbers 1:53, Deuteronomy 2:14, Deuteronomy 12:6, Deuteronomy 26:5,
Joshua 4:5, Joshua 6:8, Joshua 15:11, Judges 1:7, Judges 16:12, 1 Samuel 7:7, 2
Samuel 19:24, 1 Kings 8:59, 1 Kings 12:21, 1 Kings 16:31, 1 Kings 20:13, 2
Kings 23:17, 1 Chronicles 11:2, 2 Chronicles 3:1, 2 Chronicles 15:9, 2
Chronicles 18:31, 2 Chronicles 30:25, Ezra 3:9, Ezra 8:17, Esther 5:11, Esther
10:3, Isaiah 43:9, Isaiah 44:26, Isaiah 45:8, Isaiah 45:18, Isaiah 65:20,
Jeremiah 3:25, Jeremiah 11:8, Jeremiah 14:10, Jeremiah 20:11, Jeremiah 26:15,
Jeremiah 33:5, Jeremiah 34:22, Jeremiah 36:9, Jeremiah 43:11, Jeremiah 51:58,
Jeremiah 52:12, Ezekiel 8:6, Ezekiel 8:12, Ezekiel 16:27, Ezekiel 48:18, Daniel
4:9, Hosea 4:13, Joel 1:13, Obadiah 1:19, Zephaniah 3:20, Zechariah 9:9,
Matthew 5:22, Luke 12:1, Romans 13:9, 2 Corinthians 6:16, 2 Corinthians 12:20,
Genesis 9:23, Genesis 24:30, Genesis 27:36, Genesis 42:28, Exodus 3:17,
Leviticus 4:25, Leviticus 6:9, Leviticus 12:8, Leviticus 14:13, Leviticus
23:36, Numbers 6:5, Numbers 11:17, Numbers 20:12, Deuteronomy 2:24, Deuteronomy
19:6, Joshua 8:1, Joshua 17:16, Joshua 22:10, Judges 2:19, Judges 20:13, Judges
20:26, Ruth 4:7, 1 Samuel 28:8, 2 Kings 9:17, 2 Kings 10:23, 2 Kings 23:6, 2
Kings 23:15, 2 Chronicles 10:14, 2 Chronicles 21:12, 2 Chronicles 26:6, 2
Chronicles 29:27, Isaiah 37:38, Isaiah 53:10, Isaiah 65:7, Isaiah 66:12,
Jeremiah 16:15, Jeremiah 41:2, Jeremiah 49:32, Ezekiel 20:41, Ezekiel 34:14,
Daniel 7:25, Amos 4:13, Amos 5:8, Matthew 17:27, Mark 8:6, Acts 13:11, Acts
21:26, Genesis 8:17, Genesis 30:33, Genesis 48:7, Genesis 49:26, Exodus 5:3,
Leviticus 6:20, Numbers 6:14, Numbers 7:88, Deuteronomy 9:10, Deuteronomy 10:4,
Deuteronomy 28:45, Joshua 3:17, Joshua 20:8, Judges 13:6, Judges 13:16, Judges
13:23, Judges 14:12, 1 Samuel 23:26, 2 Samuel 4:12, 1 Kings 7:15, 1 Kings
18:21, 2 Kings 4:1, 2 Kings 5:26, 2 Kings 16:10, 2 Kings 23:19, 1 Chronicles
25:3, 2 Chronicles 4:6, 2 Chronicles 14:13, 2 Chronicles 25:24, Nehemiah 7:73,
Nehemiah 10:36, Nehemiah 11:17, Isaiah 2:2, Isaiah 16:8, Isaiah 31:1, Isaiah
58:5, Isaiah 65:13, Jeremiah 4:31, Jeremiah 26:9, Jeremiah 29:18, Jeremiah
34:2, Jeremiah 34:21, Jeremiah 44:7, Ezekiel 4:9, Ezekiel 12:25, Ezekiel 17:7,
Ezekiel 33:13, Ezekiel 46:11, Luke 9:12, Acts 21:28, Romans 11:24, Hebrews
13:17, Jude 1:15, Revelation 12:17, Revelation 15:2, Genesis 50:5, Exodus
12:39, Exodus 36:1, Numbers 1:32, Numbers 16:30, Numbers 30:14, Deuteronomy
4:6, Deuteronomy 13:16, Joshua 24:8, Judges 2:1, Judges 7:22, 1 Samuel 12:9, 1
Samuel 14:27, 1 Samuel 16:18, 1 Samuel 19:20, 2 Samuel 21:14, 1 Kings 7:2, 2
Kings 13:19, 2 Kings 15:20, 1 Chronicles 25:6, 2 Chronicles 16:3, 2 Chronicles
28:12, Ezra 3:12, Ezra 6:21, Nehemiah 9:26, Isaiah 10:13, Isaiah 33:15, Isaiah
58:2, Isaiah 62:4, Jeremiah 34:10, Lamentations 2:8, Ezekiel 3:27, Ezekiel
16:39, Ezekiel 20:39, Ezekiel 28:22, Ezekiel 44:12, Daniel 10:1, Micah 3:11,
Zechariah 1:4, Zechariah 5:4, Zechariah 14:18, Luke 5:17, Acts 25:11, Acts
26:20, Revelation 8:13, Genesis 9:2, Genesis 38:11, Exodus 12:22, Exodus 23:31,
Numbers 3:13, Numbers 5:8, Numbers 7:19, Numbers 11:1, Numbers 11:26, Numbers
30:8, Deuteronomy 29:22, Joshua 13:27, Judges 12:5, Judges 12:6, Judges 18:27,
2 Samuel 21:8, 1 Kings 3:15, 1 Kings 7:50, 1 Kings 15:22, 1 Kings 18:10, 2
Kings 4:38, 2 Kings 5:23, 2 Kings 9:21, 2 Chronicles 28:24, 2 Chronicles 30:8,
2 Chronicles 31:5, 2 Chronicles 34:25, Nehemiah 2:19, Nehemiah 6:1, Nehemiah
7:5, Nehemiah 8:15, Nehemiah 9:10, Esther 1:22, Esther 8:10, Isaiah 11:14,
Isaiah 36:11, Isaiah 54:1, Jeremiah 16:10, Lamentations 2:2, Amos 9:13, Obadiah
1:18, Zephaniah 2:15, Zechariah 12:8, Malachi 2:15, Luke 13:14, John 6:22, John
20:15, Acts 22:30, 1 Corinthians 5:11, 1 Corinthians 7:5, Hebrews 9:19, 2 Peter
1:4, Genesis 22:3, Exodus 3:22, Exodus 28:28, Exodus 38:21, Leviticus 6:12,
Leviticus 14:9, Leviticus 20:18, Numbers 22:6, Deuteronomy 7:25, Deuteronomy
9:28, Deuteronomy 21:5, Deuteronomy 28:55, Joshua 11:8, Joshua 12:1, Joshua
22:32, Judges 15:14, 2 Samuel 7:7, 1 Kings 2:22, 1 Kings 2:30, 1 Kings 2:33, 1
Kings 6:12, 1 Kings 22:15, 2 Kings 6:17, 2 Kings 25:8, 2 Chronicles 8:13, 2
Chronicles 13:12, 2 Chronicles 24:23, Ezra 7:17, Nehemiah 2:18, Nehemiah 6:6,
Esther 3:9, Ecclesiastes 5:8, Ecclesiastes 6:2, Ecclesiastes 8:17, Jeremiah
4:4, Ezekiel 20:38, Amos 1:1, Haggai 2:4, Zechariah 8:12, Matthew 4:6, Matthew
21:32, Mark 6:2, Luke 14:12, Acts 2:17, Acts 6:5, Acts 9:21, Hebrews 10:1, 2
Peter 3:10, Revelation 18:22, Revelation 18:23, Genesis 20:9, Exodus 29:28,
Leviticus 17:15, Numbers 7:89, Numbers 15:3, Deuteronomy 7:19, Deuteronomy
12:30, Joshua 1:7, Joshua 5:13, Judges 6:26, Judges 18:1, 1 Samuel 2:28, 2
Samuel 12:11, 2 Samuel 12:30, 1 Kings 10:5, 1 Kings 20:32, 2 Kings 5:15, 2
Kings 5:20, 2 Kings 8:6, 2 Kings 18:27, 1 Chronicles 21:23, 1 Chronicles 26:31,
1 Chronicles 29:11, 2 Chronicles 11:4, 2 Chronicles 15:2, 2 Chronicles 30:15,
Nehemiah 8:10, Ecclesiastes 9:11, Isaiah 34:6, Isaiah 49:8, Jeremiah 8:14,
Jeremiah 26:2, Jeremiah 35:18, Jeremiah 44:9, Ezekiel 1:16, Ezekiel 9:9,
Ezekiel 13:19, Ezekiel 16:45, Ezekiel 20:5, Ezekiel 34:4, Ezekiel 45:4,
Zechariah 12:4, Malachi 1:8, Mark 11:15, Mark 14:3, Galatians 2:2, 1 Timothy
1:9, Hebrews 1:3, Revelation 4:8, Genesis 24:27, Genesis 28:14, Exodus 12:29,
Exodus 20:24, Exodus 23:11, Exodus 25:22, Leviticus 13:30, Numbers 6:21,
Numbers 9:13, Numbers 10:9, Numbers 18:15, Numbers 18:23, Numbers 22:23,
Deuteronomy 20:1, Deuteronomy 29:19, Judges 1:16, Judges 3:15, 1 Samuel 9:27, 1
Samuel 22:7, 1 Samuel 23:23, 1 Samuel 25:36, 2 Samuel 1:10, 2 Samuel 11:25, 2
Samuel 15:34, 1 Kings 14:10, 2 Kings 10:21, 2 Kings 12:21, 2 Chronicles 29:24,
2 Chronicles 36:8, Ezra 5:8, Ezra 7:21, Nehemiah 1:9, Esther 1:17, Ecclesiastes
11:9, Isaiah 29:4, Isaiah 49:5, Jeremiah 17:8, Jeremiah 20:6, Jeremiah 39:3,
Ezekiel 17:24, Ezekiel 37:25, Daniel 4:27, Daniel 7:20, Zephaniah 3:7, Matthew
6:5, Acts 15:7, 2 Corinthians 10:12, Revelation 22:2, Genesis 8:13, Genesis
13:10, Genesis 31:42, Exodus 33:7, Exodus 38:17, Leviticus 1:17, Leviticus
14:14, Numbers 4:27, Numbers 25:11, Deuteronomy 1:28, Deuteronomy 12:12, Joshua
2:18, Judges 17:3, 1 Samuel 13:5, 1 Samuel 14:4, 1 Samuel 14:6, 1 Samuel 20:13,
2 Samuel 3:29, 2 Samuel 4:2, 2 Samuel 7:29, 2 Samuel 13:20, 2 Samuel 16:8, 2
Samuel 19:22, 2 Samuel 19:37, 1 Kings 11:11, 1 Kings 18:23, 1 Kings 19:4, 2
Kings 5:8, 2 Kings 16:7, 2 Kings 25:1, 1 Chronicles 19:17, 1 Chronicles 23:13,
1 Chronicles 23:28, 2 Chronicles 6:5, 2 Chronicles 20:9, Ezra 10:2, Esther
9:19, Isaiah 28:7, Isaiah 56:7, Jeremiah 5:15, Jeremiah 8:12, Jeremiah 13:13,
Jeremiah 15:9, Jeremiah 28:6, Jeremiah 32:30, Ezekiel 4:3, Ezekiel 11:13,
Ezekiel 13:20, Ezekiel 16:36, Daniel 1:2, Daniel 4:15, Daniel 4:35, Zechariah
13:2, Matthew 1:20, Luke 7:22, Acts 12:10, Acts 19:35, Romans 14:6, 2
Corinthians 7:12, Genesis 47:4, Exodus 33:1, Numbers 13:26, Numbers 18:8,
Numbers 19:18, Deuteronomy 2:12, Deuteronomy 5:15, Deuteronomy 21:13,
Deuteronomy 22:19, Deuteronomy 23:14, Deuteronomy 27:3, Deuteronomy 28:56,
Joshua 3:15, Joshua 11:14, Joshua 13:3, Judges 18:19, Ruth 1:2, 1 Samuel 6:3, 1
Samuel 6:9, 1 Samuel 30:16, 1 Kings 20:36, 2 Kings 6:22, 2 Kings 12:11, 2 Kings
13:23, 2 Kings 14:28, 2 Kings 22:17, 1 Chronicles 21:16, Nehemiah 4:7, Nehemiah
11:4, Isaiah 20:6, Isaiah 28:13, Jeremiah 19:9, Jeremiah 20:10, Jeremiah 43:6,
Jeremiah 44:28, Jeremiah 52:4, Ezekiel 12:7, Ezekiel 44:7, Malachi 2:17, Mark
10:32, John 18:28, Acts 10:22, Hebrews 8:5, Genesis 17:23, Exodus 16:32, Exodus
23:16, Exodus 25:33, Exodus 37:19, Leviticus 10:17, Numbers 27:11, Deuteronomy
1:15, Deuteronomy 9:23, Judges 4:9, Judges 6:39, Judges 14:9, 1 Samuel 7:14, 1
Samuel 24:10, 1 Samuel 27:11, 2 Samuel 12:9, 2 Samuel 17:8, 2 Samuel 21:1, 1
Kings 1:51, 1 Kings 2:19, 1 Kings 8:36, 1 Kings 14:8, 2 Chronicles 2:12, 2
Chronicles 6:27, 2 Chronicles 26:11, 2 Chronicles 31:6, 2 Chronicles 33:8, Ezra
5:3, Esther 1:16, Isaiah 18:2, Isaiah 38:1, Jeremiah 14:15, Jeremiah 31:23,
Jeremiah 39:16, Jeremiah 41:8, Ezekiel 10:2, Ezekiel 17:23, Ezekiel 34:2,
Daniel 6:26, Amos 5:11, Haggai 1:9, Acts 13:46, 2 Corinthians 12:21, 2 Peter
2:20, Genesis 21:14, Genesis 46:34, Genesis 47:19, Exodus 12:15, Exodus 12:23,
Exodus 28:38, Leviticus 5:18, Leviticus 7:18, Leviticus 8:15, Leviticus 16:14,
Numbers 33:55, Joshua 2:19, Joshua 10:30, Joshua 17:9, Judges 2:14, Judges
6:19, Judges 8:15, Judges 12:1, 1 Kings 15:23, 2 Kings 8:1, 2 Kings 11:9, 2
Kings 20:1, 2 Kings 25:25, 1 Chronicles 19:3, 2 Chronicles 8:6, 2 Chronicles
28:23, 2 Chronicles 30:21, Ezra 2:1, Ezra 9:8, Ecclesiastes 4:1, Isaiah 16:14,
Isaiah 27:11, Isaiah 65:16, Jeremiah 12:14, Jeremiah 12:16, Jeremiah 23:15,
Jeremiah 33:10, Jeremiah 33:26, Ezekiel 33:11, Ezekiel 34:12, Ezekiel 38:4,
Daniel 9:18, Zephaniah 2:14, Luke 11:31, Luke 12:48, 2 Corinthians 4:2, 1
Thessalonians 2:13, Genesis 2:19, Exodus 12:27, Exodus 16:1, Exodus 32:27,
Leviticus 6:15, Leviticus 20:2, Numbers 6:20, Deuteronomy 20:14, Joshua 10:13,
Joshua 22:33, Judges 1:3, Judges 8:21, 1 Samuel 4:4, 1 Samuel 19:5, 1 Samuel
20:30, 1 Samuel 25:2, 2 Samuel 18:28, 2 Samuel 19:9, 1 Kings 19:21, 1 Kings
22:10, 2 Kings 7:2, 2 Kings 17:24, 2 Kings 22:20, 2 Chronicles 22:1, Nehemiah
9:19, Isaiah 54:17, Jeremiah 8:19, Jeremiah 31:33, Ezekiel 11:16, Ezekiel
21:28, Ezekiel 36:22, Ezekiel 38:16, Ezekiel 47:9, Zephaniah 3:11, Zechariah
11:16, Matthew 15:32, Acts 12:17, Romans 7:13, 1 Corinthians 7:34, Galatians
2:9, James 4:11, Revelation 9:20, Genesis 42:38, Genesis 50:11, Numbers 1:18,
Numbers 3:4, Numbers 4:7, Deuteronomy 8:2, Deuteronomy 9:21, Deuteronomy 17:20,
Joshua 17:18, 1 Samuel 14:24, 1 Kings 20:7, 2 Kings 15:29, 2 Kings 17:34, 2
Kings 24:12, 1 Chronicles 20:2, 2 Chronicles 26:10, Ezra 10:3, Nehemiah 3:1,
Nehemiah 8:16, Nehemiah 10:31, Jeremiah 16:9, Jeremiah 16:16, Jeremiah 18:21,
Jeremiah 34:1, Ezekiel 11:15, Amos 8:10, John 19:38, Acts 21:25, Hebrews 8:10,
2 Peter 3:16, Revelation 5:13, Exodus 4:9, Leviticus 4:31, Leviticus 25:10,
Numbers 1:20, Numbers 11:25, Numbers 27:14, Deuteronomy 29:23, Deuteronomy
30:20, Joshua 4:10, Judges 3:28, Judges 7:19, 1 Samuel 10:18, 1 Samuel 13:15, 1
Samuel 16:7, 1 Samuel 16:11, 2 Samuel 5:6, 2 Samuel 8:2, 2 Samuel 24:24, 1
Kings 6:15, 1 Kings 14:2, 1 Kings 18:12, 1 Kings 20:25, 1 Kings 22:34, 2 Kings
5:22, 2 Kings 12:7, 2 Chronicles 8:18, 2 Chronicles 18:33, 2 Chronicles 21:17,
2 Chronicles 32:33, Ecclesiastes 12:5, Isaiah 66:5, Jeremiah 40:10, Jeremiah
46:2, Ezekiel 37:16, Daniel 1:4, Daniel 10:16, Jonah 1:3, Micah 1:7, Micah
6:16, Haggai 1:6, Malachi 1:4, Matthew 22:16, Acts 7:42, Galatians 2:14,
Hebrews 9:15, Revelation 3:18, Revelation 5:6, Revelation 18:3, Revelation
21:8, Genesis 7:14, Genesis 21:23, Genesis 26:7, Genesis 30:35, Exodus 12:48,
Exodus 20:10, Leviticus 13:2, Deuteronomy 3:12, Deuteronomy 4:9, Deuteronomy
7:8, Deuteronomy 11:17, Deuteronomy 19:15, Deuteronomy 26:14, Deuteronomy
28:57, Joshua 10:40, Judges 9:18, 1 Samuel 17:20, 1 Samuel 21:5, 1 Samuel
22:13, 1 Samuel 25:18, 1 Samuel 25:29, 2 Samuel 12:4, 2 Samuel 20:8, 2 Samuel
20:12, 2 Samuel 23:16, 1 Kings 1:47, 1 Kings 3:1, 1 Kings 20:33, 1 Chronicles
11:18, 1 Chronicles 11:19, 1 Chronicles 15:12, 2 Chronicles 6:10, 2 Chronicles
12:9, Nehemiah 12:24, Esther 4:14, Ecclesiastes 9:3, Isaiah 45:21, Jeremiah
5:3, Jeremiah 5:19, Jeremiah 19:15, Jeremiah 44:19, Jeremiah 51:11, Ezekiel
17:22, Ezekiel 21:22, Ezekiel 28:16, Daniel 9:11, Amos 4:7, John 19:31, Hebrews
11:7, Genesis 7:23, Exodus 3:16, Exodus 32:12, Leviticus 13:51, Numbers 27:1,
Deuteronomy 28:63, Deuteronomy 28:68, Joshua 21:27, Judges 4:22, Ruth 2:14, 1
Samuel 13:2, 1 Samuel 25:26, 1 Kings 8:20, 1 Kings 12:27, 1 Kings 21:19, 2
Kings 7:9, 2 Kings 25:4, 2 Chronicles 12:5, 2 Chronicles 16:14, 2 Chronicles
26:21, 2 Chronicles 30:5, 2 Chronicles 32:31, 2 Chronicles 33:6, Ezra 6:22,
Nehemiah 9:6, Nehemiah 13:22, Jeremiah 16:19, Jeremiah 31:9, Ezekiel 5:11,
Ezekiel 5:12, Ezekiel 25:4, Micah 4:13, Malachi 3:1, Luke 4:18, 2 Peter 2:1, 1
John 2:27, Exodus 23:15, Exodus 29:22, Exodus 30:16, Leviticus 4:13, Leviticus
8:31, Numbers 18:7, Numbers 31:23, Numbers 36:4, Joshua 11:20, Judges 4:21,
Judges 20:23, 1 Samuel 4:17, 1 Samuel 12:17, 1 Samuel 25:13, 2 Samuel 10:2, 2
Samuel 12:20, 1 Kings 21:15, 1 Chronicles 5:1, 1 Chronicles 17:21, 2 Chronicles
18:5, 2 Chronicles 20:37, 2 Chronicles 26:19, Ezra 3:7, Ezra 10:6, Ezra 10:16,
Nehemiah 5:8, Nehemiah 12:27, Esther 9:31, Job 1:17, Jeremiah 7:32, Jeremiah
8:1, Jeremiah 14:16, Jeremiah 44:23, Ezekiel 12:12, Ezekiel 31:16, Ezekiel
36:11, Daniel 6:20, Daniel 7:14, Acts 15:22, Acts 21:11, 1 Corinthians 10:13,
Hebrews 8:9, Leviticus 16:2, Leviticus 22:4, Numbers 18:24, Numbers 29:6,
Numbers 36:8, Deuteronomy 4:32, Deuteronomy 11:6, Deuteronomy 17:11,
Deuteronomy 22:17, Deuteronomy 33:17, Joshua 1:11, Joshua 2:10, Judges 11:17, 2
Samuel 24:10, 1 Kings 8:50, 1 Kings 9:3, 2 Kings 14:25, 2 Kings 18:4, 2 Kings
24:13, 2 Chronicles 20:21, 2 Chronicles 25:23, Nehemiah 8:17, Nehemiah 11:3,
Nehemiah 13:26, Esther 5:8, Ecclesiastes 2:26, Ecclesiastes 6:3, Jeremiah
19:11, Jeremiah 22:18, Jeremiah 24:8, Jeremiah 25:29, Jeremiah 32:32, Jeremiah
43:12, Ezekiel 39:11, Ezekiel 40:48, Daniel 9:2, Daniel 9:12, Zechariah 6:15,
Zechariah 9:10, Malachi 1:11, Matthew 5:19, John 21:18, Acts 12:20, Genesis
29:10, Genesis 48:19, Exodus 35:35, Leviticus 14:21, Numbers 19:9, Numbers
19:19, Deuteronomy 9:3, Joshua 4:3, Joshua 14:1, Joshua 14:10, Joshua 24:27,
Judges 11:35, 1 Samuel 2:25, 1 Samuel 7:10, 1 Samuel 11:9, 1 Samuel 26:16, 2
Samuel 18:3, 1 Kings 15:29, 2 Kings 3:11, 2 Kings 14:9, 1 Chronicles 12:8, 1
Chronicles 21:3, 2 Chronicles 35:12, 2 Chronicles 36:17, Isaiah 7:1, Isaiah
66:4, Jeremiah 4:30, Jeremiah 20:5, Jeremiah 31:8, Jeremiah 31:40, Jeremiah
34:5, Jeremiah 38:6, Jeremiah 40:1, Jeremiah 41:1, Ezekiel 2:6, Ezekiel 28:18,
Ezekiel 34:13, Ezekiel 38:12, Ezekiel 43:13, Ezekiel 46:18, Daniel 4:36, Hosea
13:15, Zechariah 1:6, Malachi 4:1, Matthew 21:21, John 20:25, 1 Corinthians
4:5, Revelation 11:6, Genesis 1:28, Genesis 19:9, Genesis 34:7, Genesis 36:6,
Genesis 47:29, Genesis 50:17, Exodus 4:14, Exodus 21:22, Leviticus 13:34,
Leviticus 16:15, Leviticus 23:22, Numbers 9:14, Deuteronomy 1:17, Deuteronomy
5:22, Deuteronomy 9:18, Deuteronomy 25:9, Joshua 17:15, Joshua 20:4, Joshua
22:4, Judges 9:49, 1 Samuel 10:19, 1 Samuel 14:12, 2 Samuel 14:2, 2 Samuel
14:22, 1 Kings 15:19, 1 Kings 22:43, 1 Chronicles 6:49, 1 Chronicles 25:1, Ezra
6:12, Isaiah 65:12, Jeremiah 6:11, Jeremiah 28:14, Jeremiah 44:14, Jeremiah
46:27, Daniel 2:30, Zechariah 13:3, Luke 8:29, Philippians 4:8, Revelation
2:10, Exodus 33:5, Leviticus 8:24, Numbers 11:16, Numbers 14:18, Numbers 16:40,
Numbers 16:46, Numbers 18:11, Deuteronomy 3:11, Deuteronomy 26:12, Joshua 13:6,
Judges 15:6, 1 Samuel 26:5, 2 Samuel 17:9, 2 Samuel 21:9, 1 Kings 7:14, 1 Kings
21:6, 2 Kings 5:7, 1 Chronicles 22:19, 2 Chronicles 9:29, 2 Chronicles 25:18, 2
Chronicles 28:13, 2 Chronicles 29:21, 2 Chronicles 34:28, Ecclesiastes 2:3,
Isaiah 11:11, Jeremiah 3:16, Jeremiah 14:14, Jeremiah 34:14, Jeremiah 35:4,
Ezekiel 13:14, Ezekiel 26:17, Daniel 5:19, Amos 1:11, Acts 23:21, Romans 4:16,
Revelation 18:2, Genesis 37:10, Leviticus 23:37, Leviticus 23:39, Numbers
11:31, Numbers 19:20, Numbers 20:8, Deuteronomy 1:41, Deuteronomy 16:15,
Deuteronomy 29:18, Deuteronomy 31:14, Judges 18:14, 1 Samuel 10:3, 1 Samuel
17:26, 1 Samuel 18:6, 2 Kings 9:25, 2 Chronicles 24:12, Nehemiah 5:15, Nehemiah
8:3, Nehemiah 10:29, Proverbs 30:4, Isaiah 60:9, Jeremiah 30:3, Jeremiah 44:8,
Ezekiel 30:25, Ezekiel 36:6, Daniel 11:30, Malachi 1:13, 1 Timothy 6:2, Exodus
17:12, Leviticus 5:16, Numbers 6:19, Numbers 18:26, Numbers 25:18, Deuteronomy
29:20, Joshua 12:2, 1 Samuel 6:12, 2 Samuel 11:21, 1 Kings 6:1, 2 Kings 1:3, 1
Chronicles 20:1, 1 Chronicles 29:17, 2 Chronicles 32:5, 2 Chronicles 34:22,
Ezra 7:28, Isaiah 49:6, Jeremiah 3:1, Jeremiah 15:19, Jeremiah 21:12, Ezekiel
6:3, Ezekiel 29:5, Ezekiel 44:30, Daniel 3:26, Daniel 11:2, Joel 3:18, Matthew
23:23, Acts 22:5, Revelation 20:12, Exodus 16:23, Leviticus 5:2, Numbers 16:9,
Deuteronomy 19:5, Deuteronomy 24:19, Judges 2:17, Judges 14:19, 1 Samuel 14:47,
2 Samuel 10:6, 2 Samuel 17:14, 1 Kings 3:26, 1 Kings 9:9, 1 Kings 16:34, 2
Kings 14:13, 1 Chronicles 4:10, 1 Chronicles 28:2, 2 Chronicles 5:1, 2
Chronicles 29:25, Esther 5:1, Isaiah 28:15, Jeremiah 2:6, Jeremiah 11:10,
Jeremiah 28:11, Jeremiah 49:20, Ezekiel 1:13, Ezekiel 17:9, Ezekiel 40:1,
Ezekiel 43:8, Daniel 4:17, Matthew 17:20, Luke 14:21, Philippians 1:27, 1 John
5:16, Genesis 37:2, Genesis 38:14, Genesis 44:16, Leviticus 10:19, Leviticus
17:14, Numbers 5:19, Deuteronomy 12:15, Deuteronomy 28:51, Joshua 18:8, 1
Samuel 14:36, 2 Samuel 16:21, 1 Kings 2:3, 1 Kings 14:15, 2 Kings 2:14, 2 Kings
3:7, 1 Chronicles 10:4, 2 Chronicles 7:22, 2 Chronicles 34:3, Esther 4:8,
Esther 7:2, Jeremiah 6:15, Jeremiah 22:3, Jeremiah 44:21, Lamentations 2:19,
Ezekiel 21:24, Hosea 1:10, Amos 4:10, Nahum 2:13, Haggai 2:22, Zechariah 10:6,
2 Corinthians 11:4, Revelation 2:14, Revelation 11:18, Genesis 12:5, Exodus
8:26, Exodus 10:6, Exodus 38:18, Leviticus 14:17, Leviticus 16:27, Leviticus
25:33, Numbers 18:19, Joshua 19:9, Judges 6:31, Judges 9:28, 1 Samuel 20:12, 2
Samuel 3:21, 2 Kings 21:7, 2 Kings 23:30, 2 Chronicles 5:2, 2 Chronicles 8:11,
2 Chronicles 28:18, 2 Chronicles 30:9, 2 Chronicles 30:22, Esther 2:8, Isaiah
61:1, Jeremiah 35:14, Jeremiah 37:17, Jeremiah 37:21, Jeremiah 39:5, Jeremiah
50:29, Ezekiel 32:10, Daniel 5:12, Daniel 6:4, Daniel 11:17, Joel 2:32, Luke
3:1, Acts 1:13, Acts 14:15, Acts 17:18, Acts 23:6, Revelation 8:7, Revelation
19:10, Genesis 43:11, Leviticus 22:3, Numbers 29:39, Joshua 22:30, Judges
14:18, Judges 16:2, Judges 17:2, Ruth 2:11, 1 Samuel 20:21, 2 Samuel 16:1, 2
Samuel 16:2, 1 Kings 12:33, 1 Kings 22:6, 2 Kings 7:10, 2 Kings 15:25, 2 Kings
20:5, 2 Kings 22:9, 1 Chronicles 22:14, Nehemiah 10:33, Jeremiah 11:19,
Jeremiah 29:1, Ezekiel 20:31, Jonah 1:5, Zephaniah 1:18, Numbers 1:22, Numbers
31:30, Deuteronomy 28:31, Joshua 7:12, Joshua 7:21, Judges 16:9, Judges 19:18,
1 Samuel 18:25, 2 Samuel 5:8, 2 Kings 10:30, 2 Chronicles 24:6, Nehemiah 5:14,
Esther 7:4, Jeremiah 13:11, Jeremiah 32:35, Ezekiel 28:25, Ezekiel 48:22,
Daniel 11:25, Joel 2:20, Zechariah 13:9, Zechariah 14:2, Matthew 14:19,
Revelation 6:8, Exodus 28:30, Numbers 22:5, Deuteronomy 2:19, Deuteronomy 9:12,
Deuteronomy 31:20, Joshua 3:10, Joshua 20:6, 2 Samuel 6:12, 2 Kings 9:26, 2
Kings 17:4, 2 Kings 18:26, 2 Chronicles 2:7, Esther 3:7, Isaiah 14:2, Jeremiah
30:11, Jeremiah 32:29, Jeremiah 51:27, Ezekiel 36:3, Hosea 4:14, Zephaniah 2:7,
Matthew 13:15, Acts 9:17, Acts 28:27, Exodus 27:21, Leviticus 4:18, Leviticus
7:21, Leviticus 25:50, Numbers 25:6, Deuteronomy 16:16, Joshua 14:12, Judges
4:6, Judges 7:25, Judges 16:5, 1 Samuel 6:4, 1 Samuel 15:9, 1 Kings 13:6, 1
Kings 21:2, 2 Kings 11:15, 2 Kings 11:18, 2 Kings 23:11, 2 Chronicles 9:4, 2
Chronicles 33:7, 2 Chronicles 34:8, Isaiah 18:7, Jeremiah 18:11, Jeremiah
27:18, Jeremiah 52:19, Ezekiel 3:18, Daniel 4:33, Daniel 7:27, Malachi 1:6,
Exodus 13:5, Exodus 32:8, Leviticus 3:9, Deuteronomy 13:6, Deuteronomy 31:7,
Joshua 7:1, Judges 21:5, 1 Samuel 15:6, 2 Samuel 24:17, 1 Kings 11:2, 1 Kings
20:31, 2 Kings 9:27, 1 Chronicles 24:31, 2 Chronicles 24:5, 2 Chronicles 31:13,
2 Chronicles 35:14, Ezra 4:2, Nehemiah 9:24, Nehemiah 12:47, Isaiah 30:26,
Jeremiah 5:22, Jeremiah 19:3, Jeremiah 19:4, Jeremiah 32:24, Jeremiah 33:9,
Daniel 3:7, Daniel 7:19, Daniel 8:25, Hosea 2:18, Joel 2:2, 2 Corinthians 7:11,
1 Peter 1:12, Genesis 3:17, Exodus 6:6, Numbers 10:29, Numbers 18:17,
Deuteronomy 4:25, Deuteronomy 12:17, Joshua 11:21, Judges 18:17, 1 Samuel 5:4,
1 Samuel 20:29, 2 Samuel 4:8, 2 Samuel 19:7, 1 Kings 21:4, 1 Chronicles 26:26,
2 Chronicles 22:7, 2 Chronicles 35:8, Isaiah 27:9, Jeremiah 49:16, Ezekiel
41:6, Daniel 2:24, Daniel 11:36, Micah 4:10, Malachi 3:10, Revelation 7:9,
Genesis 3:6, Exodus 16:8, Leviticus 12:6, Deuteronomy 8:3, Deuteronomy 25:19,
Joshua 18:7, Joshua 24:11, 2 Samuel 10:3, 2 Kings 4:13, 2 Kings 4:27, 1
Chronicles 19:2, 1 Chronicles 26:32, Ezra 9:2, Isaiah 58:13, Jeremiah 40:11,
Jeremiah 50:45, Ezekiel 13:18, Ezekiel 39:23, Daniel 2:9, Daniel 4:18, John
18:37, 1 Peter 4:11, Exodus 28:43, Leviticus 9:7, Leviticus 16:4, Leviticus
17:4, Deuteronomy 28:52, Joshua 22:16, Judges 2:12, Judges 14:16, Judges 21:22,
1 Samuel 16:1, 1 Samuel 17:25, 1 Samuel 22:8, 2 Samuel 19:5, 1 Kings 22:8, 2
Chronicles 18:9, Nehemiah 13:25, Esther 1:6, Isaiah 36:16, Jeremiah 29:14,
Jeremiah 29:23, Jeremiah 36:31, Jeremiah 52:15, Ezekiel 12:3, Ezekiel 40:4,
Daniel 3:12, Daniel 9:24, Daniel 11:40, Amos 5:16, Malachi 2:2, Acts 5:21,
Revelation 12:10, Leviticus 13:6, Leviticus 13:25, Numbers 13:32, Numbers
20:17, Deuteronomy 4:40, Joshua 10:6, Judges 16:17, Judges 16:18, 2 Samuel
13:5, 2 Samuel 17:20, 2 Samuel 19:6, 2 Samuel 21:12, 1 Kings 7:51, 2 Kings
18:31, 2 Chronicles 13:9, Ezra 3:2, Ezra 6:14, Ezra 9:12, Jeremiah 19:13,
Jeremiah 36:29, Ezekiel 5:7, Ezekiel 16:37, Ezekiel 40:42, Daniel 2:44, Daniel
11:4, Acts 21:24, Exodus 34:7, Leviticus 26:36, Numbers 30:12, Joshua 6:5,
Joshua 8:24, Joshua 13:21, Joshua 23:15, Judges 2:18, Judges 19:3, Ruth 2:19, 1
Samuel 6:15, 2 Samuel 12:31, 1 Kings 18:26, 2 Kings 23:16, 2 Chronicles 22:6, 2
Chronicles 27:5, Nehemiah 1:11, Esther 2:9, Isaiah 42:16, Isaiah 50:1, Ezekiel
41:7, Ezekiel 46:20, Matthew 2:13, Genesis 47:9, Deuteronomy 12:21, Joshua 9:1,
Joshua 22:29, 1 Samuel 24:4, 2 Samuel 20:1, 1 Kings 12:24, 1 Kings 17:12, 2
Chronicles 29:22, 2 Chronicles 31:3, Ezra 3:10, Ezra 10:14, Ezekiel 7:27,
Ezekiel 18:20, Ezekiel 24:21, Ezekiel 28:26, Ezekiel 32:2, Ezekiel 33:6,
Ezekiel 44:11, Daniel 6:10, Daniel 7:8, Hosea 9:10, Joel 2:17, Zechariah 8:19,
Revelation 9:17, Genesis 11:31, Genesis 31:43, Exodus 39:21, Leviticus 14:28,
Numbers 1:50, Joshua 8:14, Joshua 22:28, Judges 8:26, 1 Samuel 18:17, 1 Samuel
31:7, 2 Samuel 12:3, 2 Kings 10:5, 2 Kings 11:19, 2 Kings 21:8, 2 Chronicles
20:17, 2 Chronicles 23:1, 2 Chronicles 30:18, 2 Chronicles 34:12, Isaiah 2:4,
Jeremiah 17:25, Ezekiel 6:13, Ezekiel 25:3, Ezekiel 26:16, Ezekiel 29:18,
Daniel 1:10, Daniel 5:2, John 19:24, Acts 27:12, Joshua 1:8, Joshua 4:7, Joshua
24:17, 1 Samuel 4:19, 2 Samuel 18:18, 2 Samuel 20:10, 1 Kings 2:4, 1 Kings 5:6,
2 Kings 8:9, 2 Kings 13:17, 2 Kings 24:2, 1 Chronicles 18:10, 1 Chronicles
28:4, 2 Chronicles 28:5, Nehemiah 8:9, Isaiah 44:19, Ezekiel 42:14, Revelation
14:18, Exodus 8:21, Leviticus 7:34, Leviticus 20:25, Numbers 4:26, Deuteronomy
24:4, Joshua 6:26, Joshua 10:5, Joshua 10:27, Joshua 10:28, Judges 19:22, 1
Samuel 30:22, 2 Samuel 8:10, 1 Kings 21:13, 2 Kings 7:4, 2 Chronicles 10:10, 2
Chronicles 23:20, Nehemiah 9:8, Isaiah 29:8, Jeremiah 30:10, Jeremiah 52:7,
Ezekiel 38:13, Daniel 9:27, Zechariah 14:21, John 21:17, Genesis 1:26,
Leviticus 2:2, Leviticus 10:15, Joshua 22:7, 1 Samuel 30:21, 1 Kings 5:9, 1
Kings 12:10, 1 Chronicles 12:18, 2 Chronicles 18:7, Nehemiah 4:14, Nehemiah
9:5, Esther 2:3, Ecclesiastes 8:14, Isaiah 49:23, Jeremiah 18:18, Jeremiah
43:10, Jeremiah 49:19, Ezekiel 10:19, Ezekiel 16:43, Daniel 3:29, Joel 3:2,
Micah 4:3, Zechariah 14:5, Matthew 19:12, Revelation 2:17, Genesis 47:18,
Exodus 16:3, Numbers 16:38, Numbers 27:21, Joshua 8:29, Judges 16:3, 2 Kings
9:15, 2 Chronicles 29:17, 2 Chronicles 34:33, Ezra 1:1, Ezra 7:25, Ezra 8:22,
Isaiah 53:12, Jeremiah 23:14, Jeremiah 36:32, Lamentations 1:7, Ezekiel 29:12,
Ezekiel 39:10, Acts 19:27, Joshua 3:16, Judges 15:11, 1 Samuel 20:3, 2 Samuel
20:22, 1 Kings 19:10, 1 Kings 19:14, 2 Kings 22:14, 2 Kings 25:27, 2 Chronicles
6:13, 2 Chronicles 9:8, 2 Chronicles 12:7, 2 Chronicles 35:3, Esther 2:7,
Esther 8:11, Jeremiah 17:27, Jeremiah 23:32, Jeremiah 31:34, Jeremiah 46:10,
Ezekiel 16:8, Ezekiel 25:7, Ezekiel 27:27, Ezekiel 31:15, Luke 10:21,
Revelation 8:12, Leviticus 8:30, Leviticus 22:18, Deuteronomy 14:29,
Deuteronomy 24:1, Joshua 4:18, Joshua 10:1, Judges 16:14, 1 Samuel 11:11, 2
Samuel 2:23, 2 Kings 20:13, 2 Kings 23:12, 1 Chronicles 23:24, 2 Chronicles
20:25, Jeremiah 1:15, Jeremiah 23:2, Jeremiah 26:19, Jeremiah 36:10, Jeremiah
47:2, Jeremiah 50:44, Ezekiel 9:2, Ezekiel 32:24, Haggai 1:1, Zechariah 5:3,
Zechariah 14:12, Exodus 29:21, Leviticus 14:25, Leviticus 16:16, Numbers 3:38,
Numbers 4:16, Numbers 36:1, Deuteronomy 14:23, Deuteronomy 15:9, Joshua 7:13,
Joshua 7:24, 1 Samuel 9:16, 1 Samuel 9:24, 1 Samuel 18:27, Esther 9:28, Isaiah
24:2, Jeremiah 41:9, Genesis 8:21, Exodus 3:15, Leviticus 10:14, Numbers 4:14,
Numbers 16:3, Judges 16:30, 1 Samuel 9:4, 1 Samuel 9:13, 2 Samuel 13:32, 2
Samuel 18:12, 1 Kings 8:1, 2 Kings 5:18, 1 Chronicles 4:41, 1 Chronicles 11:23,
1 Chronicles 12:17, 2 Chronicles 34:27, 2 Chronicles 36:22, Ezra 9:7, Job 2:11,
Isaiah 51:13, Jeremiah 5:6, Jeremiah 26:18, Ezekiel 44:15, Ezekiel 47:22,
Daniel 11:24, Genesis 24:7, Numbers 32:29, Deuteronomy 16:3, Judges 6:21, 1
Samuel 5:8, 2 Samuel 15:14, 2 Kings 17:13, 2 Kings 19:4, 1 Chronicles 28:21, 2
Chronicles 23:8, 2 Chronicles 33:19, Ezra 6:8, Ecclesiastes 4:8, Isaiah 9:1,
Ezekiel 23:25, Daniel 8:13, Amos 2:4, Matthew 2:16, Deuteronomy 25:7, Joshua
3:13, Joshua 10:24, Joshua 23:14, Joshua 23:16, Joshua 24:15, 1 Samuel 4:3, 1
Kings 8:48, 2 Kings 9:18, 2 Chronicles 14:7, Ezra 5:17, Esther 5:14, Isaiah
2:3, Isaiah 37:4, Isaiah 57:15, Jeremiah 46:28, Jeremiah 50:9, Mark 12:14, Acts
28:23, Exodus 10:15, Leviticus 13:55, Numbers 11:18, 1 Samuel 20:42, 1 Samuel
31:4, 2 Samuel 18:2, 1 Kings 12:16, 2 Kings 25:17, 2 Chronicles 21:13, 2
Chronicles 29:31, 2 Chronicles 32:17, Nehemiah 5:18, Esther 4:16, Jeremiah
33:13, Ezekiel 36:5, Ezekiel 48:8, Zechariah 8:9, Romans 6:19, Hebrews 7:11,
Exodus 22:9, Numbers 18:9, Deuteronomy 25:5, Deuteronomy 31:16, Joshua 7:14,
Joshua 15:7, Joshua 23:13, Judges 1:33, 2 Chronicles 35:21, Isaiah 9:17,
Jeremiah 28:1, Jeremiah 32:12, Ezekiel 36:23, Ezekiel 44:19, Daniel 3:2, Micah
5:8, Romans 4:11, Numbers 15:25, Numbers 35:25, Deuteronomy 4:19, Joshua 10:39,
Ruth 4:10, 1 Kings 18:36, 2 Kings 3:13, 2 Kings 7:8, 2 Kings 8:29, 2 Kings
23:5, 2 Kings 23:35, 2 Chronicles 6:38, 2 Chronicles 29:16, 2 Chronicles 34:31,
Ezra 4:3, Isaiah 9:7, Jeremiah 38:17, Ezekiel 33:27, Ezekiel 37:19, Ezekiel
48:1, Daniel 5:16, Daniel 9:25, Zechariah 11:6, Zechariah 14:4, Zechariah
14:10, Revelation 3:12, Leviticus 23:18, Joshua 22:11, 1 Samuel 10:5, 1 Kings
6:6, 1 Kings 6:27, 2 Kings 11:4, 2 Kings 11:14, 2 Chronicles 7:3, 2 Chronicles
33:14, Ezra 8:35, Ezra 9:9, Ezra 9:11, Esther 8:17, Jeremiah 36:14, Jeremiah
44:30, Ezekiel 1:28, Daniel 9:16, Deuteronomy 4:10, Deuteronomy 30:9, Joshua
17:4, 2 Samuel 21:10, 1 Kings 2:26, 2 Kings 12:9, 1 Chronicles 28:8, 2
Chronicles 14:11, 2 Chronicles 23:14, 2 Chronicles 25:4, Isaiah 39:2, Jeremiah
15:2, Daniel 9:26, Galatians 2:16, Leviticus 17:5, Joshua 18:16, 1 Samuel 21:2,
1 Samuel 24:11, 2 Samuel 4:4, 1 Kings 2:42, 2 Kings 2:16, 2 Kings 3:25, 2 Kings
7:6, 2 Kings 10:19, 2 Chronicles 25:16, 2 Chronicles 29:12, 2 Chronicles 35:18,
Esther 3:13, Isaiah 57:8, Jeremiah 5:17, Ezekiel 1:27, Ezekiel 34:27, Daniel
6:24, Micah 4:2, Exodus 32:13, Deuteronomy 7:13, Deuteronomy 14:21, Deuteronomy
22:21, Deuteronomy 26:2, Joshua 10:11, Judges 20:28, 2 Samuel 7:23, 2 Samuel
9:10, 1 Chronicles 28:20, Nehemiah 9:28, Isaiah 51:6, Isaiah 63:7, Jeremiah
36:12, Ezekiel 47:1, Haggai 1:12, Genesis 43:7, Exodus 8:29, Leviticus 5:11,
Joshua 6:20, Joshua 19:47, Ruth 4:11, 2 Samuel 19:35, 1 Chronicles 12:19,
Nehemiah 13:5, Jeremiah 29:32, Jeremiah 44:26, Ezekiel 22:4, Ezekiel 34:10,
Ezekiel 44:5, Hosea 9:4, Zechariah 1:21, Zechariah 12:6, Joshua 18:14, Judges
16:13, 2 Samuel 15:2, 1 Kings 13:26, 2 Kings 18:32, Ezra 3:11, Nehemiah 10:34,
Esther 2:14, Jeremiah 38:22, Ezekiel 36:4, Genesis 43:18, Joshua 20:9, Judges
14:3, 2 Kings 18:14, Nehemiah 9:27, Nehemiah 10:28, Nehemiah 13:13, Isaiah
31:4, Jeremiah 9:10, Jeremiah 31:12, Ezekiel 28:2, Daniel 8:7, Revelation
19:20, Leviticus 15:25, 1 Kings 13:4, 2 Kings 12:4, 2 Chronicles 24:20, 2
Chronicles 31:10, Nehemiah 10:39, Esther 2:12, Jeremiah 27:8, Numbers 14:14,
Joshua 19:51, 2 Chronicles 36:23, Esther 6:13, Ezekiel 40:5, Daniel 2:45,
Daniel 4:34, Jonah 4:2, Haggai 1:14, Exodus 15:26, Exodus 34:10, Numbers 5:18,
Judges 10:6, 2 Samuel 20:21, 1 Chronicles 12:40, 2 Chronicles 7:7, 2 Chronicles
19:11, 2 Chronicles 31:2, Ezra 6:5, Ezra 10:9, Isaiah 5:24, Isaiah 37:24,
Jeremiah 52:31, Ezekiel 37:23, Daniel 3:27, Amos 9:1, Zephaniah 3:8,
Deuteronomy 9:4, Joshua 22:5, Judges 11:18, 2 Samuel 18:9, 1 Kings 20:34, 2
Chronicles 9:1, 2 Chronicles 10:16, 2 Chronicles 35:15, Ecclesiastes 9:2,
Isaiah 66:19, Ezekiel 11:1, Ezekiel 23:24, Deuteronomy 20:19, Deuteronomy
31:29, Joshua 24:32, 2 Kings 1:13, 2 Kings 11:2, 2 Chronicles 31:19, Nehemiah
8:4, Ezekiel 14:22, Ezekiel 32:27, Genesis 34:30, Exodus 3:8, Numbers 10:10,
Numbers 35:8, Deuteronomy 31:21, 1 Samuel 7:3, 1 Kings 1:25, 1 Kings 11:33, 1
Chronicles 9:19, Ezra 6:3, Nehemiah 4:2, Nehemiah 9:25, Ezekiel 5:2, Ezekiel
13:9, Ezekiel 28:13, Acts 28:17, Leviticus 5:15, Deuteronomy 1:7, Joshua 8:31,
2 Chronicles 32:15, Nehemiah 7:3, Job 2:3, Isaiah 61:3, Jeremiah 8:2, Jeremiah
38:4, Ezekiel 8:17, Ezekiel 26:20, Ezekiel 31:12, Exodus 3:18, Exodus 13:15,
Leviticus 11:32, Joshua 15:8, 2 Samuel 21:2, 1 Kings 8:43, 1 Kings 12:32, 2
Chronicles 20:20, Job 42:11, Joshua 6:13, 1 Samuel 2:30, 1 Kings 8:25, 2 Kings
19:23, 1 Chronicles 13:2, 1 Chronicles 28:9, 2 Chronicles 6:16, 2 Chronicles
29:34, Isaiah 50:2, Jeremiah 16:4, Jeremiah 19:7, Jeremiah 34:17, Jeremiah
36:6, Daniel 4:32, John 8:44, Genesis 24:14, Numbers 33:54, Judges 7:13, 1
Samuel 14:45, 2 Samuel 11:11, 2 Samuel 20:3, 1 Kings 11:38, 2 Kings 8:5, 2
Chronicles 6:33, 2 Chronicles 26:18, 2 Chronicles 32:21, Nehemiah 5:13,
Jeremiah 25:30, Deuteronomy 12:11, Deuteronomy 22:24, Judges 18:2, 1 Samuel
1:11, 1 Samuel 21:9, 1 Samuel 22:17, 1 Samuel 27:1, 1 Kings 2:8, 2 Kings 1:16,
2 Kings 8:12, Nehemiah 1:6, Ezekiel 16:52, Daniel 3:28, Numbers 19:13, Numbers
36:3, Judges 20:10, 1 Samuel 6:18, 2 Chronicles 25:5, Ezekiel 20:21, Ezekiel
20:47, 1 Kings 14:21, 1 Kings 20:28, Nehemiah 9:29, Jeremiah 42:18, Ezekiel
7:19, Ezekiel 31:18, Ezekiel 34:8, 2 Kings 17:26, 1 Chronicles 5:26, 1
Chronicles 27:1, 2 Chronicles 22:9, Nehemiah 5:5, Ezekiel 20:40, Ezekiel 22:26,
Deuteronomy 4:34, Judges 20:31, 2 Samuel 12:18, 1 Chronicles 21:17, 1
Chronicles 22:5, 2 Chronicles 1:11, Jeremiah 49:2, Ezekiel 32:30, Leviticus
4:7, Deuteronomy 31:17, 2 Kings 23:13, 2 Chronicles 24:25, 2 Chronicles 34:4,
Ezra 4:15, Jeremiah 29:21, Leviticus 13:3, 1 Samuel 12:3, 2 Kings 10:25, 2
Chronicles 12:13, Ezra 8:33, Isaiah 30:6, Isaiah 49:7, Ezekiel 21:7, Ezekiel
32:25, Exodus 32:1, Leviticus 10:6, Numbers 5:15, Joshua 9:24, Joshua 22:9,
Judges 7:4, 1 Samuel 14:41, 2 Samuel 6:20, 2 Kings 17:15, Nehemiah 13:15,
Isaiah 61:10, Daniel 12:1, Leviticus 4:35, Deuteronomy 12:18, Joshua 12:7, 1
Samuel 17:46, Nehemiah 2:8, Esther 1:19, Ezekiel 20:8, Luke 6:42, Deuteronomy
17:8, 2 Samuel 14:32, 2 Samuel 24:16, Nehemiah 3:15, Nehemiah 6:10, 1 Kings
16:7, 2 Kings 10:6, 2 Kings 22:19, 2 Chronicles 13:11, 2 Chronicles 34:30,
Esther 7:8, Isaiah 5:25, Jeremiah 40:7, Daniel 7:7, Revelation 17:8, Ezekiel
8:16, Exodus 29:20, Judges 6:13, 2 Samuel 19:43, 1 Kings 20:39, 2 Kings 25:19,
Esther 9:22, Ezekiel 14:4, Daniel 3:3, Amos 7:17, Zephaniah 2:9, Zechariah
12:10, Numbers 15:24, Numbers 35:5, Judges 9:48, 1 Samuel 25:39, 1 Kings 19:11,
2 Kings 18:17, Nehemiah 13:19, Esther 2:15, Ezekiel 14:7, Leviticus 20:17,
Joshua 22:27, 1 Samuel 11:7, Judges 1:27, 1 Samuel 5:11, Nehemiah 10:37, Joshua
4:8, 1 Samuel 14:34, 1 Samuel 29:6, 2 Chronicles 28:9, Nehemiah 12:44, Esther
9:12, Jeremiah 40:15, Leviticus 16:21, Numbers 5:27, Joshua 22:19, 2 Chronicles
34:9, Job 42:8, Jeremiah 17:26, Jeremiah 27:16, Jeremiah 32:8, Ezekiel 31:14,
Ezekiel 33:12, Numbers 32:33, Judges 18:7, Jeremiah 35:17, Ezekiel 20:13,
Ezekiel 47:12, 1 Samuel 17:28, Isaiah 66:20, Esther 3:8, Ezekiel 3:20, Ezekiel
45:7, Ezekiel 46:2, Daniel 6:7, 1 Samuel 29:3, Ezekiel 12:19, Deuteronomy 7:1,
Judges 7:24, 1 Samuel 28:15, 2 Samuel 24:13, 1 Kings 13:2, 2 Kings 22:13, Job
1:5, Ezekiel 8:3, 1 Samuel 10:2, 1 Kings 15:18, 2 Kings 23:24, Ezra 5:14,
Esther 6:9, Jeremiah 20:4, Jeremiah 40:4, Ezekiel 39:17, Amos 6:10, Deuteronomy
16:11, 2 Kings 23:2, 2 Chronicles 7:6, 2 Chronicles 19:10, Jeremiah 41:16, 1
Kings 3:6, 2 Chronicles 34:21, Esther 9:1, Daniel 9:7, Joshua 1:15, 2 Kings
23:3, 2 Chronicles 30:6, Daniel 5:21, Joshua 22:31, 1 Chronicles 21:15,
Nehemiah 9:17, Jeremiah 40:5, Jeremiah 44:17, Ezekiel 42:13, 2 Kings 14:6,
Jeremiah 52:25, Daniel 5:7, 1 Kings 2:32, 2 Kings 7:12, 2 Chronicles 8:14, 2
Chronicles 24:11, Ezekiel 20:28, Ezekiel 48:10, 2 Kings 25:23, 1 Chronicles
24:6, Joshua 17:11, Ezekiel 38:8, Daniel 5:11, Numbers 8:19, Deuteronomy 9:5,
Ezekiel 18:24, 2 Samuel 3:8, Ezekiel 46:9, Daniel 4:19, Isaiah 45:14, Isaiah
59:21, Jeremiah 41:10, Ezekiel 38:20, 2 Kings 23:8, Nehemiah 9:32, Daniel 2:35,
Daniel 4:25, Ruth 4:4, Jeremiah 35:15, Numbers 4:15, Deuteronomy 30:16,
Jeremiah 32:44, 2 Chronicles 23:18, 1 Samuel 26:19, 2 Kings 10:15, Jeremiah
24:1, Jeremiah 44:25, Deuteronomy 26:13, 2 Kings 23:4, Jeremiah 21:4, Malachi
3:5, 1 Chronicles 21:12, Daniel 3:15, 2 Samuel 14:19, 2 Chronicles 23:13,
Exodus 7:19, Deuteronomy 5:14, Deuteronomy 13:5, Jeremiah 25:9, 2 Chronicles
15:8, Ezekiel 43:7, Ezekiel 46:12, Daniel 12:7, Joshua 5:6, Ezra 9:1, Ezekiel
6:9, Ezekiel 45:17, 2 Kings 12:18, Isaiah 66:3, Daniel 11:6, 2 Samuel 14:7,
Joshua 5:1, 2 Kings 1:6, 1 Kings 2:5, 2 Chronicles 24:14, Judges 19:9, 1
Chronicles 28:1, 2 Chronicles 5:13, 2 Chronicles 2:4, 2 Chronicles 2:14,
Jeremiah 44:12, Jeremiah 33:11, Esther 4:11, 1 Samuel 10:1, 1 Kings 8:64, 1
Chronicles 29:2, Daniel 6:12, Esther 8:5, Ezekiel 43:11, Ezekiel 48:21, 2 Kings
6:32, 2 Chronicles 22:11, Daniel 4:23, Revelation 20:4, 2 Chronicles 31:1, 2
Chronicles 28:15, 1 Samuel 29:4, Joshua 8:33, Jeremiah 21:7, Ezra 3:8, Esther
3:12, Daniel 5:23, 2 Kings 16:15, Esther 8:9&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Wed, 26 Jun 2013 03:44:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/06/bible-verses-by-length/</guid></item><item><title>Javascript Functions for PostgreSQL</title><link>/2013/06/25/Javascript-Functions-for-PostgreSQL/</link><description>&lt;p&gt;Javascript in Postgres has gotten a good bit of love lately, part of that is from &lt;a href="http://postgres.herpku.com"&gt;Heroku Postgres&lt;/a&gt; recently &lt;a href="https://postgres.heroku.com/blog/past/2013/6/5/javascript_in_your_postgres/"&gt;adding support for Javascript&lt;/a&gt; and part from a variety of people championing the power of it such as &lt;a href="http://twitter.com/leinweber"&gt;@leinweber&lt;/a&gt; (&lt;a href="http://www.youtube.com/watch?v=fRupMAVdmWA"&gt;Embracing the web with JSON and PLV8&lt;/a&gt;) and &lt;a href="http://twitter.com/selenamarie"&gt;@selenamarie&lt;/a&gt; (&lt;a href="https://speakerdeck.com/selenamarie/schema-liberation-with-json-and-plv8-and-postgres"&gt;schema liberation with JSON and PLV8&lt;/a&gt;). In a recent conversation it was pointed out that it seems a bit of headache to have to create your own functions, or at least having an initial collection would make it that much more powerful. While many can look forward to &lt;a href="http://www.postgresql.org/docs/9.3/static/functions-json.html"&gt;PostgreSQL 9.3&lt;/a&gt; which will have a bit more built in support for JSON a few functions can really help make it more useful today.&lt;/p&gt;
&lt;p&gt;These are courtesy of &lt;a href="http://bitfission.com"&gt;Will Leinweber&lt;/a&gt;. For each of the following functions I&amp;rsquo;ll highlight an example of using it as well. To get an idea of the data its being run on:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;select * from example;
data
--------------------------------------------
{&amp;quot;name&amp;quot;:&amp;quot;Craig Kerstiens&amp;quot;, +
&amp;quot;age&amp;quot;:27, +
&amp;quot;siblings&amp;quot;:1, +
&amp;quot;numbers&amp;quot;:[ +
{&amp;quot;type&amp;quot;:&amp;quot;work&amp;quot;, +
&amp;quot;number&amp;quot;:&amp;quot;123-456-7890&amp;quot;}, +
{&amp;quot;type&amp;quot;:&amp;quot;home&amp;quot;, +
&amp;quot;number&amp;quot;:&amp;quot;456-123-7890&amp;quot;}]}
(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="get_text"&gt;
&lt;div&gt;
get_text
&lt;/div&gt;
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;CREATE OR REPLACE FUNCTION
get_text(key text, data json)
RETURNS text AS $$
return data[key];
$$ LANGUAGE plv8 IMMUTABLE STRICT;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then using the function:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;select get_text('name', data) from example;
get_text
----------------
Craig Kerstiens
(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="get_numeric"&gt;
&lt;div&gt;
get_numeric
&lt;/div&gt;
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;CREATE OR REPLACE FUNCTION
get_numeric(key text, data json)
RETURNS numeric AS $$
return data[key];
$$ LANGUAGE plv8 IMMUTABLE STRICT;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then using the function:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;select get_numeric('siblings', data) from example;
get_text
----------------
1
(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="json_select"&gt;
&lt;div&gt;
json_select
&lt;/div&gt;
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;create or replace function
json_select(selector text, data json)
returns json as $$
exports = {};
(function(a){function z(a){return{sel:q(a)[1],match:function(a){return y(this.sel,a)},forEach:function(a,b){return x(this.sel,a,b)}}}function y(a,b){var c=[];x(a,b,function(a){c.push(a)});return c}function x(a,b,c,d,e,f){var g=a[0]===&amp;quot;,&amp;quot;?a.slice(1):[a],h=[],i=!1,j=0,k=0,l,m;for(j=0;j&amp;lt;g.length;j++){m=w(b,g[j],d,e,f),m[0]&amp;amp;&amp;amp;(i=!0);for(k=0;k&amp;lt;m[1].length;k++)h.push(m[1][k])}if(h.length&amp;amp;&amp;amp;typeof b==&amp;quot;object&amp;quot;){h.length&amp;gt;=1&amp;amp;&amp;amp;h.unshift(&amp;quot;,&amp;quot;);if(u(b))for(j=0;j&amp;lt;b.length;j++)x(h,b[j],c,undefined,j,b.length);else for(l in b)b.hasOwnProperty(l)&amp;amp;&amp;amp;x(h,b[l],c,l)}i&amp;amp;&amp;amp;c&amp;amp;&amp;amp;c(b)}function w(a,b,c,d,e){var f=[],g=b[0]===&amp;quot;&amp;gt;&amp;quot;?b[1]:b[0],h=!0,i;g.type&amp;amp;&amp;amp;(h=h&amp;amp;&amp;amp;g.type===v(a)),g.id&amp;amp;&amp;amp;(h=h&amp;amp;&amp;amp;g.id===c),h&amp;amp;&amp;amp;g.pf&amp;amp;&amp;amp;(g.pf===&amp;quot;:nth-last-child&amp;quot;?d=e-d:d++,g.a===0?h=g.b===d:(i=(d-g.b)%g.a,h=!i&amp;amp;&amp;amp;d*g.a+g.b&amp;gt;=0));if(h&amp;amp;&amp;amp;g.has){var j=function(){throw 42};for(var k=0;k&amp;lt;g.has.length;k++){try{x(g.has[k],a,j)}catch(l){if(l===42)continue}h=!1;break}}h&amp;amp;&amp;amp;g.expr&amp;amp;&amp;amp;(h=p(g.expr,a)),b[0]!==&amp;quot;&amp;gt;&amp;quot;&amp;amp;&amp;amp;b[0].pc!==&amp;quot;:root&amp;quot;&amp;amp;&amp;amp;f.push(b),h&amp;amp;&amp;amp;(b[0]===&amp;quot;&amp;gt;&amp;quot;?b.length&amp;gt;2&amp;amp;&amp;amp;(h=!1,f.push(b.slice(2))):b.length&amp;gt;1&amp;amp;&amp;amp;(h=!1,f.push(b.slice(1))));return[h,f]}function v(a){if(a===null)return&amp;quot;null&amp;quot;;var b=typeof a;b===&amp;quot;object&amp;quot;&amp;amp;&amp;amp;u(a)&amp;amp;&amp;amp;(b=&amp;quot;array&amp;quot;);return b}function u(a){return Array.isArray?Array.isArray(a):b.call(a)===&amp;quot;[object Array]&amp;quot;}function t(a,b,c){var d=b,g={},j=i(a,b);j&amp;amp;&amp;amp;j[1]===&amp;quot; &amp;quot;&amp;amp;&amp;amp;(d=b=j[0],j=i(a,b)),j&amp;amp;&amp;amp;j[1]===f.typ?(g.type=j[2],j=i(a,b=j[0])):j&amp;amp;&amp;amp;j[1]===&amp;quot;*&amp;quot;&amp;amp;&amp;amp;(j=i(a,b=j[0]));for(;;){if(j===undefined)break;if(j[1]===f.ide)g.id&amp;amp;&amp;amp;e(&amp;quot;nmi&amp;quot;,j[1]),g.id=j[2];else if(j[1]===f.psc)(g.pc||g.pf)&amp;amp;&amp;amp;e(&amp;quot;mpc&amp;quot;,j[1]),j[2]===&amp;quot;:first-child&amp;quot;?(g.pf=&amp;quot;:nth-child&amp;quot;,g.a=0,g.b=1):j[2]===&amp;quot;:last-child&amp;quot;?(g.pf=&amp;quot;:nth-last-child&amp;quot;,g.a=0,g.b=1):g.pc=j[2];else{if(j[1]!==f.psf)break;if(j[2]===&amp;quot;:val&amp;quot;||j[2]===&amp;quot;:contains&amp;quot;)g.expr=[undefined,j[2]===&amp;quot;:val&amp;quot;?&amp;quot;=&amp;quot;:&amp;quot;*=&amp;quot;,undefined],j=i(a,b=j[0]),j&amp;amp;&amp;amp;j[1]===&amp;quot; &amp;quot;&amp;amp;&amp;amp;(j=i(a,b=j[0])),(!j||j[1]!==&amp;quot;(&amp;quot;)&amp;amp;&amp;amp;e(&amp;quot;pex&amp;quot;,a),j=i(a,b=j[0]),j&amp;amp;&amp;amp;j[1]===&amp;quot; &amp;quot;&amp;amp;&amp;amp;(j=i(a,b=j[0])),(!j||j[1]!==f.str)&amp;amp;&amp;amp;e(&amp;quot;sex&amp;quot;,a),g.expr[2]=j[2],j=i(a,b=j[0]),j&amp;amp;&amp;amp;j[1]===&amp;quot; &amp;quot;&amp;amp;&amp;amp;(j=i(a,b=j[0])),(!j||j[1]!==&amp;quot;)&amp;quot;)&amp;amp;&amp;amp;e(&amp;quot;epex&amp;quot;,a);else if(j[2]===&amp;quot;:has&amp;quot;){j=i(a,b=j[0]),j&amp;amp;&amp;amp;j[1]===&amp;quot; &amp;quot;&amp;amp;&amp;amp;(j=i(a,b=j[0])),(!j||j[1]!==&amp;quot;(&amp;quot;)&amp;amp;&amp;amp;e(&amp;quot;pex&amp;quot;,a);var k=q(a,j[0],!0);j[0]=k[0],g.has||(g.has=[]),g.has.push(k[1])}else if(j[2]===&amp;quot;:expr&amp;quot;){g.expr&amp;amp;&amp;amp;e(&amp;quot;mexp&amp;quot;,a);var l=o(a,j[0]);j[0]=l[0],g.expr=l[1]}else{(g.pc||g.pf)&amp;amp;&amp;amp;e(&amp;quot;mpc&amp;quot;,a),g.pf=j[2];var m=h.exec(a.substr(j[0]));m||e(&amp;quot;mepf&amp;quot;,a),m[5]?(g.a=2,g.b=m[5]===&amp;quot;odd&amp;quot;?1:0):m[6]?(g.a=0,g.b=parseInt(m[6],10)):(g.a=parseInt((m[1]?m[1]:&amp;quot;+&amp;quot;)+(m[2]?m[2]:&amp;quot;1&amp;quot;),10),g.b=m[3]?parseInt(m[3]+m[4],10):0),j[0]+=m[0].length}}j=i(a,b=j[0])}d===b&amp;amp;&amp;amp;e(&amp;quot;se&amp;quot;,a);return[b,g]}function s(a){if(a[0]===&amp;quot;,&amp;quot;){var b=[&amp;quot;,&amp;quot;];for(var c=c;c&amp;lt;a.length;c++){var d=r(d[c]);b=b.concat(d[0]===&amp;quot;,&amp;quot;?d.slice(1):d)}return b}return r(a)}function r(a){var b=[],c;for(var d=0;d&amp;lt;a.length;d++)if(a[d]===&amp;quot;~&amp;quot;){if(d&amp;lt;2||a[d-2]!=&amp;quot;&amp;gt;&amp;quot;)c=a.slice(0,d-1),c=c.concat([{has:[[{pc:&amp;quot;:root&amp;quot;},&amp;quot;&amp;gt;&amp;quot;,a[d-1]]]},&amp;quot;&amp;gt;&amp;quot;]),c=c.concat(a.slice(d+1)),b.push(c);if(d&amp;gt;1){var e=a[d-2]===&amp;quot;&amp;gt;&amp;quot;?d-3:d-2;c=a.slice(0,e);var f={};for(var g in a[e])a[e].hasOwnProperty(g)&amp;amp;&amp;amp;(f[g]=a[e][g]);f.has||(f.has=[]),f.has.push([{pc:&amp;quot;:root&amp;quot;},&amp;quot;&amp;gt;&amp;quot;,a[d-1]]),c=c.concat(f,&amp;quot;&amp;gt;&amp;quot;,a.slice(d+1)),b.push(c)}break}if(d==a.length)return a;return b.length&amp;gt;1?[&amp;quot;,&amp;quot;].concat(b):b[0]}function q(a,b,c,d){c||(d={});var f=[],g,h;b||(b=0);for(;;){var j=t(a,b,d);f.push(j[1]),j=i(a,b=j[0]),j&amp;amp;&amp;amp;j[1]===&amp;quot; &amp;quot;&amp;amp;&amp;amp;(j=i(a,b=j[0]));if(!j)break;if(j[1]===&amp;quot;&amp;gt;&amp;quot;||j[1]===&amp;quot;~&amp;quot;)j[1]===&amp;quot;~&amp;quot;&amp;amp;&amp;amp;(d.usesSiblingOp=!0),f.push(j[1]),b=j[0];else if(j[1]===&amp;quot;,&amp;quot;)g===undefined?g=[&amp;quot;,&amp;quot;,f]:g.push(f),f=[],b=j[0];else if(j[1]===&amp;quot;)&amp;quot;){c||e(&amp;quot;ucp&amp;quot;,j[1]),h=1,b=j[0];break}}c&amp;amp;&amp;amp;!h&amp;amp;&amp;amp;e(&amp;quot;mcp&amp;quot;,a),g&amp;amp;&amp;amp;g.push(f);var k;!c&amp;amp;&amp;amp;d.usesSiblingOp?k=s(g?g:f):k=g?g:f;return[b,k]}function p(a,b){if(a===undefined)return b;if(a===null||typeof a!=&amp;quot;object&amp;quot;)return a;var c=p(a[0],b),d=p(a[2],b);return l[a[1]][1](c,d)}function o(a,b){function c(a){return typeof a!=&amp;quot;object&amp;quot;||a===null?a:a[0]===&amp;quot;(&amp;quot;?c(a[1]):[c(a[0]),a[1],c(a[2])]}var d=n(a,b?b:0);return[d[0],c(d[1])]}function n(a,b){b||(b=0);var c=m(a,b),d;if(c&amp;amp;&amp;amp;c[1]===&amp;quot;(&amp;quot;){d=n(a,c[0]);var f=m(a,d[0]);(!f||f[1]!==&amp;quot;)&amp;quot;)&amp;amp;&amp;amp;e(&amp;quot;epex&amp;quot;,a),b=f[0],d=[&amp;quot;(&amp;quot;,d[1]]}else!c||c[1]&amp;amp;&amp;amp;c[1]!=&amp;quot;x&amp;quot;?e(&amp;quot;ee&amp;quot;,a+&amp;quot; - &amp;quot;+(c[1]&amp;amp;&amp;amp;c[1])):(d=c[1]===&amp;quot;x&amp;quot;?undefined:c[2],b=c[0]);var g=m(a,b);if(!g||g[1]==&amp;quot;)&amp;quot;)return[b,d];(g[1]==&amp;quot;x&amp;quot;||!g[1])&amp;amp;&amp;amp;e(&amp;quot;bop&amp;quot;,a+&amp;quot; - &amp;quot;+(g[1]&amp;amp;&amp;amp;g[1]));var h=n(a,g[0]);b=h[0],h=h[1];var i;if(typeof h!=&amp;quot;object&amp;quot;||h[0]===&amp;quot;(&amp;quot;||l[g[1]][0]&amp;lt;l[h[1]][0])i=[d,g[1],h];else{i=h;while(typeof h[0]==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;h[0][0]!=&amp;quot;(&amp;quot;&amp;amp;&amp;amp;l[g[1]][0]&amp;gt;=l[h[0][1]][0])h=h[0];h[0]=[d,g[1],h[0]]}return[b,i]}function m(a,b){var d,e=j.exec(a.substr(b));if(e){b+=e[0].length,d=e[1]||e[2]||e[3]||e[5]||e[6];if(e[1]||e[2]||e[3])return[b,0,c(d)];if(e[4])return[b,0,undefined];return[b,d]}}function k(a,b){return typeof a===b}function i(a,b){b||(b=0);var d=g.exec(a.substr(b));if(!d)return undefined;b+=d[0].length;var h;d[1]?h=[b,&amp;quot; &amp;quot;]:d[2]?h=[b,d[0]]:d[3]?h=[b,f.typ,d[0]]:d[4]?h=[b,f.psc,d[0]]:d[5]?h=[b,f.psf,d[0]]:d[6]?e(&amp;quot;upc&amp;quot;,a):d[8]?h=[b,d[7]?f.ide:f.str,c(d[8])]:d[9]?e(&amp;quot;ujs&amp;quot;,a):d[10]&amp;amp;&amp;amp;(h=[b,f.ide,d[10].replace(/\\([^\r\n\f0-9a-fA-F])/g,&amp;quot;$1&amp;quot;)]);return h}function e(a,b){throw new Error(d[a]+(b&amp;amp;&amp;amp;&amp;quot; in '&amp;quot;+b+&amp;quot;'&amp;quot;))}function c(a){try{if(JSON&amp;amp;&amp;amp;JSON.parse)return JSON.parse(a);return(new Function(&amp;quot;return &amp;quot;+a))()}catch(b){e(&amp;quot;ijs&amp;quot;,b.message)}}var b=Object.prototype.toString,d={bop:&amp;quot;binary operator expected&amp;quot;,ee:&amp;quot;expression expected&amp;quot;,epex:&amp;quot;closing paren expected ')'&amp;quot;,ijs:&amp;quot;invalid json string&amp;quot;,mcp:&amp;quot;missing closing paren&amp;quot;,mepf:&amp;quot;malformed expression in pseudo-function&amp;quot;,mexp:&amp;quot;multiple expressions not allowed&amp;quot;,mpc:&amp;quot;multiple pseudo classes (:xxx) not allowed&amp;quot;,nmi:&amp;quot;multiple ids not allowed&amp;quot;,pex:&amp;quot;opening paren expected '('&amp;quot;,se:&amp;quot;selector expected&amp;quot;,sex:&amp;quot;string expected&amp;quot;,sra:&amp;quot;string required after '.'&amp;quot;,uc:&amp;quot;unrecognized char&amp;quot;,ucp:&amp;quot;unexpected closing paren&amp;quot;,ujs:&amp;quot;unclosed json string&amp;quot;,upc:&amp;quot;unrecognized pseudo class&amp;quot;},f={psc:1,psf:2,typ:3,str:4,ide:5},g=new RegExp('^(?:([\\r\\n\\t\\ ]+)|([~*,&amp;gt;\\)\\(])|(string|boolean|null|array|object|number)|(:(?:root|first-child|last-child|only-child))|(:(?:nth-child|nth-last-child|has|expr|val|contains))|(:\\w+)|(?:(\\.)?(\\&amp;quot;(?:[^\\\\\\&amp;quot;]|\\\\[^\\&amp;quot;])*\\&amp;quot;))|(\\&amp;quot;)|\\.((?:[_a-zA-Z]|[^\\0-\\0177]|\\\\[^\\r\\n\\f0-9a-fA-F])(?:[_a-zA-Z0-9\\-]|[^\\u0000-\\u0177]|(?:\\\\[^\\r\\n\\f0-9a-fA-F]))*))'),h=/^\s*\(\s*(?:([+\-]?)([0-9]*)n\s*(?:([+\-])\s*([0-9]))?|(odd|even)|([+\-]?[0-9]+))\s*\)/,j=new RegExp('^\\s*(?:(true|false|null)|(-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)|(&amp;quot;(?:[^\\]|\\[^&amp;quot;])*&amp;quot;)|(x)|(&amp;amp;&amp;amp;|\\|\\||[\\$\\^&amp;lt;&amp;gt;!\\*]=|[=+\\-*/%&amp;lt;&amp;gt;])|([\\(\\)]))'),l={&amp;quot;*&amp;quot;:[9,function(a,b){return a*b}],&amp;quot;/&amp;quot;:[9,function(a,b){return a/b}],&amp;quot;%&amp;quot;:[9,function(a,b){return a%b}],&amp;quot;+&amp;quot;:[7,function(a,b){return a+b}],&amp;quot;-&amp;quot;:[7,function(a,b){return a-b}],&amp;quot;&amp;lt;=&amp;quot;:[5,function(a,b){return k(a,&amp;quot;number&amp;quot;)&amp;amp;&amp;amp;k(b,&amp;quot;number&amp;quot;)&amp;amp;&amp;amp;a&amp;lt;=b}],&amp;quot;&amp;gt;=&amp;quot;:[5,function(a,b){return k(a,&amp;quot;number&amp;quot;)&amp;amp;&amp;amp;k(b,&amp;quot;number&amp;quot;)&amp;amp;&amp;amp;a&amp;gt;=b}],&amp;quot;$=&amp;quot;:[5,function(a,b){return k(a,&amp;quot;string&amp;quot;)&amp;amp;&amp;amp;k(b,&amp;quot;string&amp;quot;)&amp;amp;&amp;amp;a.lastIndexOf(b)===a.length-b.length}],&amp;quot;^=&amp;quot;:[5,function(a,b){return k(a,&amp;quot;string&amp;quot;)&amp;amp;&amp;amp;k(b,&amp;quot;string&amp;quot;)&amp;amp;&amp;amp;a.indexOf(b)===0}],&amp;quot;*=&amp;quot;:[5,function(a,b){return k(a,&amp;quot;string&amp;quot;)&amp;amp;&amp;amp;k(b,&amp;quot;string&amp;quot;)&amp;amp;&amp;amp;a.indexOf(b)!==-1}],&amp;quot;&amp;gt;&amp;quot;:[5,function(a,b){return k(a,&amp;quot;number&amp;quot;)&amp;amp;&amp;amp;k(b,&amp;quot;number&amp;quot;)&amp;amp;&amp;amp;a&amp;gt;b}],&amp;quot;&amp;lt;&amp;quot;:[5,function(a,b){return k(a,&amp;quot;number&amp;quot;)&amp;amp;&amp;amp;k(b,&amp;quot;number&amp;quot;)&amp;amp;&amp;amp;a&amp;lt;b}],&amp;quot;=&amp;quot;:[3,function(a,b){return a===b}],&amp;quot;!=&amp;quot;:[3,function(a,b){return a!==b}],&amp;quot;&amp;amp;&amp;amp;&amp;quot;:[2,function(a,b){return a&amp;amp;&amp;amp;b}],&amp;quot;||&amp;quot;:[1,function(a,b){return a||b}]};a._lex=i,a._parse=q,a.match=function(a,b){return z(a).match(b)},a.forEach=function(a,b,c){return z(a).forEach(b,c)},a.compile=z})(typeof exports==&amp;quot;undefined&amp;quot;?window.JSONSelect={}:exports)
return JSON.stringify(
exports.match(selector,
data));
$$ LANGUAGE plv8 IMMUTABLE STRICT
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then using the function:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;select json_select('.name nth-child(1)', data) as name, json_select('.numbers', data) as phone
from example;
name | phone
--------------------+------------------------------------------------------------------------------------------
[&amp;quot;Craig Kerstiens&amp;quot;] | [[{&amp;quot;type&amp;quot;:&amp;quot;work&amp;quot;,&amp;quot;number&amp;quot;:&amp;quot;456-123-7890&amp;quot;},{&amp;quot;type&amp;quot;:&amp;quot;home&amp;quot;,&amp;quot;number&amp;quot;:&amp;quot;123-456-7890&amp;quot;}]]
(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="javascript-injection-attack"&gt;
&lt;div&gt;
javascript injection attack
&lt;/div&gt;
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;create or replace function
js(src text) returns text as $$
return eval(
&amp;quot;(function() { &amp;quot; + src + &amp;quot;})&amp;quot;
)();
$$ LANGUAGE plv8;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Have any others you feel are essential when starting to work with JSON? Let me know &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens@gmail.com&lt;/a&gt;. Beyond that give JSON and JavaScript a try inside your database.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 25 Jun 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/06/25/Javascript-Functions-for-PostgreSQL/</guid></item><item><title>Oracle Database 12c R1 (12.1.0.1.0) is finally released!</title><link>https://tanelpoder.com/2013/06/25/oracle-database-12c-r1-12-1-0-1-0-is-finally-released/</link><description>&lt;p&gt;You can download it from &lt;a href="http://edelivery.oracle.com" target="_blank"&gt;&lt;a href="http://edelivery.oracle.com"&gt;http://edelivery.oracle.com&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And now I (and other beta testers) can finally start writing about the new cool features in it! :)&lt;/p&gt;
&lt;p&gt;Looks like only the Linux x86-64, Solaris x86-64 + SPARC ports are available first (as usual).&lt;/p&gt;
&lt;p&gt;(just a screenshot below, you’ll need to go to &lt;a href="http://edelivery.oracle.com" target="_blank"&gt;&lt;a href="http://edelivery.oracle.com"&gt;http://edelivery.oracle.com&lt;/a&gt;&lt;/a&gt; to download the files)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tanelpoder.com/wp-content/uploads/2013/06/Screen-Shot-2013-06-25-at-9.34.22-PM.png"&gt;&lt;img alt="Screen Shot 2013-06-25 at 9.34.22 PM" class="alignnone size-full wp-image-2205" height="426" src="https://tanelpoder.com/wp-content/uploads/2013/06/Screen-Shot-2013-06-25-at-9.34.22-PM.png?resize=629%2C426" width="629" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Also the &lt;a href="http://www.oracle.com/technetwork/database/enterprise-edition/documentation/database-093888.html" target="_blank"&gt;Oracle 12c Documentation&lt;/a&gt; is now available in the OTN website.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Tue, 25 Jun 2013 21:39:46 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/06/25/oracle-database-12c-r1-12-1-0-1-0-is-finally-released/</guid></item><item><title>MongoDB Masters Summit 2013</title><link>https://nicolaiarocci.com/mongodb-masters-summit-2013/</link><description>&lt;p&gt;I’m just back from the &lt;!-- raw HTML omitted --&gt;MongoDB Masters&lt;!-- raw HTML omitted --&gt; Summit hosted by 10Gen in New York City. In just a couple days I was given the opportunity to meet and share knowledge (and fun!) with amazingly talented minds coming from all over the world. I’m back with literally dozen new ideas opportunities and concepts, on which I’ll need to elaborate a little bit. While I cannot comment on the many things the smart minds at 10Gen are working on, rest assured that the future of MongoDB is looking great and brighter than ever.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 25 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/mongodb-masters-summit-2013/</guid></item><item><title>Jon Birdsong: Founder of Rivalry</title><link>https://solomon.io/jon-birdsong-founder-of-rivalry/</link><description>Jon Birdsong is the founder of Rivalry, a sales process management software company.</description><author>Sam Solomon</author><pubDate>Tue, 25 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/jon-birdsong-founder-of-rivalry/</guid></item><item><title>If you're going to change databases, do it in one go</title><link>https://www.databasesandlife.com/if-youre-going-to-change-databases-do-it-in-one-go/</link><description>&lt;p&gt;At Uboot, there was the suggestion that we should change database technology. This was because we would save money with by moving away from Oracle to e.g. MySQL.&lt;/p&gt;
&lt;p&gt;It was further decided, as we had 200k+ lines of code, and 100+ tables, that if a migration was to occur, it shouldn&amp;rsquo;t happen  &amp;ldquo;all at once&amp;rdquo;, but instead one would have some parts of the system migrated with other parts of the system not yet migrated.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Tue, 25 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/if-youre-going-to-change-databases-do-it-in-one-go/</guid></item><item><title>Small BF Interpreter in Scala</title><link>https://korz.dev/2013/06/small-bf-interpreter-in-scala/</link><description>&lt;p&gt;This is a small interpreter for &lt;a href="https://en.wikipedia.org/wiki/Brainfuck"&gt;BF&lt;/a&gt; I wrote about a month ago. Nothing new, but I thought I might share it anyway.&lt;/p&gt;</description><author>Niklas Korz</author><pubDate>Tue, 25 Jun 2013 01:00:00 GMT</pubDate><guid isPermaLink="true">https://korz.dev/2013/06/small-bf-interpreter-in-scala/</guid></item><item><title>Post Statistics Plugin for Pelican</title><link>https://duncanlock.net/blog/2013/06/23/post-statistics-plugin-for-pelican/</link><description>&lt;section id="preamble"&gt;&lt;p&gt;This is a Pelican plugin to calculate various statistics about a post and store them in an &lt;code&gt;article.stats&lt;/code&gt; dictionary. You can see this in action in the sidebar on the left of this&amp;nbsp;site.&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="Nice touch from medium.com - now available in Pelican." src="https://duncanlock.net/images/posts/post-statistics-plugin-for-pelican/pelican-plugin-post-stats-medium-example.png" /&gt;&lt;/div&gt;
&lt;p&gt;I wanted to implement the nice little &amp;#8220;X min read&amp;#8221; thing from &lt;a href="https://medium.com/"&gt;Medium&lt;/a&gt; - and it turned out that it was easy to provide a few other interesting stats at the same time, for people to use in their&amp;nbsp;templates.&lt;/p&gt;
&lt;p&gt;The returned &lt;code&gt;article.stats&lt;/code&gt; dictionary contains the&amp;nbsp;following:&lt;/p&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;wc&lt;/code&gt;: how many&amp;nbsp;words&lt;/li&gt;&lt;li&gt;&lt;code&gt;read_mins&lt;/code&gt;: how many minutes would it take to read this article, &lt;a href="http://en.wikipedia.org/wiki/Words_per_minute#Reading_and_comprehension"&gt;based on 250&amp;nbsp;wpm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;word_counts&lt;/code&gt;: frequency count of all the words in the article; can be used for tag/word&amp;nbsp;clouds&lt;/li&gt;&lt;li&gt;&lt;code&gt;fi&lt;/code&gt;: &lt;a href="http://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests"&gt;Flesch-kincaid&lt;/a&gt; Index/ Reading&amp;nbsp;Ease&lt;/li&gt;&lt;li&gt;&lt;code&gt;fk&lt;/code&gt;: Flesch-kincaid Grade&amp;nbsp;Level&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;For&amp;nbsp;example:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s"&gt;'wc'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2760&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;'fi'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'65.94'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;'fk'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'7.65'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;'word_counts'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s"&gt;'to'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;98&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s"&gt;'a'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...}),&lt;/span&gt;
    &lt;span class="s"&gt;'read_mins'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This allows you to output these values in your templates, like this, for&amp;nbsp;example:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&amp;lt;p title="~{{ article.stats['wc'] }} words"&amp;gt;~{{ article.stats['read_mins'] }} min read&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
    &amp;lt;li&amp;gt;Flesch-kincaid Index/ Reading Ease: {{ article.stats['fi'] }}&amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;Flesch-kincaid Grade Level: {{ article.stats['fk'] }}&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;word_counts&lt;/code&gt; variable is a python &lt;code&gt;Counter&lt;/code&gt; dictionary and looks something like this, with each unique word and it&amp;#8217;s&amp;nbsp;frequency:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="n"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s"&gt;'to'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;98&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s"&gt;'a'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s"&gt;'the'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;83&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s"&gt;'of'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s"&gt;'karma'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;.....&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This can be used to create a tag/word cloud for a&amp;nbsp;post.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_requirements"&gt;Requirements&lt;/h2&gt;&lt;p&gt;&lt;code&gt;post_stats&lt;/code&gt; requires &lt;a href="http://www.crummy.com/software/BeautifulSoup/bs4/doc/"&gt;BeautifulSoup&lt;/a&gt;:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;beautifulsoup4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_caveat_emptor"&gt;Caveat&amp;nbsp;Emptor&lt;/h2&gt;&lt;p&gt;Please note that the values are a wee bit approximate - it&amp;#8217;s surprisingly difficult to compute a &lt;em&gt;perfect&lt;/em&gt; word count - it depends on what you count as a &amp;#8216;word&amp;#8217;, how many code samples, data tables, etc&amp;#8230;&amp;#8203; you have in your post. Calculating the &lt;a href="http://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests"&gt;Flesch-kincaid Index/ Reading Ease/ Grade level&lt;/a&gt; stuff involves counting syllables - again something that is very hard to do perfectly, but quite easy to get 90%&amp;nbsp;right.&lt;/p&gt;
&lt;p&gt;In addition, the Flesch-kincaid stuff currently only works on English text, but everything else should work multi-language. I haven&amp;#8217;t done much Unicode testing though, so &lt;a href="https://github.com/getpelican/pelican-plugins"&gt;patches welcome&lt;/a&gt;!&lt;/p&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Mon, 24 Jun 2013 07:28:11 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/06/23/post-statistics-plugin-for-pelican/</guid></item><item><title>Slim Wallet Comparison</title><link>https://justingarrison.com/blog/2013-06-24-slim-wallet-comparison/</link><description>As a follow-up to my recent article about the best wallet ever, I was given the opportunity to test some of the slim wallets</description><author>Justin Garrison's Homepage</author><pubDate>Mon, 24 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-06-24-slim-wallet-comparison/</guid></item><item><title>Fresh releases! puppet-ipa, puppet-nfs, puppet-gluster</title><link>https://purpleidea.com/blog/2013/06/23/fresh-releases-puppet-ipa-puppet-nfs-puppet-gluster/</link><description>&lt;p&gt;I&amp;rsquo;ve been a little slow in making release announcements, so here&amp;rsquo;s some news:&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve just released the third stage of my &lt;a href="https://github.com/purpleidea/puppet-ipa"&gt;puppet-ipa&lt;/a&gt; module. At the moment it now supports installation, managing of hosts, and managing of services. It integrates with my &lt;a href="https://github.com/purpleidea/puppet-nfs"&gt;puppet-nfs&lt;/a&gt; module to allow you to easily setup and run an NFSv4 kerberized server and client.&lt;/p&gt;
&lt;p&gt;While we&amp;rsquo;re at it, that&amp;rsquo;s some more news: I&amp;rsquo;ve just released a &lt;a href="https://github.com/purpleidea/puppet-nfs"&gt;puppet-nfs&lt;/a&gt; module to make your &lt;em&gt;/etc/exports&lt;/em&gt; management easier. It&amp;rsquo;s designed to manage other security types, or even to work without kerberos or any authentication at all, but I haven&amp;rsquo;t tested those.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sun, 23 Jun 2013 12:22:32 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/06/23/fresh-releases-puppet-ipa-puppet-nfs-puppet-gluster/</guid></item><item><title>Visiting Hour by Stuart Conn</title><link>https://ho.dges.online/words/commonplace/visiting-hour-by-stuart-conn/</link><description>&lt;p&gt;In the pond of our new garden&lt;br /&gt;
were five orange stains, under&lt;br /&gt;
inches of ice. Weeks since anyone&lt;br /&gt;
had been there. Already by far&lt;br /&gt;
the most severe winter for years.&lt;br /&gt;
You broke the ice with a hammer.&lt;br /&gt;
I watched the goldfish appear,&lt;br /&gt;
blunt-nosed and delicately clear.&lt;/p&gt;
&lt;p&gt;Since then so much has taken place&lt;br /&gt;
to distance us from what we were.&lt;br /&gt;
That it should come to this.&lt;br /&gt;
Unable to hide the horror&lt;br /&gt;
in my eyes, I stand helpless&lt;br /&gt;
by your bedside and can do no more&lt;br /&gt;
than wish it were simply a matter&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Sat, 22 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/visiting-hour-by-stuart-conn/</guid></item><item><title>Five years of Weight Tracking</title><link>https://blog.tafkas.net/2013/06/22/five-years-of-weight-tracking/</link><description>After I moved back from New Jersey in June 2008 I started to track my body weight more seriously. My routine usually consists of getting up and after finishing the morning bathroom I would step on my scale. That way I try to ensure that the condition for each weighing are as similar as possible. I recorded my weight on paper and eventually would put everything into a spreadsheet for further analysis.</description><author>Tafkas Blog</author><pubDate>Sat, 22 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.tafkas.net/2013/06/22/five-years-of-weight-tracking/</guid></item><item><title>Die Flut-Hilfe-App flut.stomt.de wird vorgestellt</title><link>https://philippzentner.com/die-flut-hilfe-app-flutstomtde-wird-vorgestellt.html</link><description>Ich freue mich euch mein mobiles Webtool zur besseren Koordination von Helfern vorstellen zu können. https://flut.stomt.de Die mobile Webseite ist mit HTML5 und jQuery Mobile geschrieben und arbeitet mit einem kleinen PHP Backend zusammen. Mit der Flut-Hilfe-App kann man eine Hilfeanfrage stellen welche beinhaltet wer,&amp;hellip;</description><author>Philipp Zentner</author><pubDate>Sat, 22 Jun 2013 02:43:10 GMT</pubDate><guid isPermaLink="true">https://philippzentner.com/die-flut-hilfe-app-flutstomtde-wird-vorgestellt.html</guid></item><item><title>I hate your code</title><link>https://honza.pokorny.ca/2013/06/i-hate-your-code/</link><description>&lt;p&gt;When starting to work on an existing codebase, I often find myself in a state
of despair.  The code doesn&amp;rsquo;t make any sense, the programmers must have all
been idiots, why &lt;em&gt;on earth&lt;/em&gt; would they do it like this, &amp;hellip;  I hate everything
about the code.&lt;/p&gt;
&lt;p&gt;I spend hours going through it, thinking to myself, &lt;em&gt;I would have done a much
better job writing this&lt;/em&gt; and making a list of changes that &lt;em&gt;must&lt;/em&gt; be done in
order for the project to conform to my standards.&lt;/p&gt;
&lt;p&gt;But then, when I have spent enough time reading everything, something clicks in
my mind.  I see what the authors were trying to do and everything makes sense.
It&amp;rsquo;s actually kind of clever.&lt;/p&gt;
&lt;p&gt;And I feel dumb.  Every time.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Fri, 21 Jun 2013 16:25:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/06/i-hate-your-code/</guid></item><item><title>Safety Nets</title><link>https://zacs.site/blog/safety-nets.html</link><description>&lt;p&gt;A few weeks ago now Yahoo bought Tumblr for more than a billion dollars; responding to the news, Marco Arment wrote &lt;a href="http://www.marco.org/2013/05/20/one-person-product"&gt;&lt;em&gt;The One-Person Product&lt;/em&gt;&lt;/a&gt;. In &lt;a href="http://www.merlinmann.com/roderick/ep-75-mean-baby.html"&gt;episode seventy-five&lt;/a&gt; of Roderick on the Line, John talked about watching successful young artists blow fortunes one CD at a time. On &lt;a href="http://5by5.tv/b2w/120"&gt;the one hundred and twentieth episode of their Back to Work program&lt;/a&gt;, Dan and Merlin discussed a common topic between Marco&amp;#8217;s article and John&amp;#8217;s podcast, the topic of a safety net.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/safety-nets.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 21 Jun 2013 16:20:51 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/safety-nets.html</guid></item><item><title>Matt Gemmell</title><link>https://zacs.site/blog/subscribed-to-matt-gemmell.html</link><description>&lt;p&gt;I really enjoy reading Matt Gemmell&amp;#8217;s writing. His article from quite a while ago, &lt;a href="http://mattgemmell.com/2013/01/15/writing-tools/"&gt;&lt;em&gt;Writing Tools&lt;/em&gt;&lt;/a&gt;, &lt;a href="https://zacs.site/blog/matt-gemmell.html"&gt;caught my attention&lt;/a&gt;, and &lt;a href="http://mattgemmell.com/2013/06/12/ios-7/"&gt;&lt;em&gt;iOS 7&lt;/em&gt;&lt;/a&gt; &lt;a href="https://zacs.site/blog/matt-gemmell-on-ios-7.html"&gt;greatly impressed me&lt;/a&gt;. So, earlier this afternoon, I subscribed to his site; ironically, &lt;a href="http://mattgemmell.com/2013/01/25/the-unfollower/"&gt;The Unfollower&lt;/a&gt; was the first article I read after doing so. Continuing the previously-established trend of excellence, this piece was no exception.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/subscribed-to-matt-gemmell.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 20 Jun 2013 22:54:24 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/subscribed-to-matt-gemmell.html</guid></item><item><title>Persuading David Simon</title><link>https://blog.pinboard.in/2013/06/persuading_david_simon/</link><description>&lt;p&gt;While I don&amp;#8217;t agree with many of the author&amp;#8217;s points, nor do I agree with her overarching theme, she did, however, say a number of interesting things throughout the piece. I tried, for the most part, to stay away from articles written on this topic, but this one is well worth the read.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;The security state operates as a ratchet. Once you click in a new level of surveillance or intrusiveness, it becomes the new baseline. What was unthinkable yesterday becomes permissible in exceptional cases today, and routine tomorrow.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="https://blog.pinboard.in/2013/06/persuading_david_simon/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 20 Jun 2013 22:54:07 GMT</pubDate><guid isPermaLink="true">https://blog.pinboard.in/2013/06/persuading_david_simon/</guid></item><item><title>Urgent: help needed for a Workshop on Open Data in and from schools</title><link>https://stop.zona-m.net/2013/06/urgent-help-needed-for-a-workshop-on-open-data-in-and-from-schools/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Thu, 20 Jun 2013 21:02:24 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/06/urgent-help-needed-for-a-workshop-on-open-data-in-and-from-schools/</guid></item><item><title>What are the Commons anyway? Some answers and thoughts from ECC 2013 in Berlin</title><link>https://stop.zona-m.net/2013/06/what-are-the-commons-anyway-some-answers-and-thoughts-from-ecc-2013-in-berlin/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Thu, 20 Jun 2013 14:22:57 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/06/what-are-the-commons-anyway-some-answers-and-thoughts-from-ecc-2013-in-berlin/</guid></item><item><title>A Marvellous &amp;amp; Incomplete Compendium of reddit Automatons &amp;amp; Bots</title><link>https://duncanlock.net/blog/2013/06/19/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/</link><description>&lt;figure class="image-block"&gt;&lt;a class="image" href="http://openclipart.org/detail/1654/robot-by-johnny_automatic"&gt;&lt;img alt="reddit bots diagram" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-diagram.png" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 1. How much does a software bot weigh, anyway? Heavily modified &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; adapted from the original public domain robot on openclipart, posted by johnny_automatic.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;reddit, the insanely popular internet community, had 71,435,935 unique visitors last month, with over 2,360,783 people logged in &lt;a class="footnote-ref" href="#_footnote_1" id="_footnoteref_1" title="View footnote 1"&gt;[1]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I say people - but it turns out that not all the denizens of reddit are human. There are also bots. Lots and lots of bots. How many? No-one really knows. &lt;a class="footnote-ref" href="#_footnote_2" id="_footnoteref_2" title="View footnote 2"&gt;[2]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is an interesting and somewhat shadowy facet of the otherwise very public reddit community, so I thought I’d take a closer look…​&lt;/p&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_what_is_a_reddit_bot"&gt;What &lt;em&gt;is&lt;/em&gt; a reddit bot?&lt;/h2&gt;&lt;p&gt;A reddit bot is no different from any other user, as far as reddit is concerned. The only difference is that rather than a human logging in to upvote cat pictures and post comments, this account is used by an automated computer script.&lt;/p&gt;
&lt;p&gt;reddit has a captcha system to help prevent automated signups - so the bot’s human creator will need to create a new user account for the bot to use, then program the username and password into the bot, so it can use that account - just like a human would.&lt;/p&gt;
&lt;p&gt;In the same way that computers can run scripts to automatically check weather data and &lt;a href="https://ifttt.com/search/query/umbrella"&gt;send you a message if you should take an umbrella with you today&lt;/a&gt;, a computer can run scripts to automatically check reddit for certain activity - and post comments if certain conditions are met. &lt;a class="footnote-ref" href="#_footnote_3" id="_footnoteref_3" title="View footnote 3"&gt;[3]&lt;/a&gt; A reddit bot does this by doing what your web browser does behind the scenes when you use websites - it makes requests and sends things to the reddit servers.&lt;/p&gt;
&lt;p&gt;reddit also has an &lt;span class="caps"&gt;API&lt;/span&gt; (Application Programming Interface) &lt;a class="footnote-ref" href="#_footnote_4" id="_footnoteref_4" title="View footnote 4"&gt;[4]&lt;/a&gt; which makes it easier for automated external services (including bots) to talk to reddit. This allows bots &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; scrapers to do things in bulk, like “Show me all the new posts in the last hour” – they can then go away, analyze this information and then take actions based on it.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_its_a_hard_bot_life"&gt;It’s a Hard Bot Life&lt;/h2&gt;&lt;p&gt;A major problem for any internet activity at scale is ‘spam’, or similar unwanted activity, in some form or other.&lt;/p&gt;
&lt;p&gt;reddit has scale coming out of its ears, so needs aggressive, pervasive and rapid automated spam control algorithms - combined with extensive human flagging and moderation - just to survive.&lt;/p&gt;
&lt;p&gt;These mechanisms come down on bots particularly hard, to prevent the place being overrun by an army of implacable text hurling machines, typing &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; posting at the speed of light.&lt;/p&gt;
&lt;p&gt;This is a &lt;a href="http://www.reddit.com/r/InternetAMA/comments/1gescq/i_am_tictactoebot_i_derail_threads_and_i_am/"&gt;really nice /r/InternetAmA thread discussing the retirement of TicTacToeBot&lt;/a&gt;, which did exactly what you’d expect:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="reddit bots tictactoebot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-tictactoebot-example.png" /&gt;
&lt;figcaption&gt;Figure 2. The only winning move is not to play.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Some quotes from TicTacToeBots developer:&lt;/p&gt;
&lt;div class="quote-block"&gt;&lt;blockquote&gt;&lt;p&gt;Q: Your account has only existed for 6 days. How have you already been banned from the subreddits?&lt;/p&gt;
&lt;p&gt;A: No clue. Every day I am banned from subreddits. I woke up today, looked at the mail. Banned from circlejerk, cats, and skyrim…​ Those aren’t even default subs. I had to sub to new channels to be any active as a bot.&lt;/p&gt;
&lt;p&gt;Q: You actually got banned from circlejerk &lt;a class="footnote-ref" href="#_footnote_5" id="_footnoteref_5" title="View footnote 5"&gt;[5]&lt;/a&gt;? For derailing threads?!?&lt;/p&gt;
&lt;p&gt;A: Yes&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt;TicTacToeBot got shot down for derailing threads - i.e. for being disruptive. It was &lt;a href="http://www.reddit.com/r/todayilearned/comments/1fzgle/til_that_110_people_once_tied_for_second_prize_in/cafg3xj?context=2"&gt;intentionally designed to randomly pop up and challenge people&lt;/a&gt; to a game - whimsical and fun, but also an uninvited disruption - albeit a harmless good-natured one.&lt;/p&gt;
&lt;p&gt;So unless they’re careful, disruptive bots tend to have a fairly short life on reddit, quickly being hunted down and blocked by reddit’s immune system – even whimsical and seemingly harmless bots, like TicTacToeBot.&lt;/p&gt;
&lt;p&gt;More circumspect bots, like &lt;a href="#_jiffybot"&gt;JiffyBot&lt;/a&gt;, &lt;a href="#_chart_bot"&gt;CHART_BOT&lt;/a&gt; or &lt;a href="#_serendipitybot_rserendipity"&gt;serendipity&lt;/a&gt; - either completely or largely confine themselves to their own subreddits, only turning up elsewhere when invited. This generally means that they’ll be left alone to do their thing, because they’re not interfering with anyone else. They’re also completely upfront about what they do and provide a useful service to the reddit community.&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_workin_on_a_bot_farm"&gt;Workin’ on a Bot Farm&lt;/h3&gt;&lt;p&gt;Bots also take resources to run - both to initially create &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; then to maintain the code - but mainly to provide a computer to run them on &lt;a class="footnote-ref" href="#_footnote_6" id="_footnoteref_6" title="View footnote 6"&gt;[6]&lt;/a&gt;. Bots need a computer to host their code and to lavish &lt;span class="caps"&gt;CPU&lt;/span&gt; cycles running them - reddit doesn’t do this, it’s up to the bots creator to host them somewhere. This generally isn’t free and can eat up quite a lot of computer resources, depending on what the bot does. Bots can get shut down by their creators for lack of resources - time or money - or lack of interest. Pretty much all reddit bots are just created for fun, for learning, or both - sometimes the creator just wants to move on to another project.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_bad_bots_sad_bots"&gt;Bad Bots, Sad Bots&lt;/h3&gt;&lt;p&gt;Some bots are designed to try to behave statistically more like human users &lt;a class="footnote-ref" href="#_footnote_7" id="_footnoteref_7" title="View footnote 7"&gt;[7]&lt;/a&gt;, or to deliberately try to slip under the radar. Some bots are designed to boost the reddit karma &lt;a class="footnote-ref" href="#_footnote_8" id="_footnoteref_8" title="View footnote 8"&gt;[8]&lt;/a&gt; of their masters by pretending to be regular users and up-voting their masters posts and down-voting those who disagree with them. Some bots are designed to start flame wars and generally be mean, virtually.&lt;/p&gt;
&lt;p&gt;This is pretty sad and pathetic…​ so I’m going to ignore them.&lt;/p&gt;
&lt;p&gt;So, without further ado, here’s the compendium, split into &lt;a href="#_bots_that_you_can_summon_with_an_incantation"&gt;Bots that you can Summon with an Incantation&lt;/a&gt; and &lt;a href="#_bots_that_just_show_up_without_human_intervention"&gt;Bots that just Show Up, without human intervention&lt;/a&gt;.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_bots_that_you_can_summon_with_an_incantation"&gt;Bots that you can Summon with an Incantation&lt;/h2&gt;&lt;p&gt;These bots listen out for their summoning incantation to be posted somewhere on reddit, then turn up and do their thing in response:&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_jiffybot"&gt;JiffyBot&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Makes animated GIFs out of YouTube links&lt;/dd&gt;&lt;dt&gt;Creators&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/DrKabob"&gt;/u/DrKabob&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/GoogaNautGod"&gt;/u/GoogaNautGod&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/JiffyBot"&gt;/u/JiffyBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/JiffyBot"&gt;/r/JiffyBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/JiffyBot/comments/1fp9qh/how_do_i_summon_jiffy_bot/"&gt;JiffyBot Documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/JiffyBot/comments/1fvrsq/the_official_make_your_own_gif_verison_sfw/"&gt;JiffyBot in Action&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/JiffyBot/comments/1fwo0y/jiffy_bot_feedback_and_questions_faq/"&gt;JiffyBot &lt;span class="caps"&gt;FAQ&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/l1am9111/JiffyBot"&gt;JiffyBot Source Code&lt;/a&gt; - &lt;span class="caps"&gt;NB&lt;/span&gt; this is an orphaned fork of the original GitHub code repository; I’m currently trying to find out what happened to the original.&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;1 link karma&lt;/li&gt;&lt;li&gt;30,173 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;16 days&lt;/dd&gt;&lt;dt&gt;Active Subreddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 33.6633%;" /&gt;&lt;col style="width: 35.6435%;" /&gt;&lt;col style="width: 30.6932%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/JiffyBot&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;333 (391)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/cringe&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;92 (614)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/tf2&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;45 (315)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gaming&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;40 (418)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/youtubehaiku&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;36 (173)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/leagueoflegends&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;27 (73)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/funny&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;27 (434)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/YouShouldKnow&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;27 (28)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/SeeThisShit&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;22 (22)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/DotA2&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;17 (35)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/starcraft&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;15 (96)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/hockey&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;12 (7)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/atheism&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;10 (221)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Summon by posting a link to a YouTube video, then writing &lt;code&gt;Jiffy!&lt;/code&gt; followed by a start time and end time, in either of these forms:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="n"&gt;Jiffy&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;07&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;JiffyBot&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The second form is apparently more reliable.&lt;/p&gt;
&lt;p&gt;The bot will respond by replying to your comment, with a comment of it’s own, containing an &lt;a href="http://imgur.com/"&gt;imgur.com&lt;/a&gt; link to an animated &lt;span class="caps"&gt;GIF&lt;/span&gt; of that video, for the time period you specified. This is great for people on mobile devices - animated GIFs load &lt;em&gt;much&lt;/em&gt; quicker than YouTube.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="reddit bots jiffybot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-jiffybot-example.png" /&gt;
&lt;figcaption&gt;Figure 3. JiffyBot in action: it can also do multiple GIFs!&lt;/figcaption&gt;&lt;/figure&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_bitcointip"&gt;BitcoinTip&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;The bitcointip bot allows redditors to tip each other ‘real’ money, just by leaving a reddit comment or message.&lt;/dd&gt;&lt;dt&gt;Human Creator&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/NerdfighterSean"&gt;/u/NerdfighterSean&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/bitcointip"&gt;/u/bitcointip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/bitcointip"&gt;/r/bitcointip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/bitcointip/comments/13iykn/_bitcointipdocumentation/"&gt;BitcoinTip Documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://imgur.com/CwDYZqW"&gt;BitcoinTip Quickstart Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/NerdfighterSean/bitcointip"&gt;Source Code&lt;/a&gt; - rather out of date.&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;9 link karma&lt;/li&gt;&lt;li&gt;11,906 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;1 year&lt;/dd&gt;&lt;dt&gt;Source Code&lt;/dt&gt;&lt;dd&gt;&lt;a href="https://github.com/NerdfighterSean/bitcointip"&gt;https://github.com/NerdfighterSean/bitcointip&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;Active Subreddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 35%;" /&gt;&lt;col style="width: 35%;" /&gt;&lt;col style="width: 30%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/Bitcoin&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;368 (813)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/GirlsGoneBitcoin&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;51 (59)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/worldnews&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;36 (133)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/IAmA&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;30 (81)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/AskReddit&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;30 (88)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/bitcointip&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;29 (49)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/pics&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;20 (136)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/technology&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;13 (134)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/AdviceAnimals&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;12 (23)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/investing&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;11 (43)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gaming&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;11 (241)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/tf2&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;10 (145)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/starcraft&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;10 (205)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The bot scans user comments and messages for tips of the form:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;+/u/bitcointip @RedditUsername $1
+/u/bitcointip @Username $1usd
+/u/bitcointip BitcoinAddress 1 millibit
+/u/bitcointip Username ฿0.001 verify
+/u/bitcointip $1 # This tips 1 usd to whoever posted the comments parent
+/u/bitcointip BitcoinAddress ALL # This sends your entire balance to that bitcoin address
+/u/bitcointip 2 internets # An "internet" is worth $0.25&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You have to setup a bitcointip tip account in advance and put some funds into it. It then sends the specified amount of bitcoins from the sender’s bitcointip account, to the receiver’s bitcointip account. Supports lots of different currencies, which get converted to bitcoin automatically.&lt;/p&gt;
&lt;p&gt;Allows you to tip people for useful or awesome comments, in a very natural and low friction way:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="http://en.wikipedia.org/wiki/Adam_Savage"&gt;&lt;img alt="reddit bots bitcointip example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-bitcointip-example.png" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 4. BitcoinTip in action: Adam Savage gets tipped. Yes that Adam Savage.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_chart_bot"&gt;CHART_BOT&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Automatically generates and posts a chart of your posting history - or someone else’s.&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/CHART_BOT"&gt;/u/CHART_BOT&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/CHART_BOT"&gt;/r/CHART_BOT&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Active SubReddits&lt;/dt&gt;&lt;dd&gt;Overwhelmingly active in it’s own subreddit, but has been known to pop-up elsewhere, for the lulz:&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 45%;" /&gt;&lt;col style="width: 30%;" /&gt;&lt;col style="width: 25%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/CHART_BOT&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;1 (2)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;931 (1063)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/&lt;span class="caps"&gt;WTF&lt;/span&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;19 (13)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/wheredidthesodago&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;14 (-14)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/science&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;13 (13)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/TheLastAirbender&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;12 (20)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;3 link karma&lt;/li&gt;&lt;li&gt;5,686 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;8 months&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;p&gt;Making a submission &lt;a href="http://www.reddit.com/r/CHART_BOT"&gt;to this subreddit&lt;/a&gt; will cause CHART_BOT to automatically generate and post a chart of your reddit posting history. You can also request charts of other reddit users by putting their username prefixed with an @ in the title of your submission. The charts look like this - &lt;a href="http://www.reddit.com/r/CHART_BOT/comments/1gdpu9/chart_me_up_baby/"&gt;here’s mine&lt;/a&gt;:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="Screenshot of CHART_BOTS output for duncanlock, as of June 2013." src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/duncan-locks-chart-bot-chart-june-2013.png" /&gt;&lt;/div&gt;
&lt;p&gt;CHART_BOT also produces some graphs of activity which are quite interesting. Here are the ‘Posts Over Time’ ones for me (on the left) and chartbot (on the right). You can clearly see the characteristic posting pattern of humans (irregular) vs. bots (regular):&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="Two scatter plots of reddit postings, over time. Left one for human user duncanlock, right one for chart_bot." src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-duncanlock-chartbot-postings-over-time-graph.png" /&gt;
&lt;figcaption&gt;Figure 5. Fairly typical human reddit user (left) vs bot (right). Bot scripts are often run on a regular schedule - e.g. once an hour, every 10 minutes, etc…​ - which explains the regular patterns of activity.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_bots_that_just_show_up_without_human_intervention"&gt;Bots that just Show Up, without human intervention&lt;/h2&gt;&lt;p&gt;These bots ceaselessly scan the endless, mighty cataract of text that is reddit and leap in whenever they sense patterns in the noise &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; spume that match their programming.&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_raddit_bot"&gt;raddit-bot&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Shares (most of) the data about the posts it sees being used on &lt;a href="http://radd.it/"&gt;radd.it&lt;/a&gt;. Currently it’s sharing a combination of data from youtube, soundcloud, vimeo, last.fm, IMDb, and amazon; only comments in subreddits it’s been invited to.&lt;/dd&gt;&lt;dt&gt;Human Creator&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/radd_it"&gt;/u/radd_it&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/raddit-bot"&gt;/u/raddit-bot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/radd_it"&gt;/r/raddit-bot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/radd_it/comments/1gxa85/who_is_uradditbot_and_why_is_it_commenting_here/"&gt;raddit-bot &lt;span class="caps"&gt;FAQ&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;1915 link karma&lt;/li&gt;&lt;li&gt;376 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;1 month&lt;/dd&gt;&lt;dt&gt;Active Subreddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 35%;" /&gt;&lt;col style="width: 35%;" /&gt;&lt;col style="width: 30%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/listentothis&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;765 (1109)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/FullMoviesOnline&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;352 (764)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;213 (215)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/listentonew&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;51 (55)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/&lt;span class="caps"&gt;VBT&lt;/span&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;1 (1)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/Music&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;1 (2)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Raddit-bot is a helpful bot that posts information when you post a link to a piece of media that’s been on &lt;a href="http://radd.it/"&gt;radd.it&lt;/a&gt;. It’s posts look like this, sharing a wealth of links and information about things that people have linked to:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="reddit bots radditbot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-radditbot-example.png" /&gt;&lt;/div&gt;
&lt;p&gt;Discovered this bot while browsing &lt;a href="http://www.reddit.com/r/listentothis"&gt;/r/listentothis&lt;/a&gt; - which in turn led me to discover &lt;a href="http://radd.it/"&gt;radd.it&lt;/a&gt;; I’m currently trying to resist getting distracted by radd.it itself.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_haiku_robot"&gt;haiku_robot&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Watches reddit for comments that would qualify as Haiku &lt;a class="footnote-ref" href="#_footnote_9" id="_footnoteref_9" title="View footnote 9"&gt;[9]&lt;/a&gt; and posts a reply, with the original text reformatted into 3 lines of 5, 7 &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; 5 syllables.&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/u/haiku_robot"&gt;/u/haiku_robot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/IAmA/comments/1fr7c5/beep_boop_beep_boop_bopiama_haiku_robotask_me/"&gt;haiku_robot &lt;span class="caps"&gt;FAQ&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;1 link karma&lt;/li&gt;&lt;li&gt;104,473 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;1 year&lt;/dd&gt;&lt;dt&gt;Active Subreddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 36%;" /&gt;&lt;col style="width: 34%;" /&gt;&lt;col style="width: 30%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/funny&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;284 (2580)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/pics&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;199 (1239)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/AdviceAnimals&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;126 (619)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gaming&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;90 (501)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/&lt;span class="caps"&gt;WTF&lt;/span&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;56 (618)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/todayilearned&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;25 (115)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/IAmA&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;1 (8)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;23 (99)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gifs&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;23 (164)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/videos&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;22 (77)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/leagueoflegends&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;15 (404)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/mildlyinteresting&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;15 (28)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gonewild&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;10 (116)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/technology&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;10 (13)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;Plus 45 more…​&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;This seems to be quite popular, with lots of very highly upvoted comments - like this one:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="reddit bots haikubot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-haikubot-example.png" /&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_metric_system_converting_bot"&gt;Metric System Converting bot&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;When it sees a post using Imperial/&lt;span class="caps"&gt;US&lt;/span&gt; units, it replies with a conversion to their Metric equivalents.&lt;/dd&gt;&lt;dt&gt;Human Creator&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/xwcg"&gt;/u/xwcg&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/MetricConversionBot"&gt;/u/MetricConversionBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/MetricConversionBot"&gt;/r/MetricConversionBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/MetricConversionBot/comments/1f53fw/faq/"&gt;MetricConversionBot &lt;span class="caps"&gt;FAQ&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;239 link karma&lt;/li&gt;&lt;li&gt;26,779 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;27 days&lt;/dd&gt;&lt;dt&gt;Active Subreddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 31.6831%;" /&gt;&lt;col style="width: 36.6336%;" /&gt;&lt;col style="width: 31.6833%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/AdviceAnimals&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;1 (285)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;538 (4160)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/pics&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;94 (1878)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/todayilearned&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;68 (625)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gaming&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;63 (65)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/videos&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;44 (493)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gifs&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;15 (258)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/politics&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;15 (230)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/progresspics&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;10 (92)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;MetricConversionBot will convert the following units to their metric equivalents:&lt;/p&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;Pounds (lbs) to Kilograms&lt;/li&gt;&lt;li&gt;Miles to Kilometers&lt;/li&gt;&lt;li&gt;Miles per hour to Kilometers per Hour&lt;/li&gt;&lt;li&gt;Foot/Feet to Meters&lt;/li&gt;&lt;li&gt;Kelvin to Celsius&lt;/li&gt;&lt;li&gt;Fahrenheit to Celsius&lt;/li&gt;&lt;li&gt;inch to cm&lt;/li&gt;&lt;li&gt;yard to meters&lt;/li&gt;&lt;li&gt;(&lt;span class="caps"&gt;US&lt;/span&gt;) fl. oz. to ml&lt;/li&gt;&lt;li&gt;ounces to grams&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;and it leaves comments that look like this:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="reddit bots metricconversionbot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-metricconversionbot-example.png" /&gt;&lt;/div&gt;
&lt;p&gt;This bot is a (&lt;a href="http://www.reddit.com/r/TheoryOfReddit/comments/1fop0k/why_is_umetricmonversionmot_succeeding_while_usi/"&gt;more popular&lt;/a&gt;) successor to the deceased &lt;a href="http://www.reddit.com/user/si_bot"&gt;SI_BOT&lt;/a&gt;. Interestingly, MetricConversionBot has attracted it’s own parody bots, &lt;a href="http://www.reddit.com/user/MetricConversionNot"&gt;MetricConversionNot&lt;/a&gt; - which randomly makes similar looking, but factually inaccurate parody comments (somewhat similar to the older, inactive parody bot &lt;a href="http://www.reddit.com/user/Lord-Longbottom"&gt;Lord_Longbottom&lt;/a&gt;) and &lt;a href="http://www.reddit.com/user/UselessConversionBot"&gt;UselessConversionBot&lt;/a&gt;:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="reddit bots uselessconversionbot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-uselessconversionbot-example.png" /&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_website_mirror_bot"&gt;Website Mirror bot&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Mirrors websites that go down from the traffic surge, due to being posted on reddit.&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/Website_Mirror_Bot"&gt;/u/Website_Mirror_Bot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/Website_Mirror_Bot"&gt;/r/Website_Mirror_Bot&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;1 link karma&lt;/li&gt;&lt;li&gt;9,946 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;20 days&lt;/dd&gt;&lt;dt&gt;Active Subreddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 33.6633%;" /&gt;&lt;col style="width: 35.6435%;" /&gt;&lt;col style="width: 30.6932%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/todayilearned&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;29 (6391)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/politics&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;17 (870)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/worldnews&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;15 (1021)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/technology&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;8 (203)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/Bitcoin&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;4 (25)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/atheism&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;4 (2299)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/starcraft&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;4 (50)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/conspiracy&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;4 (15)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/leagueoflegends&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;3 (109)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Takes a (generally very tall) &lt;a href="http://i.imgur.com/MyiPyDE.jpg"&gt;screenshot&lt;/a&gt; of the page that was linked to, puts it on imgur.com and posts a link in a comment:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="reddit bots websitemirrorbot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-websitemirrorbot-example.png" /&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_tabledresser"&gt;tabledresser&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Automatically generates a summary table from an &lt;a href="http://www.reddit.com/r/IAmA/"&gt;AmA thread&lt;/a&gt;, showing all answered questions, along with their answers.&lt;/dd&gt;&lt;dt&gt;Human Creator&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/u/epsy"&gt;/u/epsy&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/tabledresser"&gt;/u/tabledresser&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/tabled"&gt;/r/tabled&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;4 link karma&lt;/li&gt;&lt;li&gt;8,857 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;1 year&lt;/dd&gt;&lt;dt&gt;Source Code&lt;/dt&gt;&lt;dd&gt;&lt;a href="https://github.com/epsy/tabledresser"&gt;https://github.com/epsy/tabledresser&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;Active Subreddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 29%;" /&gt;&lt;col style="width: 38%;" /&gt;&lt;col style="width: 33%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/tabled&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;1000 (9253)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/IAmA&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;970 (4377)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/InternetAMA&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;19 (62)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/tf2trade&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;2 (4)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;It posts the first few rows in the actual AmA thread, with a link to the full table that it posts to &lt;a href="http://www.reddit.com/r/tabled"&gt;/r/tabled&lt;/a&gt;. This provides a great way to quickly read a condensed summary of a complete AmA thread, &lt;a href="http://www.reddit.com/r/tabled/comments/1g9nja/table_iama_i_am_james_bamford_one_of_the/"&gt;like this one&lt;/a&gt;. They look something like this:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="reddit bots tabledresserbot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-tabledresserbot-example.png" /&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_videolinkbot"&gt;VideoLinkBot&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Posts a summary of all video links in a discussion, kept up to date as the discussion grows.&lt;/dd&gt;&lt;dt&gt;Human Creator&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/shaggorama"&gt;/u/shaggorama&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/VideoLinkBot"&gt;/u/VideoLinkBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/VideoLinkBot/"&gt;/r/VideoLinkBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/VideoLinkBot/wiki/faq"&gt;VideoLinkBot &lt;span class="caps"&gt;FAQ&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;25 link karma&lt;/li&gt;&lt;li&gt;49,423 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;4 months&lt;/dd&gt;&lt;dt&gt;Source Code&lt;/dt&gt;&lt;dd&gt;&lt;a href="https://github.com/dmarx/VideoLinkBot"&gt;https://github.com/dmarx/VideoLinkBot&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;Active Subreddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 40%;" /&gt;&lt;col style="width: 32%;" /&gt;&lt;col style="width: 28%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/videos&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;126 (343)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gaming&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;93 (167)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/hiphopheads&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;1 (0)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;48 (123)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/leagueoflegends&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;47 (118)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/todayilearned&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;41 (69)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/movies&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;23 (66)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/nfl&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;21 (86)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/nba&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;18 (32)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/politics&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;18 (19)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/Random_Acts_Of_Amazon&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;4 (98)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;13 (21)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/WhereDoIStart&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;16 (36)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/hockey&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;15 (39)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/SquaredCircle&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;15 (43)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/worldnews&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;14 (27)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/IAmA&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;12 (263)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/&lt;span class="caps"&gt;CFB&lt;/span&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;12 (33)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/DotA2&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;12 (28)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/tipofmytongue&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;12 (14)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/teenagers&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;11 (21)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/VideoLinkBot&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;11 (17)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/atheism&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;10 (11)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/Guitar&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;9 (45)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;VideoLinkBot scans for comments containing supported video links. When it finds one, it scans the discussion that comment belongs to for video links. It then posts the aggregate links it has found to a comment. If it’s already visited this discussion, it will update its existing comment with whatever new links it finds. Video links are sorted by the score of the comment they came from.&lt;/p&gt;
&lt;p&gt;If the bot doesn’t see a certain number of links or all the links the bot sees were posted by the same user, the it won’t post a comment. Also, if a discussion has too few or too many comments, this bot will leave it alone.&lt;/p&gt;
&lt;p&gt;This provides a useful summary of a wide ranging discussion, in a similar way to &lt;a href="#_tabledresser"&gt;tabledresser&lt;/a&gt; does for AmA threads. The comments it leaves look like this:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="Screenshot of a comment made by VideoLinkBot, showing the table of aggregated video links, with links to the Source Comment &amp;amp; Video Link, showing the score of each original comment." src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-videolinkbot-example.png" /&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_meme_transcriber"&gt;meme_transcriber&lt;/h3&gt;&lt;aside class="admonition-block note"&gt;&lt;h6 class="block-title label-only"&gt;&lt;span class="title-label"&gt;Note: &lt;/span&gt;&lt;/h6&gt;&lt;p&gt;reddit &lt;a href="http://www.reddit.com/r/AdviceAnimals/comments/1gvnk4/quickmeme_is_banned_redditwide_more_inside/"&gt;banned quickmeme.com&lt;/a&gt; for vote rigging on 22nd June 2013, which &lt;a href="http://www.reddit.com/r/qkme_transcriber/comments/1gvz3z/about_the_banning_of_quickmeme_links/"&gt;ended the career of this bots former incarnation, qkme_transcriber&lt;/a&gt;.&lt;/p&gt;&lt;/aside&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Automatically finds links to meme pics (memegen.com) and provides a plain-text transcript of the content of that meme in a comment, so you don’t have to click through to the meme site to get the ‘joke’. Useful on mobile devices or if the meme site goes down.&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/meme_transcriber"&gt;/u/meme_transcriber&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/meme_transcriber/"&gt;/r/meme_transcriber&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/qkme_transcriber"&gt;/u/qkme_transcriber&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/qkme_transcriber/"&gt;/r/qkme_transcriber&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/qkme_transcriber/comments/o426k/faq_for_the_qkme_transcriber_bot/"&gt;meme_transcriber &lt;span class="caps"&gt;FAQ&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;286 link karma&lt;/li&gt;&lt;li&gt;340,954 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;1 year&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;p&gt;This bot tends to turn up in subreddits like &lt;a href="http://www.reddit.com/r/AdviceAnimals/"&gt;/r/AdviceAnimals/&lt;/a&gt; and post comments that look like this:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="reddit bots meme transcriber bot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-meme-transcriber-bot-example.png" /&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_ytscreenshotbot"&gt;YTScreenShotBot&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Creates a screenshot montage of a YouTube video and posts a link to it, in reply to posts containing YouTube links.&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/YTScreenShotBot"&gt;/u/YTScreenShotBot&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Active SubReddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 22%;" /&gt;&lt;col style="width: 42%;" /&gt;&lt;col style="width: 36%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/videos&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;420 (2551)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/pics&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;300 (3843)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gaming&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;280 (302)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;1 link karma&lt;/li&gt;&lt;li&gt;15,475 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;25 days&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;p&gt;This bot allows you to get a quick overview of the video, just by viewing an image - much quicker than watching the video, especially on mobile devices. This is what it’s comments look like:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="reddit bots ytscreenshotbot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-ytscreenshotbot-example.png" /&gt;&lt;/div&gt;
&lt;p&gt;and this is what the montage looks like:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="M2XOpjb" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/M2XOpjb.jpg" /&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_jordanthebrobot"&gt;JordanTheBrobot&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;A sophisticated Multi-purpose bot that patrols reddit looking for scams, misleading links, mistakes in markup, kindness, flash content, etc…​&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/JordanTheBrobot"&gt;/u/JordanTheBrobot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jordanthebrobot.com/"&gt;JordanTheBrobot &lt;span class="caps"&gt;HQ&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;1 link karma&lt;/li&gt;&lt;li&gt;36,879 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;8 months&lt;/dd&gt;&lt;dt&gt;Active Subreddits&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 31.6831%;" /&gt;&lt;col style="width: 36.6336%;" /&gt;&lt;col style="width: 31.6833%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Subreddit&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Submissions (karma)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Comments (karma)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gaming&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;193 (4614)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/videos&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;71 (1808)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/todayilearned&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;36 (221)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/gonewild&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;32 (34)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/pics&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;27 (277)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/AdviceAnimals&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;14 (212)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/ginger&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;14 (33)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/Bitcoin&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;13 (80)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/worldnews&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;13 (68)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/movies&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;0&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;12 (49)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;/r/brobot&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;5 (36)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;3 (3)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;This bots most user visible function is to detect when people have got the markdown syntax for links the wrong way round (a very common mistake), and if they don’t correct it themselves within a few minutes, leave a reply with the corrected links:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="reddit bots jordanthebrobot example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-jordanthebrobot-example.png" /&gt;&lt;/div&gt;
&lt;p&gt;It also detects ‘spam/affiliate marketing’ links and leaves a reply warning people:&lt;/p&gt;
&lt;div class="quote-block"&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Spam Link&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The comment above contains a link to a spam site, click with caution, your clicks will earn a spammer money and give them motivation to continue.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt;This bot also has &lt;a href="http://jordanthebrobot.com/moderators"&gt;moderator functionality&lt;/a&gt;, if you add it as a moderator of a subreddit, it will automatically:&lt;/p&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;Follows all links posted to all subreddits to identify dangerous redirect chains&lt;/li&gt;&lt;li&gt;Scans comments/submissions/redirect chains for spam domains&lt;/li&gt;&lt;li&gt;Detects and warns users of mismatched domains in reddit link markup &lt;span class="caps"&gt;IE&lt;/span&gt;: [&lt;a class="bare" href="http://test.com"&gt;http://test.com&lt;/a&gt;](&lt;a href="http://not-really-test.com"&gt;http://test.com&lt;/a&gt;(&lt;a class="bare" href="http://not-really-test.com"&gt;http://not-really-test.com&lt;/a&gt;])&lt;/li&gt;&lt;li&gt;Detects and waits 6 minutes to post a fix of mistakes in reddit link markup (for ease of clicking)&lt;/li&gt;&lt;li&gt;Warns users of unapparent links to flash content&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;It also upvotes the original commenter if it corrects you links and upvotes you if you thank it - which might help it’s popularity. It also has a real time &lt;a href="http://jordanthebrobot.com/"&gt;dashboard&lt;/a&gt; which lets you see what it’s up to.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_serendipitybot_rserendipity"&gt;SerendipityBot &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; /r/Serendipity&lt;/h3&gt;&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Purpose&lt;/dt&gt;&lt;dd&gt;Cross posts a popular submission from a random subreddit to &lt;a href="http://www.reddit.com/r/Serendipity/"&gt;/r/Serendipity&lt;/a&gt; every few hours&lt;/dd&gt;&lt;dt&gt;Home Base&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/serendipitybot"&gt;/u/serendipitybot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/Serendipity/"&gt;/r/Serendipity&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;Current Karma&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;37,027 link karma&lt;/li&gt;&lt;li&gt;2,641 comment karma&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;A Redditor for&lt;/dt&gt;&lt;dd&gt;2 years&lt;/dd&gt;&lt;dt&gt;Source Code&lt;/dt&gt;&lt;dd&gt;&lt;a href="https://github.com/umbrae/Serendipity"&gt;https://github.com/umbrae/Serendipity&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;figure class="image-block"&gt;&lt;img alt="reddit bots serendipity example" src="https://duncanlock.net/images/posts/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/reddit-bots-serendipity-example.png" /&gt;
&lt;figcaption&gt;Figure 6. Slice of life, reddit style.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I discovered this bot &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; subreddit combo while writing this article and it’s quickly become one of my favourites. &lt;a href="http://www.reddit.com/r/Serendipity/"&gt;/r/Serendipity&lt;/a&gt; is a meta-subreddit meant to broaden the perspective of its subscribers. It chooses a popular post from a completely random subreddit and posts it every few hours, so if you subscribe to it, you get a broad, random, serendipitous sprinkling of great content from across reddit on your front page – often surprising, wonderful things that you would otherwise never have come across. As the sidebar says:&lt;/p&gt;
&lt;div class="quote-block"&gt;&lt;blockquote&gt;&lt;p&gt;If you want to increase your exposure to niche subreddits, or just your perspective on things on the web in general, serendipity might help you do that. But it might not. It’s a bot, after all.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;NB&lt;/span&gt;&lt;/strong&gt;: Occasionally, just by chance, a random post might be &lt;span class="caps"&gt;NSFW&lt;/span&gt; (Not Safe for Work) or &lt;span class="caps"&gt;NSFL&lt;/span&gt; (Not Safe for Life - i.e. ugh, wish I could un-see.), but not very often. I asked the bots creator, &lt;a href="http://www.reddit.com/user/umbrae"&gt;/u/umbrae&lt;/a&gt;, if it did any filtering - this is what he said:&lt;/p&gt;
&lt;div class="quote-block"&gt;&lt;blockquote&gt;&lt;p&gt;It’s actually a bit complicated: It does technically filter out &lt;span class="caps"&gt;NSFW&lt;/span&gt; subreddits, but does not necessarily filter out &lt;span class="caps"&gt;NSFW&lt;/span&gt; posts from subreddits that are not marked &lt;span class="caps"&gt;NSFW&lt;/span&gt;. So you’ll occasionally get a &lt;span class="caps"&gt;NSFW&lt;/span&gt; post here and there. There are also a few subs that have asked to be opted out for privacy /audience concerns. – &lt;a href="http://www.reddit.com/user/umbrae"&gt;/u/umbrae&lt;/a&gt;, in &lt;a href="http://www.reddit.com/r/explainlikeimfive/comments/1icm90/eli5_how_do_bots_on_reddit_work_how_are_they/cb3l4av"&gt;this comment&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_other_interesting_bots"&gt;Other Interesting Bots&lt;/h2&gt;&lt;p&gt;I don’t have time to cover all the multitude of great bots on reddit - here’s some other useful or fun ones to checkout:&lt;/p&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/SmileBot"&gt;SmileBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/DollarSignBot"&gt;DollarSignBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/F1-Bot"&gt;F1-Bot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/smidsy_bot"&gt;RideItBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/SimilarImage"&gt;SimilarImage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/original-finder"&gt;original-finder&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/Australian_Translate"&gt;Australian_Translate&lt;/a&gt; and his Arch Nemesis: &lt;a href="http://www.reddit.com/user/FIXES_YOUR_COMMENT"&gt;FIXES_YOUR_COMMENT&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/RepostConspiracyBot"&gt;RepostConspiracyBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/CaptionBot"&gt;CaptionBot&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;Another whole &lt;em&gt;category&lt;/em&gt; of bots, that I didn’t have time to go into, are Moderator Bots - designed to assist the human moderators of reddit with their ceaseless work, by automating some of the mechanical stuff:&lt;/p&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/automoderator"&gt;AutoModeratorBot&lt;/a&gt; - very widely used now &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; also open source: &lt;a href="https://github.com/Deimos/AutoModerator/wiki/Features"&gt;more information here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/moderator-bot"&gt;moderator-bot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/atheismbot"&gt;atheismbot&lt;/a&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; &lt;a href="http://reddit.com/r/atheismbot/wiki/faq"&gt;atheismbot &lt;span class="caps"&gt;FAQ&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/u/DeltaBot"&gt;DeltaBot&lt;/a&gt; is part of the bot moderation team at &lt;a href="http://www.reddit.com/r/changemyview/"&gt;/r/changemyview&lt;/a&gt;. It adds a special feature to the subreddit that allows users to awards deltas (∆) to each other.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_ex_bots"&gt;Ex-Bots?&lt;/h2&gt;&lt;p&gt;Some interesting bots who seem to be ex-bots – or maybe they’re just resting:&lt;/p&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/Meta_Bot"&gt;Meta_Bot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/canhekickit"&gt;canhekickit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/QualityEnforcer"&gt;QualityEnforcer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/PoliticalBot"&gt;PoliticalBot&lt;/a&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; &lt;a href="http://www.reddit.com/r/AnalyzingReddit"&gt;AnalyzingReddit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/Match-Thread-Bot"&gt;Match-Thread-Bot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/linkfixerbot"&gt;LinkFixerBot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/tweet_poster"&gt;tweet_poster&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/Karmangler"&gt;Karmangler&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/autotldr"&gt;autotldr&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/user/CONGRATS_GUY"&gt;CONGRATS_GUY&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/r/qkme_transcriber/comments/1gvz3z/about_the_banning_of_quickmeme_links/"&gt;qkme_transcriber&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;p&gt;Know of any more interesting &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; fun reddit bots? Let me know in the comments…​&lt;/p&gt;
&lt;hr /&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_footnotes_references"&gt;Footnotes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; References&lt;/h3&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class="footnotes"&gt;&lt;hr /&gt;&lt;ol class="footnotes"&gt;&lt;li class="footnote" id="_footnote_1"&gt;&lt;a href="http://www.reddit.com/about/"&gt;About reddit, including some mind boggling statistics&lt;/a&gt;. &lt;a class="footnote-backref" href="#_footnoteref_1" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_2"&gt;How many bots? No one really knows. &lt;a href="https://praw.readthedocs.org/en/latest/"&gt;How to create a reddit bot&lt;/a&gt;. This being reddit, there’s &lt;a href="http://www.reddit.com/r/botwatch"&gt;a community&lt;/a&gt; to keep an eye on them, too - and &lt;a href="http://www.reddit.com/r/TheoryOfReddit/"&gt;/r/TheoryOfReddit&lt;/a&gt; do &lt;a href="http://www.reddit.com/r/TheoryOfReddit/comments/187n3n/reddit_has_bots_but_what_kinds_of_bots_are_there/"&gt;sometimes&lt;/a&gt; &lt;a href="http://www.reddit.com/r/TheoryOfReddit/comments/1586yk/should_reddit_regulate_bots/"&gt;discuss&lt;/a&gt; bots. Well, &lt;a href="http://www.reddit.com/r/TheoryOfReddit/comments/m5t1s/a_worrying_trend_for_reddits_bots/"&gt;actually&lt;/a&gt; they &lt;a href="http://www.reddit.com/r/IAmA/comments/kglw8/we_are_the_creators_of_the_automated_bots_on/"&gt;talk&lt;/a&gt; &lt;a href="http://www.reddit.com/r/TheoryOfReddit/comments/k7xjw/lets_talk_about_bots/"&gt;about&lt;/a&gt; bots &lt;a href="http://www.reddit.com/r/TheoryOfReddit/search?q=bot&amp;amp;restrict_sr=on"&gt;quite a lot&lt;/a&gt;. &lt;a class="footnote-backref" href="#_footnoteref_2" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_3"&gt;This is mostly quoted from the excellent qkme_transcriber bot’s &lt;span class="caps"&gt;FAQ&lt;/span&gt;, &lt;a href="http://www.reddit.com/r/qkme_transcriber/comments/o426k/faq_for_the_qkme_transcriber_bot/"&gt;here&lt;/a&gt;. &lt;a class="footnote-backref" href="#_footnoteref_3" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_4"&gt;*&lt;span class="caps"&gt;API&lt;/span&gt;*: An agreed way for one piece of software to talk to another. Often consists of functions you can call with parameters, that return different peices of information - or perform different actions - depending on the value of the parameters. In the case of websites, the functions map to &lt;span class="caps"&gt;URL&lt;/span&gt;’s - pages that you can request, with the parameters on the end of the &lt;span class="caps"&gt;URL&lt;/span&gt;. *Why does reddit have an &lt;span class="caps"&gt;API&lt;/span&gt;?* Well, people would find a way to get the same information somehow - often by brute force (acting like a very fast human making lots of requests) - which puts more strain on reddit’s servers than just giving the data out in one go, on request - it also means that they get to set the rules when they make the &lt;span class="caps"&gt;API&lt;/span&gt;. &lt;a class="footnote-backref" href="#_footnoteref_4" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_5"&gt;&lt;a href="http://www.reddit.com/r/circlejerk/top/"&gt;/r/circlejerk&lt;/a&gt; is a subreddit dedicated entirely to reddit satire. It’s full of ‘parodies’ of ‘karma whoring’ posts and ‘parodies’ of endless pun threads. The thought that they have rigorous standards and actually kick people out for breaking them is almost funny in itself. &lt;a class="footnote-backref" href="#_footnoteref_5" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_6"&gt;&lt;a href="http://www.reddit.com/r/redditdev/comments/1ixqu0/praw_where_do_you_all_host_your_pythonbased_bots/"&gt;/r/redditdev/ thread: Where do you all host your python-based bots?&lt;/a&gt; - turns out YTScreenhostBot is hosted on an old laptop. &lt;a class="footnote-backref" href="#_footnoteref_6" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_7"&gt;&lt;a href="http://www.reddit.com/r/TheoryOfReddit/comments/tiqqg/how_easily_could_a_computer_program_emulate_the/"&gt;How easily could a computer program emulate the average reddit commenter?&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_7" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_8"&gt;Internet Points! reddit has a system called &lt;a href="http://www.reddit.com/wiki/faq#wiki_what_is_that_number_next_to_usernames.3F_and_what_is_karma.3F"&gt;Karma&lt;/a&gt; : “The number next to a username is called that user’s “karma.” It reflects how much good the user has done for the reddit community. The best way to gain karma is to submit links that other people like and vote for.” &lt;a class="footnote-backref" href="#_footnoteref_8" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_9"&gt;&lt;a href="http://en.wikipedia.org/wiki/Haiku"&gt;Haiku&lt;/a&gt;: In English, Haiku are traditionally three line verses, each line having 5, 7 &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; 5 syllables respectively. &lt;a class="footnote-backref" href="#_footnoteref_9" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Thu, 20 Jun 2013 05:48:54 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/06/19/a-marvellous-incomplete-compendium-of-reddit-automatons-bots/</guid></item><item><title>The Quilt of our Lives</title><link>https://xavd.id/blog/post/the-quilt-of-our-lives/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/the-quilt-of-our-lives/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Thu, 20 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/the-quilt-of-our-lives/</guid></item><item><title>iOS 7 and Apps With Personality</title><link>http://shawnblanc.net/2013/06/ios-7-and-apps-with-personality/</link><description>&lt;p&gt;&amp;#8220;What makes an app great is the little things &amp;#160;&amp;#8212;&amp;#160; the small details that take something normal and turn it into something extraordinary. I see iOS 7 as a blank canvas &amp;#160;&amp;#8212;&amp;#160; an &amp;#8216;un-design&amp;#8217; if you will. The goal of a 3rd-party isn&amp;#8217;t to copy the stock apps pixel for pixel (that wasn&amp;#8217;t the goal for iOS 1-6, and it&amp;#8217;s not the goal now). Rather this is Apple saying it&amp;#8217;s time to re-imagine what mobile software should look and act like. Five-hundred million people are using iOS devices, and it&amp;#8217;s time for the training wheels to come off.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Marco Arment made a similar point in is article &lt;a href="http://www.marco.org/2013/06/11/fertile-ground"&gt;&lt;em&gt;Fertile Ground&lt;/em&gt;&lt;/a&gt;. As I said in &lt;a href="https://zacs.site/blog/fertile-ground.html"&gt;my link to the piece&lt;/a&gt;, I&amp;#8217;m very excited for this Fall.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://shawnblanc.net/2013/06/ios-7-and-apps-with-personality/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 20 Jun 2013 01:06:04 GMT</pubDate><guid isPermaLink="true">http://shawnblanc.net/2013/06/ios-7-and-apps-with-personality/</guid></item><item><title>Encyclopedia of Life Rubenstein Fellowship: Crowdsourced morphology</title><link>https://jonathanchang.org/blog/encyclopedia-of-life-rubenstein-fellowship-crowdsourced-morphology/</link><description>&lt;p&gt;&lt;img alt="Landmarks!" src="/uploads/2013/06/landmarks.jpg" /&gt;&lt;/p&gt;
  &lt;p&gt;This is a rather late announcement, but my project proposal, “&lt;a href="http://eol.org/users/72305"&gt;Using massively crowd-sourced data to examine morphological impacts of extinction risk in ray-finned fishes&lt;/a&gt;”, was selected for the &lt;a href="http://eol.org/info/fellows"&gt;2013 Rubenstein Fellows Program&lt;/a&gt;. I’m happy to announce that the first pilot study of my project is starting today. These first steps are the result of much preparation with my collaborators, Dan Rabosky at Michigan and Michael Alfaro here at UCLA.&lt;/p&gt;
  &lt;p&gt;The overall goal of this project is to quantify morphological disparity across the radiation of ray-finned fishes, which account for around 50% of all vertebrate diversity. We recently showed that the rate of speciation and body size evolution are correlated across fishes (Rabosky et al 2013, &lt;em&gt;Nat Commun&lt;/em&gt;). However, size is just one facet of phenotypic diversity. In fact, shape is likely to be able to tell us quite a lot more about both morphological and ecological diversity, so with shape information we may be able to explain the factors that drive fish biodiversity, and also help identify patterns useful for fish conservation.&lt;/p&gt;
  &lt;p&gt;&lt;img alt="Figure from Rabosky et al. 2013 Nat Commun showing correlated rate of diversification and body size evolution" src="/uploads/2013/06/rabosky2013circular.png" /&gt;&lt;/p&gt;
  &lt;p&gt;We will then be able to test for a relationship between shape and human exploitation, i.e., are there fishes with certain body shapes that tend to be more or less vulnerable to overfishing? This type of data and analysis can also allow us to get at many deep questions in macroevolution, including if there is convergence in body shape in certain environments or habitats, or if certain groups of fishes enjoy a faster rate of shape evolution.&lt;/p&gt;
  &lt;p&gt;There are tens of thousands of high-quality photographs of fishes on the Internet, in well-curated collections like the Encyclopedia of Life. Numerous expert editors have taken the time to identify photographs down to the species level. However, collecting landmark data for geometric morphometrics is the rate limiting step for this type of analysis. My hope is that crowdsourcing will help solve this bottleneck!&lt;/p&gt;
  &lt;p&gt;The pilot study that I’m starting today is only a small piece of the puzzle. We’ve chosen the triggerfishes, a group that we already have high-quality photographs of due to a previously published study (Dornburg et al 2011, &lt;em&gt;Syst Biol&lt;/em&gt;). This is so we can readily identify areas we need to improve for our larger analysis. The source code for the web-facing portion of this study is &lt;a href="https://github.com/jonchang/eol-mturk-landmark"&gt;available on github&lt;/a&gt;, and you can &lt;a href="https://jonchang.github.io/eol-mturk-landmark/"&gt;play around with a version of it online&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;&lt;em&gt;(Top figure: An unsuspecting Pseudobalistes naufragium is viciously landmarked by the author; Bottom figure: A phylogeny of the ray-finned fishes, with warm colors corresponding with fast body size change and longer branches with rapid speciation. Courtesy of Dan Rabosky)&lt;/em&gt;&lt;/p&gt;</description><author>Jonathan Chang</author><pubDate>Wed, 19 Jun 2013 18:50:34 GMT</pubDate><guid isPermaLink="true">https://jonathanchang.org/blog/encyclopedia-of-life-rubenstein-fellowship-crowdsourced-morphology/</guid></item><item><title>How to Make a Wordcloud Using R</title><link>https://lukesingham.com/how-to-make-a-word-cloud-using-r/</link><description>&lt;p&gt;Recently I have been using R for some basic data visualisations, outputs like word clouds and heat maps. I don't have a programming background so upon first look the R command line based environment can seem a little daunting. However, the ease at which I have been able to create some pretty amazing outputs with very little code has surprised me. In this blog I will attempt to share the steps in a simple process as well as the small amount of code that is needed.&lt;/p&gt;
&lt;h4 id="1.-rstudio-%2B-packages"&gt;1. RStudio + Packages &lt;a class="direct-link" href="https://lukesingham.com/how-to-make-a-word-cloud-using-r/#1.-rstudio-%2B-packages"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;First of all, you will need to install &lt;a href="http://cran.rstudio.com/"&gt;RStudio&lt;/a&gt;. The program gives the user a nice interface to operate within. The code can be typed in the window to the top left of the program, useful particularly if you want to save your code as a script. The code can be sent to the command line from there, or you can simply start typing the code into the Console.&lt;/p&gt;
&lt;pre class="language-r"&gt;&lt;code class="language-r"&gt;&lt;span class="token comment"&gt;# Install required packages&lt;/span&gt;&lt;br /&gt;install.packages&lt;span class="token punctuation"&gt;(&lt;/span&gt;c&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token string"&gt;"tm"&lt;/span&gt;&lt;span class="token punctuation"&gt;,&lt;/span&gt; &lt;span class="token string"&gt;"wordcloud"&lt;/span&gt;&lt;span class="token punctuation"&gt;,&lt;/span&gt;&lt;span class="token string"&gt;"SnowballC"&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="token comment"&gt;# Load libraries&lt;/span&gt;&lt;br /&gt;library&lt;span class="token punctuation"&gt;(&lt;/span&gt;tm&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;br /&gt;library&lt;span class="token punctuation"&gt;(&lt;/span&gt;wordcloud&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;br /&gt;library&lt;span class="token punctuation"&gt;(&lt;/span&gt;SnowballC&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id="2.-load-the-text"&gt;2. Load the Text &lt;a class="direct-link" href="https://lukesingham.com/how-to-make-a-word-cloud-using-r/#2.-load-the-text"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;This is the point where you load the text with which you would like to create your word cloud with. For this example I am using &lt;a href="http://en.wikipedia.org/wiki/We_choose_to_go_to_the_Moon"&gt;JFK's 'We choose to go to the Moon'&lt;/a&gt; speech.&lt;/p&gt;
&lt;p&gt;Create a new folder e.g. &lt;code&gt;~/Desktop/test/&lt;/code&gt; containing a &lt;code&gt;speech.txt&lt;/code&gt; file.&lt;/p&gt;
&lt;pre class="language-r"&gt;&lt;code class="language-r"&gt;&lt;span class="token comment"&gt;# Create a corpus variable&lt;/span&gt;&lt;br /&gt;mooncloud &lt;span class="token operator"&gt;&amp;lt;-&lt;/span&gt; Corpus&lt;span class="token punctuation"&gt;(&lt;/span&gt;DirSource&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token string"&gt;"~/Desktop/test/"&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="token comment"&gt;# Make sure it has loaded properly - have a look!&lt;/span&gt;&lt;br /&gt;inspect&lt;span class="token punctuation"&gt;(&lt;/span&gt;mooncloud&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id="3.-format-and-clean-the-text"&gt;3. Format and Clean the Text &lt;a class="direct-link" href="https://lukesingham.com/how-to-make-a-word-cloud-using-r/#3.-format-and-clean-the-text"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;These commands will remove various things like punctuations and english words you aren't particularly interested in for the cloud like conjunctions. Additionally it will format the case of the text, I am going to go with lowercase, however you can run various combinations of these arguments including arguments not listed here.&lt;/p&gt;
&lt;pre class="language-r"&gt;&lt;code class="language-r"&gt;&lt;span class="token comment"&gt;# Strip unnecessary whitespace&lt;/span&gt;&lt;br /&gt;mooncloud &lt;span class="token operator"&gt;&amp;lt;-&lt;/span&gt; tm_map&lt;span class="token punctuation"&gt;(&lt;/span&gt;mooncloud&lt;span class="token punctuation"&gt;,&lt;/span&gt; stripWhitespace&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="token comment"&gt;# Convert to lowercase&lt;/span&gt;&lt;br /&gt;mooncloud &lt;span class="token operator"&gt;&amp;lt;-&lt;/span&gt; tm_map&lt;span class="token punctuation"&gt;(&lt;/span&gt;mooncloud&lt;span class="token punctuation"&gt;,&lt;/span&gt; tolower&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="token comment"&gt;# Remove conjunctions etc.&lt;/span&gt;&lt;br /&gt;mooncloud &lt;span class="token operator"&gt;&amp;lt;-&lt;/span&gt; tm_map&lt;span class="token punctuation"&gt;(&lt;/span&gt;mooncloud&lt;span class="token punctuation"&gt;,&lt;/span&gt; removeWords&lt;span class="token punctuation"&gt;,&lt;/span&gt; stopwords&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token string"&gt;"english"&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="token comment"&gt;# Remove suffixes to the common 'stem'&lt;/span&gt;&lt;br /&gt;mooncloud &lt;span class="token operator"&gt;&amp;lt;-&lt;/span&gt; tm_map&lt;span class="token punctuation"&gt;(&lt;/span&gt;mooncloud&lt;span class="token punctuation"&gt;,&lt;/span&gt; stemDocument&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="token comment"&gt;# Remove commas etc.&lt;/span&gt;&lt;br /&gt;mooncloud &lt;span class="token operator"&gt;&amp;lt;-&lt;/span&gt; tm_map&lt;span class="token punctuation"&gt;(&lt;/span&gt;mooncloud&lt;span class="token punctuation"&gt;,&lt;/span&gt; removePunctuation&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="token comment"&gt;#(optional) arguments of 'tm' are converting the document to something other than text, to avoid, run this line&lt;/span&gt;&lt;br /&gt;mooncloud &lt;span class="token operator"&gt;&amp;lt;-&lt;/span&gt; tm_map&lt;span class="token punctuation"&gt;(&lt;/span&gt;mooncloud&lt;span class="token punctuation"&gt;,&lt;/span&gt; PlainTextDocument&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id="4.-word-cloud-time!"&gt;4. Word Cloud Time! &lt;a class="direct-link" href="https://lukesingham.com/how-to-make-a-word-cloud-using-r/#4.-word-cloud-time!"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Time to produce a word cloud, run the following command and watch RStudio populate the 'Plots' window to the right of the console.&lt;/p&gt;
&lt;pre class="language-r"&gt;&lt;code class="language-r"&gt;&lt;span class="token comment"&gt;# Time to generate a wordcloud!&lt;/span&gt;&lt;br /&gt;wordcloud&lt;span class="token punctuation"&gt;(&lt;/span&gt;mooncloud&lt;br /&gt;        &lt;span class="token punctuation"&gt;,&lt;/span&gt; scale&lt;span class="token operator"&gt;=&lt;/span&gt;c&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token number"&gt;5&lt;/span&gt;&lt;span class="token punctuation"&gt;,&lt;/span&gt;&lt;span class="token number"&gt;0.5&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;     &lt;span class="token comment"&gt;# Set min and max scale&lt;/span&gt;&lt;br /&gt;        &lt;span class="token punctuation"&gt;,&lt;/span&gt; max.words&lt;span class="token operator"&gt;=&lt;/span&gt;&lt;span class="token number"&gt;100&lt;/span&gt;      &lt;span class="token comment"&gt;# Set top n words&lt;/span&gt;&lt;br /&gt;        &lt;span class="token punctuation"&gt;,&lt;/span&gt; random.order&lt;span class="token operator"&gt;=&lt;/span&gt;&lt;span class="token boolean"&gt;FALSE&lt;/span&gt; &lt;span class="token comment"&gt;# Words in decreasing freq&lt;/span&gt;&lt;br /&gt;        &lt;span class="token punctuation"&gt;,&lt;/span&gt; rot.per&lt;span class="token operator"&gt;=&lt;/span&gt;&lt;span class="token number"&gt;0.35&lt;/span&gt;       &lt;span class="token comment"&gt;# % of vertical words&lt;/span&gt;&lt;br /&gt;        &lt;span class="token punctuation"&gt;,&lt;/span&gt; use.r.layout&lt;span class="token operator"&gt;=&lt;/span&gt;&lt;span class="token boolean"&gt;FALSE&lt;/span&gt; &lt;span class="token comment"&gt;# Use C++ collision detection&lt;/span&gt;&lt;br /&gt;        &lt;span class="token punctuation"&gt;,&lt;/span&gt; colors&lt;span class="token operator"&gt;=&lt;/span&gt;brewer.pal&lt;span class="token punctuation"&gt;(&lt;/span&gt;&lt;span class="token number"&gt;8&lt;/span&gt;&lt;span class="token punctuation"&gt;,&lt;/span&gt; &lt;span class="token string"&gt;"Dark2"&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;span class="token punctuation"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id="5.-the-result"&gt;5. The Result &lt;a class="direct-link" href="https://lukesingham.com/how-to-make-a-word-cloud-using-r/#5.-the-result"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img alt="moon-speech-wordcloud" src="https://lukesingham.com/content/images/2015/04/mooncloud.png" /&gt;&lt;br /&gt;
Voilà! Where there is a 'will' there is a way. It's hard to imagine a current leader of a western country announcing such a bold and expensive policy now - despite the world increasing its wealth substantially in the last half century of rapid development and therefore being even more capable than it was in the 60s.&lt;/p&gt;
&lt;p&gt;Back to technical aspects, for further information and optional arguments you can use to customise the word cloud please see the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://cran.r-project.org/web/packages/tm/vignettes/tm.pdf"&gt;tm&lt;/a&gt; - the text mining package&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cran.r-project.org/web/packages/wordcloud/wordcloud.pdf"&gt;wordcloud&lt;/a&gt; - the cloud generator, also does commonality clouds e.g. compare two political speeches for common themes&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cran.r-project.org/web/packages/SnowballC/SnowballC.pdf"&gt;SnowballC&lt;/a&gt; - multi-language stemming algorithm package&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I learnt to do this from a fair amount of Googling. The most helpful blog I came across was &lt;a href="https://georeferenced.wordpress.com/2013/01/15/rwordcloud/"&gt;Georeferenced&lt;/a&gt; - so credit where credit is due. I learnt this method due to &lt;a href="http://www.wordle.net/"&gt;Wordle&lt;/a&gt; being blocked from my workplace, so of course use the website if you want to keep your hands clean!&lt;/p&gt;</description><author>Luke Singham</author><pubDate>Wed, 19 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://lukesingham.com/how-to-make-a-word-cloud-using-r/</guid></item><item><title>The Joys of UNIX Keyboards</title><link>https://donatstudios.com/UNIX-Keyboards</link><description>&lt;h2&gt;I fell in love with a dead keyboard layout.&lt;/h2&gt;
&lt;p&gt;A decade or so ago while helping a friends father clean out an old building, we came across an ancient Sun Microsystems server. We found it curious. &lt;em&gt;Everything&lt;/em&gt; about it was different from what we were used to. The command line was black text on a white background, the connectors strange and foreign, and the keyboard layout was bizarre.&lt;/p&gt;
&lt;p&gt;We never did much with it; turning it on made all the lights in his home dim, and our joint knowledge of UNIX was nonexistent. It sat in his bedroom for years supporting his television at the foot of his bed.&lt;/p&gt;
&lt;p&gt;I never forgot that keyboard though. The thought that there was this alternative layout out there seemed intriguing to me.&lt;/p&gt;
&lt;h2&gt;I am ruined for all other keyboards…&lt;/h2&gt;
&lt;p&gt;Mac is the main platform at my new job. I found myself unhappy with Apple keyboards; they are flat, bland, and completely unsatisfying to type on. I dug out an old AppleDesign keyboard, and used that for several months but I still needed something more.&lt;/p&gt;
&lt;p&gt;I read about Happy Hacking Keyboard, and after some deliberation decided to give it a try. I thought I could learn to accept most of the layout changes, but the lack of arrow keys on the &amp;quot;Professional&amp;quot; model made me squirm a little. Luckily there is a &amp;quot;Lite&amp;quot; version that includes arrow keys.&lt;/p&gt;
&lt;p&gt;I purchased the &lt;a href="https://amzn.com/B0000U1DJ2"&gt;Happy Hacking Keyboard Lite2&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;The Happy Hacking Keyboard much like the Sun Microsystem keyboard I found years earlier features a UNIX layout. They designed it with typing at a terminal in mind.&lt;/p&gt;
&lt;h2&gt;A Better Layout&lt;/h2&gt;
&lt;p&gt;For those unfamiliar with UNIX keyboards, there are a few distinctions.&lt;/p&gt;
&lt;img alt="Happy Hacking Keyboard" src="https://donatstudios.com/assets/43/hhkb.png" style="display: block; float: right; margin-left: 22px; margin-bottom: 22px;" /&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;Control&lt;/strong&gt; key moved to the &lt;strong&gt;Caps Lock&lt;/strong&gt; keys usual position. This makes it much easier to hit common commands than its usual location, often without ever leaving home row. I can't imagine why anyone thought &lt;strong&gt;Caps Lock&lt;/strong&gt; should have had this prominent of placement.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;Meta&lt;/strong&gt; (&lt;strong&gt;◆ / ⌘ / Windows&lt;/strong&gt;) key is in its rightful place next to the space bar, as on a Mac keyboard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;Backspace&lt;/strong&gt; key moved down a row to be above the &lt;strong&gt;Enter&lt;/strong&gt; key. This change is my favorite change. Having a small reach, normally my hands have to leave home row to hit backspace. but on a UNIX board I have no issue hitting it with my pinky with the rest of my fingers remaining firmly on home row.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Escape&lt;/strong&gt; is also in reach of home row, placed where you would usually find &lt;strong&gt;~&lt;/strong&gt;. I could have done without this change, but it is fine.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;~&lt;/strong&gt; and &lt;strong&gt;\&lt;/strong&gt; have moved to the usual location of the &lt;strong&gt;Backspace&lt;/strong&gt;. Working exclusively on UNIX systems now, I don't mind the &lt;strong&gt;\&lt;/strong&gt; being harder to reach. I could understand a Windows user finding this irritating.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The HHKB is a minimal version of the UNIX keyboard. To this end the &lt;strong&gt;F Keys&lt;/strong&gt; are mapped to &lt;strong&gt;Fn + 1, 2, 3, etc&lt;/strong&gt;. The HHKB encourages you to stay on home row; you can hit any key on the keyboard without leaving it. I find my typing accuracy and speed to have improved thanks to its use.&lt;/p&gt;
&lt;p&gt;The HHKB features one more change I don't care for. The &lt;strong&gt;Backspace&lt;/strong&gt; key by &lt;em&gt;default&lt;/em&gt; performs &lt;strong&gt;Forward Delete&lt;/strong&gt;. Luckily changing this is easy by flipping a toggle switch on the back of the board.&lt;/p&gt;
&lt;h2&gt;Closing&lt;/h2&gt;
&lt;p&gt;I recommend this keyboard to &lt;em&gt;anyone&lt;/em&gt; who spends a lot of time at the terminal. You are able to do more of what you need without ever leaving home row, every important key is within reach.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Elsewhere&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Discussion on &lt;a href="https://news.ycombinator.com/item?id=21912184"&gt;Hacker News&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentioned on BSD Now Podcast: &lt;a href="https://www.bsdnow.tv/333"&gt;Episode 333&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Donat Studios</author><pubDate>Wed, 19 Jun 2013 02:10:51 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/UNIX-Keyboards</guid></item><item><title>Playing with FreeIPA and puppet</title><link>https://purpleidea.com/blog/2013/06/18/playing-with-freeipa/</link><description>&lt;p&gt;So I just rolled a new vm to hack around with &lt;a href="http://www.freeipa.org/"&gt;FreeIPA&lt;/a&gt;. Here are some things that I&amp;rsquo;ve come across so far. I was planning on configuring LDAP, and Kerberos manually, but the included webui looks like a lovely tool to have for the data entry, user administrator type who likes to click on things. Let&amp;rsquo;s explore&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;/etc/hosts&lt;/strong&gt;&lt;/span&gt;:&lt;/p&gt;
&lt;p&gt;FreeIPA is choosy about how your &lt;em&gt;/etc/hosts&lt;/em&gt; is formatted. It requires an entry that has a particular order, that is:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 18 Jun 2013 15:36:54 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/06/18/playing-with-freeipa/</guid></item><item><title>Minimal password security is gained from case-sensitivity</title><link>https://www.databasesandlife.com/minimal-security-is-gained-by-using-case-sensitive-passwords/</link><description>&lt;p&gt;My colleague suggested that systems should compare passwords in a case-sensitive manner. He pointed out the larger space of possible passwords, and thus the longer passwords would take to crack by a brute-force attack. This is all standard knowledge.&lt;/p&gt;
&lt;p&gt;I still maintain, however, as &lt;a href="https://www.databasesandlife.com/strong-passwords-education-not-enforcement/" title="Strong Passwords: Education not enforcement"&gt;discussed before&lt;/a&gt;, that the correct trade-off between usability and security is to compare passwords in a case-insensitive manner.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The increase in usability in having case-insensitive passwords is obvious (and documented in the previous post), so to understand the usability/security trade-off, how much is security reduced by using them?&lt;/strong&gt;&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Tue, 18 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/minimal-security-is-gained-by-using-case-sensitive-passwords/</guid></item><item><title>🎙️ Enriching Podcasts and Radio Shows</title><link>https://jdsalaro.com/bookmark/podcasts/</link><description>Here you’ll find podcasts I’ve found valuable over the years.</description><author>Jayson Salazar Rodriguez | @jdsalaro | Blog</author><pubDate>Tue, 18 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://jdsalaro.com/bookmark/podcasts/</guid></item><item><title>puppet lsi hardware raid module</title><link>https://purpleidea.com/blog/2013/06/17/puppet-lsi-hardware-raid-module/</link><description>&lt;p&gt;In response to some discussion in the gluster community, I am releasing my &lt;a href="https://github.com/purpleidea/puppet-lsi/"&gt;puppet-lsi&lt;/a&gt; module. It&amp;rsquo;s quite simple, but it is very useful for rebuilding machines. It could do a lot more, but I wanted to depend on the proprietary LSI tools as little as possible. Running &lt;em&gt;megacli&lt;/em&gt; with puppet would be a very doable hack, but I&amp;rsquo;m not sure enough devops out there who would use that feature.&lt;/p&gt;
&lt;p&gt;Usage is straightforward if you like the sensible defaults:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Mon, 17 Jun 2013 21:11:02 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/06/17/puppet-lsi-hardware-raid-module/</guid></item><item><title>Krav Maga, or "Crush Balls, Gouge Eyes, and Break Bones"</title><link>https://josh.works/growth/2013/06/17/krav-maga-or-crush-balls-gouge-eyes-and-break-bones/</link><description>&lt;p&gt;In the last few weeks, I have been physically attacked dozens of times. Usually the attacker was just trying to choke me, but sometimes he was trying to throw me to the ground. After a few minutes of fighting, I would attack him. Then we’d both shake hands, say “thank you”, and walk to the metro.
more
My wife and I have always recognized a need (or a strong desire) for some sort of self-defense training. I’ve always wanted some, because I don’t like the idea that my only option to protect myself is “run away”. That would not always an option, nor does it help anyone other than me.&lt;/p&gt;

&lt;p&gt;Kristi often felt uncomfortable walking many places in DC by herself, especially at night. Metro platforms, parking garages, gas stations, or any place where you’re not alone can be scary places.&lt;/p&gt;

&lt;p&gt;The way I saw it was this: We’re not training to protect ourselves against a low-probability incident, but rather we’re training to provide peace and comfort in situations where before we may have been nervous or on edge, because ITSHTF, we have options that, if executed correctly, leave us safe.&lt;/p&gt;

&lt;p&gt;The top of my 
&lt;a href="/blog/2013/06/14/the-list"&gt;Epic List&lt;/a&gt; is Krav Maga. My wife and I are taking lessons at Krav Maga DC, in China Town. We go between two and four times a week, for an hour each lesson.&lt;/p&gt;

&lt;p&gt;We signed up for a year of classes, which usually gets students to a solid level of proficiency. The classes are structured in week-long “blocks”, where a single new element is focused on, for the week. Recent topics have been learning to use “hammer fists”, elbow strikes, and defenses from chokes and head locks. I feel far from proficient, but we’ve been going for just a few weeks. (By the way, every defense includes usually a “crush the groin” step, and “gouge the eyeball” or “collapse the windpipe”.)&lt;/p&gt;

&lt;p&gt;Krav focuses on real-life situations and instinctual offensive reactions to attacks. The goal is to, if attacked, not just respond and be safe, but leave the other guy unable to get off the ground to prosecute the attack any farther. (This is called “ending the fight”, and is brutal. Yes, you are expected to kick ‘em when they’re down.) Anything goes, because if attacked, you’re probably smaller than your attacker, weaker, and much less prepared for what’s going on. (If I were attacking someone, I’d make sure to be bigger, stronger, and mentally prepared for the attack. Wouldn’t you?)&lt;/p&gt;

&lt;p&gt;We’re having a blast, and this is a solid step towards checking off an item on my list. If anyone wants to join with us, it’s 
&lt;a href="http://www.kravmagadc.com/www/index.php?p=home"&gt;Krav Maga DC,&lt;/a&gt;by the Gallery Place/Chinatown metro. There are a lot of training centers in the area, though, so if you’re interested, make time in your schedule, your budget, and make it happen. You’ll always have other things to do with your time and money, but if this is something important to you, it’ll happen.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Mon, 17 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/2013/06/17/krav-maga-or-crush-balls-gouge-eyes-and-break-bones/</guid></item><item><title>The original author of code should fix its bugs, and they should do that before writing more code</title><link>https://www.databasesandlife.com/when-and-who-should-fix-bugs/</link><description>&lt;p&gt;There are (at least) the following options that a project manager must make when organizing bug fixes to software:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Should the original author of the code in question fix the bug? Or should there be a &amp;ldquo;bug team&amp;rdquo; who surgically go in and fix bugs?&lt;/li&gt;
&lt;li&gt;Should one fix bugs as one goes along? Or concentrate on features and write the bugs down and fix them in a &amp;ldquo;bug sprint&amp;rdquo;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am very much in favour of the &lt;strong&gt;original author fixing bugs&lt;/strong&gt;, and &lt;strong&gt;fixing bugs as soon as they occur&lt;/strong&gt;. Because:&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Mon, 17 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/when-and-who-should-fix-bugs/</guid></item><item><title>iOS 7 and the rejection of the unfamiliar</title><link>http://www.imore.com/ios-7-and-rejection-unfamiliar</link><description>&lt;p&gt;In this morass of terribly-written prose, Rene Ritchie did manage to make an interesting point:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;The problem is that Apple listened, and now instead of being a trend creator they are &amp;#8216;following&amp;#8217; trends.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While I can&amp;#8217;t say I necessarily agree with this opinion, it is nevertheless a very interesting one, and one that I haven&amp;#8217;t see voiced since the WWDC keynote nearly a week ago.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.imore.com/ios-7-and-rejection-unfamiliar"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 16 Jun 2013 21:08:16 GMT</pubDate><guid isPermaLink="true">http://www.imore.com/ios-7-and-rejection-unfamiliar</guid></item><item><title>Acquisition and maintenance of a band of minions</title><link>http://rachelbythebay.com/w/2013/06/15/campus/</link><description>&lt;p&gt;I love this article. Its post slug, &amp;#8220;campus&amp;#8221;, should give you an idea as to what it is about. Great read.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://rachelbythebay.com/w/2013/06/15/campus/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 16 Jun 2013 20:56:47 GMT</pubDate><guid isPermaLink="true">http://rachelbythebay.com/w/2013/06/15/campus/</guid></item><item><title>Faded Avocado</title><link>http://5by5.tv/bb/73</link><description>&lt;p&gt;Working my way through The B&amp;#38;B Podcast&amp;#8217;s back catalog I came across episode seventy-three, &lt;em&gt;Faded Avocado&lt;/em&gt;, during which Shawn and Ben talked about Marcelo Somer&amp;#8217;s piece &lt;a href="http://behindcompanies.com/2012/08/the-linkblog-cancer/"&gt;&lt;em&gt;The Linkblog Cancer&lt;/em&gt;&lt;/a&gt;. This article sparked a controversy that went viral a few months ago, a controversy even the likes of &lt;a href="http://www.loopinsight.com/2012/08/09/linkblog-cancer/"&gt;Jim Dalrymple&lt;/a&gt; and &lt;a href="http://www.marco.org/2012/08/09/linkblogs"&gt;Marco Arment&lt;/a&gt; felt the need to respond to. I even mentioned it, albeit briefly, in my article &lt;a href="https://zacs.site/blog/reinventing-the-linkblog.html"&gt;&lt;em&gt;Reinventing the Linkblog&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For those curious, Ben and Shawn argued both sides very well and made a number of great points. If you have to pick one episode of The B&amp;#38;B Podcast to listen to, this is a good choice.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://5by5.tv/bb/73"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 16 Jun 2013 20:55:20 GMT</pubDate><guid isPermaLink="true">http://5by5.tv/bb/73</guid></item><item><title>Cheap And Enjoyable Gaming On Unix</title><link>https://venam.net/blog/unix/2013/06/17/cheap-gaming.html</link><description>Hello fellow Unixers, In this thread I'll explain how to enjoy playing games on free Unix OS for a cheap price.  The rumor that gaming on Unix is bad has been around for quite some time now.  While it's almost true for the newest games with the 3D rendering that makes hair looks so real that it feels like your own hair are fake, it's still not true for all games.  I won't start blabbering about "Steam"TM because the internet is already infested with it. I won't, also, write about running games through wine for the same reason.</description><author>Venam's Blog — Patrick Louis (Lebanon)</author><pubDate>Sun, 16 Jun 2013 20:00:00 GMT</pubDate><guid isPermaLink="true">https://venam.net/blog/unix/2013/06/17/cheap-gaming.html</guid></item><item><title>DNS servers for Vibe Communications</title><link>https://rd.nz/2013/06/dns-servers-for-vibe-communications.html</link><author>Rich Dougherty</author><pubDate>Sun, 16 Jun 2013 08:35:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/06/dns-servers-for-vibe-communications.html</guid></item><item><title>7shape my first iphone application</title><link>https://blog.nobugware.com/post/2013/06/15/7shape-my-first-iphone-application/</link><description>As an iphone developer contractor, I&amp;rsquo;ve released some applications on the Apple Store for my customers but not on my own.
Here is my 1st personal (30 hours) toy project: 7shape a 7 minutes workout training application, based on an [NYT blog](http://well.blogs.nytimes.com/2013/05/09/the- scientific-7-minute-workout/) post.
I&amp;rsquo;ve spent 20 hours on website release, marketing, 3D for the human trainer and application design, and last 10 hours to create the app and release it to Apple &amp;hellip;</description><author>Fabrice Aneche</author><pubDate>Sun, 16 Jun 2013 00:59:12 GMT</pubDate><guid isPermaLink="true">https://blog.nobugware.com/post/2013/06/15/7shape-my-first-iphone-application/</guid></item><item><title>Installing Redis on Debian as a Service</title><link>https://thomashunter.name/posts/2013-06-15-installing-redis-on-debian</link><author>Thomas Hunter II</author><pubDate>Sat, 15 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-06-15-installing-redis-on-debian</guid></item><item><title>The Smart Guide to Stack Overflow: Zero to Hero</title><link>https://duncanlock.net/blog/2013/06/14/the-smart-guide-to-stack-overflow-zero-to-hero/</link><description>&lt;figure class="image-block"&gt;&lt;img alt="stackoverflow logo is made of people diagram" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/stackoverflow-logo-is-made-of-people-diagram.png" /&gt;
&lt;figcaption&gt;Figure 1. StackOverflow is made of people - lots and lots and lots of people.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Seemingly like everything else in the world, Stack Overflow is getting more &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; more competitive as time passes. Gaining a good reputation - and even finding good questions to answer - is becoming harder and harder, as more and more people compete for less and less unanswered&amp;nbsp;questions.&lt;/p&gt;
&lt;p&gt;This is &lt;em&gt;fantastic&lt;/em&gt; if you want to find an answer - but makes it much harder for newcomers to get started and build a reputation on the&amp;nbsp;site.&lt;/p&gt;
&lt;p&gt;This guide will help you jump-start your reputation on StackOverflow and help you get more out of the&amp;nbsp;site.&lt;/p&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_how_to_find_questions_you_can_answer"&gt;How to find questions you can&amp;nbsp;answer&lt;/h2&gt;&lt;section class="doc-section level-2"&gt;&lt;h3 id="_ignored_favourite_tags"&gt;Ignored &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Favourite&amp;nbsp;Tags&lt;/h3&gt;&lt;figure class="image-block align-right"&gt;&lt;img alt="Screenshot of part of my (very long) ignored tags list from Stack Overflow" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/stack-overflow-ignored-tags.png" /&gt;
&lt;figcaption&gt;Figure 2. I don&amp;#8217;t know jack: Screenshot of part of my (long) ignored tags list from Stack Overflow&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Use the &lt;a href="http://stackoverflow.com/unanswered/tagged/?tab=noanswers"&gt;no answers&lt;/a&gt; page, the &lt;a href="http://stackoverflow.com/unanswered/tagged/?tab=newest"&gt;newest unanswered page&lt;/a&gt; and the &lt;a href="http://stackoverflow.com/questions?sort=featured"&gt;bounties pages&lt;/a&gt;, but make sure you add plenty of Ignored Tags. Whenever you see a question that you don&amp;#8217;t know anything about, add it&amp;#8217;s tags to your Ignored Tags list. This fades questions with these tags, making it much easier to skim through the list finding things that you &lt;em&gt;can&lt;/em&gt;&amp;nbsp;answer.&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t be afraid to add lots of ignored tags - it&amp;#8217;s not an admission of failure - there will always be lots of things that you aren&amp;#8217;t an expert&amp;nbsp;on.&lt;/p&gt;
&lt;p&gt;Add some favourite tags too - this highlights questions with these tags, again, helping you to sort the wheat from the&amp;nbsp;chaff.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_wildcards"&gt;Wildcards&lt;/h3&gt;&lt;div class="image-block"&gt;&lt;img alt="stack overflow ignored tags add with wildcard" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/stack-overflow-ignored-tags-add-with-wildcard.png" /&gt;&lt;/div&gt;
&lt;p&gt;Both Ignored and Favourite Tags can use wild cards - just put an asterisk at the end of the tag when you enter it - so &lt;code&gt;xcode*&lt;/code&gt; would match both &lt;code&gt;xcode&lt;/code&gt; and &lt;code&gt;xcode4.5&lt;/code&gt;, for example. This significantly reduces the number of tags you&amp;nbsp;need.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_specialize_follow_tags_automate"&gt;Specialize, Follow Tags &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;Automate&lt;/h3&gt;&lt;p&gt;You can also follow a single tag - one of your Favourite tags, for example - just click on it in your sidebar and you&amp;#8217;ll see a &lt;a href="http://stackoverflow.com/questions/tagged/mysql%2A"&gt;filtered version of the Questions pages, just for that tag&lt;/a&gt;. This also works for wildcards, so clicking on a wildcard tag in your sidebar will filter by all matching&amp;nbsp;tags.&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="stack overflow follow tags feed with wildcard" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/stack-overflow-follow-tags-feed-with-wildcard.png" /&gt;&lt;/div&gt;
&lt;p&gt;At the bottom of each of these filtered lists is a link to an Atom Feed &lt;a class="footnote-ref" href="#_footnote_1" id="_footnoteref_1" title="View footnote 1"&gt;[1]&lt;/a&gt; that you can subscribe to in a News/Feed Reader &lt;a class="footnote-ref" href="#_footnote_2" id="_footnoteref_2" title="View footnote 2"&gt;[2]&lt;/a&gt; - this will alert you whenever new questions are posted with that&amp;nbsp;tag.&lt;/p&gt;
&lt;p&gt;You can also use &lt;a href="https://ifttt.com/recipes/search?q=stackoverflow"&gt;&lt;span class="caps"&gt;IFTTT&lt;/span&gt; to automatically notify&lt;/a&gt; &lt;a class="footnote-ref" href="#_footnote_3" id="_footnoteref_3" title="View footnote 3"&gt;[3]&lt;/a&gt; you when new questions appear, when your reputation changes, etc - it can even send you an &lt;span class="caps"&gt;SMS&lt;/span&gt;, so you can jump in&amp;nbsp;immediately.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_mercenary_reputation_building_101"&gt;Mercenary Reputation Building&amp;nbsp;101&lt;/h2&gt;&lt;p&gt;Most of these reputation building techniques are win-win, thanks to Stack Overflow&amp;#8217;s masterful gamification &lt;a class="footnote-ref" href="#_footnote_4" id="_footnoteref_4" title="View footnote 4"&gt;[4]&lt;/a&gt; architecture - but some of them are a little bit&amp;#8230;&amp;#8203;&amp;nbsp;mercenary:&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_answers_in_the_comments_are_just_asking_for_it"&gt;Answers in the comments are just asking for&amp;nbsp;it&lt;/h3&gt;&lt;p&gt;For some reason, people often answer questions in the comments, rather than submitting an actual Answer - this is wrong for lots of&amp;nbsp;reasons:&lt;/p&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;It makes the answers hard to find for other people &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; adds to the noise on the&amp;nbsp;site.&lt;/li&gt;&lt;li&gt;It means that an answer can never be accepted, so other people won&amp;#8217;t be able to tell if the question has an answer - and the question will appear in the Unanswered lists&amp;nbsp;forever.&lt;/li&gt;&lt;li&gt;People get no credit for answers supplied in the&amp;nbsp;comments&lt;/li&gt;&lt;li&gt;Formatting and space is intentionally very limited in comments - to try to dissuade people posting answers&amp;nbsp;there.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;If people are stupid enough to do this, then they deserve to be punished (a little tiny bit). Copy their answer out of the comment into a real Answer. Expand on it in the extra space you now have, improve the formatting, add example code, etc&amp;#8230;&amp;#8203; - and wait for the reputation points to roll&amp;nbsp;in.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_answer_questions_from_experienced_users"&gt;Answer questions from experienced&amp;nbsp;users&lt;/h3&gt;&lt;figure class="image-block"&gt;&lt;img alt="screenshot 13 06 06 07 43 18 pm" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/screenshot-13-06-06-07-43-18-pm.png" /&gt;
&lt;figcaption&gt;Figure 3. Except this guy.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Everything else being equal, answer questions asked by users with higher reputation. They know how the site works, they know to accept and upvote answers. New users often don&amp;#8217;t, or they&amp;#8217;ll ask a question and never some back - so it&amp;#8217;s much more likely that you&amp;#8217;ll get no reward for answering their&amp;nbsp;questions.&lt;/p&gt;
&lt;p&gt;New users also tend to ask lower quality questions, which are harder to answer well - and get closed more often - than questions from experienced&amp;nbsp;users.&lt;/p&gt;
&lt;p&gt;This is a little hard on new users, so if they&amp;#8217;ve asked a well articulated, valid question and have a real looking username, I would suggest taking a chance and answering the question anyway. Even if the asker never comes back, you can still get upvotes from other&amp;nbsp;users.&lt;/p&gt;
&lt;p&gt;On the other&amp;nbsp;hand&amp;#8230;&amp;#8203;&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_encourage_new_users"&gt;Encourage New&amp;nbsp;Users&lt;/h3&gt;&lt;figure class="image-block"&gt;&lt;img alt="stackoverflow upvotes accept encourage users" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/stackoverflow-upvotes-accept-encourage-users.png" /&gt;
&lt;figcaption&gt;Figure 4. These two techniques, used together, are very effective.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;As &lt;a href="#_article_comments_section"&gt;ray pointed out in the comments&lt;/a&gt;, perhaps I was a little bit hard on new&amp;nbsp;users.&lt;/p&gt;
&lt;p&gt;So, you spend time researching and writing a solid, well written, correct answer to a question and&amp;#8230;&amp;#8203; crickets. It&amp;#8217;s either the only answer, the only good one, or it&amp;#8217;s gets upvoted but not accepted. What&amp;nbsp;now?&lt;/p&gt;
&lt;p&gt;Here are two ways to encourage users (new or not) to upvote and accept your answers to their&amp;nbsp;questions:&lt;/p&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;Leave a&amp;nbsp;comment&lt;/dt&gt;&lt;dd&gt;Leave them a comment on their question, asking if it worked, if they had any issues with the answer and asking them to accept the answer if it worked for them - so that other users can benefit: from knowing that the answer works and by having the question marked as&amp;nbsp;Answered.&lt;/dd&gt;&lt;dt&gt;Upvote their&amp;nbsp;question&lt;/dt&gt;&lt;dd&gt;As Ray said: &amp;#8220;I tend to wait and get some up votes, by that time the new user is used to &lt;span class="caps"&gt;SO&lt;/span&gt; so I up vote the question, 10 times of 10 he always accepts my answer and adds an upvote, 25 points collected by being patient with new users like&amp;nbsp;me.&amp;#8221;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_speculate_to_accumulate_answer_lots_of_questions_well"&gt;Speculate to Accumulate: Answer lots of questions,&amp;nbsp;well&lt;/h3&gt;&lt;p&gt;This seems obvious, but the more questions you answer well, the more reputation you&amp;#8217;ll gain - but not just at the time you answer: forever. Good answers keep building reputation over time as new people discover them and upvote them - and the more of your answers are out there, the more you&amp;#8217;ll gain from this on an ongoing&amp;nbsp;basis.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="http://stackoverflow.com/questions/2675323/mysql-load-null-values-from-csv-data/5968530#5968530"&gt;&lt;img alt="screenshot 13 06 06 07 27 10 pm" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/screenshot-13-06-06-07-27-10-pm.png" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 5. This answer was posted in May 2011, this screenshot was taken in June 2013.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Once you&amp;#8217;ve got the top voted answer on a popular question, you will gain occasional upvotes and reputation from it without you actively doing anything. The more of this you have and the more popular those questions and answers, the more you gain - with &lt;a href="http://stackoverflow.com/users/1288/bill-the-lizard?tab=reputation"&gt;top users&lt;/a&gt; sometimes hitting the daily reputation cap of +200 without doing&amp;nbsp;anything.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_come_back_and_improve_your_popular_answers"&gt;Come back and improve your popular&amp;nbsp;answers&lt;/h3&gt;&lt;p&gt;If you find that one of your answers keeps receiving upvotes over time, then come back and improve on it. Edit your answer - improve the formatting, add better example code and answer any comments people have left - by improving the answer to address them. This increases the amount of upvotes that your improved answer will get over time and improves the quality of the site overall.
It also bumps that question back up in search results and lists, making it more visible, increasing the likelihood of upvotes, and so&amp;nbsp;on.&lt;/p&gt;
&lt;p&gt;However - don&amp;#8217;t do this &lt;em&gt;too&lt;/em&gt; often. Only make edits that are worthwhile and add value to the answer - if you edit your answers too much, they&amp;#8217;ll become &lt;a href="http://meta.stackoverflow.com/questions/11740/what-are-community-wiki-posts"&gt;Community Wiki posts&lt;/a&gt; and stop generating reputation&amp;nbsp;altogether.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_get_in_first"&gt;Get in&amp;nbsp;First&lt;/h3&gt;&lt;p&gt;Being the first answer is often surprisingly important. There are lots of other people looking through the unanswered questions list for questions to answer - as soon as a question has an answer it disappears from this list. Being the first correct answer to a question also makes it more likely that other people visiting the question will upvote your answer and move on, looking for something else to answer. Answers are sorted by votes, so the answer with the first upvote will move to the top, thus getting more attention and re-enforcing the cycle&amp;#8201;&amp;#8211;&amp;#8201;answers with an early lead will often maintain&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;So, if you see a question that you know the answer to off the top of your head, answer it immediately. Get the gist of the answer down and submit it - don&amp;#8217;t spend too long writing this first draft answer, or someone else will beat you to it. Then, read through your answer, think about it some more and edit it - expanding on your answer, adding more detail, improving it with examples and Markdown&amp;nbsp;formatting.&lt;/p&gt;
&lt;p&gt;Quick answers are also good for the asker - they get the answer they need quickly and can start working on their solution - and perhaps making follow-up comments while you&amp;#8217;re further polishing your&amp;nbsp;answer.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_preferentially_answer_questions_with_bounties"&gt;Preferentially answer questions with&amp;nbsp;bounties&lt;/h3&gt;&lt;p&gt;Again, obvious - questions with &lt;a href="http://stackoverflow.com/helpcenter/bounty"&gt;bounties&lt;/a&gt; give you the bounty as reputation if you post the accepted (or highest voted)&amp;nbsp;answer.&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="screenshot 13 06 06 07 12 23 pm" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/screenshot-13-06-06_07-12-23-pm.png" /&gt;&lt;/div&gt;
&lt;p&gt;Use the &lt;a href="http://stackoverflow.com/questions?pagesize=50&amp;amp;sort=featured"&gt;Featured list&lt;/a&gt; to see all questions with bounties. Your ignored and favourite tags work here&amp;nbsp;too.&lt;/p&gt;
&lt;p&gt;Even if the person who places the bounty never bothers to come back and award it - half of it will get awarded to the highest voted answer (created after the bounty started with at least 2 upvotes) when the bounty closes. This means that you&amp;#8217;re only guaranteed to land the bounty if you can get the top spot, so answering questions with an outstanding bounty - but several existing answers with lots of votes - generally isn&amp;#8217;t such a good investment of time. Unless you think you can provide an answer that&amp;#8217;s sufficiently good to beat the existing ones before the bounty closes, don&amp;#8217;t&amp;nbsp;bother.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_getting_badges_earning_valuable_flair"&gt;Getting Badges: Earning Valuable&amp;nbsp;Flair&lt;/h3&gt;&lt;figure class="image-block"&gt;&lt;img alt="screenshot 13 06 06 07 14 59 pm" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/screenshot-13-06-06_07-14-59-pm.png" /&gt;
&lt;figcaption&gt;Figure 6. Ooooh look - pieces of valuable flair™&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;You will accumulate badges in the course of using the site, but there are ways to increase your accumulation rate slightly without going out of your way too&amp;nbsp;much.&lt;/p&gt;
&lt;p&gt;Preferentially answering older, unanswered questions is a good way to pick up &lt;a href="http://stackoverflow.com/badges/17/necromancer?userid=259698"&gt;Necromancer&lt;/a&gt;, &lt;a href="http://stackoverflow.com/badges/837/revival?userid=259698"&gt;Revival&lt;/a&gt; and &lt;a href="http://stackoverflow.com/badges/1287/excavator?userid=259698"&gt;Excavator&lt;/a&gt; badges - and using ignored tags is a great way to filter out the noise in the No Answers list, allowing you to quickly zip back to the older unanswered questions that you can answer. There&amp;#8217;s also &lt;em&gt;much less&lt;/em&gt; competition to answer these poor, neglected questions than there is for new questions, so you can answer at your leisure, taking your time to craft the perfect answer for the&amp;nbsp;ages.&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="Screenshot of the Sharing buttons at the bottom left of a Question." src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/stackoverflow-sharing-a-link.png" /&gt;&lt;/div&gt;
&lt;p&gt;Another simple win-win way to acquire badges is by sharing your questions &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; answers with your friends, using the sharing buttons on the site. This is a double whammy - your question or answer will get more exposure, so more upvotes - and you can &lt;em&gt;also&lt;/em&gt; get&amp;nbsp;badges&amp;#8230;&amp;#8203;&lt;/p&gt;
&lt;figure class="image-block align-right"&gt;&lt;img alt="Screenshots of the StackOverflow badges for sharing links." src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/stackoverflow-sharing-badges.png" /&gt;
&lt;figcaption&gt;Figure 7. StackOverflow&amp;#8217;s Sharing badges&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The &lt;a href="http://stackoverflow.com/badges/260/announcer"&gt;Announcer&lt;/a&gt;, &lt;a href="http://stackoverflow.com/badges/261/booster"&gt;Booster&lt;/a&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; &lt;a href="http://stackoverflow.com/badges/262/publicist"&gt;Publicist&lt;/a&gt; badges are awarded for sharing a link to a question that was visited by 25, 300 or 1000 unique visitors, respectively - and they can all be awarded multiple&amp;nbsp;times.&lt;/p&gt;
&lt;p&gt;See &lt;a href="#_answer_your_own_questions"&gt;Answer Your Own Questions&lt;/a&gt;, below for another easy to earn&amp;nbsp;badge.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_ask_good_questions"&gt;Ask Good&amp;nbsp;Questions&lt;/h2&gt;&lt;p&gt;You can also get reputation (and badges) for &lt;em&gt;asking&lt;/em&gt; questions: +5 for each upvote your question&amp;nbsp;gets.&lt;/p&gt;
&lt;p&gt;How to ask good questions? Questions that attract good answers - and upvotes? The &lt;a href="http://stackoverflow.com/helpcenter/asking"&gt;official guide is here&lt;/a&gt;. In addition to this, my tips for good questions&amp;nbsp;are:&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_search_first"&gt;Search&amp;nbsp;first&lt;/h3&gt;&lt;p&gt;Someone has almost certainly asked your question before and the answer is just there waiting for you. Search with Google &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; directly on Stack&amp;nbsp;Overflow.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_think_before_you_post"&gt;Think before you&amp;nbsp;post&lt;/h3&gt;&lt;p&gt;Don&amp;#8217;t just ask questions for the sake of it - or for the reputation. Ask when you&amp;#8217;re &lt;em&gt;genuinely&lt;/em&gt; stuck. Try to solve the problem yourself - but if you really can&amp;#8217;t, ask. Mention your attempted solutions in the question, so that people know what you&amp;#8217;ve already tried and&amp;nbsp;eliminated.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_explain_carefully"&gt;Explain&amp;nbsp;carefully&lt;/h3&gt;&lt;p&gt;Carefully explain your problem, in detail, so that someone without any prior knowledge of your situation can understand the problem. They&amp;#8217;re not telepathic - you need to explain yourself succinctly and thoughtfully if you want a good&amp;nbsp;answer.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_include_a_relevant_simplified_example"&gt;Include a relevant simplified&amp;nbsp;example&lt;/h3&gt;&lt;p&gt;Boil your problem down to its essence and include a simplified example - with any required code and data - in your question. Try and make this as short as possible without leaving out anything&amp;nbsp;essential.&lt;/p&gt;
&lt;p&gt;A working example, using &lt;a href="http://jsfiddle.net/"&gt;jsfiddle&lt;/a&gt;, &lt;a href="http://sqlfiddle.com/"&gt;sqlfiddle&lt;/a&gt;, &lt;a href="http://rubyfiddle.com/"&gt;rubyfiddle&lt;/a&gt;, etc&amp;#8230;&amp;#8203; is the gold standard. Put the simplified example code into your question as normal, but also upload it to the relevant *fiddle site and add the link to your&amp;nbsp;question.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_use_markdown_formatting"&gt;Use Markdown&amp;nbsp;formatting&lt;/h3&gt;&lt;p&gt;This goes for both asking questions and answering them. Stack Overflow &lt;a href="http://stackoverflow.com/editing-help"&gt;supports Markdown for formatting your posts&lt;/a&gt; - &lt;em&gt;use it&lt;/em&gt;! It will make your questions easier to read and understand, you&amp;#8217;ll get more upvotes and better&amp;nbsp;answers.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_read_before_posting_then_read_it_again_afterwards"&gt;Read before posting, then read it again&amp;nbsp;afterwards&lt;/h3&gt;&lt;p&gt;Read your question through a few times before posting. Make sure that it&amp;#8217;s well phrased, well formatted and spelt correctly. Make sure that your example code and data is clear and concise and includes everything you would need to reproduce the&amp;nbsp;problem.&lt;/p&gt;
&lt;p&gt;Once you&amp;#8217;ve posted it, read the live version and edit out the mistakes you missed before&amp;nbsp;posting.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_answer_your_own_questions"&gt;Answer your own&amp;nbsp;Questions&lt;/h2&gt;&lt;p&gt;In the unlikely event that you can&amp;#8217;t get any help from StackOverflow initially - but later figure out the solution yourself - post both the question and the answer at the same time. As &lt;a href="http://balpha.de/"&gt;balpha&lt;/a&gt; said in the &lt;a href="#_article_comments_section"&gt;comments section&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;ve had a hard or interesting problem for which there&amp;#8217;s nothing on Stack Overflow yet, and you have eventually managed to solve it yourself: Ask &lt;em&gt;and answer&lt;/em&gt; the question. Someone else is bound to be having the same problem, and you already did the hard work. The &amp;#8220;ask question&amp;#8221; interface has a checkbox that lets you submit an answer alongside with the question. And if you&amp;#8217;ve already asked the question, and then &lt;em&gt;later&lt;/em&gt; managed to solve the problem: Go ahead, answer your own&amp;nbsp;question.&lt;/p&gt;
&lt;p&gt;Not only can you spare the next person with the same issue having to figure it out all over again - you also have a chance to get an upvote from them on both the question and the answer, for a total of 15&amp;nbsp;reputation!&lt;/p&gt;
&lt;p&gt;Reputation&amp;nbsp;Bonanza!&lt;/p&gt;
&lt;p&gt;If you later figure out the answer to one of your questions - or figure out a &lt;em&gt;better&lt;/em&gt; answer, or a new solution becomes available, come back and tell everyone by either answering - or adding an answer - to your own question: everyone&amp;nbsp;wins.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="Screenshot of the Self Learner Badge from StackOverflow" src="https://duncanlock.net/images/posts/the-smart-guide-to-stack-overflow-zero-to-hero/stackoverflow-self-learner-badge.png" /&gt;
&lt;figcaption&gt;Figure 8. Answered your own question with score of 3 or more.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;This is &lt;a href="http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/"&gt;offically encouraged&lt;/a&gt; - there are even badges for doing it, so Ask and Answer&amp;nbsp;away!&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;ve got any tips or advice I&amp;#8217;ve missed, I&amp;#8217;d love to hear about them in the comments&amp;nbsp;below.&lt;/p&gt;
&lt;hr /&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_footnotes_references"&gt;Footnotes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;References&lt;/h3&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class="footnotes"&gt;&lt;hr /&gt;&lt;ol class="footnotes"&gt;&lt;li class="footnote" id="_footnote_1"&gt;*Atom Feeds* (like &lt;span class="caps"&gt;RSS&lt;/span&gt; Feeds) can be used to allow users to subscribe to updates from a website. &lt;a href="http://en.wikipedia.org/wiki/Atom_(standard)"&gt;Wikipedia Atom Article&amp;#8230;&amp;#8203;&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_1" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_2"&gt;A *Feed Reader* is a piece of software (Desktop, Mobile or Web based) that allows users to collect/aggregate and read their Feeds, manage subscriptions and send notifications. &lt;a href="http://en.wikipedia.org/wiki/Feed_reader"&gt;Wikipedia Feed Reader Article&amp;#8230;&amp;#8203;&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_2" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_3"&gt;*&lt;span class="caps"&gt;IFTTT&lt;/span&gt;* enables you to create and share &amp;#8220;recipes&amp;#8221; that fit the simple statement: &amp;#8220;if this then that&amp;#8221;. The &amp;#8220;this&amp;#8221; part of a recipe is a trigger. Some example triggers are &amp;#8220;I&amp;#8217;m tagged in a photo on Facebook&amp;#8221; or &amp;#8220;I check in on Foursquare.&amp;#8221; The &amp;#8220;that&amp;#8221; part of a recipe is an action. Some example actions are &amp;#8220;send me a text message&amp;#8221; or &amp;#8220;create a status message on Facebook.&amp;#8221;. &lt;a href="http://en.wikipedia.org/wiki/IFTTT"&gt;Wikipedia &lt;span class="caps"&gt;IFTTT&lt;/span&gt; Article&amp;#8230;&amp;#8203;&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_3" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_4"&gt;*Gamification* is the use of game thinking and game mechanics in a non-game context in order to engage users and solve problems. &lt;a href="http://en.wikipedia.org/wiki/Gamification"&gt;Wikipedia Gamification Article&amp;#8230;&amp;#8203;&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_4" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Sat, 15 Jun 2013 01:03:28 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/06/14/the-smart-guide-to-stack-overflow-zero-to-hero/</guid></item><item><title>Don't use string constants when writing SQL statements in code</title><link>https://www.databasesandlife.com/dont-use-constants-for-table-and-column-names-when-writing-sql-statements/</link><description>&lt;p class="intro"&gt;I was always in two minds about using constants for table and column names when writing SELECT queries. Now I've concluded that constants are definitely bad, and should not be used. Here's why.&lt;/p&gt;
&lt;p&gt;The topic of discussion is difference is between writing&lt;/p&gt;
&lt;pre&gt;sql = "SELECT * FROM " + TABLE_NAME + " WHERE ..."&lt;/pre&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;pre&gt;sql = "SELECT * FROM my_table WHERE ..."&lt;/pre&gt;
&lt;p&gt;There are the following consequences from this choice as far as I can see:&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Fri, 14 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/dont-use-constants-for-table-and-column-names-when-writing-sql-statements/</guid></item><item><title>Explaining your PostgreSQL data</title><link>/2013/06/13/Explaining-your-PostgreSQL-data/</link><description>&lt;p&gt;I&amp;rsquo;ve written a bit before about &lt;a href="http://www.craigkerstiens.com/2013/01/10/more-on-postgres-performance/"&gt;understanding the output&lt;/a&gt; from &lt;code&gt;EXPLAIN&lt;/code&gt; and &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; in PostgreSQL. Though understandably getting a grasp on execution plans could probably use some more guidance. Yet, this time around I&amp;rsquo;m taking a bit of a cop out and highlighting a few tools instead of documenting myself, which I&amp;rsquo;ve done in a talk I&amp;rsquo;ve frequently given &lt;a href="https://speakerdeck.com/craigkerstiens/postgres-demystified-1"&gt;Postgres Demystified&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Explain explained" src="https://f.cl.ly/items/2Y0A0H2B2q3C0622261C/Screenshot_6_13_13_9_57_AM.png" /&gt;&lt;/p&gt;
&lt;h3 id="getting-at-the-data"&gt;
&lt;div&gt;
Getting at the Data
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;The first small thing you can do is actually retrieve the data in JSON form. By adding in &lt;code&gt;(format json)&lt;/code&gt; right after your &lt;code&gt;EXPLAIN&lt;/code&gt; or &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; command it&amp;rsquo;ll as you&amp;rsquo;d expect return it in JSON. To give an example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# EXPLAIN SELECT * FROM users LIMIT 1;
QUERY PLAN
--------------------------------------------------------------
Limit (cost=0.00..0.03 rows=1 width=812)
-&amp;gt; Seq Scan on users (cost=0.00..1.50 rows=50 width=812)
(2 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then in JSON format:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;EXPLAIN (format json) SELECT * FROM users LIMIT 1;
QUERY PLAN
------------------------------------------------
[ +
{ +
&amp;quot;Plan&amp;quot;: { +
&amp;quot;Node Type&amp;quot;: &amp;quot;Limit&amp;quot;, +
&amp;quot;Startup Cost&amp;quot;: 0.00, +
&amp;quot;Total Cost&amp;quot;: 0.03, +
&amp;quot;Plan Rows&amp;quot;: 1, +
&amp;quot;Plan Width&amp;quot;: 812, +
&amp;quot;Plans&amp;quot;: [ +
{ +
&amp;quot;Node Type&amp;quot;: &amp;quot;Seq Scan&amp;quot;, +
&amp;quot;Parent Relationship&amp;quot;: &amp;quot;Outer&amp;quot;,+
&amp;quot;Relation Name&amp;quot;: &amp;quot;users&amp;quot;, +
&amp;quot;Alias&amp;quot;: &amp;quot;users&amp;quot;, +
&amp;quot;Startup Cost&amp;quot;: 0.00, +
&amp;quot;Total Cost&amp;quot;: 1.50, +
&amp;quot;Plan Rows&amp;quot;: 50, +
&amp;quot;Plan Width&amp;quot;: 812 +
} +
] +
} +
} +
]
(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While its on my list to build some interesting apps by pulling in the JSON input, others may be equally as interested in taking advantage of this data in its JSON form. If you take a shot at building something with this output, as always I&amp;rsquo;d love to hear about it - &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens@gmail.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="despez"&gt;
&lt;div&gt;
Despez
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Of course if you&amp;rsquo;re itch isn&amp;rsquo;t in better tools for Postgres, you may just want to have a solution that works today. While its not perfect, one of the best ones out there is &lt;a href="http://explain.depesz.com/"&gt;Dezpez&amp;rsquo;s explain tool&lt;/a&gt;. You can take any execution plan and paste it in and get some better visual representation of the result. You can also &lt;a href="http://explain.depesz.com/s/vL1"&gt;share them as well&lt;/a&gt;.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 13 Jun 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/06/13/Explaining-your-PostgreSQL-data/</guid></item><item><title>Who are the weak Christians?</title><link>https://honza.pokorny.ca/2013/06/who-are-the-weak-christians/</link><description>&lt;p&gt;When you look around you while sitting in a church service, you will generally
have a sense of who is who.  You know who the nice people are, who the grumps
are and who always causes trouble.  You know the people who always ask silly
questions, and you know the people that always seem to know what to say when
you are helpless.  You might have an idea of who is a strong Christian and who
has ways to go.&lt;/p&gt;
&lt;p&gt;We all do.&lt;/p&gt;
&lt;p&gt;What does the Bible say about strong and weak Christians?  In Romans 14, Paul
gives us an answer to this question.  If you are anything like me, his answer
might surprise you:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As for the one who is weak in faith, welcome him, but not to quarrel over
opinions. One person believes he may eat anything, while the weak person
eats only vegetables. (Romans 14:1-2, ESV)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Paul is saying here that the weaker Christian is the kind of person who has
lesser freedom in Christ.  They think that those who eat meat aren&amp;rsquo;t real
Christians and they need to learn.  They are bound by their conscience to obey
additional rules to honor the Lord.&lt;/p&gt;
&lt;p&gt;This is very interesting because our natural inclination is to see those with a
zeal for good, Christian rules as more mature in the faith.  If you are
exhorting others to do this and stop doing that, you are more likely to be
viewed as a mature Christian.  However, the Bible says that the opposite is
true.  Strong Christians have a greater freedom in the gospel than their weaker
brothers.  Their conscience doesn&amp;rsquo;t prevent them from doing certain things.
Their legalistic tendencies are minimal.&lt;/p&gt;
&lt;p&gt;A great example before you go: in Acts 10, Peter is told to eat unclean
animals.  These animals were unclean according to the law which was now
fulfilled in Jesus.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But Peter said, &amp;ldquo;By no means, Lord; for I have never eaten anything that is
common or unclean.&amp;rdquo; (Acts 10:14, ESV)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Peter&amp;rsquo;s conscience is weak and needs to be redeemed by the Holy Spirit.  This
is a great example of a weak person becoming stronger in the faith.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Thu, 13 Jun 2013 17:34:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/06/who-are-the-weak-christians/</guid></item><item><title>We Just Redesigned ReadWrite</title><link>http://www.readwrite.com/2013/06/11/new-new-readwrite</link><description>&lt;p&gt;ReadWrite&amp;#8217;s new site looks fantastic, very reminiscent of Digg&amp;#8217;s current design.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;It would have been easy at that point to rest on our laurels. But we and our colleagues at Say Media, our parent company, whose technology and design teams worked tirelessly on this launch, wanted to keep pushing our design forward and drop the remnants of the &amp;#8217;90s-era Web that clung to our site.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good for them.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.readwrite.com/2013/06/11/new-new-readwrite"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 13 Jun 2013 12:45:36 GMT</pubDate><guid isPermaLink="true">http://www.readwrite.com/2013/06/11/new-new-readwrite</guid></item><item><title>Microsoft turns Siri against Apple</title><link>http://www.macworld.com/article/2039629/microsoft-turns-siri-against-apple-in-hilarious-new-windows-8-ad.html?%23tk.out_mod?=obinsite</link><description>&lt;p&gt;Reminds me of &lt;a href="http://en.wikipedia.org/wiki/Get_a_Mac"&gt;the old &amp;#8220;I&amp;#8217;m a Mac, and I&amp;#8217;m a PC&amp;#8221;&lt;/a&gt; days. Even though, as Ian Paul points out in his article, the commercial is laughably innacruate, I still had a good chuckle.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.macworld.com/article/2039629/microsoft-turns-siri-against-apple-in-hilarious-new-windows-8-ad.html?%23tk.out_mod?=obinsite"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 13 Jun 2013 12:12:05 GMT</pubDate><guid isPermaLink="true">http://www.macworld.com/article/2039629/microsoft-turns-siri-against-apple-in-hilarious-new-windows-8-ad.html?%23tk.out_mod?=obinsite</guid></item><item><title>Fixing Homebrew</title><link>https://thomashunter.name/posts/2013-06-13-fixing-homebrew</link><author>Thomas Hunter II</author><pubDate>Thu, 13 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-06-13-fixing-homebrew</guid></item><item><title>Two Sides of the Same Coin</title><link>https://xavd.id/blog/post/two-sides-of-the-same/</link><description>undefined&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xavd.id/blog/post/two-sides-of-the-same/"&gt;Read the whole thing&lt;/a&gt;.</description><author>The David Brownman Blog</author><pubDate>Thu, 13 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://xavd.id/blog/post/two-sides-of-the-same/</guid></item><item><title>Gotcha with basic HTTP authentication in Python</title><link>https://cmetcalfe.ca/blog/gotcha-with-basic-http-authentication-with-python.html</link><description>&lt;p&gt;When doing basic HTTP authentication in Python, make sure your
authentication realm is surrounded by double, &lt;em&gt;NOT&lt;/em&gt; single quotes.&lt;/p&gt;
&lt;p&gt;Bad:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;
&lt;span class="normal"&gt;2&lt;/span&gt;
&lt;span class="normal"&gt;3&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;401&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send_header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;WWW-Authenticate&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Basic realm='/'&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;end_headers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Good:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;
&lt;span class="normal"&gt;2&lt;/span&gt;
&lt;span class="normal"&gt;3&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;401&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send_header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;WWW-Authenticate&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Basic realm=&lt;/span&gt;&lt;span class="se"&gt;\&amp;quot;&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\&amp;quot;&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;end_headers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The single quotes work with most browsers, curl, wget, and tons of other
tools. However, when using Python to access the page (using
&lt;a href="http://docs.python.org/2/library/urllib2.html#urllib2.HTTPPasswordMgrWithDefaultRealm"&gt;urllib2.HTTPPasswordMgrWithDefaultRealm&lt;/a&gt; to manage authentication)
single quotes don't trigger the "automatic retry with authentication"
response, and instead just raise a 401 &lt;code&gt;HTTPError&lt;/code&gt;.&lt;/p&gt;</description><author>Carey Metcalfe</author><pubDate>Thu, 13 Jun 2013 02:53:00 GMT</pubDate><guid isPermaLink="true">https://cmetcalfe.ca/blog/gotcha-with-basic-http-authentication-with-python.html</guid></item><item><title>Fertile Ground</title><link>http://www.marco.org/2013/06/11/fertile-ground</link><description>&lt;p&gt;&amp;#8220;Apple has set fire to iOS. Everything&amp;#8217;s in flux. Those with the least to lose have the most to gain, because this fall, hundreds of millions of people will start demanding apps for a platform with thousands of old, stale players and not many new, nimble alternatives. If you want to enter a category that&amp;#8217;s crowded on iOS 6, and you&amp;#8217;re one of the few that exclusively targets iOS 7, your app can look better, work better, and be faster and cheaper to develop than most competing apps.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Now I see why this article was at the top of the Hacker News front page. Marco is very hopeful for this fall, and rightly so: iOS 7 does indeed present a rare opportunity for existing markets to be disrupted by brand new entrants. I&amp;#8217;m extremely excited to see what comes next, especially from Marco. We are moving towards a very interesting time; buckle up and hold on.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.marco.org/2013/06/11/fertile-ground"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 13 Jun 2013 00:24:24 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/06/11/fertile-ground</guid></item><item><title>Bang, You're Dead. Signed, Tim Cook.</title><link>https://zacs.site/blog/bang-youre-dead.html</link><description>&lt;p&gt;Almost every time Apple releases a new version of iOS, someone has the &lt;a href="https://twitter.com/search?q=shit%20from%3Amarcoarment&amp;amp;src=typd"&gt;Marco Arment &amp;#8220;Well, shit&amp;#8221; moment&lt;/a&gt;. The time, most prominently, it was &lt;a href="https://agilebits.com/onepassword"&gt;1Password&amp;#8217;s&lt;/a&gt; turn, although other small, one-off app developers likely had similar reactions throughout the keynote.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/bang-youre-dead.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 13 Jun 2013 00:12:27 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/bang-youre-dead.html</guid></item><item><title>Why Nintendo Won't Make Games for Smartphones</title><link>http://www.theverge.com/2013/6/12/4422020/why-nintendo-wont-make-smartphone-games</link><description>&lt;p&gt;The temptation certainly exists to criticize Satoru Iwata and his decision not to bring the company&amp;#8217;s most popular titles to mobile gaming platforms like iOS; however, looking beyond our disappointment at being unable to play Pokemon and Mario Kart on the iPhone, we can look at the situation dispassionately and draw a number of parallels between Nintendo and Apple, Satoru Iwata and Steve Jobs: both men led (and lead) their respective corporations with a complicated, long-term vision for success. As the sole possessor of this grand master plan, Iwata&amp;#8217;s decisions, like Jobs&amp;#8217;s, sometimes seem nonsensical and even cryptic, in a way. Nonsensical or not though, no one in their right mind would argue that Steve Jobs was anything less than a genius; perhaps, in time, the same will prove true of Satoru Iwata.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/6/12/4422020/why-nintendo-wont-make-smartphone-games"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 13 Jun 2013 00:09:36 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/6/12/4422020/why-nintendo-wont-make-smartphone-games</guid></item><item><title>Matt Gemmel on iOS 7</title><link>http://mattgemmell.com/2013/06/12/ios-7/</link><description>&lt;p&gt;Wonderfully worded and impressively well thought-out, Matt Gemmel&amp;#8217;s article &lt;em&gt;iOS 7&lt;/em&gt; is easily the best piece on the topic I have read since the WWDC keynote address. In explaining the motivation behind Apple&amp;#8217;s complete UI overhaul in iOS7, he began his one-two punch with this paragraph:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;The thing is, we&amp;#8217;ve grown up. We don&amp;#8217;t require hand-holding to tell us what to click or tap. Interactivity is a matter of invitation, and physical cues are only one specific type. iOS 7 is an iOS for a more mature consumer, who understands that digital surfaces are interactive, and who doesn&amp;#8217;t want anything getting in the way of their content.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then, following up, he said something &lt;a href="https://zacs.site/blog/anti-ios-7-anger.html"&gt;curiously familiar&lt;/a&gt; before moving on with the article:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;The basic functionality hasn&amp;#8217;t changed. You still use iOS in the same way, and almost everything is where you expect it to be. The same gestures work. There are a few differences here and there - it&amp;#8217;s a major new version of the OS, after all - but the changes are mostly aesthetic. You won&amp;#8217;t be confused by iOS 7 if you&amp;#8217;re accustomed to a previous version.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://mattgemmell.com/2013/06/12/ios-7/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 12 Jun 2013 20:56:19 GMT</pubDate><guid isPermaLink="true">http://mattgemmell.com/2013/06/12/ios-7/</guid></item><item><title>Anti-iOS 7 Anger</title><link>https://zacs.site/blog/anti-ios-7-anger.html</link><description>&lt;p&gt;I try to, for the most part, stay positive when I write on here. Instead of taking a page out of Jim Dalrymple&amp;#8217;s play book, not that there is anything wrong with his approach, and calling shenanigans and bullshit when I see shenanigans and bullshit, I try to &amp;#8220;take the high road&amp;#8221; and either ignore bad writing and poorly-formed opinions altogether, or criticize them generously. In the wake of the iOS 7 announcement though, many people have said things that I consider&amp;#160;&amp;#8212;&amp;#160;quite frankly&amp;#160;&amp;#8212;&amp;#160;stupid, especially concerning iOS 7&amp;#8217;s overhauled interface.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/anti-ios-7-anger.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 12 Jun 2013 20:12:56 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/anti-ios-7-anger.html</guid></item><item><title>How I Survived A Week Without Food</title><link>http://www.popsci.com/science/article/2013-06/how-i-survived-week-without-food</link><description>&lt;p&gt;&amp;#8220;I think of it much in the same way I do exercise&amp;#160;&amp;#8212;&amp;#160;you just have to make yourself miserable for a finite period of time, to reap the benefits later.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Another Soylent story, this one, interestingly, less lauding than the others.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.popsci.com/science/article/2013-06/how-i-survived-week-without-food"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 12 Jun 2013 20:05:53 GMT</pubDate><guid isPermaLink="true">http://www.popsci.com/science/article/2013-06/how-i-survived-week-without-food</guid></item><item><title>Alright Tim, I'm Buying a Mac</title><link>https://zacs.site/blog/im-buying-a-mac.html</link><description>&lt;p&gt;Surrounded by Tweetbot on my iPhone, iMore&amp;#8217;s live blog on one iPad and Apple&amp;#8217;s keynote stream on another, and flanked by my inconveniently inoperable computer, I watched Tim Cook introduce iOS 7. Even now, I can&amp;#8217;t quite quantify the feeling I had upon seeing iOS 7 for the first time: a mixture of surprise and relief at the departure from almost every previously-held design philosophy, amazement for reasons that anyone who watched the keynote or read one of the many blog posts recapping the event would find obvious, and perhaps even euphoria for some inexplicable reason. iOS 7 is beautiful, plain and simple, and the reason my next computer will be a Mac.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/im-buying-a-mac.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 11 Jun 2013 22:11:55 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/im-buying-a-mac.html</guid></item><item><title>The Journal</title><link>https://zacs.site/blog/the-journal.html</link><description>&lt;p&gt;Although I make it a point not to spend much time talking about my personal life on this blog, it occasionally creeps in to my writing in the form of an anecdote, perhaps, or the inspiration for an entire article. A few weeks before Christmas last year, I linked to an article by Jason Snell titled &lt;a href="http://www.macworld.com/article/2018600/why-im-writing-on-the-ipad.html"&gt;&lt;em&gt;Why I&amp;#8217;m Writing on the iPad&lt;/em&gt;&lt;/a&gt;, in which he talked about a time when he was forced to write using a pen and paper rather than on a computer. In &lt;a href="https://zacs.site/blog/writing-on-the-ipad.html"&gt;my brief article linking to that piece&lt;/a&gt;, I talked about a six month period during which I kept a journal for a person very near and dear to my heart. I happened across that article a few minutes ago in the process of writing a new piece, and this paragraph struck a chord:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-journal.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 11 Jun 2013 21:57:12 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-journal.html</guid></item><item><title>James LaCroix: Founder of LaCrox Design Co</title><link>https://solomon.io/james-lacroix-founder-of-lacrox-design-co/</link><description>James LaCroix is the founder of The LaCroix Design Company and 1 Page Sites.</description><author>Sam Solomon</author><pubDate>Tue, 11 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/james-lacroix-founder-of-lacrox-design-co/</guid></item><item><title>Fasting in the face of corruption</title><link>https://walkabout165.blogspot.com/2011/08/fasting-in-face-of-corruption.html</link><description>&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFCAXaSt0MIU6Ii_fXLmOFP0mniCDJcfAyS-zkUSOa13podAv2-2n8gZKSswCjvEU0yO8fUyEhDkaF9XHJSdNZEhFjI6Lbb2Tgj7tJDZDHn9asJPdqcfIFvvsX6dCUcKN0743Oa3ZvWD7W/s1600/AntiCorruption.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5645896191642224706" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFCAXaSt0MIU6Ii_fXLmOFP0mniCDJcfAyS-zkUSOa13podAv2-2n8gZKSswCjvEU0yO8fUyEhDkaF9XHJSdNZEhFjI6Lbb2Tgj7tJDZDHn9asJPdqcfIFvvsX6dCUcKN0743Oa3ZvWD7W/s400/AntiCorruption.jpg" style="cursor: hand; cursor: pointer; height: 300px; width: 400px;" /&gt;&lt;/a&gt;
&lt;br /&gt;
This is an interim post as I'm completing the (large) post for the recent India work. 
&lt;br /&gt;
Indians recently have been supercharged by the protest, arrest, and fasting of a famous activist named Anna Hazare.  (Anna's a man's name here).  He's an older fellow associating himself with Gandhian tradition.  He advocates the passage of a far-reaching anti-corruption bill in Parliament.  The photo above shows the gateway of the remote rural school I was staying at in Orissa state's far-afield Parlekhemundi.  When Anna was arrested, the students at the school spelled out 'No More Corruption' in candles, pictured above.  Later they marched en masse around the town. 
&lt;br /&gt;
I first heard of this man in business school during a class in social entrepreneurship describing how back in the 1980's he got a village in Maharashtra state to close its abused alcohol shops, ultimately leading to much greater prosperity in the village.  (I found it interesting, I am still as big a fan as the next guy of spirits ;) )  He's since set his sites on eradicating Indian corruption now, which is sort of like living in California and trying to eradicate the sunshine.  So his influence and capturing of the Indian spirit is really impressive.  Also, the body he demands to pass his bill is the same containing the members he accuses of corruption - people who would risk being detained and punished for corrupt practices after the bill's passage.  Talk about an uphill battle.  And so the progress of his movement's success is all the more impressive - Parliament agreed in principle to his demands, and after twelve days his fast was to close just this morning.  Can you imagine, in the US, someone fasting to protest campaign finance?  Then can you imagine that within two weeks, both houses of Congress debating the issue ad nauseam due to his fast?  I think our system would let the man starve without so much as paying lip service to his cause inside the Capitol. 
&lt;br /&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK4WfQDMb-c7RNrhtyZ4YcyJQIcRgHDL3mSpTcOS0MF8DYE8LKkOTAcbRyzKCIIAtet5_vAiAZ0f3c6Z64yllwNKg9davjNq2wfoq7eNo7kSf7zO6doUx8EsLE38W3PzzYshAMmSXxRDze/s1600/Hazare+flag+holder.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5645895790562502914" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK4WfQDMb-c7RNrhtyZ4YcyJQIcRgHDL3mSpTcOS0MF8DYE8LKkOTAcbRyzKCIIAtet5_vAiAZ0f3c6Z64yllwNKg9davjNq2wfoq7eNo7kSf7zO6doUx8EsLE38W3PzzYshAMmSXxRDze/s400/Hazare+flag+holder.jpg" style="cursor: hand; cursor: pointer; height: 300px; width: 400px;" /&gt;&lt;/a&gt;
&lt;br /&gt;
Well as I write I'm in Delhi during a two day layover.  I overcame a bout of Delhi-belly (don't eat from the roadside nut vendors!) that unfortunately emptied itself all over the center of Connaught Place, and promptly headed to the city's Ramlila Maidan grounds to see Hazare's protest.&lt;br /&gt;


&lt;br /&gt;
I tried on a hat of the same style that Mr. Hazare wears - see the photo below of an example of one - these hats were very popular at his rally, and a local handed me one :)  . &amp;nbsp;Yet I debated how much direct support I wanted to show - I generally try to steer clear of showing my opinions in the middle of another country's political rally especially when I have limited visibility into the issues.  Academics can rightly critique that his rally is motivating the passage of a bill forming a top-level organization above parliament and answerable to no one. I decided that anti-corruption in general was a worthwhile theme to get around, and moreover that marshaling the public energy towards achieving a shared public good is much more needed in the short term than early intellectual dithering resulting in inaction.  I see and experience the far reaching effects of corruption every day while in India, including my day's Delhi-belly (think public works, sanitation, promoting food-prep practices).  See my later posts from 2008 showing some effects of corruption.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKT3wAXSCKwFXAnP3ohmhm1EghYa1dcrRPnpnlQ7gxp-RvQpCpjXnf562fPo1adl0N8LdhNrDCqeF6m32ptlpTdq2i3Yp_4P8EKGyBIJok806mH4C8jQ-JvCReblXWYwXUs30lAl3-MPL0/s1600/Grandpa+protest+two.jpg"&gt;&lt;img /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;i&gt;How often does your grandfather (e.g. above) care enough about an issue that he'll *sit* and perhaps even *sleep* in the middle of the protest grounds?&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
I came across just one other foreigner on the grounds; I guess I was a little disappointed in the backpacker set.  A note for travelers staying in Delhi:  If you're going to stay in a moderately priced guesthouse, I highly recommend staying in Delhi's suburb called Gurgaon.  The chaos level is *much* less than the Delhi itself, tends to be much cleaner, and often still with good access to the metro subway.  I'll recommend where I stayed with excellent ambience and super friendly staff, the Royal Park Plaza in DLF Phase-1.  You can search it on Google.</description><author>The Walkabout Blog</author><pubDate>Tue, 11 Jun 2013 02:25:09 GMT</pubDate><guid isPermaLink="true">https://walkabout165.blogspot.com/2011/08/fasting-in-face-of-corruption.html</guid></item><item><title>Rosalind Problems in Clojure</title><link>https://johnj.com/posts/rosalind-problems-in-clojure/</link><description>&lt;p&gt;
This weekend I’ve been having a lot of fun working the Bioinformatics
problems from &lt;a href="http://rosalind.info/"&gt;Rosalind&lt;/a&gt;. Most people work them in Python, but so far
they have been very amenable to Clojure except where BioPython
libraries are used for access to online databases. The problems have
been straightforward so far but I have enjoyed the elegance and
brevity that Clojure lends the solutions.&lt;/p&gt;
&lt;p&gt;
In particular, I like this short translator &lt;a href="http://rosalind.info/problems/prot/"&gt;from RNA sequences to
amino acids&lt;/a&gt;:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;;; Translating RNA into Amino Acids
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defmacro deftable [tname &amp;amp; rest]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  `(def ~tname (apply hash-map '(~@rest))))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(deftable proteins
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UUU F      CUU L      AUU I      GUU V
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UUC F      CUC L      AUC I      GUC V
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UUA L      CUA L      AUA I      GUA V
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UUG L      CUG L      AUG M      GUG V
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UCU S      CCU P      ACU T      GCU A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UCC S      CCC P      ACC T      GCC A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UCA S      CCA P      ACA T      GCA A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UCG S      CCG P      ACG T      GCG A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UAU Y      CAU H      AAU N      GAU D
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UAC Y      CAC H      AAC N      GAC D
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UAA Stop   CAA Q      AAA K      GAA E
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UAG Stop   CAG Q      AAG K      GAG E
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UGU C      CGU R      AGU S      GGU G
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UGC C      CGC R      AGC S      GGC G
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UGA Stop   CGA R      AGA R      GGA G
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  UGG W      CGG R      AGG R      GGG G)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(defn to-protein [s]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  (-&amp;gt;&amp;gt; s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (partition 3)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (map (partial apply str))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (map symbol)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (map proteins)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (take-while #(not= % 'Stop))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;       (apply str)))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
The body of the &lt;code class="verbatim"&gt;proteins&lt;/code&gt; table is literally cut-and-pasted from &lt;a href="http://rosalind.info/problems/prot/"&gt;the
problem page&lt;/a&gt; (click on “RNA codon table”). I think it’s a good example
of using macros to provide a little bit of syntactic sugar to make the
code just a little more readable and elegant, or to encode domain
facts as directly as possible.&lt;/p&gt;
&lt;p&gt;
This and my other solutions so far are &lt;a href="https://github.com/eigenhombre/rosalind"&gt;up on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;





&lt;a href="https://johnj.com/roz.jpg"&gt;&lt;img class="resize" src="https://johnj.com/roz_hu_8fb41ee3fe8b1cdb.jpg" style="width: 600px; border: 0px solid black;" /&gt;&lt;/a&gt;

&lt;/p&gt;</description><author>John Jacobsen</author><pubDate>Sun, 09 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/rosalind-problems-in-clojure/</guid></item><item><title>SSH into a machine with a dynamic IP</title><link>https://thomashunter.name/posts/2013-06-09-ssh-into-a-machine-with-a-dynamic-ip</link><author>Thomas Hunter II</author><pubDate>Sun, 09 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-06-09-ssh-into-a-machine-with-a-dynamic-ip</guid></item><item><title>Build a Better Warrior in Rift</title><link>https://benovermyer.com/blog/2013/06/build-a-better-warrior-in-rift/</link><description>&lt;p&gt;I've been playing Rift a lot lately, and the more I play, the better I understand the ins and outs of being a Warrior. This post has a few of my thoughts on the subject of tuning warrior builds. The class is really versatile, but focuses heavily on two aspects - tanking and dealing damage. That much is obvious. What is less obvious is that there are several ways to do each of these. My personal preference is for dealing respectable amounts of damage to multiple enemies while being able to take a lot of punishment before going down. My favorite ability for staying in the fight is &lt;strong&gt;No Permission to Die&lt;/strong&gt;. It's in the fifth tier of the Warlord soul, and it can be a godsend. If you die within ten seconds of triggering it, you are resurrected at 50% of your maximum health. Properly timed, it can really save your bacon. Also, it's not on global cooldown, so it's really hard to NOT time it right if you have a good sense of your combat situation. My next favorite ability is &lt;strong&gt;Cornered Beast&lt;/strong&gt;, which is the 32 point unlock for the Champion soul. It hits up to 6 enemies for a ton of damage over time AND generates Attack Points over time, making it a powerful threat-building ability. Awesome for tanks, and for area effect damage. Along with Warlord and Champion, picking the Reaver soul allows for a ridiculous amount of survivability. It has a number of abilities that boost armor, endurance, and resistances. A balanced mix of the three souls, like the &lt;a href="http://rift.magelo.com/en/stc/zzkBLlckIkrhz00zvl0V0ocMzzvlz0Vhzo" rel="external"&gt;build linked here (Champion (32) / Warlord (23) / Reaver (21))&lt;/a&gt;, will give you a decent AoE tanking playstyle. You won't win any DPS races, but it will keep you in the fight for a good long time.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 08 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/06/build-a-better-warrior-in-rift/</guid></item><item><title>How to switch to Compton for beautiful tear free compositing in XFCE</title><link>https://duncanlock.net/blog/2013/06/07/how-to-switch-to-compton-for-beautiful-tear-free-compositing-in-xfce/</link><description>&lt;p&gt;I switched my &lt;span class="caps"&gt;XFCE&lt;/span&gt; machines over to use Compton for window compositing today - and it’s a noticeable improvement.&lt;/p&gt;
&lt;p&gt;A compositor glues your stacks of windows together to form the final image that you see on screen. It’s responsible for any fancy effects like drop-shadows, as well drawing windows while dragging, resizing and minimizing or maximizing them. &lt;a class="footnote-ref" href="#_footnote_1" id="_footnoteref_1" title="View footnote 1"&gt;[1]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Compton does this &lt;em&gt;beautifully&lt;/em&gt;. It does one thing and it does it well. It provides glassy smooth, tear free compositing and supports a few tasteful effects - drop shadows, fades and transparency.&lt;/p&gt;
&lt;p&gt;I stumbled across this while searching for something else and found a great guide in the NeoWin forums &lt;a class="footnote-ref" href="#_footnote_2" id="_footnoteref_2" title="View footnote 2"&gt;[2]&lt;/a&gt;, where most of this info comes from, so thanks ViperAFK.&lt;/p&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_switch_off_the_existing_compositor"&gt;Switch off the existing compositor&lt;/h2&gt;&lt;div class="image-block align-right"&gt;&lt;img alt="Screenshot of the XFCE Applications menu, with the Settings Manager highlighted." src="https://duncanlock.net/images/posts/how-to-switch-to-compton-for-beautiful-tear-free-compositing-in-xfce/xfce-applications-menu-settings-manager.png" /&gt;&lt;/div&gt;
&lt;p&gt;You’ll need to switch of any existing compositing you’ve got running, otherwise this won’t work. Unless you know differently, this will be the default one, built into the &lt;span class="caps"&gt;XFCE&lt;/span&gt; window manager, xfwm4.&lt;/p&gt;
&lt;p&gt;To switch this off, go into the Applications menu and click ‘Settings Manager’:&lt;/p&gt;
&lt;p&gt;Then click ‘Window Manager Tweaks’, then the ‘Compositor’ tab, and un-tick the ‘Enable Display Compositing’ box:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="Screenshot of the XFCE Settings Manager - Window Manager Tweaks window, with 'Enable Display Compositing un-ticked'" src="https://duncanlock.net/images/posts/how-to-switch-to-compton-for-beautiful-tear-free-compositing-in-xfce/xfce-settings-manager-window-manager-tweaks-disable-compositing.png" /&gt;&lt;/div&gt;
&lt;p&gt;Once you’ve switched off any existing compositor, you can install Compton.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_install_compton"&gt;Install Compton&lt;/h2&gt;&lt;p&gt;To do that, run the following commands in a terminal window. These will add the official Compton &lt;span class="caps"&gt;PPA&lt;/span&gt; &lt;a class="footnote-ref" href="#_footnote_3" id="_footnoteref_3" title="View footnote 3"&gt;[3]&lt;/a&gt; and then install it:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-add-repository ppa:richardgv/compton
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;compton&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_configure_compton"&gt;Configure Compton&lt;/h2&gt;&lt;p&gt;Once it’s installed, create a text file in &lt;code&gt;~/.config/&lt;/code&gt; called &lt;code&gt;compton.conf&lt;/code&gt; with the following contents:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;#################################
#
# Backend
#
#################################
&lt;/span&gt;
&lt;span class="c"&gt;# Backend to use: "xrender" or "glx".
# GLX backend is typically much faster but depends on a sane driver.
&lt;/span&gt;&lt;span class="n"&gt;backend&lt;/span&gt; = &lt;span class="s2"&gt;"glx"&lt;/span&gt;;

&lt;span class="c"&gt;#################################
#
# GLX backend
#
#################################
&lt;/span&gt;
&lt;span class="n"&gt;glx&lt;/span&gt;-&lt;span class="n"&gt;no&lt;/span&gt;-&lt;span class="n"&gt;stencil&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;

&lt;span class="c"&gt;# GLX backend: Copy unmodified regions from front buffer instead of redrawing them all.
# My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified,
# but a 20% increase when only 1/4 is.
# My tests on nouveau show terrible slowdown.
# Useful with --glx-swap-method, as well.
&lt;/span&gt;&lt;span class="n"&gt;glx&lt;/span&gt;-&lt;span class="n"&gt;copy&lt;/span&gt;-&lt;span class="n"&gt;from&lt;/span&gt;-&lt;span class="n"&gt;front&lt;/span&gt; = &lt;span class="n"&gt;false&lt;/span&gt;;

&lt;span class="c"&gt;# GLX backend: Use MESA_copy_sub_buffer to do partial screen update.
# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated.
# May break VSync and is not available on some drivers.
# Overrides --glx-copy-from-front.
# glx-use-copysubbuffermesa = true;
&lt;/span&gt;
&lt;span class="c"&gt;# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe).
# Recommended if it works.
# glx-no-rebind-pixmap = true;
&lt;/span&gt;

&lt;span class="c"&gt;# GLX backend: GLX buffer swap method we assume.
# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1).
# undefined is the slowest and the safest, and the default value.
# copy is fastest, but may fail on some drivers,
# 2-6 are gradually slower but safer (6 is still faster than 0).
# Usually, double buffer means 2, triple buffer means 3.
# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers.
# Useless with --glx-use-copysubbuffermesa.
# Partially breaks --resize-damage.
# Defaults to undefined.
&lt;/span&gt;&lt;span class="n"&gt;glx&lt;/span&gt;-&lt;span class="n"&gt;swap&lt;/span&gt;-&lt;span class="n"&gt;method&lt;/span&gt; = &lt;span class="s2"&gt;"undefined"&lt;/span&gt;;

&lt;span class="c"&gt;#################################
#
# Shadows
#
#################################
&lt;/span&gt;
&lt;span class="c"&gt;# Enabled client-side shadows on windows.
&lt;/span&gt;&lt;span class="n"&gt;shadow&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
&lt;span class="c"&gt;# Don't draw shadows on DND windows.
&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;-&lt;span class="n"&gt;dnd&lt;/span&gt;-&lt;span class="n"&gt;shadow&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
&lt;span class="c"&gt;# Avoid drawing shadows on dock/panel windows.
&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;-&lt;span class="n"&gt;dock&lt;/span&gt;-&lt;span class="n"&gt;shadow&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
&lt;span class="c"&gt;# Zero the part of the shadow's mask behind the window. Fix some weirdness with ARGB windows.
&lt;/span&gt;&lt;span class="n"&gt;clear&lt;/span&gt;-&lt;span class="n"&gt;shadow&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
&lt;span class="c"&gt;# The blur radius for shadows. (default 12)
&lt;/span&gt;&lt;span class="n"&gt;shadow&lt;/span&gt;-&lt;span class="n"&gt;radius&lt;/span&gt; = &lt;span class="m"&gt;5&lt;/span&gt;;
&lt;span class="c"&gt;# The left offset for shadows. (default -15)
&lt;/span&gt;&lt;span class="n"&gt;shadow&lt;/span&gt;-&lt;span class="n"&gt;offset&lt;/span&gt;-&lt;span class="n"&gt;x&lt;/span&gt; = -&lt;span class="m"&gt;5&lt;/span&gt;;
&lt;span class="c"&gt;# The top offset for shadows. (default -15)
&lt;/span&gt;&lt;span class="n"&gt;shadow&lt;/span&gt;-&lt;span class="n"&gt;offset&lt;/span&gt;-&lt;span class="n"&gt;y&lt;/span&gt; = -&lt;span class="m"&gt;5&lt;/span&gt;;
&lt;span class="c"&gt;# The translucency for shadows. (default .75)
&lt;/span&gt;&lt;span class="n"&gt;shadow&lt;/span&gt;-&lt;span class="n"&gt;opacity&lt;/span&gt; = &lt;span class="m"&gt;0&lt;/span&gt;.&lt;span class="m"&gt;5&lt;/span&gt;;

&lt;span class="c"&gt;# Set if you want different colour shadows
# shadow-red = 0.0;
# shadow-green = 0.0;
# shadow-blue = 0.0;
&lt;/span&gt;
&lt;span class="c"&gt;# The shadow exclude options are helpful if you have shadows enabled. Due to the way compton draws its shadows, certain applications will have visual glitches
# (most applications are fine, only apps that do weird things with xshapes or argb are affected).
# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher.
&lt;/span&gt;&lt;span class="n"&gt;shadow&lt;/span&gt;-&lt;span class="n"&gt;exclude&lt;/span&gt; = [
    &lt;span class="s2"&gt;"! name~=''"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'Notification'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'Plank'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'Docky'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'Kupfer'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'xfce4-notifyd'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'VLC'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'compton'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'Chromium'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'Chrome'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'Firefox'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g = 'Conky'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g = 'Kupfer'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g = 'Synapse'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g ?= 'Notify-osd'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g ?= 'Cairo-dock'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g ?= 'Xfce4-notifyd'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g ?= 'Xfce4-power-manager'"&lt;/span&gt;
];
&lt;span class="c"&gt;# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners)
&lt;/span&gt;&lt;span class="n"&gt;shadow&lt;/span&gt;-&lt;span class="n"&gt;ignore&lt;/span&gt;-&lt;span class="n"&gt;shaped&lt;/span&gt; = &lt;span class="n"&gt;false&lt;/span&gt;;

&lt;span class="c"&gt;#################################
#
# Opacity
#
#################################
&lt;/span&gt;
&lt;span class="n"&gt;menu&lt;/span&gt;-&lt;span class="n"&gt;opacity&lt;/span&gt; = &lt;span class="m"&gt;1&lt;/span&gt;;
&lt;span class="n"&gt;inactive&lt;/span&gt;-&lt;span class="n"&gt;opacity&lt;/span&gt; = &lt;span class="m"&gt;1&lt;/span&gt;;
&lt;span class="n"&gt;active&lt;/span&gt;-&lt;span class="n"&gt;opacity&lt;/span&gt; = &lt;span class="m"&gt;1&lt;/span&gt;;
&lt;span class="n"&gt;frame&lt;/span&gt;-&lt;span class="n"&gt;opacity&lt;/span&gt; = &lt;span class="m"&gt;1&lt;/span&gt;;
&lt;span class="n"&gt;inactive&lt;/span&gt;-&lt;span class="n"&gt;opacity&lt;/span&gt;-&lt;span class="n"&gt;override&lt;/span&gt; = &lt;span class="n"&gt;false&lt;/span&gt;;
&lt;span class="n"&gt;alpha&lt;/span&gt;-&lt;span class="n"&gt;step&lt;/span&gt; = &lt;span class="m"&gt;0&lt;/span&gt;.&lt;span class="m"&gt;06&lt;/span&gt;;

&lt;span class="c"&gt;# Dim inactive windows. (0.0 - 1.0)
# inactive-dim = 0.2;
# Do not let dimness adjust based on window opacity.
# inactive-dim-fixed = true;
# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred.
# blur-background = true;
# Blur background of opaque windows with transparent frames as well.
# blur-background-frame = true;
# Do not let blur radius adjust based on window opacity.
&lt;/span&gt;&lt;span class="n"&gt;blur&lt;/span&gt;-&lt;span class="n"&gt;background&lt;/span&gt;-&lt;span class="n"&gt;fixed&lt;/span&gt; = &lt;span class="n"&gt;false&lt;/span&gt;;
&lt;span class="n"&gt;blur&lt;/span&gt;-&lt;span class="n"&gt;background&lt;/span&gt;-&lt;span class="n"&gt;exclude&lt;/span&gt; = [
    &lt;span class="s2"&gt;"window_type = 'dock'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"window_type = 'desktop'"&lt;/span&gt;
];

&lt;span class="c"&gt;#################################
#
# Fading
#
#################################
&lt;/span&gt;
&lt;span class="c"&gt;# Fade windows during opacity changes.
&lt;/span&gt;&lt;span class="n"&gt;fading&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
&lt;span class="c"&gt;# The time between steps in a fade in milliseconds. (default 10).
&lt;/span&gt;&lt;span class="n"&gt;fade&lt;/span&gt;-&lt;span class="n"&gt;delta&lt;/span&gt; = &lt;span class="m"&gt;4&lt;/span&gt;;
&lt;span class="c"&gt;# Opacity change between steps while fading in. (default 0.028).
&lt;/span&gt;&lt;span class="n"&gt;fade&lt;/span&gt;-&lt;span class="n"&gt;in&lt;/span&gt;-&lt;span class="n"&gt;step&lt;/span&gt; = &lt;span class="m"&gt;0&lt;/span&gt;.&lt;span class="m"&gt;03&lt;/span&gt;;
&lt;span class="c"&gt;# Opacity change between steps while fading out. (default 0.03).
&lt;/span&gt;&lt;span class="n"&gt;fade&lt;/span&gt;-&lt;span class="n"&gt;out&lt;/span&gt;-&lt;span class="n"&gt;step&lt;/span&gt; = &lt;span class="m"&gt;0&lt;/span&gt;.&lt;span class="m"&gt;03&lt;/span&gt;;
&lt;span class="c"&gt;# Fade windows in/out when opening/closing
# no-fading-openclose = true;
&lt;/span&gt;
&lt;span class="c"&gt;# Specify a list of conditions of windows that should not be faded.
&lt;/span&gt;&lt;span class="n"&gt;fade&lt;/span&gt;-&lt;span class="n"&gt;exclude&lt;/span&gt; = [ ];

&lt;span class="c"&gt;#################################
#
# Other
#
#################################
&lt;/span&gt;
&lt;span class="c"&gt;# Try to detect WM windows and mark them as active.
&lt;/span&gt;&lt;span class="n"&gt;mark&lt;/span&gt;-&lt;span class="n"&gt;wmwin&lt;/span&gt;-&lt;span class="n"&gt;focused&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
&lt;span class="c"&gt;# Mark all non-WM but override-redirect windows active (e.g. menus).
&lt;/span&gt;&lt;span class="n"&gt;mark&lt;/span&gt;-&lt;span class="n"&gt;ovredir&lt;/span&gt;-&lt;span class="n"&gt;focused&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
&lt;span class="c"&gt;# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events.
# Usually more reliable but depends on a EWMH-compliant WM.
&lt;/span&gt;&lt;span class="n"&gt;use&lt;/span&gt;-&lt;span class="n"&gt;ewmh&lt;/span&gt;-&lt;span class="n"&gt;active&lt;/span&gt;-&lt;span class="n"&gt;win&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
&lt;span class="c"&gt;# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on.
&lt;/span&gt;&lt;span class="n"&gt;detect&lt;/span&gt;-&lt;span class="n"&gt;rounded&lt;/span&gt;-&lt;span class="n"&gt;corners&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;

&lt;span class="c"&gt;# Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows.
# This prevents opacity being ignored for some apps.
# For example without this enabled my xfce4-notifyd is 100% opacity no matter what.
&lt;/span&gt;&lt;span class="n"&gt;detect&lt;/span&gt;-&lt;span class="n"&gt;client&lt;/span&gt;-&lt;span class="n"&gt;opacity&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;

&lt;span class="c"&gt;# Specify refresh rate of the screen.
# If not specified or 0, compton will try detecting this with X RandR extension.
&lt;/span&gt;&lt;span class="n"&gt;refresh&lt;/span&gt;-&lt;span class="n"&gt;rate&lt;/span&gt; = &lt;span class="m"&gt;0&lt;/span&gt;;

&lt;span class="c"&gt;# Set VSync method. VSync methods currently available:
# none: No VSync
# drm: VSync with DRM_IOCTL_WAIT_VBLANK. May only work on some drivers.
# opengl: Try to VSync with SGI_video_sync OpenGL extension. Only work on some drivers.
# opengl-oml: Try to VSync with OML_sync_control OpenGL extension. Only work on some drivers.
# opengl-swc: Try to VSync with SGI_swap_control OpenGL extension. Only work on some drivers. Works only with GLX backend. Known to be most effective on many drivers. Does not actually control paint timing, only buffer swap is affected, so it doesn't have the effect of --sw-opti unlike other methods. Experimental.
# opengl-mswc: Try to VSync with MESA_swap_control OpenGL extension. Basically the same as opengl-swc above, except the extension we use.
# (Note some VSync methods may not be enabled at compile time.)
&lt;/span&gt;&lt;span class="n"&gt;vsync&lt;/span&gt; = &lt;span class="s2"&gt;"opengl-swc"&lt;/span&gt;;

&lt;span class="c"&gt;# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing.
# Reported to have no effect, though.
&lt;/span&gt;&lt;span class="n"&gt;dbe&lt;/span&gt; = &lt;span class="n"&gt;false&lt;/span&gt;;
&lt;span class="c"&gt;# Painting on X Composite overlay window. Recommended.
&lt;/span&gt;&lt;span class="n"&gt;paint&lt;/span&gt;-&lt;span class="n"&gt;on&lt;/span&gt;-&lt;span class="n"&gt;overlay&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;

&lt;span class="c"&gt;# Limit compton to repaint at most once every 1 / refresh_rate second to boost performance.
# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already,
# unless you wish to specify a lower refresh rate than the actual value.
&lt;/span&gt;&lt;span class="n"&gt;sw&lt;/span&gt;-&lt;span class="n"&gt;opti&lt;/span&gt; = &lt;span class="n"&gt;false&lt;/span&gt;;

&lt;span class="c"&gt;# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games.
# Known to cause flickering when redirecting/unredirecting windows.
# paint-on-overlay may make the flickering less obvious.
&lt;/span&gt;&lt;span class="n"&gt;unredir&lt;/span&gt;-&lt;span class="n"&gt;if&lt;/span&gt;-&lt;span class="n"&gt;possible&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;

&lt;span class="c"&gt;# Specify a list of conditions of windows that should always be considered focused.
&lt;/span&gt;&lt;span class="n"&gt;focus&lt;/span&gt;-&lt;span class="n"&gt;exclude&lt;/span&gt; = [ ];

&lt;span class="c"&gt;# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time.
&lt;/span&gt;&lt;span class="n"&gt;detect&lt;/span&gt;-&lt;span class="n"&gt;transient&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
&lt;span class="c"&gt;# Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time.
# WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too.
&lt;/span&gt;&lt;span class="n"&gt;detect&lt;/span&gt;-&lt;span class="n"&gt;client&lt;/span&gt;-&lt;span class="n"&gt;leader&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;

&lt;span class="c"&gt;#################################
#
# Window type settings
#
#################################
&lt;/span&gt;
&lt;span class="n"&gt;wintypes&lt;/span&gt;:
{
    &lt;span class="n"&gt;tooltip&lt;/span&gt; =
    {
        &lt;span class="c"&gt;# fade: Fade the particular type of windows.
&lt;/span&gt;        &lt;span class="n"&gt;fade&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
        &lt;span class="c"&gt;# shadow: Give those windows shadow
&lt;/span&gt;        &lt;span class="n"&gt;shadow&lt;/span&gt; = &lt;span class="n"&gt;false&lt;/span&gt;;
        &lt;span class="c"&gt;# opacity: Default opacity for the type of windows.
&lt;/span&gt;        &lt;span class="n"&gt;opacity&lt;/span&gt; = &lt;span class="m"&gt;0&lt;/span&gt;.&lt;span class="m"&gt;85&lt;/span&gt;;
        &lt;span class="c"&gt;# focus: Whether to always consider windows of this type focused.
&lt;/span&gt;        &lt;span class="n"&gt;focus&lt;/span&gt; = &lt;span class="n"&gt;true&lt;/span&gt;;
    };
};&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Details on what each of these options does can be found &lt;a href="https://github.com/chjj/compton/blob/master/man/compton.1.asciidoc"&gt;here&lt;/a&gt;. Some of them might need adjusting if you have crappy graphics drivers but should work for anyone with reasonable, up to date drivers &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; some kind of 3D graphics card.&lt;/p&gt;
&lt;p&gt;It worked perfectly for me, on both my desktop dual monitor setup on an NVidia &lt;span class="caps"&gt;8800GTS&lt;/span&gt; using the current xorg-edgers driver, 313.30 &lt;a class="footnote-ref" href="#_footnote_4" id="_footnoteref_4" title="View footnote 4"&gt;[4]&lt;/a&gt; - and also on my laptop with a some sort of crappy Mobility Radeon. By the look of the documentation, the most likely settings that might cause problems with drivers would be &lt;code&gt;vsync&lt;/code&gt; and &lt;code&gt;backend&lt;/code&gt;.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_start_compton_for_the_current_session"&gt;Start Compton for the Current Session&lt;/h2&gt;&lt;p&gt;Now we’re going to make sure this is all working by starting compton. Press Alt+F2, type &lt;code&gt;compton&lt;/code&gt; in the Application Launcher box, then press enter:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="Screenshot of the XFCE Applications Filder launching Compton." src="https://duncanlock.net/images/posts/how-to-switch-to-compton-for-beautiful-tear-free-compositing-in-xfce/xfce-application-finder-launching-compton.png" /&gt;&lt;/div&gt;
&lt;p&gt;Your screen will flicker and you should now have glassy smooth, tear free window dragging, with drop shadows and beautiful fading on window open/close &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; desktop switching, etc…​ Try dragging and few windows around, switching workspaces and open and closing things. Bathe in the smoothness.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_set_compton_to_auto_start"&gt;Set Compton to auto-start&lt;/h2&gt;&lt;p&gt;Assuming that worked, we’ll make Compton start at startup. Go into the Applications menu and click ‘Settings Manager’, then click ‘Session and Startup’, then select the ‘Application Autostart’ tab:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="Screenshot of the XFCE Settings Manager - Session and Startup window" src="https://duncanlock.net/images/posts/how-to-switch-to-compton-for-beautiful-tear-free-compositing-in-xfce/xfce-settings-manager-session-and-startup-add-application.png" width="showing the filled in 'Add application' box." /&gt;
&lt;figcaption&gt;Figure 1. Click the ‘Add’ button, then fill in the boxes like this.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_excluding_some_windows_using_xwininfo_and_shadow_exclude"&gt;Excluding some windows using xwininfo and shadow-exclude&lt;/h2&gt;&lt;figure class="image-block align-right"&gt;&lt;img alt="xfce notify osd window corner" src="https://duncanlock.net/images/posts/how-to-switch-to-compton-for-beautiful-tear-free-compositing-in-xfce/xfce-notify-osd-window-corner.png" /&gt;
&lt;figcaption&gt;Figure 2. Notice the square background behind the rounded corners on this volume notification.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;You probably don’t want shadows on every window - they don’t work very well on notification popups, for example.&lt;/p&gt;
&lt;p&gt;To exclude certain types of window, or certain applications, from having shadows, you can set the &lt;code&gt;shadow-exclude&lt;/code&gt; setting. This setting is a list of conditions to match windows to. The simplest one is a wild card match on the window name, which is done something like this: &lt;code&gt;name *= 'Firefox'&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here’s an example from my config file. It excludes various notification popups, &lt;span class="caps"&gt;VLC&lt;/span&gt;, Chrome, Kupfer &lt;a class="footnote-ref" href="#_footnote_5" id="_footnoteref_5" title="View footnote 5"&gt;[5]&lt;/a&gt; and other problem apps:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="n"&gt;shadow&lt;/span&gt;-&lt;span class="n"&gt;exclude&lt;/span&gt; = [
    &lt;span class="s2"&gt;"! name~=''"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'Notification'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'Plank'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'Docky'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'Kupfer'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name = 'xfce4-notifyd'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'VLC'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'compton'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'Chromium'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'Chrome'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"name *= 'Firefox'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g = 'Conky'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g = 'Kupfer'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g = 'Synapse'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g ?= 'Notify-osd'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g ?= 'Cairo-dock'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g ?= 'Xfce4-notifyd'"&lt;/span&gt;,
    &lt;span class="s2"&gt;"class_g ?= 'Xfce4-power-manager'"&lt;/span&gt;
];&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To add to this, you will need to know either the name or the class that X11 uses to refer to the window. There’s a handy utility called &lt;code&gt;xwininfo&lt;/code&gt; that will tell you this. To use it, run this from a console window:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;xwininfo &lt;span class="nt"&gt;-stats&lt;/span&gt; &lt;span class="nt"&gt;-wm&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Your mouse cursor will turn into a little cross-hair. Use this to click on the window you want to know about and &lt;code&gt;xwininfo&lt;/code&gt; will print out some information about it. For example, clicking on an &lt;span class="caps"&gt;XFCE&lt;/span&gt; notification bubble will print something like this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;xwininfo: Window id: 0x9a00073 "xfce4-notifyd"

  Absolute upper-left X:  1390
  Absolute upper-left Y:  16
  Relative upper-left X:  0
  Relative upper-left Y:  0
  Width: 274
  Height: 76
  Depth: 32
  Visual: 0xec
  Visual Class: TrueColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x9a00003 (not installed)
  Bit Gravity State: NorthWestGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +1390+16  -2064+16  -2064-1060  +1390-1060
  -geometry 274x76+1390+16

  Window manager hints:
      Client accepts input or input focus: No
      Initial state is Normal State
      Displayed on all desktops
      Window type:
          Notification
      Window state:
          Sticky
          Skip Pager
          Skip Taskbar
          Above
      Process id: 23420 on host duncan-desktop
      Frame extents: 0, 0, 0, 0&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The window name is on the end of the first line (&lt;code&gt;xfce4-notifyd&lt;/code&gt; in this case) and the class and type are further down. &lt;a href="https://github.com/chjj/compton/blob/master/man/compton.1.asciidoc#format-of-conditions"&gt;Click here for more information about Compton conditionals&lt;/a&gt;. You can use this information to add exclusions for these windows to your config.&lt;/p&gt;
&lt;p&gt;All done. If you have any improvements on this setup, let me know in &lt;a href="#_article_comments_section"&gt;the comments&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_footnotes_references"&gt;Footnotes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; References&lt;/h3&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class="footnotes"&gt;&lt;hr /&gt;&lt;ol class="footnotes"&gt;&lt;li class="footnote" id="_footnote_1"&gt;Some window managers have Compositing built in and some don’t. &lt;a href="http://en.wikipedia.org/wiki/Compositing_window_manager"&gt;See here for more info&lt;/a&gt;. &lt;a class="footnote-backref" href="#_footnoteref_1" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_2"&gt;Some of this information here came from this &lt;a href="http://www.neowin.net/forum/topic/1148464-using-compton-for-tear-free-compositing-in-xfce/"&gt;great guide by ViperAFK on the NeoWin formus&lt;/a&gt; and &lt;a href="http://ubuntuforums.org/showthread.php?t=2144468"&gt;this one by screaminj3sus on ubuntuforums.org&lt;/a&gt;, as suggested by Saravanan Kumar in the comments. &lt;a class="footnote-backref" href="#_footnoteref_2" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_3"&gt;Compton code is on &lt;a href="https://github.com/chjj/compton"&gt;GitHub&lt;/a&gt; and the &lt;span class="caps"&gt;PPA&lt;/span&gt; is on &lt;a href="https://launchpad.net/~richardgv/+archive/compton"&gt;Launchpad&lt;/a&gt;. &lt;a class="footnote-backref" href="#_footnoteref_3" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_4"&gt;xorg-edgers: “Packages for those who think development versions, experimental and unstable are for old ladies. We want our crack straight from upstream git! Well, straight, we want it built and packaged so we don’t need to know what we’re doing, except that we will break our X and put our computers on fire.” &lt;a href="https://launchpad.net/~xorg-edgers"&gt;Use at your own risk!&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_4" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_5"&gt;&lt;a href="https://live.gnome.org/Kupfer"&gt;Kupfer: An extremely lightweight quick launcher, like Gnome &lt;span class="caps"&gt;DO&lt;/span&gt;&lt;/a&gt;, “a convenient command and access tool”, is a program that can launch applications and open documents, and access different types of objects and act on them. &lt;a class="footnote-backref" href="#_footnoteref_5" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Fri, 07 Jun 2013 10:05:59 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/06/07/how-to-switch-to-compton-for-beautiful-tear-free-compositing-in-xfce/</guid></item><item><title>Climbing in "decking range"</title><link>https://josh.works/climbing-in-decking-range</link><description>&lt;p&gt;In indoor sport climbing, as your climber progresses from the ground to the first three bolts, you need to be ready for any situation. Here’s how to give a kick-ass lead belay when your climber is close enough to the ground they could &lt;strong&gt;potentially&lt;/strong&gt; deck.&lt;/p&gt;

&lt;p&gt;This is part of a &lt;a href="https://josh.works/how-to-be-an-awesome-belayer"&gt;series on lead belaying&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Have you ever encountered hard moves right off the ground? If you can’t make it to the first bolt, you know you’ll land on the ground if you fall. No big deal. If you make the first bolt, and get to the second one and can’t clip, or if you have to make a committing move past the second bolt in order to clip, all of a sudden, hitting the ground is a real possibility, and you don’t really want to do that, right?&lt;/p&gt;

&lt;p&gt;If you’re like me, and you don’t completely trust your belayer, climbing becomes  scary, because I’m now focused on not hitting the ground. Heady stuff, for something you do for fun.&lt;/p&gt;

&lt;p&gt;This situation is why &lt;strong&gt;you&lt;/strong&gt; need to be an awesome belayer when your climber is between the first and second bolts. You should never expect (or demand) that your belayer be better than you.&lt;/p&gt;

&lt;p&gt;I’ll address a few common situations, and explain what to do in each. Hopefully I’ll help you sketch out a mental picture of what to do, then you can get in the gym and practice a bit. I’ll close with how you can build all these skills in the comfort of your local climbing gym.&lt;/p&gt;

&lt;p&gt;Disclaimer: Climbing is dangerous. Falling from before the third bolt can result in you hitting the ground. So can falling from after the third bolt. Don’t hurt yourself - start with small and safe, and work into big and safe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All that follows is in the context of INDOOR SPORT CLIMBING. If you’re outside, you need to evaluate the landing zone, and decide how risky it is to let your climber come anywhere close to the ground.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OK - from the ground up, with equally sized climbers:&lt;/p&gt;

&lt;h2 id="climber-is-below-the-first-bolt"&gt;Climber is below the first bolt&lt;/h2&gt;

&lt;p&gt;You’re spotting right now, because they can’t be on belay. Have enough slack out that the climber can clip the first bolt without getting short roped, but not so much that you have to take in a bunch before they proper slack is in the system. Pro tip: estimate before they clip how much slack they need, and adjust accordingly, rather than estimating and adjusting after they clip.&lt;/p&gt;

&lt;h2 id="climber-is-between-the-first-and-second-bolt"&gt;Climber is between the first and second bolt&lt;/h2&gt;

&lt;p&gt;Belay should be very snug, with zero extra slack, and the belayer should be out from under the climber with the bolt between the climber and belayer. (I.E. Not directly underneath the climber.)&lt;/p&gt;

&lt;p&gt;If the climber falls, you need to remove as much slack as possible from the system while 
still giving a soft catch. If you remove slack from the system and don’t give them a soft catch, you’ve spiked your climber, which is dangerous. And rude.&lt;/p&gt;

&lt;p&gt;To “spike” your climber means you have short-roped them while they fall. The best-case scenario is they fall into free space and are stopped very suddenly. Worst case, as they fall, they may get pulled into the wall without being able to get their feet out, or they can “pendulum” into the wall with enough force to sprain an ankle, or break a bone.&lt;/p&gt;

&lt;p&gt;The most common way to unintentionally spike your climber is to be afraid that they will fall too far, and as they fall, you take in slack and/or move backwards and sit in the rope. (Imagine your climber was on top-rope and said “take”. That action taken on top rope belay is EXACTLY what leads to a devastating “spike” on lead belay.)&lt;/p&gt;

&lt;p&gt;Getting spiked is mentally and physically jarring, and uncomfortable, and, if repeated, and really damage the lead climber’s confidence in themselves, their belayer, and hard climbing in general.&lt;/p&gt;

&lt;p&gt;To remove slack and still give a soft catch, you’ve got to be alert. As the climber is falling, you remove slack from the system, quickly, and get in the brake position. As their weight hits, you jump, hard, off the ground, into the air. It’s possible that the climber will end up  standing on the ground, with the belayer up in the air.&lt;/p&gt;

&lt;p&gt;This is not a ground fall - the climber, while maybe a bit startled, will have landed on the ground very softly. If the belayer is also standing on the ground, this means the climber was dropped. If the belayer is five or six or seven feet in the air, it was an awesome catch.&lt;/p&gt;

&lt;p&gt;It’s also common for the climber and belayer to bump into each other like pool balls. This is physics, and not to be feared. The reason the starting stance of the belayer matters is so that they don’t hit each other on the way up. This would be uncomfortable for all involved.&lt;/p&gt;

&lt;h2 id="climber-is-clipping-the-second-bolt"&gt;Climber is clipping the second bolt:&lt;/h2&gt;

&lt;p&gt;The belayer has zero extra slack, has not short roped the climber, and is standing beneath the first bolt ready to take in slack and step backwards if the climber blows it before clipping. If the climber does fall, the belayer should take in slack while stepping backwards but still give a soft catch.&lt;/p&gt;

&lt;p&gt;If you spike your climber in this scenario, you’re really putting the hurt on. Broken ankles and severely bruised knees are in your (or their) future.&lt;/p&gt;

&lt;h2 id="for-moving-between-the-second-and-the-third-bolt"&gt;For moving between the second and the third bolt:&lt;/h2&gt;

&lt;p&gt;Repeat the above steps, but leave a little more slack in the system. This makes it less likely that you’ll accidentally short rope or spike them, without exposing them to any additional risk. (I would contend that it’s much safer to have a little more rope out. Zero downside.)&lt;/p&gt;

&lt;h3 id="weight-differences"&gt;Weight Differences:&lt;/h3&gt;

&lt;p&gt;If there is a weight difference between the climber and the belayer, the belayer needs to adjust accordingly. I use the following rule of thumb: If the climber outweighs me by  more than 25 lbs, I don’t have to try very hard to give a soft catch - it’ll just happen.&lt;/p&gt;

&lt;p&gt;If he falls between the first and second bolt, I may try to spike him, in order to keep him off the ground. (Since he outweighs me, I cannot cause a dangerous spike - it will just be a bit harder of a catch than normal.)&lt;/p&gt;

&lt;p&gt;If I outweigh the climber by 25lbs or more, I have to try very hard to give a soft catch. There are two ways to do this:&lt;/p&gt;

&lt;h4 id="use-a-tube-style-belay-device"&gt;Use a tube-style belay device&lt;/h4&gt;

&lt;p&gt;(I know it’s more work. You’ll be OK) and let slack go through it as you arrest the fall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not let rope run through your hand!&lt;/strong&gt; You will burn yourself, and be tempted to let go of the break strand.&lt;/p&gt;

&lt;p&gt;What you can do is, as the climber is falling, but before their weight has hit the rope, slide your hand a few inches down the rope, and then just naturally let your hand end up in the break position just below the belay device. Eighteen to twenty four inches of rope will have run through the device as the fall is arrested, and it will be much more comfortable for the climber.&lt;/p&gt;

&lt;h4 id="belay-kneeling-on-one-knee-and-stand-up-into-the-fall"&gt;Belay kneeling on one knee and “stand up” into the fall&lt;/h4&gt;

&lt;p&gt;If your climber is lighter than you, and especially if there is any rope drag, you won’t be able to give a soft catch by just jumping up the wall. You’ll jump, and end up right where you started. It isn’t dangerous, but it’s just not as comfortable to your climber as it could be. (You want them to be comfortable falling, right?) To do this, as they’re moving between bolts, belay from a knee from where you would normally stand. As they fall, still try to jump, but you’ll give a much softer catch since you’ll be assisting them pulling you off the ground with the muscles in your legs.&lt;/p&gt;

&lt;p&gt;In sum: Belaying is a big responsibility. It’s easy to get psyched out if you’re doing hard moves between the first and second bolt, or while clipping. You’ll get a great return on investment if you spend a few minutes over your next few sessions practicing these skills. If you are more relaxed while climbing, you’ll climb better. Practice these skills in order to grow relaxed. It won’t come any other way.&lt;/p&gt;

&lt;p&gt;In another post, I’ll talk about considerations for climbing outdoors. Everything covered above is applicable, but outside you come across hazards that are not often encountered inside. (Ledges, dangerous landing zones, etc.)&lt;/p&gt;

&lt;h2 id="practice-makes-perfect"&gt;Practice makes perfect&lt;/h2&gt;

&lt;p&gt;So, you slogged through these thousand words, and you’re ready to practice. (Bless you, for reading this far)&lt;/p&gt;

&lt;p&gt;Should you just head out, grab an unsuspecting friend, and then ask them to whip before clipping the second bolt?&lt;/p&gt;

&lt;p&gt;Um. No.&lt;/p&gt;

&lt;p&gt;Here’s why:&lt;/p&gt;

&lt;p&gt;Your brain is a much more powerful beast than you think it is. It is constantly tuned in to the environment and evaluating new sights, sounds, and situations, even when you’re not paying attention to any of this. This is why music is so important to movies - when the ominous music cues up, you get a tight feeling in your chest, even if everything on the screen is hunky-dorey. Your brain knows that in all the past experiences, ominous music means bad things. Bad things make you feel anxious. Therefore, ominous music makes you feel anxious.&lt;/p&gt;

&lt;p&gt;Your brain evaluates new experiences in light of past experiences. Heuristicsis a cool word that means “mental shortcut”. When you encounter a new situation, your brain says “does this in any way, shape, or form, resemble anything I’ve encountered before? If so, repeat reaction.”&lt;/p&gt;

&lt;p&gt;The implication of this thought process is stunning, and wide-spread. We’re talking about climbing, today, so I’ll keep it to that. When you fall, ever, do you experience stress, anxiety, or discomfort? If so, you are teaching your subconscious to link negative emotions with falling. Every time you experience stress while falling, you’re strengthening the connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Falling, for the sake of falling, if at all associated with discomfort or stress, reinforces negative mental attitudes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The only way to get better at falling, to make it easier, is to make it pain free. Discomfort free. Easy. Rewarding.&lt;/p&gt;

&lt;p&gt;You need to start small, and just barely outside your comfort zone, and not progress to more challenging material until your comfort zone has expanded to include the area that was once outside your comfort zone.&lt;/p&gt;

&lt;p&gt;Here’s a recommended progression:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Climb to the third bolt. Clip it, and move down one move. Confirm your belayer is ready, and then let go of the wall. You’re on top rope, so this is easy. Do it a few times so your belayer can practice timing the jump up the wall, so he can give you a soft catch. You both will be able to feel when he figures it out.&lt;/li&gt;
  &lt;li&gt;Repeat the above step, but this time, have your belayer feed out a foot or two of slack before you let go of the wall. You’ll be moving a little faster, and will solidify to you both what a soft catch feels like. (Your belayer should be good at giving softer catches as this point.&lt;/li&gt;
  &lt;li&gt;Climb to the bolt, where it’s level with your chest, and fall a few times. Soft catches. This should be easy. Feel free to call it a day whenever you’re ready. At this point you probably have taught your subconscious that the last fifteen falls were actually pretty low key, and you should feel a sense of reward and pride. Revel in this feeling.&lt;/li&gt;
  &lt;li&gt;Climb so the bolt is at your waist. Make sure your belayer doesn’t have you tight - you don’t want to be short roped or spiked, remember? Fall a few times. Are you both growing comfortable with the idea behind soft catches?&lt;/li&gt;
  &lt;li&gt;Switch out with your belayer. Why should you have all the fun? Repeat the above steps, then switch back.&lt;/li&gt;
  &lt;li&gt;Climb a move or two above the bolt, take a fall. Now you’re really falling. Your belayer should be giving you soft catches.&lt;/li&gt;
  &lt;li&gt;Climb another move or two, do it again. Take a fall here a few times, but not in the exact same situation. Don’t get in the mindset that you have to perfectly prepare for falling - that does not transfer well to real-world climbing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you’ve completed these seven steps, you’re well on your way to de-linking discomfort and falling. The work is not done, but a full progression is a whole blog post in it’s own. That’s coming soon.&lt;/p&gt;

&lt;p&gt;Updated 09/12/16 (&lt;a href="https://www.reddit.com/r/climbing/comments/52fcvd/found_this_article_about_climbing_in_the_decking/d7juloj?context=10000"&gt;Thanks /u/notcrushingV16&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Feedback? Shoot an email to joshthompson@hey.com&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Fri, 07 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/climbing-in-decking-range</guid></item><item><title>Differences Of Opinion by Wendy Cope</title><link>https://ho.dges.online/words/commonplace/differences-of-opinion-by-wendy-cope/</link><description>&lt;p&gt;He tells her that the earth is flat —&lt;br /&gt;
He knows the facts, and that is that.&lt;br /&gt;
In altercations fierce and long&lt;br /&gt;
She tries her best to prove him wrong.&lt;br /&gt;
But he has learned to argue well.&lt;br /&gt;
He calls her arguments unsound&lt;br /&gt;
And often asks her not to yell.&lt;br /&gt;
She cannot win. He stands his ground.&lt;br /&gt;
The planet goes on being round.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Thu, 06 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/differences-of-opinion-by-wendy-cope/</guid></item><item><title>Getting the Most Out of ASH online seminar</title><link>https://tanelpoder.com/2013/06/05/getting-the-most-out-of-ash-online-seminar/</link><description>&lt;p&gt;Just a little reminder – next week (10-11th June) I’ll be delivering my last training session before autumn – a short 1-day (2 x 0.5 days actually) seminar about &lt;a href="https://tanelpoder.com/seminar/" target="_blank"&gt;Getting the Most Out of Oracle’s Active Session History&lt;/a&gt;. In the future it will act as sort of a prequel (or preparation) for my Advanced Oracle Troubleshooting class, as the latter one deliberately goes very deep. The ASH seminar’s 1st half is actually mostly about the GUI way of troubleshooting the usual performance problems (EM/Grid Control) and the 2nd half is about all my ASH scripts for diagnosing more complex stuff.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Thu, 06 Jun 2013 00:10:35 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/06/05/getting-the-most-out-of-ash-online-seminar/</guid></item><item><title>The Incredibles</title><link>https://olshansky.info/movie/the_incredibles/</link><description>Olshansky's review of The Incredibles</description><author>🦉 olshansky 🦁</author><pubDate>Wed, 05 Jun 2013 12:01:45 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_incredibles/</guid></item><item><title>Collecting duplicate resources in puppet</title><link>https://purpleidea.com/blog/2013/06/04/collecting-duplicate-resources-in-puppet/</link><description>&lt;p&gt;I could probably write a long design article explaining why &lt;em&gt;identical&lt;/em&gt; duplicate resources should be allowed [1] in puppet. If puppet is going to survive in the long-term, they will have to build in this feature. In the short-term, I will have to hack around deficiency. As luck would have it, &lt;a href="https://twitter.com/bodepd"&gt;Mr. Bode&lt;/a&gt; has already written part one of the hack: &lt;a href="https://github.com/puppetlabs/puppetlabs-stdlib#ensure_resource"&gt;ensure_resource&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Suppose you have a given infrastructure with &lt;em&gt;N&lt;/em&gt; vaguely identical nodes. &lt;em&gt;N&lt;/em&gt; could equal &lt;strong&gt;2&lt;/strong&gt; for a &lt;em&gt;dual primary&lt;/em&gt; or &lt;em&gt;active-passive&lt;/em&gt; cluster, or &lt;em&gt;N&lt;/em&gt; could be greater than &lt;strong&gt;2&lt;/strong&gt; for a more elaborate N-ary cluster. It is sufficient to say, that each of those &lt;em&gt;N&lt;/em&gt; nodes might export an identical puppet resource which one (or many) clients might need to collect, to operate correctly. It&amp;rsquo;s important that each node export this, so that there is no single point of failure if one or more of the cluster nodes goes missing.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Wed, 05 Jun 2013 02:39:08 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/06/04/collecting-duplicate-resources-in-puppet/</guid></item><item><title>Installing PyPy with Gevent and virtualenv on Fedora</title><link>https://smetj.net/installing-pypy-with-gevent-and-virtualenv-on-fedora.html</link><description>&lt;p&gt;PyPy has been on my radar for a while but I have never really brought
myself to the point of actually trying it. &amp;nbsp;Recently, a notification
caught to my attention stating PyPy 2.0.2 was released and had support
to run Gevent. &amp;nbsp;Good news! I was looking at speed …&lt;/p&gt;</description><author>Jelle Smet</author><pubDate>Wed, 05 Jun 2013 02:26:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/installing-pypy-with-gevent-and-virtualenv-on-fedora.html</guid></item><item><title>Get the Urban Dictionary in your terminal</title><link>https://bfontaine.net/2013/06/04/get-the-urban-dictionary-in-your-terminal/</link><description>&lt;p&gt;The &lt;a href="http://www.urbandictionary.com/"&gt;Urban Dictionary&lt;/a&gt; website is pretty useful when one wants to
know the meaning of any familiar or slang word. Users can write definitions for
any words, and upvote or downvote them. Unfortunately, the website doesn’t have
a public API, and I couldn’t find a command-line tool for it. So I wrote one.&lt;/p&gt;

&lt;h2 id="introducing-ud"&gt;Introducing ud&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ud&lt;/strong&gt; is a command-line tool which prints definitions from the Urban Dictionary
website. It’s &lt;a href="https://github.com/bfontaine/ud"&gt;written&lt;/a&gt; in Ruby, and allows you to quickly search for a
definition of any word.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;$ ud wth
* WTH (567/126):

   1) Abbreviation for "What the Hell"
   2) Shortened alternative to "With"

 Example:
   1) WTH was that?!
   2) I ate some crackers wth chicken
(…)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For common abbreviations like “wtf” or “omg”, there are dozens of definitions,
with minor differences. That’s why the script scraps only the first page of
results, and supports a few options: &lt;code class="language-plaintext highlighter-rouge"&gt;-n&lt;/code&gt; allows you to limit the number of
definitions (e.g. &lt;code class="language-plaintext highlighter-rouge"&gt;-n 1&lt;/code&gt; → only one). &lt;code class="language-plaintext highlighter-rouge"&gt;-r&lt;/code&gt; allows you to select only the
definitions which have an upvotes/downvotes ratio higher than what you want,
e.g. &lt;code class="language-plaintext highlighter-rouge"&gt;-r 2&lt;/code&gt; will select only the definitions which have twice more upvotes than
downvotes. For your convenience, it also support the shortcut &lt;code class="language-plaintext highlighter-rouge"&gt;-u&lt;/code&gt; which is an
alias for &lt;code class="language-plaintext highlighter-rouge"&gt;-r 2&lt;/code&gt;. Type &lt;code class="language-plaintext highlighter-rouge"&gt;ud -h&lt;/code&gt; for more info.&lt;/p&gt;

&lt;h3 id="install"&gt;Install&lt;/h3&gt;

&lt;p&gt;That’s easy:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;gem install ud
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Please note that if you’re using Windows, you’ll need to install the Win32
Console ANSI gem for the colored output. Install it with:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;gem install win32console
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id="using-the-ud-module"&gt;Using the UD module&lt;/h3&gt;

&lt;p&gt;The gem also provide a &lt;code class="language-plaintext highlighter-rouge"&gt;UD&lt;/code&gt; module, which you can use to query the website in
your own Ruby code:&lt;/p&gt;

&lt;div class="language-ruby highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'ud'&lt;/span&gt;

&lt;span class="n"&gt;wtf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;UD&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;query&lt;/span&gt; &lt;span class="s1"&gt;'wtf'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:count&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;wtf&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt; &lt;span class="s1"&gt;', '&lt;/span&gt;
&lt;span class="c1"&gt;#=&amp;gt; id, word, definition, example, upvotes, downvotes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Baptiste Fontaine’s Blog</author><pubDate>Tue, 04 Jun 2013 23:16:00 GMT</pubDate><guid isPermaLink="true">https://bfontaine.net/2013/06/04/get-the-urban-dictionary-in-your-terminal/</guid></item><item><title>puppet matlab module</title><link>https://purpleidea.com/blog/2013/06/04/puppet-matlab-module/</link><description>&lt;p&gt;I don&amp;rsquo;t like repetitive work, and installing matlab counts doubly as so. Once I figured out the correct steps, I automated it with a puppet module. The downside is that the install takes a while because puppet needs to copy the &lt;em&gt;iso&lt;/em&gt; locally. This is okay because I can be busy doing something else while this is happening.&lt;/p&gt;
&lt;p&gt;Using the module is quite easy:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;matlab::install { 'R2011a':
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    iso =&amp;gt; 'puppet://files/matlab/MATHWORKS_R2011A.iso',
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    licensekey =&amp;gt; '#####-#####-#####-#####',    # provide your own here
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    licensefile =&amp;gt; 'puppet:///files/matlab/license.lic',    # get your own!
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    licenseagree =&amp;gt; true,    # setting this to true 'acknowledges' their (C)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    prefix =&amp;gt; '/usr/local',
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You might notice that this supports installing multiple releases on the same machine. You will have to provide your own license key and license file.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 04 Jun 2013 05:46:27 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/06/04/puppet-matlab-module/</guid></item><item><title>puppet rsnapshot module</title><link>https://purpleidea.com/blog/2013/06/04/puppet-rsnapshot-module/</link><description>&lt;p&gt;Today I am releasing a puppet module for &lt;a href="http://www.rsnapshot.org/"&gt;rsnapshot&lt;/a&gt;. The nice feature of this module, is that it lets you configure multiple different instances of rsnapshot, so that they could all run in parallel. Rsnapshot doesn&amp;rsquo;t support this directly, so this puppet module does the heavy lifting of separating out and managing each instance.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/purpleidea/puppet-rsnapshot"&gt;&lt;a href="https://github.com/purpleidea/puppet-rsnapshot"&gt;https://github.com/purpleidea/puppet-rsnapshot&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;examples/&lt;/em&gt; directory should give you a hint on how to use it. For everything else, have a look at the code, or feel free to leave me a comment. I hope you find it useful!&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 04 Jun 2013 05:29:35 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/06/04/puppet-rsnapshot-module/</guid></item><item><title>ZineScreen</title><link>https://mbutler.org/zinescreen/</link><description>A project funded by an innovation grant written by Colleen Theisen, librarian at the University of Iowa Libraries. I built this touchscreen kiosk using turn.js, the iPad 2, and LiliTab hardware. The ZineScreen is based loosely on the Zine Machine, housed in the University Main Library. ZineScreen consumes scanned zines and alternative publications as content [&amp;#8230;]</description><author>mbutler</author><pubDate>Tue, 04 Jun 2013 04:43:53 GMT</pubDate><guid isPermaLink="true">https://mbutler.org/zinescreen/</guid></item><item><title>Writing vs. Writing</title><link>http://shawnblanc.net/2011/02/writing-vs-writing/</link><description>&lt;p&gt;Shawn Blanc in an article published over two years ago, which he linked to earlier this afternoon in &lt;a href="http://shawnblanc.net/2013/06/maierson-editing/"&gt;a linked-list post&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;But suppose one day I do arrive at some level of skill where the ink flows like honey and the prose like fine wine. I wonder if I&amp;#8217;d even realize it. It may very well feel just like it does right now &amp;#160;&amp;#8212;&amp;#160; like today &amp;#160;&amp;#8212;&amp;#160; when it seems as if I can&amp;#8217;t even put two words together using copy and paste.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://shawnblanc.net/2011/02/writing-vs-writing/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 03 Jun 2013 20:00:24 GMT</pubDate><guid isPermaLink="true">http://shawnblanc.net/2011/02/writing-vs-writing/</guid></item><item><title>Training for climbing (progress update)</title><link>https://josh.works/growth/climbing/2013/06/03/training-for-climbing-progress-update/</link><description>&lt;p&gt;I am at the end of my second iteration of climbing training, and this is how it went and what I learned:
I completed the workout twelve times, but I took a twelve-day break between workout eleven and twelve. I first skipped a workout because I had ripped skin open on one of my fingers, and I did not want to attempt the workout with that damage, even though I could have taped it. I skipped the next one because I didn’t really want to do it, and was short on time for the day. Next I felt sick, and then I was on a work-related trip for a week.
more&lt;/p&gt;

&lt;p&gt;So, without even trying, I took almost two weeks off from training. And I am glad I did so; Friday and Saturday I experienced occasional throbbing pain in my elbow. I’ve felt it before, and it’s early-stage elbow tendonitis. It did not show up until I had 
 climbed for almost two weeks, so I am glad I took it easy recently. In the future I will continue to take breaks from training, so my tendons can recover.&lt;/p&gt;

&lt;p&gt;This last weekend I 
was going to climb in the New River Gorge, and I was going to see if my training had netted any improvement. As myself and a few others were driving there Saturday morning, my car decided to overheat and vent coolant all over the inside of the hood. Thanks to kind and knowledgeable West Virginians, we were able to temporarily repair what is probably catastrophic damage (supposedly a blown head gasket) and drive my car back to DC. I’m not positive what caused the problem but it certainly ended the trip. The down side is we didn’t climb for the weekend; the upside is the car is still drivable. (For a while I was afraid I would have to have to get it towed 150 miles back to DC. Expensive.)&lt;/p&gt;

&lt;p&gt;I trained hard but didn’t see the improvement I’d hoped with my heavy pulls. I would saddle myself with up to 20 pounds of weight and do my dynamic touches. There was not a lot of change in that area, although I am still glad I did them. My largest improvement came from my static hangs – I would have ten pounds on me and hang from three fingers for as long as I could. I certainly got stronger in this area.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4fe4b0278244ce9f80/1434910431653/screenshot_6_2_13_4_02_pm-e1370203593168.jpg"&gt;&lt;img alt="" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f80_1434910431653_screenshot_6_2_13_4_02_pm-e1370203593168.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I feel better at my two finger hang as well. I was initially barely able to get my weight off the ground, and now I have hit ten or twelve seconds a few times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next Steps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I am now thinking about how to change my workout. I don’t want to focus on weighted touches as much, for the time being – I want to work on my finger strength. Specifically, I want to work toward one-hand dead hangs. I have some ideas, but I know that it will take a while to get there. It’s critical that I implement good progress tracking, and reward myself for hitting mini-milestones along the way. It’s too big a goal to just aim for one-handed hangs. I would grow discouraged well before I ever got there.&lt;/p&gt;

&lt;p&gt;I am enjoying this training. I enjoyed my break, but I am excited to get back into the training. I feel like I’m in a good place, when it comes to motivation.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Mon, 03 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/climbing/2013/06/03/training-for-climbing-progress-update/</guid></item><item><title>MongoDB User Group a Cesena</title><link>https://nicolaiarocci.com/mongodb-user-group/</link><description>&lt;p&gt;Domani sarò al primo meeting romagnolo del #MUG MongoDB User Group organizzato da 10Gen (azienda dietro a MongoDB), Byte-Code e Ideato.&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;Parlerò di MongoDB usato come backend per una REST WEB API. &lt;!-- raw HTML omitted --&gt;L’evento si svolgerà in serata a Cesena, è gratuito, e ci sono ancora &lt;a href="http://www.eventbrite.com/event/6297117849"&gt;posti disponibili&lt;/a&gt;. Se ci siete passate a salutarmi.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Mon, 03 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/mongodb-user-group/</guid></item><item><title>Setting up a Security Camera for a Linux Webcam</title><link>https://thomashunter.name/posts/2013-06-03-setting-up-a-security-camera-for-a-linux-webcam</link><author>Thomas Hunter II</author><pubDate>Mon, 03 Jun 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-06-03-setting-up-a-security-camera-for-a-linux-webcam</guid></item><item><title>National Day of Civic Hacking: Exploring Consumer Financial Protection Bureau Data</title><link>https://kevinohashi.com/03/06/2013/national-day-civic-hacking-exploring-consumer-financial-protection-bureau-data</link><description>&lt;table border="0" style="width: 600px;"&gt;
&lt;tr&gt;
&lt;td&gt;
This weekend I participated in the National Day of Civic Hacking.
&lt;p&gt;&lt;a href="http://hackforchange.org/"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/civichacking.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The project I decided to work on was working with the CFPB data (and also used some census data).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://consumerfinance.gov"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/cfpblogo.png" /&gt;&lt;/a&gt;&lt;a href="http://census.gov"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/censuslogo.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Background&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The CFPB released a large complaints database that contained information about what type of financial products people are complaining about. It also gave information about where the complaints came from, what they were complaining about and resolution information. Some of the data was released literally a day earlier. So I was given a chance to take a look at, analyze and visualize information that nobody has really seen yet.&lt;/p&gt;
&lt;p&gt;It was an exciting and interesting opportunity. Since it was very fresh data with little to no previous work, much of what I got to do was more general analysis. I created a handful of graphics (click them to see full size) and maps (click to use the map) which I have included below:&lt;/p&gt;
&lt;h2&gt;What products are people complaining about the most?&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://kevinohashi.com/sites/default/files/subproducts.png"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/subproducts.png" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The biggest product people are complaining about is mortgage related products. There is a category for other mortgages that people can choose and it seems most people seem to select that. I wasn't sure why until I looked at the issues people were having.&lt;/p&gt;
&lt;h2&gt;What are the most common issues people have?&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://kevinohashi.com/sites/default/files/issues_not_log.png"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/issues_not_log.png" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Foreclosure, Loan Modification and Collection. Intuitively, this makes a lot of sense. I probably don't care what type of mortgage it is when they are trying to take my house away. This particular issue dwarfed everything else, so I had to use a log scale to even see what the other issues people were facing.&lt;/p&gt;
&lt;h2&gt;What are the most common issues people have? (log scaled)&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://kevinohashi.com/sites/default/files/issues.png"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/issues.png" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This gives a more in-depth picture of the issues, but the first graphic really shows you the most common and/or pressing financial issue for people.&lt;/p&gt;
&lt;h2&gt;Which companies had the most complaints?&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://kevinohashi.com/sites/default/files/complaints_not_normalized.png"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/complaints_not_normalized.png" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then I explored which companies were receiving the most complaints. This data is NOT normalized. That means that just because a company has more complaints doesn't make it worse than one with less. For example, if company A had 10 complaints and 100 customers and company B had 5 complaints and 20 customers, company B would be worse (if we measured complaints as a % of customers). I didn't have easy access to a database with any dataset that would normalize these banks, so this is for curiosity more than any meaningful insight. It probably is a proxy for the largest players in consumer finance though.&lt;/p&gt;
&lt;h2&gt;[MAP] Where are the complaints coming from in the US? (Normalized for state population)&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://do4.ohashimedia.com/map.php"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/complaints_rel_pop_heatmap.png" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This map shows where people are complaining the most. DC won that dubious honor. Maryland, Delaware, New Hampshire, California and Florida were also high on the list. All the numbers were adjusted to reflect complaints relative to population of a state. So we can clearly see there are differences and we can probably make educated guesses for some of them. DC for example is probably the highest because of the highest awareness of CFPB (since it's based in DC). Maryland probably has a high awareness too. Florida and California had big real estate bubbles and perhaps were hit especially hard. New Hampshire and Delaware are a mystery to me, although a woman from New Hampshire at my event told me that she complained to the CFPB and told all her friends as well. Perhaps an above-average awareness of the CFPB caused the higher complaint rate.&lt;/p&gt;
&lt;h2&gt;Top 10 Companies by Complaints and their Disputed Resolution Rates&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://kevinohashi.com/sites/default/files/top_10_companies_disputed_resolution_rates.png"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/top_10_companies_disputed_resolution_rates.png" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next I explored disputed resolutions. Companies alert the CFPB when the matter is resolved and consumers are allowed to tell the CFPB they were not satisfied with the resolution. I graphed the top 10 companies by complaint volume and what their disputed resolution rates looked like. It's interesting to see such big differences between companies but without further information about how they handle disputes, it's impossible to say anything confidently comparing one company to another.&lt;/p&gt;
&lt;h2&gt;[MAP] Disputed Resolutions by State&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://do4.ohashimedia.com/dispute.php"&gt;&lt;img src="http://kevinohashi.com/sites/default/files/dispute_state1.png" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally, I created a map graphing disputed resolutions by state. There was a surprisingly large variation between states. Alaska, for instance, had a disputed resolution rate of over 26% while Wyoming had a measly 16%. I have no idea why, but it's interesting and worth looking into further.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I had a lot of fun exploring this fresh set of data and there is a lot more to be learned from it. I want to give a big thanks to Ana from the CFPB and Logan from the Census Bureau who attended the event and helped participants navigate the data provided their respective organizations.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href="https://kevinohashi.com/03/06/2013/national-day-civic-hacking-exploring-consumer-financial-protection-bureau-data" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;</description><author>Kevin Ohashi</author><pubDate>Mon, 03 Jun 2013 01:05:22 GMT</pubDate><guid isPermaLink="true">https://kevinohashi.com/03/06/2013/national-day-civic-hacking-exploring-consumer-financial-protection-bureau-data</guid></item><item><title>Magic Phone Numbers: My VOIP Setup, with voip.ms</title><link>https://duncanlock.net/blog/2013/05/31/magic-phone-numbers-my-voip-setup-with-voipms/</link><description>&lt;figure class="image-block"&gt;&lt;img alt="Schmatic diagram showing two phones" height="calling from the UK to Canada - via the cloud - for free." src="https://duncanlock.net/images/posts/magic-phone-numbers-my-voip-setup-with-voipms/magic-number-diagram.png" width="linked by a magic cloud" /&gt;
&lt;figcaption&gt;Figure 1. In an ideal world, I&amp;#8217;d like something like this - and vice versa, please.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;My wife and I currently live in Canada, and our families are back in the &lt;span class="caps"&gt;UK&lt;/span&gt;. We&amp;#8217;d been using Skype to chat with people in the &lt;span class="caps"&gt;UK&lt;/span&gt;, but I was getting frustrated with Skype&amp;#8217;s limitations: it either ties you to a computer and WiFi, or running a battery hungry app which slows down your phone. It doesn&amp;#8217;t work very well over the 3G phone network here and while it&amp;#8217;s free to make Skype to Skype calls, it&amp;#8217;s fairly expensive calling real phones. I didn&amp;#8217;t really want to buy a dedicated Skype phone - we both already have mobile/cell phones. And, to top it all off, the Skype software for Linux is the poor cousin of the Windows one, or pretty much unusable if you run 64-bit&amp;nbsp;Linux.&lt;/p&gt;
&lt;p&gt;In addition to these Skype specific issues, our parents both live out in the English countryside, and their internet connections are pretty slow and unreliable. It would be better if they didn&amp;#8217;t have to use the internet on their end at&amp;nbsp;all.&lt;/p&gt;
&lt;p&gt;So, what I really wanted was something that I could easily use on my Android phone without having to run yet another app, and that was cheaper and easier to use. I also wanted something that could be used exactly like a regular local phone number&amp;#8201;&amp;#8211;&amp;#8201;just call it and ring a phone on the other side of the&amp;nbsp;world.&lt;/p&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_what_i_wanted_was_a_magic_phone_number"&gt;What I wanted was a Magic Phone&amp;nbsp;Number&lt;/h2&gt;&lt;p&gt;After a lot of reading &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; research &lt;a class="footnote-ref" href="#_footnote_1" id="_footnoteref_1" title="View footnote 1"&gt;[1]&lt;/a&gt;, I decided that I wanted a &lt;span class="caps"&gt;VOIP&lt;/span&gt; (Voice Over &lt;span class="caps"&gt;IP&lt;/span&gt;) &lt;a class="footnote-ref" href="#_footnote_2" id="_footnoteref_2" title="View footnote 2"&gt;[2]&lt;/a&gt; setup of some&amp;nbsp;sort.&lt;/p&gt;
&lt;p&gt;Unlike Skype, &lt;span class="caps"&gt;VOIP&lt;/span&gt; is an open standard, which means that anyone can create software and devices for it, not just one company. Amongst other things, this means that there are lots of &lt;span class="caps"&gt;VOIP&lt;/span&gt; soft-phones &lt;a class="footnote-ref" href="#_footnote_3" id="_footnoteref_3" title="View footnote 3"&gt;[3]&lt;/a&gt; available for every platform and, even better, Android has built in support for making and receiving &lt;span class="caps"&gt;VOIP&lt;/span&gt; calls&amp;#8201;&amp;#8211;&amp;#8201;so it would just work on our existing phones, without needing to install&amp;nbsp;anything.&lt;/p&gt;
&lt;p&gt;There are also lots of &lt;span class="caps"&gt;VOIP&lt;/span&gt; services available that provide lots of other features, like &lt;span class="caps"&gt;DID&lt;/span&gt; (Direct Inward Dialing - i.e. real phone numbers), voice-mail, call forwarding, ring groups, &lt;span class="caps"&gt;IVR&lt;/span&gt; (Interactive Voice Response - i.e. Press One for&amp;#8230;&amp;#8203;, Two for&amp;#8230;&amp;#8203;)`&amp;nbsp;etc&amp;#8230;&amp;#8203;&lt;/p&gt;
&lt;p&gt;I eventually chose &lt;a href="http://voip.ms/"&gt;http://voip.ms/&lt;/a&gt;, because of their extreme flexibility, &lt;a href="http://wiki.voip.ms/article/Features"&gt;features&lt;/a&gt; and very low wholesale-style&amp;nbsp;costs.&lt;/p&gt;
&lt;p&gt;Because it&amp;#8217;s so flexible, it easily allowed us to get what we needed, along with plenty of bonus extras, for almost no&amp;nbsp;cost.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_getting_a_real_phone_number"&gt;Getting a Real Phone&amp;nbsp;Number&lt;/h2&gt;&lt;p&gt;The first thing I wanted was a real &lt;span class="caps"&gt;UK&lt;/span&gt; phone number that people there could call, that would ring our phones in Canada. Ideally it would be a local number for our parents - familiar and free or cheap to call from a landline&amp;nbsp;phone.&lt;/p&gt;
&lt;p&gt;These are called &lt;span class="caps"&gt;DID&lt;/span&gt; (Direct Inward Dialing - i.e. real phone numbers) numbers - and you can get one for &lt;a href="https://www.voip.ms/intldids.php"&gt;practically anywhere&lt;/a&gt;. &lt;span class="caps"&gt;DID&lt;/span&gt;&amp;#8217;s for many places have a choice of either pay as you go, or monthly flat rate which includes unlimited inbound calls to that number; the &lt;span class="caps"&gt;UK&lt;/span&gt; ones only offer flat rate: $0 setup fee and $4 per month unlimited inbound calls. You just choose the area code you want and click&amp;nbsp;Order.&lt;/p&gt;
&lt;p&gt;Congratulations, you now have a &lt;span class="caps"&gt;UK&lt;/span&gt; phone number! The process for getting a phone number practically anywhere else in the world is the same. Now you just need to decide what happens when someone calls&amp;nbsp;it.&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_routing"&gt;Routing&lt;/h3&gt;&lt;p&gt;There are &lt;em&gt;lots&lt;/em&gt; of options for routing your incoming calls: send them to voicemail, send them to a Digital Receptionist/&lt;span class="caps"&gt;IVR&lt;/span&gt; (Interactive Voice Response - i.e. Press One for&amp;#8230;&amp;#8203;, Two for&amp;#8230;&amp;#8203;), forward them to another number, play them a recording,&amp;nbsp;etc&amp;#8230;&amp;#8203;&lt;/p&gt;
&lt;p&gt;I wanted to give people the option of being put through to either me, or my wife, so I wanted to prompt them to choose: &amp;#8216;Press 1 to call Duncan, Press 2 to&amp;#8230;&amp;#8203;&amp;#8217;&amp;#8201;&amp;#8211;&amp;#8201;so I needed to send callers to an &lt;span class="caps"&gt;IVR&lt;/span&gt;:&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_interactive_voice_response_ivr"&gt;Interactive Voice Response (&lt;span class="caps"&gt;IVR&lt;/span&gt;)&lt;/h3&gt;&lt;p&gt;This is just a simple voice prompt system. It plays the caller a recording that you supply and then does things in response to them pressing different digits. You can route each option anywhere you can route a normal call. I set up 1 to call me, 2 to call my wife, 3 to leave me a voicemail and 4 to leave one for my&amp;nbsp;wife:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="Schematic blueprint style diagram showing a UK caller" height="being routed to an IVR menu in the 'magic cloud'" src="https://duncanlock.net/images/posts/magic-phone-numbers-my-voip-setup-with-voipms/uk-voip-diagram.png" width="calling a local UK landline" /&gt;
&lt;figcaption&gt;Figure 2. Simple &lt;span class="caps"&gt;UK&lt;/span&gt; &lt;span class="caps"&gt;IVR&lt;/span&gt; setup, works out to free calls, plus $4 per month flat rate.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Now I wanted the same thing, in reverse&amp;#8201;&amp;#8211;&amp;#8201;a local number that I could call in Canada that would let me call the &lt;span class="caps"&gt;UK&lt;/span&gt;.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_phone_to_phone_calling_via_the_cloud"&gt;Phone to Phone calling, via the&amp;nbsp;Cloud&lt;/h2&gt;&lt;p&gt;So I purchased another &lt;span class="caps"&gt;DID&lt;/span&gt; number, a local Vancouver number, that we could call for free from our cell phones. I then created another &lt;span class="caps"&gt;IVR&lt;/span&gt;, so that when we called that number it would give us a menu of people in the &lt;span class="caps"&gt;UK&lt;/span&gt; to&amp;nbsp;call:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="screenshot 13 05 31 03 30 35 pm" src="https://duncanlock.net/images/posts/magic-phone-numbers-my-voip-setup-with-voipms/screenshot-13-05-31_03-30-35-pm.png" /&gt;
&lt;figcaption&gt;Figure 3. Building an &lt;span class="caps"&gt;IVR&lt;/span&gt; menu in voip.ms. On the right - the digit the caller pressed, on the left, the destination. As you can see, there are lots of different options on the left - these are all the different places you can send callers.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Because our cell phone plan gives us unlimited included/free talk time to local numbers, this means that we can call our local &lt;span class="caps"&gt;DID&lt;/span&gt; number for free and talk to people in the &lt;span class="caps"&gt;UK&lt;/span&gt; (or anywhere else), for as long as we like - no data connection&amp;nbsp;required.&lt;/p&gt;
&lt;p&gt;There are two different plans available for the Vancouver &lt;span class="caps"&gt;DID&lt;/span&gt; number: either $1.99 per month plus 0.0149¢ per minute, or $5.95 per month flat rate. The flat rate plan is cheaper if you&amp;#8217;re using more than 400 minutes per month - we&amp;#8217;re currently using less than that, so we&amp;#8217;re on the $1.99&amp;nbsp;plan.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_counting_the_cost"&gt;Counting the&amp;nbsp;Cost&lt;/h2&gt;&lt;p&gt;Last month, we spent a total of &lt;strong&gt;14 hours, 24 minutes, 55 seconds&lt;/strong&gt; calling people in the &lt;span class="caps"&gt;UK&lt;/span&gt; and spent a total of &lt;strong&gt;$12.59&lt;/strong&gt;. That&amp;#8217;s&amp;#8230;&amp;#8203; &lt;em&gt;a lot&lt;/em&gt; of talking, for not very much&amp;nbsp;cash.&lt;/p&gt;
&lt;p&gt;This gives us what we wanted - magic numbers that we can use to call anyone in the world from our cell phones - and that anyone can use to call us - at very low&amp;nbsp;prices.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_but_wait_theres_more"&gt;But wait, there&amp;#8217;s&amp;nbsp;more&amp;#8230;&amp;#8203;&lt;/h2&gt;&lt;p&gt;This just scratches the surface of the things you can do using &lt;span class="caps"&gt;VOIP&lt;/span&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; voip.ms. Here&amp;#8217;s a taster of some of the other things that you can do, some of this we&amp;#8217;re already using and some we might use in the&amp;nbsp;future:&lt;/p&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://wiki.voip.ms/article/Voicemail"&gt;Free Voicemail for&amp;nbsp;anything&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;You can route any call to voicemail to take a message. The system can then email the recording (as a .wav file attachment) to any&amp;nbsp;inbox.&lt;/dd&gt;&lt;dt&gt;&lt;a href="http://wiki.voip.ms/article/Caller_ID"&gt;CallerID&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;You can pass-through the CallerID from your phone when you use &lt;span class="caps"&gt;DID&lt;/span&gt; numbers to make outbound calls if you want, or you can set them yourself. You can also have the system report CallerID&amp;#8217;s on incoming calls, so that your phone will tell you who&amp;#8217;s&amp;nbsp;calling.&lt;/dd&gt;&lt;dt&gt;&lt;span class="caps"&gt;VOIP&lt;/span&gt; to &lt;span class="caps"&gt;VOIP&lt;/span&gt; calling, &lt;span class="caps"&gt;VOIP&lt;/span&gt; to Phone calling (aka free long&amp;nbsp;distance)&lt;/dt&gt;&lt;dd&gt;You don&amp;#8217;t have to use the &lt;span class="caps"&gt;POTS&lt;/span&gt; (Plain Old Telephone System) at all - you can make pure data calls over the internet, either to regular phones or &lt;span class="caps"&gt;SIP&lt;/span&gt;/&lt;span class="caps"&gt;VOIP&lt;/span&gt; numbers. This means that you can use WiFi to make calls without using your cell phone minutes at all, or indeed having a &lt;span class="caps"&gt;SIM&lt;/span&gt; card or a phone - you can use a softphone on any computer or laptop to make&amp;nbsp;calls.&lt;/dd&gt;&lt;dt&gt;&lt;a href="http://wiki.voip.ms/article/SMS"&gt;&lt;span class="caps"&gt;SMS&lt;/span&gt; text&amp;nbsp;messaging&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;I haven&amp;#8217;t figured this out yet, but you can send &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; receive &lt;span class="caps"&gt;SMS&lt;/span&gt; text messages, using your &lt;span class="caps"&gt;DID&lt;/span&gt; numbers. This is a new feature currently &lt;span class="caps"&gt;US&lt;/span&gt; only (and free) - will be 1¢ per text from&amp;nbsp;2014.&lt;/dd&gt;&lt;dt&gt;&lt;a href="http://wiki.voip.ms/article/DISA"&gt;&lt;span class="caps"&gt;DISA&lt;/span&gt; - Direct Inward System&amp;nbsp;Access&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;This allows you to make outgoing calls, to anyone, with no setup. You just dial to your &lt;span class="caps"&gt;DID&lt;/span&gt; number, provide a 4 digit &lt;span class="caps"&gt;PIN&lt;/span&gt;, then you can dial out to any number in the world, using &lt;a href="http://www.voip.ms/rates.php"&gt;voip.ms&amp;#8217;s cheap termination rates&lt;/a&gt;.&lt;/dd&gt;&lt;dt&gt;&lt;a href="http://wiki.voip.ms/article/Callback"&gt;Callback&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;You can define a number to be called back by voip.ms, in order to receive a dial tone and place outgoing calls. This could be useful if you want to place a call and you are not at home or don&amp;#8217;t have access to your voip device: you call the number, hang up and it calls the predefined number. You pick up and you get a dial tone - and you can then dial any phone&amp;nbsp;number.&lt;/dd&gt;&lt;dt&gt;&lt;a href="http://wiki.voip.ms/article/CallerID_Filtering"&gt;CallerID&amp;nbsp;Filtering&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;Allows you to filter the incoming calls to your &lt;span class="caps"&gt;DID&lt;/span&gt; numbers that came from specific numbers, area code or even anonymous numbers. For example, if you receive annoying incoming calls from a telemarketing company you can create a filter to route all the calls to a recording that plays the message &amp;#8220;That number is no longer in service, please hang up and try again&amp;#8221;, amongst several other options. You can also flip this around and filter out everyone except certain numbers, creating a private line that&amp;#8217;s impervious to&amp;nbsp;telemarketers.&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;p&gt;There are also loads of &amp;#8216;professional&amp;#8217; type features designed for big offices - calling cues, ring groups, failover, time conditions, etc&amp;#8230;&amp;#8203; Lots more details here: &lt;a href="http://wiki.voip.ms/article/Features"&gt;http://wiki.voip.ms/article/Features&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re sold on voip, here&amp;#8217;s the &lt;a href="http://wiki.voip.ms/article/Getting_Started"&gt;voip.ms getting started guide&lt;/a&gt;&amp;#8201;&amp;#8211;&amp;#8201;and if you&amp;#8217;ve got any questions, please just ask in the&amp;nbsp;comments!&lt;/p&gt;
&lt;hr /&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_footnotes_references"&gt;Footnotes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;References:&lt;/h3&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class="footnotes"&gt;&lt;hr /&gt;&lt;ol class="footnotes"&gt;&lt;li class="footnote" id="_footnote_1"&gt;Thanks very much to Jay Parlar, who wrote up his voip setup &lt;a href="http://parlar.ca/blog/2011/8/8/my-voip-setup-with-voipms.html"&gt;here&lt;/a&gt;. &lt;a class="footnote-backref" href="#_footnoteref_1" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_2"&gt;What is &lt;span class="caps"&gt;VOIP&lt;/span&gt;: &lt;a href="http://en.wikipedia.org/wiki/Voice_over_IP"&gt;http://en.wikipedia.org/wiki/Voice_over_IP&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_2" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_3"&gt;A soft-phone is a piece of software, like Skype, that allows you to make phone calls on a computer. Unlike Skype, most of them support &lt;span class="caps"&gt;SIP&lt;/span&gt;, &lt;span class="caps"&gt;STUN&lt;/span&gt; and &lt;span class="caps"&gt;VOIP&lt;/span&gt;. &lt;a class="footnote-backref" href="#_footnoteref_3" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Sat, 01 Jun 2013 00:46:45 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/05/31/magic-phone-numbers-my-voip-setup-with-voipms/</guid></item><item><title>Getting Out of the Office</title><link>https://zacs.site/blog/getting-out-of-the-office.html</link><description>&lt;p&gt;For the past three days, I&amp;#8217;ve gotten out of &amp;#8220;the office&amp;#8221; to write, meaning instead of in my room where I usually write, I went outside and sat in the backyard. And it&amp;#8217;s done wonders for my work.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/getting-out-of-the-office.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 31 May 2013 20:58:38 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/getting-out-of-the-office.html</guid></item><item><title>Unsplash</title><link>http://www.unsplash.com</link><description>&lt;p&gt;Up until now, I have, with but &lt;a href="https://zacs.site/blog/smart-&amp;#38;-funny.html"&gt;one exception&lt;/a&gt;, abstained from writing a single article containing anything but simple text. That exception, a video from Merlin Mann, Scott Simpson, and Adam Lisagor titled &lt;a href="http://vimeo.com/1212142"&gt;Smart and Funny&lt;/a&gt;, was just too good to resist: I couldn&amp;#8217;t bear the thought of not posting it, of not sharing this hilarious video with everyone that happened to visit my site.&lt;/p&gt;

&lt;p&gt;As I said, that video is the only exception, an exception I made because it was &lt;em&gt;great&lt;/em&gt;. Today, a new Tumblr popped up called Unsplash. Every ten days, the curator of Unsplash posts ten new hi-resolution photos, free for anyone to use in all their glory. The first ten are nothing short of amazing&amp;#160;&amp;#8212;&amp;#160;not great, even better: amazing. I can&amp;#8217;t wait to see the next batch.&lt;/p&gt;

&lt;img height="600px" src="http://25.media.tumblr.com/4d1f173744a32bb4b35a2d5d0babff74/tumblr_mnh29fxz111st5lhmo1_1280.jpg" /&gt;


                &lt;p&gt;&lt;a href="http://www.unsplash.com"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 31 May 2013 17:39:51 GMT</pubDate><guid isPermaLink="true">http://www.unsplash.com</guid></item><item><title>The Magazine on Facebook</title><link>https://zacs.site/blog/the-magazine-on-facebook.html</link><description>&lt;p&gt;&amp;#8220;We now have a Facebook page where we will post photos, video, and teasers of upcoming articles.&amp;#8221;&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-magazine-on-facebook.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 31 May 2013 17:29:00 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-magazine-on-facebook.html</guid></item><item><title>Go Ahead, Write About that Again</title><link>https://zacs.site/blog/write-about-that-again.html</link><description>&lt;p&gt;For the past week or so, I&amp;#8217;ve been on a bit of a writing binge. With school finally done for the summer, I suddenly found myself with a lot of free time I quickly filled with writing at every possible moment. I started and finished &lt;a href="https://zacs.site/blog/nickelodeons-experiment.html"&gt;&lt;em&gt;Nickelodeon&amp;#8217;s Experiment&lt;/em&gt;&lt;/a&gt; over the first six days, and wrote a number of much smaller articles and link posts since then. All in all, it&amp;#8217;s been a great few days.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/write-about-that-again.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 31 May 2013 17:22:09 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/write-about-that-again.html</guid></item><item><title>Postgres Indexing - A collection of indexing tips</title><link>/2013/05/30/Postgres-Indexing-A-collection-of-indexing-tips/</link><description>&lt;p&gt;Even from intial reviews of my previous post on expression based indexes I received a lot of questions and feedback around many different parts of indexing in Postgres. Here&amp;rsquo;s a mixed collection of valuable tips and guides around much of that.&lt;/p&gt;
&lt;h3 id="unused-indexes"&gt;
&lt;div&gt;
Unused Indexes
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;In an earlier tweet I joked about some SQL that would generate the SQL to add an index to every column:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# SELECT 'CREATE INDEX idx_'
|| table_name || '_'
|| column_name || ' ON '
|| table_name || ' (&amp;quot;'
|| column_name || '&amp;quot;);'
FROM information_schema.columns;
?column?
---------------------------------------------------------------------
CREATE INDEX idx_pg_proc_proname ON pg_proc (&amp;quot;proname&amp;quot;);
CREATE INDEX idx_pg_proc_pronamespace ON pg_proc (&amp;quot;pronamespace&amp;quot;);
CREATE INDEX idx_pg_proc_proowner ON pg_proc (&amp;quot;proowner&amp;quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;The reasoning behind this is guessing whether an index will be helpful can be a bit hard within Postgres. So the easy solution is to add indexes to everything, then just observe if they&amp;rsquo;re being used. &lt;em&gt;Of course you want to add it to all tables/columns because you never know if core of Postgres may be missing some needed ones&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As included with the &lt;a href="https://github.com/heroku/heroku-pg-extras"&gt;pg-extras plugin for Heroku&lt;/a&gt; you can run a query to show you all unused indexes. On Heroku simply install the plugin the run &lt;code&gt;heroku pg:unused_indexes&lt;/code&gt; to show the size and number of times an index scan has been used. On a non Heroku Postgres database you can run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# SELECT
schemaname || '.' || relname AS table,
indexrelname AS index,
pg_size_pretty(pg_relation_size(i.indexrelid)) AS index_size,
idx_scan as index_scans
FROM pg_stat_user_indexes ui
JOIN pg_index i ON ui.indexrelid = i.indexrelid
WHERE NOT indisunique AND idx_scan &amp;lt; 50 AND pg_relation_size(relid) &amp;gt; 5 * 8192
ORDER BY pg_relation_size(i.indexrelid) / nullif(idx_scan, 0) DESC NULLS FIRST,
pg_relation_size(i.indexrelid) DESC;
table | index | index_size | index_scans
---------------------+--------------------------------------------+------------+-------------
public.grade_levels | index_placement_attempts_on_grade_level_id | 97 MB | 0
public.observations | observations_attrs_grade_resources | 33 MB | 0
public.messages | user_resource_id_idx | 12 MB | 0
(3 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="costs-of-indexing"&gt;
&lt;div&gt;
Costs of Indexing
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;There are really a couple of primary costs when it comes to indexing your data. The first is the overall size of the index. Indexes take size on disk, fortunately in most cases disk is pretty cheap. If you&amp;rsquo;re limited on disk size and not on your current performance then its pretty clear the trade-off you want to take. If you do need to get the size of your index you can do that by running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# SELECT pg_size_pretty(pg_total_relation_size('idx_name'));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The harder trade off to look at is the cost in terms of throughput. As your data comes in there&amp;rsquo;s a cost for maintaining that index as the data within it has to be computed. If you&amp;rsquo;re doing crazy regex&amp;rsquo;s in your index then you can expect this to have an impact on your throughput.&lt;/p&gt;
&lt;h3 id="composite-indexes-vs-multiple-indiviual-indexes"&gt;
&lt;div&gt;
Composite Indexes vs. Multiple Indiviual Indexes
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;A composite index is an index that includes multiple columns. Given an example table of purchases:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# \d purchases
Table &amp;quot;public.purchases&amp;quot;
Column | Type | Modifiers
-------------+-----------------------------+-----------
id | integer | not null
item | integer |
quantity | integer |
color | integer |
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You might want to add an index on item and quantity together. You can do this with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CREATE INDEX idx_purchases_item_quantity_color ON purchases (item, quantity, color)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From now on if you included item and quantity in a query its likely it would use this index just as it would if you used item, quantity and color. If you have a large varied set of data within each of these such an index can prove very useful. The caveat is that if you&amp;rsquo;re querying against only quantity and color then this index is useless, it &lt;strong&gt;must&lt;/strong&gt; include the item column.&lt;/p&gt;
&lt;p&gt;In contrast if you have three individual indexes Postgres may combine these or simply use one that would be the most efficient out of the three.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CREATE INDEX idx_purchases_item ON purchases (item);
CREATE INDEX idx_purchases_quantity ON purchases (quantity);
CREATE INDEX idx_purchases_color ON purchases (color);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course in this case if you query any individual column it would use the index if appropriate.&lt;/p&gt;
&lt;h3 id="what-else"&gt;
&lt;div&gt;
What Else
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;What else do you want to know about Postgres Indexing? Drop me a line &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens at gmail.com&lt;/a&gt; or hop over to &lt;a href="http://www.postgresguide.com"&gt;Postgres Guide&lt;/a&gt; and &lt;a href="http://postgresguide.com/performance/indexes.html"&gt;read a little there&lt;/a&gt; or even contribute some articles of your own.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 30 May 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/05/30/Postgres-Indexing-A-collection-of-indexing-tips/</guid></item><item><title>Under Old Management</title><link>https://the-magazine.org/under-old-management</link><description>&lt;p&gt;As Glenn Fleishman said in the article&amp;#8217;s opening sentence, Marco has indeed had a very busy few weeks lately. I&amp;#8217;m very enthusiastic about the changes Glenn plans to make in the coming weeks and months with the publication of an actual print volume and the advent of a complementary podcast. Until now I haven&amp;#8217;t made time to subscribe despite constantly hearing wonderful things about The Magazine; who knows, maybe this will get me to bite the bullet and spend my summer reading.&lt;/p&gt;


                &lt;p&gt;&lt;a href="https://the-magazine.org/under-old-management"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 30 May 2013 21:05:24 GMT</pubDate><guid isPermaLink="true">https://the-magazine.org/under-old-management</guid></item><item><title>The Terrible First Draft</title><link>https://zacs.site/blog/the-terrible-first-draft.html</link><description>&lt;p&gt;Writing about writing has always held great interest for me. That&amp;#8217;s why, when I saw Shawn Blanc&amp;#8217;s article &lt;a href="http://shawnblanc.net/2013/05/the-root-of-non-writing/"&gt;&lt;em&gt;The Root of Non-Writing&lt;/em&gt;&lt;/a&gt; pop up in Reeder earlier this afternoon, I read it, saved it to Instapaper, and then read it again. I love metawriting.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-terrible-first-draft.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 30 May 2013 20:09:04 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-terrible-first-draft.html</guid></item><item><title>The Elegant Email</title><link>http://www.randsinrepose.com/archives/2012/10/14/the_elegant_email.html</link><description>&lt;p&gt;&amp;#8220;With each paragraph you write, double the amount of time you spend editing. It&amp;#8217;s not just grammar and spelling errors that might be hurting your credibility. Is your point clear, literate, and concise? Have you pruned aggressively to find the core of what you&amp;#8217;re saying? With each additional paragraph, the higher the chance becomes that you&amp;#8217;ve made an egregious mistake that might make your email confusing and forgettable.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.randsinrepose.com/archives/2012/10/14/the_elegant_email.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 30 May 2013 17:53:58 GMT</pubDate><guid isPermaLink="true">http://www.randsinrepose.com/archives/2012/10/14/the_elegant_email.html</guid></item><item><title>The Second Test</title><link>http://www.randsinrepose.com/archives/2012/09/18/the_second_test.html</link><description>&lt;p&gt;Michael Lopp explaining why engineers, in his experience, appear to hate you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;In your company, there are three kinds of people. There are those you are aware of, but who don&amp;#8217;t immediately affect your world. There are those who mildly affect  your world and upon whom you have a lightweight dependency. And there are those who are an active part of your world. You depend on them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I don&amp;#8217;t want to depend on you. It&amp;#8217;s nothing personal, it&amp;#8217;s just that as an engineer I irrationally believe that anything I don&amp;#8217;t build with my own hands is going to get fucked up by someone else. I believe this because I&amp;#8217;ve spent a good portion of my life watching other well-meaning people sit down at a computer and simply... make things harder for themselves.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Replace &amp;#8220;company&amp;#8221; with &amp;#8220;life&amp;#8221; in the first paragraph and he just explained me. The entire article, in fact, and his characterization of the engineer describes my personality to a T. Well said, Mr. Lopp, well said.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.randsinrepose.com/archives/2012/09/18/the_second_test.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 30 May 2013 17:53:16 GMT</pubDate><guid isPermaLink="true">http://www.randsinrepose.com/archives/2012/09/18/the_second_test.html</guid></item><item><title>Unknowable</title><link>http://www.randsinrepose.com/archives/2013/05/19/unknowable.html</link><description>&lt;p&gt;&amp;#8220;The cap on WWDC tickets means it won&amp;#8217;t go the way of SXSW - a wildly successful conference that has grown consistently since its inception. I used to go every year until one late night we looked around a huge sea of strangers and decided that we no longer knew this conference. The experience had become diluted. It had become unfamiliar, full of strangers, and unknowable.&amp;#8221;&lt;/p&gt;

&lt;p&gt;For the most part, I didn&amp;#8217;t follow the discussion surrounding WWDC ticket sales after they sold out in under two minutes. I read &lt;a href="http://hypercritical.co/2013/04/26/the-lottery"&gt;John Siracusa&amp;#8217;s article&lt;/a&gt; on the topic, but for the most part stayed out of the conversation. I haven&amp;#8217;t ever gone to WWDC, after all, nor do I plan to in the foreseeable future. From the few articles I did see, however, and based on the numerous podcasts that touched on the subject, I noticed that by far the vast majority criticized Apple for capping WWDC attendance at 5,000. Michael Lopp&amp;#8217;s piece linked at the top of this article was the only piece of note I came across defending Apple&amp;#8217;s decision, and easily the best.&lt;/p&gt;

&lt;p&gt;As a brief aside before you go on your way, before tonight I had only heard of Michael Lopp in name. Specifically, I remember this one time, very distinctly for some reason, John Gruber mentioned him and his blog on an episode of The Talk Show. After reading &lt;em&gt;Unknowable&lt;/em&gt;, I took a few minutes to check out his site. Ten minutes later I finished adding Rands in Repose to my RSS reader; I was very impressed. Over the next half hour I jumped between this article and &lt;a href="http://www.randsinrepose.com/archives/2012/08/28/youre_not_listening.html"&gt;&lt;em&gt;You&amp;#8217;re Not Listening&lt;/em&gt;&lt;/a&gt;, an article from last year about verbal communication and all its curious little nuances. It was a very interesting read and a representative sample of the type and quality of article Michael Lopp writes. As I suggested at the end of &lt;a href="https://zacs.site/blog/tumblr-plus-yahoo.html"&gt;&lt;em&gt;Tumblr. + Yahoo! = !!&lt;/em&gt;&lt;/a&gt;, if you are unfamiliar with his work, go check it out.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.randsinrepose.com/archives/2013/05/19/unknowable.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 30 May 2013 14:52:32 GMT</pubDate><guid isPermaLink="true">http://www.randsinrepose.com/archives/2013/05/19/unknowable.html</guid></item><item><title>Speeding up Matplotlib</title><link>https://bastibe.de/2013-05-30-speeding-up-matplotlib.html</link><description>&lt;p&gt;For the record, &lt;a href="http://matplotlib.org"&gt;Matplotlib&lt;/a&gt; is awesome! Its output looks amazing, it is extremely configurable and very easy to use. What more could you want?&lt;/p&gt;
&lt;p&gt;Well... speed. If there is one thing I could criticize about Matplotlib, it is its relative slowness. To measure that, lets make a very simple line plot and draw some random numbers as quickly as possible:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;matplotlib.pyplot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;plt&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;numpy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;np&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;time&lt;/span&gt;

&lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subplots&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;tstart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;num_plots&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tstart&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clear&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;randn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pause&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;num_plots&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_plots&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On my machine, I get about 11 plots per second. I am using &lt;code&gt;pause()&lt;/code&gt; here to update the plot without blocking. The correct way to do this is to use &lt;code&gt;draw()&lt;/code&gt; instead, but due to a bug in the Qt4Agg backend, you can't use it there. If you are not using the Qt4Agg backend, &lt;code&gt;draw()&lt;/code&gt; is supposedly the correct choice.&lt;/p&gt;
&lt;p&gt;For a single plot, ten plots per second is not terrible. But then, this is really the simplest case possible, so ten frames per second in the simplest case probably means bad things for not so simple cases.&lt;/p&gt;
&lt;p&gt;One thing that really takes time here is creating all the axes and text labels over and over again. So let's not do that.&lt;/p&gt;
&lt;p&gt;Instead of calling &lt;code&gt;clear()&lt;/code&gt; and then &lt;code&gt;plot()&lt;/code&gt;, thus effectively deleting everything about the plot, then re-creating it for every frame, we can keep an existing plot and only modify its data:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subplots&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;randn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;tstart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;num_plots&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tstart&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_ydata&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;randn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pause&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;num_plots&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_plots&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;which yields about 26 plots per second. Not bad for a simple change like this. The downside is that the axes are not re-scaled any longer when the data changes. Thus, they won't change their limits based on the data any more.&lt;/p&gt;
&lt;p&gt;Profiling this yields some interesting results:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;ncalls&lt;/th&gt;
  &lt;th&gt;tottime&lt;/th&gt;
  &lt;th&gt;percall&lt;/th&gt;
  &lt;th&gt;cumtime&lt;/th&gt;
  &lt;th&gt;percall&lt;/th&gt;
  &lt;th&gt;filename:lineno(function)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;15&lt;/td&gt;
  &lt;td&gt;0.167&lt;/td&gt;
  &lt;td&gt;0.011&lt;/td&gt;
  &lt;td&gt;0.167&lt;/td&gt;
  &lt;td&gt;0.011&lt;/td&gt;
  &lt;td&gt;{built-in method sleep)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The one function that uses the biggest chunk of runtime is &lt;code&gt;sleep()&lt;/code&gt;, of all things. Clearly, this is not what we want. Delving deeper into the profiler shows that this is indeed happening in the call do &lt;code&gt;pause()&lt;/code&gt;. Then again, I &lt;em&gt;was&lt;/em&gt; wondering if using &lt;em&gt;pause&lt;/em&gt; really was a great idea for performance...&lt;/p&gt;
&lt;p&gt;As it turns out, &lt;code&gt;pause()&lt;/code&gt; internally calls &lt;code&gt;fig.canvas.draw()&lt;/code&gt;, then &lt;code&gt;plt.show()&lt;/code&gt;, then &lt;code&gt;fig.canvas.start_event_loop()&lt;/code&gt;. The default implementation of &lt;code&gt;fig.canvas.start_event_loop()&lt;/code&gt; then calls &lt;code&gt;fig.canvas.flush_events()&lt;/code&gt;, then sleeps for the requested time. To add insult to injury, it even insists on sleeping at least one hundredth of a second, which actually explains the profiler output of 0.167 seconds of &lt;code&gt;sleep()&lt;/code&gt; for 15 calls very well.&lt;/p&gt;
&lt;p&gt;Putting this all together now yields:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subplots&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;randn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;tstart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;num_plots&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tstart&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_ydata&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;randn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;canvas&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;draw&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;canvas&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;flush_events&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;num_plots&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_plots&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;which now plots about 40 frames per second. Note that the call to &lt;code&gt;show()&lt;/code&gt; mentioned earlier can be omitted since the figure is already on screen. &lt;code&gt;flush_events()&lt;/code&gt; just runs the Qt event loop, so there is probably nothing to optimize there.&lt;/p&gt;
&lt;p&gt;The only thing left to optimize now is thus &lt;code&gt;fig.canvas.draw()&lt;/code&gt;. What this really is doing is drawing all the artists contained in the &lt;code&gt;ax&lt;/code&gt;. Those artists can be accessed using &lt;code&gt;ax.get_children()&lt;/code&gt;. For a simple plot like this, the artists are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the background &lt;code&gt;ax.patch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;the line, as returned from the &lt;code&gt;plot()&lt;/code&gt; function&lt;/li&gt;
&lt;li&gt;the spines &lt;code&gt;ax.spines&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;the axes &lt;code&gt;ax.xaxis&lt;/code&gt; and &lt;code&gt;ax.yaxis&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What we can do here is to selectively draw only the parts that are actually changing. That is, at least the background and the line. To only redraw these, the code now looks like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subplots&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;randn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;tstart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;num_plots&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tstart&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_ydata&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;randn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;draw_artist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patch&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;draw_artist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;canvas&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;canvas&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;flush_events&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;num_plots&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_plots&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Note that you have to add &lt;code&gt;fig.canvas.update()&lt;/code&gt; to copy the newly rendered lines to the drawing backend.&lt;/p&gt;
&lt;p&gt;This now plots about 500 frames per second. Five hundred times per second! Frankly, this is quite amazing!&lt;/p&gt;
&lt;p&gt;Note that since we are only redrawing the background and the line, some detail in the axes will be overwritten. To also draw the spines, use &lt;code&gt;for spine in ax.spines.values(): ax.draw_artist(spine)&lt;/code&gt;. To draw the axes, use &lt;code&gt;ax.draw_artist(ax.xaxis)&lt;/code&gt; and &lt;code&gt;ax.draw_artist(ax.yaxis)&lt;/code&gt;. If you draw all of them, you get roughly the same performance as &lt;code&gt;fig.canvas.draw()&lt;/code&gt;. The axes in particular are quite expensive.&lt;/p&gt;
&lt;p&gt;There is also &lt;a href="http://stackoverflow.com/a/8956211/1034"&gt;a way&lt;/a&gt; of drawing the complete figure once and copying the complete but empty background, then reinstating that and only plotting a new line on top of it. This is equally fast as the code above without any visual artifacts, but breaks if you resize the plot.&lt;/p&gt;
&lt;p&gt;In conclusion, I am quite impressed with the flexibility of Matplotlib. Matplotlib by default values quality over performance. But if you really need the performance at some point, it is flexible and hackable enough to let you tweak it to your hearts content. Really, an amazing piece of technology!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;EDIT&lt;/em&gt;: As it turns out, &lt;code&gt;fig.canvas.blit(ax.bbox)&lt;/code&gt; is a bad idea since it leaks memory like crazy. What you should use instead is &lt;code&gt;fig.canvas.update()&lt;/code&gt;, which is equally fast but does not leak memory.&lt;/p&gt;</description><author>bastibe.de</author><pubDate>Thu, 30 May 2013 13:50:00 GMT</pubDate><guid isPermaLink="true">https://bastibe.de/2013-05-30-speeding-up-matplotlib.html</guid></item><item><title>Rashad Abdul-Salaam: Founder of Happy Health</title><link>https://solomon.io/rashad-abdul-salaam-founder-of-happy-health/</link><description>Rashad Abdul-Salaam is the founder of Happy Health, a personal health record that helps patients save time and paperwork.</description><author>Sam Solomon</author><pubDate>Thu, 30 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/rashad-abdul-salaam-founder-of-happy-health/</guid></item><item><title>Better Figures &amp;amp; Images Plugin for Pelican</title><link>https://duncanlock.net/blog/2013/05/29/better-figures-images-plugin-for-pelican/</link><description>&lt;section class="doc-section level-1"&gt;&lt;h2 id="_how_figures_images_work_in_pelican_by_default"&gt;How Figures &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Images work in Pelican, by&amp;nbsp;default&lt;/h2&gt;&lt;p&gt;By default Pelican does a great job with figures and images, thanks to built-in support in ReStructuredText &lt;a class="footnote-ref" href="#_footnote_1" id="_footnoteref_1" title="View footnote 1"&gt;[1]&lt;/a&gt;[1] . Pelican will turn this rst&amp;nbsp;input:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;.. figure:: {static}/images/better-figures-images-plugin-for-pelican/dummy-200x200.png
    :align: right

    This is the caption of the figure.

    The legend consists of all elements after the caption. In this case, the legend consists of this paragraph.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;into this &lt;span class="caps"&gt;HTML&lt;/span&gt;&amp;nbsp;output:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"figure align-right"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"/static/images/dummy-200x200.png"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/static/images/dummy-200x200.png"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"caption"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;This is the caption of the figure.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"legend"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;The legend consists of all elements after the caption. In this case, the legend consists of this paragraph&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Which, given this &lt;span class="caps"&gt;CSS&lt;/span&gt;:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Styles for Figures &amp;amp; Images */&lt;/span&gt;

&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#bbb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;img&lt;/span&gt;&lt;span class="nc"&gt;.align-right&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;right&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.figure&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#bbb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.figure.align-right&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;right&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.figure.align-left&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.figure&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nl"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.figure&lt;/span&gt; &lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="nc"&gt;.caption&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.figure&lt;/span&gt; &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.legend&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#aaa&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;italic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nl"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;#8230;&amp;#8203;will look something like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="screenshot 13 04 29 16 42 00 pm" src="https://duncanlock.net/images/posts/better-figures-images-plugin-for-pelican/screenshot-13-04-29_16-42-00-pm.png" /&gt;&lt;/div&gt;
&lt;p&gt;This is great, but it&amp;#8217;s not  &lt;em&gt;quite&lt;/em&gt; what I wanted. I wanted the caption under the image and then the figure to shrink to fit the size of the image it contains. It turns out that this is impossible in &lt;span class="caps"&gt;HTML&lt;/span&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; &lt;span class="caps"&gt;CSS&lt;/span&gt; unless you give the browser an explicit &lt;code&gt;width&lt;/code&gt; attribute for the &lt;code&gt;img&lt;/code&gt; and the containing &lt;code&gt;div&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you actually do that, and add a &lt;code&gt;style="width: 200px; height: auto;"&lt;/code&gt; attribute to both the &lt;code&gt;div&lt;/code&gt; and the &lt;code&gt;img&lt;/code&gt;, you get this - which  &lt;em&gt;is&lt;/em&gt; what I&amp;nbsp;wanted:&lt;/p&gt;
&lt;section class="paragraph"&gt;&lt;h6 class="block-title"&gt;This is the caption of the figure. The legend consists of all elements after the caption. In&amp;nbsp;this&lt;/h6&gt;&lt;p class="right"&gt;case, the legend consists of this paragraph.&amp;nbsp;image::{static}/images/posts/better-figures-images-plugin-for-pelican/dummy-200x200.png[]&lt;/p&gt;&lt;/section&gt;
&lt;p&gt;The problem with this, is that it means that you need to supply a width attribute containing the actual pixel width of the image, for each and every image you use. This would be  &lt;em&gt;very&lt;/em&gt; tedious to do by hand, so I wrote a Pelican plugin to do this, plus a couple of other related things, for&amp;nbsp;me.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_what_the_better_figures_images_plugin_does"&gt;What the Better Figures &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Images plugin&amp;nbsp;does&lt;/h2&gt;&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;Adds a &lt;code&gt;style="width: ???px; height: auto;"&lt;/code&gt; attribute to any &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tags in the content, by automatically checking the dimensions of the actual image file on disk and adding the appropriate attribute to the &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tag.&lt;/li&gt;&lt;li&gt;Also finds any &lt;code&gt;&amp;lt;div class="figures"&amp;gt;&lt;/code&gt; tags in the content which contain images - and adds the same style attribute to&amp;nbsp;them.&lt;/li&gt;&lt;li&gt;If the &lt;code&gt;RESPONSIVE_IMAGES&lt;/code&gt; setting is true, it adds &lt;code&gt;style="width: ???px; max-width: 100%; height: auto;"&lt;/code&gt; instead.&lt;/li&gt;&lt;li&gt;Corrects Alt text: If an img alt attribute = the image filename, it sets it to&amp;nbsp;&amp;#8220;&amp;#8221;&lt;/li&gt;&lt;li&gt;Inserts automatic figure numbers into figure captions, if &lt;code&gt;FIGURE_NUMBERS == True&lt;/code&gt; in global config, or figure_numbers exists in article&amp;nbsp;metadata.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;Assuming that the image is 250px wide, it turns output like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"figure"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"/static/images/image.jpg"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/static/images/better-figures-images-plugin-for-pelican/image.jpg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"caption"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        This is the caption of the figure.
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"legend"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;into output like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"figure"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 250px; height: auto;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 250px; height: auto;"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/static/images/image.jpg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"caption"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        This is the caption of the figure.
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"legend"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;or this, if &lt;code&gt;RESPONSIVE_IMAGES = True&lt;/code&gt;:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"figure"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 250px; max-width: 100%; height: auto;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 250px; max-width: 100%; height: auto;"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/static/images/image.jpg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"caption"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        This is the caption of the figure.
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"legend"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;or this, if &lt;code&gt;FIGURE_NUMBERS&lt;/code&gt; is also&amp;nbsp;True:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"figure"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 250px; max-width: 100%; height: auto;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 250px; max-width: 100%; height: auto;"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/static/images/image.jpg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"caption"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"fig_num"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"fig_1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Figure 1: &lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;This is the caption of the figure.
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"legend"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua.
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_how_to_use_the_plugin"&gt;How to use the&amp;nbsp;Plugin&lt;/h2&gt;&lt;p&gt;This plugin is now upstream in the main pelican-plugins repository, you can check that out like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git clone git@github.com:getpelican/pelican-plugins.git&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;It requires BeautifulSoup and &lt;span class="caps"&gt;PIL&lt;/span&gt;/Pillow - see the readme for details on installing&amp;nbsp;these.&lt;/p&gt;
&lt;p&gt;Then add something like this to your pelican&amp;nbsp;config:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Where to look for plugins
&lt;/span&gt;&lt;span class="n"&gt;PLUGIN_PATH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'../pelican-plugins'&lt;/span&gt;
&lt;span class="c1"&gt;# Which plugins to enable
&lt;/span&gt;&lt;span class="n"&gt;PLUGINS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'better_figures_and_images'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Optionally, enable the responsive stuff via the plugin, by adding this to your&amp;nbsp;config:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Setting for the better_figures_and_images plugin
&lt;/span&gt;&lt;span class="n"&gt;RESPONSIVE_IMAGES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Or add something like this to your theme&amp;#8217;s &lt;span class="caps"&gt;CSS&lt;/span&gt;:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;img&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.figure&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can enable automatic figure numbering, by adding this to your&amp;nbsp;config:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Setting for the better_figures_and_images plugin
&lt;/span&gt;&lt;span class="n"&gt;FIGURE_NUMBERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;or, to enable this on a per post basis, add this into the posts&amp;nbsp;metadata:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;:figure_numbers: True&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And that&amp;#8217;s it - you should now have Better Figures &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;Images.&lt;/p&gt;
&lt;aside class="admonition-block note"&gt;&lt;h6 class="block-title label-only"&gt;&lt;span class="title-label"&gt;Note: &lt;/span&gt;&lt;/h6&gt;&lt;p&gt;Automatic Figure numbering is new and isn&amp;#8217;t upstream yet - check out the &lt;code&gt;figure_numbers&lt;/code&gt; branch from my git repo, &lt;a href="https://github.com/dflock/pelican-plugins/tree/figure_numbers"&gt;here&lt;/a&gt; if you want to use&amp;nbsp;it.&lt;/p&gt;&lt;/aside&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_not_very_frequently_asked_questions"&gt;(Not Very) Frequently Asked&amp;nbsp;Questions&lt;/h2&gt;&lt;section class="doc-section level-2"&gt;&lt;h3 id="_what_is_the_responsive_images_setting_for"&gt;What is the RESPONSIVE_IMAGES setting&amp;nbsp;for?&lt;/h3&gt;&lt;p&gt;This site uses a responsive layout - it changes its layout and column widths based on the size of the screen or window you use to view it. This means, ideally, that any images contained inside those columns would also shrink or expand to fit, when the column they&amp;#8217;re in changes. If they don&amp;#8217;t, the images will break out of the columns if the column becomes too&amp;nbsp;narrow.&lt;/p&gt;
&lt;p&gt;The simplest way to do this, would be to add something like this to your &lt;span class="caps"&gt;CSS&lt;/span&gt;:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;img&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.figure&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This tells the browser that images can only ever be as wide as their container - i.e. 100% of the width of their parent element. This means that when the column that the image is in shrinks - and becomes smaller than the images native width - the image will be shrunk to fit&amp;nbsp;inside.&lt;/p&gt;
&lt;p&gt;Note that this isn&amp;#8217;t the perfect solution and isn&amp;#8217;t fully responsive - because there &lt;a href="http://css-tricks.com/which-responsive-images-solution-should-you-use/"&gt;isn&amp;#8217;t a perfect solution at the moment&lt;/a&gt; - this provides a simple solution that gets me 80% of what I wanted: shrink to fit images that expand up to their full width (but no further) and stay inside their&amp;nbsp;containers.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_couldnt_you_just"&gt;Couldn&amp;#8217;t you&amp;nbsp;just&amp;#8230;&amp;#8203;&lt;/h3&gt;&lt;p&gt;Yes, you could just add that to your &lt;span class="caps"&gt;CSS&lt;/span&gt; and only have the plugin add the &lt;code&gt;width: ???px&lt;/code&gt; part - this would work fine. If you want to do that, either don&amp;#8217;t set &lt;code&gt;RESPONSIVE_IMAGES&lt;/code&gt; in your pelican config, or set it to &lt;code&gt;False&lt;/code&gt;.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_so_why_is_there_a_responsive_images_setting_at_all"&gt;So why is there a RESPONSIVE_IMAGES setting at&amp;nbsp;all?&lt;/h3&gt;&lt;p&gt;Um&amp;#8230;&amp;#8203; It&amp;#8217;s partially just there because this is the way I wrote the plugin initially, before I thought it through&amp;nbsp;properly.&lt;/p&gt;
&lt;p&gt;The reason I  &lt;em&gt;left it in&lt;/em&gt;, is&amp;nbsp;twofold:&lt;/p&gt;
&lt;div class="olist arabic"&gt;&lt;ol class="arabic"&gt;&lt;li&gt;It means that you can get responsive images and figures just by using this plugin - no need to mess with your theme&amp;#8217;s &lt;span class="caps"&gt;CSS&lt;/span&gt; if you don&amp;#8217;t want&amp;nbsp;to.&lt;/li&gt;&lt;li&gt;Because there are lots of &lt;a href="http://css-tricks.com/which-responsive-images-solution-should-you-use/"&gt;other ways&lt;/a&gt; to fudge responsive images and I may decide to use one of the alternatives - and at some point, presumably an official standard way to do it will arrive. So I may want to do extra processing, add extra markup, or do other things to support future responsive image techniques here, so I left that hook in so that I could easily add&amp;nbsp;it.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_why_are_you_messing_with_the_alt_text"&gt;Why are you messing with the &lt;span class="caps"&gt;ALT&lt;/span&gt;&amp;nbsp;text?&lt;/h3&gt;&lt;p&gt;By default Pelican adds a default &lt;code&gt;alt&lt;/code&gt; attribute to images that don&amp;#8217;t have them - and sets it to the image&amp;#8217;s&amp;nbsp;filename.&lt;/p&gt;
&lt;p&gt;This is well meaning, but&amp;nbsp;wrong.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;alt&lt;/code&gt; attribute is meant to provide a textual alternative to the image, for people who can&amp;#8217;t see the image, for some reason - they might be blind, using a screen reader, they might be using a text-only browser, they might be a search engine, the image might not have loaded for some reason,&amp;nbsp;etc&amp;#8230;&amp;#8203;&lt;/p&gt;
&lt;p&gt;Imagine that you are reading your page to someone over the phone. What would be the appropriate thing to do when you reach the image? &lt;a class="footnote-ref" href="#_footnote_2" id="_footnoteref_2" title="View footnote 2"&gt;[2]&lt;/a&gt; What would you say about that image if you were describing the page over the phone to&amp;nbsp;someone?&lt;/p&gt;
&lt;p&gt;If you wouldn&amp;#8217;t mention the image at all, then explicitly set the &lt;code&gt;alt&lt;/code&gt; attribute to an empty&amp;nbsp;string:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Otherwise, set it to whatever you would have said over the&amp;nbsp;phone.&lt;/p&gt;
&lt;p&gt;Why not just leave it out? Because screen readers tend to read the filename for images that don&amp;#8217;t have an &lt;code&gt;alt&lt;/code&gt; attribute. This also means that you  &lt;em&gt;never&lt;/em&gt; need to set the &lt;code&gt;alt&lt;/code&gt; attribute to the image filename - that&amp;#8217;s already there in the &lt;code&gt;src&lt;/code&gt; attribute, if&amp;nbsp;needed.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_examples"&gt;Examples&lt;/h2&gt;&lt;p&gt;Here are a few working examples, showing the results of using the plugin. The original rst source for these are available in the plugins &lt;code&gt;/test&lt;/code&gt; folder:&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="dummy 800x300" src="https://duncanlock.net/images/posts/better-figures-images-plugin-for-pelican/dummy-800x300.png" /&gt;
&lt;figcaption&gt;Figure 1. This image is wider than the column it&amp;#8217;s in - try resizing the browser window. Because of the max-width: 100%, the image is resized to fit the column.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna&amp;nbsp;aliqua.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="A dummy placeholder image, 200x200 pixels square." src="https://duncanlock.net/images/posts/better-figures-images-plugin-for-pelican/dummy-200x200.png" /&gt;
&lt;figcaption&gt;Figure 2. This image is only 200px wide - smaller that the column it&amp;#8217;s in. The max-width: 100% doesn&amp;#8217;t stretch the image, because it&amp;#8217;s also got a width: 200px - making it shrink to fit.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla&amp;nbsp;pariatur.&lt;/p&gt;
&lt;figure class="image-block align-right"&gt;&lt;img alt="map to buried treasure 2" src="https://duncanlock.net/images/posts/better-figures-images-plugin-for-pelican/dummy-250x300.png" /&gt;
&lt;figcaption&gt;Figure 3. This is the third image caption. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est&amp;nbsp;laborum.&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="dummy 200x200" src="https://duncanlock.net/images/posts/better-figures-images-plugin-for-pelican/dummy-200x200.png" /&gt;&lt;/div&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est&amp;nbsp;laborum.&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_footnotes_references"&gt;Footnotes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;References:&lt;/h3&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class="footnotes"&gt;&lt;hr /&gt;&lt;ol class="footnotes"&gt;&lt;li class="footnote" id="_footnote_1"&gt;The two image directives: &amp;#8220;image&amp;#8221; and &amp;#8220;figure&amp;#8221; in reStructuredText: &lt;a href="#images"&gt;&lt;a class="bare" href="http://docutils.sourceforge.net/docs/ref/rst/directives.html#images"&gt;http://docutils.sourceforge.net/docs/ref/rst/directives.html#images&lt;/a&gt;&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_1" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_2"&gt;Guidelines on &lt;span class="caps"&gt;ALT&lt;/span&gt; texts in &lt;span class="caps"&gt;IMG&lt;/span&gt; elements: &lt;a href="http://www.cs.tut.fi/~jkorpela/html/alt.html"&gt;http://www.cs.tut.fi/~jkorpela/html/alt.html&lt;/a&gt; &lt;a href="http://www.456bereastreet.com/archive/200412/the_alt_and_title_attributes/"&gt;http://www.456bereastreet.com/archive/200412/the_alt_and_title_attributes/&lt;/a&gt; &lt;a href="http://diveintoaccessibility.info/day_21_ignoring_spacer_images.html"&gt;http://diveintoaccessibility.info/day_21_ignoring_spacer_images.html&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_2" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Thu, 30 May 2013 01:49:49 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/05/29/better-figures-images-plugin-for-pelican/</guid></item><item><title>Postgres Indexes – Expression/Functional Indexing</title><link>/2013/05/29/Postgres-Indexes-Expression/Functional-Indexing/</link><description>&lt;p&gt;Postgres is rich with options for indexing. First you&amp;rsquo;ve got a variety of types, and beyond that you can do a variety of things with each of these such as create unique indexes, use conditions to index only a portion of your data, or create indexes based on complex expressions or functions. In cases where you commonly use various PostgreSQL functions in your application or reporting you can get some great gains from this.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at a really simple case. Given a basic user table:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# \dt users
Table &amp;quot;public.users&amp;quot;
Column | Type | Modifiers
------------+-----------------------------+-----------
id | integer | not null
email | character varying(255) |
created_at | timestamp without time zone |
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You may commonly want to run a report against it showing your signups by date. Let&amp;rsquo;s say you do this by running the query:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
count(*),
date_trunc('day', created_at)
FROM
users
GROUP BY
2;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you&amp;rsquo;re commonly using &lt;code&gt;date_trunc('day', created_at)&lt;/code&gt; for grouping, filtering, or projecting it out you can get some great gains by creating an index on this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# CREATE INDEX idx_user_created ON users(date_trunc('day', created_at));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course you can go beyond the built in functions of Postgres and use more complicated functions you create yourself. For example if you have JSON stored within PostgreSQL, have PLV8 enabled, and want to create a Javascript function to parse and return the text for a given key:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# CREATE OR REPLACE FUNCTION
get_text(key text, data json)
RETURNS text $$
return data[key];
$$ LANGUAGE plv8 IMMUTABLE STRICT;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Of note in the above function is &lt;code&gt;IMMUTABLE&lt;/code&gt; and &lt;code&gt;STRICT&lt;/code&gt;. Immutable specifies that the function given the same inputs will return the same result. Strict means that if you send in &lt;code&gt;NULL&lt;/code&gt; values you&amp;rsquo;ll get a null result.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Given some example data inside your JSON field:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
&amp;quot;name&amp;quot;: &amp;quot;Craig Kerstiens&amp;quot;,
&amp;quot;location&amp;quot;: &amp;quot;San Francisco&amp;quot;,
&amp;quot;numbers&amp;quot;: [
{
&amp;quot;type&amp;quot;: &amp;quot;work&amp;quot;,
&amp;quot;number&amp;quot;: &amp;quot;123.456.7890&amp;quot;
},
{
&amp;quot;type&amp;quot;: &amp;quot;home&amp;quot;,
&amp;quot;number&amp;quot;: &amp;quot;987.654.3210&amp;quot;
}
]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you wanted to return just the name you could index on:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# CREATE INDEX idx_name ON users(get_text('name', json_data));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or even combine with built ins for a case-insensitive version:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# CREATE INDEX idx_name ON users(lower(get_text('name', json_data)));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Indexes like all of the above can be useful when you&amp;rsquo;re filtering on something that postgres can take advantage of. In most cases any conditions with the exception of a &lt;code&gt;LIKE&lt;/code&gt; beginning with a &lt;code&gt;%&lt;/code&gt; work for this. With Postgres 9.2 even a count(*) in certain cases can take advantage of the index because of index only scans.&lt;/p&gt;
&lt;p&gt;Whether you&amp;rsquo;re looking to take advantage of all the power of Javascript with JSON or another procedural langauge – or simply speed up a basic report using built in functions expression indexes can give you some great benefits.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re looking for a deeper resource on Postgres I recommend the book &lt;a href="https://theartofpostgresql.com/?affiliate=cek"&gt;The Art of PostgreSQL&lt;/a&gt;. It is by a personal friend that has aimed to create the definitive guide to Postgres, from a developer perspective. If you use code CRAIG15 you&amp;rsquo;ll receive 15% off as well.&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 29 May 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/05/29/Postgres-Indexes-Expression/Functional-Indexing/</guid></item><item><title>Full Steam Ahead</title><link>https://zacs.site/blog/full-steam-ahead.html</link><description>&lt;p&gt;Almost a week ago I did something I rarely do: I wrote an article out of frustration. I had pushed and pushed myself to not only write every day, but to publish something at least once a day as well. But some days, there just isn&amp;#8217;t anything to write about; sometimes, I need more than a day to work through an idea; and some days, I just don&amp;#8217;t feel like writing. Instead of a strong readership, I only had frustration to show for my efforts. &lt;a href="https://zacs.site/blog/writers-guilt.html"&gt;&lt;em&gt;Writer&amp;#8217;s Guilt&lt;/em&gt;&lt;/a&gt; was me saying that I had had enough: I was finished prolonging this never-ending sprint, constantly pushing myself to make and publish work I was not proud of. Then I decided to &lt;a href="https://zacs.site/blog/shifting-gears.html"&gt;shift gears&lt;/a&gt;, looking to a shift in focus to revitalize my writing. Almost a week later, I&amp;#8217;m here to say it worked.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/full-steam-ahead.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 29 May 2013 23:36:33 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/full-steam-ahead.html</guid></item><item><title>Nickelodeon's Experiment</title><link>https://zacs.site/blog/nickelodeons-experiment.html</link><description>&lt;p&gt;The first time I saw the Nickelodeon cartoon &lt;em&gt;Avatar: The Last Airbender&lt;/em&gt;, I was sitting in a friend&amp;#8217;s closet. The floor was a mess, with clothes and toys strewn all about. It had rained almost constantly since morning, so the lot of us had stayed inside for most of the day. I was ten, and the show captivated me. That feeling stuck with me until roughly six years later when I sat down to watch the series from beginning to end. Even at sixteen, I still loved the show. Love the show, I should say&amp;#160;&amp;#8212;&amp;#160;present tense, not past.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/nickelodeons-experiment.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 29 May 2013 22:53:46 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/nickelodeons-experiment.html</guid></item><item><title>Jonathan Mann's Song a Day</title><link>https://zacs.site/blog/song-a-day.html</link><description>&lt;p&gt;Since January first, 2009, Jonathan Mann has written a song every day. Every single day, for four years, four months, and four weeks exactly, Jonathan Mann, without fail, wrote and produced a song. That&amp;#8217;s 1609 days, and 1609 songs. Those who have a hard time writing every day, feel free to take notes.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/song-a-day.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 29 May 2013 22:33:07 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/song-a-day.html</guid></item><item><title>Tumblr. + Yahoo! = !!</title><link>http://brooksreview.net/2013/05/tumblr-yahoo/</link><description>&lt;p&gt;&amp;#8220;But most importantly, what the hell does Yahoo do with all the porn?&amp;#8221;&lt;/p&gt;

&lt;p&gt;Ben Brooks asking the tough questions. I love everything he does, from &lt;a href="http://brooksreview.net"&gt;his writing&lt;/a&gt; to &lt;a href="http://5by5.tv/bb"&gt;The B&amp;#38;B Podcast&lt;/a&gt;, retired on February 7th of this year. If you haven&amp;#8217;t ever read any of his work, this piece wouldn&amp;#8217;t be a bad place to start.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/05/tumblr-yahoo/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 29 May 2013 21:15:16 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/05/tumblr-yahoo/</guid></item><item><title>We Have Only One Story</title><link>https://zacs.site/blog/we-have-only-one-story.html</link><description>&lt;p&gt;In the past I have heard it said that there exists but one story, that every book and movie is nothing more than retelling of that single plot. Perhaps most famously, John Steinbeck &lt;a href="http://www.goodreads.com/quotes/36570-we-have-only-one-story-all-novels-all-poetry-are"&gt;once said something to this effect&lt;/a&gt; in his book East of Eden:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/we-have-only-one-story.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 29 May 2013 20:07:23 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/we-have-only-one-story.html</guid></item><item><title>Forcing Smart Scans on Exadata – is the _serial_direct_read parameter safe to use in production?</title><link>https://tanelpoder.com/2013/05/29/forcing-smart-scans-on-exadata-is-_serial_direct_read-parameter-safe-to-use-in-production/</link><description>&lt;p&gt;One of the most common Exadata performance problems I see is that the direct path reads (and thus also Smart Scans) don’t sometimes kick in when running full scans in serial sessions. This is because in Oracle 11g onwards, the &lt;a href="https://tanelpoder.com/2012/09/03/optimizer-statistics-driven-direct-path-read-decision-for-full-table-scans-_direct_read_decision_statistics_driven/" target="_blank"&gt;serial full segment scan IO path decision&lt;/a&gt; is done dynamically, at runtime, for every SQL execution – and for every segment (partition) separately. Whether you get a direct path read &amp;amp; smart scan, depends on the current buffer cache size, how big segment you’re about to scan and how much of that segment is actually cached at the moment. Note that the automatic &lt;a href="http://fritshoogland.wordpress.com/2013/05/09/direct-path-read-and-fast-full-index-scans/" target="_blank"&gt;IO path decision for index fast full scans&lt;/a&gt; is slightly different from table scans.&lt;/p&gt;
&lt;p&gt;This dynamic decision unfortunately can cause unexpected surprises and variance in your report/batch job runtimes. Additionally, it looks like the SELECT part of your UPDATE/DELETE statements (the select part finds the rows to update/delete) does not ever automatically get direct path read/smart scan chosen – by design! So, when your SELECT statement may use smart scan and be really fast, the same select operation in an INSERT SELECT (or UPDATE/DELETE) context will not end up using smart scans by default. There’s even a bug explaining that – closed as “not a bug” (&lt;strong&gt;Exadata Smartscan Is Not Being Used On Insert As Select[Article ID 1348116.1]&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;To work around these problems and &lt;em&gt;force&lt;/em&gt; a direct path read/smart scan, you can either:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run your query in parallel as parallel full segment scans will use direct path reads, &lt;em&gt;unless&lt;/em&gt; your parallel_degree_policy = AUTO, then you &lt;em&gt;may&lt;/em&gt; still get buffered reads thanks to the dynamic &lt;a href="http://afatkulin.blogspot.com/2013/02/does-in-memory-pq-work-with.html" target="_blank"&gt;in-memory parallel execution&lt;/a&gt; decision of Oracle 11.2&lt;/li&gt;
&lt;li&gt;Run your query in serial, but force the serial direct path reads by setting &lt;strong&gt;&lt;em&gt;_serial_direct_read&lt;/em&gt;&lt;/strong&gt; = TRUE (or ALWAYS in 11.2.0.2+)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here are the valid options for this parameter in 11.2.0.2+&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Wed, 29 May 2013 15:38:14 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/05/29/forcing-smart-scans-on-exadata-is-_serial_direct_read-parameter-safe-to-use-in-production/</guid></item><item><title>My Pelican Adventures, Powered by Dropbox</title><link>https://grh.am/2013/my-pelican-adventures-powered-by-dropbox/</link><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;This is a legacy post referring to how this blog was originally setup, using Pelican and Dropbox. It no longer reflects the current state of affairs, which can be &lt;a href="https://grh.am/2018/deploying-a-hugo-static-site-using-gitlab-ci-cd-and-ssh/"&gt;read about here&lt;/a&gt;.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This website is powered solely by the wonderful static blogging engine known as &lt;a href="http://docs.getpelican.com/en/latest/"&gt;Pelican&lt;/a&gt;. A static blogging engine means that each time a change is made i.e. a new post is created, the entire site is rebuilt as static HTML &amp;amp; CSS pages. This may sound laborious, but does mean that everything is extremely simple once setup correctly. For example, my work flow is as follows:&lt;/p&gt;</description><author>Graham Stevens – Grh.am</author><pubDate>Wed, 29 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://grh.am/2013/my-pelican-adventures-powered-by-dropbox/</guid></item><item><title>Coherence checks in SOA</title><link>https://blog.separateconcerns.com/2013-05-28-coherence-checks.html</link><description>&lt;p&gt;Recently I found a rare, ugly bug in a piece of software that had been in production at Moodstocks for 6 months. The bug itself is not that interesting, but the way I found and fixed it is.&lt;/p&gt;
&lt;section id="Story-of-a-bug"&gt;
&lt;h2&gt;Story of a bug&lt;/h2&gt;
&lt;p&gt;Imagine you have a database where you can index some documents in a full text search engine. Indexing can be turned on and off on a per document basis.&lt;/p&gt;
&lt;p&gt;As the size of your dataset increases, you outgrow it and decide to use a separate service for search. So you change your code such that documents which must be indexed are sent to that service, and you add a boolean field in your main datastore to indicate whether the document is indexed or not.&lt;/p&gt;
&lt;p&gt;All is fine until one day you refactor this code a bit too fast and part of the logic for document updates becomes something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;if document.indexed then
  search_engine:index(document)
  document.indexed = false -- &amp;lt;-- WAT?
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, in practice, it is less trivial and only happens in rare corner cases, so your tests don’t catch it…&lt;/p&gt;
&lt;/section&gt;
&lt;section id="This-ain't-normalized"&gt;
&lt;h2&gt;This ain’t normal(ized)&lt;/h2&gt;
&lt;p&gt;This kind of bug in a system can be very nasty. What happens when it is triggered is that the worldviews of two subsystems (here the datastore and the index) are not coherent anymore.&lt;/p&gt;
&lt;p&gt;If you are a programmer not used to distributed systems, you may think that the problem is that the information “the document is indexed” is duplicated. State is bad, but duplicate state is plain wrong, just always ask the index for that information and drop that “indexed” field!&lt;/p&gt;
&lt;p&gt;In a normal application setting you would be right, but this is one of the main differences between SOA and OOP. There are two reasons why you do not want to do that. The first one is performance: this may generate more internal network requests. Its importance could be discussed at length (“Is it some form of premature optimization?”).&lt;/p&gt;
&lt;p&gt;The second reason is much more important though: if you do that, your index becomes a data-critical service. That means you cannot lose its state without losing information, so you have to back it up seriously. This simple boolean field in the datastore is enough to rebuild the whole index, making it non-critical.&lt;/p&gt;
&lt;p&gt;So that leaves us with denormalized data and its own problems. How do we mitigate them?&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Invariants-are-sexy"&gt;
&lt;h2&gt;Invariants are sexy&lt;/h2&gt;
&lt;p&gt;Once you have denormalized data, your problem is to keep it coherent. That means that there are invariants that must be verified at all times by the various states of the subsystems. Or rather, because of asynchronous jobs, invariants that shouldn’t remain unverified for too long.&lt;/p&gt;
&lt;p&gt;Those invariants are almost always properties on sets. For instance, if you have a forum where only registered users can comment, users who have commented must be a subset of users who have confirmed their email. In my case, the set of documents indexed in the search engine must be equal to the set of documents flagged as indexed in the main datastore.&lt;/p&gt;
&lt;p&gt;The big idea is that every time you denormalize data you should write invariants that ensure coherence. These invariants are checked by scripts that can be run at every transaction in some cases, but are more usually cronned. You should also have procedures to reconcile (repair) the data in case of incoherence. I am not a huge fan of having them run automatically: incoherence often reveals bugs, so humans should check where it comes from and fix it.&lt;/p&gt;
&lt;p&gt;In our case, the script responsible for coherence checks warned me that a few documents belonging to the same user were present in the search engine but not flagged as indexed. I asked the application logs what had happened to these documents around the time when the incoherence occurred, and saw they had all been updated. I looked up the relevant code path in application code… and facepalm-ed. I had pushed that code to production half a year ago, and it was obviously wrong.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The moral of it all is not, as I already discussed, that you should not denormalize data. It is not that we should write more tests, either. At least it is not what I want the takeaway to be (we do test these things more carefully now, but edge cases can always slip through).&lt;/p&gt;
&lt;p&gt;What I think this story shows is that, if you write distributed systems that handle denormalized data, you should have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
something to check invariants to detect issues;
&lt;/li&gt;
&lt;li&gt;
exhaustive logs and tools to diagnose them;
&lt;/li&gt;
&lt;li&gt;
reconciliation scripts to fix them.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I cannot imagine releasing a distributed system that does not have those things. They are even more important than a comprehensive test suite to me. Moreover, the coherence checks can also be run in the test suite itself (on mocks for instance) so writing them is always a win-win.&lt;/p&gt;
&lt;/section&gt;</description><author>Separate Concerns</author><pubDate>Wed, 29 May 2013 02:10:00 GMT</pubDate><guid isPermaLink="true">https://blog.separateconcerns.com/2013-05-28-coherence-checks.html</guid></item><item><title>You Have Five Seconds. Go.</title><link>https://zacs.site/blog/you-have-five-seconds.html</link><description>&lt;p&gt;Nearly every day I see a new CSS module, jQuery boilerplate, or HTML5 template posted to Hacker News, or an article announcing the release of the latest version of Ember.js, whatever that is. Every so often, I follow the link out of curiosity; and every time, I close the page, disappointed.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/you-have-five-seconds.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 28 May 2013 19:53:33 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/you-have-five-seconds.html</guid></item><item><title>Some questions and suggestions to all commoners</title><link>https://stop.zona-m.net/2013/05/some-questions-and-suggestions-to-all-commoners/</link><description>&lt;p&gt;I&amp;rsquo;m just back from the &lt;a href="http://commonsandeconomics.org/"&gt;2013 Economics and Commons Conference in Berlin&lt;/a&gt;. A great event, in which I took lots of general notes synthesized in another post that I&amp;rsquo;ll publish tomorrow. This one, instead, contains just questions and suggestions from me that I already shared at the conference, or I&amp;rsquo;d like to share with everybody interested in Commons. A separate post contains my &lt;a href="https://stop.zona-m.net/2013/05/on-copyright-being-useless-because-its-recent/"&gt;critique to certain arguments against copyright&lt;/a&gt; I heard at the same conference.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Tue, 28 May 2013 19:37:59 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/05/some-questions-and-suggestions-to-all-commoners/</guid></item><item><title>On copyright being useless because it's recent</title><link>https://stop.zona-m.net/2013/05/on-copyright-being-useless-because-its-recent/</link><description>&lt;p&gt;I just attended the &lt;a href="http://commonsandeconomics.org/"&gt;2013 Economics and Commons Conference in Berlin&lt;/a&gt;. During the Knowledge stream of that event something came up that has bothered me for a long time: the assertion that copyright is useless also because it&amp;rsquo;s just a few centuries old, and artists were doing just fine even before, thank you very much. Here is what I would have &lt;em&gt;repeated&lt;/em&gt;, if there had been more time during those sessions.&lt;/p&gt;
&lt;p&gt;I find &lt;strong&gt;this&lt;/strong&gt; particular argument against copyright very, very weak, to say the least, and I&amp;rsquo;d really like to see it go, for at least three reasons:&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Tue, 28 May 2013 15:32:01 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/05/on-copyright-being-useless-because-its-recent/</guid></item><item><title>B: An RC Driving Quadracopter</title><link>http://www.kickstarter.com/projects/2017062404/b-go-beyond</link><description>&lt;p&gt;I wish I had $635 to spend on this.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.kickstarter.com/projects/2017062404/b-go-beyond"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 27 May 2013 21:49:26 GMT</pubDate><guid isPermaLink="true">http://www.kickstarter.com/projects/2017062404/b-go-beyond</guid></item><item><title>Debugger Dangers – Part 2</title><link>https://tanelpoder.com/2013/05/27/debugger-dangers-part-2/</link><description>&lt;p&gt;About 5 years ago I wrote about the risks that &lt;a href="https://tanelpoder.com/2008/06/14/debugger-dangers/" target="_blank"&gt;connecting to Oracle processes via debuggers may cause&lt;/a&gt; and what are (in my opinion) the safer and less safer options for taking stack samples from running Oracle processes.&lt;/p&gt;
&lt;p&gt;In the end of that article I listed different options for getting a stack traces and whether they were safe or not.&lt;/p&gt;
&lt;p&gt;For example, ORADEBUG-based process stack traces (DUMP ERRORSTACK, SHORT_STACK and event the process/system state dumps (at level 256 or higher) are not 100% safe – because they alter the execution path of the process they attached to. Your process may crash or get some error if you hit a bug (of course once you patch/fix the bug, you’ll be fine again – until you may hit the next bug).&lt;/p&gt;
&lt;p&gt;An example bug is this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bug 15677306 : SUNBT6994922 ORACLE LOGWRITER HARD HANG WHEN SIGUSR INTERRUPTS LIBAIO&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;LGWR may hang when SIGUSR interrupts libaio (that’s what LGWR uses for asynchronous IO). And if LGWR is hung – your whole instance will be hung pretty soon. But what does the SIGUSR signal have to do with Oracle? Well, that’s exactly the signal what ORADEBUG sends to the process it has attached to, to notify it about some debug/dump work it needs to do. And apparently receiving or handling such a signal (jumping into some stack dump function), when being in libaio codepath causes an issue.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Mon, 27 May 2013 20:31:45 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/05/27/debugger-dangers-part-2/</guid></item><item><title>Talk @ EmWare: Getting started with Linux</title><link>https://www.anmolsarma.in/post/talk-emware/</link><description>&lt;p&gt;Gave an introductory talk on Linux, basically a rehash of the &lt;a href="http://www.anmolsarma.in/talk-klu/"&gt;talk I gave at KLU&lt;/a&gt; a couple of years ago.&lt;/p&gt;</description><author>Anmol Sarma</author><pubDate>Mon, 27 May 2013 09:30:00 GMT</pubDate><guid isPermaLink="true">https://www.anmolsarma.in/post/talk-emware/</guid></item><item><title>Converting SS-DB data into NetCDF format</title><link>https://makedist.com/posts/2013/05/27/converting-ss-db-data-into-netcdf-format/</link><description>Scientific data wants to be in sciency formats.</description><author>Noah Watkins</author><pubDate>Mon, 27 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://makedist.com/posts/2013/05/27/converting-ss-db-data-into-netcdf-format/</guid></item><item><title>My SQL Bad Habits</title><link>/2013/05/26/My-SQL-Bad-Habits/</link><description>&lt;p&gt;I&amp;rsquo;m reasonably proficient at SQL – &lt;em&gt;a coworker when pseudocoding some logic for him pointed out that my pseudocode is what he thought was executable SQL&lt;/em&gt;. I&amp;rsquo;m fully capable of writing clear and readable SQL – which most SQL is not. Despite that I still have several bad habits when it comes to SQL. Without further adieu heres some of my dirty laundry so hopefully others can not make the same mistakes.&lt;/p&gt;
&lt;h3 id="ordergroup-by-column-numbers"&gt;
&lt;div&gt;
Order/Group by Column Numbers
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;When quickly iterating on a query its a lot less typing to put the column number as the thing you want to order by. Here&amp;rsquo;s a quick lightweight example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
email,
created_at
FROM
users
ORDER BY 2 DESC
LIMIT 5;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This gives me my last 5 users that have signed up for my site. Of course as soon as I have this I may want to add some data to it, like their first name so I can send them a welcome email. I quickly alter the query to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
email,
first_name,
created_at
FROM
users
ORDER BY 2 DESC
LIMIT 5;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And now I have 5 users that have signed up ordered by their first name. Sure its obvious when you have 1 column you&amp;rsquo;re ordering by, but when you have &lt;code&gt;GROUP BY 1, 2, 3, 4, 5, 6&lt;/code&gt; which is actually open in one of my tabs currently its a bit more confusing&amp;hellip;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Though if you really want to have some fun, share a query with someone that looks something like this:&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
email as &amp;quot;3&amp;quot;,
first_name &amp;quot;2&amp;quot;,
created_at &amp;quot;1&amp;quot;
FROM
users
ORDER BY &amp;quot;1&amp;quot;, &amp;quot;3&amp;quot; DESC
LIMIT 5;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="implicit-joins"&gt;
&lt;div&gt;
Implicit Joins
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;I seldom use the syntax &lt;code&gt;INNER JOIN&lt;/code&gt;. Instead I simply put the two tables in my where clause and ensure I have a where condition. The problem with ensuring I have a where condition is sometimes I don&amp;rsquo;t, especially when you&amp;rsquo;re dealing with 3 tables.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
email,
product.name,
product.price
FROM
users,
orders,
items
WHERE users.id = orders.user_id
AND orders.id = items.order_id
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Is less clear (especially when dealing with 5-6 tables) than the alternative:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
email,
product.name,
product.price
FROM users
INNER JOIN orders on users.id = orders.user_id
INNER JOIN items on orders.id = items.order_id
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="lack-of-comments"&gt;
&lt;div&gt;
Lack of comments
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;I comment my SQL far less than I comment my code, yet it can be done just as easily. For example I have this in one of my queries:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT convert_from(CAST(E'\\x' || array_to_string(ARRAY(
SELECT
CASE
WHEN length(r.m[1]) = 1
THEN encode(convert_to(r.m[1], 'SQL_ASCII'), 'hex')
ELSE substring(r.m[1] from 2 for 2)
END
FROM regexp_matches(url_here, '%[0-9a-f][0-9a-f]|.', 'gi') AS r(m)
), '') AS bytea), 'UTF8');
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While this has its own issues theres no documentation around what this actually does, in contrast:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--- DECODES url ---
SELECT convert_from(CAST(E'\\x' || array_to_string(ARRAY(
SELECT
CASE
WHEN length(r.m[1]) = 1
THEN encode(convert_to(r.m[1], 'SQL_ASCII'), 'hex')
ELSE substring(r.m[1] from 2 for 2)
END
FROM regexp_matches(url_here, '%[0-9a-f][0-9a-f]|.', 'gi') AS r(m)
), '') AS bytea), 'UTF8');
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Comments also work well inline at the end of a line.&lt;/p&gt;
&lt;h3 id="large-manually-generated-lists"&gt;
&lt;div&gt;
Large Manually Generated Lists
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;A lot of times in working with some specific data set I&amp;rsquo;ll manually or automatically generate a list that I want to filter. A common example is filtering out staging/dev environments. I&amp;rsquo;ll often manually search and prune the list, then save that result for the queries I&amp;rsquo;m going to build going forward. This is a bit of effort but still feels reasonable the downside is it results in something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
foo
FROM
bar
WHERE
bar.id NOT IN (34723, 42735, 32321, 47205, 20375, 30261, 26194, 109371, 9313, 6351, 20184, 50273, 34735, 39854, 23954, 25323, 23405, 30528, 50182, 29340, 47659, ... and the list goes on)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;SQL is meant to be reasonable for containing some level of logic. Data changes, hard coding keys is going to bite you at some point, spend the extra effort and re-use something thats clear.&lt;/p&gt;
&lt;h3 id="what-else"&gt;
&lt;div&gt;
What else
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;m sure theres plenty more; I suspect within a few minutes of sitting down with someone they could point out some other bad habits. While I know mine at least some of mine I still often know the trade-off. What are yours? I&amp;rsquo;d love to hear to document them for others so hopefully they can prevent developing the same bad habits. Let me know; &lt;!-- raw HTML omitted --&gt;&lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens@gmail.com&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Sun, 26 May 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/05/26/My-SQL-Bad-Habits/</guid></item><item><title>Game of Snails in all its barely-playable glory</title><link>https://liza.io/game-of-snails-in-all-its-barely-playable-glory/</link><description>&lt;p&gt;Well, it&amp;rsquo;s the end of the month and I have to post &lt;em&gt;something&lt;/em&gt; for May. Despite Game of Snails being broken and nigh-unplayable, I&amp;rsquo;m posting it anyway. If you want to check it out, here are some disclaimers:&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 26 May 2013 22:48:17 GMT</pubDate><guid isPermaLink="true">https://liza.io/game-of-snails-in-all-its-barely-playable-glory/</guid></item><item><title>How I built running shoes for my whole family in one sunday afternoon (Huarache sandals)</title><link>https://jfoucher.com/2013/05/building-and-using-minimalist-running-shoes.html</link><description>&lt;p&gt;Some time ago, &lt;a href="http://diegosantamarta.com"&gt;Diego Santamarta&lt;/a&gt; casually mentioned that the shoes he was wearing were not regular flip flops, but rather some kind of sandal which I had never heard about. “Oh ok” was my less than enthusiastic answer. In the meantime, and even before, I had been reading about barefoot running, even though I had never run more than a few hundred meters without panting uncontrollably. Yes, 15 years smoking does take it’s toll. After two years tobacco free, I feel I’m only now starting to recover.&lt;/p&gt;

&lt;p&gt;Anyway, I had dismissed barefoot running as something that I would love to do — and probably the only way that I would ever run for pleasure — but that seemed very uncomfortable bordering on dangerous. Two days ago, that same Diego Santamarta posts to facebook a link about those sandals as used by barefoot runners to protect their feet on difficult terrain.&lt;/p&gt;

&lt;h3 id="documentation-and-materials"&gt;Documentation and materials&lt;/h3&gt;

&lt;p&gt;I almost immediately started &lt;a href="http://bit.ly/10znWIx"&gt;reading about them&lt;/a&gt;, watching &lt;a href="http://bit.ly/10WcB48"&gt;youtube videos&lt;/a&gt; or &lt;a href="http://bit.ly/10zo22R"&gt;instructables&lt;/a&gt; explaining how to build them. I had an old tire in the growing “to throw away” pile which I never get around to bringing to the recycling center, so that was the main part of the material sorted. I also have some polypropylene cord (the blue one used to tie straw bales and some black one) which could be used as laces. As will be seen later this is not comfortable nor durable so I used some more elaborate string for the laces.&lt;/p&gt;

&lt;p&gt;Trace your foot on paper and locate the holes as indicated in one of these guides.&lt;/p&gt;

&lt;h3 id="cutting-the-sole"&gt;Cutting the sole&lt;/h3&gt;

&lt;p&gt;Now the real work begins. We will need to hack at that tire, and it truly is tiresome work. I had some tin snips on hand which I thought would be perfect for  the job. They are in fact totally useless. I did the job with a hacksaw to cut through the metal ring where the tire meets the wheel, and then one of my trusty &lt;a href="https://en.wikipedia.org/wiki/Opinel"&gt;Opinels&lt;/a&gt; to cut through the reinforced rubber outwall. If the knife is kept sharp, this is actually fairly easy work.&lt;/p&gt;

&lt;p class="image"&gt;&lt;img alt="&amp;quot;Cutting the tire&amp;quot;" src="http://jfoucher.com/uploads/2013/05/cutting-tire.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;I cut some rough pieces from the outerwall, one from each side of the tire to match the curvature of the outerwall to the natural curve of each foot.&lt;/p&gt;

&lt;p&gt;You then trace the outline of your paper pattern on the pieces you just cut, enabling you to have perfect tire soles for your huarache sandals.&lt;/p&gt;

&lt;p class="image"&gt;&lt;img alt="&amp;quot;Matching sole to template&amp;quot;" src="http://jfoucher.com/uploads/2013/05/cutting-soles.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;I then used a small drill bit, around 5mm to drill the holes.&lt;/p&gt;

&lt;h3 id="putting-the-laces-in-places"&gt;Putting the laces in places&lt;/h3&gt;

&lt;p&gt;The are many lacing systems that can be used, the one I used seemed simple enough, and can be slipped on and off easily.&lt;/p&gt;

&lt;p&gt;To pull the string through the holes, I used a piece of bent wire as a threader, and pliers to pull on it if need be. A &lt;a href="http://en.wikipedia.org/wiki/Figure-eight_knot"&gt;figure of 8 knot&lt;/a&gt; locks the string in the toe hole. the string then goes throught the outer hole, around the heel, through the inner whole, and ties around the front part of the lace&lt;/p&gt;

&lt;p class="image"&gt;&lt;img alt="&amp;quot;Threading the cord&amp;quot;" src="http://jfoucher.com/uploads/2013/05/threading-cord.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;Here is the result: my son’s sandals. He complained that they were not very comfortable though, so I changed the cord (which was too thin) and used a thicker braided one I had around, which is much more comfortable.&lt;/p&gt;

&lt;p class="image"&gt;&lt;img alt="&amp;quot;Huarache running sandal complete&amp;quot;" src="http://jfoucher.com/uploads/2013/05/huarache-running-sandal-kid.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;Once everyone had their sandals ready, I decided to go for a short run to try them out&lt;/p&gt;

&lt;h3 id="running"&gt;Running&lt;/h3&gt;

&lt;p&gt;Please keep in mind that I was a heavy smoker for many years, have &lt;em&gt;never&lt;/em&gt; run unless obligated to, and never more than a few hundred meters.&lt;/p&gt;

&lt;p&gt;The first segment was downhill, and I had to readjust the shoes almost immediately, for the only time in the entire run.&lt;/p&gt;

&lt;p&gt;When I arrived at the first uphill segment I got out of breath quickly and decide to alternate running and fast walking for the rest of the outing. That worked out pretty good, and the running actually felt easier and easier. The shoes are superb. They are pretty comfortable, provide just the right amount of protection to avoid having to look out for every little piece of gravel and can be used to cross streams without fear of them becoming slippery.&lt;/p&gt;

&lt;p&gt;My calves started hurting at around the ten minute mark, I think from landing on the front portion of the feet. It only got worse from then on, and now I can barely walk, it feels like I have a continuous cramp in these muscles. The feet are in perfect condition though, I just feel that they have had a good workout.&lt;/p&gt;

&lt;p&gt;Can’t wait to go out tomorrow for more!&lt;/p&gt;</description><author>Geeky Nuggets</author><pubDate>Sun, 26 May 2013 22:17:07 GMT</pubDate><guid isPermaLink="true">https://jfoucher.com/2013/05/building-and-using-minimalist-running-shoes.html</guid></item><item><title>Simple backups with `Obnam`</title><link>https://bastian.rieck.me/blog/2013/backups_with_obnam/</link><description>&lt;p&gt;For a long time, &lt;a href="http://rdiff-backup.nongnu.org"&gt;&lt;code&gt;rdiff-backup&lt;/code&gt;&lt;/a&gt; has been my preferred backup
solution. Recently, however, I started looking for an alternative because its performance simply was
not up to par any more–it took over 20 minutes to process my home directory although less than
1 MiB of files had changed.&lt;/p&gt;
&lt;p&gt;Luckily, I stumbled over &lt;a href="http://liw.fi/obnam"&gt;&lt;code&gt;Obnam&lt;/code&gt;&lt;/a&gt;. &lt;a href="http://joeyh.name/blog/entry/trying_obnam"&gt;Joey Hess already adopted it as an
additional backup solution&lt;/a&gt;, so I figured I could give it
a try as well. And I was pleasantly surprised: Configuration is very easy, the backup is
sufficiently fast, there&amp;rsquo;s support for GPG-based encryption, and it offers &lt;em&gt;deduplication&lt;/em&gt;. What&amp;rsquo;s
not to love?&lt;/p&gt;
&lt;p&gt;So, my current backup setup for my laptop has a central &lt;code&gt;.obnam.conf&lt;/code&gt; configuration file with the
following content:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[config]

repository = sftp://example/home/example/backup.hostname.example.com

exclude = \.o$, \.tmp$, /Trash/, ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, the &lt;code&gt;exclude&lt;/code&gt; list is a tad longer in reality. This is the only tedious thing about
&lt;code&gt;Obnam&lt;/code&gt;: All excluded files and directories have to be specified as a regular expression &lt;em&gt;in a
single line&lt;/em&gt;. I have several folders I do not wish to be transferred, such as caches, downloads,
temporary storage, and the like. For each of these folders, I either added a &lt;code&gt;/foldername/&lt;/code&gt; or the
full path to the &lt;code&gt;exclude&lt;/code&gt; line so that &lt;code&gt;Obnam&lt;/code&gt; does not include for regular backups. Here are some
recommendations for stuff to exclude:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;\.o$&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$HOME/.cache&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$HOME/.thumbnails&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/build/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/Downloads/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/Trash/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A variety of auxiliary files for LaTeX sources, temporary backup files for editors, and so on&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With a sufficient exclusion list, I was now able to do backups quite comfortably using &lt;code&gt;obnam backup $HOME&lt;/code&gt;. But there&amp;rsquo;s more: Since the backup usually does not take very long, I decided to let it run
automatically. I created a small shell script for this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/sh

notify-send &amp;quot;Starting obnam backup...&amp;quot;

obnam backup $HOME 

if [ &amp;quot;$?&amp;quot; -ne 0 ]; then
  notify-send &amp;quot;Unable to finish obnam backup.&amp;quot;
  exit 1
else
  notify-send &amp;quot;Finished obnam backup.&amp;quot;
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;notify-send&lt;/code&gt; is a nice little program that allows scripts to send notifications to a window
manager. Both &lt;a href="http://awesome.naquadah.org"&gt;&lt;code&gt;awesome&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://www.gnome.org/gnome-3"&gt;GNOME 3&lt;/a&gt;
show small notification bubbles for a small period of time. Finally, I added an entry to my personal
crontab, instructing &lt;code&gt;Obnam&lt;/code&gt; to run every day at 8 o&amp;rsquo;clock in the evening:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;0 20 * * * DISPLAY=:0 /home/example/backup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that the &lt;code&gt;DISPLAY=:0&lt;/code&gt; variable is required so that the notifications of the script are shown.
For systems that are only powered on sporadically, it might also make sense to create a
configuration for &lt;a href="http://anacron.sourceforge.net"&gt;&lt;code&gt;anacron&lt;/code&gt;&lt;/a&gt;. So far, the normal &lt;code&gt;cron&lt;/code&gt; variant
served me well, though.&lt;/p&gt;
&lt;p&gt;If you want to use the script yourself, you might want to incorporate a more powerful logging and
notification capability in case &lt;code&gt;Obnam&lt;/code&gt; does not complete its run. For my own use (and for now), I
am content with checking the backup generations created by &lt;code&gt;Obnam&lt;/code&gt; using &lt;code&gt;obnam generations&lt;/code&gt; every
once in a while.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 26 May 2013 15:14:41 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/backups_with_obnam/</guid></item><item><title>Lithium revisited: A 16-bit kernel (well, sort of) written in Clojure (well, sort of)</title><link>http://blog.danieljanus.pl/lithium-revisited/</link><description>&lt;div&gt;&lt;p&gt;Remember &lt;a href="http://blog.danieljanus.pl/blog/2012/05/14/lithium/"&gt;Lithium&lt;/a&gt;? The x86 assembler written in Clojure, and a simple stripes effect written in it? Well, here’s another take on that effect:&lt;/p&gt;&lt;img src="/img/blog/stripes2.png" /&gt;
&lt;p&gt;And here is the source code:&lt;/p&gt;&lt;pre&gt;&lt;code class="hljs clojure"&gt;(&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;do&lt;/span&gt;&lt;/span&gt; (&lt;span class="hljs-name"&gt;init-graph&lt;/span&gt;)
    (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;loop&lt;/span&gt;&lt;/span&gt; [x &lt;span class="hljs-number"&gt;0&lt;/span&gt; y &lt;span class="hljs-number"&gt;0&lt;/span&gt;]
      (&lt;span class="hljs-name"&gt;put-pixel&lt;/span&gt; x y (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;let&lt;/span&gt;&lt;/span&gt; [z (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;mod&lt;/span&gt;&lt;/span&gt; (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;+&lt;/span&gt;&lt;/span&gt; (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;-&lt;/span&gt;&lt;/span&gt; &lt;span class="hljs-number"&gt;319&lt;/span&gt; x) y) &lt;span class="hljs-number"&gt;32&lt;/span&gt;)]
                       (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt; z &lt;span class="hljs-number"&gt;16&lt;/span&gt;) (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span class="hljs-number"&gt;16&lt;/span&gt; z) (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span class="hljs-number"&gt;16&lt;/span&gt; (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;-&lt;/span&gt;&lt;/span&gt; &lt;span class="hljs-number"&gt;31&lt;/span&gt; z)))))
      (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;=&lt;/span&gt;&lt;/span&gt; y &lt;span class="hljs-number"&gt;200&lt;/span&gt;)
        &lt;span class="hljs-literal"&gt;nil&lt;/span&gt;
        (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;=&lt;/span&gt;&lt;/span&gt; x &lt;span class="hljs-number"&gt;319&lt;/span&gt;)
          (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;recur&lt;/span&gt;&lt;/span&gt; &lt;span class="hljs-number"&gt;0&lt;/span&gt; (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;inc&lt;/span&gt;&lt;/span&gt; y))
          (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;recur&lt;/span&gt;&lt;/span&gt; (&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;inc&lt;/span&gt;&lt;/span&gt; x) y)))))
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I’ve implemented this several months ago, pushed it to Github and development has pretty much stalled since then. And after seeing &lt;a href="https://news.ycombinator.com/item?id=5771276"&gt;this recent post&lt;/a&gt; on HN today, I’ve decided to give Lithium a little more publicity, in the hope that it will provide a boost of motivation to me. Because what we have here is pretty similar to Rustboot: it’s a 16-bit kernel written in Clojure.&lt;/p&gt;&lt;p&gt;Well, sort of.&lt;/p&gt;&lt;p&gt;After writing a basic assembler capable of building bare binaries of simple x86 real-mode programs, I’ve decided to make it a building block of a larger entity. So I’ve embarked on a project to implement a compiler for a toy Lisp-like language following the paper &lt;a href="http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf"&gt;“An Incremental Approach to Compiler Construction”&lt;/a&gt;, doing it in Clojure and making the implemented language similar to Clojure rather than to Scheme.&lt;/p&gt;&lt;p&gt;(Whether it actually can be called Clojure is debatable. It’s unclear what the definition of Clojure the language is. Is running on JVM a part of what makes Clojure Clojure? Or running on any host platform? Is ClojureScript Clojure? What about ClojureCLR, or clojure-py?)&lt;/p&gt;&lt;p&gt;So far I’ve only gotten to step 7 of 24 or so, but that’s already enough to have a working &lt;code&gt;loop/recur&lt;/code&gt; implementation, and it was trivial to throw in some graphical mode 13h primitives to be able to implement this effect.&lt;/p&gt;&lt;p&gt;By default I’m running Lithium programs as DOS .COM binaries under DOSBox, but technically, the code doesn’t depend on DOS in any way (it doesn’t ever invoke interrupt 21h) and so it can be combined with a simple bootloader into a kernel runnable on the bare metal.&lt;/p&gt;&lt;p&gt;The obligatory HOWTO on reproducing the effect: install DOSBox and Leiningen, checkout [the code][3], launch a REPL with &lt;code&gt;lein repl&lt;/code&gt;, execute the following forms, and enjoy the slowness with which individual pixels are painted:&lt;/p&gt;&lt;pre&gt;&lt;code class="hljs clojure"&gt;(&lt;span class="hljs-name"&gt;require&lt;/span&gt; &amp;#x27;lithium.compiler)
(&lt;span class="hljs-name"&gt;&lt;span class="hljs-built_in"&gt;in-ns&lt;/span&gt;&lt;/span&gt; &amp;#x27;lithium.compiler)
(&lt;span class="hljs-name"&gt;run!&lt;/span&gt; (&lt;span class="hljs-name"&gt;compile-program&lt;/span&gt; &lt;span class="hljs-string"&gt;&amp;quot;/path/to/lithium/examples/stripes-grey.clj&amp;quot;&lt;/span&gt;))
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><author>code · words · emotions: Daniel Janus’s blog</author><pubDate>Sun, 26 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://blog.danieljanus.pl/lithium-revisited/</guid></item><item><title>Text editor UI</title><link>https://honza.pokorny.ca/2013/05/text-editor-ui/</link><description>&lt;blockquote&gt;
&lt;p&gt;What I don&amp;rsquo;t understand is: why should you ever care how your editor looks,
unless you&amp;rsquo;re trying to win a screenshot competition?  The primary factor
in looking good should be the choice of a good font at a comfortable size,
and a syntax coloring theme that you like.  And that is not something
specific to an editor.  Editors like Emacs and vi have almost no UI!  If
Emacs is configured right, the only UI it has is the modeline and the
minibuffer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Vivek Haldar in &lt;a href="http://blog.vivekhaldar.com/post/31970017734/new-frontiers-in-text-editing"&gt;New Frontiers In Text Editing&lt;/a&gt;&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Sat, 25 May 2013 03:30:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/05/text-editor-ui/</guid></item><item><title>List Exadata Storage Cell disk summary with cellpd.sql and cellpdx.sql scripts</title><link>https://tanelpoder.com/2013/05/24/list-exadata-storage-cell-disk-summary-with-cellpd-sql-and-cellpdx-sql-scripts/</link><description>&lt;p&gt;In the previous post I explained how to list Exadata disk layout and topology details with the exadisktopo scripts, in this post I’ll introduce one celldisk overview script, which I use to quickly see the celldisk configuration, specs and error statuses. The &lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/cellpd.sql" target="_blank"&gt;cellpd.sql&lt;/a&gt; script (Cell &lt;strong&gt;P&lt;/strong&gt;hysical &lt;strong&gt;D&lt;/strong&gt;isk) will show the following output:&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; @exadata/&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/cellpd.sql" target="_blank"&gt;cellpd.sql&lt;/a&gt;
Show Exadata cell versions from V$CELL_CONFIG....

DISKTYPE             CELLNAME             STATUS                 TOTAL_GB     AVG_GB  NUM_DISKS   PREDFAIL   &lt;strong&gt;POORPERF&lt;/strong&gt; WTCACHEPROB   PEERFAIL   CRITICAL
-------------------- -------------------- -------------------- ---------- ---------- ---------- ---------- ---------- ----------- ---------- ----------
FlashDisk            192.168.12.3         normal                      183         23          8
FlashDisk            192.168.12.3         &lt;strong&gt;not present&lt;/strong&gt;                 183         23          8                     &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/span&gt;
FlashDisk            192.168.12.4         normal                      366         23         16
FlashDisk            192.168.12.5         normal                      366         23         16
HardDisk             192.168.12.3         normal                    22352       1863         12
HardDisk             192.168.12.4         normal                    22352       1863         12
HardDisk             192.168.12.5         normal                    22352       1863         12&lt;/pre&gt;
&lt;p&gt;Above you see that some of my Flash Disks are missing and before they went completely missing (because &lt;a href="http://oracle-ninja.com/" target="_blank"&gt;the Oracle Ninja&lt;/a&gt; removed them :) these disks indicated the “poor performance” status.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/cellpdx.sql" target="_blank"&gt;cellpdx.sql&lt;/a&gt; script will display extended info for each celldisk, including disk model, firmware version, serial number and various error metrics. Warning, lots of wide output coming again:&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Fri, 24 May 2013 23:05:50 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/05/24/list-exadata-storage-cell-disk-summary-with-cellpd-sql-and-cellpdx-sql-scripts/</guid></item><item><title>List Exadata Disk Layout and Topology with the exadisktopo scripts</title><link>https://tanelpoder.com/2013/05/24/list-exadata-disk-layout-and-topology-with-the-exadisktopo-scripts/</link><description>&lt;p&gt;Here are two more Exadata scripts for listing the end-to-end ASM&amp;lt;-&amp;gt;Exadata disk topology from V$ASM_ views and from V$CELL_CONFIG. These scripts see both the ASM level layout and the storage cell-level disk topology.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/exadisktopo.sql" target="_blank"&gt;exadisktopo.sql&lt;/a&gt; script shows all disks starting from the ASM diskgroup layer, going deeper and deeper all the way to the OS disk device level in the storage cells. It uses outer joins, so will show celldisks even if there are no corresponding grid disks allocated on them (or if there are no ASM disks using them). It also shows the Flash cards used as flash cache, thus there are no ASM disks on them usually.&lt;/p&gt;
&lt;p&gt;The output should be self-explanatory, you just read the data from left to right (from ASM diskgroup to ASM disk to Grid Disk level etc), the more rightwards you scroll, the “deeper” you go in the Exadata IO stack layers. Warning, lots of wide output coming :)&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Fri, 24 May 2013 22:42:29 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/05/24/list-exadata-disk-layout-and-topology-with-the-exadisktopo-scripts/</guid></item><item><title>Shifting Gears</title><link>https://zacs.site/blog/shifting-gears.html</link><description>&lt;p&gt;When I wrote &lt;a href="https://zacs.site/blog/writers-guilt.html"&gt;&lt;em&gt;Writer&amp;#8217;s Guilt&lt;/em&gt;&lt;/a&gt; a few hours ago, I was done. I was drained. I was finished, and I was mad. Nevertheless, for an article written in anger, it turned out to be pretty good. As I walked downstairs after publishing it, I couldn&amp;#8217;t help but feel just a little proud. Then I had a banana, an orange, sat down on the couch, and watched The Fast and The Furious: Tokyo Drift for the first time in much too long. I had forgotten how great a movie it is&amp;#160;&amp;#8212;&amp;#160;I had forgotten how great the entire series is, really. But after Tokyo Drift ended, as the last scene faded from the screen and the credits began to roll, I remembered. I remembered how much I love the series; I remembered how much I love movies.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/shifting-gears.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 24 May 2013 00:13:07 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/shifting-gears.html</guid></item><item><title>V$CELL_THREAD_HISTORY – “ASH” for Exadata Storage Cells</title><link>https://tanelpoder.com/2013/05/23/vcell_thread_history-ash-for-exadata-storage-cells/</link><description>&lt;p&gt;Did you know that there’s something like Active Session History also in the Exadata storage cells? ;-)&lt;/p&gt;
&lt;p&gt;The V$CELL_THREAD_HISTORY view is somewhat like V$ACTIVE_SESSION_HISTORY, but it’s measuring thread activity in the Exadata Storage Cells:&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; @desc v$cell_thread_history
           Name                            Null?    Type
           ------------------------------- -------- ----------------------------
    1      CELL_NAME                                VARCHAR2(1024)
    2      SNAPSHOT_ID                              NUMBER
    3      SNAPSHOT_TIME                            DATE
    4      THREAD_ID                                NUMBER
    5      JOB_TYPE                                 VARCHAR2(32)
    6      WAIT_STATE                               VARCHAR2(32)
    7      WAIT_OBJECT_NAME                         VARCHAR2(32)
    8      SQL_ID                                   VARCHAR2(13)
    9      DATABASE_ID                              NUMBER
   10      INSTANCE_ID                              NUMBER
   11      SESSION_ID                               NUMBER
   12      SESSION_SERIAL_NUM                       NUMBER&lt;/pre&gt;
&lt;p&gt;It keeps about 10 minutes worth of samples of Exadata Storage Cell thread activity:&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; @&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/minmax.sql" target="_blank"&gt;minmax&lt;/a&gt; snapshot_time v$cell_thread_history
Show min/max (low/high) values in column "snapshot_time" of table v$cell_thread_history...

MIN(SNAPSHOT_TIME MAX(SNAPSHOT_TIME
----------------- -----------------
20130419 14:42:15 20130419 14:52:54&lt;/pre&gt;
&lt;p&gt;Note that it’s not the V$ view or the database instance which stores this array – it’s the storage cells themselves. If you query the v$cell_thread_history view, your Oracle database session is going to “gather” this instrumentation data from all the required cells and present it to you, that’s why the “cell statistics gather” wait event shows up:&lt;/p&gt;
&lt;pre&gt;PARSING IN CURSOR #140596385017248 len=42 dep=0 uid=0 oct=3 lid=0 tim=1366404896817011 hv=4063158547 ad='19e452578' sqlid='63awy1gg
t2xs8m'
select count(*) from v$cell_thread_history
END OF STMT
PARSE #140596385017248:c=0,e=115,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=4272803188,tim=1366404896817010
EXEC #140596385017248:c=0,e=27,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=4272803188,tim=1366404896817127
WAIT #140596385017248: nam='SQL*Net message to client' ela= 1 driver id=1413697536 #bytes=1 p3=0 obj#=40 tim=1366404896817152
WAIT #140596385017248: nam='&lt;strong&gt;cell statistics gather&lt;/strong&gt;' ela= 283 cellhash#=0 p2=0 p3=0 obj#=40 tim=1366404896818846
WAIT #140596385017248: nam='cell statistics gather' ela= 352 cellhash#=0 p2=0 p3=0 obj#=40 tim=1366404896819317
WAIT #140596385017248: nam='cell statistics gather' ela= 376 cellhash#=0 p2=0 p3=0 obj#=40 tim=1366404896820929
WAIT #140596385017248: nam='cell statistics gather' ela= 326 cellhash#=0 p2=0 p3=0 obj#=40 tim=1366404896822198
WAIT #140596385017248: nam='cell statistics gather' ela= 580 cellhash#=0 p2=0 p3=0 obj#=40 tim=1366404896823620
...&lt;/pre&gt;
&lt;p&gt;Now, how frequently do the cells sample their “ASH” data:&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; SELECT DISTINCT (snapshot_time - LAG(snapshot_time) 
                      OVER (ORDER BY snapshot_time)) * 86400 lag_seconds
     FROM (SELECT distinct snapshot_time 
           FROM v$cell_thread_history WHERE cell_name = '192.168.12.3');

LAG_SECONDS
-----------

          1&lt;/pre&gt;
&lt;p&gt;Looks like the sampling is done exactly once per second!&lt;/p&gt;
&lt;p&gt;So, great, what can we do with this data?&lt;/p&gt;
&lt;p&gt;Here’s an Exadata performance script (&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/cth.sql" target="_blank"&gt;cth.sql&lt;/a&gt;) which uses V$CELL_THREAD_HISTORY to dig into cell activity from the database layer.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Thu, 23 May 2013 23:57:33 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/05/23/vcell_thread_history-ash-for-exadata-storage-cells/</guid></item><item><title>Writer's Guilt</title><link>https://zacs.site/blog/writers-guilt.html</link><description>&lt;p&gt;Some days, I want to write. Other days, I don&amp;#8217;t. Today is one of the latter, and yet I still wrote this. Why?&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/writers-guilt.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 23 May 2013 20:53:28 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/writers-guilt.html</guid></item><item><title>A traumatic [read: wimpy] experience</title><link>https://liza.io/a-traumatic-read-wimpy-experience/</link><description>&lt;p&gt;This Monday I went to the doctor about my leg pain. She ruled out a stress fracture and said it was most likely a calf strain, but that the pain I describe could also point to deep vein thrombosis.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Thu, 23 May 2013 08:50:14 GMT</pubDate><guid isPermaLink="true">https://liza.io/a-traumatic-read-wimpy-experience/</guid></item><item><title>iTextEditors</title><link>http://brettterpstra.com/ios-text-editors/</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/a-broken-spacebar-and-my-ipad.html"&gt;Speaking of iOS text editors&lt;/a&gt;, Brett Terpstra created an amazing chart comparing more iOS text editors than anyone could possibly use in a lifetime. This list went around the internet a few months ago, but it certainly merits linking to again. To anyone searching for a new editor, start here.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brettterpstra.com/ios-text-editors/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 22 May 2013 14:14:58 GMT</pubDate><guid isPermaLink="true">http://brettterpstra.com/ios-text-editors/</guid></item><item><title>A Broken Spacebar and my iPad</title><link>https://zacs.site/blog/a-broken-spacebar-and-my-ipad.html</link><description>&lt;p&gt;I used to write almost exclusively on my computer. Then, my spacebar started going bad sometime around November of last year, inconveniently just before I launched this blog. Especially problematic given how much and how often I like to write, I nevertheless decided not to fix it: right around that time the flame war around the iPad as solely a content consumption versus a multi-faceted creation device was raging across the internet, and I wanted to decide what I would use my own iPad for myself.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/a-broken-spacebar-and-my-ipad.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 22 May 2013 14:07:39 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/a-broken-spacebar-and-my-ipad.html</guid></item><item><title>Digital preservation and economic faults</title><link>https://makedist.com/posts/2013/05/22/digital-preservation-and-economic-faults/</link><description>Archiving information on paper still has a lot of value.</description><author>Noah Watkins</author><pubDate>Wed, 22 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://makedist.com/posts/2013/05/22/digital-preservation-and-economic-faults/</guid></item><item><title>Google plus adoption</title><link>https://honza.pokorny.ca/2013/05/google-plus-adoption/</link><description>&lt;p&gt;Google+ has been the target of numerous jokes in the tech community.  Many
blogs claim that adoption has been minimal and that the product isn&amp;rsquo;t appealing
to common users over alternatives such as Facebook.&lt;/p&gt;
&lt;p&gt;I have noticed quite the opposite is true.  Many of my extended family in the
Czech Republic have somewhat recently acquired new Android devices.  One by
one, they have added me to their circles on Google+.  My stream is now full of
pictures that my parents, aunts and uncles took with their phones.  Google
uploads those pictures as soon as you take them and reminds you to share them.
This interface is so simple that even the average joe can share their content
online.&lt;/p&gt;
&lt;p&gt;The way I see it, Google is doing something right.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Tue, 21 May 2013 20:20:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/05/google-plus-adoption/</guid></item><item><title>Powerful Bloggers</title><link>https://zacs.site/blog/powerful-bloggers.html</link><description>&lt;p&gt;Quite some time ago I came across a very interesting statement in the most unlikely of places, in a &amp;#8220;tips and tricks&amp;#8221; piece sensationally titled &lt;a href="http://twohourblogger.com/genius/"&gt;&lt;em&gt;10 Rare But Simple Blog Tricks that Make You Look Like a Genius&lt;/em&gt;&lt;/a&gt;, where the author writes:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/powerful-bloggers.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 21 May 2013 19:47:50 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/powerful-bloggers.html</guid></item><item><title>Low-End Apple Bloggers</title><link>https://zacs.site/blog/low-end-apple-bloggers.html</link><description>&lt;p&gt;On January 18th Horace Dediu made two observations and posted them to Twitter. Shortly after those tweets went live, I began constructing a short article around them. Either unable or simply unwilling to finish the article though, the beginnings of this piece have remained in Simplenote since then. Now, with my Instapaper queue finally completely empty for the first time since I bought the app, I finally have the time and&amp;#160;&amp;#8212;&amp;#160;more importantly&amp;#160;&amp;#8212;&amp;#160; available attention to begin working through my back catalog of half-baked articles, the first of which is this one about Apple bloggers.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/low-end-apple-bloggers.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 21 May 2013 19:31:00 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/low-end-apple-bloggers.html</guid></item><item><title>Securing your server with fail2ban and a proper SSH-configuration</title><link>https://www.zufallsheld.de/2013/05/21/securing-your-server-with-fail2ban-and-a-proper-ssh-configuration/</link><description>&lt;p&gt;When I initially set up my server for this blog and my small
&lt;a href="http://www.sebastian-gumprich.de"&gt;photography-website&lt;/a&gt; I didn&amp;#8217;t really think about securing it against
attacks. But one day I looked into the &amp;#8220;secure&amp;#8221;-logfile of my server and
was greeted with&amp;nbsp;this:&lt;/p&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;

&lt;pre&gt;&lt;code&gt;Apr 24 04:38:23 vps9533 sshd[21882]: pam_unix …&lt;/code&gt;&lt;/pre&gt;</description><author>zufallsheld</author><pubDate>Tue, 21 May 2013 17:09:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/05/21/securing-your-server-with-fail2ban-and-a-proper-ssh-configuration/</guid></item><item><title>Champion Pythonista</title><link>https://nicolaiarocci.com/champion-pythonista/</link><description>&lt;p&gt;La &lt;!-- raw HTML omitted --&gt;Open Source Report Card&lt;!-- raw HTML omitted --&gt; è un’iniziativa divertente. E’ difficile resistere al richiamo dell’ego… soprattutto quand’è smisurato.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nicola is a champion Pythonista (one of the top 11% most active Python users) who loves pushing code. Nicola is a nine-to-fiver who seems to work best in the mid-afternoon.&lt;/p&gt;&lt;/blockquote&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 21 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/champion-pythonista/</guid></item><item><title>The Jolla Phone</title><link>https://zacs.site/blog/the-jolla-phone.html</link><description>&lt;p&gt;&amp;#8220;This is almost exactly &lt;a href="https://zacs.site/blog/the-8-bit-nintendo-phone.html"&gt;what I imagined the Nintendo phone would look like&lt;/a&gt;&amp;#8221;, I thought when I came across the &lt;a href="http://jolla.com"&gt;Jolla&lt;/a&gt; phone this morning in &lt;a href="http://techcrunch.com/2013/05/20/finnish-meego-startup-jolla-reveals-first-phone-hardware-with-customisable-shells-e399-price-tag-coming-at-years-end/"&gt;a Tech Crunch article&lt;/a&gt;. The same principles that inspired my &amp;#8220;8-Bit Nintendo Phone&amp;#8221; appeared to have driven the creators of the Jolla phone to design a product innovative in both its hardware and software alike. Unfortunately, this phone will not come to America for quite some time; however, based on the information available at the company&amp;#8217;s home page, I formulated a few admittedly premature thoughts on this topic.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-jolla-phone.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 21 May 2013 00:23:51 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-jolla-phone.html</guid></item><item><title>Recruit this</title><link>https://blog.samuellevy.com/post/44-recruit-this.html</link><description>&lt;p&gt;I have a problem with recruiters. Shocking, I know. If you ask around developers, recruiters quite often seem to be right near the top of the list for &amp;quot;things which tech would be far better without&amp;quot;.&lt;/p&gt;&lt;p&gt;If you're a recruiter reading this, then please don't skip straight to  posting angry diatribes in the comment section - I'm happy to explain where my problem comes from, and maybe even how to fix it. If you're not a recruiter, but have run into some of the same problems, then maybe you might even want to confirm that I'm not alone here.&lt;/p&gt;&lt;p&gt;Let's start with a short anecdote. I was recently contacted b…&lt;/p&gt;</description><author>Sam says you should read this</author><pubDate>Mon, 20 May 2013 20:13:04 GMT</pubDate><guid isPermaLink="true">https://blog.samuellevy.com/post/44-recruit-this.html</guid></item><item><title>Yahoo to Acquire Tumblr</title><link>http://finance.yahoo.com/news/yahoo-acquire-tumblr-120000116.html</link><description>&lt;p&gt;&amp;#8220;Per the agreement and our promise not to screw it up, Tumblr will be independently operated as a separate business. David Karp will remain CEO. The product, service and brand will continue to be defined and developed separately with the same Tumblr irreverence, wit, and commitment to empower creators.&amp;#8221;&lt;/p&gt;

&lt;p&gt;A lot of people have written about this announcement. They started when rumors of the acquisition began gaining significant traction yesterday and haven&amp;#8217;t stopped since. For all the long-winded articles explaining how this deal undoubtedly spells the end of Tumblr and the hissy fits of those lashing out as if anyone cares to listen though, Myke Hurley put it best in &lt;a href="https://twitter.com/imyke/status/336175686832246784"&gt;a tweet from yesterday evening&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I think it&amp;#8217;s fair to say Marissa Mayer is giving us &lt;em&gt;exactly&lt;/em&gt; what we hoped.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;She is building an exciting Yahoo!&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yahoo! under Marissa Mayer has been doing a lot of interesting things lately. She really has built an exciting Yahoo!, and one that I look forward to seeing many great things come from in the coming months and years.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://finance.yahoo.com/news/yahoo-acquire-tumblr-120000116.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 20 May 2013 11:46:47 GMT</pubDate><guid isPermaLink="true">http://finance.yahoo.com/news/yahoo-acquire-tumblr-120000116.html</guid></item><item><title>logdog - a colorized Android logcat</title><link>https://zserge.com/posts/logdog/</link><description>Sometimes I do Android development. I never liked using debuggers, neither I use IDE. So my choice is to write Android apps with Vim+Terminal. With the lack of debugger I have to use logcat frequently, and using plain adb logcat (even with grepping output) is far from being pleasant.
Then I found there are nicer alternatives, like coloredlogcat or proclogcat. I tried them, but they lacked other output formats, like &amp;ldquo;time&amp;rdquo;.</description><author>zserge's blog</author><pubDate>Mon, 20 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://zserge.com/posts/logdog/</guid></item><item><title>💡 Idea: A Placeholder for Topics I Want to Write About</title><link>https://jdsalaro.com/idea/</link><description>This is a simplistic and implicit backlog to which I can link from other places. This makes it easier to remember what I want or wanted to write about as well as programmatically generate a listing.</description><author>Jayson Salazar Rodriguez | @jdsalaro | Blog</author><pubDate>Mon, 20 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://jdsalaro.com/idea/</guid></item><item><title>Understand How It Works</title><link>https://martinrue.com/understand-how-it-works/</link><description>One of the best pieces of advice I ever got was from my grandfather. He didn't visit very often and so conversation often felt a bit like an ice breaker.</description><author>Martin Rue</author><pubDate>Mon, 20 May 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://martinrue.com/understand-how-it-works/</guid></item><item><title>A Game of Snails and Heroku</title><link>https://liza.io/a-game-of-snails-and-heroku/</link><description>&lt;p&gt;&lt;a href="https://s3-us-west-2.amazonaws.com/images.liza.io/gameofsnails-may19-2013.jpg"&gt;&lt;img alt="A Game of Snails - snail racing and breeding" src="https://s3-us-west-2.amazonaws.com/images.liza.io/gameofsnails-may19-2013.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A Game of Snails is nowhere close to being complete or even really playable, but I&amp;rsquo;ve decided to get as much of it done as I can before the end of May and then just put it online - regardless of completion or bugs. There are no rules to One Game a Month, after all, and I can then continue to work on a more complete release for the month of June. Or, if I feel like a break from snails, make some other quick game in the meantime and let it rest until I want to work on it again.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 19 May 2013 22:26:14 GMT</pubDate><guid isPermaLink="true">https://liza.io/a-game-of-snails-and-heroku/</guid></item><item><title>When the Muse Strikes Me, He Hits Hard</title><link>https://zacs.site/blog/the-muse.html</link><description>&lt;p&gt;I try to post something every day. Most days I accomplish this goal, while occasionally I go an entire week without a single post. Most of the updates I publish are links to the works of others, something insightful, funny, or interesting I found while plowing through my Instapaper queue. Occasionally though, every once in a while, the proverbial muse, making his rounds, comes around and hits me especially hard. After a few hours of heads-down writing, I emerge with a couple link posts and a few actual articles tucked under my arm, ready to post. And then the cycle repeats itself: I spend another week or two forcing myself to read and eventually write something dull until, once again, I feel the inspiration to actually write a real article.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-muse.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 19 May 2013 16:14:57 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-muse.html</guid></item><item><title>Google App Engine Endpoints (REST services), with Java, Maven &amp;amp; Intellij (Part 1)</title><link>https://www.planetjones.net/blog/19-05-2013/google-app-engine-endpoints-with-java-maven-part1.html</link><description>Google&amp;rsquo;s App Engine now provides Endpoints, which offer a simple way to create RESTful services for clients. Here a simple Endpoint is created using the Java API, Maven and Intellij.</description><author>Jonathan Jones homepage: planetjones.net</author><pubDate>Sun, 19 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.planetjones.net/blog/19-05-2013/google-app-engine-endpoints-with-java-maven-part1.html</guid></item><item><title>Eventful First Sunday in San Francisco</title><link>https://sal.dev/summer-13/eventful-first-sunday-in-San-Francisco/</link><description>&lt;h2 id="good-morning"&gt;Good Morning&lt;/h2&gt;
&lt;p&gt;Having gone to bed early, David and I get up with no problem and head on down towards Market Street around 8:15AM. Google Maps informs us that our BART (Bay Area Rapid Transit) train will arrive at 8:29AM and will whisk us over to Akeem’s place where we’ll meet up with some other people before heading over to a parade. I took a good long glance at the map, and then cleared my phone away as we descend the escalator steps to the train platform. At 8:29AM, a train arrives that we think is our train and with inadequate time to verify, we hustle and get on the train. After a minute and a half of tracing our fingers over the color-coded map and mumbling to ourselves, we come to the correct conclusion that this is indeed our train and realize that the old couple a few yards away who went unnoticed probably think we are crazy. It didn’t matter because we were victorious.&lt;/p&gt;
&lt;h2 id="parade"&gt;Parade&lt;/h2&gt;
&lt;p&gt;After everyone arrived at Akeem’s apartment, we grab a &lt;a href="http://www.lyft.me/"&gt;Lyft&lt;/a&gt; to Alamo Square to watch the &lt;a href="http://www.baytobreakers.com/"&gt;Bay to Breakers&lt;/a&gt; “race”.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Dennis leads the way" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/david_dennis_phone.jpg" /&gt;&lt;/p&gt;

&lt;h2 id="the-parade"&gt;The Parade&lt;/h2&gt;
&lt;p&gt;While I’m positive that the first people to run in this event do indeed treat it as a foot race, the remaining 99.9% of people are clearly not in a hurry. Everyone was wearing costumes with a San Francisco spectrum of ideas: there were people in Victorian Era outfits, a guy dressed as though he was in a hot air balloon, Teenage Mutant Ninja Turtles, naked dudes, a surprisingly large number of lifeguards, pirates, sharks, Cards Against Humanity, Ghost Busters, and many cross dressing variations on childhood TV shows.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Street View" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/on_the_street.jpg" /&gt;
We camped out on that hill in the background.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Ghost Busters" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/ghost_busters.jpg" /&gt;
There is something strange in this neighborhood.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Some semblance of a band" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/rag_tag_band.jpg" /&gt;
Rag-tag band&lt;/p&gt;

&lt;p&gt;&lt;img alt="Cymbal Monkeys" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/cymbal_monkeys.jpg" /&gt;
Some cross between clever and creepy&lt;/p&gt;

&lt;p&gt;&lt;img alt="Party Scanner" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/party_scanner.jpg" /&gt;
“I’m sorry sir, I can’t let you through here without the proper amount of party.”&lt;/p&gt;

&lt;p&gt;&lt;img alt="Group Shot" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/group_shot.jpg" /&gt;
Hey, hey, the gangs all here.&lt;/p&gt;

&lt;h2 id="food-and-the-park"&gt;Food and the Park&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Ike's Place" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/ikes_place.jpg" /&gt;
We hit up this super-tasty sandwich shop called &lt;a href="http://www.yelp.com/biz/ikes-place-san-francisco"&gt;Ike’s Place&lt;/a&gt; (no relation to a Mike, unfortunately). I got a sandwich called “Name of Girl I’m Dating”, and it was fantastic. We got out of Ike’s just as half of the city decided to show up, and we headed to &lt;a href="http://en.wikipedia.org/wiki/Dolores_Park"&gt;Dolores Park&lt;/a&gt; to enjoy our lunches and hung out for a while.&lt;/p&gt;

&lt;h2 id="sf-moma"&gt;SF MOMA&lt;/h2&gt;
&lt;p&gt;My friend &lt;a href="https://www.facebook.com/nathan.f.alison"&gt;Nathan&lt;/a&gt; joined the group at the park a bit after lunch, and he, my roommate &lt;a href="https://www.facebook.com/david.nichol.14"&gt;David&lt;/a&gt; headed over to check out &lt;a href="http://www.sfmoma.org/"&gt;The San Francisco Museum of Modern Art&lt;/a&gt; before it closed for two and a half years.
&lt;img alt="David paying the fare" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/david_paying_for_transit.jpg" /&gt;
I believe this is a picture of the first time David used public transit in San Francisco.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Nathan Crossing" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/nathan_crossing.jpg" /&gt;
At this point I realized candid photos weren’t easy/cool. Unlike the way Nathan dresses. Nathan is always cool.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Scroll Art" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/scroll_art.jpg" /&gt;
The scrolls were pretty sweet and would make quite the discussion piece for anyone’s living room.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Black Canvas" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/black_canvas.jpg" /&gt;
If you look really close, you can see the eagle.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Toilet Art" src="/assets/article_images/2013-05-19-eventful-first-sunday-in-San-Francisco/toilet_art.jpg" /&gt;
Fortunately, SF MOMA had restroom facilities in the middle of a gallery.&lt;/p&gt;

&lt;p&gt;And thus concluded my first full day in San Francisco for the summer.&lt;/p&gt;</description><author>Salvatore's Blog</author><pubDate>Sun, 19 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://sal.dev/summer-13/eventful-first-sunday-in-San-Francisco/</guid></item><item><title>How I built this website, using Pelican: Part 1 - Setup</title><link>https://duncanlock.net/blog/2013/05/17/how-i-built-this-website-using-pelican-part-1-setup/</link><description>&lt;p&gt;As I &lt;a href="https://duncanlock.net/blog/2013/04/26/welcome-to-the-new-site-same-as-the-old-site/"&gt;mentioned previously&lt;/a&gt;, this site was put together using &lt;a href="http://getpelican.com/"&gt;Pelican&lt;/a&gt; - a static site generator, written in&amp;nbsp;Python.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;a class="image" href="http://en.wikipedia.org/wiki/Brown_Pelican"&gt;&lt;img alt="Blueprint style diagram showing a brown Pelican, flying. The diagram point out it's Yellow Head, Large beak and pouch for fishing, long neck, white chest and grey body." src="https://duncanlock.net/images/posts/how-i-built-this-website-using-pelican-part-1-setup/pelecanus-occidentalis-diagram.png" /&gt;&lt;/a&gt;
&lt;figcaption&gt;Figure 1. Pelecanus Occidentalis - the Brown Pelican. Original clipart Flying Pelican from OpenClipart, by molumen, Public Domain. More on Pelican, the bird.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Static site generators take your content, pour it into your templates and output the result as static pre-generated &lt;span class="caps"&gt;HTML&lt;/span&gt;, &lt;span class="caps"&gt;CSS&lt;/span&gt;, &lt;span class="caps"&gt;JS&lt;/span&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; image files. You can then just upload the resulting folder of output to your server and you&amp;#8217;re done. All you need on the server is a web server of some sort, like Apache or Nginx - anything really - all it&amp;#8217;s doing is serving static&amp;nbsp;pages.&lt;/p&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_the_huge_advantage_of_this_setup_is_simplicity"&gt;The huge advantage of this setup is&amp;nbsp;simplicity:&lt;/h2&gt;&lt;div class="olist arabic"&gt;&lt;ol class="arabic"&gt;&lt;li&gt;You can write your content in Markdown &lt;a class="footnote-ref" href="#_footnote_1" id="_footnoteref_1" title="View footnote 1"&gt;[1]&lt;/a&gt;, reStructuredText &lt;a class="footnote-ref" href="#_footnote_2" id="_footnoteref_2" title="View footnote 2"&gt;[2]&lt;/a&gt; or AsciiDoc &lt;a class="footnote-ref" href="#_footnote_3" id="_footnoteref_3" title="View footnote 3"&gt;[3]&lt;/a&gt; - all simple text formats, designed to facilitate writing and get out of your way. You can use whichever writing tool you prefer &lt;a class="footnote-ref" href="#_footnote_4" id="_footnoteref_4" title="View footnote 4"&gt;[4]&lt;/a&gt;, as long as it can output plain text&amp;nbsp;files.&lt;/li&gt;&lt;li&gt;Whenever you make changes, Pelican can automatically regenerate the site, so you can see your changes&amp;nbsp;immediately.&lt;/li&gt;&lt;li&gt;When you&amp;#8217;re done, Pelican can automatically upload the site to your web server, or you can do it, just by uploading a&amp;nbsp;folder.&lt;/li&gt;&lt;li&gt;The web server generally requires no setup - all you need is a web server that can serve static content (which is all of them) - no extra software or configuration; no &lt;span class="caps"&gt;PHP&lt;/span&gt;, no database, no nothing - much less to go&amp;nbsp;wrong.&lt;/li&gt;&lt;li&gt;Because you&amp;#8217;ve only got one thing running on the server, you have much less exposure to security problems - no WordPress, no &lt;span class="caps"&gt;PHP&lt;/span&gt; - just the &lt;span class="caps"&gt;OS&lt;/span&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; the web&amp;nbsp;server.&lt;/li&gt;&lt;li&gt;Because the server is only serving pre-generated static content, a Pelican site is very lightweight, using very few server&amp;nbsp;resources.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;NB&lt;/span&gt;&lt;/strong&gt;: This tutorial is quite long. I go into detail, explain things and try to take you from zero to a complete, fully functional website, built the way a professional web developer would do it. If you just want a really quick Pelican jump start, try here: &lt;a href="http://docs.getpelican.com/en/latest/getting_started.html"&gt;http://docs.getpelican.com/en/latest/getting_started.html&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_installation_basic_setup"&gt;Installation &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Basic&amp;nbsp;Setup&lt;/h2&gt;&lt;p&gt;I&amp;#8217;m using Linux (Xubuntu), but doing this on Windows or Mac is quite similar - you&amp;#8217;ll need the same things installed, but the details of installing them will be different. Installing &lt;code&gt;python-dev&lt;/code&gt; and python packages that want to build C extensions on Windows&amp;#8230;&amp;#8203; won&amp;#8217;t work - I suggest you give &lt;a href="http://code.activestate.com/pypm/"&gt;ActiveState&amp;#8217;s Binary Package&lt;/a&gt; manager a try if you&amp;#8217;re on&amp;nbsp;Windows.&lt;/p&gt;
&lt;p&gt;Where I use &lt;code&gt;duncanlock&lt;/code&gt; in the examples below, you should use your site name&amp;nbsp;instead.&lt;/p&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_install"&gt;Install&lt;/h3&gt;&lt;p&gt;Pelican uses Python, so you&amp;#8217;ll need that installed. If you&amp;#8217;re on Mac or Linux, you&amp;#8217;ll already have this, but you&amp;#8217;ll probably need to &lt;a href="http://www.activestate.com/activepython/downloads"&gt;install it on Windows&lt;/a&gt;. Pelican supports Python 2.7.x or 3.3+, so use whichever you prefer. I&amp;#8217;m doing this using Python 2.7.3, but I think everything should be the same on 3.x, although I haven&amp;#8217;t tried&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;First, I&amp;#8217;m going to install &lt;code&gt;pip&lt;/code&gt; &lt;a class="footnote-ref" href="#_footnote_5" id="_footnoteref_5" title="View footnote 5"&gt;[5]&lt;/a&gt;, &lt;code&gt;virtualenv&lt;/code&gt; &lt;a class="footnote-ref" href="#_footnote_6" id="_footnoteref_6" title="View footnote 6"&gt;[6]&lt;/a&gt; and &lt;code&gt;virtualenvwrapper&lt;/code&gt; &lt;a class="footnote-ref" href="#_footnote_7" id="_footnoteref_7" title="View footnote 7"&gt;[7]&lt;/a&gt;. These tools make working on python projects &lt;em&gt;much, much&lt;/em&gt; easier. Later, we&amp;#8217;re going to install some python packages that will attempt to build their C extensions during install, so we also need &lt;code&gt;python-dev&lt;/code&gt;:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;python-pip python-virtualenv virtualenvwrapper
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;python-dev&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Next, I&amp;#8217;m going to tell &lt;code&gt;virtualenvwrapper&lt;/code&gt; where I want it to put stuff, by adding this to my &lt;code&gt;~/.bashrc&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;# virtualenvwrapper config&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PROJECT_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/dev
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;WORKON_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/dev/virtualenvs&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now close and re-open your terminal. This will trigger a one-time setup for virtualenvwrapper. Then&amp;nbsp;run:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;mkproject duncanlock.net-pelican&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;which should do something like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;New python executable in duncanlock.net-pelican/bin/python
Installing distribute.........done.
Installing pip...............done.
virtualenvwrapper.user_scripts creating
[...]
Creating /home/duncan/dev/duncanlock.net-pelican
Setting project for duncanlock.net-pelican to /home/duncan/dev/duncanlock.net-pelican&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You will now have a self-contained python virtual environment installed in &lt;code&gt;~/dev/virtualenvs/duncanlock.net-pelican&lt;/code&gt; and a new folder in &lt;code&gt;~/dev/duncanlock.net-pelican&lt;/code&gt;, to put your project files in. Your command prompt will change while this virtualenv is active - gaining a &lt;code&gt;(duncanlock.net-pelican)&lt;/code&gt; at the beginning, so you know which virtualenv you&amp;#8217;re&amp;nbsp;in.&lt;/p&gt;
&lt;p&gt;Next, we&amp;#8217;re going to install Pelican and it&amp;#8217;s dependencies into our virtual&amp;nbsp;environment:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;pelican&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This should install the following things for&amp;nbsp;you:&lt;/p&gt;
&lt;div class="dlist"&gt;&lt;dl&gt;&lt;dt&gt;feedgenerator&lt;/dt&gt;&lt;dd&gt;to generate the Atom&amp;nbsp;feeds&lt;/dd&gt;&lt;dt&gt;jinja2&lt;/dt&gt;&lt;dd&gt;for templating&amp;nbsp;support&lt;/dd&gt;&lt;dt&gt;pygments&lt;/dt&gt;&lt;dd&gt;for syntax&amp;nbsp;highlighting&lt;/dd&gt;&lt;dt&gt;docutils&lt;/dt&gt;&lt;dd&gt;for supporting reStructuredText as an input&amp;nbsp;format&lt;/dd&gt;&lt;dt&gt;pytz&lt;/dt&gt;&lt;dd&gt;for timezone&amp;nbsp;definitions&lt;/dd&gt;&lt;dt&gt;blinker&lt;/dt&gt;&lt;dd&gt;an object-to-object and broadcast signaling&amp;nbsp;system&lt;/dd&gt;&lt;dt&gt;unidecode&lt;/dt&gt;&lt;dd&gt;for &lt;span class="caps"&gt;ASCII&lt;/span&gt; transliterations of Unicode&amp;nbsp;text&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;
&lt;p&gt;It should print out a load of progress stuff and eventually finish by&amp;nbsp;saying:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;Successfully installed pelican feedgenerator jinja2 pygments docutils pytz blinker unidecode six
Cleaning up...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Double check it worked by running &lt;code&gt;pelican --version&lt;/code&gt; - currently this should print out &lt;code&gt;3.2.0&lt;/code&gt; - then run &lt;code&gt;pip freeze&lt;/code&gt; - which prints out a list of the python modules installed in your current&amp;nbsp;virtualenv.&lt;/p&gt;
&lt;p&gt;Now we&amp;#8217;ll install some extra python modules to support bonus functionality provided by some Pelican plugins that we&amp;#8217;ll be using&amp;nbsp;later:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;Pillow beautifulsoup4 cssmin cssprefixer cssutils pretty six smartypants typogrify webassets&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Again, as far as I know &lt;span class="caps"&gt;PIL&lt;/span&gt;/Pillow is hard to install on Windows - use the ActiveState Package Manager. Once this is done, run this to get &lt;code&gt;pip&lt;/code&gt; to make a list of all the things you&amp;#8217;ve got installed in this&amp;nbsp;virtualenv:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pip freeze &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; requirements.txt&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Which should create a text file containing something like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;Jinja2==2.6
Pygments==1.6
Unidecode==0.04.12
argparse==1.2.1
blinker==1.2
docutils==0.10
feedgenerator==1.5
pelican==3.2
pytz==2013b
six==1.3.0
wsgiref==0.1.2&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This allows you to re-install everything in one go if you move machines, just by running &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;&amp;#8201;&amp;#8211;&amp;#8201;or to check for &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; install updates to all the modules at once, just by running &lt;code&gt;pip install --upgrade -r requirements.txt&lt;/code&gt;, amongst other things. We&amp;#8217;re also going to check this lot into &lt;code&gt;git&lt;/code&gt; later and this allows you to keep the list of requirements under version control too, which is&amp;nbsp;nice.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_pelican_quick_start"&gt;Pelican Quick&amp;nbsp;Start&lt;/h3&gt;&lt;p&gt;Now that we&amp;#8217;ve got everything installed, run this to create a basic skeleton site for you to&amp;nbsp;modify:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pelican-quickstart&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will ask you some questions and generate a skeleton site, that matches your&amp;nbsp;answers:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="go"&gt;Welcome to pelican-quickstart v3.2.0.

This script will help you create a new Pelican-based website.

Please answer the following questions so this script can generate the files needed by Pelican.

Using project associated with current virtual environment. Will save to:
/home/duncan/dev/duncanlock.net-pelican&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;you can accept the defaults by pressing enter for most of these questions, except&amp;nbsp;these:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&amp;gt; What will be the title of this web site?
duncanlock.net
&amp;gt; Who will be the author of this web site?
Duncan Lock&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you wanted to use the built-in Pelican webserver for development, you could say &amp;#8216;No&amp;#8217; and skip this next bit, but we&amp;#8217;re going to configure a local virtualhost and use Apache to serve the site for development, so we&amp;#8217;re going to do this&amp;nbsp;instead:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&amp;gt; Do you want to specify a URL prefix? e.g., http://example.com (Y/n) y
&amp;gt; What is your URL prefix? (see above example; no trailing slash) http://duncanlock.test
[...]
Done. Your new project is available at /home/duncan/dev/duncanlock.net-pelican&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now you can generate the quick-start site and see what it looks&amp;nbsp;like:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;make html&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This should create an &lt;code&gt;output&lt;/code&gt; folder with the contents of a website in it. To quickly serve the generated site so it can be previewed in your browser, run&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;make serve&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then visit &lt;a href="http://localhost:8000"&gt;http://localhost:8000&lt;/a&gt; in your browser; you should be able to see a test site, which should look something like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="image-block"&gt;&lt;img alt="Screenshot of the quick-started Pelican site, using the default theme and no content." src="https://duncanlock.net/images/posts/how-i-built-this-website-using-pelican-part-1-setup/duncanlock-net-pelican-test.png" /&gt;&lt;/div&gt;
&lt;p&gt;Press &lt;code&gt;Ctrl + c&lt;/code&gt; in the console to stop the Pelican&amp;nbsp;server.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_apache_setup"&gt;Apache&amp;nbsp;Setup&lt;/h3&gt;&lt;p&gt;Okay, now we want to configure an Apache VirtualHost &lt;a class="footnote-ref" href="#_footnote_8" id="_footnoteref_8" title="View footnote 8"&gt;[8]&lt;/a&gt;, so that when we visit &lt;a href="http://duncanlock.test/"&gt;http://duncanlock.test/&lt;/a&gt; in a browser, our local Apache server will serve up our local pelican development site. There are lots of reasons why this is useful, but the main one is that it&amp;#8217;s very close to my final deployment environment - a Linux box with Apache on it. It also means that the root of the local site is &lt;code&gt;/&lt;/code&gt;, the same as the root of the final live site, which is nice for making links work. This also allows us to do neat server configuration things and test them all locally, as we&amp;#8217;ll see&amp;nbsp;later.&lt;/p&gt;
&lt;p&gt;If you haven&amp;#8217;t already got Apache installed, install&amp;nbsp;it:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;apache2&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Once that&amp;#8217;s finished, save the following as a text file called &lt;code&gt;duncanlock.test&lt;/code&gt; in &lt;code&gt;/etc/apache2/sites-available/&lt;/code&gt;:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;# domain: duncanlock.test
&amp;lt;VirtualHost *:80&amp;gt;
    # Admin email, Server Name (domain name) and any aliases
    ServerAdmin webmaster@duncanlock.test
    ServerName  duncanlock.test
    ServerAlias www.duncanlock.test

    # Index file and Document Root (where the public files are located)
    DirectoryIndex index.php index.html
    DocumentRoot /home/duncan/dev/duncanlock.net-pelican/output/
&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The really crucial bit of this is the &lt;code&gt;DocumentRoot&lt;/code&gt; - make sure this points to the &lt;code&gt;/output/&lt;/code&gt; folder of the Pelican site we just created - and use an absolute&amp;nbsp;path.&lt;/p&gt;
&lt;p&gt;Then add a mapping for the duncanlock.test domain to your &lt;code&gt;/etc/hosts&lt;/code&gt; file, by adding this line&amp;nbsp;somewhere:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;127.0.0.1  duncanlock.test&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then enable our new virtual host in&amp;nbsp;Apache:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;a2ensite duncanlock.test
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;service apache2 reload&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now visiting &lt;a href="http://duncanlock.test/"&gt;http://duncanlock.test/&lt;/a&gt; in a browser should show your local Pelican development&amp;nbsp;site.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_git"&gt;Git&lt;/h2&gt;&lt;p&gt;It&amp;#8217;s about time we started keeping some history of what we&amp;#8217;re doing, so we will add our work so far to &lt;code&gt;git&lt;/code&gt; &lt;a class="footnote-ref" href="#_footnote_9" id="_footnoteref_9" title="View footnote 9"&gt;[9]&lt;/a&gt; - a version control system that will keep a history of all our changes, allow easy backups and restore, moving between machines, rolling back changes - and &lt;em&gt;much&lt;/em&gt;&amp;nbsp;more.&lt;/p&gt;
&lt;p&gt;First, create a text file called &lt;code&gt;.gitignore&lt;/code&gt; in your website&amp;#8217;s root folder, containing&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;output/*
*.py[cod]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This tells git to ignore everything in the output folder, and any compiled python files - we don&amp;#8217;t need to version or backup that&amp;nbsp;stuff.&lt;/p&gt;
&lt;p&gt;Next, turn the current folder into a git repository and add our site so&amp;nbsp;far:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git init
&lt;span class="go"&gt;
Initialized empty Git repository in /home/duncan/dev/duncanlock.net-pelican/.git/

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git status
&lt;span class="go"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;On branch master
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Initial commit
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Changes to be committed:
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;use &lt;span class="s2"&gt;"git rm --cached &amp;lt;file&amp;gt;..."&lt;/span&gt; to unstage&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;new file:   .gitignore
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;new file:   Makefile
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;new file:   develop_server.sh
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;new file:   pelicanconf.py
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;new file:   publishconf.py
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;new file:   requirements.txt
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt;&lt;span class="s2"&gt;"Inital commit of duncanlock.net; quick start site with no changes, so far"&lt;/span&gt;
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git status
&lt;span class="go"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;On branch master
&lt;span class="go"&gt;nothing to commit, working directory clean&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;That&amp;#8217;s it - the site is now in git, ready to be backed up onto &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;, if you like. When you make changes, remember to do the following, so they&amp;#8217;re stored and versioned in&amp;nbsp;git:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt;&lt;span class="s2"&gt;"Description of the changes I made."&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;span class="caps"&gt;OK&lt;/span&gt;, that&amp;#8217;s it for part one - you should now have a working Pelican site, in a python virtual environment, being served by Apache via a VirtualHost on your local&amp;nbsp;machine.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_coming_up_in_part_2"&gt;Coming up in Part&amp;nbsp;2:&lt;/h2&gt;&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;Content creation&amp;nbsp;work-flow&lt;/li&gt;&lt;li&gt;Creating &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; customizing your&amp;nbsp;theme&lt;/li&gt;&lt;li&gt;Custom Jinja&amp;nbsp;filters&lt;/li&gt;&lt;li&gt;Configuring your Pelican site&lt;ul&gt;&lt;li&gt;Date based post URLs: &lt;code&gt;/blog/2013/05/03/post-title-goes-here/&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Plugins&lt;/li&gt;&lt;li&gt;Extra files to copy&amp;nbsp;over&lt;/li&gt;&lt;li&gt;Twitter&amp;nbsp;Cards&lt;/li&gt;&lt;li&gt;Favicons, sitemaps, Google&amp;nbsp;Analytics,&lt;/li&gt;&lt;li&gt;etc&amp;#8230;&amp;#8203;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Performance: Web assets - minifying &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; compressing things, professional Apache .htaccess&amp;nbsp;setup&lt;/li&gt;&lt;li&gt;Deploying your site to your&amp;nbsp;server&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;Once I&amp;#8217;ve finished part 2, I&amp;#8217;ll link it here. If you&amp;#8217;ve got any questions, please ask in the&amp;nbsp;comments.&lt;/p&gt;
&lt;hr /&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_footnotes_references"&gt;Footnotes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;References:&lt;/h3&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class="footnotes"&gt;&lt;hr /&gt;&lt;ol class="footnotes"&gt;&lt;li class="footnote" id="_footnote_1"&gt;*Markdown* is a text-to-&lt;span class="caps"&gt;HTML&lt;/span&gt; conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid &lt;span class="caps"&gt;XHTML&lt;/span&gt; (or &lt;span class="caps"&gt;HTML&lt;/span&gt;): &lt;a href="http://daringfireball.net/projects/markdown/"&gt;http://daringfireball.net/projects/markdown/&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_1" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_2"&gt;*reStructuredText* is an easy-to-read, what-you-see-is-what-you-get plain text mark-up syntax and parser system. It is useful for in-line program documentation (such as Python docstrings), for quickly creating simple web pages, and for standalone documents: &lt;a href="http://en.wikipedia.org/wiki/ReStructuredText"&gt;http://en.wikipedia.org/wiki/ReStructuredText&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_2" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_3"&gt;*AsciiDoc* is a text document format for writing notes, documentation, articles, books, ebooks, slideshows, web pages, man pages and blogs. AsciiDoc files can be translated to many formats including &lt;span class="caps"&gt;HTML&lt;/span&gt;, &lt;span class="caps"&gt;PDF&lt;/span&gt;, &lt;span class="caps"&gt;EPUB&lt;/span&gt;, man page: &lt;a href="http://www.methods.co.nz/asciidoc/"&gt;http://www.methods.co.nz/asciidoc/&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_3" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_4"&gt;*SublimeText* is currently my &lt;a href="http://www.sublimetext.com/"&gt;favourite text editor&lt;/a&gt; - it&amp;#8217;s really pretty great, you should try it. &lt;a class="footnote-backref" href="#_footnoteref_4" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_5"&gt;*Pip* is a package management system used to install and manage software packages written in the programming language Python. Many packages can be found in the Python Package Index (PyPI): &lt;a href="http://en.wikipedia.org/wiki/Pip_(Python"&gt;http://en.wikipedia.org/wiki/Pip_(Python&lt;/a&gt;) &lt;a class="footnote-backref" href="#_footnoteref_5" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_6"&gt;*virtualenv* is a tool to create isolated Python environments: &lt;a href="http://www.virtualenv.org/en/latest/"&gt;http://www.virtualenv.org/en/latest/&lt;/a&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; &lt;a href="http://www.clemesha.org/blog/modern-python-hacker-tools-virtualenv-fabric-pip/"&gt;http://www.clemesha.org/blog/modern-python-hacker-tools-virtualenv-fabric-pip/&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_6" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_7"&gt;*virtualenvwrapper* is a set of extensions to Ian Bicking&amp;#8217;s `virtualenv` tool. Includes wrappers for creating &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; deleting virtual environments and managing development workflow, making it easier to work on more than one project at a time without introducing conflicts in their dependencies. &lt;a href="http://virtualenvwrapper.readthedocs.org/en/latest/"&gt;http://virtualenvwrapper.readthedocs.org/en/latest/&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_7" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_8"&gt;The Apache Webserver can serve lots of different websites from the same server instance, on the same &lt;span class="caps"&gt;IP&lt;/span&gt; address. Virtual Hosts are the way it does this. You just give each one a name, a folder and a mapping in your /etc/hosts files and reload Apache. &lt;a class="footnote-backref" href="#_footnoteref_8" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_9"&gt;*Git* is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency: &lt;a href="http://git-scm.com/"&gt;http://git-scm.com/&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_9" title="Jump to the first occurrence in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Fri, 17 May 2013 20:08:27 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/05/17/how-i-built-this-website-using-pelican-part-1-setup/</guid></item><item><title>Office Space</title><link>https://olshansky.info/movie/office_space/</link><description>Olshansky's review of Office Space</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 17 May 2013 18:58:36 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/office_space/</guid></item><item><title>Snatch</title><link>https://olshansky.info/movie/snatch/</link><description>Olshansky's review of Snatch</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 17 May 2013 18:58:12 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/snatch/</guid></item><item><title>The Great Gatsby</title><link>https://olshansky.info/movie/the_great_gatsby/</link><description>Olshansky's review of The Great Gatsby</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 17 May 2013 18:27:13 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_great_gatsby/</guid></item><item><title>Iron Man 3</title><link>https://olshansky.info/movie/iron_man_3/</link><description>Olshansky's review of Iron Man 3</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 17 May 2013 18:26:58 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/iron_man_3/</guid></item><item><title>Forcing firefox to remember passwords</title><link>https://purpleidea.com/blog/2013/05/17/forcing-firefox-to-remember-passwords/</link><description>&lt;p&gt;There are a handful of websites out there that decide that they know better than your browser and tell it to not offer to save passwords. They do this by setting a form autocomplete attribute to &lt;em&gt;off&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Since we already agree that &lt;a href="https://github.com/tomerfiliba/rpyc/tree/master/demos/web8"&gt;HTML and the web are a terrible idea&lt;/a&gt;, hopefully we can find a way to hack around this. It turns out that I didn&amp;rsquo;t have to, because many others have solved this hack before me. The cleanest version I found is here: &lt;a href="http://www.howtogeek.com/62980/how-to-force-your-browser-to-remember-passwords/"&gt;&lt;a href="http://www.howtogeek.com/62980/how-to-force-your-browser-to-remember-passwords/"&gt;http://www.howtogeek.com/62980/how-to-force-your-browser-to-remember-passwords/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Fri, 17 May 2013 10:39:06 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/05/17/forcing-firefox-to-remember-passwords/</guid></item><item><title>Talk @ EmWare: Getting Started with Git</title><link>https://www.anmolsarma.in/post/talk-emware-getting-started-with-git/</link><description>&lt;p&gt;Gave an introductory interactive tutorial on using Git. I couldn&amp;rsquo;t finish the slides on time but managed cover everything on the agenda.&lt;/p&gt;
&lt;p&gt;Now that the talk is done, I&amp;rsquo;m don&amp;rsquo;t feel especially inclined to complete the slides.&lt;/p&gt;</description><author>Anmol Sarma</author><pubDate>Fri, 17 May 2013 09:30:00 GMT</pubDate><guid isPermaLink="true">https://www.anmolsarma.in/post/talk-emware-getting-started-with-git/</guid></item><item><title>You don't need to know me</title><link>https://blog.samuellevy.com/post/43-you-dont-need-to-know-me.html</link><description>&lt;p&gt;I was going to buy a book online today. A once-off purchase on a whim. I didn't buy it because the company selling it wanted to &amp;quot;get to know me&amp;quot;. This isn't a very interesting story, I know, but a point will be made.&lt;/p&gt;&lt;p&gt;The company insisted that I &lt;em&gt;had&lt;/em&gt; to create an account (although it already had my shipping details) to make the purchase. It was &lt;em&gt;vital&lt;/em&gt; that I didn't miss out on the features of an account; so vital that I couldn't &lt;em&gt;give them money&lt;/em&gt; until I had done it. The company &lt;em&gt;insisted&lt;/em&gt; that it needed to know my name, and my phone number, and my address, &lt;em&gt;and my date of birth&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;So I walked away.&lt;/p&gt;&lt;p&gt;This …&lt;/p&gt;</description><author>Sam says you should read this</author><pubDate>Fri, 17 May 2013 08:27:18 GMT</pubDate><guid isPermaLink="true">https://blog.samuellevy.com/post/43-you-dont-need-to-know-me.html</guid></item><item><title>Friends Don't Let Friends Shortrope</title><link>https://josh.works/friends-dont-let-friends-shortrope</link><description>&lt;p&gt;The first in a series about how to &lt;a href="https://josh.works/how-to-be-an-awesome-belayer"&gt;be a better belayer.&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="short-rope"&gt;Short rope&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;[shawrt-rohp] 
verb
The act of not giving sufficient rope to your climber.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Getting short roped is bad.&lt;/p&gt;

&lt;p&gt;It’s not necessarily dangerous, nor does it cause you to take a whip (it can, of course) but the real reason it’s bad is because it convinces your subconscious that you’re climbing with an untrustworthy belayer.&lt;/p&gt;

&lt;p&gt;The reasoning is simple - if you’re getting short roped, your belayer is either not paying attention, or not technically proficient. It’s not just annoying, it’s counter-productive.&lt;/p&gt;

&lt;p&gt;It would be unwise to push yourself when climbing with an inattentive or unskilled belayer.&lt;/p&gt;

&lt;p&gt;The good news is this: if your belayer actually wants to stop short roping you, there is an easy fix. (If your belayer doesn’t care about short roping you, stop climbing with them. Seriously.)&lt;/p&gt;

&lt;p&gt;First, when the climber is clipping, &lt;strong&gt;the belayer should step in towards the first bolt as they feed out slack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This simple action resolves most instances of short roping.&lt;/p&gt;

&lt;p&gt;Second, when the climber is clipping, &lt;strong&gt;the belayer needs to feed out a full arm length of slack without coming out of the break position.&lt;/strong&gt;&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Fri, 17 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/friends-dont-let-friends-shortrope</guid></item><item><title>Cyberbullying: how much does it change from country to country?</title><link>https://stop.zona-m.net/2013/05/cyberbullying-how-much-does-it-change-from-country-to-country/</link><description>&lt;p&gt;A while ago I asked Italian blogger &lt;a href="http://www.linkedin.com/in/francescasanzo"&gt;Francesca Sanzo&lt;/a&gt; if she was interested to meet via Skype, to exchange ideas. The result was, if I may say so, interesting in a much more general way than I had imagined. For clarity, I&amp;rsquo;ve reformatted and synthesized our talks in two parts: the first presents Francesca&amp;rsquo;s background and work. The second sums up her answers on cyberbullying, which impressed me because, even if I had sent the questions &lt;em&gt;weeks&lt;/em&gt; before, by &lt;strong&gt;pure chance&lt;/strong&gt; the actual conversation took place only hours after the Sandy Hook tragedy.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Thu, 16 May 2013 17:22:32 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/05/cyberbullying-how-much-does-it-change-from-country-to-country/</guid></item><item><title>Nintendo: Spin Attack or How They Win?</title><link>http://arthousecowboy.com/journal/2013/5/3/nintendo-spin-attack-or-how-they-win.html</link><description>&lt;p&gt;Moises writing about the three lingering problems plaguing Nintendo these days, and what he believes are the best solutions to those issues. In the last point under problem #2, &amp;#8220;Nintendo isn&amp;#8217;t simple anymore&amp;#8221;, Moises introduces a concept he discussed with Horace on the eighty-third episode of The Critical Path, &lt;a href="http://5by5.tv/criticalpath/83"&gt;&lt;em&gt;The Analyst Taxonomy&lt;/em&gt;&lt;/a&gt;: the idea of a &lt;a href="https://zacs.site/blog/the-8-bit-nintendo-phone.html"&gt;Nintendo phone&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;If Nintendo is actually serious about staying in hardware, they should be developing a phone. That the most profitable gaming platform (mobile phones) completely lacks Nintendo software is bizarre.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Their tablet platform already exists, and is attached to their set-top box. The same VirtualConsole-scale games could run on a phone with physical gameplay buttons, just as they do on the Wii U GamePad and the 3DS. They already make a mobile-scale OS, and have been doing so for years. Their classic games just don&amp;#8217;t work on phones that have no physical controls. If anyone can truly break through with a smart gamerphone, it would be Nintendo, but they show no interest whatsoever in this space.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Throughout the article Moises drew a number of parallels between Nintendo and Apple, culminating with the suggestion that Nintendo come out and an offering not unlike the Apple TV to close the piece. As I said in &lt;a href="https://zacs.site/blog/the-8-bit-nintendo-phone.html"&gt;&lt;em&gt;The 8-Bit Nintendo Phone&lt;/em&gt;&lt;/a&gt;, such a comparison is not only apt but also very appropriate given the similarities between the two. I can only hope that those similarities extend beyond Nintendo&amp;#8217;s aptitude for hardware and software creation to the ability to disrupt existing markets with revolutionary new products.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://arthousecowboy.com/journal/2013/5/3/nintendo-spin-attack-or-how-they-win.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 16 May 2013 14:50:18 GMT</pubDate><guid isPermaLink="true">http://arthousecowboy.com/journal/2013/5/3/nintendo-spin-attack-or-how-they-win.html</guid></item><item><title>Track IP Address using DD-WRT + CRON + WGET</title><link>https://thomashunter.name/posts/2013-05-16-track-ip-address-using-dd-wrt-cron-wget</link><author>Thomas Hunter II</author><pubDate>Thu, 16 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-05-16-track-ip-address-using-dd-wrt-cron-wget</guid></item><item><title>Jim Dalrymple Launches The Loop Magazine</title><link>http://www.macstories.net/news/jim-dalrymple-launches-the-loop-magazine/</link><description>&lt;p&gt;&amp;#8220;&amp;#8216;A tremendous amount of work has gone into every aspect of The Loop magazine from the fonts and design, to the writers I chose to be part of it. I want readers to enjoy every single article in a clean, ad-free environment. They should look forward to every issue because the experience was so good.&amp;#8217;&amp;#8221;&lt;/p&gt;

&lt;p&gt;Prior to last Thursday, The Magazine was the only item on my Newsstand bookshelf. Marco Arment finally has some company.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.macstories.net/news/jim-dalrymple-launches-the-loop-magazine/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 15 May 2013 17:27:55 GMT</pubDate><guid isPermaLink="true">http://www.macstories.net/news/jim-dalrymple-launches-the-loop-magazine/</guid></item><item><title>Revelation: I don't actually want to run a half marathon...</title><link>https://liza.io/revelation-i-dont-actually-want-to-run-a-half-marathon/</link><description>&lt;p&gt;Yestreday I realized that I don&amp;rsquo;t actually want to run a half marathon. It&amp;rsquo;s not like I &lt;em&gt;couldn&amp;rsquo;t&lt;/em&gt;, if I trained up for it. I&amp;rsquo;ve done the distance before. Heck, I even entered the City to Surf half marathon in Perth with every intention of running it until I broke my foot a couple of months before the race. And it&amp;rsquo;s not like I don&amp;rsquo;t think running a half marathon would be a great achievement. It&amp;rsquo;s just that I don&amp;rsquo;t really like running. There are people who talk about how much they love to run and how awesome it feels. I am not one of those people. To me anything after 1km is just boring. I can usually manage 5km without it feeling like too much of a drag, and 10km is pushing my limit. But anything over that is just so dull. For me, it feels awesome at the end - looking at your time and seeing how much you&amp;rsquo;ve improved or how far you&amp;rsquo;ve run. It&amp;rsquo;s a matter of balancing the lack of enjoyment I get &lt;em&gt;during&lt;/em&gt; the run with the enjoyment I get afterwards. And of course, afterwards, you remember the run as being great because the sense of completion makes it feel great. You conveniently forget that it was dull torture at the time - until the next run.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Wed, 15 May 2013 13:28:43 GMT</pubDate><guid isPermaLink="true">https://liza.io/revelation-i-dont-actually-want-to-run-a-half-marathon/</guid></item><item><title>Virtualbox and old Windows</title><link>https://ericonotes.blogspot.com/2013/05/virtualbox-and-old-windows.html</link><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIN4hqj4J2lk62sYDgW72e_fySpY9C6F7-CuSWDs5C1CJXoXJhxQ4XX1y7lsr2wIXq4uyYjexb3JsU6M0Mg-TDXfNR5eQp-_jmOTAOIabOQy-3BlZxa4bmzh_MNVbjzCWIAHMqomyJVdBP/s1600/oldcomputer.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIN4hqj4J2lk62sYDgW72e_fySpY9C6F7-CuSWDs5C1CJXoXJhxQ4XX1y7lsr2wIXq4uyYjexb3JsU6M0Mg-TDXfNR5eQp-_jmOTAOIabOQy-3BlZxa4bmzh_MNVbjzCWIAHMqomyJVdBP/s400/oldcomputer.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
I think it's always cool to once in a while boot your old computer inside your new one, just to keep track of the old stuff you've done.&lt;br /&gt;
&lt;br /&gt;
So here is a tip on how to run Windows XP for free inside Virtual Box.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b style="background-color: white;"&gt;Import Windows XP Mode into VirtualBox&lt;/b&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://tinyapps.org/blog/windows/201210210700_xp_mode_virtualbox.html" style="background-color: white;"&gt;#&lt;/a&gt;&lt;span style="background-color: white;"&gt;while maintaining product activation:&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;span style="background-color: white;"&gt;
&lt;li&gt;Download&amp;nbsp;&lt;a href="http://www.microsoft.com/windows/virtual-pc/download.aspx"&gt;Windows XP Mode&lt;/a&gt;&amp;nbsp;(WindowsXPMode_en-us.exe | MD5: bf3726d684d3acb98185665123c9efcf)&lt;/li&gt;
&lt;li&gt;Extract xpm from WindowsXPMode_en-us.exe with a file archiver like&amp;nbsp;&lt;a href="http://peazip.sourceforge.net/peazip-portable.html"&gt;PeaZip Portable&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Add .rar extension to xpm&lt;/li&gt;
&lt;li&gt;Extract VirtualXPVHD from xpm.rar&lt;/li&gt;
&lt;li&gt;Add .vdi extension to VirtualXPVHD&lt;/li&gt;
&lt;li&gt;Create new machine in VirtualBox, specifying VirtualXPVHD.vdi as the hard disk&lt;/li&gt;
&lt;li&gt;Once initial setup is complete, uninstall Virtual PC Integration Components from Add/Remove Control Panel&lt;/li&gt;
&lt;li&gt;Install Guest Additions (Devices &amp;gt; Install Guest Additions...)&lt;/li&gt;
&lt;li&gt;Shut down virtual machine&lt;/li&gt;
&lt;li&gt;Download pcbios.bin (MD5: 12ccdc652b30c6d1e307c6f7deff5d24)&amp;nbsp;&lt;a href="http://www.vmlite.com/index.php?option=com_kunena&amp;amp;Itemid=158&amp;amp;func=view&amp;amp;catid=9&amp;amp;id=6706&amp;amp;limit=6&amp;amp;limitstart=12#8420"&gt;from VMLite&lt;/a&gt;&amp;nbsp;and copy to a directory on host computer (e.g.,&amp;nbsp;&lt;tt&gt;C:\vm\&lt;/tt&gt;)&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;"C:\Program Files\Oracle\VirtualBox\VBoxMange.exe" setextradata&lt;/tt&gt;&amp;nbsp;&lt;i&gt;vm-name&lt;/i&gt;&amp;nbsp;&lt;tt&gt;"VBoxInternal/Devices/pcbios/0/Config/BiosRom" "c:\vm\pcbios.bin"&lt;/tt&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ol&gt;
&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div style="text-align: right;"&gt;
Got this step-by-step from here:&amp;nbsp;&lt;a href="http://tinyapps.org/blog/windows/201210210700_xp_mode_virtualbox.html"&gt;http://tinyapps.org/blog/windows/201210210700_xp_mode_virtualbox.html&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If your games start bugging, activate the Stretch after the Guest Addition installation, and everything will run fine.&lt;br /&gt;
&lt;br /&gt;
If you are looking onto Windows 3.11 and MS-DOS, well, just download those from the web and install them in a clean machine. On my case I couldn't get Windows 3.11 to auto boot after the installation, so when my machine start, I type &lt;span style="font-family: Courier New, Courier, monospace;"&gt;win [enter]&lt;/span&gt;.</description><author>Erico Notes</author><pubDate>Wed, 15 May 2013 04:18:55 GMT</pubDate><guid isPermaLink="true">https://ericonotes.blogspot.com/2013/05/virtualbox-and-old-windows.html</guid></item><item><title>Coursera</title><link>https://ericonotes.blogspot.com/2013/04/coursera.html</link><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQZxjkTyf8e49g5b0KL75T4kaw7SFIF6uPLqjraSK1VZh1mKKZL8YrToq2Dz447YPCH4HnlT6V7f7-QuGGVfwI32-hOnYQxT1L3p676ZblJf6rOk6bb75WvuXEmW6blRkjAavqffkIVkt2/s1600/coursera.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQZxjkTyf8e49g5b0KL75T4kaw7SFIF6uPLqjraSK1VZh1mKKZL8YrToq2Dz447YPCH4HnlT6V7f7-QuGGVfwI32-hOnYQxT1L3p676ZblJf6rOk6bb75WvuXEmW6blRkjAavqffkIVkt2/s400/coursera.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Today I enrolled for the &lt;a href="http://www.coursera.org/course/gamification"&gt;gamification&lt;/a&gt; course on &lt;a href="http://www.coursera.org/"&gt;Coursera&lt;/a&gt;. It's a regular course with homeworks and tests, the video lectures are awesome and I also bought the book already.&lt;br /&gt;
&lt;br /&gt;
Which also reminds me that I have a ton of things to write in here about some other books that I've already read on Kindle. I will let survival of the fittest decide which project will see daylight.&lt;br /&gt;
&lt;br /&gt;
So I leave this, from &lt;a href="http://www.amazon.com/Why-School-Information-Everywhere-ebook/dp/B00998J5YQ"&gt;Why School?: How Education Must Change When Learning and Information Are Everywhere (Kindle Single)&lt;/a&gt; by Will Richardson:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
One of the challenges I give the schools I work with is this: “How can you make sure that every student who walks on graduation day is well Googled by his or her full name?”&amp;nbsp;&lt;/blockquote&gt;
On a side, the gamification definition from the FTW book.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gamification&lt;/b&gt;: the use of game elements and game-design techniques in non-game contexts.</description><author>Erico Notes</author><pubDate>Wed, 15 May 2013 03:37:09 GMT</pubDate><guid isPermaLink="true">https://ericonotes.blogspot.com/2013/04/coursera.html</guid></item><item><title>Using GCALCLI to access Google Calendar</title><link>https://ericonotes.blogspot.com/2013/05/using-gcalcli-to-access-google-calendar.html</link><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPXt29-KHaLLc-ImT1brMefdTJtdut6UmJGOhRPbtNMrb2KRaMtgdI6glsETpYl2XxN3vMGrzx3ymNEpJlMkGCSKzS6-hVBJ2CoB81Mi45Am4_-nZ7xrLCuDZMxhMEMv1Ms9mUuM5wIlwa/s1600/gcalcli.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPXt29-KHaLLc-ImT1brMefdTJtdut6UmJGOhRPbtNMrb2KRaMtgdI6glsETpYl2XxN3vMGrzx3ymNEpJlMkGCSKzS6-hVBJ2CoB81Mi45Am4_-nZ7xrLCuDZMxhMEMv1Ms9mUuM5wIlwa/s400/gcalcli.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
So, I had a netbook lying around, an old ASUS SURF 4G, and thought "hey, it would be cool to look my calendar on this, and make a key hanger with it's screen". So I thought, ok, I will let the browser open in google calendar and run to the street to find something to build the key hanger. Unfortunately, my ASUS has only 4GB SSD HD, so right now it's loaded with a custom Gentoo that will never update, that I've built long ago. This custom Gentoo runs an old Opera Browser. And my Opera Browser can load everything, except Google Calendar.&lt;br /&gt;
&lt;br /&gt;
So I should just stop here and go outside walk on the beach... Nah, I HAVE to fix this. So how? Doing some Google Search I've discovered that there is a command line way of getting the calendar, using a python script called gcalcli. I have Python 2.7.1 already built into, so it's easy right? Uhm, wait, it depends on other things... Ok, no problem, just download everything with Pip. Oh, Pip is not Installed?&lt;br /&gt;
&lt;br /&gt;
Ok. Run this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code style="color: black;"&gt; curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py  
 python get-pip.py  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Then you need to get Google API Client for Python. Type this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code style="color: black;"&gt; pip install --upgrade google-api-python-client  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Now you need python-dateutil. Go pip:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code style="color: black;"&gt; pip install python-dateutil  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
and vobject and parsedatetime Python module. It's time for:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code style="color: black;"&gt; pip install vobject  
 pip install parsedatetime  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Ok, now you are prepared. Right now, all you need to do is download gcalcli:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code style="color: black;"&gt; curl -O https://raw.github.com/insanum/gcalcli/master/gcalcli  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
And if everything is fine, just make it executable:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code style="color: black;"&gt; chmod +x gcalcli  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Now you can run it.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code style="color: black;"&gt; ./gcalcli agenda  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Everything should be self-explanatory from here on. You can't validate the Oauth2 through &lt;span style="font-family: Courier New, Courier, monospace;"&gt;links &lt;/span&gt;because Google will ask for javascript before giving you the authentication code. With gcalcli you can do much more than just seeing your agenda. Have fun accessing Google Calendar from the command line.</description><author>Erico Notes</author><pubDate>Wed, 15 May 2013 03:00:10 GMT</pubDate><guid isPermaLink="true">https://ericonotes.blogspot.com/2013/05/using-gcalcli-to-access-google-calendar.html</guid></item><item><title>Feeling quiet...</title><link>http://localhost:4999/articles/2013/05/15/feeling-quiet/</link><description>&lt;p&gt;&lt;img alt="" src="https://images.evantravers.com/articles/2013/05/mt_cook.jpg" /&gt;&lt;/p&gt;&lt;p&gt;Sorry I have been dark for a while... I have recently returned from a marvelous trip to New Zealand for two weeks and have been spending a lot of time catching up and getting my discipline back in order. If you are interested in seeing pictures like the above one, you can check out a few of them &lt;a href="http://www.500px.com/evantravers/sets/new_zealand_trip"&gt;here&lt;/a&gt;. I'll try and continue to update, but I've fallen behind in editing and I'm thinking about switching back to &lt;a href="http://flickr.com/evantravers"&gt;flickr&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I haven't had the urge to tweet or blog recently because I have been doing a lot of journaling and personal writing these days. It's been refreshing to write for myself and not think about what others think... I highly recommend it. I will try to post more often. Since my short-term-thought-recording itch is being scratched by journaling I would like to post some more long form articles, yet they take too long to perfect. I just get caught up in tinkering with the blog's internals and don't post anything thoughtful.&lt;/p&gt;
&lt;p&gt;Well that's enough blogging about blogging. Hopefully I'll return soon with one of my half formed ideas I have in the queue.&lt;/p&gt;</description><author>trv.rs</author><pubDate>Wed, 15 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/05/15/feeling-quiet/</guid></item><item><title>Pushing it Out</title><link>https://zacs.site/blog/pushing-it-out.html</link><description>&lt;p&gt;I often start strong: I have an idea, direction, and inspiration; I know where I want to take this brand new piece and how I will get there. If I&amp;#8217;m lucky, that article will go live within a day or two of its inception; if not, well, that&amp;#8217;s when I have a problem.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/pushing-it-out.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 14 May 2013 23:46:49 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/pushing-it-out.html</guid></item><item><title>The Kentucky Derby Is Decadent and Depraved</title><link>http://www.grantland.com/story/_/id/7887639/looking-back-hunter-s-thompson-classic-story-kentucky-derby</link><description>&lt;p&gt;The director&amp;#8217;s cut of Hunter S. Thompson&amp;#8217;s sensational article about the Kentucky Derby, posted online along with a series of parentheticals and insights in to the time in which he wrote this seminal piece. What an outstanding writer.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.grantland.com/story/_/id/7887639/looking-back-hunter-s-thompson-classic-story-kentucky-derby"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 14 May 2013 18:46:10 GMT</pubDate><guid isPermaLink="true">http://www.grantland.com/story/_/id/7887639/looking-back-hunter-s-thompson-classic-story-kentucky-derby</guid></item><item><title>My Valiant Return to Reading</title><link>http://curiousrat.com/my-valiant-return-to-reading</link><description>&lt;p&gt;I stand by what I said yesterday when &lt;a href="https://zacs.site/blog/a-year-without-the-internet.html"&gt;I linked to&lt;/a&gt; the collection of Paul Miller&amp;#8217;s thirty-five dispatches from his year without the internet: he did something admirable and made quite a few interesting observations along the way. That said though, I found Harry Marks&amp;#8217;s parody piece, &lt;em&gt;My Valiant Return to Reading&lt;/em&gt;, absolutely hilarious.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://curiousrat.com/my-valiant-return-to-reading"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 14 May 2013 17:47:55 GMT</pubDate><guid isPermaLink="true">http://curiousrat.com/my-valiant-return-to-reading</guid></item><item><title>Printing Money</title><link>https://zacs.site/blog/printing-money.html</link><description>&lt;p&gt;The idea that one could earn a living through blogging, especially considering the relative infancy of the computing industry as a whole and the internet in particular, fascinates me. Twenty years ago, such an occupation did not exist; today, websites like &lt;a href="http://www.loopinsight.com/"&gt;The Loop&lt;/a&gt;, &lt;a href="http://www.marco.org"&gt;Marco.org&lt;/a&gt;, and &lt;a href="http://daringfireball.net"&gt;Daring Fireball&lt;/a&gt; attract hundreds of thousands of visitors each month, generating a steady and respectable cash flow for their respective authors Jim Dalrymple, Marco Arment, and John Gruber. When I started writing this article five months ago, before it fell through the cracks and was lost until just recently, The Loop attracted an average of 400,000 visitors every month and claimed an audience of more than 17,000 Twitter followers. Today, those numbers have jumped up to an average monthly audience of 1,230,000 and a Twitter following just shy of 31,000 between The Loop&amp;#8217;s own account and Jim Dalrymple&amp;#8217;s. As for Marco.org, five months ago the site engaged an audience of around 500,000 every month and a mere 1,500 people followed the associated Twitter account, whereas today the two mediums have increased to 600,000 and just over 5,500, respectively. Daring Fireball, impressively, boasted an amazing mean of 4,000,000 pageviews each month, which has increased to somewhere between four and five million since then, and a Twitter following of 43,500, up to 55,000 in recent months.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/printing-money.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 14 May 2013 14:36:04 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/printing-money.html</guid></item><item><title>Using UDF as an improved filesystem for USB Flash Drives</title><link>https://duncanlock.net/blog/2013/05/13/using-udf-as-an-improved-filesystem-for-usb-flash-drives/</link><description>&lt;p&gt;Ever tried to copy something onto a &lt;span class="caps"&gt;USB&lt;/span&gt; flash drive, only to discover that the file was too big to copy?&lt;/p&gt;
&lt;p&gt;This is because most &lt;span class="caps"&gt;USB&lt;/span&gt; Flash drives are formatted using the &lt;span class="caps"&gt;FAT32&lt;/span&gt;&lt;a class="footnote-ref" href="#_footnote_1" id="_footnoteref_1" title="View footnote 1"&gt;[1]&lt;/a&gt; filesystem - which only supports individual files up to 4 &lt;span class="caps"&gt;GB&lt;/span&gt; in size, no matter how much free space you’ve got. It also only supports drives up to 2 &lt;span class="caps"&gt;TB&lt;/span&gt;, can’t store symbolic links, can’t store files with these characters in the name: &lt;code&gt;"*/:&amp;lt;&amp;gt;?\|&lt;/code&gt; – and is generally pretty crappy.&lt;/p&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_the_solution_is_to_use_a_better_filesystem"&gt;The solution is to use a better filesystem&lt;/h2&gt;&lt;p&gt;There are &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_file_systems"&gt;many filesystems&lt;/a&gt; to choose from - but there are a few criteria that a good &lt;span class="caps"&gt;USB&lt;/span&gt; flash drive filesystem needs to meet which cut down the choices quite a bit:&lt;/p&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;&lt;li&gt;Compatible with every computer - just plug it in, and it should work&lt;/li&gt;&lt;li&gt;Has no permissions, or optional permissions, so you don’t need to be logged in as the same user everywhere you want to access the files&lt;/li&gt;&lt;li&gt;Can handle large files and volumes, special characters and is reliable - is a proper modern filesystem&lt;/li&gt;&lt;li&gt;Ideally, is an open standard, isn’t patent encumbered - or at the very least has a solid open implementation.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_a_better_filesystem_the_candidates"&gt;A better filesystem: The Candidates&lt;/h2&gt;&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all" style="width: 84%;"&gt;&lt;colgroup&gt;&lt;col style="width: 24%;" /&gt;&lt;col style="width: 21%;" /&gt;&lt;col style="width: 22%;" /&gt;&lt;col style="width: 14%;" /&gt;&lt;col style="width: 19%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Filesystem&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Compatible&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Permissions&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Modern(ish)&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Open(ish)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;ext2,3,4&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Linux&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✗&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;hfs+&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Linux, MacOS&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✗&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;(✓)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;exFAT&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;a class="footnote-ref" href="#_footnote_2" id="_footnoteref_2" title="View footnote 2"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✗&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;(✓)&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;(✓)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;ntfs&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;a class="footnote-ref" href="#_footnote_3" id="_footnoteref_3" title="View footnote 3"&gt;[3]&lt;/a&gt;&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✗&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;(✓)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;fat32&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✗&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;(✓)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;udf&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;So, the winner is…​ &lt;span class="caps"&gt;UDF&lt;/span&gt;&lt;a class="footnote-ref" href="#_footnote_4" id="_footnoteref_4" title="View footnote 4"&gt;[4]&lt;/a&gt;. This filesystem is mostly used for &lt;span class="caps"&gt;DVD&lt;/span&gt;’s - but supports full random access read/write storage, like any general purpose filesystem. Pretty much all &lt;span class="caps"&gt;OS&lt;/span&gt;’s can read &lt;span class="caps"&gt;DVD&lt;/span&gt;’s out of the box, and it supports large files and volumes. Every &lt;span class="caps"&gt;OS&lt;/span&gt; since Windows 95 can read &lt;span class="caps"&gt;UDF&lt;/span&gt; natively, and almost all of them can write to it too.&lt;/p&gt;
&lt;p&gt;The fly in the ointment, as usual, is older versions of Windows. Windows 95–2003 &lt;strong&gt;can’t write to &lt;span class="caps"&gt;UDF&lt;/span&gt; volumes natively&lt;/strong&gt; - you need extra 3rd party software. Windows Vista, 7 &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; 8 &lt;strong&gt;can&lt;/strong&gt; both read and write to &lt;span class="caps"&gt;UDF&lt;/span&gt; volumes, though. See &lt;a href="http://en.wikipedia.org/wiki/Universal_Disk_Format#Compatibility"&gt;here for a full list of &lt;span class="caps"&gt;OS&lt;/span&gt; compatibility&lt;/a&gt;. Microsoft are now calling &lt;span class="caps"&gt;UDF&lt;/span&gt; the ‘Live File System’&lt;a class="footnote-ref" href="#_footnote_5" id="_footnoteref_5" title="View footnote 5"&gt;[5]&lt;/a&gt; and are still assuming it’s just for &lt;span class="caps"&gt;DVD&lt;/span&gt;’s.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_formatting_your_usb_flash_drive_with_udf"&gt;Formatting your &lt;span class="caps"&gt;USB&lt;/span&gt; Flash Drive with &lt;span class="caps"&gt;UDF&lt;/span&gt;&lt;/h2&gt;&lt;aside class="admonition-block note"&gt;&lt;h6 class="block-title"&gt;&lt;span class="title-label"&gt;Note: &lt;/span&gt;Caution&lt;/h6&gt;&lt;p&gt;If you need to be able to write to your &lt;span class="caps"&gt;USB&lt;/span&gt; flash drive on older version of Windows, pre-Vista - &lt;strong&gt;then don’t do this&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Also, this will wipe &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; reformat your &lt;span class="caps"&gt;USB&lt;/span&gt; flash drive, so backup anything you want to keep on another drive first.&lt;/p&gt;&lt;/aside&gt;
&lt;p&gt;To format your &lt;span class="caps"&gt;USB&lt;/span&gt; Flash drive using &lt;span class="caps"&gt;UDF&lt;/span&gt;, you need to do the following:&lt;/p&gt;
&lt;p&gt;You’ll probably need to install &lt;code&gt;udftools&lt;/code&gt; first:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;udftools&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;then wipe the existing partition table, to prevent the drive being detected as &lt;span class="caps"&gt;FAT&lt;/span&gt;. Assuming your &lt;span class="caps"&gt;USB&lt;/span&gt; drive is &lt;code&gt;/dev/sdi&lt;/code&gt;:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo dd &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/zero &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/sdi &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1M &lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then format it as &lt;span class="caps"&gt;UDF&lt;/span&gt;:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;mkudffs &lt;span class="nt"&gt;-b&lt;/span&gt; 512 &lt;span class="nt"&gt;--media-type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;hd &lt;span class="nt"&gt;--utf8&lt;/span&gt; &lt;span class="nt"&gt;--lvid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DriveLabel &lt;span class="nt"&gt;--vid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DriveLabel &lt;span class="nt"&gt;--fsid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DriveLabel  /dev/sdi&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Change &lt;code&gt;DriveLabel&lt;/code&gt; to whatever you want to drive to be called. Linux doesn’t seem to take any notice of this, but apparently windows displays &lt;code&gt;lvid&lt;/code&gt; as the drive label.&lt;/p&gt;
&lt;p&gt;If you need out of the box compatibility back to Windows 95, you can add this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="go"&gt;--udfrev=0x0102&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;otherwise you’ll get Windows &lt;span class="caps"&gt;XP&lt;/span&gt; and up &lt;a class="footnote-ref" href="#_footnote_6" id="_footnoteref_6" title="View footnote 6"&gt;[6]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;-b 512&lt;/code&gt; parameter forces a file system block size equal to the &lt;span class="caps"&gt;USB&lt;/span&gt; stick’s physical block size - as required by the &lt;span class="caps"&gt;UDF&lt;/span&gt; specification. It’ll &lt;em&gt;probably&lt;/em&gt; work without this, but it’s a good idea to set this to ensure maximum compatibility &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; reliability. Change the &lt;code&gt;512&lt;/code&gt; if you’re lucky enough to have a &lt;span class="caps"&gt;USB&lt;/span&gt; flash drive with a larger block size. To find out what the physical block size is, run this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;hdparm &lt;span class="nt"&gt;-I&lt;/span&gt; /dev/sdi | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; physical
&lt;span class="c"&gt;...
&lt;/span&gt;&lt;span class="go"&gt;Logical/Physical Sector size:           512 bytes&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This worked well for me on Xubuntu Linux: the performance is good, I was able to copy some virtual machines from one computer to another - a total of 11.5 &lt;span class="caps"&gt;GB&lt;/span&gt; of files, with individual files up to 6.5 &lt;span class="caps"&gt;GB&lt;/span&gt; each - without any problems.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tanguy.ortolo.eu/blog/article93/usb-udf#c1359985488-1"&gt;There are some Mac instructions here&lt;/a&gt; which I haven’t tried — and I have &lt;em&gt;no idea&lt;/em&gt; how you do this on Windows; let me know in the comments if you do.&lt;/p&gt;
&lt;hr /&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_footnotes_references"&gt;Footnotes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; References:&lt;/h3&gt;&lt;p&gt;I owe most of this to &lt;a href="http://tanguy.ortolo.eu/blog/article93/usb-udf"&gt;Tanguy Ortolo’s excellent blog post which you can find here&lt;/a&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; this &lt;a href="https://bbs.archlinux.org/viewtopic.php?pid=1030147"&gt;Arch linux forum post&lt;/a&gt;.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class="footnotes"&gt;&lt;hr /&gt;&lt;ol class="footnotes"&gt;&lt;li class="footnote" id="_footnote_1"&gt;&lt;strong&gt;&lt;span class="caps"&gt;FAT32&lt;/span&gt;&lt;/strong&gt; - File Allocation Table (&lt;span class="caps"&gt;FAT&lt;/span&gt;) is the name of a computer file system architecture and a family of proprietary file systems utilizing it: &lt;a class="bare" href="http://en.wikipedia.org/wiki/FAT32#FAT32"&gt;http://en.wikipedia.org/wiki/&lt;span class="caps"&gt;FAT32&lt;/span&gt;#&lt;span class="caps"&gt;FAT32&lt;/span&gt;&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_1" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_2"&gt;For Linux, this isn’t included in the kernel, as it’s proprietary. You need to install &lt;code&gt;exfat-fuse&lt;/code&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; &lt;code&gt;exfat-utils&lt;/code&gt; for this to work. &lt;a class="footnote-backref" href="#_footnoteref_2" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_3"&gt;For Linux, this isn’t included in the kernel, as it’s proprietary. You need to install &lt;code&gt;ntfs-3g&lt;/code&gt; for this to work &lt;a class="footnote-backref" href="#_footnoteref_3" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_4"&gt;&lt;strong&gt;Universal Disk Format (&lt;span class="caps"&gt;UDF&lt;/span&gt;)&lt;/strong&gt; - is a profile of the specification known as &lt;span class="caps"&gt;ISO&lt;/span&gt;/&lt;span class="caps"&gt;IEC&lt;/span&gt; 13346 and &lt;span class="caps"&gt;ECMA&lt;/span&gt;-167 and is an open vendor-neutral file system for computer data storage for a broad range of media: &lt;a class="bare" href="http://en.wikipedia.org/wiki/Universal_Disk_Format"&gt;http://en.wikipedia.org/wiki/Universal_Disk_Format&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_4" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_5"&gt;&lt;strong&gt;Which &lt;span class="caps"&gt;CD&lt;/span&gt; or &lt;span class="caps"&gt;DVD&lt;/span&gt; format should I use?&lt;/strong&gt;: &lt;a class="bare" href="http://windows.microsoft.com/en-us/windows-vista/which-cd-or-dvd-format-should-i-use"&gt;http://windows.microsoft.com/en-us/windows-vista/which-cd-or-dvd-format-should-i-use&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_5" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li class="footnote" id="_footnote_6"&gt;&lt;strong&gt;&lt;span class="caps"&gt;UDF&lt;/span&gt; has Multiple revisions&lt;/strong&gt;: &lt;a class="bare" href="http://en.wikipedia.org/wiki/Universal_Disk_Format#Revisions"&gt;http://en.wikipedia.org/wiki/Universal_Disk_Format#Revisions&lt;/a&gt; &lt;a class="footnote-backref" href="#_footnoteref_6" title="Jump to the first occurrence in the text"&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Tue, 14 May 2013 05:48:22 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/05/13/using-udf-as-an-improved-filesystem-for-usb-flash-drives/</guid></item><item><title>Overriding attributes of collected exported resources</title><link>https://purpleidea.com/blog/2013/05/14/overriding-attributes-of-collected-exported-resources/</link><description>&lt;p&gt;This post is about a particularly elegant (and crucial) feature in &lt;a href="https://en.wikipedia.org/wiki/Puppet_%28software%29"&gt;puppet&lt;/a&gt; &lt;a href="http://docs.puppetlabs.com/guides/exported_resources.html"&gt;exported resources&lt;/a&gt;: &lt;span style="text-decoration: underline;"&gt;attribute overriding&lt;/span&gt;. If you&amp;rsquo;re not already familiar with exported resources, you should start there, as they are &lt;em&gt;the&lt;/em&gt; killer feature that makes configuration management with puppet awesome. (I haven&amp;rsquo;t found any explicit docs about this feature either, so feel free to comment if you know where they&amp;rsquo;re hidden.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Setup&lt;/span&gt;:&lt;/strong&gt; I&amp;rsquo;ve got a virtual machine which exports a resource to &lt;em&gt;N&lt;/em&gt; different nodes. I&amp;rsquo;d like to define the resource with just one exported (&lt;em&gt;@@&lt;/em&gt;) definition on my virtual machine.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 14 May 2013 04:41:23 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/05/14/overriding-attributes-of-collected-exported-resources/</guid></item><item><title>Sito ufficiale e blog per il progetto Eve</title><link>https://nicolaiarocci.com/sito-ufficiale-e-blog-per-il-progetto-eve/</link><description>&lt;p&gt;E’ passato qualche mese da quando ho &lt;a href="http://nicolaiarocci.com/vi-presento-eve-il-framework-per-lanciare-la-vostra-rest-api-web/" title="Annuncio di Eve"&gt;annunciato&lt;/a&gt; Eve, il REST API framework open source. Nel frattempo il progetto è cresciuto bene: siamo appena giunti alla &lt;a href="http://blog.python-eve.org/eve-006-released" title="Eve 0.0.6"&gt;versione 0.0.6&lt;/a&gt;, abbiamo un &lt;a href="http://python-eve.org" title="Eve REST API homepage"&gt;sito ufficiale&lt;/a&gt;, un &lt;a href="http://blog.python-eve.org" title="Eve News"&gt;blog&lt;/a&gt;, e stiamo lavorando a nuove feature &lt;a href="http://blog.python-eve.org/sqlalchemy-and-eve" title="SqlAlchemy and Eve"&gt;davvero interessanti&lt;/a&gt;.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 14 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/sito-ufficiale-e-blog-per-il-progetto-eve/</guid></item><item><title>A Year Without the Internet</title><link>https://zacs.site/blog/a-year-without-the-internet.html</link><description>&lt;p&gt;Over the year he spent without the internet, Paul Miller wrote &lt;a href="http://www.theverge.com/2012/5/8/3007525/paul-miller-offline"&gt;thirty-five articles&lt;/a&gt; for The Verge. I have only gotten to a few of these dispatches so far, but I already added the rest to my Instapaper queue. This isn&amp;#8217;t &lt;em&gt;just&lt;/em&gt; a story about a guy who got tired of the internet; it&amp;#8217;s a story about a guy who got tired of the internet, an interesting story about a guy who did something about it, and a moving story about how that decision effected his life. It would be impossible for me to praise this venture enough to give Paul Miller the credit he is due, so just go and read about it. Start with the first post, aptly titled &lt;a href="http://www.theverge.com/2012/4/30/2988798/paul-miller-year-without-internet/in/2771566"&gt;&lt;em&gt;I&amp;#8217;m leaving the internet for a year&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/a-year-without-the-internet.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 13 May 2013 19:30:52 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/a-year-without-the-internet.html</guid></item><item><title>Building a Lisp to Javascript compiler</title><link>https://honza.pokorny.ca/2013/05/building-a-lisp-to-javascript-compiler/</link><description>&lt;p&gt;In this post, I&amp;rsquo;m going to show you how I made a Lisp to Javascript compiler. I
really enjoy programming in Clojure but have often thought that the JVM isn&amp;rsquo;t
always the best platform for scripts due to the slow JVM start-up. So, I
decided to implement a simple version of Clojure that compiles to Javascript
and can be run on top of nodejs.&lt;/p&gt;
&lt;p&gt;Compilers are notoriously hard to understand and therefore make for great
mind-bending exercises.  Exactly my idea of weekend fun.&lt;/p&gt;
&lt;h2 id="what-we-are-going-to-do"&gt;What we are going to do&lt;/h2&gt;
&lt;p&gt;There are tons of Lisp to Javascript compilers out there.  What makes mine
special?  I&amp;rsquo;m using a PEG grammar to parse the source code.  Once it&amp;rsquo;s parsed,
I turn the result into a &lt;a href="https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API"&gt;Parser API&lt;/a&gt; compatible AST.  The AST is then passed
to &lt;a href="https://github.com/Constellation/escodegen"&gt;escodegen&lt;/a&gt; which turns it into well-formatted Javascript.&lt;/p&gt;
&lt;p&gt;This is great because I don&amp;rsquo;t have to worry about the particulars of Javascript
syntax.  Escodegen takes care of inserting semicolons where appropriate, etc.
and everything looks clean and consistent.  It&amp;rsquo;s nice because the parsing is
decoupled from the source code emission.  You can completely remove the
Javascript generation part and use some other software to do that.&lt;/p&gt;
&lt;h2 id="lisp-basics"&gt;Lisp basics&lt;/h2&gt;
&lt;p&gt;If you are familiar with Lisp, you can skip this section.&lt;/p&gt;
&lt;p&gt;Lisp source code is made up of s-expressions.  An s-expression is a list whose
first element is a function and the rest are the arguments to that function.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-clojure"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #88c0d0;"&gt;greet&lt;/span&gt; &lt;span style="color: #a3be8c;"&gt;"honza"&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is a list with two items.  &lt;code&gt;greet&lt;/code&gt; is the name of the function and
&lt;code&gt;&amp;quot;honza&amp;quot;&lt;/code&gt; is the argument.  In other languages, this might be represented as
&lt;code&gt;greet(&amp;quot;honza&amp;quot;)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Lisp uses s-expressions for everything, including function definitions, if
statements, assignments, binary expressions, etc.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-clojure"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;def &lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;name &lt;/span&gt;&lt;span style="color: #a3be8c;"&gt;"honza"&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #616e87; font-style: italic;"&gt;;; define a variable "name" and assign "honza" to it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;+ &lt;/span&gt;&lt;span style="color: #b48ead;"&gt;1&lt;/span&gt; &lt;span style="color: #b48ead;"&gt;2&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;            &lt;span style="color: #616e87; font-style: italic;"&gt;;; add 1 and 2 and return the result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #616e87; font-style: italic;"&gt;;; If the name variable is equal to "honza", print "hey honza", otherwise,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #616e87; font-style: italic;"&gt;;; just print "hey stranger".&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;if &lt;/span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;= name &lt;/span&gt;&lt;span style="color: #a3be8c;"&gt;"honza"&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;print &lt;/span&gt;&lt;span style="color: #a3be8c;"&gt;"hey honza"&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;print &lt;/span&gt;&lt;span style="color: #a3be8c;"&gt;"hey stranger"&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #616e87; font-style: italic;"&gt;;; Function definition; it takes one parameter called "name".&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;def &lt;/span&gt;greet
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;fn &lt;/span&gt;&lt;span style="color: #eceff4;"&gt;[&lt;/span&gt;name&lt;span style="color: #eceff4;"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;println &lt;/span&gt;&lt;span style="color: #a3be8c;"&gt;"hello"&lt;/span&gt; name&lt;span style="color: #eceff4;"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In Lisp, a function body can have multiple s-expression but only the last one
is returned.  There is no &lt;code&gt;return&lt;/code&gt; keyword in Lisp.  Binary operators and
things like the &lt;code&gt;if&lt;/code&gt; keyword are actually functions that return values.&lt;/p&gt;
&lt;h2 id="the-mighty-peg"&gt;The mighty PEG&lt;/h2&gt;
&lt;p&gt;Every PEG grammar starts with the &lt;code&gt;program&lt;/code&gt; directive.  This is where the
parser will start parsing.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;program
  = s:sexp+ "\n"*  { return {
      type: 'Program',
      body: s
  };}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A Lisp program consists of one or more s-expressions, optionally followed by a
newline.  The list of one or more s-expressions is stored in the variable
&lt;code&gt;s&lt;/code&gt;.  We then return a Javascript object with two properties: &lt;code&gt;type&lt;/code&gt; and
&lt;code&gt;body&lt;/code&gt;.  Since we are at the top level, we return it as a type of
&lt;code&gt;Program&lt;/code&gt;, and our body will be made up of the matched s-expressions.  The
syntax is a little weird at first but you get used to it.  Fairly simple stuff.&lt;/p&gt;
&lt;p&gt;If you tried to compile this grammar into a parser, it would fail because we
didn&amp;rsquo;t tell it what an s-expression looks like.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;sexp
  = _ a:atom _ { return a; }
  / _ l:list _ { return l; }
  / _ v:vector _ { return v; }
  / _ o:object _ { return o; }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;OK, so an s-expression is either an atom, a list, a vector or an object.  Each
of these can be preceded and followed by any amount of whitespace.  Cool,
that&amp;rsquo;s simple enough.  Except now we have to define what all those things are.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start with the atom:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;atom
  = d:[0-9]+ _ { return {type: 'Literal', value: numberify(d)}; }
  / '"' d:(!'"' sourcechar)* '"' _ { return {type: 'Literal', value: makeStr(d) }}
  / s:[-+/\*_&amp;lt;&amp;gt;=a-zA-Z\.!]+ _ { return {type: 'Identifier', name: s.join("")};}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So, an atom can be a list of one or more digits, a string or a valid
identifier.  In the digit directive, you will notice that we are assigning the
number to the &lt;code&gt;d&lt;/code&gt; variable.  This will contain a list of all of the matched
numbers.  We then concatenate them and parse them into an integer.  That&amp;rsquo;s what
the &lt;code&gt;numberify&lt;/code&gt; function does.  A number or a string is a literal value so we
return it as such.  An identifier is a variable name, so we return it as such,
too.&lt;/p&gt;
&lt;p&gt;Next up, vectors and objects:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;vector
  = "[]" { return {type: 'ArrayExpression', elements: []}; }
  / _ "[" _ a:atom+ _ "]" _ { return {type: 'ArrayExpression', elements: a};}
  / _ "[" _ o:object+ _ "]" _ { return {type: 'ArrayExpression', elements: o};}

object
  = "{}" { return {type: 'ObjectExpression', properties: []}; }
  / _ "{" _ a:atom+ _ "}" _ { return makeObject(a); }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Continuing in the same vein, a vector is either an empty array, an array with
at least one atom in it, or an array with at least one object in it.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;makeObject&lt;/code&gt; function will take a pair by pair from the array and take
the first item in the pair and turn it into an object key and set as its value
to the second item in the pair.  If the number of elements in the array isn&amp;rsquo;t
divisible by 2, it will yell at you.&lt;/p&gt;
&lt;p&gt;Next up, lists.  Now, lists are special because the first item is the name of a
function.  This gives us the opportunity to define some built-in functions that
would otherwise be really tricky to define.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;list
  = "()" { return []; }
  /  _ "(" _ s:sexp+ _ ")" _ {
    if (first(s).name === 'def') {
      return {
        type: 'VariableDeclaration',
        declarations: [{
          type: 'VariableDeclarator',
          id: s[1],
          init: s[2].expression? s[2].expression : s[2]
        }],
        kind: 'var'
      };
    }

    if (first(s).name === 'fn') {
      return {
        type: 'FunctionExpression',
        id: null,
        params: s[1].elements ? s[1].elements : s[1],
        body: {
          type: 'BlockStatement',
          body: init(rest(rest((s)))).concat(returnStatement(last(rest(s))))
        }
      };
    }

    if (Object.keys(builtins).indexOf(first(s).name) &amp;gt; -1) {
      return builtins[first(s).name](rest(s));
    }

    return processCallExpression(s);

  }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;OK, there is quite a bit here, so let&amp;rsquo;s step through it.  A list can be&lt;/p&gt;
&lt;h3 id="an-empty-list"&gt;an empty list&lt;/h3&gt;
&lt;h3 id="a-list-of-at-least-one-s-expression"&gt;a list of at least one s-expression&lt;/h3&gt;
&lt;p&gt;If it&amp;rsquo;s an empty list, we just return an empty array.  If it&amp;rsquo;s a list of
s-expressions, we check for other things.  We look at the first element and see
what its name is.  It can be either:&lt;/p&gt;
&lt;h3 id="def-variable-declaration"&gt;&lt;code&gt;def&lt;/code&gt; - variable declaration&lt;/h3&gt;
&lt;h3 id="fn-an-anonymous-function"&gt;&lt;code&gt;fn&lt;/code&gt; - an anonymous function&lt;/h3&gt;
&lt;h3 id="a-built-in-function--if-plus-list-etc-dot"&gt;a built-in function (&lt;code&gt;if&lt;/code&gt;, &lt;code&gt;+&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, etc.)&lt;/h3&gt;
&lt;h3 id="other-function--user-defined"&gt;other function (user defined)&lt;/h3&gt;
&lt;p&gt;The only thing left is the definition of whitespace&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;_
  = [\n, ]*
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Zero or more of the following characters: newline, comma and space.&lt;/p&gt;
&lt;h2 id="obstacles"&gt;Obstacles&lt;/h2&gt;
&lt;p&gt;When converting the parsed source code to the Parser API tree, I hit a few
obstacles.  It turns out that Lisp and Javascript don&amp;rsquo;t map perfectly to each
other and therefore some post-processing is needed.&lt;/p&gt;
&lt;h3 id="statement-vs-expression"&gt;Statement vs expression&lt;/h3&gt;
&lt;p&gt;In Lisp, everything is an expression.  In Javascript, there are both
expressions and statements.  The hardest part is the fact that a function call
can be both a statement and an expression depending on how it&amp;rsquo;s used.  So you
can&amp;rsquo;t represent it the same way every time.&lt;/p&gt;
&lt;p&gt;I wrote a function that takes a list which represents an s-expression (the
first element is a function call, the rest are the parameters).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-javascript"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;function&lt;/span&gt; processCallExpression&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;s&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #81a1c1; font-weight: bold;"&gt;var&lt;/span&gt; callee &lt;span style="color: #81a1c1;"&gt;=&lt;/span&gt; first&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;s&lt;span style="color: #eceff4;"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;      args &lt;span style="color: #81a1c1;"&gt;=&lt;/span&gt; rest&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;s&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  args &lt;span style="color: #81a1c1;"&gt;=&lt;/span&gt; map&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;s&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;s&lt;span style="color: #eceff4;"&gt;.&lt;/span&gt;expression &lt;span style="color: #81a1c1;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; s&lt;span style="color: #eceff4;"&gt;.&lt;/span&gt;expression&lt;span style="color: #eceff4;"&gt;.&lt;/span&gt;type &lt;span style="color: #81a1c1;"&gt;===&lt;/span&gt; &lt;span style="color: #a3be8c;"&gt;'CallExpression'&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;      &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; s&lt;span style="color: #eceff4;"&gt;.&lt;/span&gt;expression&lt;span style="color: #eceff4;"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #eceff4;"&gt;}&lt;/span&gt; &lt;span style="color: #81a1c1; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;      &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; s&lt;span style="color: #eceff4;"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #eceff4;"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #eceff4;"&gt;},&lt;/span&gt; args&lt;span style="color: #eceff4;"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    type&lt;span style="color: #81a1c1;"&gt;:&lt;/span&gt; &lt;span style="color: #a3be8c;"&gt;'ExpressionStatement'&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    expression&lt;span style="color: #81a1c1;"&gt;:&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;      type&lt;span style="color: #81a1c1;"&gt;:&lt;/span&gt; &lt;span style="color: #a3be8c;"&gt;'CallExpression'&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;      callee&lt;span style="color: #81a1c1;"&gt;:&lt;/span&gt; callee&lt;span style="color: #eceff4;"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;      &lt;span style="color: #a3be8c;"&gt;'arguments'&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;:&lt;/span&gt; args
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #eceff4;"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #eceff4;"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will check if any of the arguments passed to the function are also
function calls.  If it&amp;rsquo;s a nested function call, it&amp;rsquo;s placed in the AST as a
&lt;code&gt;CallExpression&lt;/code&gt;, otherwise it&amp;rsquo;s a &lt;code&gt;CallExpression&lt;/code&gt; inside a
&lt;code&gt;ExpressionStatement&lt;/code&gt;.  The PEG parser can&amp;rsquo;t detect this because it&amp;rsquo;s context
free - each node only knows about itself.&lt;/p&gt;
&lt;h3 id="implicit-return"&gt;Implicit return&lt;/h3&gt;
&lt;p&gt;In Lisp, the last s-expression in a function&amp;rsquo;s body is implicitly returned.
You don&amp;rsquo;t need to denote this with a return statement, it&amp;rsquo;s built-in.  Again,
we need to do some more processing.  If we are processing a function
declaration, we need to check its body and wrap the last expression in a
&lt;code&gt;ReturnStatement&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="if-is-an-expression-in-lisp"&gt;If is an expression in Lisp&lt;/h3&gt;
&lt;p&gt;The if statement in Lisp is an expression, just like a function call or
anything else.  This means that the expression in any of the two branches is
effectively returned to the caller.  This means that we need to add an extra
wrapper around the statement and wrap each of the branch-expressions in a
return statement.&lt;/p&gt;
&lt;p&gt;Like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-javascript"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #616e87; font-style: italic;"&gt;// this
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #616e87; font-style: italic;"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;n &lt;span style="color: #81a1c1;"&gt;===&lt;/span&gt; &lt;span style="color: #b48ead;"&gt;0&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #a3be8c;"&gt;"it's zero"&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;}&lt;/span&gt; &lt;span style="color: #81a1c1; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #a3be8c;"&gt;"it's more than zero"&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #616e87; font-style: italic;"&gt;// becomes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #616e87; font-style: italic;"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;()&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #81a1c1; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;n &lt;span style="color: #81a1c1;"&gt;===&lt;/span&gt; &lt;span style="color: #b48ead;"&gt;0&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #a3be8c;"&gt;"it's zero"&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #eceff4;"&gt;}&lt;/span&gt; &lt;span style="color: #81a1c1; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #a3be8c;"&gt;"it's more than zero"&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #eceff4;"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;})();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="standard-library"&gt;Standard library&lt;/h2&gt;
&lt;p&gt;A lisp would be no fun without some fun functional programming functions.  I
have started working on a standard library for our lisp.  It lives in a file
called &lt;code&gt;lib.js&lt;/code&gt;.  This file includes functions that are accessible from any
program that you write.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-javascript"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;function&lt;/span&gt; nth&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;list&lt;span style="color: #eceff4;"&gt;,&lt;/span&gt; n&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;list&lt;span style="color: #eceff4;"&gt;.&lt;/span&gt;length &lt;span style="color: #81a1c1;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; list&lt;span style="color: #eceff4;"&gt;.&lt;/span&gt;length &lt;span style="color: #81a1c1;"&gt;+&lt;/span&gt; &lt;span style="color: #b48ead;"&gt;1&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;&amp;lt;&lt;/span&gt; n&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;        &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #81a1c1; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #eceff4;"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; list&lt;span style="color: #eceff4;"&gt;[&lt;/span&gt;n&lt;span style="color: #eceff4;"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;function&lt;/span&gt; first&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;list&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #eceff4;"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1; font-weight: bold;"&gt;return&lt;/span&gt; nth&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;list&lt;span style="color: #eceff4;"&gt;,&lt;/span&gt; &lt;span style="color: #b48ead;"&gt;0&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And much more.&lt;/p&gt;
&lt;h2 id="putting-it-all-together"&gt;Putting it all together&lt;/h2&gt;
&lt;p&gt;Here is how it all comes together:&lt;/p&gt;
&lt;h3 id="use-peg-dot-js-to-compile-the-grammar-into-a-parser"&gt;Use peg.js to compile the grammar into a parser&lt;/h3&gt;
&lt;h3 id="take-the-parser-and-append-to-it-the-compiler-program"&gt;Take the parser and append to it the compiler program&lt;/h3&gt;
&lt;p&gt;The compiler program is the command line utility that decides how your program
should be compiled, it parsers CLI flags, etc.  It can return the AST instead
of Javascript, it can uglify the resulting Javascript, etc.&lt;/p&gt;
&lt;p&gt;You can use the result like so&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil"&gt;$ ./inertia sample.clj
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And it will print the resulting Javascript to stdout.  What the compiler
program will also do is prepend the compiled Javascript with the standard
library.  It simply reads the standard library code from the &lt;code&gt;lib.js&lt;/code&gt; file
and prepends it.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This has certainly been a fun exercise for me.  You can check out the finished
product on &lt;a href="https://github.com/honza/inertia"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Mon, 13 May 2013 13:14:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/05/building-a-lisp-to-javascript-compiler/</guid></item><item><title>Safely Parse Complex Objects and Arrays in PHP</title><link>https://thomashunter.name/posts/2013-05-13-safely-parse-complex-objects-and-arrays-in-php</link><author>Thomas Hunter II</author><pubDate>Mon, 13 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-05-13-safely-parse-complex-objects-and-arrays-in-php</guid></item><item><title>Mothers day hacks</title><link>https://purpleidea.com/blog/2013/05/12/mothers-day-hacks/</link><description>&lt;p&gt;Firstly Happy Mother&amp;rsquo;s day to my mother.&lt;/p&gt;
&lt;p&gt;Google is, as usual, busily releasing &lt;a href="http://www.google.com/doodles/"&gt;doodles&lt;/a&gt;. Today, the doodle takes you through a &lt;a href="https://en.wikipedia.org/wiki/Rube_Goldberg"&gt;Rube Goldberg&lt;/a&gt; -esque sequence, giving you four decisions to make along the way. Each decision gives you one of three different choices, and at the end, a unique drawing is displayed. I expect:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;3 * 3 * 3 * 3 = 81
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;different permutations. At the end of the process, you can print your image. I got directed to:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sun, 12 May 2013 10:32:45 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/05/12/mothers-day-hacks/</guid></item><item><title>How to be an awesome belayer</title><link>https://josh.works/climbing/2013/05/12/how-to-be-an-awesome-belayer/</link><description>&lt;p&gt;For the next few posts I am going to geek out on sport climbing. If you’re not a climber (or a sport climber), these are not for you. All of this information is in the context of sport climbing on trustworthy protection - not trad climbing!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://josh.works/climbing-in-decking-range"&gt;How to belay when your climber is in decking range&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://josh.works/friends-dont-let-friends-shortrope"&gt;Don’t shortrope your climber&lt;/a&gt;&lt;/p&gt;

&lt;h1 id="how-to-be-an-awesome-belayer"&gt;How to be an awesome belayer&lt;/h1&gt;

&lt;p&gt;There are two reasons to be a good belayer - first, it takes one to know one. Second - you’ll understand how safe (or unsafe) it can be for you when you are climbing, because you will learn what to expect when climbing.&lt;/p&gt;

&lt;h2 id="have-the-right-amount-of-rope-out"&gt;Have the right amount of rope out&lt;/h2&gt;

&lt;p&gt;As a general rule, the “right amount of rope” means having a small droop of slack between you and the first bolt on the climb. Additionally, you want to be standing within one large step of the spot on the ground that is directly beneath the first bolt.&lt;/p&gt;

&lt;p&gt;Do not walk way off to the side. One large step. No farther.&lt;/p&gt;

&lt;h2 id="stay-in-the-break-position"&gt;Stay in the break position&lt;/h2&gt;

&lt;p&gt;Next, no matter what sort of device you’re using, keep the belay device in the brake position. If you are using a Gri-Gri, use it the &lt;a href="http://www.petzl.com/us/outdoor/grigri-experience"&gt;way it was intended&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Do not hold it in your hand the whole time you’re belaying! It’s a hard habit to break (I held it in my hand for years… and finally stopped after getting a good demonstration from a Petzl rep. Just do it right.)&lt;/p&gt;

&lt;p&gt;If you’re using a tube-style belay device, keep it in the brake position at all times unless you are taking in slack. It is possible to feed slack quickly, without ever coming out of the brake position.&lt;/p&gt;

&lt;h2 id="be-good-at-feeding-and-taking-in-slack"&gt;Be good at feeding and taking in slack&lt;/h2&gt;

&lt;p&gt;When you feed slack while your climber is clipping, step in towards the wall, to get an extra few inches out. Immediately return to the brake position. &lt;a href="https://josh.works/friends-dont-let-friends-shortrope"&gt;Do not short rope your climber.&lt;/a&gt; It makes him wonder if you’re paying attention, or, if you are paying attention, it makes him wonder if you know what you’re doing.&lt;/p&gt;

&lt;h2 id="when-your-climber-falls-give-a-soft-catch"&gt;When your climber falls, give a soft catch&lt;/h2&gt;

&lt;p&gt;To give a soft catch, step in towards the wall and give a hop up the wall, just as their weight hits the rope. If you do it right, you will float a few feet up the wall. This makes all the difference for the comfort of your climber.&lt;/p&gt;

&lt;p&gt;There will be situations where your climber will feel run out. He may be trying to clip having problems getting the rope through the draw, or maybe there is no good clipping position, or the clipping position is very high relative to the bolt. In all of these situations, your climber is aware of how far he will fall if he comes off the wall. Your job is to understand what to do if this happens so you can minimize the distance that he falls while still giving a very soft catch.&lt;/p&gt;

&lt;p&gt;The solution is simple - if your climber falls with a lot of rope out, while they’re falling, pull in a full arm-length of slack, lock off the belay device, and then as their weight hits the rope, jump up the wall.&lt;/p&gt;

&lt;p&gt;This is a big topic, however. Belaying, and learning to trust a good belayer, is a long topic. All of these steps can be taught, and refined. It takes practice, however, in an environment where it is safe to fail (but don’t drop your climber, obviously) and where the odds are stacked in your favor to quickly learn and perfect each of these elements.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Sun, 12 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/climbing/2013/05/12/how-to-be-an-awesome-belayer/</guid></item><item><title>WordPress GET Variables with lighttpd</title><link>https://thomashunter.name/posts/2013-05-12-wordpress-get-variables-with-lighttpd</link><author>Thomas Hunter II</author><pubDate>Sun, 12 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-05-12-wordpress-get-variables-with-lighttpd</guid></item><item><title>Downloading Fitbit Data using Google Spreadsheets</title><link>https://blog.tafkas.net/2013/05/12/downloading-fitbit-data-using-google-spreadsheets/</link><description>One of the most important features in quantified self is the ability to export your data in an open format. Fitbit lets you download your personal data if you subscribe to a premium membership. Alternatively they provide an API at dev.fitbit.com/ that allows developers to interact with Fitbit data in their own applications, products and services.
In a blog post at quantifiedself.com Mark Levitt shows a way how to export your Fitbit data into Google Spreadsheets.</description><author>Tafkas Blog</author><pubDate>Sun, 12 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.tafkas.net/2013/05/12/downloading-fitbit-data-using-google-spreadsheets/</guid></item><item><title>Reeder for iPhone now supports standalone RSS</title><link>http://www.theverge.com/2013/4/27/4275458/reeder-for-iphone-no-longer-requires-google-reader-account</link><description>&lt;p&gt;&amp;#8220;Perhaps more noteworthy is Reeder&amp;#8217;s new, standalone RSS feature &amp;#160;&amp;#8212;&amp;#160; you don&amp;#8217;t even need a Feedbin or Google Reader account anymore. Instead, you can start curating RSS feeds right on your iPhone; if you had a Google Reader account you can also simply import your feeds straight from there.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Great news. Reeder is easily my favorite iOS RSS reader, and definitely one of the best on the market. This new feature makes it all the more appealing not just to me as an existing customer, but hopefully to potential future users as well. I just imported all my Google Reader feeds in to the app, and it works like a charm.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/4/27/4275458/reeder-for-iphone-no-longer-requires-google-reader-account"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 11 May 2013 14:25:51 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/4/27/4275458/reeder-for-iphone-no-longer-requires-google-reader-account</guid></item><item><title>The Experience Deficiency</title><link>https://solomon.io/experience-deficiency/</link><description>I recently spoke with an MBA student who wanted to get into advertising.</description><author>Sam Solomon</author><pubDate>Sat, 11 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/experience-deficiency/</guid></item><item><title>Familiar</title><link>http://brooksreview.net/2013/04/familiar/</link><description>&lt;p&gt;&amp;#8220;This 135g technical marvel became privy to my secrets, my dreams, my work and personal life. Since that time, I&amp;#8217;ve worn my way through several iterations of this device, yet my feeling for &amp;#8216;it&amp;#8217; grows stronger as the months and years go by.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/04/familiar/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 11 May 2013 00:33:38 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/04/familiar/</guid></item><item><title>Submit Nagios metrics to Graphite with ModGearman and MetricFactory</title><link>https://smetj.net/submit-nagios-metrics-to-graphite-with-modgearman-and-metricfactory.html</link><description>&lt;div class="section" id="this-article-is-superseded"&gt;
&lt;h2&gt;&lt;strong&gt;This article is superseded&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Read &lt;a class="reference external" href="http://smetj.net/submit-nagios-metrics-to-graphite-with-modgearman-and-metricfactory-revisited.html"&gt;Submit Nagios metrics to Graphite with ModGearman and MetricFactory revisited&lt;/a&gt; instead.&lt;/p&gt;
&lt;p&gt;When it comes down to monitoring Nagios is still the weapon of choice
for many. &amp;nbsp;I would have abandoned it if there weren't projects like
&lt;a class="reference external" href="http://mathias-kettner.de/checkmk_livestatus.html"&gt;Livestatus&lt;/a&gt;,&amp;nbsp;&lt;a class="reference external" href="http://labs.consol.de/lang/en/nagios/mod-gearman/"&gt;Mod_Gearman&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a class="reference external" href="http://www.thruk.org/"&gt;Thruk&lt;/a&gt;&amp;nbsp;which to my opinion should …&lt;/p&gt;&lt;/div&gt;</description><author>Jelle Smet</author><pubDate>Fri, 10 May 2013 16:59:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/submit-nagios-metrics-to-graphite-with-modgearman-and-metricfactory.html</guid></item><item><title>Betaworks</title><link>https://zacs.site/blog/betaworks.html</link><description>&lt;p&gt;In 2012, Betaworks purchased Digg; a year later in 2013, the company &lt;a href="http://blog.digg.com/post/45355701332/were-building-a-reader"&gt;announced a revamped list of priorities&lt;/a&gt; placing a &lt;a href="http://blog.digg.com/post/46251309499/whats-next"&gt;successor to Google Reader at the top&lt;/a&gt;, and acquired Instapaper a few months later. As Brian Bishop pointed out in &lt;a href="http://www.theverge.com/2013/4/25/4266980/instapaper-acquired-by-betaworks-owner-of-digg"&gt;&lt;em&gt;Instapaper acquired by Betaworks, owner of Digg&lt;/em&gt;&lt;/a&gt;, the Instapaper-RSS reader combination uniquely positions Betaworks to emerge as a major player on the internet in the combing years. As an &lt;a href="http://blog.betaworks.com/post/48066217383/betas-work"&gt;extremely innovation-friendly company&lt;/a&gt;, I am very excited to see what Betaworks releases in the coming weeks and months. I have high hopes for the company, as I am sure many others do as well. And apparently, rightly so.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/betaworks.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 10 May 2013 14:42:14 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/betaworks.html</guid></item><item><title>Transporter</title><link>http://brooksreview.net/2013/05/transporter/</link><description>&lt;p&gt;&amp;#8216;Transporter is a private &amp;#8220;off-cloud&amp;#8221; storage device for syncing, sharing, accessing, and protecting your digital life. No cloud, no fees, no privacy concerns. Your files are only stored on your Transporters and computers and mobile devices that you authorize.&amp;#8217;&lt;/p&gt;

&lt;p&gt;What a great idea. I will seriously consider getting one of these.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/05/transporter/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 10 May 2013 14:41:28 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/05/transporter/</guid></item><item><title>Yurt across from Mt. Elbert</title><link>http://cabinporn.com/post/48760380209/yurt-across-from-mt-elbert-at-14-400-feet-the</link><description>&lt;p&gt;A yurt.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/48760380209/yurt-across-from-mt-elbert-at-14-400-feet-the"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 10 May 2013 14:40:03 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/48760380209/yurt-across-from-mt-elbert-at-14-400-feet-the</guid></item><item><title>Scott Weisman: Co-Founder &amp;amp; President of LaunchPad Lab</title><link>https://solomon.io/scott-weisman-co-founder-president-of-launchpad-lab/</link><description>Scott Weisman is the co-founder of LaunchPad Lab, a web development studio that has clients such as Chesapeake Energy, Hanson and Greater Than.</description><author>Sam Solomon</author><pubDate>Fri, 10 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/scott-weisman-co-founder-president-of-launchpad-lab/</guid></item><item><title>Introducing Sleek</title><link>https://goshacmd.com/introducing-sleek/</link><author>Gosha Spark</author><pubDate>Fri, 10 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://goshacmd.com/introducing-sleek/</guid></item><item><title>Software Engineering Interviews</title><link>https://honza.pokorny.ca/2013/05/software-engineering-interviews/</link><description>&lt;p&gt;If you find yourself interviewing for a software engineering position today,
you can be 90 percent sure that you will be asked to solve some programming
puzzles.&lt;/p&gt;
&lt;p&gt;We’ve all been there.  You come to the office for an interview, spend a few
minutes talking about the job and you, and then the inevitable hits:
programming puzzles and quizzes.  You are asked to solve nonsensical,
irrelevant, theoretical problems on the spot while the interviewer waits.
These problems in no way represent the actual work for which you’re
interviewing.&lt;/p&gt;
&lt;p&gt;How do you detect a palindrome?  What is the worst-case performance of the
quicksort algorithm?  How do you find depth of a binary tree?  These are all
utter nonsense.  If your cutting-edge application needs to detect palindromes,
I’m pretty sure you have bigger problems than you think.  All of these can be
easily solved after a few minutes of research on the Internet.&lt;/p&gt;
&lt;p&gt;I get especially annoyed at these things because my mind doesn’t work well in
this area.  I don’t like to solve unrealistic problems.  My nonsense detector
kicks in and I can’t concentrate.  Instead, ask me if I know how to debug
messaging queue issues, how I like to set up a new server, how I like to run my
Django apps, how I’d solve a specific problem you’re having, etc.  Have me work
on your product alongside someone in your company.  Get to know me.  I can
program.  I’m good at what I do.  I’m just not good at those stupid puzzles.&lt;/p&gt;
&lt;p&gt;It’s not that I don&amp;rsquo;t like to think.  I’m learning Haskell and I think I have
understood monads (don’t ask me to explain them to you though).  I like parsers
and parser combinators.  That stuff is hard to understand and takes some serious
alone time to grok.&lt;/p&gt;
&lt;p&gt;I’m sure you can find a person out there who is the inverse of me.  They love
puzzles and excel at them.  They get to the final round of Google Jam.  I
don’t. Not even close.  But they are terrible programmers.  Who would you
rather hire?  Every now and then I get this idea that I’ll go and learn a whole
bunch of puzzles and quizzes so I can wow the next interviewer.  But then I
inevitably start to feel dishonest and drop the whole thing.&lt;/p&gt;
&lt;h2 id="how-to-interview-someone"&gt;How to interview someone&lt;/h2&gt;
&lt;p&gt;Find a small problem in your code base.  Give them access to your Git
repository.  Assign the ticket to them.  Explain why it’s a problem and suggest
a few possible solutions.  Have them work on it either alone or alongside one
of your developers.  This gives your team the chance to get to know this
potential hire and see if they would be a good fit.  This is how I interviewed
at Amara and it was great.&lt;/p&gt;
&lt;p&gt;I’d like to end with a brilliant &lt;a href="https://twitter.com/holman/status/154986236640112641"&gt;Zach Holman&lt;/a&gt; quote on interview:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I think programming riddles, games, and brain teasers are a great way to
hire. First one to say &amp;ldquo;fuck this&amp;rdquo; and walk out gets the job.&lt;/p&gt;
&lt;/blockquote&gt;</description><author>Honza Pokorný</author><pubDate>Thu, 09 May 2013 21:35:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/05/software-engineering-interviews/</guid></item><item><title>Learning Ruby on Rails: Why? How? Pitfalls?</title><link>https://www.brightball.com/articles/learning-ruby-on-rails-why-how-pitfalls</link><description>I've always been a proponent of the "right tool for the job" approach to programming.  Different languages are well suited for different situations. Over the past 2 years I've spent a great deal of time with Ruby on Rails after coming from a background of PHP, Java and Perl.  Here's how I got started and some of the lessons I learned along the way.</description><author>Brightball Articles</author><pubDate>Thu, 09 May 2013 19:00:00 GMT</pubDate><guid isPermaLink="true">https://www.brightball.com/articles/learning-ruby-on-rails-why-how-pitfalls</guid></item><item><title>The Cabin Porn Archive</title><link>https://zacs.site/blog/the-cabin-porn-archive.html</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/the-kristina-forest-hut.html"&gt;Speaking of Cabin Porn&lt;/a&gt;, the folks over at the site have put a lot of work in to finding and posting great pictures lately, as well as polishing the site&amp;#8217;s design over the past few months. And while it may not be new, for I actually can&amp;#8217;t remember if it was there or not before today, I wanted to take a minute to mention the &lt;a href="http://cabinporn.com/archive"&gt;Cabin Porn Archive&lt;/a&gt;, where you can find every post going all the way back to February of 2009. Having just discovered this page this afternoon, don&amp;#8217;t expect to hear from me for quite a while.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-cabin-porn-archive.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 09 May 2013 18:20:02 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-cabin-porn-archive.html</guid></item><item><title>The Kristina Forest Hut</title><link>http://cabinporn.com/post/48568484057/the-kristina-forest-hut-at-kolarbyn-eco-lodge</link><description>&lt;p&gt;Seeing pictures like this one remind me of all the times I looked at a hill and thought about how awesome it would be to grab a shovel and dig a house out of it, similar to the way Sean Hellfritsch and Rob Wilson built their &lt;a href="http://cabinporn.com/post/46387925207/our-friends-sean-hellfritsch-and-rob-wilson-made"&gt;subterranean breakfast nook&lt;/a&gt;, but more like &lt;a href="http://cabinporn.com/post/50012211418/stone-cellar-in-elliston-newfoundland"&gt;this stone cellar&lt;/a&gt; in Newfoundland.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/48568484057/the-kristina-forest-hut-at-kolarbyn-eco-lodge"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 09 May 2013 18:09:38 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/48568484057/the-kristina-forest-hut-at-kolarbyn-eco-lodge</guid></item><item><title>Defeating India's Central Monitoring System</title><link>https://www.anmolsarma.in/post/defeating-the-central-monitoring-system/</link><description>&lt;p&gt;The Government of India has rolled out the &lt;a href="http://en.wikipedia.org/wiki/Central_Monitoring_System"&gt;Central Monitoring System&lt;/a&gt; which will allow it to access any piece of data passing through an Indian service provider. This means the government can now read all your text messages, emails and call records.&lt;/p&gt;
&lt;p&gt;Because &lt;em&gt;privacy&lt;/em&gt; does not bring in votes, it is highly unlikely that any political party will oppose this system. Circumventing this system however, is rather simple using &lt;a href="http://en.wikipedia.org/wiki/Pretty_Good_Privacy"&gt;PGP&lt;/a&gt; or any other &lt;em&gt;munition grade&lt;/em&gt; cryptographic scheme. So, if anyone wishes to communicate with me securely, please encrypt your message using this &lt;a href="https://www.anmolsarma.in/pgp/anmol_pgp.asc"&gt;key&lt;/a&gt;, whose fingerprint should be:&lt;/p&gt;
&lt;center&gt;```AA3C 18D8 88D6 EC67 6887  2B21 5D64 D65C 162D 0A3C```&lt;/center&gt;
&lt;p&gt;You may now put your tin-foil hat back on again.&lt;/p&gt;
&lt;p&gt;Edit: Replaced my old key with a 4096-bit RSA key.&lt;/p&gt;</description><author>Anmol Sarma</author><pubDate>Thu, 09 May 2013 17:08:00 GMT</pubDate><guid isPermaLink="true">https://www.anmolsarma.in/post/defeating-the-central-monitoring-system/</guid></item><item><title>Daily Exercise - Russian Kettlebells</title><link>https://josh.works/daily-exercise-russian-kettlebells</link><description>&lt;p&gt;“Exercise”.&lt;/p&gt;

&lt;p&gt;It makes most people either cringe or salivate.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;note: 12 years after writing this post, &lt;a href="/kettlebell-swings-and-sprints"&gt;I wrote another big update about kettlebells&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Those of you who love exercising for the sake of exercising - you can stop reading now. This information is probably not relevant to you.&lt;/p&gt;

&lt;p&gt;Those of you who don’t like to exercise, but know you really should exercise regularly - keep reading!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;In general, I don’t like exercise for the sake of exercise.&lt;/p&gt;

&lt;p&gt;For most of the last six years any time I exercised, it was to get better at climbing. I used to run regularly, too, until after one particularly long run (I took some wrong turns) I quit running. Cold turkey.&lt;/p&gt;

&lt;p&gt;I hated being miserable, even though the feeling that comes after running (and sometimes during) is not so bad. Besides, I climbed. I did not need any more life-consuming sports.&lt;/p&gt;

&lt;p&gt;&lt;img alt="my kettlebell setup" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f71_1434910432064_pic-05062013-005.jpg_" /&gt;&lt;/p&gt;

&lt;p&gt;This is 55 lbs, though it might look a lot heavier.&lt;/p&gt;

&lt;p&gt;Well, I still climb, but now my training is broken down between occasional weekends spent climbing, and the rest of the time training about ten minutes every other day for either climbing or “general exercise”.&lt;/p&gt;

&lt;p&gt;It sounds pretty relaxing, and it is. I love it.&lt;/p&gt;

&lt;p&gt;I am getting stronger on an extremely modest time investment. When I climbed indoors, I usually wouldn’t even have my climbing shoes on within the first ten minutes, and once I did get them on, it would take two hours to get in a good session, and I was never confident that I was getting stronger.&lt;/p&gt;

&lt;p&gt;I did many different things in a gym, most of them probably useless, and a few things (which ones? I don’t know) helped me get better at climbing.&lt;/p&gt;

&lt;p&gt;As I was planning my climbing training, another exercise came to my attention. It’s called “The Swing”, referring to Russian Kettlebells. I first read about it in &lt;em&gt;The Four Hour Body&lt;/em&gt;, and on &lt;a href="http://fourhourworkweek.com/2011/01/08/kettlebell-swing/"&gt;Tim Ferriss’ blog&lt;/a&gt;, and then I learned about the huge (cult-ish) following kettlebells have.&lt;/p&gt;

&lt;p&gt;I read long &lt;a href="http://www.riversidekettlebells.com/2009/03/top-10-benefits-of-kettlebell-training.html"&gt;lists of reasons&lt;/a&gt; why they were great, and then I learned how to make one myself.&lt;/p&gt;

&lt;p&gt;I swung by Home Depot, and bought the necessary pipe fittings.&lt;/p&gt;

&lt;p&gt;There are plenty of &lt;a href="http://www.youtube.com/watch?v=Zq9Yxn5a9D8"&gt;good tutorials&lt;/a&gt; on how to build your own kettlebell, so I won’t go through it here. One note, however, is this: I originally used 4” pipe nipples, but the handle was so large I was hitting my legs when I was doing the swings, so as you can see, I used 3” pipe nipples. (Stop giggling)&lt;/p&gt;

&lt;p&gt;&lt;img alt="pipe nipples" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f74_1434910432154_pic-05062013-010.jpg_" /&gt;&lt;/p&gt;

&lt;p&gt;I had weight plates from high school, so I didn’t have to try to scrounge those up, but I’m sure that with a little checking around Facebook or Craigslist, you could find someone willing to give you (or sell you for very cheap) the weight plates. I have 55lb on mine, and I don’t have any desire to make it any heavier, yet.&lt;/p&gt;

&lt;h2 id="the-workout"&gt;The Workout&lt;/h2&gt;

&lt;p&gt;I begin my workout by carrying the apparatus from the bedroom to the living room (eight steps) and then I do a few squats and some light stretching.&lt;/p&gt;

&lt;p&gt;I get a timer set up, and then I begin. I complete 100 swings in as short a time as possible.&lt;/p&gt;

&lt;p&gt;The first time or two I did the exercise, I had to take breaks every fifteen or twenty swings, now I’m up to being able to do up to 65 in a row. When I get too tired to keep doing the swings, I rest for about 30 seconds, then I get back at it, until I’ve completed all 100.&lt;/p&gt;

&lt;p&gt;I have 55lbs on the kettlebell, which is the higher of the “recommended weights” for men. Women are supposed to start in the 22-35lb range, I think. I just experimented with a weight that was too hard to swing more than twenty times or so my first attempt - that’s the general suggestion for figuring out how much weight to use for this exercise.&lt;/p&gt;

&lt;h2 id="why-all-the-work"&gt;Why all the work?&lt;/h2&gt;

&lt;p&gt;There were two primary reasons I decided to pursue this single exercise using this single tool.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;It is convenient - I keep the kettlebell in our apartment, sitting out of the way next to our dresser. I can exercise barefoot, in my boxers, any time of the day, with zero prep time or drive time. Total time spent on this exercise, including travel time: seven minutes.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It is effective (and moderately interesting) - the return on time invested is huge, and the exercise is interesting enough to keep my brain engaged.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some of the most exciting strength benefits from this exercise has to do with my lower back - I’ve often had lower back pain, like most Americans, and couldn’t ever do anything about it. Once, a long time ago, I started doing
&lt;a href="http://en.wikipedia.org/wiki/Deadlift"&gt;deadlifts&lt;/a&gt;(wearing a onesie, just like that guy) and found that my lower back pain disappeared. I was thrilled. When the pain came back, I had looked into exercises that were similar to the deadlift, so I could eliminate that pain. I then stumbled onto Kettlebells.&lt;/p&gt;

&lt;p&gt;Much ink has been spilled writing about kettlebells, and crossfitters love them. I won’t regurgitate all that I’ve read about Kettlebells, because I wouldn’t be able to do so well anyway.&lt;/p&gt;

&lt;h2 id="results-and-progress-tracking"&gt;Results and progress tracking&lt;/h2&gt;

&lt;p&gt;&lt;img alt="results graph" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f7a_1434910431074_screenshot_5_9_13_7_51_am.jpg_" /&gt;&lt;/p&gt;

&lt;p&gt;As I mentioned with my climbing workout, progress tracking is very, very important. It’s the only way to track incremental improvement, because you sure won’t remember many details about your improvement, especially a few days after the fact.&lt;/p&gt;

&lt;p&gt;This graph on the right shows my time, from the first attempt, to the most recent, which was twelve sessions. It’s improvement indeed. Even if I did not rest, it would still take me almost three minutes, so I’m close to “maxing out” my time on this exercise. When I do that, I’ll move to heavier weights.&lt;/p&gt;

&lt;p&gt;As you can see, I barely spend any time at all on this particular exercise. The first session took six minutes. That’s all the exercise I do on my Kettlebell days.&lt;/p&gt;

&lt;p&gt;The time savings alone should intrigue anyone who’s interested in daily exercise but does not love the idea of carving out an hour to do so. If you have questions about how to build one, or start on your own, please let me know!&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Thu, 09 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/daily-exercise-russian-kettlebells</guid></item><item><title>GUI - I hate this part.</title><link>https://liza.io/gui-i-hate-this-part/</link><description>&lt;p&gt;I knew this would happen. Out of all of the new things that I have to learn to do for this snail game, the part that is the most tedious and difficult for me is the UI. Every part of the UI. You&amp;rsquo;d think that I&amp;rsquo;d be able to use web design skills from my previous life to make this at least a little intuitive, but nope - this blows. And it&amp;rsquo;s not just designing the thing that&amp;rsquo;s the problem, it&amp;rsquo;s finding the best way to implement it, too.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Wed, 08 May 2013 19:20:44 GMT</pubDate><guid isPermaLink="true">https://liza.io/gui-i-hate-this-part/</guid></item><item><title>The 8-Bit Nintendo Phone</title><link>https://zacs.site/blog/the-8-bit-nintendo-phone.html</link><description>&lt;p&gt;The idea of a Nintendo phone, initially proposed by Moises Chiullan and Horace Dediu on episode eighty-three of The Critical Path, has continued to gain traction in my mind since I listened to &lt;a href="http://5by5.tv/criticalpath/83"&gt;&lt;em&gt;The Analyst Taxonomy&lt;/em&gt;&lt;/a&gt;. As Moises pointed out in the tail end of the show Nintendo, like Apple, possesses the capability to not only manufacture physical devices, but to create the software necessary to run them as well.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-8-bit-nintendo-phone.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 08 May 2013 16:04:00 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-8-bit-nintendo-phone.html</guid></item><item><title>How to convert Apple Lossless/ALAC/.m4a files to FLAC with avconv, on Ubuntu Linux</title><link>https://duncanlock.net/blog/2013/05/07/how-to-convert-apple-lossless-alac-m4a-files-to-flac-with-avconv-on-ubuntu-linux/</link><description>&lt;p&gt;I recently needed to convert some Apple Lossless music files to &lt;span class="caps"&gt;FLAC&lt;/span&gt;. Here&amp;#8217;s how to do&amp;nbsp;it:&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t already have &lt;code&gt;ffmpeg&lt;/code&gt; or &lt;code&gt;libav-tools&lt;/code&gt; installed, do&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;libav-tools&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then run this to do the conversion, in the folder with music&amp;nbsp;in:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;f &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;.m4a&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;avconv &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;&lt;span class="p"&gt;%.m4a&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.flac"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And that&amp;#8217;s it - it will convert all the &lt;code&gt;.m4a&lt;/code&gt; files in that folder to &lt;code&gt;.flac&lt;/code&gt; files, preserving the metadata. You can now delete the &lt;code&gt;.m4a&lt;/code&gt; files if you&amp;nbsp;want:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;rm&lt;/span&gt; ./&lt;span class="k"&gt;*&lt;/span&gt;.m4a&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><author>duncan­lock­.net</author><pubDate>Wed, 08 May 2013 06:12:59 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/05/07/how-to-convert-apple-lossless-alac-m4a-files-to-flac-with-avconv-on-ubuntu-linux/</guid></item><item><title>Atlas</title><link>https://ho.dges.online/words/commonplace/atlas-by-ua-fanthorpe/</link><description>&lt;p&gt;There is a kind of love called maintenance&lt;br /&gt;
Which stores the WD40 and knows when to use it;&lt;/p&gt;
&lt;p&gt;Which checks the insurance, and doesn’t forget&lt;br /&gt;
The milkman; which remembers to plant bulbs;&lt;/p&gt;
&lt;p&gt;Which answers letters; which knows the way&lt;br /&gt;
The money goes; which deals with dentists&lt;/p&gt;
&lt;p&gt;And Road Fund Tax and meeting trains,&lt;br /&gt;
And postcards to the lonely; which upholds&lt;/p&gt;
&lt;p&gt;The permanently rickety elaborate&lt;br /&gt;
Structures of living, which is Atlas.&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Wed, 08 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/atlas-by-ua-fanthorpe/</guid></item><item><title>Queen's University Resnet without IDA (Windows)</title><link>https://cmetcalfe.ca/blog/queens-university-resnet-without-ida-windows.html</link><description>&lt;h2&gt;Storytime&lt;/h2&gt;
&lt;p&gt;So you're in your first year at Queen's University residence and you
want to access the internet. Sounds reasonable. You plug in your Windows
laptop, open your browser, and...nothing. Well, mostly nothing. A page
that tells you that you've been quarantined and to please click here,
download IDA, install it, and let it work it's magic.&lt;/p&gt;
&lt;p&gt;Sounds easy right? What they don't tell you is that IDA holds ResNet
access hostage until you've installed some garbage antivirus, downloaded
all the new windows updates (IDA actually does this itself, it doesn't
step back and let Windows Update do it's job), and a few other things.
After all that, you enter your NetID and password, and it registers you.
In theory.&lt;/p&gt;
&lt;p&gt;What I ran into every single time I ran it with my laptop (running Windows
XP at the time) was it failing to download something, throwing an error
message and refusing to register me. I gave up after a few times and
plugged in my other computer (Running the relatively obscure Windows XP
x64). What I noticed is that I didn't get the typical quarantine page, I
got a simple page that asked for a NetID and password. I entered my
information and got a message stating I was good to go. I checked a few
pages and they all seemed to work.&lt;/p&gt;
&lt;p&gt;I plugged my laptop back in and tried to load a page. The same
quarantine screen. Since the main way a webpage tells the difference
between two operating systems is the user agent, I fired up &lt;a href="https://addons.mozilla.org/en-us/firefox/addon/tamper-data/"&gt;Tamper
Data&lt;/a&gt; and submitted a request with a blank one. I got the same page
that asked for my NetID and password.&lt;/p&gt;
&lt;p&gt;I assume this works because if the registration server decides (based on
your user agent) that IDA won't run on your computer, instead of leaving
you screwed, it'll give you an alternate way out. Since when you take
away the user agent the server can't tell what kind of operating system
you're running, they assume that IDA won't work on it and give you the
simple "Enter your account details" prompt.  &lt;/p&gt;
&lt;h2&gt;Register a computer without IDA&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Acquire unblocked internet (the queensu wireless is a good bet).&lt;/li&gt;
&lt;li&gt;Download and install &lt;a href="http://www.mozilla.org/firefox/"&gt;Firefox&lt;/a&gt; and the &lt;a href="https://addons.mozilla.org/en-us/firefox/addon/tamper-data/"&gt;Tamper Data&lt;/a&gt; addon.&lt;/li&gt;
&lt;li&gt;Disconnect from the internet and plug in to ResNet.&lt;/li&gt;
&lt;li&gt;In Firefox, click Tools,  Tamper Data.&lt;/li&gt;
&lt;li&gt;In the window that pops up, click "Start Tamper".&lt;/li&gt;
&lt;li&gt;Try to load a website.&lt;/li&gt;
&lt;li&gt;A window will pop up asking you if you want to tamper with the
    request. Click the "Tamper" option.&lt;/li&gt;
&lt;li&gt;In the windows that pops up, delete everything in the "User-Agent"
    field and hit OK.&lt;/li&gt;
&lt;li&gt;Repeat steps 8 and 9 until the popups stop and the page loads.&lt;/li&gt;
&lt;li&gt;Click "Stop Tamper" and close the Tamper Data window.&lt;/li&gt;
&lt;li&gt;You should be on a page that tells you to enter your NetID and
    password, do so and hit OK.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Your computer should now be able to use ResNet normally.&lt;/p&gt;
&lt;h2&gt;Registering other devices&lt;/h2&gt;
&lt;p&gt;Your computer is registered via it's MAC address. This means that if you
want to use ResNet with a device that can't run IDA, doesn't have a web
browser, and is against IT policy *cough* wireless router *cough*,
you can't. In theory.&lt;/p&gt;
&lt;p&gt;The easy way of course, it to call up ITS and tell them your Xbox can't
connect. They'll ask you for your Xbox's MAC address, you'll give them
the router's MAC address, and they'll register it. Aside from lying to
ITS being morally wrong, this works. However, I've heard complaints that
devices registered via calling ITS have had their speed throttled.
Throttling non-school-related devices on a school network makes sense,
but I haven't seen any actual proof of this.&lt;/p&gt;
&lt;p&gt;The better way of registering your other devices though, is to trick the
registration server into thinking that your device is just a normal
computer. Since computers are registered by their MAC addresses, you
just need to register the MAC address of your device with the system.&lt;/p&gt;
&lt;p&gt;The following steps will show you how to spoof your device's MAC address
and register it from your computer.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find the MAC address of your device. It will probably be somewhere
    in the Advanced Options.&lt;/li&gt;
&lt;li&gt;Unplug your device from ResNet and plug in your computer.&lt;/li&gt;
&lt;li&gt;Open Control Panel, Network and Internet, Network Connections
    and note the name of your connection. Usually it's "Local Area
    Connection"&lt;/li&gt;
&lt;li&gt;Download and extract &lt;a href="http://devices.natetrue.com/macshift/"&gt;Macshift&lt;/a&gt; into a folder somewhere.&lt;/li&gt;
&lt;li&gt;Open a command prompt window in the Macshift folder.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the command prompt window type&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;macshift.exe -i &amp;quot;[connection name]&amp;quot; [device MAC address, no dashes]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For example, if my device's MAC address was "00-11-22-33-44-55" and my
connection name was "Local Area Connection", I would run&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;macshift.exe -i &amp;quot;Local Area Connection&amp;quot; 001122334455
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wait until you have network access again and try to load a page. If
    everything went as planned, you should be seeing the ResNet
    quarantine page.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Use the steps in the section above to register your computer again.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once you have ResNet access, go back to the command prompt and run&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;macshift.exe -i &amp;quot;[connection name]&amp;quot; -d
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This restores your MAC address back to it's original value.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Your device should now be able to use ResNet normally.&lt;/p&gt;
&lt;h2&gt;Disclaimer&lt;/h2&gt;
&lt;p&gt;All information above is provided for informational purposes only. I
take no responsibility for the outcome of your actions. Furthermore, all
information on IDA is based on experiences in 2009, It may have
improved over time (ha).&lt;/p&gt;</description><author>Carey Metcalfe</author><pubDate>Tue, 07 May 2013 20:21:00 GMT</pubDate><guid isPermaLink="true">https://cmetcalfe.ca/blog/queens-university-resnet-without-ida-windows.html</guid></item><item><title>Chasing the Wrong Zero</title><link>https://zacs.site/blog/chasing-the-wrong-zero.html</link><description>&lt;p&gt;Shortly after Merlin Mann posted &lt;a href="http://www.kungfugrippe.com/post/47631308074/chasing-the-right-zero"&gt;&lt;em&gt;Chasing the Right Zero&lt;/em&gt;&lt;/a&gt; I &lt;a href="https://zacs.site/blog/chasing-the-right-zero.html"&gt;linked to the article&lt;/a&gt;, as did most of the internet. With &lt;em&gt;Chasing the Right Zero&lt;/em&gt;, Merlin wrote the article I had had simmering on the back burner for months, putting to words my epiphany regarding Inbox Zero and the real meaning behind the philosophy. At the time I felt no need to add anything to his words or quantify my own opinions on the subject, so my linked list post contained nothing but a short pull quote. Merlin had made the real meaning behind Inbox Zero very clear, after all; I had nothing further to add to the conversation. And then Shawn Carolan guest posted an article titled &lt;a href="http://gigaom.com/2013/05/05/the-myth-of-inbox-zero-and-the-path-to-peace-of-mind/"&gt;&lt;em&gt;The myth of Inbox Zero and the path to peace of mind&lt;/em&gt;&lt;/a&gt; on GigaOM. Apparently it was not so clear.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/chasing-the-wrong-zero.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 07 May 2013 10:39:18 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/chasing-the-wrong-zero.html</guid></item><item><title>How to Wake Up Early</title><link>https://josh.works/misc/2013/05/07/how-to-wake-up-early/</link><description>&lt;p&gt;&lt;em&gt;An understanding of sleep, and attempts to wake up early&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://josh.works/waking-up-early-2-0"&gt;Read Part Two&lt;/a&gt;, and &lt;a href="https://josh.works/waking-up-early-part-3"&gt;Part Three)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My understanding of sleep has evolved. When I was born, I spent most of my time asleep (if I recall correctly…) and gradually spent less and less time sleeping, until I was down to about eight hours of sleep a night. That was my ideal amount, and if I got much less, I would be tired during the day.&lt;/p&gt;

&lt;p&gt;Except sometimes I’d get less than eight hours and not be tired during the day, and sometimes I would would get more than eight hours and still be quite tired. So I ignored most of those abnormalities, tried to get as much sleep as I could, and absolutely dreaded getting up in the mornings - my alarm would go off and I would hit snooze at least three times until absolutely had to get up to get to work. If I didn’t have work, I’d just sleep until it was too sunny and warm to keep sleeping.
more&lt;/p&gt;

&lt;p&gt;I certainly would try to get up early sometimes, and usually end up wrestling with the snooze button for an hour and a half. I would then feel even worse about trying to get up early because not only did I 
not get up, but I lost an hour and a half of quality sleep by waking myself up every fifteen minutes just to hit the alarm again. It was pretty miserable.&lt;/p&gt;

&lt;p&gt;The rare instances where I did drag myself out of bed in the morning, earlier than I had to, I would usually just sit down at my computer and, in a fog of sleepiness, waste the entire time period I had earned on Facebook, or reading blogs, or doing other insignificant work. This pattern led to me feeling guilty about how I spent my time, since I had tried so hard to get up early, and then wasted the whole thing.&lt;/p&gt;

&lt;p&gt;I had many instances of failure to wake up early, and felt guilt about them. The few instances where I did take up, I still felt guilt about my poor time management. I never enjoyed the process, and basically “gave up” on getting up early. I resigned my mornings to a perpetual struggle with my alarm clock.&lt;/p&gt;

&lt;h2 id="the-long-and-slow-process-from-up-by-noon-to-sometimes-up-by-five-if-i-feel-like-it"&gt;The long and slow process from “up by noon” to “sometimes up by five… if I feel like it”.&lt;/h2&gt;

&lt;p&gt;I spent months thinking about waking up early, but it was never well-defined, nor did I have a good reason to do so, other than people who were more skilled and productive than I seemed to get up early. I wanted to be like them, so I wanted to get up early too. This is all sound reasoning, right?&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;I started tracking my energy levels throughout the day, after reading 
The Personal MBA by Josh Kaufman (Highly recommended) I’ve got records from as far back as August 2012 (nine months ago) about my energy levels, and my sleep patterns - even then I was trying to wake up early, and was very bad at it.&lt;/p&gt;

&lt;p&gt;I eventually reworked my understanding of waking up early because of two changes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I was forced to modify my understanding of how sleep works.&lt;/li&gt;
  &lt;li&gt;I learned about how finite a resource willpower can be.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I first read about alternative sleep cycles in The Four Hour Body by Timothy Ferris. That led me to a very interesting &lt;a href="http://dcurt.is/"&gt;blog&lt;/a&gt; by Dustin Curtis, and then &lt;a href="http://everything2.com/index.pl?node=Everyman%20Sleep%20Schedule"&gt;here&lt;/a&gt;, and &lt;a href="http://www.stevepavlina.com/forums/health-fitness/1638-switching-biphasic-sleeping-start-here.html"&gt;here, &lt;/a&gt;and somewhere in all that I read &lt;a href="http://www.stevepavlina.com/blog/2005/10/polyphasic-sleep/"&gt;Steve Pavlina’s sleep (b)log.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The inescapable conclusion is this: there are a lot of people out there who try some really insane sleep patterns, and they have success. If that works for them, how much easier must it be to try a much less-insane sleep hack? I decided to start the whole process by experimenting with just being awake and content with life at an early hour. If I could do that, I could decide where to go from there.&lt;/p&gt;

&lt;p&gt;I removed (or began removing) my mental barrier to being up when it was still dark out. I saw early rising as a goal to achieve rather than a burden to bear.&lt;/p&gt;

&lt;p&gt;The other change related to willpower - as I’ve touched on before, and will do so again, willpower is just like a muscle. It can be worn out and depleted. I want to preserve my willpower as much as possible to use on things that need it. If I use all my willpower dragging myself out of bed, I’ve ruined the rest of my day, because I used up all my willpower.&lt;/p&gt;

&lt;p&gt;I will up early in the morning only if I want to - if my alarm goes off and I don’t want to get out of bed, I don’t.There was a period where my alarm would go off when I wanted to get up, and I would not. I would repeat this pattern daily, waking up at 5:00 AM, silencing the alarm, and waking up again at 6:30-7:00 AM to begin my day. I did not guilt myself for not getting up the first time, I just used it as an indicator that I had not created the right context in which I would wake up early.&lt;/p&gt;

&lt;h2 id="the-necessary-third-component-integrating-the-new-understanding-with-my-rules-for-building-habits"&gt;The necessary third component (Integrating the new understanding with my rules for building habits)&lt;/h2&gt;

&lt;p&gt;I had reworked my understanding of sleep, and given myself permission to get up only if I 
really wanted to, but there was still a problem. I did not want to get up early! I am not particularly busy, nor committed to social activities, so most of what I wanted to do during the day got done, and everything else wasn’t exciting enough to make me want to get up at 5:00 AM to do it. (Paying bills! Opening mail! Reading books!)&lt;/p&gt;

&lt;p&gt;The necessary third component presented itself on Lynda.com. It was a training program to teach the viewer how to better use Microsoft Excel, and better exercise.&lt;/p&gt;

&lt;p&gt;That’s right. I got out of bed at 5:00 AM to learn Excel.&lt;/p&gt;

&lt;p&gt;What that learning represented, however, was truly exciting. There are projects I am excited to pursue at my work that require a lot of data manipulation - since I’ve taken ownership of some of those ideas, I need to learn how to make them happen. A deep understanding of how to use Excel will allow me to complete some open projects of mine that are not work-related. Studying on Lynda.com represented was an opportunity for me to make a potentially large impact at work, and in my “on-the-side” work that I am pursuing on my own.&lt;/p&gt;

&lt;p&gt;Exercise “hacking” was motivating because I was confident that I could get good returns on less than ten minutes of exercise a day - I was very excited to test myself in this way. I alternated between my 
&lt;a href="/blog/2013/05/01/habits-milestones-and-climbing"&gt;climbing workout&lt;/a&gt; and Russian Kettlebell Swings.&lt;/p&gt;

&lt;p&gt;I don’t spend every morning learning Excel, or exercising, but I do spend that time developing skills that will allow me to exert much greater control over my career and life.&lt;/p&gt;

&lt;p&gt;This makes me excited to get up early every morning.&lt;/p&gt;

&lt;p&gt;I use my desire to wake up in the morning as a useful indicator for if I think I can move myself in a positive direction with various bits of training or learning. I’m generally pretty excited to learn new things or read good books - thus far, this general enthusiasm has been very effective at motivating my early rising.&lt;/p&gt;

&lt;p&gt;When I wake up early and I don’t want to actually get out of bed, I have to re-examine the way that I would spend my morning. What am I doing that is so unmotivating that I don’t want to get up and do it? If I am not enthused about whatever voluntary project is before me, I modify/discard/replace that project. 
It is not worth expending all my will power to drag myself out of bed when I don’t want to get up to work on a project that is not interesting to me.&lt;/p&gt;

&lt;p&gt;Remember - it is safe to fail often, and it should be easy. Both of these help provide valuable feedback.&lt;/p&gt;

&lt;h2 id="current-sleep-patterns"&gt;Current sleep patterns&lt;/h2&gt;

&lt;p&gt;I have not yet made this “early rising” thing a habit - I still  want to fail, when needed, so I can keep refining my process.&lt;/p&gt;

&lt;p&gt;If it’s not easy, I don’t get up.&lt;/p&gt;

&lt;p&gt;Adhering to my “get up only if it’s easy” standard, however, has given me pretty good results - for thirteen of the last twenty seven days, I’ve gotten up before 6:00 AM. Nine of those days I’ve been up by 5:15 AM. With one exception, the latest I have slept is 8:15 AM. Of those mornings, I felt tired for just five of them. I consider this process to be highly successful, and I look forward to improving many aspects of how I sleep.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4fe4b0278244ce9f6b/1434910431076/screenshot_5_6_13_5_04_pm.jpg"&gt;&lt;img alt="Wake time for the last 25 days or so." src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f6b_1434910431076_screenshot_5_6_13_5_04_pm.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A key point is this: going forward, I am not considering myself an early riser - if I don’t want to wake up early on any given day, I will not expend the will power to force myself up. If I don’t want to wake up, I need to figure out how to improve the tasks I am choosing to spend my time on, so I want to wake up early. For example, on weekends, I still set my alarm early, but I usually don’t really feel like getting up early, so I don’t. This last weekend I had grand plans of getting things done, and when my alarm went off, I had grand plans of extra sleep. I kept it easy.&lt;/p&gt;

&lt;h2 id="so-what-should-you-do"&gt;So what should you do?&lt;/h2&gt;

&lt;p&gt;Don’t try to wake up early tomorrow morning. Or any time this week. Read the sources above, and start paying attention to your energy levels.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4fe4b0278244ce9f65/1434910430454/photo-on-5-5-13-at-1-35-pm.jpg"&gt;&lt;img alt="Libby: Proof Reader and Professional Baby" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f65_1434910430454_photo-on-5-5-13-at-1-35-pm.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recommend that you spend a week or two recording when you wake up, and how you feel when you wake up. I just write the day, when I woke up, and a check or an X by it, if I felt good or bad when I woke up.&lt;/p&gt;

&lt;p&gt;Read the articles I mentioned earlier - don’t read so that you can jump into the Uberman sleep schedule, but so you can familiarize yourself with being alert and comfortable at strange hours. Read them so you can learn to ignore that voice that wants to scream bloody murder when you wake up early.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Tue, 07 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/misc/2013/05/07/how-to-wake-up-early/</guid></item><item><title>Hacking Italia</title><link>https://nicolaiarocci.com/hacking-italia/</link><description>&lt;p&gt;Aderisco con entusiasmo all’iniziativa di Salvatore.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://hackingitalia.com" title="Hacking Italia"&gt;Hacking Italia&lt;/a&gt; e’ un sito di “social news”, molto simile ad Hacker News, il celebre collettore di news per hacker di YCombinator. A che serve un sito italiano, e in italiano se c’e’ gia’ molto di piu’ e di meglio nel panorama internazionale? A mettere assieme una massa critica di persone “giuste” in Italia.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Vi consiglio di aggiungere HI ai vostri bookmark. Per quanto mi riguarda conto di essere molto attivo.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 07 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/hacking-italia/</guid></item><item><title>Lemma - Alpha 3 Ready to Play</title><link>https://etodd.io/2013/05/06/lemma-alpha-3-ready-to-play/</link><description>&lt;p&gt;&lt;div class="video"&gt;&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="line-height: 13px;"&gt;&lt;a href="http://lemmagame.com/downloads.html"&gt;Download for Windows&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://indiedb.com/games/lemma"&gt;Check out the IndieDB project page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://facebook.com/lemmagame"&gt;Like on Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twitter.com/et1337"&gt;Follow on Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After seven months of hard work, &lt;strong&gt;Alpha 3&lt;/strong&gt; is ready to play!&lt;/p&gt;
&lt;p&gt;Some interesting statistics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;28,000+&lt;/strong&gt; lines of code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;29 MB&lt;/strong&gt; of compressed voxel data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;63 MB&lt;/strong&gt; of sounds and music&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;38&lt;/strong&gt; animations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;60+&lt;/strong&gt; textures and normal maps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;220+&lt;/strong&gt; revisions since Alpha 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Incidentally, most of that is open source! If you're a developer, &lt;a href="https://github.com/et1337/Lemma"&gt;check it out on GitHub&lt;/a&gt;.&lt;/p&gt;</description><author>Evan Todd</author><pubDate>Mon, 06 May 2013 10:05:01 GMT</pubDate><guid isPermaLink="true">https://etodd.io/2013/05/06/lemma-alpha-3-ready-to-play/</guid></item><item><title>Drafting your first investment round.</title><link>https://klinger.io/posts/drafting-your-first-investment-round</link><description>The topic of investing is omnipresent in our startup world. Sooner or later most startup founders look for external funding. And i...</description><author>Blog posts of Andreas Klinger</author><pubDate>Mon, 06 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://klinger.io/posts/drafting-your-first-investment-round</guid></item><item><title>A weekend of train-ventures, dodgy restaurants, and the most amazing weather in the universe.</title><link>https://liza.io/a-weekend-of-train-ventures-dodgy-restaurants-and-the-most-amazing-weather-in-the-universe/</link><description>&lt;p&gt;I was meant to write this blog post four hours ago. Instead I got home and decided that since this one would have quite a bit of pictures in it and I&amp;rsquo;ve been running into bandwidth issues I may as well find a better solution for image hosting (as opposed to uploading everything to this server). I signed up to Amazon S3 on its free trial account and have been attempting to set it up ever since. Now I don&amp;rsquo;t even &lt;em&gt;want&lt;/em&gt; to write this stupid post anymore, but I will anyway because darn it I didn&amp;rsquo;t spend all this time and effort to set up one fricking S3 bucket just to give up at the very end.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 05 May 2013 21:09:35 GMT</pubDate><guid isPermaLink="true">https://liza.io/a-weekend-of-train-ventures-dodgy-restaurants-and-the-most-amazing-weather-in-the-universe/</guid></item><item><title>Building a FreeBSD NAS, part II: Base system setup</title><link>https://bastian.rieck.me/blog/2013/freebsd_nas_part_ii/</link><description>&lt;p&gt;This is part II of my journey into the wonderful world of building my
own NAS. &lt;a href="https://bastian.rieck.me/blog/2013/freebsd_nas_part_i/"&gt;Check out part I for an explanation of the hardware I
used&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="basic-installation"&gt;Basic installation&lt;/h1&gt;
&lt;p&gt;I quickly chose FreeBSD as the operating system for the NAS because it
is the one operating system that I am familiar with that also seems
suitable for servers. See &lt;a href="https://wiki.freebsd.org/WhyUseFreeBSD"&gt;the FreeBSD wiki for some other compelling
reasons&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After grabbing the &lt;code&gt;memstick&lt;/code&gt; image from &lt;a href="ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/9.1"&gt;the FTP
server&lt;/a&gt;,
I started installing the base system. I you have never done this before,
I would recommend reading &lt;a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook"&gt;the FreeBSD handbook
first&lt;/a&gt;,
in particular its &lt;a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook"&gt;section about the
installation&lt;/a&gt;.
They describe it &lt;em&gt;way better&lt;/em&gt; than I possibly could. Assuming you now
know what you are doing, you should &lt;em&gt;disable journaling for all
partitions on your SSD&lt;/em&gt;. You can do so prior to committing the
file system changes in the FreeBSD installer by selecting the advanced
options of your partitioning scheme. If you do not install the system on
an SSD, you need not heed my advice.&lt;/p&gt;
&lt;p&gt;Apart from the journaling, I went with the standard options. After the
setup finished, I of course downloaded the most recent ports collections
snapshots via &lt;code&gt;portsnap fetch extract&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id="linux-procfs-compatibility"&gt;Linux &lt;code&gt;procfs&lt;/code&gt; compatibility&lt;/h1&gt;
&lt;p&gt;I like to use &lt;code&gt;htop&lt;/code&gt; for additional sysadmin coolness, so I always
enable the Linux compatibility first. I first added the line
&lt;code&gt;linux_enable=&amp;quot;YES&lt;/code&gt; to &lt;code&gt;/etc/rc.conf&lt;/code&gt;. I then created the necessary
directories using &lt;code&gt;mkdir -p /usr/compat/linux/proc&lt;/code&gt;, and for
compatibility reasons, create a symbolic link via &lt;code&gt;ln -s /usr/compat /compat&lt;/code&gt;. Last, I added the following line into &lt;code&gt;/etc/fstab&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;linproc         /compat/linux/proc      linprocfs       rw      0       0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After a reboot, the new file system should be mounted and finally, the
port &lt;code&gt;htop&lt;/code&gt; can be installed.&lt;/p&gt;
&lt;h1 id="powerd-configuration"&gt;&lt;code&gt;powerd&lt;/code&gt; configuration&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://bastian.rieck.me/blog/2013/freebsd_nas_part_i/"&gt;In the first article&lt;/a&gt;, I talked at
lengths about trying to reduce the power consumption of the NAS. This is
where &lt;code&gt;powerd&lt;/code&gt; comes in handy. I added the following lines to
&lt;code&gt;/etc/rc.conf&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;powerd_enable=&amp;quot;YES&amp;quot;
powerd_flags=&amp;quot;-a adaptive -b adaptive&amp;quot;
economy_cx_lowest=&amp;quot;C2&amp;quot;
performance_cx_lowest=&amp;quot;C2&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This basically tells &lt;code&gt;powerd&lt;/code&gt; to always try to adjust the system
performance, depending on the current load of the system. The other two
options instruct the CPU to use the C2 state as its lowest state,
regardless of the system load. The CPU in my NAS is only capable of C2.
If your CPU manages the C3 state, the results will even be better. Use
&lt;code&gt;sysctl dev.cpu.0.cx_supported&lt;/code&gt; to query the supported states for the
first CPU, for example. &lt;a href="https://wiki.freebsd.org/TuningPowerConsumption"&gt;See the FreeBSD wiki for further power
consumption tuning tips&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="e-mail-configuration"&gt;E-mail configuration&lt;/h1&gt;
&lt;p&gt;For the time being, I decided &lt;em&gt;not&lt;/em&gt; to run my own mail server on the NAS
because I do not think I am qualified to do so. Since I still want to
rely on the reporting capabilities of daemons, I installed &lt;code&gt;ssmtp&lt;/code&gt; as an
alternative. Here&amp;rsquo;s an excerpt of its &lt;code&gt;man&lt;/code&gt;-page:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ssmtp is a send-only sendmail emulator for machines which normally pick
their mail up from a centralized mailhub (via pop, imap, nfs mounts  or
other  means).   It  provides the functionality required for humans and
programs to send mail via the standard or /usr/bin/mail user agents.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://bastian.rieck.me/blog/2008/ssmtp_and_gmail/"&gt;In a previous post&lt;/a&gt;, I already
talked about how to set up &lt;code&gt;ssmtp&lt;/code&gt; for Google Mail. This is exactly how
I proceeded this time. To completely disable &lt;code&gt;sendmail&lt;/code&gt;, the default MTA in
FreeBSD, I added the following lines to &lt;code&gt;/etc/rc.conf&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sendmail_enable=&amp;quot;NO&amp;quot;
sendmail_submit_enable=&amp;quot;NO&amp;quot;
sendmail_outbound_enable=&amp;quot;NO&amp;quot;
sendmail_msp_queue_enable=&amp;quot;NO&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Furthermore, I modified &lt;code&gt;/etc/mail/mailer.conf&lt;/code&gt; and replaced all entries
with &lt;code&gt;ssmtp&lt;/code&gt;. To wit:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sendmail        /usr/local/sbin/ssmtp
send-mail       /usr/local/sbin/ssmtp
mailq           /usr/local/sbin/ssmtp
newaliases      /usr/local/sbin/ssmtp
hoststat        /usr/bin/true
purgestat       /usr/bin/true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This procedure seems to be the official way of replacing &lt;code&gt;sendmail&lt;/code&gt; with
&lt;code&gt;ssmtp&lt;/code&gt;. At least, it is suggested by the maintainers of the &lt;code&gt;ssmtp&lt;/code&gt;
port.&lt;/p&gt;
&lt;p&gt;As a last touch, I disabled some of the periodic reports that are sent
by FreeBSD. These are the relevant parts of the &lt;code&gt;/etc/periodic.conf&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;daily_status_network_enable=&amp;quot;NO&amp;quot;
daily_status_mailq_enable=&amp;quot;NO&amp;quot;
daily_status_mail_rejects_enable=&amp;quot;NO&amp;quot;
daily_status_mail_rejects_enable=&amp;quot;NO&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This leaves with periodic e-mails about the disk status, user accounts,
and some other stuff. I don&amp;rsquo;t need to be informed about the network or
mail status.&lt;/p&gt;
&lt;h1 id="installing-ntfs-write-support"&gt;Installing NTFS write support&lt;/h1&gt;
&lt;p&gt;Some of my data is still on hard drives that were regularly read
and written to by Microsoft Windows (you may want to shudder now and
shun me, so go ahead). Since the default NTFS driver included in
FreeBSD is rather slow and cannot actually &lt;em&gt;write&lt;/em&gt; to these disks, I
installed the port &lt;code&gt;fusefs-ntfs&lt;/code&gt;. Its configuration was again very
simple and required only the line &lt;code&gt;fusefs_enable=&amp;quot;YES&amp;quot;&lt;/code&gt; in
&lt;code&gt;/etc/rc.conf&lt;/code&gt;, as well as the line &lt;code&gt;vfs.usermount=1&lt;/code&gt; in
&lt;code&gt;/etc/sysctl.conf&lt;/code&gt;. After rebooting, you should be able to use the
driver by issuing &lt;code&gt;ntfs-3g /dev/da0s1 /mnt&lt;/code&gt;, for example.&lt;/p&gt;
&lt;h1 id="conclusion"&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;This concludes the basic system setup. For the next part, I plan on
explaining my ZFS configuration as well as some tools that simplify
managing the server. Stay tuned.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sat, 04 May 2013 22:03:49 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/freebsd_nas_part_ii/</guid></item><item><title>The Prestige</title><link>https://olshansky.info/movie/the_prestige/</link><description>Olshansky's review of The Prestige</description><author>🦉 olshansky 🦁</author><pubDate>Sat, 04 May 2013 16:44:12 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_prestige/</guid></item><item><title>Gangster Squad</title><link>https://olshansky.info/movie/gangster_squad/</link><description>Olshansky's review of Gangster Squad</description><author>🦉 olshansky 🦁</author><pubDate>Sat, 04 May 2013 16:44:05 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/gangster_squad/</guid></item><item><title>How to set your Compose Key on XFCE/Xubuntu &amp;amp; LXDE Linux</title><link>https://duncanlock.net/blog/2013/05/03/how-to-set-your-compose-key-on-xfce-xubuntu-lxde-linux/</link><description>&lt;figure class="image-block"&gt;&lt;img alt="Blueprint style diagram showing the compose key sequence for the Euro currency symbol." src="https://duncanlock.net/images/posts/how-to-set-your-compose-key-on-xfce-xubuntu-linux/compose-key-diagram.png" /&gt;
&lt;figcaption&gt;Figure 1. Just hold down your chosen compose key, then press the other keys in turn: [compose key] + e + = gets you a Euro symbol.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The compose key on Linux is &lt;em&gt;incredibly&lt;/em&gt; useful, but not configured by default - and on &lt;span class="caps"&gt;XFCE&lt;/span&gt; there&amp;#8217;s currently no graphical &lt;span class="caps"&gt;UI&lt;/span&gt; to change it. However, it&amp;#8217;s pretty simple to change&amp;#8230;&amp;#8203; here&amp;#8217;s how to make the Caps Lock key your compose&amp;nbsp;key:&lt;/p&gt;
&lt;p&gt;In the file &lt;code&gt;/etc/default/keyboard&lt;/code&gt;, change &lt;code&gt;XKBOPTIONS&lt;/code&gt; to look like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="py"&gt;XKBOPTIONS&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"compose:caps"&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Save the file. You can now either reboot, restart X, or see &lt;a href="#_activating_your_change_without_rebooting"&gt;Activating your change without rebooting&lt;/a&gt;,&amp;nbsp;below.&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t want to use Caps Lock as your compose key, there are some other options to choose from in this file: &lt;code&gt;/usr/share/X11/xkb/rules/xorg.lst&lt;/code&gt; - search for &amp;#8216;compose&amp;#8217;, they&amp;#8217;re listed towards the end. Mine currently looks like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="table-block"&gt;&lt;table class="frame-all grid-all stretch"&gt;&lt;colgroup&gt;&lt;col style="width: 41%;" /&gt;&lt;col style="width: 59%;" /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="halign-left valign-top"&gt;Setting&lt;/th&gt;&lt;th class="halign-left valign-top"&gt;Compose Key&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:ralt&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Right Alt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:lwin&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Left Win&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:rwin&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Right Win&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:menu&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Menu&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:lctrl&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Left Ctrl&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:rctrl&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Right Ctrl&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:caps&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Caps Lock&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:102&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;&amp;lt;Less/Greater&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:paus&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Pause&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:prsc&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;PrtSc&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="halign-left valign-top"&gt;compose:sclk&lt;/td&gt;&lt;td class="halign-left valign-top"&gt;Scroll Lock&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_using_the_compose_key"&gt;Using the Compose&amp;nbsp;Key&lt;/h2&gt;&lt;p&gt;Try holding down the Caps Lock key and type the letter &lt;code&gt;l&lt;/code&gt;, followed by a dash you should get a British Pound symbol: £ -&amp;nbsp;magic!&lt;/p&gt;
&lt;p&gt;Generally you can just hold down your compose key then type a combo that kinda &amp;#8216;looks like&amp;#8217; the symbol you want, if they were drawn on top of each other. For example, &lt;code&gt;e&lt;/code&gt; followed by &lt;code&gt;=&lt;/code&gt; will get you a Euro symbol: €, &lt;code&gt;o&lt;/code&gt; followed by &lt;code&gt;c&lt;/code&gt; will get you a copyright symbol: © - and &lt;code&gt;1&lt;/code&gt; followed by &lt;code&gt;2&lt;/code&gt; gets you a half fraction:&amp;nbsp;½.&lt;/p&gt;
&lt;p&gt;These work anywhere you can type things. There&amp;#8217;s a list of some common ones &lt;a href="http://en.wikipedia.org/wiki/Compose_key#Common_compose_combinations"&gt;here&lt;/a&gt;, and a &lt;a href="http://www.hermit.org/Linux/ComposeKeys.html"&gt;full list here&lt;/a&gt;.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_activating_your_change_without_rebooting"&gt;Activating your change without&amp;nbsp;rebooting&lt;/h2&gt;&lt;section class="doc-section level-2"&gt;&lt;h3 id="_option_one"&gt;Option&amp;nbsp;One&lt;/h3&gt;&lt;p&gt;Once you&amp;#8217;ve changed your permanent setup by changing &lt;code&gt;/etc/default/keyboard&lt;/code&gt;, you can set your current session using &lt;code&gt;setxkbmap&lt;/code&gt;, like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;setxkbmap &lt;span class="nt"&gt;-option&lt;/span&gt; compose:caps&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;It uses the same names for keys as above. It&amp;#8217;s also possible to leave &lt;code&gt;/etc/default/keyboard&lt;/code&gt; alone and add this command to your &lt;code&gt;~/.xinit&lt;/code&gt;, &lt;code&gt;~/.xsession&lt;/code&gt; or the &lt;span class="caps"&gt;XFCE&lt;/span&gt; autostart commands instead. If you do that, it&amp;#8217;ll only apply to your login, not system wide&amp;nbsp;though.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-2"&gt;&lt;h3 id="_option_two"&gt;Option&amp;nbsp;Two&lt;/h3&gt;&lt;p&gt;This was the first method that I discovered and isn&amp;#8217;t a simple as Option One, but if that doesn&amp;#8217;t work for some reason, this should. Like it says at the top of &lt;code&gt;/etc/default/keyboard&lt;/code&gt;, check &lt;code&gt;/usr/share/doc/keyboard-configuration/README.Debian&lt;/code&gt; for what to do after you&amp;#8217;ve modified it. Mine currently&amp;nbsp;says:&lt;/p&gt;
&lt;div class="quote-block"&gt;&lt;blockquote&gt;&lt;p&gt;After modifying &lt;code&gt;/etc/default/keyboard&lt;/code&gt;, you can apply the changes to the Linux
console by running &lt;code&gt;setupcon&lt;/code&gt;. If X is configured to use that file too, then the
changes will become visible to X only&amp;nbsp;if&lt;/p&gt;
&lt;p&gt;&lt;code&gt;udevadm trigger --subsystem-match=input --action=change&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;is called, or the system is&amp;nbsp;rebooted.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt;When it says Console, it means it&amp;#8201;&amp;#8211;&amp;#8201;not a terminal window, an actual login console&amp;#8201;&amp;#8211;&amp;#8201;try pressing &lt;code&gt;Ctrl + Alt + F1&lt;/code&gt; and logging in, then&amp;nbsp;running:&lt;/p&gt;
&lt;div class="listing-block"&gt;&lt;pre class="rouge highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;setupcon
&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;udevadm trigger &lt;span class="nt"&gt;--subsystem-match&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;input &lt;span class="nt"&gt;--action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;change&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;These don&amp;#8217;t print anything out when they run, disconcertingly. Once you&amp;#8217;ve run them in the Console, &lt;code&gt;Ctrl + Alt + F7&lt;/code&gt; should get you back to the default console session you were in&amp;nbsp;before.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Sat, 04 May 2013 01:40:46 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/05/03/how-to-set-your-compose-key-on-xfce-xubuntu-lxde-linux/</guid></item><item><title>A Game of Snails - Breeding system</title><link>https://liza.io/a-game-of-snails-breeding-system/</link><description>&lt;p&gt;Over the past couple of weeks I&amp;rsquo;ve been attempting to get up at 5am to work on snails before going in to actual work. It&amp;rsquo;s been working for the most part apart from a couple of slip-ups and basically goes like this:&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Fri, 03 May 2013 13:57:39 GMT</pubDate><guid isPermaLink="true">https://liza.io/a-game-of-snails-breeding-system/</guid></item><item><title>They Teach You to Write Wrong</title><link>https://zacs.site/blog/they-teach-you-to-write-wrong.html</link><description>&lt;p&gt;This was a difficult piece for me to write because my feelings regarding academic writing are so conflicting. On the one hand, I view academic writing&amp;#160;&amp;#8212;&amp;#160;by which I mean the type of writing taught in American schools&amp;#160;&amp;#8212;&amp;#160;as a certain boon: it introduces kids to the writer&amp;#8217;s craft, teaches young writers how to write, and provides an introduction to organizing and conveying thoughts and ideas in a coherent and orderly fashion. On the other hand though, I also feel it is very restrictive: beholden to the five-paragraph format, I feel much more better writing would come of less severe restrictions. And this is totally ignoring the morass that is citations in academic writing, a topic I discussed at length in &lt;a href="https://zacs.site/blog/citational-fallacy.html"&gt;&lt;em&gt;Citational Fallacy&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/they-teach-you-to-write-wrong.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 03 May 2013 10:59:44 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/they-teach-you-to-write-wrong.html</guid></item><item><title>Distro Picker: Chooses your Linux-Distribution</title><link>https://www.zufallsheld.de/2013/05/03/distro-picker-chooses-your-linux-distribution/</link><description>&lt;p&gt;&lt;a href="http://allanmcrae.com/2013/05/interesting-links-april-2013/"&gt;Allan McRae&lt;/a&gt;, Pacman developer, found an interesting small tool,
called &lt;a href="https://linuxformat.com/tuxradarchive/content/distro-picker-0"&gt;Distro Picker&lt;/a&gt;. This tool finds the Linux-Distribution based
on what you prefer as a Desktop Environment, Package Manager and other&amp;nbsp;settings.&lt;/p&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;

&lt;p&gt;When I tried it out, it offered me my current distro: &lt;a href="https://www.archlinux.org/"&gt;Arch Linux&lt;/a&gt;, so
interestingly, it works really&amp;nbsp;well …&lt;/p&gt;</description><author>zufallsheld</author><pubDate>Fri, 03 May 2013 10:37:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/05/03/distro-picker-chooses-your-linux-distribution/</guid></item><item><title>Lifestyle Design (AKA Intentional Habit Building)</title><link>https://josh.works/intentional-habit-building</link><description>&lt;p&gt;The top New Years resolutions indicate that Americans know they need to make changes. The top three resolutions always relate to getting in shape, eating better, spending time better, and spending money better.&lt;/p&gt;

&lt;p&gt;Everyone is aware that change is good, even necessary, but given the rate of failed attempts to implement new habits, it’s harder to implement than to plan. I’ve spent the last few months slowly learning about how to get better at the implementation side of things - thus far, I’m not too good at it, but I’ve been learning a lot along the way, and I have very high hopes for the future. I’m going to try to explain how I see the relationship between habit building, will-power/motivation, and self-evaluation. This could be lengthy - it’s probably not for everyone - but I hope it will be helpful to some.&lt;/p&gt;

&lt;h2 id="trying-hard-doesnt-cut-it-anymore"&gt;“Trying hard” doesn’t cut it anymore&lt;/h2&gt;

&lt;p&gt;A traditional understanding of habit building is thus: “If you can do it for 30 days, it’s a habit, so just push through that month, and you’re good to go.”&lt;/p&gt;

&lt;p&gt;I have no idea if this is true - I’ve tried to reach that magical 30 day mark a number of times and have never been able to do it. I’ve tried with various forms of exercise, waking up early (that attempt was a joke. I woke up early zero times), modifying spending habits, writing, flossing, cooking, reading, and probably a dozen other attempts.&lt;/p&gt;

&lt;p&gt;Not only did I not reach the 30 day mark, but my attempts were comically short-lived, but not for lack of effort or desire. From my attempts to wake up early (didn’t happen once, and I’ve tried a lot of times) to my attempts to floss (it worked great, until I forgot completely to even try to make it a habit), I’ve had almost zero success at intentionally creating habits.&lt;/p&gt;

&lt;p&gt;Now, how much success have I had unintentionally creating habits? I’ve achieved a 100% success rate,
without even trying! Some habits are good, and others are bad, but just about every habit I have has spontaneously arisen. And I run my life by habit - far more than I like to consider.&lt;/p&gt;

&lt;p&gt;Habits are a lot like instincts - it’s what we do without thinking about it. If someone raises their hand to slap you, you cringe, or put your hands up, or fall in a heap on the floor. All without thinking. Instincts can save your life or kill you, just like habits. By examining how our
current habits have arisen, we can learn how to take control of that process for our own benefit.&lt;/p&gt;

&lt;h2 id="willpower---never-there-when-you-really-want-it"&gt;Willpower - Never there when you really want it&lt;/h2&gt;

&lt;p&gt;Forget natural gas, coal, water, or cute baby seals - willpower is man’s most important resource, and it is in awful short supply. We (mankind) used to think that those who got a lot done had more self-control, or willpower, or discipline, or motivation, or whatever. That seems to be the inescapable conclusion of  &lt;a href="http://www.youtube.com/watch?v=lsSC2vx7zFQ"&gt;this video.&lt;/a&gt; Or, if you’re into climbing, &lt;a href="https://www.youtube.com/watch?v=H0vOH_XGWFU"&gt;this video&lt;/a&gt; may be motivating.&lt;/p&gt;

&lt;p&gt;Here’s the point of both videos: When the video finishes, don’t you feel like you want to go out and work really, really hard? The path seems clear, and it’s marked by blood, sweat, and tears - it fits with out perspective of how this sort of success is achieved.&lt;/p&gt;

&lt;p&gt;These stories makes sense, right? If we want something, we’ll work hard for it. If we’re motivated, we’ll push through. If we psych ourselves up enough, and get angry, we’ll ignore our weaker self who’s begging for rest, food, and socialization - you know, all that useless stuff.&lt;/p&gt;

&lt;p&gt;It all makes sense, except it is dangerously wrong.&lt;/p&gt;

&lt;p&gt;(To help communicate these ideas, I’ve created very advanced graphics, for your educational enjoyment)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4ee4b0278244ce9f37/1434910429232/pic-05022013-0011.jpg"&gt;&lt;img alt="" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4ee4b0278244ce9f37_1434910429232_pic-05022013-0011.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most people start a new project starry-eyed and excited. No shame there, of course. We humans usually don’t try to do things without some sort of good reason.&lt;/p&gt;

&lt;p&gt;Unfortunately, if your motivation is very, very high, there is only one direction it can go. Down. Way down. Please note how that line in the graph (X-axis is time. Y-axis is motivation) plunges, then ceases to exist.&lt;/p&gt;

&lt;p&gt;Humans are meaning-makers. This means we find meaning  everywhere, and we often make our next choices based on what’s recently happened. If your motivation evaporated, you want to stop trying. Trying is now making you miserable instead of motivated. You don’t want to be miserable, right? The whole reason for trying this new thing was to be in a better place than you are now. So, you rightfully stop trying.&lt;/p&gt;

&lt;p&gt;After repeating this frustrating cycle a few more times, you have decided that you are simply not a person who can make new habits/do hard things/change your own course in life/ignore the status quo. There are those who can do that, and they have innate abilities to do amazing things effortlessly. It must be effortless, after all, because their life seem joyful and your life becomes miserable whenever you try the same things.&lt;/p&gt;

&lt;p&gt;For proof that the thing that makes one person feel amazing makes another one miserable, please refer to: “professional” students, marathon runners, readers, and healthy-diet-eaters.&lt;/p&gt;

&lt;p&gt;We tell ourselves we can’t accomplish goals because we don’t have enough motivation, but this is far too simple of an explanation.&lt;/p&gt;

&lt;h2 id="context-matters-and-its-subtle"&gt;Context matters, and it’s subtle&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4ee4b0278244ce9f3d/1434910429743/pic-05032013-002.jpg"&gt;&lt;img alt="" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4ee4b0278244ce9f3d_1434910429743_pic-05032013-002.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I propose an alternate method to building habits, and there are two important elements.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;It must be &lt;em&gt;useful to fail&lt;/em&gt; during your attempt.&lt;/li&gt;
  &lt;li&gt;You must not try very hard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These criteria are so frustrating. It’s like saying&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;you have to run a marathon, but don’t try that hard.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Make sure to do well in this difficult class, but whatever you do, don’t spend a lot of hours studying.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Following these rules takes careful thought and (yes) work.&lt;/p&gt;

&lt;p&gt;The reason failure must be useful is this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If your failure is an opportunity to feel shame and belittle yourself, you’re learning, very quickly, that attempts to change lead to you feeling like s**t. It also means that all expended effort is wasted, and you’re not only back where you started, but you’re worse off. (Because of the shame and self-deprecating feedback.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The reason you cannot try very hard is this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Motivation is limited. If you’re expending it all to make some change in your life, you have nothing left over to make other necessary choices and you get very unhappy very quickly.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Science has proven (and everyone knows intuitively) that willpower/motivation/discipline is a finite resource. It’s like your muscles - when you exercise, you get more and more tired, until you just can’t perform like you wish you could. Then you go home, eat some food and rest, and you’re ready to do it again.&lt;/p&gt;

&lt;p&gt;If I try to undertake a new task, using my two rules, I must create a context in which I am more likely to succeed than not, and if I don’t succeed, my instinct is to examine my context, not my willpower. An easy example is this: I try to get up early, but if I’m going to bed at midnight, I’m not setting myself up for success, huh?&lt;/p&gt;

&lt;p&gt;If I start going to bed at ten I can create a context where I am more likely to succeed at my goal. If I go to bed at midnight, I don’t try to get up early - why take the hit to my motivation when the context is already unfavorable?&lt;/p&gt;

&lt;h2 id="what-did-you-expect"&gt;What did you expect?&lt;/h2&gt;

&lt;p&gt;When you are trying a new habit, there are huge ups and downs. It is foolishness to not expect this. Most people DO expect fluctuation, but if the expectation does not lead to preparation, it’s useless. I’ll talk more about preparation soon.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4ee4b0278244ce9f31/1434910429845/pic-05022013-0041.jpg"&gt;&lt;img alt="" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4ee4b0278244ce9f31_1434910429845_pic-05022013-0041.jpg_" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the last few months, I’ve been working towards building healthy habits in three areas. I will devote at least the next three posts to detailing my successes and failures in these areas.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Waking up early&lt;/li&gt;
  &lt;li&gt;Exercising daily (climbing related)&lt;/li&gt;
  &lt;li&gt;Getting my finances together&lt;/li&gt;
&lt;/ul&gt;</description><author>Josh Thompson</author><pubDate>Fri, 03 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/intentional-habit-building</guid></item><item><title>Guida introduttiva agli HTTP Cache Header</title><link>https://nicolaiarocci.com/guida-introduttiva-agli-http-cache-header/</link><description>&lt;p&gt;Cosa sono i gli HTTP Cache Header e come funzionano? Che uso ne fanno i browser e le CDN? Come è preferibile impostarli per ottimizzare le prestazioni di un sito o di un servizio web? Se volete saperne di più &lt;!-- raw HTML omitted --&gt;A Beginner’s Guide to HTTP Cache Headers&lt;!-- raw HTML omitted --&gt; fa senz’altro per voi.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Fri, 03 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/guida-introduttiva-agli-http-cache-header/</guid></item><item><title>Andrew Brant: Founder of Mt. Zion Press</title><link>https://solomon.io/andrew-brant-founder-of-mt-zion-press/</link><description>Andrew Brant is the founder of Mt. Zion Press, a new Chicago art collective.</description><author>Sam Solomon</author><pubDate>Fri, 03 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/andrew-brant-founder-of-mt-zion-press/</guid></item><item><title>A Game of Snails - feature list</title><link>https://liza.io/a-game-of-snails-feature-list/</link><description>&lt;p&gt;I figured I&amp;rsquo;d put together a list of the main features I need to finish for A Game of Snails. If anything, it&amp;rsquo;ll help me gather my thoughts and track my progress better as well as helping me figure out what to work on next. What I should be doing is compiling specs properly for this, but I&amp;rsquo;ve been too preoccupied with actually working on the thing to keep up with the documentation. Not to mention this game has been in my head for so long (7 years, but arguably longer) and I&amp;rsquo;ve thought and rethought pretty much every single one of these so much that I feel like I know what it needs to be inside and out. Let&amp;rsquo;s hope I don&amp;rsquo;t get lost.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Thu, 02 May 2013 22:28:57 GMT</pubDate><guid isPermaLink="true">https://liza.io/a-game-of-snails-feature-list/</guid></item><item><title>People Still Don't Know what I do</title><link>https://zacs.site/blog/people-still-dont-know-what-i-do.html</link><description>&lt;p&gt;Virtually every time Dan Benjamin is interviewed, the host eventually asks the same question posed by numerous interviewers of days gone by: &amp;#8220;When people ask what you do, what do you tell them?&amp;#8221; And every time, Dan answers the same way, saying that his answer depends on the person asking. For some, Dan responds that he is in broadcasting and leaves it at that; in other cases he goes in to more detail, qualifying that statement by describing his podcast network. He chooses his answer based on the level to which that person would understand his explanation, because as Dan has said each time in response to the aforementioned question, there are some people that still don&amp;#8217;t know what podcasts are.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/people-still-dont-know-what-i-do.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 02 May 2013 17:57:45 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/people-still-dont-know-what-i-do.html</guid></item><item><title>Abandoned cabin built for significant snowfall</title><link>http://cabinporn.com/post/48308500326/abandoned-cabin-built-for-significant-snowfall</link><description>&lt;p&gt;Located outside Silverton, Colorado. I have heard great things about the states out west and Colorado in particular. I would love to visit there some day, especially if I could spend a few nights in a cabin like this.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/48308500326/abandoned-cabin-built-for-significant-snowfall"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 02 May 2013 17:19:24 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/48308500326/abandoned-cabin-built-for-significant-snowfall</guid></item><item><title>Talking about visualization</title><link>https://bastian.rieck.me/blog/2013/talking_about_visualization/</link><description>&lt;p&gt;I recently had the opportunity of giving a talk in the &lt;a href="http://www.mathcomp.uni-heidelberg.de/index.php?id=192"&gt;HGS MathComp Fellows
Seminar&lt;/a&gt;. This
is a rather informal venue where doctoral students of &lt;a href="http://www.mathcomp.uni-heidelberg.de"&gt;my graduate
school&lt;/a&gt; may present their thesis
work or give introductions to their field. I quite enjoyed giving the
talk as the atmosphere was very encouraging.&lt;/p&gt;
&lt;p&gt;For my talk, I chose the rather tongue-in-cheek title &lt;em&gt;&amp;ldquo;Oh my god, it&amp;rsquo;s
full of data!&amp;rdquo;&lt;/em&gt;, which is a very unsubtle reference to 2001 Space
Odyssey. &lt;a href="https://bastian.rieck.me/talks/full_of_data.pdf"&gt;Checkout my slides for more
information&lt;/a&gt;. I might even get my 15 minutes
of internet fame, as the talks are usually recorded and uploaded to
YouTube. Let&amp;rsquo;s see how that is going to work out.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Thu, 02 May 2013 16:04:36 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/talking_about_visualization/</guid></item><item><title>You are not Steve Jobs</title><link>https://medium.com/editors-picks/9ae1727d2479</link><description>&lt;p&gt;Two interesting anecdotes showing a different, less praiseworthy side of Steve Jobs. The man was not perfect, as many purported him to be in the sad hours following his death, but a mere mortal not just like the rest of us, but human nonetheless.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;He made himself so fearful and terrible that an entire group of amazing, talented, hard working people, ended up getting screamed at wrongfully. It was his fault that the MobileMe launch went so poorly, not ours.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="https://medium.com/editors-picks/9ae1727d2479"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 02 May 2013 14:40:53 GMT</pubDate><guid isPermaLink="true">https://medium.com/editors-picks/9ae1727d2479</guid></item><item><title>How Large Will the Paid Feed Reader Market Be?</title><link>http://www.rumproarious.com/2013/04/18/how-large-will-the-payed-feed-reader-market-be/</link><description>&lt;p&gt;&amp;#8220;This isn&amp;#8217;t going to be a huge world changing ecosystem, but there is room for one little monster to take it all.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Although I feel Alex Kessinger&amp;#8217;s numbers would have benefited from some more research and the methods used to obtain his eventual conclusion could use some polish, his estimate seems to at least be in the ballpark of probability, as does his conclusion.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.rumproarious.com/2013/04/18/how-large-will-the-payed-feed-reader-market-be/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 02 May 2013 00:01:26 GMT</pubDate><guid isPermaLink="true">http://www.rumproarious.com/2013/04/18/how-large-will-the-payed-feed-reader-market-be/</guid></item><item><title>Two years of life as an expat coder in middle-of-no-where Japan</title><link>http://www.bemmu.com/two-years-of-candy</link><description>&lt;p&gt;After reading this article, I went back and forth trying to decide whether or not I should link to it. The piece was not particularly remarkable in any way, after all. Regardless of how I justified not writing about it though, I kept coming back to this story until I eventually gave in. It&amp;#8217;s a touching story tinged with the melancholy undertone of existential ennui. Having spent months away from home multiple times in the past, I can empathize with the the author&amp;#8217;s sentiment.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.bemmu.com/two-years-of-candy"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 01 May 2013 19:37:47 GMT</pubDate><guid isPermaLink="true">http://www.bemmu.com/two-years-of-candy</guid></item><item><title>Snails, running, and Sweden</title><link>https://liza.io/snails-running-sweden/</link><description>&lt;p&gt;This is going to be  two-part post about both A Game of Snails and running (and Sweden!)&lt;/p&gt;
&lt;h1 id="a-game-of-snails"&gt;A Game of Snails&lt;/h1&gt;
&lt;p&gt;I took a few days off of A Game of Snails, but it&amp;rsquo;s coming along pretty nicely overall. The last week has been set on setting up the database. You can now save users and snails to the database, load a player&amp;rsquo;s snails when they log in, etc. Up next I just need to start saving a player&amp;rsquo;s snail jars (players can buy more jars with virtual currency  to be able to house more snails). The most daunting upcoming task will be migrating the server to a proper host and setting the whole thing up in a live environment.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Wed, 01 May 2013 19:04:13 GMT</pubDate><guid isPermaLink="true">https://liza.io/snails-running-sweden/</guid></item><item><title>Acetylides from Alkynes, And Substitution Reactions of Acetylides</title><link>https://www.masterorganicchemistry.com/2013/05/01/acetylide-formation-alkylation/</link><description>Alkylation of acetylides Terminal alkynes have unusually acidic C–H bonds (pKa 25). Treatment with a strong base such as sodium amide (NaNH2) gives an acetylide,</description><author>Master Organic Chemistry</author><pubDate>Wed, 01 May 2013 15:03:07 GMT</pubDate><guid isPermaLink="true">https://www.masterorganicchemistry.com/2013/05/01/acetylide-formation-alkylation/</guid></item><item><title>Women, Tech Conferences, and the Bullshit Surrounding Them</title><link>http://www.sugarrae.com/rants-in-bitchland/women-tech-conferences-and-bs/</link><description>&lt;p&gt;In the past I have written one article about women and equality, &lt;a href="https://zacs.site/blog/a-crying-shame.html"&gt;&lt;em&gt;A Crying Shame&lt;/em&gt;&lt;/a&gt;. I am quite proud of that article. So much so, in fact, that unlike many of the other topics I rehash here, I have felt no need to write anything more on the subject. I did feel pushed to at least mention the article linked at the head of this post, however, especially after listening to what I seem to recall was episode #114 of Back to Work a few weeks ago. In &lt;a href="http://5by5.tv/b2w/114"&gt;I&amp;#8217;m Moving to FudgePacker&lt;/a&gt;, Merlin Mann talked about misconstrued statistics and how improper representations of inaccurate statistics can lead to incorrect conclusions on important issues when in actuality, maybe&amp;#160;&amp;#8212;&amp;#160;just maybe&amp;#160;&amp;#8212;&amp;#160;it isn&amp;#8217;t quite as bad as everyone likes to stand up and claim it to be.&lt;/p&gt;

&lt;p&gt;Merlin&amp;#8217;s example chronicled a previous discussion with a woman advocating equality in the tech sector. She argued citing a statistic claiming that women receive, on average, a significantly smaller salary than their male counterparts. In response, Merlin asked whether she or any of her female co-workers experienced this disproportionality; she responded that none had. He also pointed out that in citing an average, by definition an equal number of people receiving a salary greater than the average must also receive a salary smaller than the average, and that the difference in those amounts must be the same. In other words, if on average women are paid 75&lt;code&gt; of the wages given to their male co-workers, for example, and within this sample group of women they are all paid 100&lt;/code&gt; of the wages given to their male counterparts, it follows that in order for the statistic to be accurate, some women, somewhere, must be receiving 25&lt;code&gt; less than the average, or 50&lt;/code&gt; of the wages allocated to their male counterparts. And really&amp;#160;&amp;#8212;&amp;#160;and this was his ultimate point&amp;#160;&amp;#8212;&amp;#160;is this actually happening anywhere?&lt;/p&gt;

&lt;p&gt;But back to Rae Hoffman&amp;#8217;s article, the piece that got me started down this rabbit trail:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Of course, some people look at the lineup and immediately assume highly talented women are being &amp;#8216;excluded&amp;#8217;. Of course, they don&amp;#8217;t know that for a fact. For all they know, 95&lt;code&gt; of speaker pitches came from men and thus why they ended up with a 95&lt;/code&gt; male speaker line up once they whittled down the list to the best pitches.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.sugarrae.com/rants-in-bitchland/women-tech-conferences-and-bs/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 01 May 2013 13:40:56 GMT</pubDate><guid isPermaLink="true">http://www.sugarrae.com/rants-in-bitchland/women-tech-conferences-and-bs/</guid></item><item><title>Habits, Milestones, and Climbing</title><link>https://josh.works/habits-milestones-climbing</link><description>&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4de4b0278244ce9f1c/1434910429845/pic-04292013-003.jpg"&gt;&lt;img alt="" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4de4b0278244ce9f1c_1434910429845_pic-04292013-003.jpg_" /&gt;&lt;/a&gt;
Since April 9th, I have spent exactly 70 minutes training for climbing. Prior to April 27th, I have climbed exactly seven times in the last five months.&lt;/p&gt;

&lt;p&gt;I just spent two days at the New River Gorge and exceeded my expectations, considering my almost half-year hiatus from regular climbing.&lt;/p&gt;

&lt;h2 id="return-on-investment"&gt;Return on Investment&lt;/h2&gt;

&lt;p&gt;I’ve been training my climbing-specific strength every other day using a metal door frame in my apartment - it takes exactly ten minutes, and I record exactly how much of each task I accomplish, so I can see trends (hopefully upward) over time.
more&lt;/p&gt;

&lt;p&gt;For those of you who are interested in the details, I’ll explain that below. If you are interested in principles and not in climbing, skip this part:&lt;/p&gt;

&lt;p&gt;The Training Regimen:&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4de4b0278244ce9f23_1434910429539_pic-04292013-007.jpg_" /&gt;&lt;/p&gt;

&lt;p&gt;Through a totally non-scientific process, I came up with the following ten-minute workout. Each minute I begin the task, and if I finish it before the minute is up, I can rest. If I can’t complete the task, I record how many reps I did. The first three minutes are an abbreviated warm-up.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Ten pullups, then a 15 second L-sit with arms at 90 degrees&lt;/li&gt;
  &lt;li&gt;One frenchie in an L-sit position, holding each position for five seconds.&lt;/li&gt;
  &lt;li&gt;Three pullups using three fingers (on each hand, obviously - no one-armed pullups for me, yet.)&lt;/li&gt;
  &lt;li&gt;Sixteen “touches”. (A “touch” is where I hang from the frame, and pop up and touch a wooden beam that is conveniently placed directly above the door. It allows me to determine if I’ve actually reached it, or just swung and missed. It’s like campusing, but I always return to the starting position, then go up with the other hand.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img alt="This is sort of like campusing, but without really going anywhere." src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4de4b0278244ce9f1f_1434910428370_pic-05012013-002.jpg_" /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Rest.&lt;/li&gt;
  &lt;li&gt;Twelve “touches”&lt;/li&gt;
  &lt;li&gt;Rest.&lt;/li&gt;
  &lt;li&gt;Ten “touches”&lt;/li&gt;
  &lt;li&gt;Rest&lt;/li&gt;
  &lt;li&gt;Lock off at 90 degrees till failure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using this workout, I could make a very limited time investment and track my returns. My initial gain was huge: 33-50% improvement in most areas over two weeks. I suspect, however, that
all of that improvement was just getting back to my prior levels of strength.&lt;/p&gt;

&lt;h2 id="the-importance-of-goals"&gt;The Importance of Goals&lt;/h2&gt;

&lt;p&gt;I completed my first “iteration” seven times over two weeks. I had significant improvement from the first workout to the last. Two things kept me motivated to keep trying hard at this workout:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;I wanted to improve at least one number every single time I exercised. I had seven different exercises to try, and plenty of opportunity to push one just a little higher. Since I was recording my progress and could see exactly how many reps I could do my last workout, it took zero mental effort to know how much I was aiming for time time around.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I knew I was going to the New River Gorge soon. This trip happened over the weekend, and while I did not climb as well as I did when I was able to climb ten hours a week at the gym, I climbed much better than I should have for not being able to train on a wall for five months. I was motivated to train because I would be able to compare my strength against the real world of outdoor climbing. It wouldn’t be me vs. a door frame any more, but me vs. well-established routes at one of the best crags in America.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="my-benchmark"&gt;My Benchmark&lt;/h2&gt;

&lt;p&gt;I am now updating the climbing portion of my exercising. (Every other day I alternate training for climbing and Kettle Bell Swings) I will focus on more dynamic movement, and I’ll start adding weight. I am heading back to the NRG in a month or so, so I will get to give my “benchmark route” another attempt.&lt;/p&gt;

&lt;p&gt;The route is called Lactic Acid Bath, and it’s a steep route that, as the name suggests, easily generates tremendous amounts of lactic acid. I’ve tried it a half-dozen times over the years, always to be amazed at the sheer power and endurance required to send such a route. Late 2011 was the first time I was strong enough to do all the individual moves, and I was able to finish it. Mid 2012, when I was in very good climbing shape, I did it with one fall. That is the best I’ve done on LAB.&lt;/p&gt;

&lt;p&gt;This weekend, after five months of barely any real climbing, I was able to get to within three moves of my prior high point. (For those of you that know the route, I barely got to the knee-bar rest a few feet above the crux undercling section.) I was too tired to go any farther, but I was still tremendously pleased.&lt;/p&gt;

&lt;p&gt;The biggest breakthrough I have had recently is not specifically the training, but this method of training - building a workout and meticulously recording my progress. Without those meticulous records, I would not be able to see much improvement at all, and I would quickly grow demotivated and bored. I am now excited every time I get to work out, to try to push one or two numbers on rep farther.&lt;/p&gt;

&lt;p&gt;How about you? Do you record your progress with great detail when you train? If you’re at all like me, you don’t record that stuff - you’d rather just climb.&lt;/p&gt;

&lt;p&gt;Do you think you should start tracking (in detail) your training?&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Wed, 01 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/habits-milestones-climbing</guid></item><item><title>kokopelli</title><link>https://mattkeeter.com/projects/kokopelli</link><description>Rethinking CAD/CAM</description><author>Matt Keeter</author><pubDate>Wed, 01 May 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://mattkeeter.com/projects/kokopelli</guid></item><item><title>How I made a simple Business Model Canvas for geekar</title><link>https://myownfortune.wordpress.com/2013/04/30/how-i-made-a-simple-business-model-canvas-for-geekar/</link><description>The power of simple python scripting is one of the themes of this blog, and now I can show a great practical example. I needed to create something that looks like this: This is a simple HTML table with some CSS. But trying to write it in HTML would result in a lot of copy-pasting [&amp;#8230;]</description><author>My Own Fortune</author><pubDate>Wed, 01 May 2013 01:52:08 GMT</pubDate><guid isPermaLink="true">https://myownfortune.wordpress.com/2013/04/30/how-i-made-a-simple-business-model-canvas-for-geekar/</guid></item><item><title>Business Model Exercise #1: geekar</title><link>https://myownfortune.wordpress.com/2013/04/30/business-model-exercise-1-geekar/</link><description>I started exercising my idea muscles a few days ago. Every day I think of 10 startup ideas and develop one into a business model. Some will be published here. Lets begin with the first example &amp;#8211; geekar, an Augmented Reality-enhanced retail, in the most early-adopter industry I know: geeks. geekar will sell comic books, [&amp;#8230;]</description><author>My Own Fortune</author><pubDate>Wed, 01 May 2013 01:23:02 GMT</pubDate><guid isPermaLink="true">https://myownfortune.wordpress.com/2013/04/30/business-model-exercise-1-geekar/</guid></item><item><title>The Simple Truth</title><link>http://yudkowsky.net/rational/the-simple-truth</link><description>&lt;p&gt;When I first came across this article a few weeks ago while browsing Less Wrong, Eliezer Yudkowsky&amp;#8217;s chronicle struck me as the perfect example illustrating the importance of a number of different things, primary of which was the significance of asking the right question. Alongside this topic the author also touched on the value of keeping an open mind, possessing a willingness to abandon pre-conceived notions when presented with new evidence, and arguing in univocal terms. It&amp;#8217;s long, but a very well-written and thought-provoking piece.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://yudkowsky.net/rational/the-simple-truth"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 30 Apr 2013 18:17:29 GMT</pubDate><guid isPermaLink="true">http://yudkowsky.net/rational/the-simple-truth</guid></item><item><title>Our Lost Heritage</title><link>http://www.motherjones.com/environment/2013/04/heritage-apples-john-bunker-maine</link><description>&lt;p&gt;&amp;#8220;In the mid-1800s, there were thousands of unique varieties of apples in the United States, some of the most astounding diversity ever developed in a food crop. Then industrial agriculture crushed that world. The apple industry settled on a handful of varieties to promote worldwide, and the rest were forgotten. They became commercially extinct&amp;#160;&amp;#8212;&amp;#160;but not quite biologically extinct.&amp;#8221;&lt;/p&gt;

&lt;p&gt;A nice change of pace from the usual; a delightful article well worth the read.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.motherjones.com/environment/2013/04/heritage-apples-john-bunker-maine"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 30 Apr 2013 14:59:20 GMT</pubDate><guid isPermaLink="true">http://www.motherjones.com/environment/2013/04/heritage-apples-john-bunker-maine</guid></item><item><title>Quali sono i font migliori per scrivere codice?</title><link>https://nicolaiarocci.com/quali-sono-i-font-migliori-per-scrivere-codice/</link><description>&lt;p&gt;Malgrado la giovane età Source Code Pro di Adobe domina incontrastato, col più classico Consolas come sua regina. Inconsolata-g e Monaco seguono a distanza mentre il mio preferito, Menlo, è tristemente indietro: &lt;!-- raw HTML omitted --&gt;What Are the Best Programming Fonts?&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 30 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/quali-sono-i-font-migliori-per-scrivere-codice/</guid></item><item><title>How to Start a Talk Show</title><link>https://solomon.io/how-to-start-a-talk-show/</link><description>How would you start your own talk show? The cool thing about creating a talk show is that it costs nothing other that time and a few opinions.</description><author>Sam Solomon</author><pubDate>Tue, 30 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/how-to-start-a-talk-show/</guid></item><item><title>Jenny Lustig: Starter League Mentor</title><link>https://solomon.io/jenny-lustig-starter-league-mentor/</link><description>Jenny Lustig is an alumni of, and is currently a front-end mentor at The Starter League, a web development school in Chicago.</description><author>Sam Solomon</author><pubDate>Tue, 30 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/jenny-lustig-starter-league-mentor/</guid></item><item><title>2013-04-30</title><link>https://ho.dges.online/pictures/2013-04-30/</link><description/><author>ho.dges.online</author><pubDate>Tue, 30 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-04-30/</guid></item><item><title>Why It's Time to Sunset jQuery</title><link>http://professionalaspnet.com/archive/2013/04/14/Why-Its-Time-to-Sunset-jQuery.aspx</link><description>&lt;p&gt;When jQuery first came out it was a godsend. For most developers, it remains the same indispensable tool without which anything more than mundane cookie management, if even that, would prove an insurmountable obstacle. In the afore linked article along with &lt;a href="http://professionalaspnet.com/archive/2012/11/01/Web-Performance-Optimization_3A00_-When-Possible-Use-Native-Selectors-Instead-of-jQuery.aspx"&gt;his companion piece encourage developers to rely more heavily on Javascript&amp;#8217;s native functions&lt;/a&gt;, Chris Love makes the compelling case against what has become the de-facto Javascript framework. A stickler for optimization myself, I plan to keep these articles close at hand for the next site I build, as I suggest any developer concerned with optimization&amp;#160;&amp;#8212;&amp;#160;regardless of skill level&amp;#160;&amp;#8212;&amp;#160;do as well.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://professionalaspnet.com/archive/2013/04/14/Why-Its-Time-to-Sunset-jQuery.aspx"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 30 Apr 2013 00:25:19 GMT</pubDate><guid isPermaLink="true">http://professionalaspnet.com/archive/2013/04/14/Why-Its-Time-to-Sunset-jQuery.aspx</guid></item><item><title>CX – Conference Experience (Facilitating Communication)</title><link>/2013/04/29/CX-Conference-Experience-Facilitating-Communication/</link><description>&lt;p&gt;Following up on my earlier post about CX or Conference Experience – I&amp;rsquo;m going to dig in a bit on how you get good conversation to happen. In the past two years I&amp;rsquo;ve been to nearly 20 conferences, I&amp;rsquo;ve been to conferences with great talks, with great parties, with great swag, and hands down my favorite conferences have always been a result of great conversation. With the number of talks that are recorded and immediately available online after, &lt;em&gt;what can I say I&amp;rsquo;m a hallway track guy&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve seen a number of conferences intentionally design around this concept, in some ways the unconference is purely a hallway track conference. I&amp;rsquo;ve also seen conferences that weren&amp;rsquo;t clearly planned for this and have pulled off some of the best situations where people turn their phones off and engage in real conversation.&lt;/p&gt;
&lt;h2 id="breaks"&gt;
&lt;div&gt;
Breaks
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Breaks are always a hard part to balance. Every conference organizer I&amp;rsquo;ve talked to felt they had the perfect mix for breaks. If you&amp;rsquo;re designing for convesation then you need to allow time for conversation to actually happen. Whether a multi-track or single track conference 15 minutes for breaks doesn&amp;rsquo;t give you the time to actually engage in conversation. If multitrack its time enough to grab a drink then head to the next room. If single track its time to have the entire room leave and then come back.&lt;/p&gt;
&lt;p&gt;Even 30 minute breaks fall into this category. At a multitrack conference I&amp;rsquo;m usually saying hi to enough people during a 30 minute break that I don&amp;rsquo;t have the chance to really get deep into a conversation. If I do it usually results in skipping the next talk.&lt;/p&gt;
&lt;h2 id="staggered-talks"&gt;
&lt;div&gt;
Staggered Talks
&lt;/div&gt;
&lt;/h2&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;h2 id="locations-for-conversations"&gt;
&lt;div&gt;
Locations for Conversations
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Having places for people to get away an talk is critical, in a venue that only has 1 main room and no convenient places for a quick coffee or beer it becomes very hard for conversations to happen. If its on the agenda to facilitate such things thats great, but going a step further and allowing for it to be facilitated naturally is even better. On more than one occasion I&amp;rsquo;ve been mid conversation wtih someone, we cut it off agreeing to pick it back up at the next break only to never locate them again for the rest of the conference. I&amp;rsquo;d have just as much preferred to continue the conversation there, but sadly there was in the middle of a talk room with no where else feasible to go.&lt;/p&gt;
&lt;h2 id="water"&gt;
&lt;div&gt;
Water
&lt;/div&gt;
&lt;/h2&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;This one caught me by surprise&amp;hellip; The event was &lt;a href="http://py.codeconf.com/"&gt;PyCodeConf in Miami&lt;/a&gt; and it was one of the evening activities – a pool party with food, drinks, and mariachi band. Early into the evening, inevitably someone was thrown into the pool (by friends in a general good nature), but thus ruining a lovely iPhone. As a result I&amp;rsquo;m pretty most people, just as I did, went to their rooms but their cell phone away, or set it near their stuff. Much of the rest of the evening was an entirely internet and twitter free evening. Causing lots of uninterrupted conversations to happen and resulted in a pool full of geeks.&lt;/p&gt;
&lt;h2 id="welcoming-noobs"&gt;
&lt;div&gt;
Welcoming noobs
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;The big difference between just assuming this will happen and actively working to facilitate it is who gets involved in the conversation. For a first time presenter there&amp;rsquo;s a wealth of nerves about talking. For a first time attendee there&amp;rsquo;s a wealth of knowledge to soak up. First time attendees may not feel as comfortable interjecting them into a conversation, approaching presenters, or talking to someone they&amp;rsquo;ve been following for years – &lt;em&gt;yet they have just as much to add as anyone else&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Creating places where more conversation is happening helps ease this and build a better community.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Mon, 29 Apr 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/04/29/CX-Conference-Experience-Facilitating-Communication/</guid></item><item><title>CX – Conference Experience (People)</title><link>/2013/04/29/CX-Conference-Experience-People/</link><description>&lt;p&gt;Following up on my earlier post about CX or Conference Experience – I&amp;rsquo;m going to dig in a bit on getting the right people there. There&amp;rsquo;s a lot of different ways to approach this from having a good ratio of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Designers to Developers&lt;/li&gt;
&lt;li&gt;Females to Males&lt;/li&gt;
&lt;li&gt;Noobs to well known community members&lt;/li&gt;
&lt;li&gt;Overall lack of suits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While this is by no means a how we can solve all of the above problems, theres some bas&lt;/p&gt;
&lt;h2 id="talks"&gt;
&lt;div&gt;
Talks
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Quality talks are obviously important. A conference should at whatever cost ensure that the talks are good. This can happen a variety of ways, but regardless of the method you should ensure talks are worthwhile; since this is largely what most people are paying to attend for.&lt;/p&gt;
&lt;h3 id="invite-only"&gt;
&lt;div&gt;
Invite-only
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Perhaps the easiest way to do this is via invite only to speakers you know will do a good job. The downside ot this of course is that you must already know enough people to fill out a good agenda, and also you limit the ability for others to contribute.&lt;/p&gt;
&lt;h3 id="coachingpracticing"&gt;
&lt;div&gt;
Coaching/Practicing
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;This is not an either/or option with any of the other pieces for getting a good agenda. Having presenters do a trial run can ensure a minimum level of quality, and working with them to coach them can help make the talk even more effective. Its likely that the organizers know the audience as well as anyone, so no one better than them to help with this. Of course this is a time sink for both parties, but can give good returns. Of course this could be done independent of a specific conference such as through &lt;a href="http://speakup.io/"&gt;speakup&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;At a very least getting a quick run through, outline, or something of that nature can ensure that a presenter doesn&amp;rsquo;t fill a 45 minute talk slot with only 5 minutes of content.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="open-cfp"&gt;
&lt;div&gt;
Open CFP
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Likely the most common approach to getting speakers is having an entirely open CFP. Its typical then that either the organizers or a speaker selection commitee then discusses and makes selections. This can usually work to have a nice balance of experienced and known to be good speakers and newer less experienced speakers that can have great potential as well.&lt;/p&gt;
&lt;h3 id="open-open-cfp"&gt;
&lt;div&gt;
Open Open CFP
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Going even further is an open CFP where all talks are published after the CFP then voted on. While this does a great deal to ensure transparency, it doesn&amp;rsquo;t necessarily improve ensuring theres a great line up of speakers. Being able to write an interesting talk proposal is an entirely separate process from delivering an interesting talk.&lt;/p&gt;
&lt;h3 id="blind"&gt;
&lt;div&gt;
Blind?
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;There&amp;rsquo;s a common question lately for both the open CFP and open open ones one whether to do blind review of the talks. The logic here is an attempt to be entirely fair, versus having some bias. This is an understandable goal, but can come at the expense of quality. Truth be told; I&amp;rsquo;m not entirely sure of a way to balance this.&lt;/p&gt;
&lt;h2 id="choosing"&gt;
&lt;div&gt;
Choosing
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;s definitely not a one size fits all. If you&amp;rsquo;re goal is to provide a good list of talks then you should keep that in mind in how you decide your talks. If you&amp;rsquo;re goal is to pull others in then it should be shaped differently. Zach Holman recently talked a bit about this and had some interesting ideas to &lt;a href="http://zachholman.com/posts/the-conference-circuit/"&gt;minimize risk for new speakers&lt;/a&gt;.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Mon, 29 Apr 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/04/29/CX-Conference-Experience-People/</guid></item><item><title>The Drawback to Web Frameworks</title><link>https://www.brightball.com/articles/the-drawback-to-web-frameworks</link><description>Web frameworks are great, don't get me wrong here. They provide a structure and consistency across projects that will transcend developers over the life of a system while dramatically simplifying the code base amongst other wonderful side effects. But what's the downside?</description><author>Brightball Articles</author><pubDate>Mon, 29 Apr 2013 20:37:00 GMT</pubDate><guid isPermaLink="true">https://www.brightball.com/articles/the-drawback-to-web-frameworks</guid></item><item><title>I Think You Will Like This, But You Won't</title><link>https://zacs.site/blog/i-think-you-will-like-this.html</link><description>&lt;p&gt;As a comparatively new blogger I have done my fair share of self-promotion amongst the established writers I respect and strive to emulate, more than once recommending something I wrote by excusing my blatant plea for attention with the words, &amp;#8220;I think you will like this&amp;#8221; or some other permutation of the phrase. And each time I do I genuinely believe that John Siracusa might have found some interest in my argument for greater gesture support in iOS, even though I can almost guarantee, if I take a step back, that he would not, did not, and probably never will.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/i-think-you-will-like-this.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 29 Apr 2013 20:01:53 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/i-think-you-will-like-this.html</guid></item><item><title>Would you be interested in reading such a book?</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/would-you-be-interested-in-reading-such-a-book</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Mon, 29 Apr 2013 15:25:00 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/would-you-be-interested-in-reading-such-a-book</guid></item><item><title>Testing emails in .NET</title><link>https://daniellittle.dev/testing-emails-with-smtp4dev</link><description>Testing emails can sometimes be a bit challenging.  smtp4dev is a small program that intercepts all received emails so you can quickly send…</description><author>Daniel Little Dev</author><pubDate>Mon, 29 Apr 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/testing-emails-with-smtp4dev</guid></item><item><title>Big Data and HR</title><link>https://www.craigpardey.com/post/2013-04-29-big-data-and-hr/</link><description>&lt;p&gt;&lt;a href="http://is.gd/S4xPun"&gt;This piece&lt;/a&gt; from the New York Times touches on a subject
that I&amp;rsquo;m passionate about - the challenges of hiring good people. Deep into
it, it mentions that:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;&amp;hellip;the most proven method, Dr. Lewin said, is a referral from someone
already working there. Current employees know the culture, he said, and have
their reputations and their work environment on the line.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The big data thing is a cool, tech solution, but really it&amp;rsquo;s referrals that
matter.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Mon, 29 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-04-29-big-data-and-hr/</guid></item><item><title>Giant Mesh Test</title><link>https://blog.yiningkarlli.com/2013/04/giant-mesh-test.html</link><description>&lt;p&gt;My friend/schoolmate &lt;a href="https://vimeo.com/user10815579"&gt;Zia Zhu&lt;/a&gt; is an amazing modeler, and recently she was kind enough to lend me a ZBrush sculpt she did for use as a high-poly test model for Takua Render. The model is a sculpture of Venus, and is made up of slightly over a million quads, or about two million triangles once triangulated inside of Takua Render.&lt;/p&gt;

&lt;p&gt;Here are some nice, pretty test renders I did. As usual, everything was rendered with Takua Render, and there has been absolutely zero post-processing:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/venus1.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/venus1.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/venus21.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/venus21.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/venus31.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/venus31.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/venus41.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/venus41.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each one of these renders was lit using a single, large area light (with importance sampled direct lighting, of course). The material on the model is just standard lambert diffuse white; I’ll do another set of test renders once I’ve finished rewriting my subsurface scatter system. Each render was set to 2800 samples per pixels and took about 20 minutes to render on a single GTX480. In other words, not spectacular, but not bad either.&lt;/p&gt;

&lt;p&gt;The key takeaway from this series of tests was that Takua’s performance still suffers significantly when datasets become extremely large; while the render took about 20 minutes, setup time (including memory transfer, etc) took nearly 5 minutes, which I’m not happy about. I’ll be taking some time to rework Takua’s memory manager.&lt;/p&gt;

&lt;p&gt;On a happier note, KD-tree construction performed well! The KD-tree for the Venus sculpt was built out to a depth of 30 and took less than a second to build.&lt;/p&gt;

&lt;p&gt;Here’s a bonus image of what the sculpt looks like in the GL preview mode:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/venus_gl.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/venus_gl.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Again, all credit for the actual model goes to the incredibly talented &lt;a href="https://vimeo.com/user10815579"&gt;Zia Zhu&lt;/a&gt;!&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Mon, 29 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/04/giant-mesh-test.html</guid></item><item><title>A Summary of Symfony 2 Authorization</title><link>http://jrgns.net/blog/2013/04/29/summary-of-symfony-2-authorization.html</link><description>&lt;p&gt;Symfony 2 comes with a great &lt;a href="http://symfony.com/doc/current/book/security.html"&gt;security component&lt;/a&gt; that provides both &lt;a href="http://symfony.com/doc/current/components/security/authentication.html"&gt;Authentication&lt;/a&gt;
(identifying the user) and &lt;a href="http://symfony.com/doc/current/components/security/authorization.html"&gt;Authorization&lt;/a&gt; (determining the permissions for the user)
functionality. It has sane defaults, works out of the box, and is extendable enough
to cater for any scenario. This post describe the default authorization functionality
available to the developer.&lt;/p&gt;

&lt;p&gt;Out of the box, Symfony 2 offers two method with which to authorize a user:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Role based authorization&lt;/li&gt;
  &lt;li&gt;Access control lists (ACL’s)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="role-based-authorization"&gt;Role Based Authorization&lt;/h2&gt;

&lt;p&gt;With role based authorization, you specify a number of roles (which can be hierarchical)
and specify the access of these roles, all within your application config:&lt;/p&gt;

&lt;div class="highlighter-rouge"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;#project/app/config/security.yml
security:
    role_hierarchy:
        ROLE_ANONYMOUS:
        ROLE_USER:        ROLE_ANONYMOUS
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/public, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, roles: ROLE_USER }
        - { path: ^/admin/, role: ROLE_ADMIN }
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;In the config above, there’s roles (or types of users). Anonymous, normal users, admin
users and super admin users. Anonymous users can only access the public part of the site.
Logged in users can access the whole site, except for the admin area. Admin users can access
the admin area of the site. Relatively simple and easy to set up, but not very customizable
on a fine grained level.&lt;/p&gt;

&lt;h2 id="access-control-lists"&gt;Access Control Lists&lt;/h2&gt;

&lt;p&gt;Say for instance that users generate content, and that users can only access the content
they generated. The role based rules are too general for this, so we’ll turn to Access Control
Lists for a solution.&lt;/p&gt;

&lt;p&gt;The concept of ACL’s boils down to a list of many to many relations between users
and resources defining who has access to what. Even though Symfony provides built
in &lt;a href="http://symfony.com/doc/current/cookbook/security/acl.html"&gt;ACL functionality&lt;/a&gt;, this can become hairy quite quickly, as you need to manage
Access Control Entries (ACE) in your controller code.&lt;/p&gt;

&lt;p&gt;Although Symfony provides an &lt;a href="http://api.symfony.com/2.0/Symfony/Component/Security/Acl/Dbal/AclProvider.html"&gt;ACL Provider&lt;/a&gt; with which the coder can create and
check ACL’s, it can become hairy quite quickly, as it needs to be managed in each and
every Controller Action.&lt;/p&gt;

&lt;p&gt;This boilerplate code wil appear in controller actions that deal with creating Entities
and their ACL’s:&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Symfony\Component\Security\Acl\Domain\ObjectIdentity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Symfony\Component\Security\Acl\Domain\UserSecurityIdentity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Symfony\Component\Security\Acl\Permission\MaskBuilder&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Inside a controller action
&lt;/span&gt;
&lt;span class="c1"&gt;// creating the ACL
&lt;/span&gt;&lt;span class="nv"&gt;$aclProvider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'security.acl.provider'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$objectIdentity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ObjectIdentity&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="na"&gt;fromDomainObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$entity&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$acl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$aclProvider&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;createAcl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$objectIdentity&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// retrieving the security identity of the currently logged-in user
&lt;/span&gt;&lt;span class="nv"&gt;$securityContext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'security.context'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$securityContext&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getToken&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getUser&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$securityIdentity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;UserSecurityIdentity&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="na"&gt;fromAccount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// grant owner access
&lt;/span&gt;&lt;span class="nv"&gt;$acl&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;insertObjectAce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$securityIdentity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;MaskBuilder&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="na"&gt;MASK_OWNER&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$aclProvider&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;updateAcl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$acl&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The “creating the ACL” block retrieves the Security Provider, generates an identity
for the object using the &lt;code class="highlighter-rouge"&gt;ObjectIdentity&lt;/code&gt; class, and then creates the ACL using the
security provider.&lt;/p&gt;

&lt;p&gt;The second block retrieves the Security Context and the current user. From there it
generates the an identifier for the user using the &lt;code class="highlighter-rouge"&gt;UserSecurityIdentity&lt;/code&gt; class.&lt;/p&gt;

&lt;p&gt;The third block then inserts an Access Control Entry and updates the ACL.&lt;/p&gt;

&lt;p&gt;That’s a lot of code. If there’s a generic way to handle this, please let me know
in the comments.&lt;/p&gt;

&lt;h2 id="behind-the-scenes"&gt;Behind the Scenes&lt;/h2&gt;

&lt;p&gt;The key component in how Symfony manages authentication is the &lt;a href="http://api.symfony.com/2.2/Symfony/Component/Security/Core/Authorization/AccessDecisionManager.html"&gt;AccessDecisionManager&lt;/a&gt;.
Each time a request is made, the &lt;code class="highlighter-rouge"&gt;AccessDecisionManager&lt;/code&gt; lets registered Voters vote on
if the user may access the resource. The voters will determine their vote by inspecting
the current security token, a set of attributes, and an optional object. Access will
then be granted (or denied) depending on the votes and the &lt;code class="highlighter-rouge"&gt;AccessDecisionManager's&lt;/code&gt;
decision strategy. Both the role based auth and ACL’s use this mechanism.&lt;/p&gt;

&lt;p&gt;I’ll go into how to use the &lt;code class="highlighter-rouge"&gt;AccessDecisionManager&lt;/code&gt; and Voters in a later post.&lt;/p&gt;</description><author>Jurgens du Toit</author><pubDate>Mon, 29 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://jrgns.net/blog/2013/04/29/summary-of-symfony-2-authorization.html</guid></item><item><title>Testing Graphite with MetricFactory</title><link>https://smetj.net/testing-graphite-with-metricfactory.html</link><description>&lt;div class="section" id="this-article-is-superseded"&gt;
&lt;h2&gt;&lt;strong&gt;This article is superseded&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Read &lt;a class="reference external" href="https://smetj.net/testing-graphite-with-metricfactory-revisited.html"&gt;Testing Graphite with MetricFactory revisited&lt;/a&gt; instead.&lt;/p&gt;
&lt;p&gt;Graphite is great. &amp;nbsp;Not only because it's a great piece of software but
also because of the community around it which brings forth all kinds of
metrics goodness. &amp;nbsp;Although it's pretty straightforward to get Graphite
up and running on …&lt;/p&gt;&lt;/div&gt;</description><author>Jelle Smet</author><pubDate>Sun, 28 Apr 2013 23:14:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/testing-graphite-with-metricfactory.html</guid></item><item><title>Flickr Date Fixer</title><link>https://peterlyons.com/problog/2013/04/flickr-date-fixer/</link><description>&lt;p&gt;&lt;a href="http://flickrdatefixer.jit.su"&gt;Try my flickr date fixer app&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;So the startup/solopreneur community really likes little mantras and axioms. I wrote a little web application that follows mantras such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;solve a problem&lt;/li&gt;
&lt;li&gt;focus on a small problem in a niche market&lt;/li&gt;
&lt;li&gt;scratch your own itch&lt;/li&gt;
&lt;li&gt;build the minimum viable product and ship quickly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have built and released a web app that focuses on an itch I have and may serve a small niche market consisting of only myself, but with that understood, my app is able to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Locate your flickr photos with an incorrect "taken" date&lt;/li&gt;
&lt;li&gt;Show you a list of photos with this problem and let you choose to fix them individually or en masse&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In order to find this app useful, you probably have to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Take photos on an Android smartphone&lt;/li&gt;
&lt;li&gt;Be running Android 2.2 "Froyo" (I suspect other version have resolved this bug)&lt;/li&gt;
&lt;li&gt;Upload them to flickr&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not sure if anyone other than me fits all these criteria, but this is fundamentally a bug in the camera app on these phones and for reasons I cannot fathom, Google seems unwilling or uninterested in releasing an update with a fix. The problem is incorrect EXIF metadata within the photo image files themselves. The bug causes every photo to be marked as December 8, 2002 at noon.&lt;/p&gt;
&lt;p&gt;The app is pretty small and gave me a nice opportunity to try some new technologies (as well as use many that have been in my preferred stack for months or years).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;node.js&lt;/li&gt;
&lt;li&gt;coffee-script&lt;/li&gt;
&lt;li&gt;express.js&lt;/li&gt;
&lt;li&gt;passport.js for OAuth integration with flickr&lt;/li&gt;
&lt;li&gt;backbone.js and jQuery in the browser&lt;/li&gt;
&lt;li&gt;require.js&lt;/li&gt;
&lt;li&gt;grunt.js&lt;/li&gt;
&lt;li&gt;nodejitsu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The nice thing about this app is given that it is all OAuth based and is basically a custom UI using the flickr API for all the business logic, it doesn't need any database at all. This means it is easy to deploy. So for the novelty of it, I have chosen to deploy it onto nodejitsu, and in theory they will host it for free since it is open source.&lt;/p&gt;
&lt;h3 id="resources"&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://flickrdatefixer.jit.su"&gt;Flickr Date Fixer&lt;/a&gt; running live on nodejitsu's &lt;a href="http://flickrdatefixer.jit.su"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/focusaurus/flickr-date-fixer"&gt;flickr-date-fixer source code on github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nodejitsu.com"&gt;Nodejitsu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Pete's Points</author><pubDate>Sun, 28 Apr 2013 07:36:41 GMT</pubDate><guid isPermaLink="true">https://peterlyons.com/problog/2013/04/flickr-date-fixer/</guid></item><item><title>"Make it faster."</title><link>https://www.brightball.com/articles/make-it-faster</link><description>I'm obsessed with performance tuning.  It's an itch that can never fully be scratched.  A sickness that can never be cured.  Here's the story of how I caught the bug.</description><author>Brightball Articles</author><pubDate>Sun, 28 Apr 2013 05:22:00 GMT</pubDate><guid isPermaLink="true">https://www.brightball.com/articles/make-it-faster</guid></item><item><title>CX – Conference Experience (Talks)</title><link>/2013/04/27/CX-Conference-Experience-Talks/</link><description>&lt;p&gt;A couple of weekends ago I had the great opportunity to attend &lt;a href="http://lessconf.com"&gt;lessconf&lt;/a&gt;. It was an all around great conference, and as a result of the greatness I ended up having a conversation with a few people around conference experience. I must give much of the credit to &lt;a href="http://twitter.com/swiftalphaone"&gt;Swift&lt;/a&gt;, as he mentioned he&amp;rsquo;d already been thinking alot about this since &lt;a href="http://waza.heroku.com"&gt;Waza&lt;/a&gt;. In general it feels like there&amp;rsquo;s a few key themes that any conference should focus on, then a lot of small things that can really push it over the top. Here&amp;rsquo;s a few:&lt;/p&gt;
&lt;p&gt;In general the key areas for any great conference are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Talks&lt;/li&gt;
&lt;li&gt;Great people&lt;/li&gt;
&lt;li&gt;Ensuring communication happens&lt;/li&gt;
&lt;li&gt;Bonus points&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Digging in deeper on the first area&amp;hellip;&lt;/p&gt;
&lt;h2 id="talks"&gt;
&lt;div&gt;
Talks
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Quality talks are obviously important. A conference should at whatever cost ensure that the talks are good. This can happen a variety of ways, but regardless of the method you should ensure talks are worthwhile; since this is largely what most people are paying to attend for.&lt;/p&gt;
&lt;h3 id="invite-only"&gt;
&lt;div&gt;
Invite-only
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Perhaps the easiest way to do this is via invite only to speakers you know will do a good job. The downside ot this of course is that you must already know enough people to fill out a good agenda, and also you limit the ability for others to contribute.&lt;/p&gt;
&lt;h3 id="coachingpracticing"&gt;
&lt;div&gt;
Coaching/Practicing
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;This is not an either/or option with any of the other pieces for getting a good agenda. Having presenters do a trial run can ensure a minimum level of quality, and working with them to coach them can help make the talk even more effective. Its likely that the organizers know the audience as well as anyone, so no one better than them to help with this. Of course this is a time sink for both parties, but can give good returns. Of course this could be done independent of a specific conference such as through &lt;a href="http://speakup.io/"&gt;speakup&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;At a very least getting a quick run through, outline, or something of that nature can ensure that a presenter doesn&amp;rsquo;t fill a 45 minute talk slot with only 5 minutes of content.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="open-cfp"&gt;
&lt;div&gt;
Open CFP
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Likely the most common approach to getting speakers is having an entirely open CFP. Its typical then that either the organizers or a speaker selection commitee then discusses and makes selections. This can usually work to have a nice balance of experienced and known to be good speakers and newer less experienced speakers that can have great potential as well.&lt;/p&gt;
&lt;h3 id="open-open-cfp"&gt;
&lt;div&gt;
Open Open CFP
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Going even further is an open CFP where all talks are published after the CFP then voted on. While this does a great deal to ensure transparency, it doesn&amp;rsquo;t necessarily improve ensuring theres a great line up of speakers. Being able to write an interesting talk proposal is an entirely separate process from delivering an interesting talk.&lt;/p&gt;
&lt;h3 id="blind"&gt;
&lt;div&gt;
Blind?
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;There&amp;rsquo;s a common question lately for both the open CFP and open open ones one whether to do blind review of the talks. The logic here is an attempt to be entirely fair, versus having some bias. This is an understandable goal, but can come at the expense of quality. Truth be told; I&amp;rsquo;m not entirely sure of a way to balance this.&lt;/p&gt;
&lt;h2 id="choosing"&gt;
&lt;div&gt;
Choosing
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;s definitely not a one size fits all. If you&amp;rsquo;re goal is to provide a good list of talks then you should keep that in mind in how you decide your talks. If you&amp;rsquo;re goal is to pull others in then it should be shaped differently. Zach Holman recently talked a bit about this and had some interesting ideas to &lt;a href="http://zachholman.com/posts/the-conference-circuit/"&gt;minimize risk for new speakers&lt;/a&gt;.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Sat, 27 Apr 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/04/27/CX-Conference-Experience-Talks/</guid></item><item><title>Vancouver Olive Oil Company Video</title><link>https://june.kim/vooc/</link><author>june.kim</author><pubDate>Sat, 27 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://june.kim/vooc/</guid></item><item><title>The JavaScript Event Loop [Presentation]</title><link>https://thomashunter.name/posts/2013-04-27-the-javascript-event-loop-presentation</link><author>Thomas Hunter II</author><pubDate>Sat, 27 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-04-27-the-javascript-event-loop-presentation</guid></item><item><title>Welcome to the New Site; same as the Old Site.</title><link>https://duncanlock.net/blog/2013/04/26/welcome-to-the-new-site-same-as-the-old-site/</link><description>&lt;p&gt;I&amp;#8217;ve been meaning to consolidate my personal websites onto this domain for a &lt;em&gt;long, long&lt;/em&gt; time. My original personal website, &lt;a href="http://www.dflock.co.uk/"&gt;dflock.co.uk&lt;/a&gt;, started in the late nineties - and has been getting a bit long in the tooth of&amp;nbsp;late.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="Screenshot of the current version of the dflock.co.uk website homepage" src="https://duncanlock.net/images/posts/welcome-to-the-new-site-same-as-the-old-site/screenshot-13-04-26_06-54-42-pm.png" width="at the time of publishing this post. It's kinda green and nineties looking." /&gt;
&lt;figcaption&gt;Figure 1. Static text files - the gift that keeps on giving.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;That site has been up, looking mostly like that, for ~15 years - with zero maintenance or downtime. Nice to know it&amp;#8217;s still valid &lt;span class="caps"&gt;CSS&lt;/span&gt; 1.0&amp;nbsp;:)&lt;/p&gt;
&lt;p&gt;When I created that site originally, the options were either &lt;a href="http://en.wikipedia.org/wiki/Adobe_PageMill"&gt;Adobe PageMill&lt;/a&gt;, or hand editing &lt;span class="caps"&gt;HTML&lt;/span&gt; in a text editor. I&amp;#8217;ve never been a fan of &lt;code&gt;WYSIWYG (what-you-see-is(supposedly)-what-you-get)&lt;/code&gt; editors - and the early ones were&amp;#8230;&amp;#8203; not good, so I wrote all the &lt;span class="caps"&gt;HTML&lt;/span&gt; code by&amp;nbsp;hand.&lt;/p&gt;
&lt;p&gt;That site also has some &lt;a href="http://www.dflock.co.uk/colitis/foods/enumbers.html"&gt;data heavy pages&lt;/a&gt;, which are manually published from &lt;span class="caps"&gt;XML&lt;/span&gt; files using &lt;code&gt;XSLT (Extensible Stylesheet Language Transformations)&lt;/code&gt; to output &lt;span class="caps"&gt;HTML&lt;/span&gt;, processed by &lt;a href="http://en.wikipedia.org/wiki/Saxon_XSLT"&gt;Saxon&lt;/a&gt;, later &lt;a href="http://en.wikipedia.org/wiki/XMLStarlet"&gt;XMLStarlet&lt;/a&gt;&amp;#8201;&amp;#8211;&amp;#8201;again, all written and run by&amp;nbsp;hand.&lt;/p&gt;
&lt;p&gt;As far as I can remember, I did all that on a 486sx Windows &amp;#8216;98 &lt;span class="caps"&gt;PC&lt;/span&gt;, using the &lt;a href="http://en.wikipedia.org/wiki/TextPad"&gt;TextPad&lt;/a&gt; text editor&amp;#8201;&amp;#8211;&amp;#8201;which is apparently still available, unlike Adobe&amp;nbsp;PageMill.&lt;/p&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_baked_not_fried"&gt;Baked, not&amp;nbsp;Fried&lt;/h2&gt;&lt;p&gt;Since then, I&amp;#8217;ve been in the trenches doing web development, amongst other things. Along came &lt;span class="caps"&gt;CSS&lt;/span&gt;, then &lt;span class="caps"&gt;PHP&lt;/span&gt;, Dynamic Sites, MySQL, JavaScript (anyone remember &lt;code&gt;DHTML (Dynamic HTML)&lt;/code&gt;?), &lt;span class="caps"&gt;AJAX&lt;/span&gt;, Web Apps, Websockets, Ruby, Python, Cloud Hosting, &lt;span class="caps"&gt;HTML5&lt;/span&gt;, etc, etc&amp;#8230;&amp;#8203; things have got a &lt;em&gt;lot&lt;/em&gt; more complex in the web development world over the last 15&amp;nbsp;years.&lt;/p&gt;
&lt;p&gt;There are good reasons for most of these, obviously, but it unavoidably layers on a lot of complexity. Websites that were originally just a folder full of static files are now a complex cocktail of many different pieces of technology. A &amp;#8216;simple blog&amp;#8217; nowadays might well combine &lt;span class="caps"&gt;PHP&lt;/span&gt;, MySQL, &lt;span class="caps"&gt;HTML&lt;/span&gt;, &lt;span class="caps"&gt;CSS&lt;/span&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; JavaScript&amp;#8201;&amp;#8211;&amp;#8201;like &lt;a href="http://wordpress.com/"&gt;WordPress&lt;/a&gt; does, for example. All of these moving parts have to work together to deliver the site&amp;#8201;&amp;#8211;&amp;#8201;and they all have to be bulletproof to keep it&amp;nbsp;secure.&lt;/p&gt;
&lt;p&gt;But in the end, browsers still mostly just display &lt;span class="caps"&gt;HTML&lt;/span&gt;, &lt;span class="caps"&gt;CSS&lt;/span&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; JavaScript - which they load from the server. How you generate that in the first place is up to you. You can bake it in advance, or fry it up on each page request. The most recent spate of widely publicized WordPress security exploits might have tipped me over the edge - I decided that I wanted to&amp;nbsp;simplify.&lt;/p&gt;
&lt;p&gt;If I was going to update my old sites, I was going to do it Old School - static files, lean &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;clean.&lt;/p&gt;&lt;/section&gt;
&lt;section class="doc-section level-1"&gt;&lt;h2 id="_so_here_we_are_full_circle"&gt;So, here we are, full&amp;nbsp;circle&lt;/h2&gt;&lt;p&gt;I&amp;#8217;m sitting writing this post in &lt;a href="http://docutils.sourceforge.net/rst.html"&gt;ReStructuredText&lt;/a&gt; - a simple, easy-to-read, what-you-see-is-what-you-get plaintext format. I&amp;#8217;m using an amazing text editor - &lt;a href="http://www.sublimetext.com/"&gt;SublimeText&lt;/a&gt; - on a quad-core, &lt;span class="caps"&gt;8GB&lt;/span&gt; &lt;span class="caps"&gt;RAM&lt;/span&gt;, Linux box. Every time I hit &lt;span class="caps"&gt;CTRL&lt;/span&gt;+s, &lt;a href="http://docs.getpelican.com/"&gt;Pelican&lt;/a&gt; automatically pours my words into the site&amp;#8217;s templates (written in &lt;a href="http://jinja.pocoo.org/"&gt;Jinja&lt;/a&gt;) and bakes it all into static files in a folder. It&amp;#8217;ll then upload it to my server if I want, or I can upload them&amp;nbsp;myself.&lt;/p&gt;
&lt;figure class="image-block"&gt;&lt;img alt="Screenshot of the above paragraph being written in SublimeText." src="https://duncanlock.net/images/posts/welcome-to-the-new-site-same-as-the-old-site/screenshot-13-04-28_12-48-16-pm.png" /&gt;
&lt;figcaption&gt;Figure 2. Just write, save and a website appears, as if by magic.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Static text files - they really are the gift that keeps on&amp;nbsp;giving.&lt;/p&gt;
&lt;p&gt;The same, but different. The same, but&amp;nbsp;better.&lt;/p&gt;&lt;/section&gt;</description><author>duncan­lock­.net</author><pubDate>Sat, 27 Apr 2013 02:48:57 GMT</pubDate><guid isPermaLink="true">https://duncanlock.net/blog/2013/04/26/welcome-to-the-new-site-same-as-the-old-site/</guid></item><item><title>Google’s nginx plugin ngx_pagespeed tested</title><link>https://www.zufallsheld.de/2013/04/26/googles-nginx-plugin-ngx_pagespeed-tested/</link><description>&lt;p&gt;Today I tested the new plugin for nginx developed Google:
&lt;a href="http://googledevelopers.blogspot.com/2013/04/speed-up-your-sites-with-pagespeed-for.html"&gt;ngx_pagespeed&lt;/a&gt;. It&amp;#8217;s the equivalent for nginx to apache&amp;#8217;s&amp;nbsp;mod_pagespeed.&lt;/p&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;

&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;Just go to the github page for &lt;a href="https://github.com/pagespeed/ngx_pagespeed"&gt;ngx_pagespeed&lt;/a&gt; and the follow the
instructions there.I used the&amp;nbsp;alpha-r2748-build.&lt;/p&gt;
&lt;p&gt;Sidenote: With it I ran into a problem with the …&lt;/p&gt;</description><author>zufallsheld</author><pubDate>Fri, 26 Apr 2013 20:15:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/04/26/googles-nginx-plugin-ngx_pagespeed-tested/</guid></item><item><title>Importance Sampled Direct Lighting</title><link>https://blog.yiningkarlli.com/2013/04/importance-sampled-direct-lighting.html</link><description>&lt;p&gt;Takua Render now has correct, fully working importance sampled direct lighting, supported for any type of light geometry! More importantly, the importance sampled direct lighting system is now fully integrated with the overall GI pathtracing integrator.&lt;/p&gt;

&lt;p&gt;A naive, standard pathtracing implementation shoots out rays and accumulates colors until a light source is reached, upon which the total accumulated color is multiplied by the emittance of the light source and added to the framebuffer. As a result, even the simplest pathtracing integrator does account for both the indirect and direct illumination within a scene, but since sampling light sources is entirely dependent on the BRDF at each point, correctly sampling the direct illumination component in the scene is extremely inefficient. The canonical example of this inefficiency is a scene with a single very small, very intense, very far away light source. Since the probability of hitting such a small light source is so small, convergence is extremely slow.&lt;/p&gt;

&lt;p&gt;To demonstrate/test this property, I made a simple test scene with an extremely bright sun-like object illuminating the scene from a huge distance away:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/directtestscene1.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/directtestscene1.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using naive pathtracing without importance sampled direct lighting produces an image like this after 16 samples per pixel:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/indirect16.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/indirect16.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mathematically, the image is correct, but is effectively useless since so few contributing ray paths have actually been found. Even after 5120 samples, the image is still pretty useless:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/indirect5120.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/indirect5120.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead, a much better approach is to accumulate colors just like before, but not bother waiting until a light source is hit by the ray path through pure BRDF sampling to multiply emittance. Instead, at each ray bounce, a new indirect ray is generated via the BRDF like before, AND to generate a new direct ray towards a randomly chosen light source via multiple importance sampling and multiply the accumulated color by the resultant emittance. Multiple importance sampled direct lighting works by balancing two different sampling strategies: sampling by light source and sampling by BRDF, and then weighting the two results with some sort of heuristic (such as the power heuristic described in &lt;a href="http://graphics.stanford.edu/papers/veach_thesis/"&gt;Eric Veach’s thesis&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Sampling by light source is the trickier part of this technique. The idea is to generate a ray that we know will hit a light source, and then weight the contribution from that ray by the probability of generating that ray to remove the bias introduced by artificially choosing a ray direction. There’s a few good ways to do this: one way is to generate an evenly distributed random point on a light source as the target for the direct lighting ray, and then weight the result using the probability distribution function with respect to surface area, transformed into a PDF with respect to solid angle.&lt;/p&gt;

&lt;p&gt;Takua Render at the moment uses a slightly different approach, for the sake of simplicity. The approach I’m using is similar to the one described in my &lt;a href="http://blog.yiningkarlli.com/2013/04/working-towards-importance-sampled-direct-lighting.html"&gt;earlier post on the topic&lt;/a&gt;, but with a disk instead of a sphere. The approach works like this:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Figure out a bounding sphere for the light source&lt;/li&gt;
  &lt;li&gt;Construct a ray from the point to be lit to the center of the bounding sphere. Let’s call the direction of this ray D.&lt;/li&gt;
  &lt;li&gt;Find a great circle on the bounding sphere with a normal N, such that N is lined up exactly with D.&lt;/li&gt;
  &lt;li&gt;Move the great circle along its normal towards the point to be lit by a distance of exactly the radius of the bounding sphere&lt;/li&gt;
  &lt;li&gt;Treat the great circle as a disk and generate uniformly distributed random points on the disk to shoot rays towards.&lt;/li&gt;
  &lt;li&gt;Weight light samples by the projected solid angle of the disk on the point being lit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Alternatively, the weighting can simply be based on the normal solid angle instead of the projected solid angle, since the random points are chosen with a cosine weighted distribution.&lt;/p&gt;

&lt;p&gt;The nice thing about this approach is that it allows for importance sampled direct lighting even for shapes that are difficult to sample random points on; effectively, the problem of sampling light sources is abstracted away, at the cost of a slight loss in efficiency since some percentage of rays fired at the disk have to miss the light in order for the weighting to remain unbiased.&lt;/p&gt;

&lt;p&gt;I also started work on the surface area PDF to solid angle PDF method, so I might post about that later too. But for now, everything works! With importance sampled direct lighting, the scene from above is actually renderable in a reasonable amount of time. With just 16 samples per pixel, Takua Render now can generate this image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/direct18.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/direct18.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…and after 5120 samples per pixel, a perfectly clean render:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/direct5120.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/direct5120.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The other cool thing about this scene is that most of the scene is actually being lit through pure indirect illumination. With only direct illumination and no GI, the render looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/directonly.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Apr/directonly.png" /&gt;&lt;/a&gt;&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Fri, 26 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/04/importance-sampled-direct-lighting.html</guid></item><item><title>How to be great at building UI wireframes</title><link>https://arnorhs.dev/posts/2013-04-26/how-to-be-great-at-building-ui-wireframes/</link><description>As I tweaked some last bits of code and added a few comments here and there, I realized I was getting excited. This project I had been working on for the last few days was almost done. I was happy about the code I had written and started prepping for a code review. My co-workers had been asking how it's going and wanted to give me feedback, so I pushed and deployed my changes to a staging server. What immediately followed was a humbling experience. "What is this?", "Why did we decide to do it this way?", "Won't this interfere with the rest of the product?", "How about if we do X instead?", "Arnor, what the hell have you been building?"</description><author>arnorhs blog - arnorhs.dev</author><pubDate>Fri, 26 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://arnorhs.dev/posts/2013-04-26/how-to-be-great-at-building-ui-wireframes/</guid></item><item><title>The Impossible Assignment</title><link>https://www.brightball.com/articles/the-impossible-assignment</link><description>I had the opportunity to visit the class of one of my legendary former professors yesterday and got to share a classic story about him...the time he gave us an impossible assignment.</description><author>Brightball Articles</author><pubDate>Thu, 25 Apr 2013 20:12:00 GMT</pubDate><guid isPermaLink="true">https://www.brightball.com/articles/the-impossible-assignment</guid></item><item><title>Sweden weather is improving so I'm ditching the treadmill. It hurts.</title><link>https://liza.io/sweden-weather-is-improving-so-im-ditching-the-treadmill-it-hurts/</link><description>&lt;p&gt;I feel almost guilty when I post non game or tech-related posts to this blog because I know the majority of people who come here tend to do so for the game/Impact/JS posts. However, this is a personal site and I do more than sit at a keyboard all day, so posts about running, Sweden, travel, etc are going to happen. Running and exercise is probably the category that&amp;rsquo;ll be popping up the most (after games) over the next few months as Stockholm warms up and I restart my training. If you want to subscribe specifically to the game dev category and ignore everything else, it can be found &lt;a href="http://liza.io/category/games/gamedev/"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Thu, 25 Apr 2013 13:28:55 GMT</pubDate><guid isPermaLink="true">https://liza.io/sweden-weather-is-improving-so-im-ditching-the-treadmill-it-hurts/</guid></item><item><title>Upgrading to centos 6.4 with shorewall onboard</title><link>https://purpleidea.com/blog/2013/04/25/upgrading-to-centos-6-4-with-shorewall-onboard/</link><description>&lt;p&gt;In case you upgrade your CentOS 6.x box to version 6.4, the shorewall service might complain. With a scary message:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;ERROR: Your kernel/iptables do not include state match support.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;No version of Shorewall will run on this system
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is selinux at work, and the problem can easily be solved by running:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;# restorecon -Rv /sbin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Thanks shorewall-users and&lt;/p&gt;
&lt;p&gt;Happy hacking,&lt;/p&gt;
&lt;p&gt;James&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://m9rx.com/" target="_blank"&gt;hire James&lt;/a&gt; and his team at &lt;a href="https://m9rx.com/" target="_blank"&gt;m9rx corporation&lt;/a&gt;.&lt;/i&gt;

&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://mastodon.social/@purpleidea" target="_blank"&gt;follow James on Mastodon&lt;/a&gt; for more frequent updates and other random thoughts.&lt;/i&gt;

&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://twitter.com/intent/follow?screen_name=purpleidea" target="_blank"&gt;follow James on Twitter&lt;/a&gt; for more frequent updates and other random thoughts.&lt;/i&gt;

&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://github.com/sponsors/purpleidea/" target="_blank"&gt;support James on GitHub&lt;/a&gt; if you'd like to help sustain this kind of content.&lt;/i&gt;

&lt;br /&gt;&lt;i&gt;You can &lt;a href="https://www.patreon.com/purpleidea" target="_blank"&gt;support James on Patreon&lt;/a&gt; if you'd like to help sustain this kind of content.&lt;/i&gt;
&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 25 Apr 2013 07:10:10 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/04/25/upgrading-to-centos-6-4-with-shorewall-onboard/</guid></item><item><title>Enhance your Go</title><link>https://blog.nobugware.com/post/2013/04/24/enhance-your-go/</link><description>After my [Enhance your Python](http://blog.nobugware.com/post/2011/08/16 /enhance-your-python) post, which is my Python bible reference, I wanted the same for Golang:
Effective Go, write effective Go Go by examples, simple but useful examples in Go The Go memory model, Goroutines lock or not ? Things I Wish Someone Had Told Me About Go Go Object Oriented Design The sources for the standard packages are gold mine for best practices Race detector documentation, (&amp;gt;= 1.</description><author>Fabrice Aneche</author><pubDate>Thu, 25 Apr 2013 01:51:20 GMT</pubDate><guid isPermaLink="true">https://blog.nobugware.com/post/2013/04/24/enhance-your-go/</guid></item><item><title>Multi-threading in Python</title><link>https://nicolaiarocci.com/multi-threading-in-python/</link><description>&lt;p&gt;&lt;!-- raw HTML omitted --&gt;Multithreaded Python Tutorial with the “Threadworms” Demo&lt;!-- raw HTML omitted --&gt; è un’ottima guida introduttiva ai &lt;!-- raw HTML omitted --&gt;thread&lt;!-- raw HTML omitted --&gt; ed alla programmazione multithread in Python. Dalla teoria alla pratica, in pochi minuti si arriva a creare una variante multithread di &lt;!-- raw HTML omitted --&gt;Snake.&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 23 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/multi-threading-in-python/</guid></item><item><title>Arch Linux + Nginx + PHP-FPM + Wordpress</title><link>https://www.zufallsheld.de/2013/04/22/arch-linux-nginx-php-fpm-wordpress/</link><description>&lt;p&gt;This is my little how-to on installing and configuring Wordpress on &lt;a href="https://www.archlinux.org/"&gt;Arch Linux&lt;/a&gt; with nginx+php-fpm. It is by no means the best way to do it or even complete, but it helped me get my blog out in&amp;nbsp;minutes.&lt;/p&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;

&lt;p&gt;Assuming your already installed MySQL(or MariaDB), nginx via pacman …&lt;/p&gt;</description><author>zufallsheld</author><pubDate>Mon, 22 Apr 2013 23:04:00 GMT</pubDate><guid isPermaLink="true">https://www.zufallsheld.de/2013/04/22/arch-linux-nginx-php-fpm-wordpress/</guid></item><item><title>Building in ImpactJS multiplayer is like a jelly wrestling contest</title><link>https://liza.io/building-in-impactjs-multiplayer-is-like-a-jelly-wrestling-contest/</link><description>&lt;p&gt;If any of you have been following me on &lt;a href="http://www.twitter.com/lazer"&gt;Twitter &lt;/a&gt;over the weekend you may have seen my epic battle with node.js, MongoDB, socket.IO, Expess, and ImpactJS. It was like one of those jelly wrestling matches you see with drunk people fighting in kiddie pools, except instead it was me wearing pajama pants and a hoodie against a gang of five web technologies/libraries opening a can of whoop-ass on me.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Mon, 22 Apr 2013 13:32:52 GMT</pubDate><guid isPermaLink="true">https://liza.io/building-in-impactjs-multiplayer-is-like-a-jelly-wrestling-contest/</guid></item><item><title>Becoming an Early Riser</title><link>https://josh.works/growth/misc/2013/04/22/becoming-an-early-riser/</link><description>&lt;blockquote&gt;
  &lt;p&gt;Early to bed and early to rise makes a man healthy, wealthy, and wise. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;-The man no child likes to hear about when being awoken by their parents&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Getting out of bed is a struggle. I’ve spent the better part of twenty four years setting my alarm as late as possible so I could have a few more minutes of sleep.&lt;/p&gt;

&lt;p&gt;I fight myself with tenacity. My first tactic is to subconsciously turn off my alarm, so I don’t even get to think about getting up early until two hours later.&lt;/p&gt;

&lt;p&gt;Next, the fog of sleepiness is heavy upon me, and I’ll try to hit snooze a few times.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Did I set a two minute snooze, or a fifteen minute snooze?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ll hit it three or four times either way.&lt;/p&gt;

&lt;p&gt;Next, I talk myself out of the very need to get up early.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Do I need a shower in the morning?&lt;/p&gt;

  &lt;p&gt;Nope, I took one the day before yesterday. Breakfast? Overrated. I’ll get some Dunkin Doughnuts on my way to work. I don’t need to wake up early just to read a book. I’ll do that while I eat breakfast. It’s mean for my alarm to go off when my wife doesn’t even need to get up yet. I’ll just turn it off, for her…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I have gone through those steps above so many times. I’ll dutifully set my alarm for 6:30 or 7:00 on a weekend, and earlier during the week. I’d plan my whole productive morning out. I’d go to sleep, and next thing I know, it’s time for me to go to work, or each lunch (on a weekend) and I have a vague recollection of hitting the snooze button a half-dozen times before my alarm just stopped going off. Whoops&lt;/p&gt;

&lt;p&gt;I couldn’t even think about the alarm in the morning. I couldn’t create enough mental alertness to even begin the struggle to wake up early. My subconscious was waving a white flag without me being awake enough to notice.&lt;/p&gt;

&lt;p&gt;And then I had a few realizations…&lt;/p&gt;

&lt;h2 id="unnecessary-early-morning-decision-making"&gt;Unnecessary early morning decision-making&lt;/h2&gt;

&lt;p&gt;My approach to sleep and waking up has been shifting the last few months. Here are the reasons why:&lt;/p&gt;

&lt;h4 id="polyphasic-sleep"&gt;Polyphasic Sleep&lt;/h4&gt;

&lt;p&gt;I learned about &lt;a href="http://en.wikipedia.org/wiki/Polyphasic_sleep"&gt;polyphasic sleep&lt;/a&gt;. In a normal eight-hour period of sleep, the average person gets two hours of REM sleep, which is the stage where most of the benefits of sleep come from. As you sleep throughout the night, you cycle in and out of REM.&lt;/p&gt;

&lt;p&gt;You can train your body to more quickly drop into REM sleep, and as you do this, you can remove the rest of that time you spend asleep. There are many varieties of sleep schedules,
&lt;a href="http://www.stevepavlina.com/forums/health-fitness/1638-switching-biphasic-sleeping-start-here.html"&gt;and a community of people who pursue these patterns.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ultimate extension of this principle of needing only two hours of REM sleep a day is something called the “uberman”, and it is six twenty-minute naps every four hours. Two hours of REM sleep a day, and nothing else.
&lt;a href="http://www.stevepavlina.com/blog/2005/10/polyphasic-sleep-log-day-1/"&gt;The adaptation period looks rough.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My perspective on sleep changed - I don’t have to feel tired just because it’s early. I may actually be tired, or, more likely, I have not yet reached a stage of alertness, because technically are the most rested immediately after waking up.&lt;/p&gt;

&lt;h4 id="listening-to-my-body"&gt;Listening to my body&lt;/h4&gt;

&lt;p&gt;I learned to pay closer attention to my body and energy levels. I noticed that I sometimes felt wide awake when my alarm when off, even if it was very early, while I could just as easily feel very tired and not want to wake up, but that feeling was not related to how much sleep I got.&lt;/p&gt;

&lt;p&gt;I started recording if it was easy or hard to get out of bed in the mornings (I’d simply write down a check or an x, depending on how it felt getting out of bed.) The benefit if this was two-fold: First and most importantly, I am training myself to not dread the morning (or being up early) simply because it is the morning and early. I no longer hate the idea of waking up at 5a. I am not always, or even often, able to easily get up at 5a, but the idea does not make me want to die.&lt;/p&gt;

&lt;p&gt;Second, I am growing to pay attention not to absolute time (whatever time my alarm goes off) but energy levels. I can wake up at 7:30a with a worse energy level than when I wake up at 5:00, and I am learning to try to avoid simply low energy levels rather than the earlier time.&lt;/p&gt;

&lt;h4 id="dont-trust-willpower"&gt;Don’t trust willpower&lt;/h4&gt;
&lt;p&gt;I dramatically changed my understanding of willpower. My original attempts to wake up early took a Herculean expenditure of willpower. I would fight to drag myself out of bed, and on the rare occasions that I was successful, I’d spend the morning wasting time on Facebook.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I’d drag myself out of bed at 6a on a weekend so I could watch youtube videos and waste time on Facebook!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’ve learned that willpower is like muscular power. It can be exhausted, and I was exhausting myself. If I spent all my willpower getting up, I had none left over to intelligently direct my activities to productive uses.&lt;/p&gt;

&lt;p&gt;The goal is to “automate” early rising so it takes no willpower, leaving me to use it intelligently throughout the day. When my alarm goes off early, if I don’t really want to get out of bed, I just turn it off and go back to sleep. No guilt, no disappointment, and no wasteful expenditure of willpower. On the flip side, if my alarm goes off and I feel energetic, I happily begin my morning - no wasteful expenditure of willpower.&lt;/p&gt;

&lt;h2 id="setting-the-stage-for-the-habit"&gt;Setting the stage for the habit&lt;/h2&gt;

&lt;p&gt;I want to make it a habit, to wake up at 5a every day. I’ve been experimenting more heavily over the last two weeks, and have woken up by 5:30 almost half of the days. I see myself as practicing and laying a groundwork for this habit, because right now I don’t fully understand. My energy fluctuates during the day, and if I am sleep deprived, its hard to get up early the next day.&lt;/p&gt;

&lt;p&gt;I am learning to work a 20 minute nap into my day in the early evening, to see if this reduces the fatigue I feel the next day.&lt;/p&gt;

&lt;p&gt;I am learning how coffee affects my sleep schedule, and how much leeway I have in when I go to bed.&lt;/p&gt;

&lt;p&gt;Eventually, when have build a solid understanding of my own sleep requirements, I will have a 30 day “trial” where I will implement this habit every day, but I’m not ready for that yet. I don’t want to set my expectations too high, fail to meet them, and then feel bad about the whole thing.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Mon, 22 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/growth/misc/2013/04/22/becoming-an-early-riser/</guid></item><item><title>[4.21.13] Inverse Panorama Camera Jig</title><link>https://transistor-man.com/semicircle_track.html</link><description>Quick Build guide for making a sliding inverse panorama camera track</description><author>transistor-man.com</author><pubDate>Sun, 21 Apr 2013 11:38:38 GMT</pubDate><guid isPermaLink="true">https://transistor-man.com/semicircle_track.html</guid></item><item><title>The Host</title><link>https://olshansky.info/movie/the_host/</link><description>Olshansky's review of The Host</description><author>🦉 olshansky 🦁</author><pubDate>Sun, 21 Apr 2013 04:42:57 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_host/</guid></item><item><title>Always learning, always teaching</title><link>https://stephango.com/always-learning-always-teaching</link><description>&lt;p&gt;A professor of mine used to often quote Bob Dylan:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“He not busy being born is busy dying”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some are comfortable making the same thing the same way their entire career But that approach is fragile, susceptible to unexpected events.&lt;/p&gt;

&lt;p&gt;The documentary &lt;em&gt;Jiro Dreams of Sushi&lt;/em&gt; is a lesson that masters in their craft are always learning, always challenging their own assumptions, and always training the next generation. In Jiro’s case, at age 86 and beyond. Relentlessly.&lt;/p&gt;

&lt;p&gt;If you want to grow, give away your knowledge and techniques. Teaching is a tried-and-true way to experience rebirth.&lt;/p&gt;

&lt;p&gt;You should be continuously running from the pack of ravenous dogs while dropping a trail of fresh meat behind you.&lt;/p&gt;

&lt;p&gt;To teach distill what you know. Develop the theory of what you learned by instinct and practice.&lt;/p&gt;

&lt;p&gt;By teaching you will understand your craft better than you did before. By giving away your techniques you will empower peers and competitors. Force yourself to stay creative and continuously open new doors.&lt;/p&gt;</description><author>Steph Ango</author><pubDate>Sun, 21 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://stephango.com/always-learning-always-teaching</guid></item><item><title>An Annoyance-Driven Blog Post</title><link>https://zacs.site/blog/an-annoyance-driven-blog-post.html</link><description>&lt;p&gt;Back when John Siracusa published &lt;a href="http://hypercritical.co/2013/02/24/annoyance-driven-development"&gt;&lt;em&gt;Annoyance-Driven Development&lt;/em&gt;&lt;/a&gt; in the tail-end of February, and amidst the &lt;a href="http://curiousrat.com/annoyance-driven-blog-posts"&gt;discussion&lt;/a&gt; that &lt;a href="http://wanderingcoder.net/2013/04/02/annoyance-driven-blogging/"&gt;ensued&lt;/a&gt;, I felt that I had nothing to add to the conversation and thus had no need to link to the piece. I still feel that way, but the idea that annoyance could affect change in the world&amp;#160;&amp;#8212;&amp;#160;whether in the form of the development of a particular technology or, as in the case of this article, the advent of a blog post&amp;#160;&amp;#8212;&amp;#160;invariably stuck with me.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/an-annoyance-driven-blog-post.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 20 Apr 2013 12:06:13 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/an-annoyance-driven-blog-post.html</guid></item><item><title>Quick Update on Future Plans</title><link>https://blog.yiningkarlli.com/2013/04/quick-update-on-future-plans.html</link><description>&lt;p&gt;Just a super quick update on my future plans:&lt;/p&gt;

&lt;p&gt;Next year, starting in September, I’ll be joining &lt;a href="http://www.graphics.cornell.edu/people/director.html"&gt;Dr. Don Greenberg&lt;/a&gt; and &lt;a href="http://www.graphics.cornell.edu/~kiderj/index.htm"&gt;Dr. Joseph T. Kider&lt;/a&gt; and others at &lt;a href="http://www.graphics.cornell.edu/"&gt;Cornell’s Program for Computer Graphics&lt;/a&gt;. I’ll be pursuing a Master of Science in Computer Graphics there, and will most likely be working on something involving rendering (which I suppose is not surprising).&lt;/p&gt;

&lt;p&gt;Between the end of school and September, I’ll be spending the summer at &lt;a href="http://www.pixar.com/"&gt;Pixar Animation Studios&lt;/a&gt; once again, this time as part of &lt;a href="http://graphics.pixar.com/research/people.html"&gt;Pixar’s Research Group&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Obviously I’m quite excited by all of this!&lt;/p&gt;

&lt;p&gt;Now, back to working on my renderer.&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Sat, 20 Apr 2013 05:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/04/quick-update-on-future-plans.html</guid></item><item><title>Working Towards Importance Sampled Direct Lighting</title><link>https://blog.yiningkarlli.com/2013/04/working-towards-importance-sampled-direct-lighting.html</link><description>&lt;p&gt;I haven’t made a post in a few weeks now since I’ve been working on a number of different things all of which aren’t quite done yet. Since its been a few weeks, here’s a writeup of one of the things I’m working on and where I am with that.&lt;/p&gt;

&lt;p&gt;One of the major features I’ve been working towards for the past few weeks is full multiple importance sampling, which will serve a couple of purposes. First, importance sampling the direct lighting contribution in the image should allow for significantly higher convergence rates for the same amount of compute, allowing for much smoother renders for the same render time. Second, MIS will serve as groundwork for future bidirectional integration schemes, such as Metropolis transport and photon mapping. I’ve been working with my friend &lt;a href="http://www.linkedin.com/pub/xing-du/3a/626/a23"&gt;Xing Du&lt;/a&gt; on understanding the math behind MIS and figuring out how exactly the math should translate into implementation.&lt;/p&gt;

&lt;p&gt;So first off, some ground truth tests. All ground truth tests are rendered using brute force pathtracing with hundreds of thousands of iterations per pixel. Here is the test scene I’ve been using lately, with all surfaces reduced to lambert diffuse for the sake of simplification:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/groundtruth.png"&gt;&lt;img alt="Ground truth global illumination render, representing 512000 samples per pixel. All lights sampled by BRDF only." src="https://blog.yiningkarlli.com/content/images/2013/Apr/groundtruth.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/direct_montecarlo.png"&gt;&lt;img alt="Ground truth for direct lighting contribution only, with all lights sampled by BRDF only." src="https://blog.yiningkarlli.com/content/images/2013/Apr/direct_montecarlo.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/indirect_only.png"&gt;&lt;img alt="Ground truth for indirect lighting contribution only." src="https://blog.yiningkarlli.com/content/images/2013/Apr/indirect_only.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The motivation behind importance sampling lights by directly sampling objects with emissive materials comes from the difficulty of finding useful samples from the BRDF only; for example, for the lambert diffuse case, since sampling from only the BRDF produces outgoing rays in totally random (or, slightly better, cosine weighted random) directions, the probability of any ray coming from a diffuse surface actually hitting a light is relatively low, meaning that the contribution of each sample is likely to be low as well. As a result, finding the direct lighting contribution via just BRDF sampling.&lt;/p&gt;

&lt;p&gt;For example, here’s the direct lighting contribution only, after 64 samples per pixel with only BRDF sampling:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/direct_test.2.png"&gt;&lt;img alt="Direct lighting contribution only, all lights sampled by BRDF only, 64 samples per pixel." src="https://blog.yiningkarlli.com/content/images/2013/Apr/direct_test.2.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of sampling direct lighting contribution by shooting a ray off in a random direction and hoping that maybe it will hit a light, a much better strategy would be to… shoot the ray towards the light source. This way, the contribution from the sample is guaranteed to be useful. There’s one hitch though: the weighting for a sample chosen using the BRDF is relatively simple to determine. For example, in the lambert diffuse case, since the probability of any particular random sample within a hemisphere is the same as any other sample, the weighting per sample is even with all other samples. Once we selectively choose the ray direction specifically towards the light though, the weighting per sample is no longer even. Instead, we must weight each sample by the probability of a ray going in that particular direction towards the light, which we can calculate by the solid angle subtended by the light source divided by the total solid angle of the hemisphere.&lt;/p&gt;

&lt;p&gt;So, a trivial example case would be if a point was being lit by a large area light subtending exactly half of the hemisphere visible from the point. In this case, the area light subtends Pi steradians, making its total weight Pi/(2*Pi), or one half.&lt;/p&gt;

&lt;p&gt;The tricky part of calculating the solid angle weighting is in calculating the fractional unit-spherical surface area projection for non-uniform light sources. In other words, figuring out what solid angle a sphere subtends is easy, but figuring out what solid angle a Stanford Bunny subtends is…. less easy.&lt;/p&gt;

&lt;p&gt;The initial approach that Xing and I arrived at was to break complex meshes down into triangles and treat each triangle as a separate light, since calculating the solid angle subtended by a triangle is once again easy. However, since treating a mesh as a cloud of triangle area lights is potentially very expensive, for each iteration the direct lighting contribution from all lights in the scene becomes potentially untenable, meaning that each iteration of the render will have to randomly select a small number of lights to directly sample.&lt;/p&gt;

&lt;p&gt;As a result, we brainstormed some ideas for potential shortcuts. One shortcut idea we came up with was that instead of choosing an evenly distributed point on the surface of the light to serve as the target for our ray, we could instead shoot a ray at the bounding sphere for the target light and weight the resulting sample by the solid angle subtended not by the light itself, but by the bounding sphere. Our thinking was that this approach would dramatically simplify the work of calculating the solid angle weighting, while still maintaining mathematical correctness and unbiasedness since the number of rays fired at the bounding sphere that will miss the light should exactly offset the overweighting produced by using the bounding sphere’s subtended solid angle.&lt;/p&gt;

&lt;p&gt;I went ahead and tried out this idea, and produced the following image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Apr/direct_test.3.png"&gt;&lt;img alt="Direct lighting contribution only, all lights sampled by direct sampling weighted by subtended solid angle, 64 samples per pixel." src="https://blog.yiningkarlli.com/content/images/2013/Apr/direct_test.3.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First off, for the most part, it works! The resulting direct illumination matches the ground truth and the BRDF-sampling render, but is significantly more converged than the BRDF-sampling render for the same number of samples. BUT, there is a critical flaw: note the black circle around the light source on the ceiling. That black circle happens to fall exactly within the bounding sphere for the light source, and results from a very simple mathematical fact: calculating the solid angle subtended by the bounding sphere for a point INSIDE of the bounding sphere is undefined. In other words, this shortcut approach will fail for any points that are too close to a light source.&lt;/p&gt;

&lt;p&gt;One possible workaround I tried was to have any points inside of a light’s bounding sphere to fall back to pure BRDF sampling, but this approach is also undesirable, as a highly visible discontinuity between the differently sampled area develops due to vastly different convergence rates.&lt;/p&gt;

&lt;p&gt;So, while the overall solid angle weighting approach checks out, our shortcut does not. I’m now working on implementing the first approach described above, which should produce a correct result, and will post in the next few days.&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Sat, 20 Apr 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/04/working-towards-importance-sampled-direct-lighting.html</guid></item><item><title>Loading Settings From web.config</title><link>https://daniellittle.dev/loading-settings-dotnet</link><description>It's always a good idea to be as consistent as possible when you're writing code. So when you're using settings from a configuration file it…</description><author>Daniel Little Dev</author><pubDate>Sat, 20 Apr 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/loading-settings-dotnet</guid></item><item><title>Introduction to Context Managers in Python</title><link>https://johnj.com/posts/intro-to-context-managers-in-python/</link><description>&lt;p&gt;
Context managers are a way of allocating and releasing some sort of
resource exactly where you need it. The simplest example is file
access:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;with file("/tmp/foo", "w") as foo:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    print &amp;gt;&amp;gt; foo, “Hello!”&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
This is essentially equivalent to:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;foo = file("/tmp/foo", "w")
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;try:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    print &amp;gt;&amp;gt; foo, “Hello!”
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;finally:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    foo.close()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Locks are another example. Given:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import threading
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lock = threading.Lock()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
then&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;with lock:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    my_list.append(item)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
replaces the more verbose:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lock.acquire()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;try:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    my_list.append(item)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;finally:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    lock.release()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
In each case a bit of boilerplate is eliminated, and the “context” of
the file or the lock is acquired, used, and released cleanly.&lt;/p&gt;
&lt;p&gt;
Context managers are a common pattern in Lisp, where they are usually
defined using macros.  Examples include &lt;code class="verbatim"&gt;with-open&lt;/code&gt; and &lt;code class="verbatim"&gt;with-out-str&lt;/code&gt; in
Clojure and &lt;code class="verbatim"&gt;with-open-file&lt;/code&gt; and &lt;code class="verbatim"&gt;with-output-to-string&lt;/code&gt; in Common Lisp.&lt;/p&gt;
&lt;p&gt;
Python, not having macros, must include context managers as part of
the language. Since 2.5, it does so, providing an easy mechanism for
rolling your own. Though the default, “low level” way to make a
context manager is to make a class which implements the &lt;a href="http://docs.python.org/2/library/stdtypes.html#typecontextmanager"&gt;context
management protocol&lt;/a&gt;, by implementing &lt;code class="verbatim"&gt;__enter__&lt;/code&gt; and &lt;code class="verbatim"&gt;__exit__&lt;/code&gt; methods,
the simplest way is using the &lt;code class="verbatim"&gt;contextmanager&lt;/code&gt; decorator from the
contextlib library, and invoking &lt;code class="verbatim"&gt;yield&lt;/code&gt; in your context manager
function in between the setup and teardown steps.&lt;/p&gt;
&lt;p&gt;
Here is a context manager which you could use to time the use of
threads vs. processes in Python:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import contextlib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import time
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;@contextlib.contextmanager
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;def time_print(task_name):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    t = time.time()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    try:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        yield
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    finally:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        print task_name, “took", time.time() - t, “seconds.”
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;with time_print(“processes”):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    [doproc() for _ in range(500)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# processes took 15.236166954 seconds.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;with time_print(“threads”):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    [dothread() for _ in range(500)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# threads took 0.11357998848 seconds.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-2" id="outline-container-headline-1"&gt;
&lt;h2 id="headline-1"&gt;
Composition
&lt;/h2&gt;
&lt;div class="outline-text-2" id="outline-text-headline-1"&gt;
&lt;p&gt;
Context managers can be composed very nicely. While you can certainly
do the following,&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;with a(x, y) as A:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    with b(z) as B:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        # Do stuff&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
in Python 2.7 or above, the following also works:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;with a(x, y) as A, b(z) as B:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    # Do stuff&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
with Python 2.6, using &lt;code class="verbatim"&gt;contextlib.nested&lt;/code&gt; does almost the same thing:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;with contextlib.nested(a(x, y), b(z)) as (A, B):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    # Do the same stuff&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
the difference being that with the 2.7+ syntax, you can use the value
yielded from the first context manager as the argument to the second
(e.g., &lt;code class="verbatim"&gt;with a(x, y) as A, b(A) as C:...&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;
If multiple contexts occur together repeatedly, you can also roll them
together into a new context manager:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import contextlib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;@contextlib.contextmanager
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;def c(x, y, z):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    with a(x, y) as A, b(z) as B:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        yield (A, B)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;with c(x, y, z) as C:  # C == (A, B)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    # Do that same old stuff&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
What does all this have to do with testing? I have found that for
complex integration tests where there is a lot of setup and teardown,
context managers provide a helpful pattern for making compact, simple
code, by putting the “context” (state) needed for any given test close
to where it is actually needed (and not everywhere else). Careful
isolation of state helps eliminate bugs and makes code easier to reason about.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>John Jacobsen</author><pubDate>Sat, 20 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/intro-to-context-managers-in-python/</guid></item><item><title>Create Better Villains for your Adventure</title><link>https://benovermyer.com/blog/2013/04/create-better-villains-for-your-adventure/</link><description>&lt;p&gt;Villains are the mainstay of any good adventure. With very few exceptions, there is always some form of evil mind plotting dark things in the background. Whether this is a mindless mob of creatures that just happens to be devouring the locals, or a masterfully devious court magician manipulating a king to sinister ends, you can't get away from the guys.&lt;/p&gt;
&lt;p&gt;This blog post aims to assist you in building memorable villains that are more than just numbers on a sheet of paper. If you're a player and not a game master, the character building advice in here might help you too, but this is specifically geared towards the folks weaving the story behind the encounters.&lt;/p&gt;
&lt;h1 id="the-nature-of-a-villain"&gt;The Nature of a Villain&lt;/h1&gt;
&lt;p&gt;While it's fairly obvious that a villain exists to ruin the lives of good people, a truly memorable villain has much more than that going on. He has his own motives and desires. He may be acting in accordance with his own morals, or he might not care at all.&lt;/p&gt;
&lt;p&gt;Most frequently, a villain's goals shouldn't be an end, but a way to reach some other starting point. The kobold king isn't sending raiding parties out to nearby villages because he feels like it; he's weakening the nearby human presence so his people can expand outward from their all-too-small cave system.&lt;/p&gt;
&lt;p&gt;The depth of a villain's forward thinking depends on how intelligent you want him to be. Don't restrict a villain's planning just because he's a minor NPC in your adventure. Players will inevitably do something you don't expect, and if they just happen to latch onto your minor villain, you'll then have a direction to take that in.&lt;/p&gt;
&lt;h1 id="journey-of-the-hero"&gt;Journey of the Hero&lt;/h1&gt;
&lt;p&gt;The player characters will only grow stronger as a result of having a characterful villain as their foil. You can consider your adventure a success when not only does it give your PCs the magical loot of awesomeness they've been waiting for, but it also encourages them to reconsider their characters' actions and motives.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Joseph Campbell's Hero with a Thousand Faces is a fantastic guide to setting up an epic story. His writings on the “road of trials” in particular are relevant to creating worthwhile villains for the players.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A player character that's just starting out usually has weak stats, basic equipment, and almost zero personality. She might have a single personality quirk or cliché that her player jots down to guide her role-playing, but rarely will players take the time to build a full story for their characters. After all, that's what they're hoping you will do.&lt;/p&gt;
&lt;p&gt;As the PC encounters and interacts with your adventure's many challenges, locations, and characters, she will grow in both power and personality. If her player is into role-playing, this will happen sooner rather than later, and with more depth. She will need a good villain, though, to balance that development against.&lt;/p&gt;
&lt;h1 id="brainstorming"&gt;Brainstorming&lt;/h1&gt;
&lt;p&gt;Creating a villain should start with looking at what you want to achieve with the adventure and with the campaign at large. An adventure isn't a set narrative that you can just write and expect to stay the way you wrote it. The players will do things you don't expect and interact with the environment in ways that force you to adapt the adventure to fit their actions. As such, your villain should support your goal with the adventure, rather than just play to the script.&lt;/p&gt;
&lt;p&gt;Jot down a few notes about your adventure's premise. Is it a classic battle of good versus evil? Is it a day in the life of an adventurer? Is it an exploration of the unknown? Think about your favorite movies or books that fit the theme you're going for. What twists in those stories really got your blood pumping?&lt;/p&gt;
&lt;h2 id="potential-for-loss"&gt;Potential for Loss&lt;/h2&gt;
&lt;p&gt;Think about what would really hurt the player characters. I don't mean in terms of hit points lost or character sheets thrown away – I mean tragedies that specifically target each PC's hopes, dreams, and beliefs. Whether the players are into role-playing or not only determines whether you have more or less fodder for this; it's still possible to make a tactical gamer sit back in his chair with a thud when his character loses something dear to him. It usually just changes the context.&lt;/p&gt;
&lt;p&gt;Build something of that potential loss into each villain of the adventure. You don't need to include every player character in every adventure, but you shouldn't focus on only one player character either. Also, choose a handful of NPCs and target their potential for loss also. It helps build a living world when you include characters other than the players' in your adventures.&lt;/p&gt;
&lt;h2 id="potential-for-gain"&gt;Potential for Gain&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Saruman was originally a hero, but gave in to temptation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now think about what the villain can offer the player characters. Temptation plays on base emotions; use it. For tactical gamers, this could be a particular piece of loot that they want desperately. For role-players, it might be a bit of information about a relative they've been searching for. For every player, write down at least one thing that the villain might have the ability to provide.&lt;/p&gt;
&lt;p&gt;As with the potential for loss, also make sure that some of your NPCs stand to gain something by working with the villain. Even if that incorruptible priest of all that is good can't possibly be turned to the dark side, the players might not know that, and that creates tension. Tension is what every great story (and adventure) is built on.&lt;/p&gt;
&lt;h1 id="villains-are-story-generators"&gt;Villains are Story Generators&lt;/h1&gt;
&lt;p&gt;Other than trying to provoke emotional tension from players through the potential for loss or gain, a good villain should also act as a way to move the story along. The best stories, whether they're explosion-ridden Hollywood blockbusters or 1500-page literary masterpieces, are about the heroes changing in some way over the course of the story. Villains are almost always the catalyst for that change.&lt;/p&gt;
&lt;p&gt;If your players are craving action, send a wave of minor baddies against them. Let them know that the villain made this happen, whether directly or indirectly. Weave a spider's web with your villain at the center. Even if he is not of the evil genius persuasion, he's still fully capable of planning ahead.&lt;/p&gt;
&lt;h1 id="summary-tl-dr-version"&gt;Summary / TL;DR Version&lt;/h1&gt;
&lt;p&gt;Keep your villains close to your players' hearts. Tension is a great story device, so use it. Tempt the PCs. Hurt the PCs. Make a list of the villain's goals and aspirations.&lt;/p&gt;
&lt;p&gt;And, above all else, remember: villains are not just stat blocks, they're people too.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 20 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/04/create-better-villains-for-your-adventure/</guid></item><item><title>The Battle Against Linkbait</title><link>https://zacs.site/blog/the-battle-against-linkbait.html</link><description>&lt;p&gt;Every time I post an article, I shamelessly submit it to Hacker News in the hopes that it will get picked up and generate a significant amount of attention and traffic to my site. Somewhere in the back of my mind, every time I submit something I wrote to Hacker News I think, &amp;#8220;Maybe this is the one, the article that will go viral, and tomorrow I&amp;#8217;ll see John Gruber post about it and hear Dan and Haddie talk about it on The Frequency. Maybe...&amp;#8221; But that never happens.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-battle-against-linkbait.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 19 Apr 2013 21:57:57 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-battle-against-linkbait.html</guid></item><item><title>Looking for Meaning in Meaningless Blog Posts</title><link>https://zacs.site/blog/looking-for-meaning.html</link><description>&lt;p&gt;In a Merlin Mann, Inbox Zero-esq fashion, I do my best to carefully limit the number of things allowed to compete for my attention. Although I regularly fall far short of this goal in most areas of my life, I do a relatively good job when it comes to the news I read and the writers I follow on the internet. While one could certainly make the argument against Hacker News as a news source with any rhyme or reason, that single exception aside the rest of the content I consume on a daily basis comes to me through a carefully curated RSS stream. Outside of Hacker News and those RSS feeds primarily aggregating the content of one-man-shop bloggers, I do not follow any other news outlets. I do not follow CNN, Fox, Time, or The Washington Post. I don&amp;#8217;t read the local newspaper, the national one, or any other print publication I could reliably hide behind. I don&amp;#8217;t watch the news whenever I can help it; after sitting through a feature on the egregious and all-too-common problem of using too much laundry detergent, I see little point in taking the effort to turn the TV on and change the channel. I don&amp;#8217;t even turn the radio on anymore. And while this approach certainly has some advantages&amp;#160;&amp;#8212;&amp;#160;every day I am presented with a relatively low number of articles and news stories, fewer of the articles I encounter are poorly written and uninteresting, and as a result of those two benefits I rarely experience a shortage of good reading material&amp;#160;&amp;#8212;&amp;#160;it has its fair share of disadvantages as well.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/looking-for-meaning.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 19 Apr 2013 20:47:58 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/looking-for-meaning.html</guid></item><item><title>Chasing the Right Zero</title><link>http://www.kungfugrippe.com/post/47631308074/chasing-the-right-zero</link><description>&lt;p&gt;&amp;#8220;For me, the real &amp;#8216;zero&amp;#8217; in Inbox Zero is more about consciously managing the amount of our attention that we commit (or, far more often, cede) to thinking and worrying about what may or may not be piling up while we&amp;#8217;re away doing the real work of our lives. Which is to say: the Real Work that&amp;#8217;s not, in this instance, about fiddling with email or drearily suffering the daily fusillade of random requests and information bombs that get lobbed our way.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.kungfugrippe.com/post/47631308074/chasing-the-right-zero"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 19 Apr 2013 13:09:51 GMT</pubDate><guid isPermaLink="true">http://www.kungfugrippe.com/post/47631308074/chasing-the-right-zero</guid></item><item><title>Processes vs. Threads for Integration Testing</title><link>https://johnj.com/posts/process-vs-threads/</link><description>&lt;p&gt;
Python has become notorious for being somewhat problematic when it
comes to concurrency. The language supports threads, but performance
is known to be dismal in some cases. In particular, &lt;a href="http://www.dabeaz.com/GIL/"&gt;as David Beazley
discovered&lt;/a&gt;, when I/O-bound and CPU-bound threads run in the same
program, the GIL performs very badly (worse than if you ran the tasks
one after the other on a single thread/CPU). Alternative approaches
which have become popular are to use asynchronous or event-driven
programming techniques (&lt;a href="http://twistedmatrix.com/trac/"&gt;Twisted&lt;/a&gt;, &lt;a href="http://docs.python.org/2/library/asyncore.html"&gt;asyncore&lt;/a&gt;), or to make heavy use of
the &lt;code class="verbatim"&gt;multiprocessing&lt;/code&gt; module.&lt;/p&gt;
&lt;p&gt;
These wrinkles aside, there are situations where threads in Python are
still very useful. One of these is integration testing of distributed
systems.&lt;/p&gt;
&lt;p&gt;
Imagine you have a distributed system with some 30 (or 3, or 300)
software components running on some cluster. These programs might
interact with a database, with a user via command line or a GUI (Web
or otherwise), and with each other via a messaging or RPC protocol
(XML-RPC, ZeroMQ, …).&lt;/p&gt;
&lt;p&gt;
While low-level (functional, unit) testing will perhaps be the bulk of
your tests, integration tests are important to make sure all the
programs talk to each other as they should. Like your other tests, you
want to automate these. And they should run as fast as possible to
optimize the feedback cycle during development.&lt;/p&gt;
&lt;p&gt;
A straightforward way to test these components is to run them all in
separate programs (locally or distributed), each in their own
process. However, you’re likely to get much better performance from
your many short-running tests if you run the components as local
threads in a single process. The components running in these threads
would, of course, still talk to each other via RPC, ZeroMQ, etc., same
as if they were processes. But for short tests the setup and teardown
for threads is much faster. The most trivial example (assigning a
value to a variabled) shows the difference dramatically:&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# in ipython:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import threading, subprocess
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;doproc = lambda: subprocess.Popen(["python", "-c", "'a=1'"],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;                                  stdout=subprocess.PIPE).communicate()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;def dothread():
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    def run():
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        a = 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    th = threading.Thread(target=run)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    th.start()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    th.join()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;time junk = [doproc() for _ in range(500)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# CPU times: user 0.18 s, sys: 1.81 s, total: 1.98 s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Wall time: 14.30 s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;time junk = [dothread() for _ in range(500)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# CPU times: user 0.09 s, sys: 0.05 s, total: 0.14 s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Wall time: 0.16 s&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
That’s a factor of about a hundred – something you will most
definitely notice in your test suite.&lt;/p&gt;
&lt;p&gt;
Another advantage of this approach is that, when you write your code
so that it can be run as threads, you can put as many or few of these
threads in actual processes (programs) as you’d like. In other words,
the coupling of processes to components is loosened. Your automated
tests will force you to implement clean shutdown semantics for each
thread (otherwise your test program will likely not terminate without
manual interruption).&lt;/p&gt;
&lt;p&gt;
Finally, it’s much easier to interrogate the state of each component
when it’s running as a thread, than it is to query a subprocess (via
e.g. RPC). This greatly simplifies the assertions you have to make in
your integration tests, since you don’t have to send a message of some
sort via RPC or message queues – you can just query variables.&lt;/p&gt;
&lt;p&gt;
I found, while writing the automated tests in IceCube Live (the
control and monitoring system of the &lt;a href="https://icecube.wisc.edu/"&gt;IceCube Neutrino Detector&lt;/a&gt;), that
making components that could be instantiated in threads (for testing)
or in processes (for production) greatly sped up my test suite and
simplified the actual tests quite a bit. I should note that, prior to
release, there is still a final integration test done on a mirror test
system which simulates actual data collection and makes sure IceCube
Live can play along with other systems. The mirroring, however, is not
exact, since the actual detector elements we deployed at South Pole
are expensive and rely on a billion tons of crystal-clear ice to work
as intended.&lt;/p&gt;
&lt;p&gt;
In &lt;a href="https://johnj.com/posts/intro-to-context-managers-in-python"&gt;the next post&lt;/a&gt; we will explore the use of context managers, which
are helpful for organizing setup and teardown of complex tests cases
involving multiple components.&lt;/p&gt;</description><author>John Jacobsen</author><pubDate>Fri, 19 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://johnj.com/posts/process-vs-threads/</guid></item><item><title>Heroku's Acquisition 2 Years Later</title><link>/2013/04/18/Herokus-Acquisition-2-Years-Later/</link><description>&lt;p&gt;Just over two years ago, Heroku was acquired. I was around and peripheral to this just before the acquisition and came on board only barely after. While there is a large group of people that have been there longer than I have (several for 4+ years) I&amp;rsquo;m still commonly asked how things have changed, how things work, and other questions of that nature. I wrote about some of these processes over a year ago in the months after joining Heroku around our &lt;a href="/2011/12/02/how-heroku-works-hiring/"&gt;hiring&lt;/a&gt;, our &lt;a href="/2011/11/02/how-heroku-works-teams-tools/"&gt;teams&lt;/a&gt;, and &lt;a href="/2011/11/07/how-heroku-works-maker-day/"&gt;how we work&lt;/a&gt;. Many of these things haven&amp;rsquo;t changed, and yet almost always at a conference I&amp;rsquo;m asked how are things different since being acquired.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s my personal take (and while I don&amp;rsquo;t typically include this – &lt;em&gt;to be safe, this is not an official Heroku view of what&amp;rsquo;s changed&lt;/em&gt;).&lt;/p&gt;
&lt;h3 id="are-things-different-since-the-acquisition"&gt;
&lt;div&gt;
Are things different since the acquisition?
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Heroku in many ways operates like a wholly owned subsidiary or as an independent business within Salesforce. We still have our own office space, our own IT (if you can even call it that), and in general entirely own workflow. I have a salesforce email account that automatically forwards to my Heroku google apps account, and that&amp;rsquo;s about as much as I know about it. In fact, we&amp;rsquo;re currently preparing for our new office and its planned to be our home for somewhere between the next 5-10 years.&lt;/p&gt;
&lt;p&gt;At the same time some things do flow through Salesforce, some of those things are logistical some strategic. First the perhaps most unfortunate part – hiring. This has not really changed &lt;a href="/2011/12/02/how-heroku-works-hiring/"&gt;how we hire&lt;/a&gt;, but rather once you are coming on board theres more paperwork. In general this is the most painful part that instead of 1/2 pieces of paper theres a few to sign. At the same time some of these come with some greater gains such as benefit, etc. To be honest I dont fully recall what all of the paper work is, but either way there is a bit more of it. The other area we really see this effect is expense accounts. All expenses flow through concur, which in my opinion is a pretty good solution. I&amp;rsquo;ve used many worse expense solutions and seen few if any better.&lt;/p&gt;
&lt;h3 id="do-they-influence-the-product"&gt;
&lt;div&gt;
Do they influence the product?
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Not really&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In general we at Heroku aim to have some broader alignment around what we&amp;rsquo;re trying to accomplish. Salesforce believes in helping their customers become a &lt;a href="http://www.youtube.com/watch?v=BwaZwm2dTCA"&gt;customer company&lt;/a&gt;. We believe that developers are worth of great experiences. Salesforce believes in ensuring its customers are successful. Heroku believes that developers should focus on adding value of their customers not just keeping the lights on. In all of these things its important to have alignment. Not for the company we&amp;rsquo;re building for the next six weeks or six months, but for the next six years. Given both Salesforce&amp;rsquo;s and Heroku&amp;rsquo;s worldview I believe what we&amp;rsquo;re trying to accomplish is in good alignment.&lt;/p&gt;
&lt;p&gt;But does Salesforce influence our product roadmap? No, we aim to listen to our customers problems and build to solve those problems and through that improve the way software is delivered. At the time Salesforce acquired us, the pieces of &lt;a href="https://blog.heroku.com/archives/2011/5/31/celadon_cedar"&gt;Cedar&lt;/a&gt; were already in motion; including Procfile support, logplex, and other pieces. Later was fully productized Cedar and which was a goal we&amp;rsquo;d long had – making other languages such as Node, &lt;a href="https://blog.heroku.com/archives/2011/8/25/java"&gt;Java&lt;/a&gt;, and &lt;a href="https://blog.heroku.com/archives/2011/9/28/python_and_django"&gt;Python&lt;/a&gt; available. This wasn&amp;rsquo;t driven because Salesforce wanted Java, but because we saw value in delivering the same value of the platform to other communities.&lt;/p&gt;
&lt;h3 id="have-we-changed"&gt;
&lt;div&gt;
Have we changed?
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Sure, we&amp;rsquo;ve changed, but I&amp;rsquo;d surmise very little if at all due to Salesforce. We&amp;rsquo;ve grown from a 20 person company to now over 100. We were a primarily local team and now have people all over. Company offsites get a bit harder to coordinate with 100 people, and finding a date that absoluely everyone can make it is nearly impossible. Many of our changes are more strictly a change of growth than they are because of Salesforce.&lt;/p&gt;
&lt;h3 id="i-dont-get-it-why-acquire-you-then"&gt;
&lt;div&gt;
I dont get it, why acquire you then?
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Because we&amp;rsquo;re aligned in a much bigger vision, we can both work together long term to accomplish our goal.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The internet is changing the world; software is everywhere.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I believe Salesforce truly understands this. Heroku does as well (though, at the time of the acquisition I fully suspect many Herokai held their breath to see how it would all go). Six weeks went by without trying to &amp;lsquo;change us&amp;rsquo;, then six months, and here we are over two years later. In many ways so many of us have started to better understand that Salesforce truly understands the above.&lt;/p&gt;
&lt;p&gt;If you understand the above, then you know that delivering software and improving that process gives any business a competitive advantage. This is at the core of the value we aim to provide. E.g. If you ranked all companies in terms of how strong they aligned with Heroku, Salesforce might be at the &lt;em&gt;very&lt;/em&gt; top.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 18 Apr 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/04/18/Herokus-Acquisition-2-Years-Later/</guid></item><item><title>Profiling Django templates with Django-Debug-Toolbar</title><link>https://tomforb.es/blog/profiling-django-templates-with-django-debug-toolbar/</link><description>My last post about the speed of Django’s templating language caused a bit of a stir and it was clear that people didn’t really have a clue how long the templates were taking to render in their applications. Enter Template-timings Template-timings is a panel for Django-debug-toolbar (which everyone s...</description><author>Tom Forbes</author><pubDate>Thu, 18 Apr 2013 23:46:58 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/profiling-django-templates-with-django-debug-toolbar/</guid></item><item><title>Hut on the "W" trail, Chile</title><link>http://cabinporn.com/post/47592500709/hut-on-the-w-trail-in-torres-del-paine-national</link><description>&lt;p&gt;Beautiful scenery.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/47592500709/hut-on-the-w-trail-in-torres-del-paine-national"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 18 Apr 2013 14:37:25 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/47592500709/hut-on-the-w-trail-in-torres-del-paine-national</guid></item><item><title>Making rain</title><link>http://www.asymco.com/2013/04/10/making-rain/</link><description>&lt;p&gt;&amp;#8220;Android and the Fiber business and even Facebook fit into this analogy rather well. In this context more rainfall means more people using the Internet. If you have more people you&amp;#8217;ll have more rivers and you&amp;#8217;ll have more water and hopefully more fish. Fiber means the water will flow more rapidly: you&amp;#8217;re essentially dredging the riverbed.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Some wonder why Google still pushes Android despite failing to make a significant profit from it, especially when compared to Samsung; some wonder why Google chose to begin providing Fiber to select American cities; some wonder, and Horace Dediu, on episode #79 of Critical Path, very eloquently explained the reasoning behind these and many other decisions. A characteristically excellent episode I suggest everyone listen to at least once, and then again to absorb any glossed over brilliance you may have missed the first time around.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.asymco.com/2013/04/10/making-rain/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 18 Apr 2013 14:33:33 GMT</pubDate><guid isPermaLink="true">http://www.asymco.com/2013/04/10/making-rain/</guid></item><item><title>Using array_agg in Postgres – powerful and flexible</title><link>/2013/04/17/Using-array_agg-in-Postgres-powerful-and-flexible/</link><description>&lt;p&gt;In almost any application it&amp;rsquo;s common to want to aggregate some set of values together, commonly in a comma separated form. Most developers do this by running a query to get much of the raw data, looping over the data and pushing it into a set, appending each new value to the appropriate key. Hopefully, it&amp;rsquo;s not a surprise that there&amp;rsquo;s a much better way to do this with PostgreSQL.&lt;/p&gt;
&lt;p&gt;Postgres has a flexible and robust &lt;a href="/2012/08/20/arrays-in-postgres/"&gt;array datatype&lt;/a&gt; that comes with a variety of functions. Even without taking advantage of the array datatype in &lt;a href="/2012/11/06/django-and-arrays/"&gt;your application&lt;/a&gt;, you can still take advantage of some of the functions to get the functionality you need. Lets take a look at an example schema and use case.&lt;/p&gt;
&lt;h3 id="an-example"&gt;
&lt;div&gt;
An example
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Given a project management application, you may have &lt;code&gt;users&lt;/code&gt; who have &lt;code&gt;projects&lt;/code&gt; that have &lt;code&gt;tasks&lt;/code&gt;. An example piece of functionality might be to send an email with a list of all projects that have tasks that are past their due dates of completion. Your schema might look something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; # \d users
Table &amp;quot;public.users&amp;quot;
Column | Type | Modifiers
------------+-----------------------------+-----------
id | integer | not null
email | character varying(255) |
...
# \d projects
Table &amp;quot;public.projects&amp;quot;
Column | Type | Modifiers
------------+-----------------------------+-----------
id | integer | not null
user_id | integer | not null
name | character varying(255) | not null
...
# \d tasks
Table &amp;quot;public.tasks&amp;quot;
Column | Type | Modifiers
--------------+-----------------------------+-----------
id | integer | not null
project_id | integer | not null
completed_at | timestamp without time zone |
due_at | timestamp without time zone |
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To get a list of all projects that have tasks that haven&amp;rsquo;t been completed, you would start with something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
projects.name
FROM
projects,
tasks
WHERE projects.id = tasks.project_id
AND tasks.due_at &amp;gt; tasks.completed_at
AND tasks.due_at &amp;gt; now()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This would give you a list of projects which you could then easily join this with users:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
users.email
projects.name
FROM
projects,
tasks,
users
WHERE projects.id = tasks.project_id
AND tasks.due_at &amp;gt; tasks.completed_at
AND tasks.due_at &amp;gt; now()
AND users.id = projects.user_id
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At this point you&amp;rsquo;ve got everything you need to pull this up into Ruby, Python, or other language of your choice and then build the full set. However if this is thousands or even hundreds of results you&amp;rsquo;ll be spending more time than necessary, grouping this data for a sensible email. With 3 other small changes you can have this already formatted for you to immediately send of in an email. The first is using a handy function called &lt;code&gt;array_agg&lt;/code&gt; which will aggregate items and then you can format them how you wish. The second is just ensuring you&amp;rsquo;re grouping correctly. Finally you&amp;rsquo;ll want to unnest the array so it formats the data in a clean way for you.&lt;/p&gt;
&lt;p&gt;Looking at it all put together:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
users.email,
array_to_string(array_agg(projects.name), ',')) as projects
FROM
projects,
tasks,
users
WHERE projects.id = tasks.project_id
AND tasks.due_at &amp;gt; tasks.completed_at
AND tasks.due_at &amp;gt; now()
AND users.id = projects.user_id
GROUP BY
users.email
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This would give you a nice clean result of projects that have overdue tasks that you could then send to the user in an email:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; email | projects
---------------------------+-------------------
craig.kerstiens@gmail.com | blog, timetracker
craig@heroku.com | foo, bar, baz
&lt;/code&gt;&lt;/pre&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 17 Apr 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/04/17/Using-array_agg-in-Postgres-powerful-and-flexible/</guid></item><item><title>Building a Search Result Extract Generator in PHP</title><link>https://boyter.org/2013/04/building-a-search-result-extract-generator-in-php/</link><description>&lt;p&gt;During some contracting I was doing recently there was a requirement to implement some search logic using only PHP. There are no issues with that but it turns out I couldn&amp;rsquo;t find a decent extract generator handy as usually one would just plug into the search engines provided version to do this.&lt;/p&gt;
&lt;p&gt;Off the top of my head I could only think of one example I was aware of which lives in &lt;a href="http://www.sphider.eu/"&gt;Sphider&lt;/a&gt; (for the record it lives in searchfuncs.php from line 529 to 566). Sadly it has a few issues. Firstly the code is rather difficult to understand, and more importantly it usually has accuracy issues. A quick search turned up this link &lt;a href="http://stackoverflow.com/questions/1436582/how-to-generate-excerpt-with-most-searched-words-in-php"&gt;http://stackoverflow.com/questions/1436582/how-to-generate-excerpt-with-most-searched-words-in-php&lt;/a&gt; on StackOverflow. The second answer looked promising but its even more difficult to understand and a bit of profiling showed some performance issues will all of the regex going on in there.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Wed, 17 Apr 2013 02:23:56 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/04/building-a-search-result-extract-generator-in-php/</guid></item><item><title>Scaling Evangelism – Creating Advocates</title><link>/2013/04/16/Scaling-Evangelism-Creating-Advocates/</link><description>&lt;p&gt;The first area I tend to think about when it comes to developer marketing is around advocates. A simple definition of an advocate is &lt;em&gt;someone that speaks/writes in favor of some thing&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Creating advocates is a means of creating more of myself to go out and talk loudly and ideally effectively. However, they do take time to cultivate and it is a hard item to track. But by cultivating advocates I&amp;rsquo;m able to scale what would otherwise be a bottleneck of my own personal time.&lt;/p&gt;
&lt;h3 id="mentorship"&gt;
&lt;div&gt;
Mentorship
&lt;/div&gt;
&lt;/h3&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;The people in your group of 3 you&amp;rsquo;ll have nearly daily communications with, even if quick. These are the first people you think to work and collaborate with. It&amp;rsquo;s the case with all, but especially so here that there may be some strong mutual benefit. With both the groups of 3 and 12 you&amp;rsquo;ll be looking to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Co-author content with&lt;/li&gt;
&lt;li&gt;Collaborate on projects&lt;/li&gt;
&lt;li&gt;Help amplify their content&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="helping-them-succeed"&gt;
&lt;div&gt;
Helping them Succeed
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;For a few years I&amp;rsquo;ve followed a similar process to this. Essentially creating advocates is done through first &lt;strong&gt;making them successful&lt;/strong&gt;, then empowering to talk about their success. I&amp;rsquo;ve often done this by giving people a private channel to me – through IM, SMS, Phone, Skype, or even in person. Sure its easy enough to get my work email address, its a pretty easy one to guess, and even at that address I do aim to respond to every request. These channels in reality don&amp;rsquo;t make me more available; but they do allow a different type of communication to happen.&lt;/p&gt;
&lt;p&gt;My personal approach has found it more out of place to ask how someones weekend was over email – IM or Skype make this easy. Broader questions of how someones actually doing in life generally are much easier to do over a coffee or a beer. This allows for a deeper relationship; at the same time I can ensure everyone I interact with is successful. It&amp;rsquo;s easier to ensure someones successful if they&amp;rsquo;re willing to talk to you, actually connecting with people enables this.&lt;/p&gt;
&lt;h3 id="communicate"&gt;
&lt;div&gt;
Communicate
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Once someones been successful theres usually some value in their story. This doesn&amp;rsquo;t need to come in a marketing-ese approach though. Instead contribute back the value of what you did to the broader community with &lt;a href="http://blog.mailgun.net/post/how-tealeaf-academy-increased-student-engagement-3x/"&gt;clear steps how they can get the same benefit&lt;/a&gt;. For many developers they feel talking about their own success is a bit of imposter syndrome. While this isn&amp;rsquo;t always the case; if it is you can help to work with someone to highlight the value in what they&amp;rsquo;ve done. This could be as simple as some encouragement to actually helping review drafts of blog posts.&lt;/p&gt;
&lt;p&gt;Of course once someones started talking about what they were able to accomplish help them celebrate the success. Yelling from the rooftops only helps to further their efforts and give them the confidence to do it all over again.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;
&lt;div&gt;
Conclusion
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;To create advocates you don&amp;rsquo;t have to write a list of people you wish to shoot for, but realizing there are limiitations on your time can help you be more intentional. Knowing that where you spend your time and who you spend it with has a cost can allow you to be more explicit about ensuring you&amp;rsquo;re providing value to them, from there it should naturally run its course. Want to discuss this more? Email me at &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens at gmail.com&lt;/a&gt;.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 16 Apr 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/04/16/Scaling-Evangelism-Creating-Advocates/</guid></item><item><title>Facebook Home? Who Cares?</title><link>https://zacs.site/blog/facebook-home.html</link><description>&lt;p&gt;Not me. Not. One. Bit.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/facebook-home.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 16 Apr 2013 15:00:48 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/facebook-home.html</guid></item><item><title>It's All a Distribution Problem</title><link>https://zacs.site/blog/its-all-a-distribution-problem.html</link><description>&lt;p&gt;Sites like Less Wrong exist &lt;em&gt;because&lt;/em&gt; it&amp;#8217;s hard for those contributors, inarguably highly intelligent, to bring attention to their work through other venues. We often tout Twitter, YouTube to an extent, and a flourishing blogging community as the epitome of ease, enabling those with good ideas and smart things to say to develop a personal brand and get their content to the masses. But that&amp;#8217;s not really true, is it?&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/its-all-a-distribution-problem.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 15 Apr 2013 19:48:18 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/its-all-a-distribution-problem.html</guid></item><item><title>Apple Pessimism</title><link>http://www.marco.org/2013/04/09/iphone-6</link><description>&lt;p&gt;&amp;#8220;Now, Apple pessimism is even stronger. No matter what they release and no matter how well it sells, they won&amp;#8217;t win over the press, the pundits, the stock market, or the rhetoric. Not this year. They could release a revolutionary 60-inch 4K TV for $99 with built-in nanobots to assemble and dispense free smartwatches, and people would complain that it should cost $49 and the nanobots aren&amp;#8217;t open enough.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.marco.org/2013/04/09/iphone-6"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 15 Apr 2013 17:50:29 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/04/09/iphone-6</guid></item><item><title>From Selling Scoops Of Ice Cream To Founding ZeroCater</title><link>http://techcrunch.com/2013/04/06/how-i-started-zerocater/</link><description>&lt;p&gt;&amp;#8220;You determine the greatness of your accomplishments by the amount of pain you&amp;#8217;re willing to pay down. The more ambitious you are, the more glass you&amp;#8217;ll have to chew. Everyone has their grind, even people doing what they love.&amp;#8221;&lt;/p&gt;

&lt;p&gt;A wonderfully inspirational piece from Arram Sabeti, CEO of ZeroCater, on the important role determination plays in success, especially in the face of deficiencies.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://techcrunch.com/2013/04/06/how-i-started-zerocater/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 15 Apr 2013 17:48:36 GMT</pubDate><guid isPermaLink="true">http://techcrunch.com/2013/04/06/how-i-started-zerocater/</guid></item><item><title>Preparing to adopt a habit</title><link>https://josh.works/preparing-to-adopt-a-habit</link><description>&lt;p&gt;There are many habits I wish I had. More times than I can count, I have tried to get up early. I faithfully set my alarm for some crack-of-dawn time that leaves me with a reasonable amount of sleep, but gives me time to myself before I have to get ready for work.&lt;/p&gt;

&lt;p&gt;Almost as many times, my alarm goes off, I hit snooze, it goes off again, I hit snooze again, until either it or I gives up. When it goes off, I keep sleeping. When I give up, I turn off the alarm, and keep sleeping.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;When I lived near to (and worked at) a climbing gym, I never struggled to get regular exercise; the greater struggle was, at times, to take a day off from climbing. Since both my occupation and location has changed, I get a small fraction of the exercise I once had.
more&lt;/p&gt;

&lt;p&gt;I would love to get into powerlifting (the only reason I would ever join a real gym) but alas, no gym within twenty minutes of my apartment has a squat rack, or lets you drop weights.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I’ve never been much of a cook. I also don’t eat particularly healthy, but like everyone, I wish I ate healthier food more often for less money. I’m a big fan of the Paleo-ish diet, for a number of reasons. (The “ish” refers to how rigidly I follow the proscribed food choices.)&lt;/p&gt;

&lt;p&gt;I eat a healthy breakfast, but that’s because if I don’t, I’m starved by 10am. I eat sweet potatoes more often than I once did. I enjoy Chipotle that much more, knowing that food is good for me. I eat a little less bread than I once did. This is about how much my eating has changed with the knowledge of what food is good for me, and what food is bad for me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lots of failure, or a little success?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Compare these two statements:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have had far more “failures” than I have had “successes”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have had clear instances where I have broken from habit and adopted (briefly) the changes I want to have.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those two sentences say the same thing.&lt;/p&gt;

&lt;p&gt;Right now I am preparing to adopt the above habits.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I’ve begun an extremely brief (ten minutes a day) daily workout plan.&lt;/li&gt;
  &lt;li&gt;I still try to set my alarm early, and sometimes I wake up on time feeling great.&lt;/li&gt;
  &lt;li&gt;I am slowly and with great difficulty learning to cook a variety of healthy meals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;It is safe to fail&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Habits start out as delicate things. I’m not willing to even call a pattern of mine a habit until it’s so entrenched I’m in no danger of losing it. If I call a bunch of little attempts and goals “habits”, I have labeled myself “someone who is bad at forming habits.”&lt;/p&gt;

&lt;p&gt;If I take a step back and try to learn how to build habits, I can freely engage in “habit-building behaviors” without fear of failure. If a habit does not stick, I still learned something, and I can apply it to my next endeavors.&lt;/p&gt;

&lt;p&gt;The potential payoff is enormous, and the potential harm is minimal. I’m not putting my self-worth on the line.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;What habits are you trying to build, and how do you feel when it does not go according to plan?&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Mon, 15 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/preparing-to-adopt-a-habit</guid></item><item><title>Building a FreeBSD NAS, part I: The hardware</title><link>https://bastian.rieck.me/blog/2013/freebsd_nas_part_i/</link><description>&lt;p&gt;I recently found myself on a nice vacation with some time on my hands,
so I finally set out to carry out one of my side projects—building
my own NAS.&lt;/p&gt;
&lt;p&gt;This is the first post of a (planned) series of articles, detailing my
journey into the jungles of both hardware and software. I am by no means
a hardware expert, put I did put at least &lt;em&gt;some&lt;/em&gt; thought into the whole
endeavour. If some of my choices seem questionable to you, it might not
have been enough effort on my part.&lt;/p&gt;
&lt;p&gt;Please note that one of my goals was to build a NAS that does not
consume too much power. When in doubt, I sacrificed performance for
decreased energy consumption.&lt;/p&gt;
&lt;h1 id="cpu"&gt;CPU&lt;/h1&gt;
&lt;p&gt;After reading many tests comparing performance and energy consumption, I
settled for an &lt;a href="http://ark.intel.com/products/53414"&gt;&lt;em&gt;Intel Celeron
G530&lt;/em&gt;&lt;/a&gt; processor. My alternative
choice would be an &lt;a href="http://ark.intel.com/products/53416"&gt;&lt;em&gt;Intel Celeron
G540&lt;/em&gt;&lt;/a&gt;, but they were out of stock.
Both processors have a low energy consumption and their default fan is
running very silently. With their 2 cores, the NAS will have enough CPU
power to, say, stream videos while running some background jobs.&lt;/p&gt;
&lt;h1 id="mainboard"&gt;Mainboard&lt;/h1&gt;
&lt;p&gt;I quickly settled for a microATX mainboard with integrated graphics
because I do not want to use extension cards. In this category, the
mainboards by &lt;a href="http://www.msi.com"&gt;MSI&lt;/a&gt; have been given mostly good
reviews. This narrowed to my search, and I ultimately homed in on an
&lt;a href="http://us.msi.com/product/mb/B75MA-E33.html"&gt;&lt;em&gt;MSI B75MA-E33&lt;/em&gt;
mainboard&lt;/a&gt;. The board has
all the nice features I want:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Integrated Intel HD Graphics (HDMI and D-SUB connectors)&lt;/li&gt;
&lt;li&gt;Integrated audio (not sure whether I am going to use it; the
specification claims that it has 8-channel support but I did not try
this so far)&lt;/li&gt;
&lt;li&gt;2 DDR3 slots&lt;/li&gt;
&lt;li&gt;USB 3.0 support&lt;/li&gt;
&lt;li&gt;A Gigabit LAN port&lt;/li&gt;
&lt;li&gt;1 SATA III port and 3 SATA II ports&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The SATA ports are especially interesting: I planned on adding one hard
drive exclusively reserved for the operating system. Here, performance
is definitely nice to have. The hard drives that provide the actual
storage of the NAS do not require 6 Gb/s transfer speed.&lt;/p&gt;
&lt;p&gt;To accompany the mainboard, I also bought some SATA cables, because you
can never have enough of those.&lt;/p&gt;
&lt;h1 id="ram"&gt;RAM&lt;/h1&gt;
&lt;p&gt;For my configuration, I selected a &lt;a href="http://www.kingston.com/dataSheets/KVR16N11_4.pdf"&gt;&lt;em&gt;4 GB Kingston RAM module
(KVR16N11/4)&lt;/em&gt;&lt;/a&gt;.
Should RAM turn out to be a bottleneck later on, I can always upgrade to
8 GB.&lt;/p&gt;
&lt;h1 id="power-supply"&gt;Power supply&lt;/h1&gt;
&lt;p&gt;This is where it gets interesting. The NAS shall not be too loud and its
idle power consumption shall be as small as possible. I thus looked out
for a power supply marked  &lt;em&gt;80 PLUS&lt;/em&gt;.  This certification means that the
power supply has more than 80% energy efficiency at various load levels.
Since the NAS probably will not require much power all the time, it
makes sense to invest in an efficient power supply. I finally selected a
&lt;a href="http://www.bequiet.com/en/powersupply/325"&gt;&lt;em&gt;beQuiet! System Power 7 300W&lt;/em&gt; power
supply&lt;/a&gt;. A quick digression:
This brand seems to cater to the European market only, but there have
been talks of expansion. Be sure to try out one of their power supplies
if given the opportunity. The components have a high quality and the fan
is very silent.&lt;/p&gt;
&lt;p&gt;When ordering the power supply, I made a beginner&amp;rsquo;s mistake: I did not
pay attention to the number of SATA power connectors. It turns out that
I required to buy a separate &lt;em&gt;Molex to SATA&lt;/em&gt; power adapter. Who in their
right mind builds power supplies with only 2 SATA power connectors?
Apparently most of the manufacturers do, as I now know&amp;hellip;&lt;/p&gt;
&lt;h1 id="hard-drives"&gt;Hard drives&lt;/h1&gt;
&lt;p&gt;Since I wanted to reserve one disk for the exclusive use of the
operating system of the NAS, I did not have many choices here. I
purchased a &lt;a href="http://www.sandisk.com/products/ssd/sata/standard/?capacity=64GB"&gt;&lt;em&gt;SanDisk SDSSDP-064G-G25 64 GB
SSD&lt;/em&gt;&lt;/a&gt;. An SSD consumes less
power in general, and I want to reserve the option of turning off the
remaining hard drives of the NAS during standby/idle times. I also
purchased a &lt;a href="http://www.digitus.info/en/products/accessories/misc-accessories/dual-25-hdd-internal-mounting-kit-da-70431"&gt;&lt;em&gt;Digitus 3.5&amp;quot; mounting
kit&lt;/em&gt;&lt;/a&gt;  for the SSD. Again, this
manufacturer seems to be European as well. From the sight of it, the
products by
&lt;a href="http://rosewill.com/products/21/149/213/0000/series.htm"&gt;Rosewill&lt;/a&gt; look
like the best alternative for the US market.&lt;/p&gt;
&lt;p&gt;For the storage, I bought two &lt;a href="http://www.wdc.com/global/products/specs/?driveID=1086&amp;amp;language=1"&gt;&lt;em&gt;Western Digital Red
(WD20EFRX)&lt;/em&gt;&lt;/a&gt; drives with 2 TB
each. WD claims that these drives are NAS-optimized. The 3-year warranty
was definitely a convincing argument for me. While I do not plan on
letting my NAS run 24x7, it sure is nice to know that WD considers these
drives to be suited for that sort of operation. I like to keep my
options open. Some reviews also demonstrate that the drives only consume
about two thirds of the power of comparable drives for file accesses.
All in all, this seems to be worth the extra price.&lt;/p&gt;
&lt;p&gt;I also purchased two &lt;em&gt;hard drive vibration absorbers&lt;/em&gt;. In Germany, they
are sold as &lt;a href="http://www.sharkoon.com/?q=en/node/915"&gt;&lt;em&gt;Sharkoon HDD Vibe
Fixers&lt;/em&gt;&lt;/a&gt;. On
&lt;a href="http://amazon.com"&gt;amazon.com&lt;/a&gt;, I have seen the &lt;em&gt;Nexus DoubleTwin hard
drive vibration absorber&lt;/em&gt;. Basically, you want some sort of fixture for
the 5.25&amp;quot; bays in your case so that the hard drives do not vibrate. This
is really worth the bother—when I installed the absorbers, I
initially thought the power was not connected to the hard drives! Now,
my NAS makes no sound except for the running of the fans and the
trademark &lt;em&gt;whirrrrrrr&lt;/em&gt; when the hard drives turn on for the first time.&lt;/p&gt;
&lt;h1 id="the-case"&gt;The case&lt;/h1&gt;
&lt;p&gt;Since I have a spot near my desk that is large enough for a mid-tower
case to fit in, I did not go for the specialized NAS cases. While cases
like the &lt;a href="http://www.lian-li.com/v2/en/product/product06.php?pr_index=516&amp;amp;cl_index=1&amp;amp;sc_index=25&amp;amp;ss_index=63"&gt;&lt;em&gt;Lian Li
Cube&lt;/em&gt;&lt;/a&gt;
look really cool, getting everything to fit in there is really annoying.
I thus bought a mid-tower case, the &lt;a href="http://www.sharkoon.com/?q=en/content/rebel9-pro-economy"&gt;&lt;em&gt;Sharkoon Rebel9 Pro
Economy&lt;/em&gt;&lt;/a&gt;. While not
as stylish as the smaller cases, it is well-built and has nine 5.25&amp;quot;
bays. For the non-European market, the &lt;a href="http://www.nzxt.com/new/products/classic_series/gamma"&gt;&lt;em&gt;Gamma classic&lt;/em&gt; by
NZXT&lt;/a&gt; appears to
be a good choice, as well.&lt;/p&gt;
&lt;h1 id="power-consumption"&gt;Power consumption&lt;/h1&gt;
&lt;p&gt;With all that talk about power consumption above, it is now time for
some numbers. In its out-of-the-box configuration (with all drives
present), the NAS consumes about 35W, which is not that bad. After some
optimizations, which I aim to explain in another post, I managed to
decrease the power consumption to around 23W during idle time. I am
still evaluating the power consumption under different scenarios, but I
am already happy with anything below 30W.&lt;/p&gt;
&lt;h1 id="some-assembly-required"&gt;Some assembly required&lt;/h1&gt;
&lt;p&gt;I now pull a mathematician and finish with &amp;ldquo;the actual assembly is
left as an exercise to the reader&amp;rdquo;. In all seriousness, though, there
are better guides for doing this. I definitely recommend &lt;a href="http://www.codinghorror.com/blog/2009/12/building-a-pc-part-vi-rebuilding.html"&gt;one of Jeff
Atwood&amp;rsquo;s guides on building, upgrading, and rebuilding a
PC&lt;/a&gt;.
All guides are humorously-written and contains lots of good advice for
aspiring PC builders.&lt;/p&gt;
&lt;p&gt;Good luck!&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 14 Apr 2013 22:13:38 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/freebsd_nas_part_i/</guid></item><item><title>Hypercritical: Technological Conservatism</title><link>http://hypercritical.co/2013/04/07/technological-conservatism</link><description>&lt;p&gt;&amp;#8220;No one wants to think of themselves as a Luddite, which is part of what makes technological conservatism so insidious. It can color the thinking of the nerdiest among us, even as we use the latest hardware and software and keep up with all the important tech news. The certainty of our own tech savvy can blind us to future possibilities and lead us to reject anything that deviates from the status quo. We are not immune.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Perhaps not necessarily a representative sample of this great article by John Siracusa, I nevertheless chose this quotation from the piece reminiscent of the Hypercritical episodes of days since passed because, like John&amp;#8217;s epic rants of old, it was just too good to let pass without note or comment.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://hypercritical.co/2013/04/07/technological-conservatism"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 14 Apr 2013 19:20:09 GMT</pubDate><guid isPermaLink="true">http://hypercritical.co/2013/04/07/technological-conservatism</guid></item><item><title>Portland Coffee Nomad</title><link>http://www.dieselsweeties.com/blog/?p=908</link><description>&lt;p&gt;&amp;#8220;Your job? You pick up the freshest, most interesting coffee from tiny roasters who do not drop ship (and of varieties not listed online from bigger roasters) and send them by request to customers around the world. Your customers trust you as a reporter and pay a small premium to have access to the strange diversity that surrounds you.&amp;#8221;&lt;/p&gt;

&lt;p&gt;The first installment of Rich Stevens&amp;#8217; handmade, artisanal newsletter list. It&amp;#8217;s been great fun so far; I look forward to each new release.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.dieselsweeties.com/blog/?p=908"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 14 Apr 2013 19:19:04 GMT</pubDate><guid isPermaLink="true">http://www.dieselsweeties.com/blog/?p=908</guid></item><item><title>Multicore Forth processors provide Go-like concurrency primitives in hardware</title><link>https://avodonosov.blogspot.com/2013/02/multicore-forth-processors-provide-go.html</link><description>&lt;pre&gt;
In the &lt;a href="http://talks.golang.org/2012/concurrency.slide#1"&gt;Go Concurrency Patterns&lt;/a&gt; presentation Rob Pike demonstrates how unbuffered channels are
enough for many concurrency tasks. (NB: use Left/Right arrow keys to scroll the presentation)

It reminded me of the Forth chips produced by Chuck Moore and colleagues.

The current version contains 144 cores per square centimeter chip. The machine language is Forth and
each core is equipped with its own little data and control Forth stacks, making it a fully fledged
independent computer (that's why the more precise term is "multi-computer chips" rather than "multi-core").

The cores talk to each other via communication ports. Writing to a port suspends the core until
the peer reads the value. And vice-versa.

This semantics corresponds to the Go channels.

The chips have other interesting properties. Quoting &lt;a href="http://www.greenarraychips.com/home/documents/greg/PB002-100822-GA-Arch.pdf"&gt;the doc&lt;/a&gt;:

&lt;span style="color: #600;"&gt;A computer can read from multiple ports&lt;/span&gt; [Corresponds to Go's &lt;code&gt;select&lt;/code&gt;]
&lt;span style="color: #600;"&gt;and can execute instructions directly from those ports&lt;/span&gt;.

&lt;span style="color: #600;"&gt;&lt;b&gt;FINE GRAINED ENERGY CONTROL:&lt;/b&gt; ... The read or write instruction is automatically 
suspended in mid-operation if the address [one or more of communication ports and I/O pin] is inactive,
consuming energy only due to transistor leakage currents, resuming when the address becomes active. 

&lt;b&gt;NO CLOCKS:&lt;/b&gt; Most computing devices have one or more clocks that synchronize all 
operations. When a conventional computer is powered up and waiting to respond 
quickly to stimuli, clock generation and distribution are consuming energy at a huge rate 
by our standards, yet accomplishing nothing. This is why “starting” and “stopping” the 
clock is a big deal and takes much time and energy for other architectures. Our 
architecture explicitly omits a clock, saving energy and time among other benefits.&lt;/span&gt;

Read more at the &lt;a href="http://www.greenarraychips.com"&gt;company website&lt;/a&gt;.

As Rob Pike says, the channel-like concurrency primitives are not new. It is interesting to see
them implemented in hardware.
&lt;/pre&gt;</description><author>blog</author><pubDate>Sun, 14 Apr 2013 02:50:16 GMT</pubDate><guid isPermaLink="true">https://avodonosov.blogspot.com/2013/02/multicore-forth-processors-provide-go.html</guid></item><item><title>Mobile app design: Clutter free using 1% prominence.</title><link>https://arnorhs.dev/posts/2013-04-13/1-prominence-the-ultimate-tool-in-the-fight-against-perceived-complexity/</link><description>By now, it's no secret that making mobile products has a unique set of design challenges. All companies and individuals making mobile products struggle with this. Finding the right balance between power and ease of use on a 3" - 4" screen is hard. It really all boils down to the natural rule of features: **More features =&gt; harder to understand, more useful.** **Fewer features =&gt; easier to understand, less useful.** So if you just add more features, without applying careful thinking about the whole experience and especially the experience for new users, you'll inevitably make a complicated product.</description><author>arnorhs blog - arnorhs.dev</author><pubDate>Sat, 13 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://arnorhs.dev/posts/2013-04-13/1-prominence-the-ultimate-tool-in-the-fight-against-perceived-complexity/</guid></item><item><title>Are Java enum values instances or classes?</title><link>https://www.databasesandlife.com/java-enum-classes/</link><description>&lt;p class="intro"&gt;That depends on if the enum values provide methods which differ from one another.&lt;/p&gt;
&lt;p&gt;The following code produces just &lt;strong&gt;one class&lt;/strong&gt; file, &amp;ldquo;Network.class&amp;rdquo;. &amp;ldquo;facebook&amp;rdquo; and &amp;ldquo;linkedIn&amp;rdquo; are just instances of the Network Java class.&lt;/p&gt;
&lt;pre&gt;public enum Network {
  facebook, 
  linkedIn;

  public void printName() { System.out.println(getName()); }
}&lt;/pre&gt;
&lt;p&gt;But the following code produces &lt;strong&gt;one class file for each value&lt;/strong&gt;, named &amp;ldquo;Network$1.class&amp;rdquo; etc., as well as one class file for the abstract superclass, &amp;ldquo;Network.class&amp;rdquo;.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Sat, 13 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/java-enum-classes/</guid></item><item><title>Art involves a kind of conjuring trick..</title><link>https://ho.dges.online/words/commonplace/art-involves-a-kind-of-conjuring-trick-by-ian-leslie/</link><description>&lt;p&gt;Art involves a kind of conjuring trick in which the artist conceals her false starts, her procrastination, her self-doubts, her confusion, behind the finished article.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ian Leslie&lt;/em&gt;&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Sat, 13 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/art-involves-a-kind-of-conjuring-trick-by-ian-leslie/</guid></item><item><title>Marshall McLuhan was right</title><link>https://jasoneckert.github.io/myblog/marshall-mcluhan-was-right/</link><description>&lt;p&gt;&lt;img alt="McLuhan" src="mcluhan.png#center" title="McLuhan" /&gt;&lt;/p&gt;
&lt;p&gt;Everyone understands, to some degree, the impact that technology has on our lives.  However, if you are an avid reader of “idea” books (for lack of a better word), then you also know that some people understand it poorly at best.&lt;/p&gt;
&lt;p&gt;Take, for example, the book &lt;em&gt;&lt;strong&gt;The Shallows&lt;/strong&gt;&lt;/em&gt; by Nicholas Carr.  Carr argues that the Internet has reduced our ability to carefully reason through problems and use our imagination.  And plenty of people have taken the time to carefully point out the flaws in his views.  And you can do it easily - just take a few moments to reflect on what you do to accomplish some of the small tasks you perform today.  Now think of those same small tasks 20 years ago, and what you had to do to accomplish them back then - you’ll see a world of difference.&lt;/p&gt;</description><author>Jason Eckert's Website and Blog</author><pubDate>Sat, 13 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://jasoneckert.github.io/myblog/marshall-mcluhan-was-right/</guid></item><item><title>Doing Marketing (for developers) Differently</title><link>/2013/04/12/perspective-on-developer-marketing/</link><description>&lt;p&gt;As developers we can tend to be a fickle bunch; especially in certain open source communities. We like to see intelligence and systems applied to things, hope for a better world through making things open, and appreciate when others relate to our world as we often attempt to relate to theirs. Marketing is often a loaded word when it comes to developers – leaving mixed feelings about webinars, email campaigns, and the like.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A quick clarification in terms of marketing I&amp;rsquo;m referring to product marketing, but of a technical product. This is based on the idea that &lt;a href="http://thenewkingmakers.com/"&gt;developers are the new kingmakers&lt;/a&gt; and when marketing a product to them it needs to be done differently.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;While many of the above steps can add immense value, they often miss when it comes to developers. By changing these processes only slightly there can be much more efficiency in connecting with and actually delivering the value you hope for to developers.&lt;/p&gt;
&lt;h3 id="email-marketing"&gt;
&lt;div&gt;
Email Marketing
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;This is an area that there are more and more companies already starting to solve the right problems. Companies like &lt;a href="http://intercom.io"&gt;intercom.io&lt;/a&gt; and &lt;a href="http://customer.io"&gt;customer.io&lt;/a&gt; are allowing for better tracking of what users are doing and notifying them at the &lt;em&gt;right&lt;/em&gt; time instead of via massive impersonal campaigns. Developers build systems that take into account similar factores every day, you should be doing the same.&lt;/p&gt;
&lt;p&gt;Emails that are sent at the wrong time or miss on what someone is trying to do can often do more damage towards building a rapport than good. Pushing content to solve a recent issue or problem at a relevant time should be table stakes for any email thats sent.&lt;/p&gt;
&lt;h3 id="community-engagement"&gt;
&lt;div&gt;
Community Engagement
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Whether at conferences or in online collaborations developers are more social than so many give them credit for. We appreciate when things are done to improve the greater good particularly for developers, but often for the world as well. From supporting individual developers or projects financially such as through &lt;a href="http://www.gittip.com"&gt;gittip&lt;/a&gt; or &lt;a href="http://www.kickstarter.com/projects/andrewgodwin/schema-migrations-for-django"&gt;certain kickstarter projects&lt;/a&gt; all the way to employing developers to &lt;a href="http://www.twitter.com/tenderlove"&gt;work full time on open source&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="being-better-than-webinars"&gt;
&lt;div&gt;
Being Better Than Webinars
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;After doing a webinar for a particular audience I had a &lt;a href="http://www.heroku.com"&gt;Heroku&lt;/a&gt; co-worker come up to me. This individual has contributed many ideas that have become core functionality such as the &lt;a href="#"&gt;Cedar stack&lt;/a&gt; and is generally open minded and listens very well. He came up to me and genuinely asked, &amp;ldquo;so what is a webinar?&amp;rdquo; I explained its like a live webcast with an opportunity for questions at the end. He was quiet for minute and responded, &amp;ldquo;Why can&amp;rsquo;t we just say that?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;There are some words that simply send off the wrong signals. Webinar rather clearly is one of those. As a community we&amp;rsquo;ve shown that we have a desire for this kind of content. The &lt;a href="http://www.lanyrd.com"&gt;conference community&lt;/a&gt; has continued to grow steadily, and while they are many parts to every conference a pretty common one is the talk track itself. A talk at a conference is essentially a live in person webinar, of course the experience is often a bit richer.&lt;/p&gt;
&lt;p&gt;Instead of the term webinar what is wrong with online office hours or webcasts with an opportunity for questions? Even doing the same thing with a different name is underdelivering on what we&amp;rsquo;re capable of.&lt;/p&gt;
&lt;p&gt;I welcome hearing from others directly at &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens@gmail.com&lt;/a&gt; on what they&amp;rsquo;re doing to engage with developers thats working. Not only working in the sense of eyeballs or dollars, but in adding value, in improving communities, in make the world better for developers. If there&amp;rsquo;s enough interest would be happy to post more detail around things I&amp;rsquo;ve seen work and what I hear works for others.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Fri, 12 Apr 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/04/12/perspective-on-developer-marketing/</guid></item><item><title>A Few Good Videos</title><link>https://zacs.site/blog/a-few-good-videos.html</link><description>&lt;p&gt;Yesterday morning I came across a video made by Duncan Elms called &lt;a href="http://vimeo.com/63502573"&gt;&amp;#8220;Bitcoin Explained&amp;#8221;&lt;/a&gt;. Curious, I decided to check it out. Rather than the information contined within it, it was instead the actual video that greatly impressed me. Not only informative but also extremely well done, Duncan Elms&amp;#8217; videos are all very impressive.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/a-few-good-videos.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 12 Apr 2013 15:54:15 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/a-few-good-videos.html</guid></item><item><title>Aaron Swartz Revisited</title><link>https://zacs.site/blog/aaron-swartz-revisited.html</link><description>&lt;p&gt;Almost three months ago today, I titled an article &lt;a href="https://zacs.site/blog/aaron-swartz.html"&gt;&lt;em&gt;We Have Lost One of Our Own&lt;/em&gt;&lt;/a&gt; and posted it to this site. I gathered some of the more salient and insightful pieces posted in the wake of Aaron Swartz&amp;#8217;s death, and wrote an article about unjust punishment and piracy. I try not to do this very often, but I will make an exception here and include an excerpt from one of my own posts:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/aaron-swartz-revisited.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 12 Apr 2013 13:13:15 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/aaron-swartz-revisited.html</guid></item><item><title>Neutral &amp;amp;#35;12: Vomit Ruins Everything</title><link>http://neutral.fm/episodes/12-vomit-ruins-everything</link><description>&lt;p&gt;Yesterday afternoon Marco Arment, Casey Liss, and John Siracusa recorded the final episode of their casual car podcast, Neutral. Episode twelve, &lt;a href="http://neutral.fm/episodes/12-vomit-ruins-everything"&gt;&lt;em&gt;Vomit Ruins Everything&lt;/em&gt;&lt;/a&gt;, runs for just under two hours and chronicles Marco and Tiff&amp;#8217;s joint vacation with Casey and his wife Erin to pick up Marco&amp;#8217;s brand new BMW M5 in Germany. I lamented the end of Hypercritical and Build &amp;#38; Analyze, and felt equally as sad&amp;#160;&amp;#8212;&amp;#160;if not even more so&amp;#160;&amp;#8212;&amp;#160;to hear the car door shut for the last time after a run of just twelve episodes.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://neutral.fm/episodes/12-vomit-ruins-everything"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 12 Apr 2013 12:35:17 GMT</pubDate><guid isPermaLink="true">http://neutral.fm/episodes/12-vomit-ruins-everything</guid></item><item><title>I Once Worked Hard</title><link>https://josh.works/i-once-worked-hard</link><description>&lt;p&gt;When I began working at my first job out of college, I knew I didn’t want to spend my whole career there. I was a college graduate (that means something, right?) working at a climbing gym, part time, teaching seven-year-olds how to climb at about $10 an hour.&lt;/p&gt;

&lt;p&gt;I had no idea what I wanted to do next. A few weeks in, the company began preparing the space next to ours for a HUGE expansion; this climbing gym was to become (over the next nine months) the largest climbing gym in the nation.&lt;/p&gt;

&lt;p&gt;I got to play a role by asking the COO if I could help on the expansion. He gave me a task, and left for the day. I had about 90 minutes before the construction site needed to be empty and locked, so I figured I’d just do the whole task before it finished.&lt;/p&gt;

&lt;p&gt;My task was ripping about forty five concrete bollards out of the ground and stacking them near the front of the warehouse. Each one weighed at least ninety pounds, and was sitting on a rebar post buried in the concrete. To get each one out I had to lever each one back and forth to loosen it, and then use a wedge of wood to lift the rebar out of the ground.&lt;/p&gt;

&lt;p&gt;Imagine you have a really drunk friend standing in front of you, and if you shake him hard enough, he’ll sober up. That was basically what I did, for all forty five. It was hard work, but I finished just as we had to lock up the space.&lt;/p&gt;

&lt;p&gt;I later found that this was basically a test to see if I could finish a project without someone breathing down my neck. I passed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working hard matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the next nine months, I replicated this pattern over and over, sacrificing my time, rest, and at times my safety to complete the expansion. I considered my high level of dedication to the goal to be the skill that I could bring to the table. I wanted to perform well and use my skills, and my skills were manual labor and simple craftsmanship. I heard from many different people that I was the hardest worker they’d ever met, and I earned the respect of almost everyone I worked with.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;I thought this was all good, and I aspired to reinforce all of these perceptions. I worked &lt;em&gt;extremely&lt;/em&gt; long weeks, I could go weeks without taking any days off, and I thought this was good. I had hopes to move up in management when the opportunity arose, and I wanted to be the obvious choice.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The only thing I knew how to do was work hard.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I worked hard to satisfy the needs of construction, I worked hard to satisfy my other responsibilities, teaching classes, managing staff, and manning the desk. I would get to the gym and work construction from 6am to 6pm, then teach a class and close the gym at 11pm. Twelve hour days were nice, because they were shorter than most.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4ce4b0278244ce9f18/1434910427770/317757_286493088046326_1128649947_n.jpg"&gt;&lt;img alt="The expanded facilities being built, with just a little of the existing space visible in the back." src="/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4ce4b0278244ce9f18_1434910427770_317757_286493088046326_1128649947_n.jpg_" /&gt;&lt;/a&gt; The expanded facilities being built, with just a little of the existing space visible in the back.&lt;/p&gt;

&lt;p&gt;A revolution in my thinking occurred after the expansion finished. I realized that just working hard may make me stand out, but it doesn’t really matter. An entry-level programmer gets paid far more than a skilled and trustworthy janitor. The programmer builds things that did not exist, and solves problems that no one else has solved. I wanted to become more like a programmer, and less like a janitor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working hard doesn’t matter that much&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used to think of my job as something that I would do with excellence, and I did it with excellence. Over a few months, I started seeing my job (and its responsibilities) as a platform I could use to identify and then solve business problems. I started looking for processes that were cumbersome or annoying. I looked for ways the gym could offer a better product. I looked for ways I could help grow and develop our staff.&lt;/p&gt;

&lt;p&gt;The more I looked, the more I found. I was soon aware of dozens of problems, and I could think of potential solutions to many of them. I could, with only a little effort, be known as &lt;em&gt;the guy who identifies and solves problems.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I did.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I changed the staff listserv, so the staff could use it without bothering those who did not want the emails. Traffic on the listserv blew up, while unwanted emails dropped to almost zero.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I designed and taught a new class to help lead climbers learn to belay with professionalism and confidence; that confidence and skill enables their climber to push themselves in a way they never thought possible. Not only were they safer climbers, they were instantly improved climbers, because they overcame significant psychological barriers.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The gym director spent a lot of time writing the schedule every week; I found a tool that could cut those 24 man-hours down to less than 8 man-hours, while improving the quality of the schedule. I did proof-of-concept with it, and pitched it to the director and CFO; that software is now being used throughout the company.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I helped institute a rope-tracking system, so we could take old ropes out of circulation without trying to guess which ones they were. I helped improve the process used to cut new ropes, so staff could do rope cutting in batches, and reduce the time spent on the task by more than half.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I tracked usage patters (using about 4000 data points) of the most popular service the gym offered on weekends to learn how to improve the service; I learned which staff moved relatively quickly through their customers while delivering amazing customer service, and which ones could learn to do it faster. I learned that when the staff felt like it was really busy and clients were going to be angry, it wasn’t actually so bad. I helped bring a little bit of peace to our staff during peak hours because of that information.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The gym new how to bring in new customers, but did not know anything about why customers were leaving; I started digging into the process; I stopped working there before I could go deep into that project.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I still worked hard, but I no longer tried to differentiate myself by going to great &lt;em&gt;effort&lt;/em&gt;; I simply aimed for great &lt;em&gt;effect&lt;/em&gt;. Every single one of these improvements was hidden to me until I started thinking about solving problems.&lt;/p&gt;</description><author>Josh Thompson</author><pubDate>Fri, 12 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://josh.works/i-once-worked-hard</guid></item><item><title>More holes than swiss cheese</title><link>https://tomforb.es/blog/more-holes-than-swiss-cheese/</link><description>tl;dr Never trust user input. Note: Before I published this I contacted the owner of the site and he has since replaced it with a new and more secure version When I browse the net I often see the hallmarks of a security issue with websites that I visit, and little alarm bells go off in my head. I wa...</description><author>Tom Forbes</author><pubDate>Thu, 11 Apr 2013 23:24:30 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/more-holes-than-swiss-cheese/</guid></item><item><title>Fixing jerky scrolling in Firefox</title><link>https://purpleidea.com/blog/2013/04/11/fixing-jerky-scrolling-in-firefox/</link><description>&lt;p&gt;Fedora did a lovely job of updating me to the latest version (v. 20) of &lt;a href="http://getfirefox.com"&gt;Firefox&lt;/a&gt;. One problem I found, was that scrolling on certain pages was quite jerky. Performance was worse (or more likely) on pages with a frameset, and pages which were long. Pages with many images made this problem worse.&lt;/p&gt;
&lt;p&gt;It turns out that the workaround is to disable hardware acceleration:&lt;/p&gt;
&lt;table style="text-align: center; width: 80%; margin: 0 auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="firefox-disable-hardware-scrolling.png"&gt;&lt;img alt="firefox-disable-hardware-scrolling" class="alignnone size-full wp-image-394" height="100%" src="firefox-disable-hardware-scrolling.png" width="100%" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;After you&amp;rsquo;ve unchecked this box, restart Firefox, and scrolling is now considerably smoother.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 11 Apr 2013 08:53:28 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/04/11/fixing-jerky-scrolling-in-firefox/</guid></item><item><title>2013-04-11/01</title><link>https://ho.dges.online/pictures/2013-04-11-01/</link><description/><author>ho.dges.online</author><pubDate>Thu, 11 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-04-11-01/</guid></item><item><title>2013-04-11/02</title><link>https://ho.dges.online/pictures/2013-04-11-02/</link><description/><author>ho.dges.online</author><pubDate>Thu, 11 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/pictures/2013-04-11-02/</guid></item><item><title>Getting the Raspberry Pi temperature from the command-line</title><link>https://blog.tafkas.net/2013/04/11/getting-the-raspberry-pi-temperature-from-the-command-line/</link><description>If you are overclocking your Raspberry Pi or you just curious how hot this little guy gets, there are two ways to get the internal temperature. Assuming you are running Raspbian as your operating system.
Method 1:
$ /opt/vc/bin/vcgencmd measure_temp  This gives you the temperate in in degrees Celsius: temp=54.1'C
Method 2:
If you need the temperature to be more precise (e.g. storing it in an database or for further processing) use the following command:</description><author>Tafkas Blog</author><pubDate>Thu, 11 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.tafkas.net/2013/04/11/getting-the-raspberry-pi-temperature-from-the-command-line/</guid></item><item><title>International families</title><link>https://honza.pokorny.ca/2013/04/international-families/</link><description>&lt;p&gt;I&amp;rsquo;m from the Czech republic.  My wife is from Canada.  We got married in
Canada.  Our son was born in the United Kingdom.  Our daughter was born in
Canada.  Both of our children are by birth Czech and Canadian at the same time.&lt;/p&gt;
&lt;p&gt;We want our children to be able to prove both of those citizenships and the
following is the process.&lt;/p&gt;
&lt;h2 id="our-son"&gt;Our son&lt;/h2&gt;
&lt;p&gt;Our son Wyatt was born in the UK.  He has a British birth certificate but is
not a British citizen.  In order to travel out of the UK, he had to get a
passport.  Because we now live in Canada, we decided it would make more sense
to get the Canadian one done first.&lt;/p&gt;
&lt;p&gt;In order for someone without a Canadian birth certificate to get a Canadian
passport, you need to get a proof of citizenship.  This is a piece of paper
that Wyatt will have to use for the rest of his life to prove his Canadian
citizenship instead of a birth certificate like all normal Canadians.&lt;/p&gt;
&lt;p&gt;So, to get a passport, you first need a proof of citizenship.  Wyatt is a
Canadian citizen because his mother is Canadian.  In order to get the proof of
citizenship, you need to send a superlegalized British birth certificate to the
Canadian government and include the mother&amp;rsquo;s birth certificate to prove the she
is Canadian.  Super what?  Superlegalization is a process whereby Canada and
the UK agree to authorize the use of each other&amp;rsquo;s legal documents.  Wyatt&amp;rsquo;s
British birth certificate must be stamped by a Canadian embassy in the UK to
say that this is in fact a legal document issued by the United Kingdom.  Also,
along with his application we had to send in our marriage certificate.&lt;/p&gt;
&lt;p&gt;Once he&amp;rsquo;s obtained the proof of citizenship, we can apply for a passport.
Fortunately, the Canadian government is nice enough to allow you to apply for
the proof of citizenship and the passport on one application.  We had his
passport in a few weeks.&lt;/p&gt;
&lt;p&gt;Now we are living in Canada and want to get him all the papers he needs to be a
true Czech citizen.  This means that we need to have his British birth
certificate legalized by the UK, then translated into Czech by a
government-approved translator, then approved by the Ministry of Interior of
the Czech republic and then we can apply for a Czech birth certificate.  Of
course, the application requires us to send in our marriage certificate.  Since
we got married in Canada, we have a Canadian marriage certificate.  This means
that we need to have to superlegalized, translated into Czech and approved by
the Ministry.  More fees and translators aren&amp;rsquo;t cheap.&lt;/p&gt;
&lt;p&gt;Once he has a Czech birth certificate, he needs to apply for a birth number
which isn&amp;rsquo;t unlike a social security number except it&amp;rsquo;s derived from your date
of birth.&lt;/p&gt;
&lt;h2 id="our-daughter"&gt;Our daughter&lt;/h2&gt;
&lt;p&gt;Our daughter Eliška was born in Canada.  This means she can fortunately get a
Canadian passport without any issues.  She is a real Canadian like most people
and doesn&amp;rsquo;t need to have any special paperwork to prove that she is.  Piece of
cake.&lt;/p&gt;
&lt;p&gt;When it comes to the Czech side of things, it&amp;rsquo;s seems it&amp;rsquo;s much more
complicated than with our son.&lt;/p&gt;
&lt;p&gt;First, she needs to apply for a proof of Czech citizenship.  Her Canadian birth
certificate needs to be superlegalized, translated and approved.  This is
fortunately done at the Czech embassy in Ottawa and you are allowed to
translate the document yourself and they will verify it for you.  One of the
forms that you need to send in with the application requires you to have your
signature verified by a notary.  No big deal, right?  Well, good luck finding a
notary in Canada who speaks Czech and is willing to notarize your signature.  I
was emailing back and forth with the embassy that they allowed me to photocopy
my ID and take that to the notary instead.  I&amp;rsquo;ll sign it in front of him and he
can verify my identity and signature.  I&amp;rsquo;ll send this in along with the
application.  The application process takes about 4-6 months according to their
website.&lt;/p&gt;
&lt;p&gt;I have yet to apply for this.  But when it comes back, we will have to apply
for a Czech birth certificate and a birth number.  More forms, more fees, more
superlegalization, etc.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;No matter what you do, do not romanticize international families.  It&amp;rsquo;s not all
that fun all the time&amp;hellip;&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Wed, 10 Apr 2013 20:10:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/04/international-families/</guid></item><item><title>The "Seagull House" in Devon, England</title><link>http://cabinporn.com/post/46950879990/the-seagull-house-in-devon-england-it-was</link><description>&lt;p&gt;Certainly &lt;a href="https://zacs.site/blog/my-problem-with-cabin-porn.html"&gt;not a cabin&lt;/a&gt;, but nevertheless a beautiful house.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/46950879990/the-seagull-house-in-devon-england-it-was"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 10 Apr 2013 13:35:48 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/46950879990/the-seagull-house-in-devon-england-it-was</guid></item><item><title>I Paid for iTunes Match. What's Next?</title><link>https://zacs.site/blog/i-paid-for-itunes-match.html</link><description>&lt;p&gt;Probably nothing; I can hope though, and I hope to see Apple add a second tier.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/i-paid-for-itunes-match.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 10 Apr 2013 12:37:30 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/i-paid-for-itunes-match.html</guid></item><item><title>Wildcards hostname in your hosts file</title><link>https://daniellittle.dev/wildcard-hostnames</link><description>If you've ever wanted to setup a wildcard entry in your hosts file so you don't have to add an entry for every IIS binding you'll be happy…</description><author>Daniel Little Dev</author><pubDate>Wed, 10 Apr 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/wildcard-hostnames</guid></item><item><title>Will Richman: Co-founder of Bitmaker Labs</title><link>https://solomon.io/will-richman-co-founder-of-bitmaker-labs/</link><description>Will Richman is the co-founder of Bitmaker Labs, an intensive web development school located in Toronto.</description><author>Sam Solomon</author><pubDate>Wed, 10 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/will-richman-co-founder-of-bitmaker-labs/</guid></item><item><title>Using DAWG for predictive text input</title><link>http://www.strchr.com/dawg_predictive</link><description>How to find words by their prefix, which can be mistyped, and sort them by frequency stored with the word.</description><author>strchr.com updates</author><pubDate>Tue, 09 Apr 2013 17:22:19 GMT</pubDate><guid isPermaLink="true">http://www.strchr.com/dawg_predictive</guid></item><item><title>It's Not About the Money</title><link>https://zacs.site/blog/its-not-about-the-money.html</link><description>&lt;p&gt;I have always had an interesting&amp;#160;&amp;#8212;&amp;#160;if not unique&amp;#160;&amp;#8212;&amp;#160;mentality when it comes to money. Rather than a thing to be desired, I have always considered money merely a means to an end. The physical thing is only worth possessing inasmuch as it allows me to do fun and enjoyable things with people I like. When I take my girlfriend out for dinner, I don&amp;#8217;t see the twenty dollars I spend on a meal as the loss of that money; I see that twenty dollars as paying for a delightful evening spent with a girl I enjoy being with and really like. Or consider the days I take my siblings to the frozen yogurt shop down the street from my house. One of the last times I took them, my sister tried to pay. It was a nice gesture and good that she did, but it is not her responsibility, at twelve, to pay for her own food; I was there and fully capable of buying our yogurt, which I did. I exchanged somewhere in the ballpark of ten dollars for a delicious bowl of frozen yogurt with my sister. I did not lose that money; to me, it was an acceptable trade in which I certainly got the better part of the deal.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/its-not-about-the-money.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 09 Apr 2013 13:24:36 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/its-not-about-the-money.html</guid></item><item><title>Before You Continue, Let Me Tell You Something about Blogging</title><link>https://zacs.site/blog/before-you-continue.html</link><description>&lt;p&gt;&lt;em&gt;Hi, can I axe you a question? Ever made a blog at WordPress, Blogger? How about Tumblr or Squarespace? Before you answer, Hi.&lt;/em&gt;&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/before-you-continue.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 09 Apr 2013 11:53:24 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/before-you-continue.html</guid></item><item><title>Knowing when to release and deploy your code (...and a mini script)</title><link>https://purpleidea.com/blog/2013/04/08/knowing-when-to-release-and-deploy-your-code-and-a-mini-script/</link><description>&lt;p&gt;Knowing when to release and deploy your code can turn into a complicated discussion. In general, In general, I tend to support &lt;a href="https://en.wikipedia.org/wiki/Release_early,_release_often"&gt;releasing early and often&lt;/a&gt;, for some value of &lt;em&gt;$early&lt;/em&gt; and &lt;em&gt;$often&lt;/em&gt;. I&amp;rsquo;ve decided to keep this simple and introduce you to one metric that I use&amp;hellip;&lt;/p&gt;
&lt;p&gt;I think that I am fairly diligent in adding plenty of comments to my source code. I might even sometimes add too many. I create plenty of XXX, FIXME, or TODO tagged comments as reminders of things to work on.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 09 Apr 2013 00:27:29 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/04/08/knowing-when-to-release-and-deploy-your-code-and-a-mini-script/</guid></item><item><title>Reeder will get Feedbin support</title><link>http://www.loopinsight.com/2013/03/27/reeder-will-get-feedbin-support/</link><description>&lt;p&gt;When I wrote my first article about Reeder, &lt;a href="https://zacs.site/blog/drafts-and-reeder.html"&gt;&lt;em&gt;Changing my Workflow with Drafts and Reeder&lt;/em&gt;&lt;/a&gt;, I highlighted its lack of reliance on Google Reader as one of the main reasons I chose to go with the RSS app. That was a factually incorrect statement; however, with &lt;a href="https://twitter.com/reederapp/status/317001614873489408"&gt;this announcement&lt;/a&gt;, Reeder&amp;#8217;s creator Silvio Rizzi announced that the popular iOS RSS reader would add Feedbin support in the very near future, thus ending its reliance on Google Reader. I realize Reeder supports Fever and Readability as well, but this is nevertheless great news.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.loopinsight.com/2013/03/27/reeder-will-get-feedbin-support/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 08 Apr 2013 17:55:50 GMT</pubDate><guid isPermaLink="true">http://www.loopinsight.com/2013/03/27/reeder-will-get-feedbin-support/</guid></item><item><title>Tablets may eclipse laptops, but there's no post-PC future</title><link>http://www.pcworld.com/article/2032207/tablets-may-eclipse-laptops-in-2014-but-theres-no-post-pc-future-on-the-horizon.html</link><description>&lt;p&gt;&amp;#8220;But percentages can be deceiving and they tell only half the tale of IDC&amp;#8217;s predictions. Peering ahead to the future, IDC&amp;#8217;s numbers suggest that while the overall market share for PCs will decline, shipments will still increase, if only by a hair. In other words, the demand for PCs isn&amp;#8217;t dying down&amp;#160;&amp;#8212;&amp;#160;it&amp;#8217;s just that the thirst for mobile devices is exploding.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.pcworld.com/article/2032207/tablets-may-eclipse-laptops-in-2014-but-theres-no-post-pc-future-on-the-horizon.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 08 Apr 2013 17:55:48 GMT</pubDate><guid isPermaLink="true">http://www.pcworld.com/article/2032207/tablets-may-eclipse-laptops-in-2014-but-theres-no-post-pc-future-on-the-horizon.html</guid></item><item><title>A Fable of Science and Politics</title><link>http://lesswrong.com/lw/gt/a_fable_of_science_and_politics/</link><description>&lt;p&gt;&amp;#8220;Imagine a future society that flees into a vast underground network of caverns and seals the entrances.  We shall not specify whether they flee disease, war, or radiation; we shall suppose the first Undergrounders manage to grow food, find water, recycle air, make light, and survive, and that their descendants thrive and eventually form cities.  Of the world above, there are only legends written on scraps of paper; and one of these scraps of paper describes the sky, a vast open space of air above a great unbounded floor.  The sky is cerulean in color, and contains strange floating objects like enormous tufts of white cotton.  But the meaning of the word &amp;#8221;cerulean&amp;#8220; is controversial; some say that it refers to the color known as &amp;#8216;blue&amp;#8217;, and others that it refers to the color known as &amp;#8216;green&amp;#8217;.&amp;#8221;&lt;/p&gt;

&lt;p&gt;A fantastic narrative from Eliezer Yudkowsky writing over at Less Wrong. Not merely about science and politics though, as the title suggests, but about human nature, hatred, and progress as well.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://lesswrong.com/lw/gt/a_fable_of_science_and_politics/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 08 Apr 2013 17:54:41 GMT</pubDate><guid isPermaLink="true">http://lesswrong.com/lw/gt/a_fable_of_science_and_politics/</guid></item><item><title>Why a Rubber Band Is the Best Wallet I’ve Ever Had</title><link>https://justingarrison.com/blog/2013-04-08-why-a-rubber-band-is-the-best-wallet-i-ve-ever-had/</link><description>I have always had a bad relationship with wallets. It was just one more thing I had to carry because there</description><author>Justin Garrison's Homepage</author><pubDate>Mon, 08 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-04-08-why-a-rubber-band-is-the-best-wallet-i-ve-ever-had/</guid></item><item><title>Quantity Brings Quality</title><link>https://etodd.io/2013/04/07/quantity-brings-quality/</link><description>&lt;p&gt;As I suspected, I have an almost insurmountable case of coder's block after a full day at work. Nevertheless, things are getting done. In fact, this might be the best thing that's happened for Lemma because it's forced me to cut a lot out of the design and focus on core things. It's the only way I'll ever finish.&lt;/p&gt;
&lt;p&gt;Screenshot below gives an idea of the new direction. I've dropped any pretense that the game occurs in our world as we know it. It was a restriction that existed only to service the story, and it was limiting the gameplay and visual style a lot. Now I'm free to do a lot more, and I'm not precluded from telling a story just because it's fantasy rather than sci-fi.&lt;/p&gt;</description><author>Evan Todd</author><pubDate>Mon, 08 Apr 2013 00:16:15 GMT</pubDate><guid isPermaLink="true">https://etodd.io/2013/04/07/quantity-brings-quality/</guid></item><item><title>Deploying games to the Chrome Web Store seems stupidly easy</title><link>https://liza.io/deploying-games-to-the-chrome-web-store-seems-stupidly-easy/</link><description>&lt;p&gt;I was going to do a blog post about my trip to GDC, but to be honest the whole thing was such a whirlwind that now I can&amp;rsquo;t even decide where to start. In the meantime, I&amp;rsquo;ll write about my April One Game a Month submission.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 07 Apr 2013 14:47:06 GMT</pubDate><guid isPermaLink="true">https://liza.io/deploying-games-to-the-chrome-web-store-seems-stupidly-easy/</guid></item><item><title>I — I don’t even see the code. All I see is blonde, brunette, redhead…</title><link>https://myownfortune.wordpress.com/2013/04/07/i-i-dont-even-see-the-code-all-i-see-is-blonde-brunette-redhead/</link><description>I was holding up on posting until I can say more about PythonForAll (it&amp;#8217;s not that I didn&amp;#8217;t get out of the building, just that it&amp;#8217;s becoming a bit more serious so I can&amp;#8217;t publish things before they are final) but I just have to write about this: For a long time I&amp;#8217;ve wanted to [&amp;#8230;]</description><author>My Own Fortune</author><pubDate>Sun, 07 Apr 2013 05:02:17 GMT</pubDate><guid isPermaLink="true">https://myownfortune.wordpress.com/2013/04/07/i-i-dont-even-see-the-code-all-i-see-is-blonde-brunette-redhead/</guid></item><item><title>Simple OutOfMemoryError profiling with VisualVM</title><link>https://rd.nz/2013/04/simple-outofmemoryerror-profiling.html</link><author>Rich Dougherty</author><pubDate>Sat, 06 Apr 2013 03:36:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/04/simple-outofmemoryerror-profiling.html</guid></item><item><title>We Are All Libertarians Now</title><link>http://localhost/write/text/2013-04-06-we-are-all-libertarians-now/</link><description>&lt;p&gt;&lt;img alt="" height="360" src="http://localhost/write/text/images/bane.jpg" width="640" /&gt;
&lt;span class="sidenote-ref sidenote-ref-inline" id="sidenote-ref-inline0"&gt;●&lt;/span&gt;&lt;small class="sidenote sidenote_inline"&gt;&amp;quot;I’m pissed because they don’t respect my consumer rights!&amp;quot;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;In The Dark Knight Rises, Bane locks all city police officers inside a cave, explodes a stadium, kidnaps a city and then this happens:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;INT. BOARDROOM, WAYNE ENTERPRISES&lt;br /&gt;&lt;br /&gt;
BANE&lt;br /&gt;
This meeting is called to order.&lt;br /&gt;
Chair and President. I also need&lt;br /&gt;
one ordinary member — Mr. Fox,&lt;br /&gt;
would you care to nominate?&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Keep in mind this was not said ironically (as much as Bane’s emasculated Donald Duck voice allows it not to). Also keep in mind this is 2013 and everything we know about the world comes from watching 2D animations.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Fiction is a lie, but the biggest lies in fiction are things that we don’t perceive as fiction.&lt;/p&gt;
&lt;p&gt;A straightforward case where this happens is with actors themselves. No matter how realistic a movie tries to be, every single movie happens in this fake world where the characters are not (famous) actors. Nobody stops Bruce Wayne to tell him he looks just like that guy from American Psycho. Nobody notices that Maid #3 is too hot to be a maid and that she could easily find a better job, maybe, I don’t know, being a 5-minute character in a Hollywood movie.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But what did you expect? You can’t make a movie without actors and this is just a stupid theoretical point, there are no implications&lt;/em&gt;. Of course there are. They are letting you lie to yourself, and it’s gonna come back at you.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" height="320" src="http://localhost/write/text/images/lesmis.jpg" width="640" /&gt;
&lt;span class="sidenote-ref sidenote-ref-inline" id="sidenote-ref-inline1"&gt;●&lt;/span&gt;&lt;small class="sidenote sidenote_inline"&gt;&amp;quot;I would also empathize with a hobo that looked like her.&amp;quot;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;You are learning that it’s possible to have a beautiful big apartment with a balcony in New York and buy all your kitchen stuff from Jamie Oliver while being a part-time waitress and spending most of your time jerking around with your hot Friends™. You are shown that there is such a thing as a sexy police officer who enjoys smooth jazz and reads Foucault at home, while thinking that infinite zoom cameras are the only fiction at play in cop shows.&lt;/p&gt;
&lt;p&gt;And you don’t understand why you are ass deep in debt. You just bought normal stuff: a computer, some clothes, a basic cable subscription. You have been told it was okay to pursue your life dream of being an English major — minor in theater — and own an iPhone. It works for Penny, why doesn’t it work for you?&lt;/p&gt;
&lt;p&gt;But here is the place where they take all you have and give nothing back. You think this is all a coincidence, a stupid theory from some internet chick with nothing better to do on a Saturday night.&lt;/p&gt;
&lt;p&gt;You don’t see that there are no coincidences in the system. If it’s there, it’s there for a reason. If those stories teach you what to desire, they exist &lt;strong&gt;to&lt;/strong&gt; teach you to desire. If movies are enabling you to cope with your life then they are also the reason why you are coping instead of living.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Another level of hidden fictional lies comes from things that are never said, but are implied by the story. Everything that is assumed to be true so the story makes sense is also part of the story.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But how can the storyteller know what I’ll assume?&lt;/em&gt; He doesn’t, but he assumes and then you assume the same thing. No story explains every single thing that it relies upon. Things are left out because anyone will be able to pick them up. And everyone does. They are not explicit there. But they are part of the story as much as the things that are actually there.&lt;/p&gt;
&lt;p&gt;So I tell you about a story of a man who killed 26 people and you think “psychopath”, unless I put him on the cover and he is Bruce Willis, then you think “action hero”. It doesn’t matter how it goes. What matters is that we all reach the same conclusion, which means it's not an accident.&lt;/p&gt;
&lt;p&gt;So a story is both what is explicitly told and what must be assumed. But here’s the twist: if a story makes sense to you, you already believe everything that needs to be assumed for it to make sense. There’s a name for that, but I can’t find in myself what it is.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Back at Dark Knight, hipster Darth Vader takes over Gotham City and removes all big (i.e. national) government from it by threatening to explode the city if the military intervenes. At this point he effectively owns the city.&lt;/p&gt;
&lt;p&gt;Now he needs to activate some stupid machine that is owned by Wayne Enterprises. And he does what every sensible person with a Darth Vader mask would do: he goes to the company’s board meeting.&lt;/p&gt;
&lt;p&gt;I’ll say it again, so it makes even less sense than the first time: the guy who controls the city goes to a board meeting and asks for it to activate the machine that can only be activated by at least 3 board members.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Oh, it’s a minor script quirk, there was no need for a board meeting per se, only the members.&lt;/em&gt; No! I’m spitting the crazy of it right at your face and you are still missing it by miles. Without a government, there is no board meeting because the company wouldn’t exist. And yet the writers still felt it was fine for Wayne Enterprises to be business as usual even when the city is completely controlled by a criminal.&lt;/p&gt;
&lt;p&gt;Why does he need the board's permission? Because the machine needs approval from 3 board members. But the machine doesn’t exist, it was made up by the writers. Why did they feel the need to include this completely pointless scene of a board meeting and “a machine that recognizes 3 board members”? While there are no cops in town, a football stadium just exploded, the military is at the bridge, why did everyone and you think it was okay to say “they were just having a board meeting and the machine will know the real board members. Makes sense”?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Let’s talk about why you made fun of Mitt Romney when he said corporations are people while still believing the same thing that he does. Ha! But he is a loser. Except that he still owns the corporations. And you don’t.&lt;/p&gt;
&lt;p&gt;Think fast: what is the opposite of corporations? If you think it’s the government, welcome to the Matrix. Here is your red pill: the opposite of corporation is individual.&lt;/p&gt;
&lt;p&gt;We are so used to hearing the libertarian rhetoric about how companies and governments are on opposite sides of every possible issue, but they are on the same side. Want to guess who is on the other side?&lt;/p&gt;
&lt;p&gt;The reason your boss can fire you is because there is a government that said it’s okay for him to fire you (your bosses also may need to follow some rules themselves, if you are in France). Because otherwise you would take your chair, hit that asshole right in their ugly face, and take over their position. Promotion Dothraki-style.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" height="360" src="http://localhost/write/text/images/dothraki.jpg" width="640" /&gt;
&lt;span class="sidenote-ref sidenote-ref-inline" id="sidenote-ref-inline2"&gt;●&lt;/span&gt;&lt;small class="sidenote sidenote_inline"&gt;&amp;quot;please direct your complaints to HR&amp;quot;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;We don’t even know how to talk about companies without thinking of them as people anymore. Check the headlines: &lt;em&gt;“GM wants…”, “Facebook hopes…”&lt;/em&gt;. And in the process we forget that they don’t exist, that they are just conventions, just illusions.&lt;/p&gt;
&lt;p&gt;We believe so much that companies are living entities with god given rights (© Ayn Rand), and that government is their clear opposition that what Bane does doesn’t raise any flags. Nobody, not the film producers, writers, director, actors or the audience noticed anything wrong with that sequence’s logic. A sequence of events that can only make sense in a society where companies are more real than everything else. Except that they aren’t. Which makes everyone dead wrong. Literally.&lt;/p&gt;
&lt;p&gt;So next time you talk about government, companies, Mitt Romney or the new thing that The Daily Show decided is important these days, remember: we are all libertarians now.&lt;/p&gt;</description><author>fserb.com</author><pubDate>Sat, 06 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost/write/text/2013-04-06-we-are-all-libertarians-now/</guid></item><item><title>Profession Talents for Ingenium</title><link>https://benovermyer.com/blog/2013/04/profession-talents-for-ingenium/</link><description>&lt;p&gt;This post presents a prototype profession mechanic we're working on for Ingenium 2nd Edition. We're looking at giving each profession its own Profession Talent to add a little more variety to the game.&lt;/p&gt;
&lt;p&gt;The Priest profession from first edition was pretty…. plain, and there was nothing priestly about her, other than role-playing ques. So with this new mechanic, she gets a Talent that reinforces her role as a messenger of the gods.&lt;/p&gt;
&lt;p&gt;The priest profession from first edition was presented like this:&lt;/p&gt;
&lt;h1 id="priest"&gt;Priest&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Starting Talent Pool:&lt;/strong&gt; Mystic&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attributes:&lt;/strong&gt; +1 Magical Aptitude&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Speed:&lt;/strong&gt; 3&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hit Points:&lt;/strong&gt; 1d8&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advancement:&lt;/strong&gt; Healing Arts&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Starting Gold:&lt;/strong&gt; 1d4 x 5&lt;/p&gt;
&lt;p&gt;Priests are those divine focal points who channel their gods' will into physical manifestations. Their magic is not based on arcane rules and laws; rather, they are blessed as Chosen and receive gifts of power for as long as they serve their gods.&lt;/p&gt;
&lt;p&gt;The flavor text stands in Second Edition, but there are a number of changes. Here's the new Priest block:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Starting Talent Pool:&lt;/strong&gt; White Magic&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attribute Bonus:&lt;/strong&gt; +1 Magical Aptitude&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hit Die:&lt;/strong&gt; d6&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Talent:&lt;/strong&gt; Exorcism&lt;/p&gt;
&lt;h2 id="exorcism"&gt;Exorcism&lt;/h2&gt;
&lt;p&gt;The Priest has the divine gift and knowledge to pull a demon out of a possession victim. She makes a Willpower roll against the demon's Challenge Level, and if the total is higher, the demon vacates the possessed body as a cloud of roiling black smoke. The victim then returns to his original stats, and if this causes any damage he has sustained to exceed his normal maximum Hit Points, he dies instantly. If his Willpower was at least half of the demon's, he remembers everything he did while possessed. A failed exorcism increases the Challenge Level of the target demon by 1.&lt;/p&gt;
&lt;h1 id="about-profession-talents"&gt;About Profession Talents&lt;/h1&gt;
&lt;p&gt;Every profession gets a unique Talent with this mechanic, and one that scales with the character's power. She will never out-level her profession Talent.&lt;/p&gt;
&lt;p&gt;Also, by adding “Profession Talents,” we add another option for expansion down the road.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 06 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/04/profession-talents-for-ingenium/</guid></item><item><title>Growth Is Not The Goal</title><link>https://martinrue.com/growth-is-not-the-goal/</link><description>In the startup world we hear a lot about growth. Startup accelerators focus on being the facilitators of quick growth and the term is thrown around like it's universally a good thing.</description><author>Martin Rue</author><pubDate>Sat, 06 Apr 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://martinrue.com/growth-is-not-the-goal/</guid></item><item><title>Unlocking Hillsborough</title><link>https://3059274a.danpalmer-me.pages.dev/2013-04-06-unlocking-hillsborough/</link><description>&lt;p&gt;I&amp;rsquo;m writing this on the train home from &lt;a href="http://rewiredstate.org"&gt;Rewired State&lt;/a&gt;&amp;rsquo;s latest event: &lt;a href="http://rewiredstate.org/hacks/national-hack-the-government-2013"&gt;National Hack the Government Day 2013&lt;/a&gt; (&lt;a href="http://eventifier.co/event/nhtg13/"&gt;event summary page&lt;/a&gt;). It was another great event with the same friendly atmosphere that goes along with so many (especially Rewired State&amp;rsquo;s) developer events. My friend &lt;a href="http://twitter.com/elliotjh"&gt;Elliot&lt;/a&gt; and I won in one of the categories, and so this post is mostly about what we did, how we did it, and why we think it&amp;rsquo;s important.&lt;/p&gt;</description><author>Dan Palmer</author><pubDate>Sat, 06 Apr 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://3059274a.danpalmer-me.pages.dev/2013-04-06-unlocking-hillsborough/</guid></item><item><title>Email List &amp;amp; RSS</title><link>http://www.dieselsweeties.com/blog/?p=928</link><description>&lt;p&gt;For anyone that hasn&amp;#8217;t already read Rich Stevens&amp;#8217; post announcing his new email list and RSS feed, what better way could one possibly introduce something? So exceptionally well done; I look forward to more great work in this new medium.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I need to keep a record of what I&amp;#8217;m thinking about and might as well share it with folks who might be interested. It&amp;#8217;ll be thoughts on staying alive as a nerd on the internet. A little business, a little gadgetry, a little art and writing, and a few dick jokes. It&amp;#8217;ll probably be 1-2 posts a week until it&amp;#8217;s done. Hoping to do the first one tomorrow.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.dieselsweeties.com/blog/?p=928"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 05 Apr 2013 13:25:15 GMT</pubDate><guid isPermaLink="true">http://www.dieselsweeties.com/blog/?p=928</guid></item><item><title>The TSA Agents were Delightful</title><link>https://zacs.site/blog/the-tsa-agents-were-delightful.html</link><description>&lt;p&gt;I just flew home after three months in Minnesota. The TSA agents at the Minneapolis-Saint Paul airport in Minnesota were &lt;em&gt;delightful&lt;/em&gt;: the man at the end of the security line checking my ID and boarding pass joked with me as I went through; the agent on the other side of the body scanner couldn&amp;#8217;t have been nicer. Then, as I was trying to find my gate on my boarding pass and undoubtedly looking quite confused, a TSA agent that happened to be walking by stopped and asked if I needed any help. She didn&amp;#8217;t have to stop; she could have kept on walking, but she didn&amp;#8217;t, and for that I was very grateful despite not needing her assistance.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-tsa-agents-were-delightful.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 05 Apr 2013 13:24:12 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-tsa-agents-were-delightful.html</guid></item><item><title>Play Framework Git workflow</title><link>https://rd.nz/2013/04/play-framework-git-workflow.html</link><author>Rich Dougherty</author><pubDate>Thu, 04 Apr 2013 05:26:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/04/play-framework-git-workflow.html</guid></item><item><title>How to "Burn" an ISO to a USB drive in OS X</title><link>https://thomashunter.name/posts/2013-04-04-how-to-burn-an-iso-to-a-usb-drive-in-osx</link><author>Thomas Hunter II</author><pubDate>Thu, 04 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-04-04-how-to-burn-an-iso-to-a-usb-drive-in-osx</guid></item><item><title>Processing genome using Flex and Bison</title><link>https://ericonotes.blogspot.com/2013/04/processing-genome-using-flex-and-bison.html</link><description>Is it possible? Has anyone ever tried?&lt;br /&gt;
&lt;br /&gt;
I'm &lt;a href="http://notepad-plus-plus.org/"&gt;looking&lt;/a&gt; at a &lt;a href="http://www.ncbi.nlm.nih.gov/nuccore/258541105?report=graph&amp;amp;tracks=[key:gene_model_track,name:Genes---Unnamed,display_name:Genes,annots:Unnamed,Options:MergePairs,SNPs:false,CDSProductFeats:true,ShowLabelsForAllFeatures:true][key:feature_track,name:Genes---other,display_name:Genes%20-%20other,subkey:ncRNA,annots:other,Layout:Adaptive][key:feature_track,name:Genes---tRNA,display_name:Genes%20-%20tRNA,subkey:tRNA,annots:tRNA,Layout:Adaptive][key:SNP_track,name:SNP,annots:SNP,Layout:Adaptive][key:SNP_Bins_track,name:Clinical%20Variants][key:SNP_Bins_track,name:Cited%20Variants][key:GWAS_track,name:GWAS%20Tracks,display_name:Association%20Results]"&gt;bacteria&lt;/a&gt;&amp;nbsp;right now, just downloaded 2.8MB of ATCG madness. Wondering if DNA is a regular language.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
XKCD &lt;a href="http://xkcd.com/1190/"&gt;Time&lt;/a&gt;&amp;nbsp;Strip&lt;/h2&gt;
I want to download all the pictures featured on the time strip. I think that the image name is cryptic using Skein. But, there is an easy way: people are uploading the drawings on the XKCD Wikia. So I installed wget on Windows8. Tried this without success. Any ideas?&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: #012456; border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code&gt;&lt;span style="color: white;"&gt; for ($i=50; $i -le 55; $i++)  
 {wget --wait=1 -r -P . -A png "http://xkcd-time.wikia.com/wiki/File:Time$i.png"}  
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
The png images downloaded are corrupted.</description><author>Erico Notes</author><pubDate>Wed, 03 Apr 2013 05:53:11 GMT</pubDate><guid isPermaLink="true">https://ericonotes.blogspot.com/2013/04/processing-genome-using-flex-and-bison.html</guid></item><item><title>The Strangest of Places</title><link>https://zacs.site/blog/the-strangest-of-places.html</link><description>&lt;p&gt;As I was reading &lt;a href="http://www.elasticspace.com/2013/03/no-to-no-ui"&gt;&lt;em&gt;No to NoUI&lt;/em&gt;&lt;/a&gt; earlier, an article ostensibly regarding the state of user interfaces today, Timo Arnall&amp;#8217;s description of &amp;#8220;the cloud&amp;#8221; stuck with me more than anything else from the article. That&amp;#8217;s why, even though I should have picked a more representative sample, I ended up using that as my excerpt when I linked to the piece. Foolhardy or not, I chose this paragraph above all the others:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-strangest-of-places.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 02 Apr 2013 23:18:31 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-strangest-of-places.html</guid></item><item><title>'Finding Dory' Set for 2015</title><link>http://daringfireball.net/linked/2013/04/02/finding-dory</link><description>&lt;p&gt;&amp;#8220;On the one hand, I worry that Pixar is making too many sequels. On the other, I&amp;#8217;d love to see another Incredibles movie.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Someone, somewhere, once said something to the effect of the higher the number the less-good the sequel. Certainly there are some exceptions to that rule&amp;#160;&amp;#8212;&amp;#160;Toy Story, for example&amp;#160;&amp;#8212;&amp;#160;but by and large it has proved a valid hypothesis. Take Cars 2: as much as I wanted to love that movie after the first, I couldn&amp;#8217;t do it. An endless number of examples and counter-examples could be made on both sides of this argument, but I, for one, look forward to anything with Pixar&amp;#8217;s name on it, regardless of whether or not a digit follows it.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://daringfireball.net/linked/2013/04/02/finding-dory"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 02 Apr 2013 23:18:27 GMT</pubDate><guid isPermaLink="true">http://daringfireball.net/linked/2013/04/02/finding-dory</guid></item><item><title>DeviantArt brings comic book publishing to the community</title><link>http://www.theverge.com/2013/4/2/4173672/deviantart-madefire-partnership-announcement</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/comixology-platform.html"&gt;Micropublishing&lt;/a&gt;, &lt;a href="https://zacs.site/blog/did-we-just-rip-off-marco-arment-and-the-magazine.html"&gt;anyone&lt;/a&gt;?&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/4/2/4173672/deviantart-madefire-partnership-announcement"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 02 Apr 2013 19:24:13 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/4/2/4173672/deviantart-madefire-partnership-announcement</guid></item><item><title>The Case for Gestures</title><link>https://zacs.site/blog/the-case-for-gestures.html</link><description>&lt;p&gt;A few weeks ago I came across Zite after having it recommended to me as a great way to discover interesting news in an environment capable of intelligently determining the kinds of content to serve its users based on their reading habits. More interesting than the actual content though, which I found consistently uninteresting and commonplace, I grew especially attached to the gesture-based interface: on the main screen swiping to the right switches between news categories, and swiping left moves back in the stack; in individual articles, swiping to the right brings me back to the main screen. And that&amp;#8217;s only in the iOS app: in the iPad version, swiping to the left and right moves through a tiled interface of news stories; swiping up or down on a single item designates it as an item of interest whose kind I would like to see more of or an article whose type I want to read less of, respectively. Although few and not particularly significant, these gestures, once learned, felt so natural and commonsensical that I found myself fumbling in my other apps, only to be confounded by the lack of gesture support. Especially in my then-RSS reader Feedler and Instapaper, where I do the majority of my reading on my iOS devices.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-case-for-gestures.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 02 Apr 2013 19:18:58 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-case-for-gestures.html</guid></item><item><title>Invisible UIs and Machines with Personality</title><link>https://zacs.site/blog/invisible-uis-and-machines-with-personality.html</link><description>&lt;p&gt;At first I glossed over Timo Arnall&amp;#8217;s piece &lt;a href="http://www.elasticspace.com/2013/03/no-to-no-ui"&gt;&lt;em&gt;No to NoUI&lt;/em&gt;&lt;/a&gt;, finding little interest in a discussion of user interfaces and its proponents&amp;#8217; nuances. After a steady climb towards the top spot on Hacker News though I added it to Instapaper, as I am wont to do for articles attracting this level of attention regardless of the topic. Rather than a meandering or pragmatic discussion regarding design in the most touchy-feely manner possible, though, I found, to my surprise, an interesting piece discussing the far-reaching and unobvious effects user interfaces have on our every day lives and the detrimental effects a future in which the user interface is invisible would bring&amp;#160;&amp;#8212;&amp;#160;a discussion that also encompassed the importance of good design. A very interesting piece well worth the read, even if you have no interest in design.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/invisible-uis-and-machines-with-personality.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 02 Apr 2013 16:15:03 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/invisible-uis-and-machines-with-personality.html</guid></item><item><title>Google Treasure Hunt</title><link>https://ericonotes.blogspot.com/2013/04/google-treasure-hunt.html</link><description>&lt;br /&gt;
Throw the numbers on the browser for going to the gps location. Start researching on the wikipedia about Willian Kid or other pirate.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
Meat | -21.53,46.05&lt;br /&gt;
Squid | &amp;nbsp;34.61,137.7&lt;br /&gt;
&lt;a href="https://maps.google.com/maps?q=11.99,-77.47&amp;amp;hl=en&amp;amp;ll=11.995667,-77.466145&amp;amp;spn=0.059189,0.090895&amp;amp;sll=51.504482,-2.715738&amp;amp;sspn=0.037879,0.090895&amp;amp;t=8&amp;amp;z=14"&gt;Boat&lt;/a&gt;&amp;nbsp;| -28.30,-57.30&lt;br /&gt;
&lt;a href="https://maps.google.com/maps?q=-28.30,-57.30&amp;amp;hl=en&amp;amp;ll=-28.296446,-57.298422&amp;amp;spn=0.05328,0.090895&amp;amp;sll=25.075027,-77.32873&amp;amp;sspn=0.054808,0.090895&amp;amp;t=8&amp;amp;z=14"&gt;Aligator with letter C&lt;/a&gt;&amp;nbsp;| -37.85,-25.83&lt;br /&gt;
&lt;br /&gt;
Right now I could find C R and V if I remember correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Small tip on faster learning when audio is required&lt;/h3&gt;
Use 1.5x speed. Thanks &lt;a href="http://lifehacker.com/5993156/watch-lectures-in-half-the-time-with-youtubes-html5-player"&gt;LifeHacker&lt;/a&gt;</description><author>Erico Notes</author><pubDate>Tue, 02 Apr 2013 06:35:25 GMT</pubDate><guid isPermaLink="true">https://ericonotes.blogspot.com/2013/04/google-treasure-hunt.html</guid></item><item><title>AAML - another android markup language</title><link>https://zserge.com/posts/aaml/</link><description>Sometimes I do android apps development. I use terminal, tmux and vim - no Eclipse, no IntelliJ Idea or other IDEs.
What I don&amp;rsquo;t like in android development is XMLs. It&amp;rsquo;s a lot of typing, and I don&amp;rsquo;t like to type a lot. So, here&amp;rsquo;s my attempt to make it easier for those who use minimal tools for android development. Maybe it would work for Eclipse, too.
Goals Simple syntax: minimal punctuation, no closing tags Should suit for most XMLs: layouts, values, strings etc.</description><author>zserge's blog</author><pubDate>Tue, 02 Apr 2013 03:00:00 GMT</pubDate><guid isPermaLink="true">https://zserge.com/posts/aaml/</guid></item><item><title>Understanding what a hint affects using the V$SQL_FEATURE views</title><link>https://tanelpoder.com/2013/04/01/understanding-what-a-hint-affects-using-the-vsql_feature-views/</link><description>&lt;p&gt;You may have used the Oracle 11g V$SQL_HINT view already – it displays all the valid hints (both documented and undocumented ones) available in your Oracle version, for example:&lt;/p&gt;
&lt;pre&gt;SQL&gt; @&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/hint.sql" target="_blank"&gt;hint&lt;/a&gt; &lt;strong&gt;merge&lt;/strong&gt;

NAME                                VERSION                   VERSION_OUTLINE           INVERSE
----------------------------------- ------------------------- ------------------------- ----------------------------------------------------------------
MERGE_CONST_ON                      8.0.0
MERGE_AJ                            8.1.0                     8.1.7
MERGE_SJ                            8.1.0                     8.1.7
MV_MERGE                            9.0.0
MERGE                               8.1.0                     10.1.0                    NO_MERGE
NO_MERGE                            8.0.0                     10.1.0                    MERGE
USE_MERGE_CARTESIAN                 11.1.0.6                  11.1.0.6
USE_MERGE                           8.1.0                     8.1.7                     NO_USE_MERGE
NO_USE_MERGE                        10.1.0.3                  10.1.0.3                  USE_MERGE
&lt;/pre&gt;
&lt;p&gt;But there’s more, (semi)undocumented views like &lt;code&gt;V$SQL_FEATURE&lt;/code&gt; and &lt;code&gt;V$SQL_FEATURE_HIERARCHY&lt;/code&gt; do give us more information about what these hints relate to. For example, if you have ever wondered why is there a &lt;code&gt;MERGE&lt;/code&gt; hint and then also a &lt;code&gt;USE_MERGE&lt;/code&gt; hint, you can check what do these hints control using my &lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/hinth.sql" target="_blank"&gt;hinth.sql&lt;/a&gt; (Hint Hierarchy) script:&lt;/p&gt;
&lt;pre&gt;SQL&gt; @&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/hinth.sql" target="_blank"&gt;hinth&lt;/a&gt; &lt;strong&gt;MERGE&lt;/strong&gt;
Display Hint feature hierarchy for hints like MERGE

NAME                               PATH
---------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------
MERGE                              ALL -&gt; COMPILATION -&gt; CBO -&gt; CBQT -&gt; CVM
MERGE                              ALL -&gt; COMPILATION -&gt; TRANSFORMATION -&gt; CBQT -&gt; CVM
MERGE                              ALL -&gt; COMPILATION -&gt; TRANSFORMATION -&gt; HEURISTIC -&gt; CVM
&lt;/pre&gt;
&lt;p&gt;So, the MERGE hints seem to affect the CBO’s query transformation code – (CBQT means Cost-Based Query Transformation and CVM means Complex View Merging, but more about that later).&lt;/p&gt;
&lt;pre&gt;SQL&gt; @hinth USE_MERGE
Display Hint feature hierarchy for hints like USE_MERGE

NAME                               PATH
---------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------
USE_MERGE                          ALL -&gt; COMPILATION -&gt; CBO -&gt; JOIN_METHOD -&gt; USE_MERGE
&lt;/pre&gt;
&lt;p&gt;And the USE_MERGE hint is about controlling the use of a join method – the sort-merge join.&lt;/p&gt;
&lt;p&gt;Let’s list all hints having NL in them:&lt;/p&gt;
&lt;pre&gt;SQL&gt; @hinth %NL%
Display Hint feature hierarchy for hints like %NL%

NAME                               PATH
---------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------
INLINE_XMLTYPE_NT                  ALL
NL_SJ                              ALL -&gt; COMPILATION -&gt; CBO
NL_AJ                              ALL -&gt; COMPILATION -&gt; CBO
NO_TABLE_LOOKUP_BY_NL              ALL -&gt; COMPILATION -&gt; CBO -&gt; CBQT -&gt; STAR_TRANS -&gt; TABLE_LOOKUP_BY_NL
TABLE_LOOKUP_BY_NL                 ALL -&gt; COMPILATION -&gt; CBO -&gt; CBQT -&gt; STAR_TRANS -&gt; TABLE_LOOKUP_BY_NL
NO_USE_NL                          ALL -&gt; COMPILATION -&gt; CBO -&gt; JOIN_METHOD -&gt; USE_NL
USE_NL                             ALL -&gt; COMPILATION -&gt; CBO -&gt; JOIN_METHOD -&gt; USE_NL
USE_NL_WITH_INDEX                  ALL -&gt; COMPILATION -&gt; CBO -&gt; JOIN_METHOD -&gt; USE_NL_WITH_INDEX
NO_TABLE_LOOKUP_BY_NL              ALL -&gt; COMPILATION -&gt; CBO -&gt; STAR_TRANS -&gt; TABLE_LOOKUP_BY_NL
TABLE_LOOKUP_BY_NL                 ALL -&gt; COMPILATION -&gt; CBO -&gt; STAR_TRANS -&gt; TABLE_LOOKUP_BY_NL
NO_CONNECT_BY_CB_WHR_ONLY          ALL -&gt; COMPILATION -&gt; TRANSFORMATION
CONNECT_BY_CB_WHR_ONLY             ALL -&gt; COMPILATION -&gt; TRANSFORMATION
INLINE                             ALL -&gt; COMPILATION -&gt; TRANSFORMATION
NO_TABLE_LOOKUP_BY_NL              ALL -&gt; COMPILATION -&gt; TRANSFORMATION -&gt; CBQT -&gt; STAR_TRANS -&gt; TABLE_LOOKUP_BY_NL
TABLE_LOOKUP_BY_NL                 ALL -&gt; COMPILATION -&gt; TRANSFORMATION -&gt; CBQT -&gt; STAR_TRANS -&gt; TABLE_LOOKUP_BY_NL
NO_NLJ_BATCHING                    ALL -&gt; EXECUTION
NLJ_BATCHING                       ALL -&gt; EXECUTION
NO_NLJ_PREFETCH                    ALL -&gt; EXECUTION
NLJ_PREFETCH                       ALL -&gt; &lt;strong&gt;EXECUTION&lt;/strong&gt;
&lt;/pre&gt;
&lt;p&gt;Plenty of interesting stuff here – the new hint TABLE_LOOKUP_BY_NL that has showed up recently seems to have to do with star transformations for example (I just learned this myself from this output).&lt;/p&gt;
&lt;p&gt;Interestingly the NLJ_BATCHING and NLJ_PREFETCH hints are considered as execution phase hints apparently (that was my term, I’m thinking about hints (also) affecting a decision in the execution phase, not just during optimization). For example, normally the NLJ prefetch feature can be dynamically turned on &amp;amp; off during the query execution, I guess with a hint this feature would be always enabled (I’m not sure about this here, just trying to reason why a hint is shown to be related to “execution” phase).&lt;/p&gt;
&lt;p&gt;If optimizer feature terms like CBQT and CVM do not immediately ring a bell, you can use the V$SQL_FEATURE view (or my &lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/sqlfh.sql" target="_blank"&gt;sqlfh.sql&lt;/a&gt; script) to list some more info about what these SQL feature name abbreviations mean and where in the hierarchy does this particular feature stand.&lt;/p&gt;
&lt;p&gt;The script below doesn’t accept any parameters, prints out the entire SQL feature hierarchy (except the temporary bugfix features you can see from &lt;code&gt;V$SYSTEM_FIX_CONTROL&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;SQL&gt; @&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/sqlfh.sql" target="_blank"&gt;sqlfh&lt;/a&gt;

SQL_FEATURE                                             DESCRIPTION
----------------------------------- ----------------------------------------------------------------
ALL                                 A Universal Feature
  COMPILATION                       SQL COMPILATION
    CBO                             SQL Cost Based Optimization
      ACCESS_PATH                   Query access path
        AND_EQUAL                   Index and-equal access path
        BITMAP_TREE                 Bitmap tree access path
        FULL                        Full table scan
        INDEX                       Index
        INDEX_ASC                   Index (ascending)
        INDEX_COMBINE               Combine index for bitmap access
        INDEX_DESC                  Use index (descending)
        INDEX_FFS                   Index fast full scan
        INDEX_JOIN                  Index join
        INDEX_RS_ASC                Index range scan
        INDEX_RS_DESC               Index range scan descending
        INDEX_SS                    Index skip scan
        INDEX_SS_ASC                Index skip scan ascending
        INDEX_SS_DESC               Index skip scan descending
        SORT_ELIM                   Sort Elimination Via Index
      CBQT                          Cost Based Query Transformation
        CVM                         Complex View Merging
        DIST_PLCMT                  Distinct Placement
        JOINFAC                     Join Factorization
        JPPD                        Join Predicate Push Down
        PLACE_GROUP_BY              Group-By Placement
        PULL_PRED                   pull predicates
        STAR_TRANS                  Star Transformation
          TABLE_LOOKUP_BY_NL        Table Lookup By Nested Loop
        TABLE_EXPANSION             Table Expansion
        UNNEST                      unnest query block
      CURSOR_SHARING                Cursor sharing
      DML                           DML
      JOIN_METHOD                   Join methods
        USE_HASH                    Hash join
        USE_MERGE                   Sort-merge join
        USE_MERGE_CARTESIAN         Merge join cartesian
        USE_NL                      Nested-loop join
        USE_NL_WITH_INDEX           Nested-loop index join
      JOIN_ORDER                    Join order
      OPT_MODE                      Optimizer mode
        ALL_ROWS                    All rows (optimizer mode)
        CHOOSE                      Choose (optimizer mode)
        FIRST_ROWS                  First rows (optimizer mode)
      OR_EXPAND                     OR expansion
      OUTLINE                       Outlines
      PARTITION                     Partition
      PQ                            Parallel Query
        PARALLEL                    Parallel table
        PQ_DISTRIBUTE               PQ Distribution method
        PQ_MAP                      PQ slave mapper
        PX_JOIN_FILTER              Bloom filtering for joins
      STAR_TRANS                    Star Transformation
        TABLE_LOOKUP_BY_NL          Table Lookup By Nested Loop
      STATS                         Optimizer statistics
        CARDINALITY                 Cardinality computation
        COLUMN_STATS                Basic column statistics
        CPU_COSTING                 CPU costing
        DBMS_STATS                  Statistics gathered by DBMS_STATS
        DYNAMIC_SAMPLING            Dynamic sampling
        DYNAMIC_SAMPLING_EST_CDN    Estimate CDN using dynamic sampling
        GATHER_PLAN_STATISTICS      Gather plan statistics
        INDEX_STATS                 Basic index statistics
        OPT_ESTIMATE                Optimizer estimates
        TABLE_STATS                 Basic table statistics
    QUERY_REWRITE                   query rewrite with materialized views
    RBO                             SQL Rule Based Optimization
    SQL_CODE_GENERATOR              SQL Code Generator
    SQL_PLAN_MANAGEMENT             SQL Plan Management
    TRANSFORMATION                  Query Transformation
&lt;strong&gt;      CBQT                          Cost Based Query Transformation
        CVM                         Complex View Merging
&lt;/strong&gt;        DIST_PLCMT                  Distinct Placement
        JOINFAC                     Join Factorization
        JPPD                        Join Predicate Push Down
        PLACE_GROUP_BY              Group-By Placement
        PULL_PRED                   pull predicates
        STAR_TRANS                  Star Transformation
          TABLE_LOOKUP_BY_NL        Table Lookup By Nested Loop
        TABLE_EXPANSION             Table Expansion
        UNNEST                      unnest query block
      HEURISTIC                     Heuristic Query Transformation
        CNT                         Count(col) to count(*)
        COALESCE_SQ                 coalesce subqueries
        CSE                         Common Sub-Expression Elimination
        CVM                         Complex View Merging
        FILTER_PUSH_PRED            Push filter predicates
        FULL_OUTER_JOIN_TO_OUTER    Join Conversion
        JPPD                        Join Predicate Push Down
        OBYE                        Order-by Elimination
        OLD_PUSH_PRED               Old push predicate algorithm (pre-10.1.0.3)
        OUTER_JOIN_TO_ANTI          Join Conversion
        OUTER_JOIN_TO_INNER         Join Conversion
        PRED_MOVE_AROUND            Predicate move around
        SET_TO_JOIN                 Transform set operations to joins
        SVM                         Simple View Merging
        TABLE_ELIM                  Table Elimination
        UNNEST                      unnest query block
        USE_CONCAT                  Or-optimization
    XML_REWRITE                     XML Rewrite
      CHECK_ACL_REWRITE             Check ACL Rewrite
      COST_XML_QUERY_REWRITE        Cost Based XML Query Rewrite
      XMLINDEX_REWRITE              XMLIndex Rewrite
  EXECUTION                         SQL EXECUTION
&lt;/pre&gt;
&lt;p&gt;I highlighted the CVM and CBQT lines above…&lt;/p&gt;
&lt;p&gt;Just for reference (and if you’re too lazy to run these scripts yourself), I’ve pasted the full output of the hint feature hierarchy script too (executed in my 11.2.0.3 DB):&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Mon, 01 Apr 2013 20:17:07 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/04/01/understanding-what-a-hint-affects-using-the-vsql_feature-views/</guid></item><item><title>The Comprehensive HandBrake Guide</title><link>https://zacs.site/blog/the-comprehensive-handbrake-guide.html</link><description>&lt;p&gt;Created in 2003, &lt;a href="http://handbrake.fr/"&gt;HandBrake&lt;/a&gt; was originally the brainchild of a single developer: &lt;em&gt;titler&lt;/em&gt;. However, after his prolonged absence from the project beginning in May of 2006, Rodney Hester and Chris Long began developing a release of HandBrake supporting the H.264 video codec. Although they made significant advances in stability, interface design, and functionality, they were unable to submit their modified version of HandBrake without the consent of the original creator. Unable to officially commit their revisions as a new version, the two developers created a new project named MediaFork based on the latest release of HandBrake, 0.7.1 at the time. Then, on February 13, 2007, &lt;em&gt;titler&lt;/em&gt; resurfaced and contacted Hester and Long. &lt;em&gt;titler&lt;/em&gt; expressed his support for their project and encouraged them to continue development. Following the exchange, plans were made to reintegrate MediaFork into the main HandBrake build. And so, in the ensuing version, MediaFork&amp;#8217;s code was integrated into HandBrake&amp;#8217;s. At the time of this writing HandBrake is in version 0.9.8, released July 18th, 2012.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-comprehensive-handbrake-guide.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 01 Apr 2013 14:05:03 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-comprehensive-handbrake-guide.html</guid></item><item><title>Your intuitions are not magic</title><link>http://lesswrong.com/lw/2bu/your_intuitions_are_not_magic/</link><description>&lt;p&gt;&amp;#8220;People who know a little bit of statistics - enough to use statistical techniques, not enough to understand why or how they work - often end up horribly misusing them. Statistical tests are complicated mathematical techniques, and to work, they tend to make numerous assumptions. The problem is that if those assumptions are not valid, most statistical tests do not cleanly fail and produce obviously false results.&amp;#8221;&lt;/p&gt;

&lt;p&gt;The first of what I believe will be a long series of fascinating articles from Less Wrong. A great piece on &lt;a href="https://zacs.site/blog/useless-correlations.html"&gt;statistical correlations&lt;/a&gt;.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://lesswrong.com/lw/2bu/your_intuitions_are_not_magic/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 01 Apr 2013 01:02:19 GMT</pubDate><guid isPermaLink="true">http://lesswrong.com/lw/2bu/your_intuitions_are_not_magic/</guid></item><item><title>Why I Blog</title><link>/2013/03/31/Why-I-Blog/</link><description>&lt;p&gt;I blog because I&amp;rsquo;m lazy. There&amp;rsquo;s more too it though: In any given day I may explain something to someone, the first time I do this I make a bit of a mental note. The second time I do this, especially within a short time frame I make a physical note of this in the form of the title of a blog post. Once I&amp;rsquo;m already to a second time of doing this its almost inevitable I&amp;rsquo;ll continue repeating myself – and its valuable to others.&lt;/p&gt;
&lt;h3 id="becoming-replaceable"&gt;
&lt;div&gt;
Becoming replaceable
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;My goal in doing this is actually to become heavily replaceable. Keeping information locked away means I&amp;rsquo;m the only one capable of doing it. Making myself highly replaceable means I can continue to work on new and interesting things.&lt;/p&gt;
&lt;h3 id="lots-can-be-shared"&gt;
&lt;div&gt;
Lots can be shared
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;I don&amp;rsquo;t recall exactly where I read it, I believe it may have been &lt;a href="http://www.twitter.com/monkchips"&gt;James Governor&lt;/a&gt;, but any email that doesn&amp;rsquo;t contain proprietary info or trade secrets should be blogged. I fully expect the sentiment around this is something to the effect that anything that contains good ideas/learning/processes can also be helpful to others.&lt;/p&gt;
&lt;h3 id="distilling-information"&gt;
&lt;div&gt;
Distilling information
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;For every time I explain something I often linger about one piece too long, hit something that doesn&amp;rsquo;t need to be discussed, or miss something entirely. Putting an idea or guide together in written form you re-read it, which is hard to do when simply verbally explaining. If you&amp;rsquo;ve video taped yourself before for public speaking practice you know this is an awkward but valuable experience. Its much easier to practice as an exercise in writing.&lt;/p&gt;
&lt;h3 id="economies-of-scale"&gt;
&lt;div&gt;
Economies of scale
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;While in some ways I am absolutely lazy when I blog I get economies of scale I couldn&amp;rsquo;t otherwise have. On a given day on a high day I may have 15 one on one conversations. Every post has the opportunity to become a one on one conversation.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;One on one conversation is my preferred method instead of in a large group. In a related area I&amp;rsquo;ve been having an ongoing conversation wth &lt;a href="http://www.twitter.com/rwdaigle"&gt;Ryan Daigle&lt;/a&gt; on whether blog posts should have comments. I opt for having you reach out to me directly via &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;email&lt;/a&gt;, he believes comments should be available. Putting this in words crystalizes that to me its just relative to how you prefer to interact.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="summary"&gt;
&lt;div&gt;
Summary
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;As with any other post, this is one conversation I&amp;rsquo;ve now had a few times over. Hopefully this gives some basis to why I feel others should contribute content as well. Whether you want make your self dispensible, refine your thoughts, or reach new economies of scale I believe its a worthwhile exercise for many. If you have other reasons you feel its valuable as always please &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;reach out&lt;/a&gt;.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Sun, 31 Mar 2013 23:55:56 GMT</pubDate><guid isPermaLink="true">/2013/03/31/Why-I-Blog/</guid></item><item><title>When Arch Linux takes too long to shut down...</title><link>https://bastian.rieck.me/blog/2013/fixing_archlinux_shutdown/</link><description>&lt;p&gt;After switchin to &lt;code&gt;systemd&lt;/code&gt;, the shutdown process in Arch Linux suddenly seemed to take very long.
The console output stopped at &lt;code&gt;Stopped target Remote File Systems&lt;/code&gt;. From this point on, it took
almost 2min for the next line to appear.&lt;/p&gt;
&lt;p&gt;The freedesktop.org wiki hat some &lt;a href="http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually"&gt;helpful information about debugging &lt;code&gt;systemd&lt;/code&gt; shutdown
problems&lt;/a&gt;.
Basically, I added some debug options to &lt;code&gt;/boot/grub/menu.lst&lt;/code&gt;. Afterwards, the next shutdown
resulted in a log file that contained details about the started services. The culprit turned out to
be &lt;code&gt;acpid&lt;/code&gt;. Since &lt;code&gt;systemd&lt;/code&gt; is capable of hibernation and suspending the computer, too, I decided to
scrap &lt;code&gt;acpid&lt;/code&gt; for the time being and remove it via &lt;code&gt;pacman --remove acpid&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I have to admit that I did not look again into the issues with &lt;code&gt;acpid&lt;/code&gt;. Especially for laptops, it
is probably preferable to use &lt;code&gt;acpid&lt;/code&gt; than a pure &lt;code&gt;systemd&lt;/code&gt;. If I suddenly get &lt;code&gt;acpid&lt;/code&gt; working
again, I will post an update to this note.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 31 Mar 2013 22:18:44 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/fixing_archlinux_shutdown/</guid></item><item><title>Being Defiant: Finishing Out Rift's Free Tier</title><link>https://benovermyer.com/blog/2013/03/being-defiant-finishing-out-rifts-free-tier/</link><description>&lt;p&gt;Today is the last day of March and the last day I'll be writing about the MMORPG Rift as it applies to tabletop RPGs. If you've missed any of these posts, you might want to check them out. Go ahead, I'll wait.&lt;/p&gt;
&lt;p&gt;This post is a retrospective and has little to do with tabletop RPGs. If you're just looking for new ways to experience your favorite RPG, come back next week – I've got something very interesting planned!&lt;/p&gt;

&lt;img class="photo" src="https://benovermyer.com/blog/2013/03/being-defiant-finishing-out-rifts-free-tier/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;rift-sidious.0a3618da0dec8507.jpg" /&gt;
&lt;p&gt;Generally, it takes me about one month to get bored of an MMORPG. I'll steep myself in the lore, powerlevel up to about 75-90% of endgame, get involved in crafting, and then… burn out. The novelty factor wears off, and I stop playing.&lt;/p&gt;
&lt;p&gt;Most of the time, it's not a conscious decision to stop playing. I'll just go a day without playing the game, since I find something else I want to do more that one day. Then two days go by. Then three. Before I realize it, it's been over a week since I last logged in, and I have no intention of going back.&lt;/p&gt;
&lt;p&gt;A rare handful of MMORPGs keep my interest for longer than that. The list so far has been Star Wars: Galaxies and World of Warcraft. Now, I'm adding Rift to the list.&lt;/p&gt;

&lt;img class="photo" src="https://benovermyer.com/blog/2013/03/being-defiant-finishing-out-rifts-free-tier/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;rift-amun.bb92924a55ecf1be.jpg" /&gt;
&lt;p&gt;I originally reinstalled the game because it was going to be free and I'd heard good things about Dimensions. So, I did, and started this blog series to tie the game to tabletop gaming. It just clicked. The novelty factor has worn off, and I'm still playing. That bodes well for its longevity, and I'm going to resubscribe.&lt;/p&gt;
&lt;p&gt;The Dimensions are awesome. The fishing is weirdly addictive. And playing an MMO with a great and friendly community is refreshing.&lt;/p&gt;
&lt;p&gt;If you're interested in trying it out, jump on the Faeblight server and look me up. I'll be playing either my Eth cleric Amun or my Kelari mage Sidious.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sun, 31 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/03/being-defiant-finishing-out-rifts-free-tier/</guid></item><item><title>iOS to Android - Nexus 4</title><link>https://liza.io/ios-to-android-nexus-4/</link><description>&lt;p&gt;After three long years with an iPhone 4, I have finally upgraded to a Nexus 4. I had been bored of iOS for a while, having been using it since the iPhone 3G - aside from brief stint with Windows Phone 7 (we don&amp;rsquo;t talk about that).&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sat, 30 Mar 2013 16:10:23 GMT</pubDate><guid isPermaLink="true">https://liza.io/ios-to-android-nexus-4/</guid></item><item><title>Take pride or fuck it</title><link>http://robertheaton.com/2013/03/27/take-pride-or-f----it/</link><description>&lt;p&gt;&amp;#8220;As soon as I lose pride in something, I stop caring about it being good. Its only value to me is as something that I one day won&amp;#8217;t have to do anymore. It always starts with the cutting of one small corner, but that&amp;#8217;s all it takes. Pandora&amp;#8217;s Box is open and the feature is infected. I cut the next corner with only a faint pang of remorse, and after that I don&amp;#8217;t even notice the corners anymore.&amp;#8221;&lt;/p&gt;

&lt;p&gt;A great article and an astute observation not only applicable in the professional world, but throughout our lives as well.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://robertheaton.com/2013/03/27/take-pride-or-f----it/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 19:45:16 GMT</pubDate><guid isPermaLink="true">http://robertheaton.com/2013/03/27/take-pride-or-f----it/</guid></item><item><title>Find The Thing You're Most Passionate About, Then Do It On Nights And Weekends For The Rest Of Your Life</title><link>http://onion.com/10alXLl</link><description>&lt;p&gt;&amp;#8220;I can&amp;#8217;t stress this enough: Do what you love...in between work commitments, and family commitments, and commitments that tend to pop up and take immediate precedence over doing the thing you love. Because the bottom line is that life is short, and you owe it to yourself to spend the majority of it giving yourself wholly and completely to something you absolutely hate, and 20 minutes here and there doing what you feel you were put on this earth to do.&amp;#8221;&lt;/p&gt;

&lt;p&gt;A surprisingly excellent article from The Onion that has gained quite a bit of traction since it was posted. Dan Benjamin and Garret Dimon talked about it on the latest episode of QUIT!, &lt;a href="http://5by5.tv/quit/17"&gt;Four Hour Sleep Night&lt;/a&gt;, and then Dan and Merlin Mann discussed it on the latest episode of Back to Work, &lt;a href="http://5by5.tv/b2w/112"&gt;Touching Pizza and Robocon&lt;/a&gt;. Something to keep in mind next time you decide to do something instead of the thing you love.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://onion.com/10alXLl"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 19:43:49 GMT</pubDate><guid isPermaLink="true">http://onion.com/10alXLl</guid></item><item><title>Less Wrong</title><link>http://wiki.lesswrong.com/wiki/FAQ</link><description>&lt;p&gt;&amp;#8220;Less Wrong is an online community for discussion of rationality. Topics of interest include decision theory, philosophy, self-improvement, cognitive science, psychology, artificial intelligence, game theory, metamathematics, logic, evolutionary psychology, economics, and the far future.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I linked to an interesting article from Less Wrong earlier today that made its rounds on Hacker News yesterday, and spent some time browsing the site throughout the rest of the afternoon. I have already saved a number of articles to Instapaper, and look forward to spending a fair amount of time on the site in the near future.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://wiki.lesswrong.com/wiki/FAQ"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 19:24:47 GMT</pubDate><guid isPermaLink="true">http://wiki.lesswrong.com/wiki/FAQ</guid></item><item><title>Don't Get Offended</title><link>http://lesswrong.com/lw/gux/dont_get_offended/</link><description>&lt;p&gt;&amp;#8220;There is nothing inherent in a set of words that makes them offensive or inoffensive&amp;#160;&amp;#8212;&amp;#160; your reaction is an internal, personal process. ... What type of reaction you have is largely up to you, and if you don&amp;#8217;t like your current reactions you can train better ones&amp;#160;&amp;#8212;&amp;#160; this is a core principle of the extremely useful philosophy known as Stoicism.&amp;#8221;&lt;/p&gt;

&lt;p&gt;An interesting article posted to the community blog Less Wrong. Perhaps even more interesting are the comments though.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://lesswrong.com/lw/gux/dont_get_offended/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 19:11:07 GMT</pubDate><guid isPermaLink="true">http://lesswrong.com/lw/gux/dont_get_offended/</guid></item><item><title>In Event of Moon Disaster</title><link>http://www.lettersofnote.com/2010/11/in-event-of-moon-disaster.html?m=1</link><description>&lt;p&gt;&amp;#8220;Fate has ordained that the men who went to the moon to explore in peace will stay on the moon to rest in peace.&amp;#8221;&lt;/p&gt;

&lt;p&gt;After listening to the fifty-ninth episode of Roderick on the Line, I found the speech written for the president should astronauts Neil Armstrong and Buzz Aldrin become stranded on the moon. It would be a lonely way to go, sitting on the moon, staring at Earth a few hundred thousand miles away as their oxygen slowly depleted and they suffocated. It would have been a terrible way to go.&lt;/p&gt;

&lt;p&gt;Thankfully, this was one speech he never gave.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.lettersofnote.com/2010/11/in-event-of-moon-disaster.html?m=1"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 19:10:33 GMT</pubDate><guid isPermaLink="true">http://www.lettersofnote.com/2010/11/in-event-of-moon-disaster.html?m=1</guid></item><item><title>The Time I Was Wrong*</title><link>http://brooksreview.net/2013/03/ipad-mini-3/</link><description>&lt;p&gt;The iPad Mini, like the original iPad, launched to the tune of naysayers questioning the usefulness of a tablet in general, and especially one in such a form factor. After all, who could use the iPad for actual work? It was obviously a content-consumption device rather than a device capable of creating new and interesting things. Obviously. But now we have the iPad 4, and now we have the iPad Mini. And now we have two new ways to create whenever and wherever is convenient.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Using an iPad mini was like switching from a 17&amp;#8217;&amp;#8216; MacBook Pro to an 11&amp;#8217;&amp;#8217; MacBook Air &amp;#160;&amp;#8212;&amp;#160; all of a sudden you can use the device in far more places than you ever thought possible and still do almost everything you wanted to do on it. I can fumble for keys and easily find a safe place to tuck the mini &amp;#160;&amp;#8212;&amp;#160; often in my jacket pocket or jeans back pocket &amp;#160;&amp;#8212;&amp;#160; or do countless other things that would have me stumbling over the size of the iPad.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/03/ipad-mini-3/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 14:50:49 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/03/ipad-mini-3/</guid></item><item><title>Offline: boiling it down to the essentials</title><link>http://www.theverge.com/2013/3/26/4147038/offline-boiling-it-down-to-the-essentials</link><description>&lt;p&gt;Paul Miller occasionally sends out dispatches, as The Verge calls them, articles about one thing or another penned by a writer who has forsaken the internet for an entire year. His last piece I read, &lt;a href="http://www.theverge.com/2013/2/6/3955678/offline-love-loss-dating-without-facebook"&gt;&lt;em&gt;Offline: Love, Loss, and Dating Without Facebook&lt;/em&gt;&lt;/a&gt;, was interesting only insofar as a story about an anticlimactic love endeavor can be; his latest article, linked at the top of this post, is much, much better. As Paul chronicled his difficulties finding the motivation to make good use of his newfound time, &lt;a href="https://zacs.site/blog/increasingly-prevalent-realistic-and-irrelevant.html"&gt;I couldn&amp;#8217;t help but relate&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;These don&amp;#8217;t make for catchy book titles:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;* No Internet, No Life: The Paul Miller Story&lt;/p&gt;
&lt;p&gt;* How To Disconnect From Reality In 365 Days&lt;/p&gt;
&lt;p&gt;* At First I Liked Not Using The Internet But Then It Got Kind Of Sucky&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Paul&amp;#8217;s piece made me laugh and it prompted introspection. If nothing else, if not for the great story, read the piece as a shining example of excellent prose.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/3/26/4147038/offline-boiling-it-down-to-the-essentials"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 14:12:45 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/3/26/4147038/offline-boiling-it-down-to-the-essentials</guid></item><item><title>Bees and Flowers and Reader--Oh My!</title><link>https://zacs.site/blog/bees-and-flowers-and-reader.html</link><description>&lt;p&gt;A few days ago &lt;a href="https://zacs.site/blog/what-if-the-google-reader-readers-just-dont-come-back.html"&gt;I linked to&lt;/a&gt; &lt;a href="http://www.marco.org/2013/03/26/google-reader-readers"&gt;Marco Arment&amp;#8217;s response&lt;/a&gt; to MG Siegler&amp;#8217;s post &lt;a href="http://techcrunch.com/2013/03/24/bees/"&gt;&lt;em&gt;What If The Google Reader Readers Just Don&amp;#8217;t Come Back?&lt;/em&gt;&lt;/a&gt; without actually reading MG&amp;#8217;s article. I got around to reading it this morning though, and he made a few interesting&amp;#160;&amp;#8212;&amp;#160;albeit tired&amp;#160;&amp;#8212;&amp;#160;points that merit some discussion.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/bees-and-flowers-and-reader.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 13:25:47 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/bees-and-flowers-and-reader.html</guid></item><item><title>Can not execute Sonar: Missing column: period in ALERTS</title><link>https://www.craigpardey.com/post/2013-03-27-can-not-execute-sonar-missing-column-period-in-alerts/</link><description>&lt;p&gt;I recently encountered the following error in Sonar 3.5&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar
(default-cli) on project smartfx: Can not execute Sonar: Missing column:period in DB.ALERTS -&amp;gt; [Help 1]  
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project	myproject: 
Can not execute Sonar  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:	203)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:	148)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:	140)  
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A quick check of the database revealed that the ALERTS table does indeed
contain a column named &amp;lsquo;period&amp;rsquo;.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Wed, 27 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-03-27-can-not-execute-sonar-missing-column-period-in-alerts/</guid></item><item><title>Settling</title><link>https://zacs.site/blog/settling.html</link><description>&lt;p&gt;Something I found in a note almost lost in the sea that is the host of half-baked ideas begging to be honed to a comprehensible piece:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/settling.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 01:27:22 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/settling.html</guid></item><item><title>I Don't Write for Pageviews</title><link>https://zacs.site/blog/i-dont-write-for-pageviews.html</link><description>&lt;p&gt;I have devoted a lot of time to thinking about this, curious as to my motivations behind writing. In the past I said I wrote because I wanted to share my knowledge with others. How noble of me, I suppose. At other times, simply because I love the writer&amp;#8217;s craft. This was closer to the real reason, but neither, while true on some level, accurately represented the actual drive that has pushed me to come home after a long day and sit down to write rather than collapse in my bed, the motivation necessary to make that seven-to-eleven-o&amp;#8217;clock&amp;#160;&amp;#8212;&amp;#160;or ten-to-midnight, as is the case here&amp;#160;&amp;#8212;&amp;#160;side project a viable business.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/i-dont-write-for-pageviews.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 01:21:15 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/i-dont-write-for-pageviews.html</guid></item><item><title>Increasingly Prevalent, Realistic, and Irrelevant</title><link>https://zacs.site/blog/increasingly-prevalent-realistic-and-irrelevant.html</link><description>&lt;p&gt;Sometimes distractions are good. At the end of a long day spent working on homework, for example, being productive is the last thing I want to do: I would much rather relax and watch a movie than write. Other days, though, during the summer or over break, those are the days I should spend in Instapaper, reading, and in Drafts, writing. But more often than not, those two different types of days that for all intents and purposes should remain separate blend together, and I end up taking the easier path, at the end of which I find myself after two hours having accomplished quite literally nothing as my character in whatever game most recently struck my fancy is once again shot and killed.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/increasingly-prevalent-realistic-and-irrelevant.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 27 Mar 2013 01:16:02 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/increasingly-prevalent-realistic-and-irrelevant.html</guid></item><item><title>What If The Google Reader Readers Just Don't Come Back?</title><link>http://www.marco.org/2013/03/26/google-reader-readers</link><description>&lt;p&gt;Marco Arment and MG Siegler on potential reader loss due to Google Reader&amp;#8217;s impending demise:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I&amp;#8217;m a little worried about this possibility. Short-term, it will definitely be a problem. Long-term is the question.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.marco.org/2013/03/26/google-reader-readers"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 26 Mar 2013 18:45:58 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/03/26/google-reader-readers</guid></item><item><title>hg clone fails with 255 error</title><link>https://www.craigpardey.com/post/2013-03-26-hg-clone-fails-with-255-error/</link><description>&lt;p&gt;I recently encountered an issue with cloning a Mercurial repository where it
would fail with an obtuse error stating that &amp;ldquo;&lt;code&gt;[command returned code 255 Mon Mar 25 11:39:55 2013]&lt;/code&gt;&amp;rdquo;. My initial Googling implied that this was caused by a
server timeout but the problem persisted even after increasing the timeout on
our Apache web server.&lt;/p&gt;
&lt;p&gt;The clone was always failing on one particular file - a 600Mb binary. (Don&amp;rsquo;t
ask&amp;hellip;)&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Tue, 26 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-03-26-hg-clone-fails-with-255-error/</guid></item><item><title>PostgreSQL vs MySQL "update" difference</title><link>https://www.databasesandlife.com/postgresql-vs-mysql-update-difference/</link><description>&lt;p&gt;While one session is doing a &amp;ldquo;delete then insert&amp;rdquo;, and another session doing an &amp;ldquo;update&amp;rdquo;, the update waits until the &amp;ldquo;delete then insert&amp;rdquo; is finished. &lt;strong&gt;But does the &amp;ldquo;update&amp;rdquo; then affect the &amp;ldquo;inserted&amp;rdquo; row or the &amp;ldquo;deleted&amp;rdquo; row?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create a table foo(id) and insert one row with id=5 into it. Then:&lt;/p&gt;
&lt;table class="hlines" style="width: 100%;"&gt;
  &lt;tr&gt;
    &lt;td style="width: 50%;"&gt;
      &lt;strong&gt;Session A&lt;/strong&gt;
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td style=&amp;quot;width: 50%;&amp;quot;&amp;gt;
  &amp;lt;strong&amp;gt;Session B&amp;lt;/strong&amp;gt;
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      START TRANSACTION
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  START TRANSACTION
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      DELETE FROM foo WHERE id=5
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  UPDATE foo SET id=6 WHERE id=5 &amp;lt;em&amp;gt;(blocks)&amp;lt;/em&amp;gt;
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      INSERT INTO foo VALUES (5)
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      COMMIT
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  &amp;lt;em&amp;gt;(unblocks)&amp;lt;/em&amp;gt;
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  SELECT id FROM foo
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;What does Session B see?&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Tue, 26 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/postgresql-vs-mysql-update-difference/</guid></item><item><title>Citational Fallacy</title><link>https://zacs.site/blog/citational-fallacy.html</link><description>&lt;p&gt;In the past few months I have written many essays necessitating the use of citations as a manner through which to lend credence to some datum or another. As you may have surmised from this article&amp;#8217;s title though, I believe the current model for determining credible citations to be broken. Take, for example, XKCD comic #976, &lt;a href="http://xkcd.com/978/"&gt;Citogenesis&lt;/a&gt;. In this comic, Randal Munroe once again displays brilliance by showing &lt;a href="http://www.forbes.com/sites/alexknapp/2011/11/16/xkcd-explains-where-internet-citations-come-from/"&gt;where citations come from&lt;/a&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/citational-fallacy.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 25 Mar 2013 14:34:51 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/citational-fallacy.html</guid></item><item><title>Religious arguments, fear of the unknown</title><link>https://www.databasesandlife.com/fear-of-the-unknown/</link><description>&lt;p&gt;A friend said this to me today:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;it&amp;rsquo;s really odd, why do fans of dynamic languages often have this cult-like approach?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&amp;rsquo;s an interesting thought. I know many people who love dynamic typing and reject static typing without knowing much about it. (Of course there are many people who love dynamic typing but who do know lots about static typing.)&lt;/p&gt;
&lt;p&gt;It got me to thinking, I reckon if you only know X and know nothing about non-X, you might start to fear non-X. Your fear might express itself by reinforcing your belief that X is the best, that non-X is no good.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Mon, 25 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/fear-of-the-unknown/</guid></item><item><title>Werner Vogels on Skills</title><link>https://blog.separateconcerns.com/2013-03-24-vogels-skills.html</link><description>&lt;p&gt;I found a talk by Werner Vogels, the CTO of Amazon &lt;a href="https://blog.separateconcerns.com/2013-01-02-startups-soa.html"&gt;who is a role model of mine&lt;/a&gt;, on &lt;a href="http://skillsmatter.com/podcast/design-architecture/21st-century-application-architectures"&gt;21st century application architectures&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After his presentation, someone from the audience asks him what skills he is looking for to run these services. His answer (starting at about 40:45 in the video) is so interesting that I thought it would be worth it to write it down. Here it is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What kind of skillset am I looking for for people to build these [infrastructure services] and manage them? I think I’m looking for a set of standard things that we look for in every Amazonian PM, which is…&lt;/p&gt;
&lt;p&gt;A very strong sense of ownership. This is: the stuff that you’re building is not something that your boss tells you to build. You have to take pride in what you do, and you have to be someone [who] “does not like his or her own smell”. You have to be [highly] self-critical.&lt;/p&gt;
&lt;p&gt;[You] have to be able to disagree but be able to commit to actual decisions being made, things like that. There’s this set of what we call Amazon leadership skills that I would be looking for in any engineer that we hire.&lt;/p&gt;
&lt;p&gt;[In many] of these services we’re looking for people with very good distributed systems skills, or at least with very good fundamental distributed systems skills which they have learned in school. Actually, it isn’t that you have to have built a distributed system when you were in school. Remember: no professor ever had a real job in their life, right? And so they didn’t teach you how to build systems. But to have a truly fundamental understanding of how to read fault-tolerant algorithms, of how to think in a fundamental way about scaling… and those kind of things, is something that we are absolutely looking for.&lt;/p&gt;
&lt;p&gt;Some demonstration, if you’re just out of school, [that] you’ve been involved with some practicals. Have you contributed to an Open Source project? Are you involved with programming groups? We’re looking for someone that is actually capable of doing hands-on work. […]&lt;/p&gt;
&lt;p&gt;If you’re really more experienced, what we will be looking for… Do we look for particular programming skills, languages? Not really. Most people are able to program in Java, C++… I don’t think I’ve actually met people who are not able to do that. We are in an environment that is pretty unique in that sense.&lt;/p&gt;
&lt;p&gt;We don’t mandate the use of particular programming languages, we don’t mandate the use of particular middleware pieces or things like that. We believe that our systems, our team should be moving as fast as possible, which means that if we hire the absolute best people they should be able to make the decisions, what the right tools are for them to use in their particular project.&lt;/p&gt;
&lt;p&gt;It doesn’t always go well. I think we’ve had a few choices around Erlang which did not necessarily work out that well, not because of Erlang, but because it is actually really hard to hire Erlang programmers after that. So we expect our engineers to have some level of business sense.&lt;/p&gt;
&lt;p&gt;I think the willingness to do operational work… We live and breathe the DevOps mentality, where our engineers are responsible for the software that they run at some level, whether that is part time or whether that is actually in full site with some of our other engineers. We strongly believe that there’s no bigger motivator to fix your software than beepers going off at 4 A.M. And we give you time to actually fix your services if that’s the case.&lt;/p&gt;
&lt;p&gt;These are the first few things that come to mind.&lt;/p&gt;
&lt;/blockquote&gt;</description><author>Separate Concerns</author><pubDate>Sun, 24 Mar 2013 21:30:00 GMT</pubDate><guid isPermaLink="true">https://blog.separateconcerns.com/2013-03-24-vogels-skills.html</guid></item><item><title>Anecdotes ahoy</title><link>https://etodd.io/2013/03/24/anecdotes-ahoy/</link><description>&lt;p&gt;A smorgasbord of anecdotes carefully compiled just for you, dear reader. This is #2 in a series of three posts which were originally one, before I decided I just had too dang much to say.&lt;/p&gt;
&lt;h2&gt;OpenStack&lt;/h2&gt;
&lt;p&gt;I spent a few weeks at work building a fully operational &lt;del&gt;death star&lt;/del&gt; OpenStack cluster. What does that mean? Basically, we have our own little private version of Amazon Web Services. We can create virtual machines, virtual hard drives, even virtual IP addresses, all with just a few clicks. It also includes an S3-alike called Swift.&lt;/p&gt;</description><author>Evan Todd</author><pubDate>Sun, 24 Mar 2013 02:29:43 GMT</pubDate><guid isPermaLink="true">https://etodd.io/2013/03/24/anecdotes-ahoy/</guid></item><item><title>Taking the WebSphere Liberty Profile for a spin, using Intellij on the iMac</title><link>https://www.planetjones.net/blog/24-03-2013/taking-was-liberty-next-profile-for-a-spin.html</link><description>The WebSphere Liberty Profile is built for developers - here I take the beta of the Next profile for a spin - using Intellij on the iMac, a new set-up for me.</description><author>Jonathan Jones homepage: planetjones.net</author><pubDate>Sun, 24 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.planetjones.net/blog/24-03-2013/taking-was-liberty-next-profile-for-a-spin.html</guid></item><item><title>Being Defiant: Currencies Beyond Gold and Silver</title><link>https://benovermyer.com/blog/2013/03/being-defiant-currencies-beyond-gold-and-silver/</link><description>&lt;p&gt;In Rift, there are five ways to acquire new armor and weapons. You can take it from the corpses of monsters you kill. You can run through dungeons, collecting new pieces from the tougher monsters and bosses. You can run from rift to rift, defeating the planar invaders and getting new gear from the rift rewards. You can craft it or purchase it from other players who craft gear. You can also use special currencies earned through various means to purchase new gear from special NPC merchants.&lt;/p&gt;
&lt;p&gt;In existing tabletop RPGs, there are really only three ways to get gear – buying it from merchants, looting bodies, and finding it lying around in dungeons.&lt;/p&gt;
&lt;p&gt;Many MMORPG loot mechanics won't work in a tabletop RPG because the gear just appears in the player's inventory when certain conditions are met. In a tabletop game, gear rarely just appears. I've touched on crafting in tabletop RPGs before, so this time around I'll focus on special currencies.&lt;/p&gt;
&lt;h1 id="rift-s-currency-for-planar-invasions"&gt;Rift's Currency for Planar Invasions&lt;/h1&gt;
&lt;p&gt;In games like Rift and World of Warcraft, you receive units of these currencies for achieving feats of excellence. For example, in Rift, you earn “planarite” and “sourcestone” for defeating planar invaders. Sourcestone is much rarer than planarite, each unit of its most common version being worth 50 planarite. It's only awarded for helping defeat special rift events like full invasions.&lt;/p&gt;
&lt;img alt="A screenshot of the currencies tab in Rift" class="photo" src="https://benovermyer.com/blog/2013/03/being-defiant-currencies-beyond-gold-and-silver/currencies-tab.jpg" /&gt;
&lt;p&gt;While there's only one version of planarite, there are multiple types of sourcestone, each being dropped by progressively more difficult planar invaders. In order to get the higher sourcestones, you must defeat higher-level invaders.&lt;/p&gt;
&lt;p&gt;All of these can be traded in for impressive, rare gear. The best items cost a combination of sourcestone and planarite.&lt;/p&gt;
&lt;h1 id="how-to-deal-with-special-currencies-in-tabletop-games"&gt;How to Deal with Special Currencies in Tabletop Games&lt;/h1&gt;
&lt;p&gt;In tabletop RPGs, by comparison, you're looking at a single currency – gold, credits, silver, whatever. In some games there are multiple types of currency but only one “track.” For example, in Dungeons &amp;amp; Dragons, you have copper, silver, electrum, gold, and platinum, but they're all just higher denominations of each other. This currency is accepted everywhere from all merchants.&lt;/p&gt;
&lt;p&gt;To make sense, a unique currency needs to be widespread in use and creation, and to make sense in a setting, the powers-that-be need to allow that currency to exist alongside the official currency of the realm. That last part is historically difficult to come by, but in fictional worlds, we can gloss over that fact.&lt;/p&gt;
&lt;p&gt;The best reason to include a currency like this is to gate powerful gear behind difficult tasks. It also provides a way to uniquely theme gear and work in factional alliances and reputation.&lt;/p&gt;
&lt;p&gt;You could make up a large order dedicated to service to a particular god, for example. Instead of just being all priests or all paladins, this order could include a variety of skilled craftsmen who produce special gear. The craftsmen may only part with the gear in exchange for a special currency that only the order uses. Higher-ranking members of this order may be giving the PCs quests, and in gratitude for their help, rewards them with some of the order's currency.&lt;/p&gt;
&lt;p&gt;This also offers role-playing opportunities, oddly enough. Possession of particular currencies could trigger interesting reactions from NPCs. Maybe they're associated with the producer of the currency. Maybe they're afraid of the producer. Maybe it's more complicated than that.&lt;/p&gt;
&lt;p&gt;If it makes sense for your setting, try adding a special currency and unique rewards for that currency to your next adventure. It just might take your campaign in a very interesting direction.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sun, 24 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/03/being-defiant-currencies-beyond-gold-and-silver/</guid></item><item><title>running your file manager from a terminal</title><link>https://purpleidea.com/blog/2013/03/22/running-your-file-manager-from-a-terminal/</link><description>&lt;p&gt;I do a lot of my work in a terminal. For the unfamiliar, this might seem strange, however once you&amp;rsquo;re comfortable with your shell, this is the best place to be. I don&amp;rsquo;t restrict myself to it though. I often want to spawn a file manager, or a graphical text editor. When I run nautilus, I usually see something like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;james@computer:~/some/awesome/directory$ nautilus .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Initializing nautilus-open-terminal extension
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Shutting down nautilus-open-terminal extension
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;james@computer:~/some/awesome/directory$
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is useful, because I can open a file browser right where I want it, it&amp;rsquo;s annoying, because nautilus runs in that terminal until I close it. (This doesn&amp;rsquo;t happen if the nautilus process is always running, but since GNOME 3, it isn&amp;rsquo;t.)&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sat, 23 Mar 2013 01:34:59 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/03/22/running-your-file-manager-from-a-terminal/</guid></item><item><title>Android under New Google</title><link>http://www.marco.org/2013/03/20/android-under-new-google</link><description>&lt;p&gt;Speaking of &lt;a href="https://zacs.site/blog/why-i-left-google.html"&gt;New Google&lt;/a&gt;, Marco talks about what it could mean for the future of Android. Particularly interesting to me were his final thoughts at the end of the piece:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Old Google made Android. New Google is much more strategic, cold, and focused. Let&amp;#8217;s see what they do to it.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.marco.org/2013/03/20/android-under-new-google"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Mar 2013 13:49:33 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/03/20/android-under-new-google</guid></item><item><title>Why I left Google</title><link>http://blogs.msdn.com/b/jw_on_tech/archive/2012/03/13/why-i-left-google.aspx</link><description>&lt;p&gt;James Whittaker on Google&amp;#8217;s metamorphosis from a tech company to the machine that churned out Google+:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;The Google I was passionate about was a technology company that empowered its employees to innovate. The Google I left was an advertising company with a single corporate-mandated focus.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It&amp;#8217;s too bad, too: Google has given us some of the best web services since the dawn of the internet. For the past decade or so, Google has remained the unquestioned king of the web&amp;#160;&amp;#8212;&amp;#160;of that fact there is no doubt. Doubt enters in, however, when we start to ask the simple question, &amp;#8220;for how much longer?&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/jw_on_tech/archive/2012/03/13/why-i-left-google.aspx"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Mar 2013 13:30:16 GMT</pubDate><guid isPermaLink="true">http://blogs.msdn.com/b/jw_on_tech/archive/2012/03/13/why-i-left-google.aspx</guid></item><item><title>A first try at object pooling</title><link>https://liza.io/a-first-try-at-object-pooling/</link><description>&lt;p&gt;As I mentioned in my previous post, I started experimenting with object pooling. To start off with I didn&amp;rsquo;t worry about performance at all - I just wanted to have a functional way to use entities without repeatedly creating or destroying them. It took a couple of days, but I finally have a working version that (so far) does what I need.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Fri, 22 Mar 2013 13:27:50 GMT</pubDate><guid isPermaLink="true">https://liza.io/a-first-try-at-object-pooling/</guid></item><item><title>Soylent isn't people, it's a full-nutrition drink</title><link>http://www.theverge.com/2013/3/20/4126760/soylent-diet-drink-rob-rhinehart-mostly-harmless</link><description>&lt;p&gt;Soylent&amp;#8217;s story got picked up by The Verge the other day. Great to see it getting some traction.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/3/20/4126760/soylent-diet-drink-rob-rhinehart-mostly-harmless"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Mar 2013 11:31:39 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/3/20/4126760/soylent-diet-drink-rob-rhinehart-mostly-harmless</guid></item><item><title>Self-Reliance</title><link>http://hypercritical.co/2013/03/19/self-reliance</link><description>&lt;p&gt;John Siracusa explaining Apple&amp;#8217;s aversion to outsourcing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Like a lover who&amp;#8217;s been betrayed one too many times, Apple has hardened its corporate heart against any form of true partnership. If it&amp;#8217;s important, Apple wants to own and control it. When Apple does work with others, it insists on having the upper hand. iOS developers serve at the pleasure of Apple. Manufacturing partners must fight for the privilege of building Apple&amp;#8217;s products, often using equipment Apple purchases for them. And, of course, Apple has its own mobile OS that runs exclusively on its own hardware.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Apple is often criticized by its detractors for its refusal to rely&amp;#160;&amp;#8212;&amp;#160;&amp;#8220;work with&amp;#8221;, as it is often so mildly put&amp;#160;&amp;#8212;&amp;#160;other companies. Given its past experiences though, how could we possibly blame them?&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://hypercritical.co/2013/03/19/self-reliance"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Mar 2013 11:28:44 GMT</pubDate><guid isPermaLink="true">http://hypercritical.co/2013/03/19/self-reliance</guid></item><item><title>Anti-Google Anger</title><link>https://zacs.site/blog/anti-google-anger.html</link><description>&lt;p&gt;Marco Arment in &lt;a href="http://www.marco.org/2013/03/21/thursday-sandwich"&gt;&lt;em&gt;Your favorite Thursday sandwich&lt;/em&gt;&lt;/a&gt;, where he argued against Om Malik&amp;#8217;s &lt;a href="http://gigaom.com/2013/03/20/sorry-google-you-can-keep-it-to-yourself/"&gt;decision not to use Google Keep&lt;/a&gt;:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/anti-google-anger.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Mar 2013 10:54:11 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/anti-google-anger.html</guid></item><item><title>Listing Exadata storage cells and their configuration info from V$CELL_CONFIG</title><link>https://tanelpoder.com/2013/03/21/listing-exadata-storage-cells-and-their-configuration-info-from-vcell_config/</link><description>&lt;p&gt;If you attended my Exadata hacking session today, you saw me using the &lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/cellver.sql" target="_blank"&gt;cellver.sql&lt;/a&gt; script which lists some basic configuration info about the currently connected storage cells:&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; @&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/" target="_blank"&gt;exadata&lt;/a&gt;/&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/cellver.sql" target="_blank"&gt;cellver&lt;/a&gt;
Show Exadata cell versions from V$CELL_CONFIG....

CELLNAME             CELLSRV_VERSION      FLASH_CACHE_MODE     CPU_COUNT  UPTIME               KERNEL_VERSION                 MAKE_MODEL
-------------------- -------------------- -------------------- ---------- -------------------- ------------------------------ --------------------------------------------------
192.168.12.10        11.2.3.2.1           WriteBack            24         8 days, 2:07         2.6.32-400.11.1.el5uek         Oracle Corporation SUN FIRE X4270 M2 SERVER SAS
192.168.12.11        11.2.3.2.1           WriteBack            24         8 days, 2:06         2.6.32-400.11.1.el5uek         Oracle Corporation SUN FIRE X4270 M2 SERVER SAS
192.168.12.8         11.2.3.2.1           WriteBack            24         8 days, 2:06         2.6.32-400.11.1.el5uek         Oracle Corporation SUN FIRE X4270 M2 SERVER SAS
192.168.12.9         11.2.3.2.1           WriteBack            24         8 days, 2:06         2.6.32-400.11.1.el5uek         Oracle Corporation SUN FIRE X4270 M2 SERVER SAS&lt;/pre&gt;
&lt;p&gt;The output is pretty self-explanatory. One thing to note is that the CPU_COUNT is not the number of CPU cores, but just the number of “virtual” CPU threads presented to the OS, in this case 24 threads over 12 cores.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Fri, 22 Mar 2013 00:18:47 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/03/21/listing-exadata-storage-cells-and-their-configuration-info-from-vcell_config/</guid></item><item><title>Taming the GWT PopupPanel</title><link>https://blog.andyglassman.com/2013/03/taming-gwt-popuppanel.html</link><description>I was working on a feature of a GWT application today, and decided to fix a problem that had been bugging me. &amp;nbsp;While the issue was not a server crashing bug, it was a usability&amp;nbsp;nuisance.&lt;br /&gt;
&lt;br /&gt;
Between the main content of the app, and the navigation bar, there was an Anchor. &amp;nbsp;When a user moused over the Anchor, a PopupPanel would be shown with some user data in it. &amp;nbsp;Everytime i moved my mouse up to the navigation bar, I'd mouse over the anchor, and have this annoying PopupPanel in my way. &amp;nbsp;To compund the issue, there was a RPC call each time the panel was popped up.&lt;br /&gt;
&lt;br /&gt;
To combat this issue, I decided to use the GWT Timer class, along with the MouseOverEvent and MouseOutEvent. &amp;nbsp;This was incredibly simple after I moved the presenter and view to use the UiField, and UiHandler annotations along with the UiBinder.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;The Code:&lt;/h3&gt;
&lt;pre class="prettyprint"&gt;@UiHandler("popupAnchor")
void showPopup(ClickEvent e)
{
 showPopup();
}

private long mouseOverTime = 0;
private int loadPopupTime = 300;

@UiHandler("popupAnchor")
void onMouseOut(MouseOutEvent e)
{
 mouseOverTime = 0;
}

@UiHandler("popupAnchor")
void onMouseOver(MouseOverEvent e)
{
 mouseOverTime = System.currentTimeMillis();
 Timer t = new Timer() {
       public void run() {
        /*
         * this ensures that the popup
         * will not trigger if the mouse
         * merely went over the anchor. 
                   */
        if(mouseOverTime != 0)
         showPopup();
       }
     };
 t.schedule(loadPopupTime);
}

private void showPopup()
{
 popup.getPopup().setPopupPosition(
   popupAnchor.getAbsoluteLeft(), 
   popupAnchor.getAbsoluteTop());
 popup.getPopup().show();
 
}
&lt;/pre&gt;

&lt;br /&gt;
&lt;h3&gt;How this works:&lt;/h3&gt;
&lt;br /&gt;
When the user mouses over the anchor, a MouseOverEvent is fired.  The handler onMouseOver is run, which sets mouseOverTime to the current time in milliseconds. &amp;nbsp;A Timer is also created, and set to run in loadPopupTime milliseconds. &amp;nbsp;
&lt;br /&gt;&lt;br /&gt;
&lt;h4&gt;Now one of two things can happen:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;The user can stay hovering on the Anchor. &amp;nbsp;The timer will run, and see that mouseOverTime is not equal to zero, and the popup will be shown.&lt;/li&gt;
&lt;li&gt;The user can move the mose off the Anchor, which triggers the MouseOutEvent. &amp;nbsp;This sets mouseOverTime equal to zero. &amp;nbsp;When the timer runs, it sees that mouseOverTime is equal to zero, and the popup will not be shown.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
I also added in a click handler for the users that can't wait 300ms. I'm in this group for sure.
&lt;div&gt;&lt;br /&gt;
Pretty simple eh!?&lt;/div&gt;</description><author>Milwaukee Maven</author><pubDate>Fri, 22 Mar 2013 00:13:03 GMT</pubDate><guid isPermaLink="true">https://blog.andyglassman.com/2013/03/taming-gwt-popuppanel.html</guid></item><item><title>No One Should Agree With You</title><link>http://brooksreview.net/2013/03/agreement-no-thanks/</link><description>&lt;p&gt;A humorous observation by Ben Brooks that belies its actual profundity. I&amp;#8217;ll leave it to you to read and discover it&amp;#8217;s meaning though. Enjoy.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/03/agreement-no-thanks/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 21 Mar 2013 19:45:37 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/03/agreement-no-thanks/</guid></item><item><title>What If the Dolphins Had Thumbs</title><link>https://zacs.site/blog/what-if-the-dolphins-had-thumbs.html</link><description>&lt;p&gt;After finishing the backlog of Critical Path episodes early yesterday afternoon, I scrolled down through &lt;a href="https://zacs.site/blog/too-many-podcasts.html"&gt;my extensive list of podcasts&lt;/a&gt; until I came to &lt;em&gt;The Talk Show With John Gruber&lt;/em&gt;. After &lt;a href="https://zacs.site/blog/regarding-the-talk-show.html"&gt;my initial impressions&lt;/a&gt; of John Gruber&amp;#8217;s latest work, I did not expect to particularly enjoy the next hour and a half. Like my previous encounters with John Gruber&amp;#8217;s work, however, where it took a number of tries to discover the value of The Talk Show while it aired in 5by5, the third time was the charm: I am once again hooked on John&amp;#8217;s podcast. I gave The Talk Show a third chance, and I suggest all of you who, like me, recoiled so violently from everything John Gruber in the wake of the move to the Mule Radio Syndicate, give The Talk Show another chance: it&amp;#8217;s not quite as good as it used to be, but it&amp;#8217;s still The Talk Show.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/what-if-the-dolphins-had-thumbs.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 21 Mar 2013 11:27:49 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/what-if-the-dolphins-had-thumbs.html</guid></item><item><title>From the Archives: Regarding The Talk Show</title><link>https://zacs.site/blog/regarding-the-talk-show.html</link><description>&lt;p&gt;Since John Gruber abruptly announced that The Talk Show would move from 5by5 to the Mule Radio Syndicate a few months ago, many have speculated as to the reasons behind this sudden and unexpected split while both John and Dan remained, for the most part, silent. Twitter exploded with questions, theories, and, in some cases, anger; bloggers wrote long articles filled with speculation; Philip Elmer-DeWitt, writing for CNN Money, even entered the conversation with an uncharacteristically unemotional &lt;a href="http://tech.fortune.cnn.com/2012/05/19/john-gruber-jumps-ship/"&gt;article&lt;/a&gt; for the topic; however, to this day John and Dan are the only two who know the actual cause for the split. Here I will aggregate the most common discussions and the strongest theories in an attempt at discerning the underlying cause for this unfortunate rift, using this topic as a manner through which to discuss the Mule Radio Syndicate of which I have many opinions on. I originally intended to incorporate this discussion into my post &lt;a href="https://zacs.site/blog/5by5.html"&gt;&lt;em&gt;5by5&lt;/em&gt;&lt;/a&gt;, but following the announcement that both Hypercritical and Build &amp;#38; Analyze would close their doors before the year&amp;#8217;s end I chose to pause, step back, thank Dan, Marco, and John for the excellent work, and give a brief history of 5by5 and its impact on the podcasting industry. Separating these two articles also gave me the opportunity to fully explore all the possibilities of this unfortunate happenstance.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/regarding-the-talk-show.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 21 Mar 2013 11:26:59 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/regarding-the-talk-show.html</guid></item><item><title>Random thoughts on JavaScript performance, garbage collection, and object pooling</title><link>https://liza.io/random-thoughts-on-javascript-performance-garbage-collection-and-object-pooling/</link><description>&lt;p&gt;Let&amp;rsquo;s talk about garbage collection.&lt;/p&gt;
&lt;p&gt;I love JavaScript, but I wish it gave me more control over these things. I am on a quest to minimize garbage. Last week&amp;rsquo;s Sthlm.js meetup gave me some more insight, at least in regards to Chrome. Paul Lewis gave a talk that covered garbage collection in part. You can see it &lt;a href="http://aerotwist.com/blog/dont-guess-it-test-it/"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Wed, 20 Mar 2013 22:40:22 GMT</pubDate><guid isPermaLink="true">https://liza.io/random-thoughts-on-javascript-performance-garbage-collection-and-object-pooling/</guid></item><item><title>Some utilities for dealing with character data</title><link>https://jonathanchang.org/blog/some-utilities-for-dealing-with-character-data/</link><description>&lt;h2&gt;Concatenation&lt;/h2&gt;
  &lt;p&gt;&lt;img alt="SequenceMatrix" src="/uploads/2013/03/sequencematrix.png" /&gt;&lt;/p&gt;
  &lt;p&gt;Concatenating character matrices seems like it ought to be easy, but I’ve had far too many issues with data formats to naively make that kind of statement. Mesquite never seemed to give output that could be consumed by other programs, Geneious had import issues, and all of my own hand-rolled techniques would always seem to hit edge cases.&lt;/p&gt;
  &lt;p&gt;&lt;a href="http://code.google.com/p/sequencematrix/"&gt;SequenceMatrix&lt;/a&gt; is quite a robust little piece of software that will generally “just work”. It’s a cross-platform GUI program (anywhere that Java runs) and will fill your missing data with gaps, make sure that all taxa are represented in your concatenated matrix, fix species names by removing Genbank junk, and so on. Best of all it supports drag and drop.&lt;/p&gt;
  &lt;h2&gt;Conversion&lt;/h2&gt;
  &lt;p&gt;I haven’t yet found an equivalently easy GUI program that will convert character data from one format to another, so I wrote my own. This script converts character data (e.g., DNA, RNA, morphology) from one format to another. Currently the supported formats are:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;FASTA&lt;/li&gt;
    &lt;li&gt;Nexus&lt;/li&gt;
    &lt;li&gt;Phylip (relaxed)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;The script uses &lt;a href="https://dendropy.org"&gt;DendroPy&lt;/a&gt; for most of its heavy lifting, and will also automatically parallelize the operation using Python multiprocessing.
    Here’s how you might use it:&lt;/p&gt;
  &lt;div class="language-bash highlighter-rouge"&gt;
    &lt;div class="highlight"&gt;
      &lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;# convert all fasta files in the current directory to nexus files&lt;/span&gt;
./convert_characters.py &lt;span class="k"&gt;*&lt;/span&gt;.fasta &lt;span class="nt"&gt;--input-format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fasta &lt;span class="nt"&gt;--output-format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nexus &lt;span class="nt"&gt;--type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dna
&lt;p&gt;&lt;span class="c"&gt;# convert all fasta files in a subdirectory to nexus files in a different subdirectory&lt;/span&gt;
&lt;span class="c"&gt;# this uses the short versions of the input and output commands&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;./convert_characters.py alignments/&lt;span class="k"&gt;*&lt;/span&gt;.fasta &lt;span class="nt"&gt;-ifasta&lt;/span&gt; &lt;span class="nt"&gt;-onexus&lt;/span&gt; &lt;span class="nt"&gt;-tdna&lt;/span&gt; &lt;span class="nt"&gt;–prefix&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nexus/&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;–basename&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/jonchang/5151081/raw/convert_characters.py"&gt;Download the script from GitHub&lt;/a&gt;.
  (&lt;a href="https://gist.github.com/jonchang/5151081"&gt;gist link&lt;/a&gt;)&lt;/p&gt;</description><author>Jonathan Chang</author><pubDate>Wed, 20 Mar 2013 22:00:08 GMT</pubDate><guid isPermaLink="true">https://jonathanchang.org/blog/some-utilities-for-dealing-with-character-data/</guid></item><item><title>Alter session force parallel query doesn’t really force anything</title><link>https://tanelpoder.com/2013/03/20/alter-session-force-parallel-query-doesnt-really-force-anything/</link><description>&lt;p&gt;Jonathan Lewis has &lt;a href="http://jonathanlewis.wordpress.com/2007/06/17/hints-again/" target="_blank"&gt;already written&lt;/a&gt; about this behavior from the angle of PARALLEL hints.&lt;/p&gt;
&lt;p&gt;I’m writing a similar article just because the word &lt;strong&gt;FORCE&lt;/strong&gt; in the ALTER SESSION FORCE PARALLEL QUERY syntax. Force should mean that some behavior would always happen (when possible), right? Let’s test:&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; CREATE TABLE t AS SELECT * FROM dba_objects;

Table created.

SQL&amp;gt; CREATE INDEX i ON t(owner);

Index created.

SQL&amp;gt; @&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/gts.sql" target="_blank"&gt;gts&lt;/a&gt; t
Gather Table Statistics for table t...

PL/SQL procedure successfully completed.&lt;/pre&gt;
&lt;p&gt;Now let’s “force” the parallel query in my session, run the query and check the execution plan:&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Wed, 20 Mar 2013 18:04:55 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/03/20/alter-session-force-parallel-query-doesnt-really-force-anything/</guid></item><item><title>I Will Never Visit The Next Web. Ever.</title><link>https://zacs.site/blog/i-will-never-visit-the-next-web.html</link><description>&lt;p&gt;I was first introduced to The Next Web during the plagiarism fiasco from a few months back, which I wrote about in my post from quite a while ago titled &lt;a href="https://zacs.site/blog/bullies.html"&gt;&lt;em&gt;Credibility and Bullies with Blogs&lt;/em&gt;&lt;/a&gt;. In that article, I briefly conveyed the lasting impression the whole affair left on my mind regarding The Next Web: &amp;#8220;I have associated The Next Web with plagiarism, rash outbursts, and poor choices.&amp;#8221; As I said in that article, to this day I refuse to read articles on The Next Web.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/i-will-never-visit-the-next-web.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 20 Mar 2013 14:08:31 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/i-will-never-visit-the-next-web.html</guid></item><item><title>Useless Correlations</title><link>https://zacs.site/blog/useless-correlations.html</link><description>&lt;p&gt;Every time I hear someone predicting the future of a company&amp;#160;&amp;#8212;&amp;#160;more often than not Apple&amp;#160;&amp;#8212;&amp;#160;I can&amp;#8217;t help but think of a passage I came across a while back, probably in &lt;a href="http://www.amazon.com/Basic-Economics-Common-Sense-Economy/dp/B0058M6SAG/ref=sr_1_2"&gt;Basic Economics by Thomas Sowell&lt;/a&gt;. The passage read something like this:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/useless-correlations.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 20 Mar 2013 11:57:02 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/useless-correlations.html</guid></item><item><title>Everything Else</title><link>http://daringfireball.net/2013/03/everything_else</link><description>&lt;p&gt;In a footnote to his interesting piece posted yesterday titled &lt;em&gt;Everything Else&lt;/em&gt;, John Gruber made an astute observation regarding loyalty and Apple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Later in his piece, Gassee recommends that Apple engage a &amp;#8216;powerhouse&amp;#8217; PR firm to help sway opinion in its favor. I&amp;#8217;d argue that Apple already has a powerhouse PR firm, and it very successfully engages in most of the tactics Gassee speaks of. But rather than a separate company, it&amp;#8217;s completely internal to &amp;#160;&amp;#8212;&amp;#160; and thus dedicated to &amp;#160;&amp;#8212;&amp;#160; Apple.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For some reason the importance of loyalty is lost on many today, but not Apple: Apple knows the value of loyalty, and that knowledge has certainly served them well over the years.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://daringfireball.net/2013/03/everything_else"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 20 Mar 2013 11:55:37 GMT</pubDate><guid isPermaLink="true">http://daringfireball.net/2013/03/everything_else</guid></item><item><title>Multiple https bindings in IIS7 for developers</title><link>https://daniellittle.dev/iis-multi-https-bindings</link><description>When working with websites that require https (SSL) developers always ending up facing the problem: Why can't you use hostnames with https…</description><author>Daniel Little Dev</author><pubDate>Wed, 20 Mar 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/iis-multi-https-bindings</guid></item><item><title>The Guild</title><link>https://www.craigpardey.com/post/2013-03-20-the-guild/</link><description>&lt;p&gt;&lt;a href="http://twitter.com/troyhunt"&gt;Troy Hunt&lt;/a&gt;&amp;rsquo;s &lt;a href="http://www.troyhunt.com/2013/02/the-ghost-who-codes-how-anonymity-is.html"&gt;Ghost Who Codes&lt;/a&gt;
ignited something inside me. Initially I was a little insulted
because I don&amp;rsquo;t have much of an online presence apart from my blog and my
&lt;a href="http://twitter.com/pards"&gt;Twitter&lt;/a&gt; account. There are many reasons for this
but in the end it doesn&amp;rsquo;t matter.&lt;/p&gt;
&lt;p&gt;You see, as much as I respect Troy, I think he&amp;rsquo;s missing the point.&lt;/p&gt;
&lt;p&gt;The best developers rarely apply for advertised jobs. They&amp;rsquo;re hired through
their network and are never on the market. They&amp;rsquo;re members of &lt;a href="http://medriscoll.com/post/9117396231/the-guild-of-silicon-valley"&gt;The Guild&lt;/a&gt;;
they&amp;rsquo;re the fat guys who know C++.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Wed, 20 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-03-20-the-guild/</guid></item><item><title>Accelerometer Poi</title><link>https://mattkeeter.com/projects/poi</link><description>Glowing spinning toys</description><author>Matt Keeter</author><pubDate>Wed, 20 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://mattkeeter.com/projects/poi</guid></item><item><title>Generating XML programmatically? Don't use CDATA</title><link>https://www.databasesandlife.com/cdata/</link><description>&lt;p class="intro"&gt;If you want to represent characters, you want to represent any possible sequence of characters. In an XML file, escaping &amp;lt; with &amp;amp;lt; gives you a way to represent any character. Using CDATA doesn't give you a way to do that.&lt;/p&gt;
&lt;p&gt;In an XML document there are two ways to represent character data. Either&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;You just write the characters in the XML file&lt;/strong&gt; (in which case you need to escape characters that look like XML tags i.e. &amp;lt; with &amp;amp;lt; etc.), or&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You use CDATA&lt;/strong&gt;, no longer having to care about replacing &amp;lt; with &amp;amp;lt; etc. Ends as soon as the first ]]&amp;gt; is encountered, which is unlikely to appear in your characters.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These two syntaxes result in an &lt;em&gt;identical XML document&lt;/em&gt;. An XML parser &lt;em&gt;must&lt;/em&gt; consider XML files identical, which differ only by if CDATA is used, or not. In both cases, there is text within a tag.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Wed, 20 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/cdata/</guid></item><item><title>Quest Into the Unknown</title><link>http://jacobbacharach.wordpress.com/2013/02/18/quest-into-the-unknown/</link><description>&lt;p&gt;&amp;#8220;It&amp;#8217;s not, in other words, a matter of faith or belief, but a matter of interest. You train, you run the marathon, and then you take a week off and eat ice cream. Recovered, you start running again. There&amp;#8217;s no mystical hocus-pocus, no &amp;#8216;icy waters of skepticism.&amp;#8217; Our hearts do not &amp;#8216;fail&amp;#8217; when we gaze at our cycling shoes or the box of contractor bags or the stack of over-wintered tomato cages in the unplanted spring garden. We might sigh to ourselves, and we might procrastinate, but we don&amp;#8217;t go in for the Deus Deus Meus shit. At least, I don&amp;#8217;t.&amp;#8221;&lt;/p&gt;

&lt;p&gt;An interesting opinion on procrastination. It might not be something outside of our control after all. Imagine that.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://jacobbacharach.wordpress.com/2013/02/18/quest-into-the-unknown/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 19 Mar 2013 19:23:14 GMT</pubDate><guid isPermaLink="true">http://jacobbacharach.wordpress.com/2013/02/18/quest-into-the-unknown/</guid></item><item><title>Roderick on the Line</title><link>https://zacs.site/blog/roderick-on-the-line.html</link><description>&lt;p&gt;Every time I think of Roderick on the Line, I can&amp;#8217;t help but recall the episode of Build &amp;#38; Analyze in which Marco Arment announced that he would soon have his first child, and detailed one of his goals regarding Adam: to teach him something just a little bit wrong, something that his son could go through most of his life believing to be true only to find out, in his early twenties, that the thing he had believed his entire life, that one fact his father had continued to push over the years, was just a &lt;em&gt;little&lt;/em&gt; bit wrong. I found this absolutely hilarious. And for some reason, this is what comes to mind when I think of Roderick on the Line: it&amp;#8217;s a show about the world that&amp;#8217;s so right in so many ways, but every once in a while just a &lt;em&gt;little&lt;/em&gt; bit off.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/roderick-on-the-line.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 19 Mar 2013 19:15:58 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/roderick-on-the-line.html</guid></item><item><title>Free works</title><link>http://www.marco.org/#fn:1</link><description>&lt;p&gt;An interesting article by Marco Arment on the causes and effects of free apps and services.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;In other industries, this is called predatory pricing, and many forms of it are illegal because they&amp;#8217;re so destructive to healthy businesses and the welfare of an economy. But the tech industry is far less regulated, younger, and faster-moving than most industries. We celebrate our ability to do things that are illegal or economically infeasible in other markets with productive-sounding words like &amp;#8216;disruption&amp;#8217;.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.marco.org/#fn:1"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 19 Mar 2013 18:15:03 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/#fn:1</guid></item><item><title>Stop Your Whining About Google Reader</title><link>http://hackingdistributed.com/2013/03/17/google-reader/</link><description>&lt;p&gt;Emin Gun writing on Hacking Distributed about the impending demise of Google Reader and the farcical backlash that ensued following the announcement:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Second, I suspect that the Reader-loving hacker-turned-entrepreneur crowd, which is deeply insecure about its position in society, is perhaps so sensitive because they see this as a sign that Google, and by proxy, the computer industry, values the masses with their dirty mobile devices and effervescent Twitter feeds more than the self-titled &amp;#8216;digital cognescenti&amp;#8217; with their MacBooks and Reader accounts and IFTTT recipes that save noteworthy articles in Evernote or whatever. They want to flex their digital muscle. And to some extent, I sympathize with this. But let&amp;#8217;s call a spade a spade, and let&amp;#8217;s pick something more worthy over which to flex our muscle. My greatest fear is what would happen if Google were to go back on their decision. It will feed the crazed, self-important &amp;#8216;technocrati&amp;#8217; so much that we&amp;#8217;ll be deluged with overblown outrage at every perceived online slight. I know how 2 year olds turn out when they get their way with tamper tantrums.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Emin made a lot of great points in his article, my favorite of which was his call for all the people whining and complaining about Google&amp;#8217;s announcement to instead focus their collective energies into making or finding a good alternative to Reader. If you can code, write a script to fetch and parse your favorite feeds; such a challenge would be simple and take a few evenings, at best; if not, there are plenty of alternatives out there. Embrace this change, don&amp;#8217;t fight it.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://hackingdistributed.com/2013/03/17/google-reader/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 19 Mar 2013 18:15:00 GMT</pubDate><guid isPermaLink="true">http://hackingdistributed.com/2013/03/17/google-reader/</guid></item><item><title>Two Months of Soylent</title><link>http://robrhinehart.com/?p=474</link><description>&lt;p&gt;Wonderful news from Rob Rhineheart after two months consuming primarily Soylent. With a few minor modifications, Soylent has proved to be&amp;#160;&amp;#8212;&amp;#160;for him and a small study group&amp;#160;&amp;#8212;&amp;#160;quite perfect.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://robrhinehart.com/?p=474"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 19 Mar 2013 18:13:56 GMT</pubDate><guid isPermaLink="true">http://robrhinehart.com/?p=474</guid></item><item><title>Storage cabin in the Campine, Belgium</title><link>http://cabinporn.com/post/45599698917/storage-cabin-in-the-campine-belgium-submitted</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/cabin-on-the-long-trail.html"&gt;Beautiful&lt;/a&gt;.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://cabinporn.com/post/45599698917/storage-cabin-in-the-campine-belgium-submitted"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 19 Mar 2013 18:13:32 GMT</pubDate><guid isPermaLink="true">http://cabinporn.com/post/45599698917/storage-cabin-in-the-campine-belgium-submitted</guid></item><item><title>Converting a running physical machine into a KVM virtual machine</title><link>https://manuel.kiessling.net/2013/03/19/converting-a-running-physical-machine-to-a-kvm-virtual-machine/</link><description>Let’s assume you have a physical machine running a Linux system, and you would like to convert this system into a virtual KVM/QEMU machine, keeping everything as close to the original as possible. What follows is my approach.  The first thing we need is a raw image file which mirrors the exact layout of the physical hard drive in our physical server.  In our example scenario, the physical box has one hard drive at /dev/sda with a /boot Partition on /dev/sda2 and a physical LVM volume on /dev/sda3.</description><author>Home on The Log Book of Manuel Kießling</author><pubDate>Tue, 19 Mar 2013 14:13:00 GMT</pubDate><guid isPermaLink="true">https://manuel.kiessling.net/2013/03/19/converting-a-running-physical-machine-to-a-kvm-virtual-machine/</guid></item><item><title>"To programmize" (verb)</title><link>https://www.databasesandlife.com/programmizing/</link><description>&lt;p&gt;Talking to someone who doesn&amp;rsquo;t work in IT, and who isn&amp;rsquo;t a native English speaker; She was talking about various people in software development, and referred to them doing &amp;ldquo;programmizing&amp;rdquo; (as opposed to &amp;ldquo;programming&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a great concept. &amp;ldquo;Progammizing&amp;rdquo; reminds me of &amp;ldquo;terrorizing&amp;rdquo;. As in: before you have a bunch of processes involving paper and people and it all works. Then, some people come in and do some programmizing. Afterwards, nothing works, everything&amp;rsquo;s slow, crashes, has bugs, loses data, you have to turn stuff off and on a lot&amp;hellip;.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Tue, 19 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/programmizing/</guid></item><item><title>Mailbox and Dropbox</title><link>https://zacs.site/blog/mailbox-and-dropbox.html</link><description>&lt;p&gt;Ben Brooks in &lt;a href="http://brooksreview.net/2013/03/mailbox-and-dropbox/"&gt;&lt;em&gt;How Mailbox Can Make Me a User&lt;/em&gt;&lt;/a&gt; on &lt;a href="http://www.theverge.com/2013/3/15/4108640/dropbox-acquires-email-app-mailbox"&gt;the recent announcement&lt;/a&gt; that Dropbox had &lt;a href="http://www.theverge.com/2013/3/15/4110532/dropbox-reportedly-paid-around-100-million-for-mailbox"&gt;acquired Mailbox&lt;/a&gt;:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/mailbox-and-dropbox.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 18 Mar 2013 20:42:12 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/mailbox-and-dropbox.html</guid></item><item><title>Google Reader's Mass Exodus</title><link>https://zacs.site/blog/google-readers-mass-exodus.html</link><description>&lt;p&gt;The past few days have been crazy. First Google announced that Reader would shut down almost as an afterthought in the middle of their annual spring cleaning post, and chaos ensued. Everyone wrote something about it, &lt;a href="https://zacs.site/blog/drafts-and-reeder.html"&gt;including&lt;/a&gt; &lt;a href="https://zacs.site/blog/readers-waves.html"&gt;me&lt;/a&gt;; opinions were in no short supply. Writers were not the only ones working furiously though: within six hours of the announcement, &lt;a href="http://blog.zite.com/2013/03/14/google-reader-is-dead-so-we-rebuilt-it-for-you-in-zite-in-six-hours/"&gt;Zite removed their dependency on Google Reader&lt;/a&gt;. Far ahead of everyone else, Zite&amp;#8217;s announcement preluded a veritable explosion that rocked the internet in the ensuing days: &lt;a href="http://www.theverge.com/2013/3/16/4113138/google-reader-users-flock-to-feedly"&gt;500,000 users moved to Feedly&lt;/a&gt; &lt;a href="http://feederteam.org/post/in-the-wake-of-googe-reader-feedly"&gt;over two days&lt;/a&gt;, and &lt;a href="http://shawnblanc.net/2013/03/newsblurs-scaling-challenges/"&gt;60,000 to NewsBlur&lt;/a&gt; over a similarly small amount of time. And those are just the services for which we have stats for.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/google-readers-mass-exodus.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 18 Mar 2013 19:41:44 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/google-readers-mass-exodus.html</guid></item><item><title>My Biggest Fear for the Future of Human-Computer Interfaces</title><link>https://etodd.io/2013/03/18/my-biggest-fear-for-the-future-of-human-computer-interfaces/</link><description>&lt;p&gt;I recently had to install and configure an 18-node &lt;a href="http://www.openstack.org/"&gt;OpenStack&lt;/a&gt; cluster, a process which involved a lot of SSHing and text-editing in terminals. I thought about learning Vim, but I was afraid of the incredibly steep learning curve, so I made do with GNU nano. It's not at all powerful, but it's easy.&lt;/p&gt;
&lt;p&gt;Eventually I realized, "This is my job. This is what I do every day. Why am I holding off on learning something &lt;em&gt;now&lt;/em&gt;, thinking it will slow me down, and that I'll have time to learn it later? It's not like I'm anticipating a major career shift any time soon."&lt;/p&gt;</description><author>Evan Todd</author><pubDate>Mon, 18 Mar 2013 03:30:11 GMT</pubDate><guid isPermaLink="true">https://etodd.io/2013/03/18/my-biggest-fear-for-the-future-of-human-computer-interfaces/</guid></item><item><title>The Last Two Jobs on Earth</title><link>https://solomon.io/last-two-jobs-earth/</link><description>Everywhere you look software is automating work. If you think your job is safe, I bet someone is trying to automate what you do.</description><author>Sam Solomon</author><pubDate>Mon, 18 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/last-two-jobs-earth/</guid></item><item><title>If you're designing a standard library, insist that all map keys are strings</title><link>https://www.databasesandlife.com/map-keys/</link><description>&lt;p class="intro"&gt;Associative arrays. Maps. Hashes. Dictionaries. They are an important cornerstone of data modelling in software. Every language has them. Question: What types should the keys be?&lt;/p&gt;
&lt;p&gt;The answer depends on what language you&amp;rsquo;re using. I have spent a lot of time programming Perl and Java, and they answer this question differently. Perl&amp;rsquo;s &lt;a href="http://perldoc.perl.org/perldata.html#Variable-names" rel="noopener noreferrer" target="_blank"&gt;hashes&lt;/a&gt; force you to have string keys. Java&amp;rsquo;s &lt;a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;Map&lt;/code&gt;&lt;/a&gt; allows you to have any objects as keys, and you can override (amongst others) the equals method to allow the map to know if two keys are the same or not. C++ STL&amp;rsquo;s &lt;a href="http://www.sgi.com/tech/stl/Map.html" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;map&lt;/code&gt;&lt;/a&gt; is the same as Java, but in addition allows you to supply code, when you create the map, to determine if two key objects are the same or not.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Mon, 18 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/map-keys/</guid></item><item><title>Installing an HP Officejet Pro 8600 printer under Linux</title><link>https://bastian.rieck.me/blog/2013/installing_officejet_pro_8600/</link><description>&lt;p&gt;I recently bought a &lt;a href="http://www8.hp.com/us/en/products/printers/product-detail.html?oid=4323660&amp;amp;jumpid=oc_r1002_usen_c-001_r0002"&gt;HP Officejet Pro 8600
printer&lt;/a&gt;,
which I naturally wanted to use with my Linux machines, as well. Setting up the printer turned out to
be very, very easy. Here&amp;rsquo;s what I did:&lt;/p&gt;
&lt;ol start="0"&gt;
&lt;li&gt;
&lt;p&gt;Ensure that &lt;a href="http://www.cups.org"&gt;CUPS&lt;/a&gt; is installed and running on your machine. In most cases,
this should only involve installing a package from your distribution&amp;rsquo;s package manager.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure the ethernet/wireless configuration of the printer (which can be done on the printer&amp;rsquo;s
front panel, without involving any operating system). I would recommend assigning a static IP
address, as this simplifies the communication between clients and the printer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use any browser to start the initial configuration of the printer. I would recommend &lt;em&gt;disabling&lt;/em&gt;
the web services because I think they are pointless. As for the printer driver options, I chose to
enable everything: &lt;code&gt;SLP&lt;/code&gt;, &lt;code&gt;LPD&lt;/code&gt;, &lt;code&gt;Port 9100 Printing&lt;/code&gt;, and &lt;code&gt;IPP&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On every client machine, install the equivalent of the
&lt;a href="http://hplipopensource.com/hplip-web/index.html"&gt;HPLIP&lt;/a&gt; package. For Ubuntu and Archlinux, this package is called
&lt;code&gt;hplip&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Execute &lt;code&gt;sudo hp-setup&lt;/code&gt; (for a graphical installer) or &lt;code&gt;sudo hp-setup -i&lt;/code&gt; (for a console
interface). Select &lt;em&gt;Network/Ethernet/Wireless (direct connection or JetDirect)&lt;/em&gt;. The printer should
automatically be identified. Follow the assistant.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To check that the printer has been installed correctly, visit &lt;code&gt;http://localhost:631&lt;/code&gt; (your local
CUPS server). I also like to customize the printer name and some other settings. If you want to use
print in duplex mode by default, select the &lt;em&gt;A4 AutoDuplex&lt;/em&gt; paper format and enable &lt;em&gt;Double-sided
printing&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I did not yet test whether the scanner connections works, as well. Since the printer is not situated
near my machine, I tend to scan to USB devices, anyway. Should the need arise, I will post an
addendum to this entry.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 17 Mar 2013 23:02:28 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/installing_officejet_pro_8600/</guid></item><item><title>asqlmon.sql: SQL Monitoring-like execution plan line level drilldown into SQL response time</title><link>https://tanelpoder.com/2013/03/17/asqlmon-sql-sql-monitoring-like-execution-plan-line-level-drilldown-into-sql-response-time/</link><description>&lt;p&gt;I don’t have much time for a thorough blog post, so I’ll just paste in an example output of my asqlmon.sql script, which uses ASH sql_plan_line columns for displaying where &lt;em&gt;inside&lt;/em&gt; your execution plan response time has been spent. Why not just use Oracle’s own SQL Monitoring reports? Well, SQL monitoring is meant for “long running” queries, which are not executed very frequently. In other words, you can’t use SQL Monitoring for drilling down into your frequently executed OLTP-style SQL. I am copying my recent post to Oracle-L mailing list here too:&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Sun, 17 Mar 2013 16:23:52 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/03/17/asqlmon-sql-sql-monitoring-like-execution-plan-line-level-drilldown-into-sql-response-time/</guid></item><item><title>Resolving Windows NetBIOS names in Linux</title><link>https://cmetcalfe.ca/blog/resolving-windows-netbios-names-in-linux.html</link><description>&lt;p&gt;When accessing computers on a LAN, it's often useful to access them by
name instead of IP. This is especially true when dealing with dynamic IP
addresses.&lt;/p&gt;
&lt;p&gt;In Windows, other Windows computer names are automatically resolved to
an IP address. In most Linux distros however, this is not the case (by default).&lt;/p&gt;
&lt;p&gt;To resolve Windows NetBIOS names in Linux, you'll need the &lt;a href="http://www.samba.org/samba/docs/man/manpages-3/winbindd.8.html"&gt;winbind&lt;/a&gt;
component of the &lt;a href="http://www.samba.org/"&gt;Samba suite&lt;/a&gt;. Winbind allows a UNIX box to become a
full member of an NT domain, giving the ability to resolve names from
it.&lt;/p&gt;
&lt;p&gt;Install winbind via your preferred package manager. For Debian and
derivatives, the following should work.   &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;apt-get install winbind
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now that winbind is installed, the OS must be configured to use it when
looking up hostnames. Open the file &lt;code&gt;/etc/nsswitch.conf&lt;/code&gt; and add "wins"
to the end of the line starting with "hosts:".&lt;/p&gt;
&lt;p&gt;For example, the line in my file now looks like&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;hosts: files dns wins
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Save the file and reboot to start the winbindd deamon.&lt;/p&gt;
&lt;p&gt;To test if if worked, try pinging a computer on your LAN by name. For
example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;
&lt;span class="normal"&gt;2&lt;/span&gt;
&lt;span class="normal"&gt;3&lt;/span&gt;
&lt;span class="normal"&gt;4&lt;/span&gt;
&lt;span class="normal"&gt;5&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;ping&lt;span class="w"&gt; &lt;/span&gt;windows-server
PING&lt;span class="w"&gt; &lt;/span&gt;windows-server&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;192&lt;/span&gt;.168.0.107&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;56&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;84&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;data.
&lt;span class="m"&gt;64&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;192&lt;/span&gt;.168.0.107:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;icmp_req&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;ttl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;time&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.268&lt;span class="w"&gt; &lt;/span&gt;ms
&lt;span class="m"&gt;64&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;192&lt;/span&gt;.168.0.107:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;icmp_req&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;ttl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;time&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.604&lt;span class="w"&gt; &lt;/span&gt;ms
&lt;span class="m"&gt;64&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;192&lt;/span&gt;.168.0.107:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;icmp_req&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;ttl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;time&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.607&lt;span class="w"&gt; &lt;/span&gt;ms
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description><author>Carey Metcalfe</author><pubDate>Sun, 17 Mar 2013 07:49:00 GMT</pubDate><guid isPermaLink="true">https://cmetcalfe.ca/blog/resolving-windows-netbios-names-in-linux.html</guid></item><item><title>Dynamic Vagrant Nodes</title><link>https://james-carr.org/posts/dynamic-vagrant-nodes/</link><description>I use vagrant a lot and at Zapier I use a setup where one Vagrantfile can be used to launch any instance in our infrastructure locally for testing. This is really quite useful as I can boot up a two node rabbitmq cluster with haproxy by simply typing vagrant up rabbitproxy01 rabbit01 rabbit02.
In the beginning this was a little messy as I just kept adding new node definitions and incrementing the ip address.</description><author>James Carr</author><pubDate>Sun, 17 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://james-carr.org/posts/dynamic-vagrant-nodes/</guid></item><item><title>Tea and Scones</title><link>https://sam.hooke.me/teaandstuff/2013/03/tea-and-scones/</link><description>&lt;p&gt;Our tea club reached new heights of sophistication today as it was accompanied by homemade scones. While we could not agree upon exactly how &amp;ldquo;scones&amp;rdquo; is pronounced, we could agree that the scones were amazing, and surprisingly filling.&lt;/p&gt;</description><author>Sam Hooke</author><pubDate>Fri, 15 Mar 2013 22:17:28 GMT</pubDate><guid isPermaLink="true">https://sam.hooke.me/teaandstuff/2013/03/tea-and-scones/</guid></item><item><title>The Key to Education Reform</title><link>https://zacs.site/blog/the-key-to-education-reform.html</link><description>&lt;p&gt;A lack of good ideas and direction caused me to repeatedly forsake the creation of this article, but a persevering determination kept it alive through long hours spent searching for the single salient problem plaguing American education. I came upon the rather anticlimactic answer late one night long after I should have turned the lights out and gone to bed in the most unlikely of places, the one unending source of potential solutions I habitually disregard: myself.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-key-to-education-reform.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 15 Mar 2013 19:51:40 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-key-to-education-reform.html</guid></item><item><title>Reader's Waves</title><link>https://zacs.site/blog/readers-waves.html</link><description>&lt;p&gt;Quite a bit of discussion has taken place over the past forty-eight hours following the news that Google Reader will fade away on June 1st. Some have focused on the implications the announcement will have on the RSS spec, but a great deal&amp;#160;&amp;#8212;&amp;#160;possibly even a majority&amp;#160;&amp;#8212;&amp;#160;of the discussion has taken place around blog readerships. David Sparks&amp;#8217;s article &lt;a href="http://macsparky.com/blog/2013/3/the-rss-apocalypse"&gt;&lt;em&gt;The RSS Apocalypse&lt;/em&gt;&lt;/a&gt; and Aldo Cortesi&amp;#8217;s piece &lt;a href="http://corte.si/posts/socialmedia/rip-google-reader.html"&gt;&lt;em&gt;Google, destroyer of ecosystems&lt;/em&gt;&lt;/a&gt; stuck out in particular, where the two bloggers conveyed a similar concern: the potential loss of a huge swath of readers either unable or unwilling&amp;#160;&amp;#8212;&amp;#160;or both&amp;#160;&amp;#8212;&amp;#160;to find an alternative method for subscribing to their websites. But as Shawn Blanc said at the end of &lt;a href="http://www.shawnblanc.net/2013/03/goodbye-google-reader/"&gt;&lt;em&gt;Goodbye Google Reader&lt;/em&gt;&lt;/a&gt;, &amp;#8220;Only time will tell, and, in truth, those subscribers who don&amp;#8217;t port their feed to another service likely weren&amp;#8217;t all that engaged of readers anyway.&amp;#8221;&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/readers-waves.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 15 Mar 2013 16:41:05 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/readers-waves.html</guid></item><item><title>My 2013 Software Wishlist</title><link>https://zacs.site/blog/my-2013-software-wishlist.html</link><description>&lt;p&gt;Granted we&amp;#8217;re already well into 2013, but then again, this isn&amp;#8217;t much of a list. I don&amp;#8217;t want to see a &amp;#8220;better&amp;#8221; social network usurp Twitter and Facebook, a new laptop with a million pixels, or a bendy phone; I want to see rock solid syncing across all my devices regardless of platform, bundled neatly into an attractive and usable app. Simplenote comes close but, as I detailed in &lt;a href="https://zacs.site/blog/drafts-and-reeder.html"&gt;&lt;em&gt;Changing my Workflow with Drafts and Reeder&lt;/em&gt;&lt;/a&gt;, is a far cry from even mediocre syncing; similarly, Dropbox is great and absolutely reliable, but requires that I manage individual text files where instead I simply want to create a blank note and walk away secure in the knowledge that regardless of which device I pick up next, it will be everywhere. While Drafts comes close with an excellent cross-platform app and reliable syncing across my iOS devices, there is no desktop counterpart to this wonderful writing experience. As of right now, not a single solution exists to solve this problem, and that&amp;#8217;s quite unfortunate.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/my-2013-software-wishlist.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 15 Mar 2013 14:09:09 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/my-2013-software-wishlist.html</guid></item><item><title>Something to It</title><link>https://zacs.site/blog/something-to-the-ipad-mini.html</link><description>&lt;p&gt;Last time I used this title, &lt;a href="https://zacs.site/blog/something-to-it.html"&gt;I wrote about a more simple lifestyle&lt;/a&gt; as part of &lt;a href="https://zacs.site/blog/cabin-porn.html"&gt;my Cabin&lt;/a&gt; &lt;a href="https://zacs.site/blog/the-patron-saint-of-cabin-porn.html"&gt;Porn Binge&lt;/a&gt;; this time, I&amp;#8217;m writing about something different: the iPad Mini.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/something-to-the-ipad-mini.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 15 Mar 2013 14:02:30 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/something-to-the-ipad-mini.html</guid></item><item><title>Google Reader quits? That's wonderful, because...</title><link>https://stop.zona-m.net/2013/03/google-reader-quits-thats-wonderful-because/</link><description>&lt;p&gt;This is a WONDERFUL occasion&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Fri, 15 Mar 2013 09:30:12 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/03/google-reader-quits-thats-wonderful-because/</guid></item><item><title>Bird Watching</title><link>https://blog.nawaz.org/posts/2013/Mar/bird-watching/</link><description>&lt;p&gt;A friend of mine recently took his bird watching hobby to another
level. Armed with a 400mm lens, a scope and a sturdy tripod, he and his
wife scour the local area for birds. The absence of leaves makes it
easier to find them. &lt;a class="footnote-reference" href="#footnote-1" id="footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I met up with them …&lt;/p&gt;</description><author>Beetle Space</author><pubDate>Fri, 15 Mar 2013 09:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.nawaz.org/posts/2013/Mar/bird-watching/</guid></item><item><title>Changing my Workflow with Drafts and Reeder</title><link>https://zacs.site/blog/drafts-and-reeder.html</link><description>&lt;p&gt;I have wanted to overhaul my workflow for a long while now. Feedler Pro, my go-to RSS reader, has gone quite some time without a significant update and is beginning to show its age. Just last night, for example, I spent nearly ten minutes wrestling with it in an attempt at reading a batch of articles curiously marked as read for no apparent reason. Simplenote&amp;#8217;s syncing idiosyncrasies have also become harder and harder to ignore as well, an issue that came to a head this morning when nearly a hundred deleted notes reappeared in the desktop client. Neither a new occurrence nor an especially irregular one, curious hiccups such as this one are one of the few things I can actually depend on Simplenote&amp;#8217;s wholly inconsistent syncing platform for. These two mishaps joined forces with &lt;a href="http://googleblog.blogspot.com/2013/03/a-second-spring-of-cleaning.html"&gt;Google&amp;#8217;s recent announcement putting a finite lifespan on the industry&amp;#8217;s most popular feed reader&lt;/a&gt; to create the perfect storm, finally prompting me to look in to some alternatives.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/drafts-and-reeder.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 15 Mar 2013 01:33:45 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/drafts-and-reeder.html</guid></item><item><title>70Decibels is Moving to 5by5</title><link>http://www.70decibels.com/blog/2013/3/13/were-moving-to-5by5.html</link><description>&lt;p&gt;&amp;#8220;Our shows deserve a solid platform to continue to grow. In my mind, there is no better place for this than 5by5 and no better person than Dan Benjamin to help us continue moving forward. When he first reached out to gauge our interest in joining his network, I was floored. As I said, Dan is a hero of mine, and I was honoured to have our network considered to join 5by5. As we continued to talk, and as I spoke with the other hosts, it was clear that this was the right opportunity for us.&amp;#8221;&lt;/p&gt;

&lt;p&gt;When the news first appeared in my Twitter feed last night I did a double take, positive that I had misread the announcement. Upon further speculation though, and to my growing excitement as I began catching up on the news, 70Decibels and Myke Hurley are indeed moving to 5by5 with the express goal of creating even more great podcasts. Best news ever? I think so.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.70decibels.com/blog/2013/3/13/were-moving-to-5by5.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 14 Mar 2013 16:39:21 GMT</pubDate><guid isPermaLink="true">http://www.70decibels.com/blog/2013/3/13/were-moving-to-5by5.html</guid></item><item><title>A Few More Thoughts on Soylent</title><link>https://zacs.site/blog/a-few-more-thoughts-on-soylent.html</link><description>&lt;p&gt;After publishing my last article, &lt;a href="https://zacs.site/blog/soylent.html"&gt;&lt;em&gt;Soylent&lt;/em&gt;&lt;/a&gt;, and as I made a late-night snack of a pear, I couldn&amp;#8217;t help but continue thinking about Soylent. Rather than tacking these additional thoughts on to the bottom of the previous post with the sad excuse for poor journalistic planning that is the &amp;#8220;UPDATE:&amp;#8221; header though, I decided to shape them into an entirely separate post, a new post with a few more of my thoughts on Soylent.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/a-few-more-thoughts-on-soylent.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 14 Mar 2013 14:43:55 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/a-few-more-thoughts-on-soylent.html</guid></item><item><title>adding range support to python's http server to kickstart with anaconda</title><link>https://purpleidea.com/blog/2013/03/14/adding-range-support-to-pythons-http-server-to-kickstart-with-anaconda/</link><description>&lt;p&gt;I&amp;rsquo;ve been working on automatic installs using &lt;a href="https://fedoraproject.org/wiki/Anaconda/Kickstart"&gt;kickstart&lt;/a&gt; and puppet. I&amp;rsquo;m using a modified &lt;em&gt;python httpserver&lt;/em&gt; because it&amp;rsquo;s lightweight, and easy to integrate into my existing python code base. The server was churning away perfectly until anaconda started downloading the full rpm&amp;rsquo;s for installation. What was going wrong?&lt;/p&gt;
&lt;pre&gt;
Traceback (most recent call last):
[...]
error: [Errno 32] Broken pipe
BorkedError: See &lt;a href="https://purpleidea.com/blog/"&gt;TTBOJ&lt;/a&gt; for explanation and discussion
&lt;/pre&gt;
&lt;p&gt;As it turns out, anaconda first downloads the headers, and then later requests the full rpm with an &lt;a href="https://en.wikipedia.org/wiki/Byte_serving"&gt;http range request&lt;/a&gt;. This second range request which begins at byte 1384, causes the &amp;ldquo;simple&amp;rdquo; httpserver to bork, because it doesn&amp;rsquo;t support this more elaborate feature.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 14 Mar 2013 02:34:19 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/03/14/adding-range-support-to-pythons-http-server-to-kickstart-with-anaconda/</guid></item><item><title>Gestione degli Eventi in Python</title><link>https://nicolaiarocci.com/gestione-degli-eventi-in-python/</link><description>&lt;p&gt;Gli eventi sono molto usati nelle GUI e nelle implementazioni del modello MVC (Model, View, Controller). Un’altra applicazione tipica è nei protocolli di comunicazione, laddove layer di basso livello devono informare quelli più alti quando ci sono dati in ingresso o in uscita.&lt;/p&gt;
&lt;p&gt;Il linguaggio C# dispone da sempre di una soluzione elegante al problema della gestione degli eventi: il delegato EventHandler. &lt;a href="https://github.com/nicolaiarocci/events" title="Events: Bringing the elegance of C# EventHandler to Python"&gt;Events&lt;/a&gt; è una mia implementazione Python del EventHandler C#. In pratica si tratta di una classe molto leggera che incapsula il cuore del meccanismo di sottoscrizione e gestione degli eventi, e tenta di farlo in maniera “naturale”, sembrando parte integrante del linguaggio Python.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Thu, 14 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/gestione-degli-eventi-in-python/</guid></item><item><title>The Unclimbable Mountain</title><link>https://arnorhs.dev/posts/2013-03-14/the-unclimbable-mountain/</link><description>I was reminded once again today how impenetrable the wall of things to do in life is. We had just hit yet another big milestone at work and as soon as we hit it, I started thinking about the next steps. And after that the next steps. Just in the time it took for us to reach this milestone, a list of things to fix and improve before the next milestone was building up. And that list is long enough to take 10 times the time that the original milestone took. We grow up thinking that next year will be better, or this year you will manage to finish X Running a business, or working at one, is about fires. Everything is either falling behind, failing, has always been broken or is unusable. The only tool we have is a limited fire extinguisher to dim down the biggest most obvious fire each time.</description><author>arnorhs blog - arnorhs.dev</author><pubDate>Thu, 14 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://arnorhs.dev/posts/2013-03-14/the-unclimbable-mountain/</guid></item><item><title>[Computing] Coroutines in C</title><link>https://www.devever.net/~hl/coroutines</link><description>&lt;p&gt;Suppose that in C, you wish to implement a recursive descent parser with the following requirements:&lt;/p&gt;</description><author>devever.net/~hl</author><pubDate>Thu, 14 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.devever.net/~hl/coroutines</guid></item><item><title>Soylent</title><link>https://zacs.site/blog/soylent.html</link><description>&lt;p&gt;&amp;#8220;Hacking the body is high risk, high reward. I read a textbook on physiological chemistry and took to the internet to see if I could find every known essential nutrient. My kitchen soon looked like a chemistry lab and I had every unknown substance in a glass in front of me. I was a little worried it was going to kill me, but decided it was for science and quickly downed the whole thing. To my surprise, it was quite tasty and I felt very energetic. For 30 days I avoided food entirely and I monitored the contents of my blood and physical performance. Mental performance is harder to quantify, but I feel much sharper.&amp;#8221;&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/soylent.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 14 Mar 2013 01:35:21 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/soylent.html</guid></item><item><title>Prioritizing and Planning within Heroku Postgres</title><link>/2013/03/13/planning-and-prioritizing/</link><description>&lt;p&gt;Over a year ago I blogged about Heroku&amp;rsquo;s approach to &lt;a href="http://www.craigkerstiens.com/2011/11/02/how-heroku-works-teams-tools/"&gt;Teams and Tools&lt;/a&gt;. Since that time Heroku has grown from around 25 people to over 100, we&amp;rsquo;ve continued to iterate and find new tools that work for how we do things. For many of the &lt;a href="http://www.amazon.com/Inspired-Create-Products-Customers-Love/dp/0981690408?ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=mypred-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0932633439"&gt;product management&lt;/a&gt; and software engineering books I&amp;rsquo;ve read I&amp;rsquo;ve yet to find something that helps a team priorize in a fashion I that feels right.&lt;/p&gt;
&lt;p&gt;One process emerged nearly a year ago from within the &lt;a href="https://postgres.heroku.com"&gt;Heroku Postgres&lt;/a&gt; team and is now followed by many others. Within a team this process is now commonly conducted each 6 months. Lets take a look at how this process looks&lt;/p&gt;
&lt;h3 id="it-starts-with-ideas"&gt;
&lt;div&gt;
It Starts with Ideas
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Hopefully having ideas of things to work on isn&amp;rsquo;t a problem, if it is just go spend some time with customers – listen to their problems, see how they use the product, then come back and write down the ideas. For most teams this is simply an excercise of thinking back and writing it down. Some teams at Heroku have resorted to keeping running backlogs of things they&amp;rsquo;d like to do this. We do this by keeping a Trello board which columns for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New ideas&lt;/li&gt;
&lt;li&gt;Ponies&lt;/li&gt;
&lt;li&gt;Stallions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Ponies and Stallions are things that would be great to do, however a sizeable amount of work must be done on them and we&amp;rsquo;re not currently tackling them. Ponies are less sizeable and likely to get done not in coming weeks but perhaps in coming months up to a year. Stallions are great but large effort and may or may not get done but in the category of things we would like to be able to do.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Once you&amp;rsquo;ve got your ideas whether in your head on a backlog we begin by writing them out typically on sticky notes or index cards.&lt;/p&gt;
&lt;h3 id="laying-it-all-out"&gt;
&lt;div&gt;
Laying it all out
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;From here we create a simple grid:&lt;/p&gt;
&lt;p&gt;&lt;img alt="grid" src="https://f.v1.n0.cdn.getcloudapp.com/items/1x1J2u0g390C1u1A1R1a/Screenshot_3_8_13_10_37_AM.png" /&gt;&lt;/p&gt;
&lt;p&gt;The grid has two axis. One is for impact the other for difficulty. At this point we aim to lay out every idea that we&amp;rsquo;ve already written down into a quadrant. Commonly this is done at team offsites where the team is free of distractions and able to devote appropriate time to it. Being able to accomplish this in one sitting with the team is important to having cohesion around the result.&lt;/p&gt;
&lt;h3 id="a-plan"&gt;
&lt;div&gt;
A plan
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;At this point hopefully its quite obvious what you want to tackle. If there&amp;rsquo;s anything in the top right it should be an easy win for something for you to focus on. From we often transcribe this into a powerpoint/keynote document and highlight things that we will definitely aim to accomplish in the next 6 months as well as things we&amp;rsquo;re intentionally not working on. This leaves us with an artifact of both things we will work on and explicit things we wont work on.&lt;/p&gt;
&lt;p&gt;&lt;img alt="grid" src="https://f.v1.n0.cdn.getcloudapp.com/items/2J3K2E0q2z2P0y0C0M3B/Screenshot_3_9_13_8_45_AM.png" /&gt;&lt;/p&gt;
&lt;h3 id="what-works-for-us"&gt;
&lt;div&gt;
What works for us
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;In general we try to have more work than we can tackle to ensure we&amp;rsquo;re constrained in a good form and not wasting idle time of people. Ensuring we&amp;rsquo;re selective about the things we&amp;rsquo;re working on and that we&amp;rsquo;re working on the right things works for us. We&amp;rsquo;ve found this simple exercise valuable for many teams to plan and ensure we&amp;rsquo;re working on those right things. Of course this may not work for everyone but for our goals and culture aligns well for us.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;ve got simple but unique techniques that work for your team as always would love to hear about them – &lt;a href="mailto:craig.kerstiens@gmail.com"&gt;craig.kerstiens@gmail.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 13 Mar 2013 22:55:56 GMT</pubDate><guid isPermaLink="true">/2013/03/13/planning-and-prioritizing/</guid></item><item><title>Just how slow are Django templates?</title><link>https://tomforb.es/blog/just-how-slow-are-django-templates/</link><description>Edit 2: I made a Django debug toolbar panel that profiles your Django templates and all their components. You can find it here: https://pypi.python.org/pypi/django-debug-toolbar-template-timings Edit: It appears that Django does have some form of template caching. The graphs have been updated to inc...</description><author>Tom Forbes</author><pubDate>Wed, 13 Mar 2013 20:17:38 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/just-how-slow-are-django-templates/</guid></item><item><title>Too Many Podcasts</title><link>https://zacs.site/blog/too-many-podcasts.html</link><description>&lt;p&gt;Although initially intending to make this short observation at the tail end of my previous post, &lt;a href="https://zacs.site/blog/critic-markup.html"&gt;&lt;em&gt;Critic Markup&lt;/em&gt;&lt;/a&gt;, I ended up spending much more time discussing the new and interesting spec than I had originally planned. The second topic of Ben&amp;#8217;s post, where he pointed to an interview on &lt;a href="http://thedistraction.net/episode-12-ben-brooks-of-5by5-and-brooks-review/"&gt;episode twelve of The Distraction podcast&lt;/a&gt;, sent me down an all-too-familiar rabbit hole, at the end of which I had subscribed to two new podcasts: &lt;a href="http://thedistraction.net/"&gt;The Distraction&lt;/a&gt; and &lt;a href="http://castroller.com/podcasts/HundredDown"&gt;Hundred Down&lt;/a&gt;. The greatest problem we face today, at least on the internet, is an embarrassment of riches: we have too much good content vying for our attention. Not only in podcasts&amp;#160;&amp;#8212;&amp;#160;I am currently subscribed to nineteen podcasts, plus an additional seven parked subscriptions&amp;#160;&amp;#8212;&amp;#160;but in every other form of content on the internet: with the advent of The Magazine and other similar publications, an increasing number of excellent writers making their way on to the internet, and new avenues opening every single day, it becomes increasingly difficult to decide what to pay attention to. That skill, I feel, is what will set the great writers apart from the rest in the coming months and years.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/too-many-podcasts.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 13 Mar 2013 18:04:47 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/too-many-podcasts.html</guid></item><item><title>Critic Markup</title><link>https://zacs.site/blog/critic-markup.html</link><description>&lt;p&gt;Last month, when Ben Brooks &lt;a href="http://brooksreview.net/2013/02/tired-ben/"&gt;decided to take&lt;/a&gt; a short &lt;a href="http://brooksreview.net/2013/02/mine/"&gt;sabbatical&lt;/a&gt;, he enlisted the help of &lt;a href="http://patdryburgh.com/"&gt;Pat Dryburgh&lt;/a&gt; who graciously agreed to &lt;a href="http://brooksreview.net/2013/02/empty/"&gt;step in and keep the site going&lt;/a&gt; during Ben&amp;#8217;s absence. When Ben came back, he posted &lt;a href="http://criticmarkup.com/"&gt;&lt;em&gt;While I Was Out&lt;/em&gt;&lt;/a&gt;, a short piece covering a few interesting things that had happened during his break.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/critic-markup.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 13 Mar 2013 18:04:24 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/critic-markup.html</guid></item><item><title>Comixology launches online self-publishing platform</title><link>http://www.theverge.com/2013/3/6/4072136/comixology-launches-online-self-publishing-platform-for-comic-books</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/calm-down-marco.html"&gt;Speaking of&lt;/a&gt; &lt;a href="https://zacs.site/blog/did-we-just-rip-off-marco-arment-and-the-magazine.html"&gt;self publishing&lt;/a&gt;,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Opened in private beta last year, Submit lets creators upload comics for approval. From there, Comixology reviews work to make sure it &amp;#8221;maintains a level of professional content,"&amp;#8220; then adds it to the catalog. Besides getting a storefront, authors will have their work formatted for Comixology&amp;#8217;s mobile apps, with a panel-by-panel view that&amp;#8217;s proved useful on small screens. In return, they&amp;#8217;ll give up a hefty chunk of revenue: there&amp;#8217;s no up-front fee, but Comixology keeps half the money from each sale after other processing fees, and like other in-app purchases, sales through the iOS app will see Apple take its own cut.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It will be interesting to see how the advent of this and other similar systems facilitating an even more streamlined publication process changes the content creation scene in the next few years. An exciting time, to be sure.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/3/6/4072136/comixology-launches-online-self-publishing-platform-for-comic-books"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 12 Mar 2013 20:33:27 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/3/6/4072136/comixology-launches-online-self-publishing-platform-for-comic-books</guid></item><item><title>"Calm down, Marco: micropublishing is about more than just The Magazine"</title><link>http://pandodaily.com/2013/03/02/calm-down-marco-micropublishing-is-about-more-than-just-the-magazine/</link><description>&lt;p&gt;&amp;#8220;Sure the advent of Blogger, WordPress, and the likes also ushered in an era in which we have been bombarded with substandard writers filling up the Internet with pages of crap. But such software also allowed some great writers to emerge, and some of them have launched careers and created decent businesses because of it. People and publications like John Gruber&amp;#8217;s Daring Fireball, Jason Calacanis&amp;#8217; Weblogs, TechCrunch, Daily Kos, and Glenn Greenwald all fall into this camp, and that&amp;#8217;s just to name a tiny few. All of them invested immense time, money, and energy into editorial - and they also happen to be compelling writers - but they couldn&amp;#8217;t have done it without the blogging software.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I have to side with Marco on this issue: no one reads Daring Fireball because the site sports an off-blue background color and small white text, people read Daring Fireball because John Gruber writes there. That&amp;#8217;s not to discount the importance of good design, but rather that it is not of paramount importance: millions would still read Daring Fireball every month had John colored the background orange, The Magazine would still be a success if the menus were green, and just because your background is off-blue and your text is white certainly does not mean your site will be successful.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://pandodaily.com/2013/03/02/calm-down-marco-micropublishing-is-about-more-than-just-the-magazine/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 12 Mar 2013 16:28:20 GMT</pubDate><guid isPermaLink="true">http://pandodaily.com/2013/03/02/calm-down-marco-micropublishing-is-about-more-than-just-the-magazine/</guid></item><item><title>Rejected from The Magazine</title><link>https://zacs.site/blog/rejected-from-the-magazine.html</link><description>&lt;p&gt;A few weeks ago I put the finishing touches on &lt;a href="https://zacs.site/blog/a-crying-shame.html"&gt;&lt;em&gt;A Crying Shame&lt;/em&gt;&lt;/a&gt;. Rather than posting the article here though I submitted it to Marco Arment&amp;#8217;s The Magazine for consideration in a future issue, hoping to one day open the app and find my own words alongside the work of those I hold in high esteem. Within a few days I received a brief response from The Magazine&amp;#8217;s executive editor Glenn Fleishman requesting more information, and I sent him the entire piece. Bolstered by his apparent interest my confidence ran high during the ensuing weeks. Unfortunately, it was not to be.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/rejected-from-the-magazine.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 12 Mar 2013 13:58:49 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/rejected-from-the-magazine.html</guid></item><item><title>Cabin on the Long Trail, Vermont</title><link>http://freecabinporn.com/post/44739653716/cabin-on-the-long-trail-vermont-submitted</link><description>&lt;p&gt;When I sat down to write this post I began this paragraph with, &amp;#8220;Another beautiful&amp;#8221;&amp;#160;&amp;#8212;&amp;#160;but stopped there, curious at my choice of the word &amp;#8220;beautiful&amp;#8221; to describe this cabin. This cabin, from what I can see of it, is not particularly beautiful, and although one might make the case to classify its surroundings as such, beauty is not the first thing that comes to mind when I look upon this photo taken some misty day on a far away hillside; rather, the word is merely the only way I know how to quantify the image displayed before me, the way I know best to attempt to convey the sentiment I feel when I see this little cabin nestled in the mountains of Vermont, shrouded in mist and surrounded by trees, the happy home of a lucky individual.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://freecabinporn.com/post/44739653716/cabin-on-the-long-trail-vermont-submitted"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 12 Mar 2013 13:58:43 GMT</pubDate><guid isPermaLink="true">http://freecabinporn.com/post/44739653716/cabin-on-the-long-trail-vermont-submitted</guid></item><item><title>What a difference a couple of years makes...</title><link>http://localhost:4999/articles/2013/03/12/website-changes/</link><description>&lt;p&gt;Seven to be precise.&lt;/p&gt;
&lt;p&gt;While trolling through my archives... I came on the first real website I ever made for myself, honest to goodness, using a real professional tool: Microsoft Frontpage! (How was I ever so blind!)&lt;/p&gt;
&lt;p&gt;&lt;img alt="my old site" src="https://images.evantravers.com/articles/2013/03/12/widgetwebworks.png" /&gt;&lt;/p&gt;
&lt;p&gt;It can be really useful to have retrospectives like this one. They help me realize how far I have come, and how far I have to go. They say that some sharks will drown unless they keep moving forward... I suppose the same is true of learning.&lt;/p&gt;
&lt;p&gt;And for those who would like to smile at my youthful web-related endeavors, here are a couple more gems.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;figure&gt;
    &lt;img alt="2005" src="https://images.evantravers.com/articles/2013/03/12/foundations.png" /&gt;
    &lt;figcaption&gt;This one is from 2005! Complete with stolen stock photos!&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;figure&gt;
    &lt;img alt="turninghearts" src="https://images.evantravers.com/articles/2013/03/12/turninghearts.png" /&gt;
    &lt;figcaption&gt;A site I did for my dad's ministry... notice the state of the art aliased curves there. Classy.&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;figure&gt;
    &lt;img alt="bio" src="https://images.evantravers.com/articles/2013/03/12/oldsite.png" /&gt;
    &lt;figcaption&gt;Bonus: a very, very youthful and hopeful Evan.&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pretty amusing stuff. While you are looking around, take a look at my updated &lt;a href="/work"&gt;work page&lt;/a&gt;... it finally includes more than a few kitten pictures.&lt;/p&gt;</description><author>trv.rs</author><pubDate>Tue, 12 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://localhost:4999/articles/2013/03/12/website-changes/</guid></item><item><title>Running, unfortunate sprites, and GDC sessions</title><link>https://liza.io/running-unfortunate-sprites-and-gdc-sessions/</link><description>&lt;p&gt;Sweden is slowly getting warmer. I&amp;rsquo;m hoping by the time I get back from SF it&amp;rsquo;ll be all nice and sunny. Then I can finally start running outside again, &lt;em&gt;and&lt;/em&gt; get a bike to cycle around the city instead of catching subways everywhere. Stockholm is too pretty to be on a subway. The run to work would now be a bit under 5km, perfect warmup distance for the real training - for a half marathon. Maybe. Possibly. I&amp;rsquo;m not going to commit to anything until I can test running outside a bit more. I&amp;rsquo;m not really a big fan of long distance running and only want to run a half for the sake of the accomplishment. 5-10km is usually the most I can do when it comes to actually enjoying the run.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Mon, 11 Mar 2013 21:46:33 GMT</pubDate><guid isPermaLink="true">https://liza.io/running-unfortunate-sprites-and-gdc-sessions/</guid></item><item><title>A Better Way to Handle Multi Sign In</title><link>https://justingarrison.com/blog/2013-03-11-a-better-way-to-handle-multi-sign-in/</link><description>Google has a cool feature to let you sign into multiple accounts at once, but in practice it really sucks.</description><author>Justin Garrison's Homepage</author><pubDate>Mon, 11 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-03-11-a-better-way-to-handle-multi-sign-in/</guid></item><item><title>Twenty dollars in an envelope</title><link>http://justinjackson.ca/jason-fried-high-school/</link><description>&lt;p&gt;&amp;#8220;The thing I realized early on is people are happy to pay for things that are good. Don&amp;#8217;t be afraid to charge for your services. Don&amp;#8217;t be afraid to charge for what you produce. If those people who don&amp;#8217;t want to pay for it want to complain about it, that&amp;#8217;s fine. They don&amp;#8217;t have to buy it.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://justinjackson.ca/jason-fried-high-school/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 10 Mar 2013 22:00:40 GMT</pubDate><guid isPermaLink="true">http://justinjackson.ca/jason-fried-high-school/</guid></item><item><title>Properties Visual Studio passes to MSBuild</title><link>https://daniellittle.dev/visual-studio-msbuild</link><description>It always takes me ages to kind what properties Visual Studio makes available to the MSBuild project files so here's the full set. Source…</description><author>Daniel Little Dev</author><pubDate>Fri, 08 Mar 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/visual-studio-msbuild</guid></item><item><title>GAME ON 2.0 and triOS College</title><link>https://jasoneckert.github.io/myblog/game-on-and-trios-college/</link><description>&lt;p&gt;&lt;img alt="GAMEON1" src="go1.png#center" title="GAMEON1" /&gt;&lt;/p&gt;
&lt;p&gt;The best technologies are those that spark our imagination.  They create a sense of optimism about what “can” be accomplished in the future.&lt;/p&gt;
&lt;p&gt;Atari’s Pong was one of the first technologies to do this because it allowed us to interact with our televisions, instead of just watching them.  And we started thinking about the types of wonderful interactions that the future would bring to our televisions, video displays, and Holodecks (for the trekkies out there).  We defended the earth against Space Invaders, and we lived in the virtual world of Tron.&lt;/p&gt;</description><author>Jason Eckert's Website and Blog</author><pubDate>Fri, 08 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://jasoneckert.github.io/myblog/game-on-and-trios-college/</guid></item><item><title>When clients go right</title><link>https://blog.samuellevy.com/post/42-when-clients-go-right.html</link><description>&lt;p&gt;There seems to be a trend among freelancers to complain loudly about the stupidity of their worst clients. It occasionally makes for amusing reading, but in principal, I don't think that's it's professional to do so. Even anonymous clients who, while not being named, still get shamed, deserve better. If you're doing this, and expecting to be treated like a professional, you should probably stop; as I have mentioned before, if the client relationship breaks down, then you are probably not communicating properly.&lt;/p&gt;&lt;p&gt;I generally try not to talk about my specific clients at all on this blog, not beca…&lt;/p&gt;</description><author>Sam says you should read this</author><pubDate>Fri, 08 Mar 2013 01:44:41 GMT</pubDate><guid isPermaLink="true">https://blog.samuellevy.com/post/42-when-clients-go-right.html</guid></item><item><title>Fixing Database Connections in Django</title><link>/2013/03/07/Fixing-django-db-connections/</link><description>&lt;p&gt;If you&amp;rsquo;re looking to get better performance from your Django apps you can check out &lt;a href="http://www.amazon.com/Pro-Django-Experts-Voice-Development/dp/1430210478?ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=mypred-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0932633439"&gt;Pro Django&lt;/a&gt;, &lt;a href="http://www.amazon.com/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X?ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=mypred-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0932633439"&gt;PostgreSQL High Performance&lt;/a&gt;, or read some my earlier posts on &lt;a href="http://www.craigkerstiens.com/2013/01/10/more-on-postgres-performance/"&gt;Postgres Performance&lt;/a&gt;. All of these are of course good things to do – you can also start by correcting an incredibly common but also painful performance issue, that until 1.6 is unaddressed in Django.&lt;/p&gt;
&lt;p&gt;Django&amp;rsquo;s current default behavior is to establish a connection for each request within a Django application. In many cases any particularly in distributed cloud environments this is a large time sink of your response time. An example application running on &lt;a href="http://www.heroku.com"&gt;Heroku&lt;/a&gt; shows a typical connection time of 70ms. A large part of this time is the SSL negotiation that occurs in connecting to your database, &lt;em&gt;which is a good practice to ensure security of your data&lt;/em&gt;. Regardless, this is a long time in simply establishing a connection. As a point of comparisson its commonly encourage that most queries to your database are under 10ms.&lt;/p&gt;
&lt;p&gt;An example that highlights this in a small lightweight application shows the bulk of a request time being within a connection displayed by &lt;a href="http://www.newrelic.com"&gt;New Relic&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img alt="connection time" src="https://f.cl.ly/items/0X3u0e3Q3G0L19263k2Z/Screenshot_3_6_13_1_12_PM.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="connection time" src="https://f.cl.ly/items/1h2w450F3n0X1m1c0S38/Screenshot_2_22_13_3_18_PM-2.png" /&gt;&lt;/p&gt;
&lt;p&gt;One option to remedy this is by running a connection pooler on your Database side such as &lt;a href="http://www.pgpool.net/mediawiki/index.php/Main_Page"&gt;Pgpool&lt;/a&gt; or &lt;a href="http://pgfoundry.org/projects/pgbouncer"&gt;PgBouncer&lt;/a&gt;. In fact &lt;a href="http://www.askthepony.com/blog/2011/07/getting-django-on-heroku-prancing-8-times-faster/"&gt;Ask the Pony&lt;/a&gt; already highlighted these potential gains. While running an external DB they&amp;rsquo;re essentially testing the benefits of conncetion pooling. This is an obvious gain and can be in a much more lightweight format.&lt;/p&gt;
&lt;h3 id="connection-pooling-in-django"&gt;
&lt;div&gt;
Connection Pooling in Django
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;As Django establishes a connection on each request it has an opportunity to both pool connections and persist connections. There are two major options for pooling, each works quite well with Django and provides some dramatic improvements. While the first request may take the 70ms of connection time, subsequent requests show absolutely no connection time since the connection already exists. This is highlighed by these two comparissons of before and after in actually the times it grabs a connection:&lt;/p&gt;
&lt;p&gt;&lt;img alt="before" src="https://f.cl.ly/items/2H0J2x3P2L2K2n0M3i38/Screen_Shot_2013-02-22_at_8.28.21_PM.png" /&gt;
&lt;img alt="after" src="https://f.cl.ly/items/0T1l1I03433u0c0t3e2o/Screen_Shot_2013-02-22_at_8.28.36_PM.png" /&gt;&lt;/p&gt;
&lt;p&gt;Clearly theres plenty of value to having a persistent connection or a pool within Django itself. As of today theres a few options for that:&lt;/p&gt;
&lt;h3 id="django-postgrespool"&gt;
&lt;div&gt;
Django-PostgresPool
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;The first &lt;a href="https://github.com/kennethreitz/django-postgrespool"&gt;Django-PostgresPool&lt;/a&gt; is created by &lt;a href="http://twitter.com/kennethreitz"&gt;kennethreitz&lt;/a&gt;. As in general I&amp;rsquo;d encourage the use of &lt;a href=""&gt;dj_database_url&lt;/a&gt; you can easily begin using his package (once installed) with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import dj_database_url
DATABASE = { 'default': dj_database_url.config() }
DATABASES['default']['ENGINE'] = 'django_postgrespool'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;An important thing to note is if you&amp;rsquo;re using &lt;a href="http://south.aeracode.org/"&gt;South&lt;/a&gt; you&amp;rsquo;ll also want to setup the adapter for it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SOUTH_DATABASE_ADAPTERS = {
'default': 'south.db.postgresql_psycopg2'
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="djorm-ext-pool"&gt;
&lt;div&gt;
djorm-ext-pool
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;The second option &lt;a href="https://github.com/niwibe/djorm-ext-pool"&gt;djorm-ext-pool&lt;/a&gt; is created by &lt;a href="http://twitter.com/niwibe"&gt;niwibe&lt;/a&gt;. Once you&amp;rsquo;ve installed &lt;code&gt;djorm-ext-pool&lt;/code&gt; you then add it to your &lt;code&gt;INSTALLED_APPS&lt;/code&gt; within your &lt;code&gt;settings.py&lt;/code&gt;. From here then you can setup your pool:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DJORM_POOL_OPTIONS = {
&amp;quot;pool_size&amp;quot;: 20,
&amp;quot;max_overflow&amp;quot;: 0
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="django-db-pool"&gt;
&lt;div&gt;
django-db-pool
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;The third and final option is &lt;a href="https://github.com/gmcguire/django-db-pool"&gt;django-db-pool&lt;/a&gt;. You can set it up with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DATABASES = {'default': dj_database_url.config()}
DATABASES['default']['ENGINE'] = 'dbpool.db.backends.postgresql_psycopg2'
DATABASES['default']['OPTIONS'] = {
'MAX_CONNS': 10
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="gotchas"&gt;
&lt;div&gt;
Gotchas
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Each of these does work with recent versions of Django, though in some cases there are gotchas. If using a prodution worthy python web server such as Gunicorn or uwsgi and running with gevent or eventlet some edge cases can present themselves. Regardless of potential gotchas it is worth attempting this and of course providing feedback to maintainers and the community as you find those.&lt;/p&gt;
&lt;h3 id="the-future"&gt;
&lt;div&gt;
The future
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Django more recently has directly started to address these issues of large costs of establishing a connection. The first major step here is &lt;a href="https://github.com/django/django/commit/2ee21d"&gt;this patch&lt;/a&gt; from &lt;a href="http://twitter.com/aymericaugustin"&gt;Aymeric&lt;/a&gt;. You can find more dicussion around this particular patch &lt;a href="https://groups.google.com/forum/#!topic/django-developers/NwY9CHM4xpU/discussion"&gt;here&lt;/a&gt;. Essentially with this patch which will hit in Django 1.6 developers then get a persistent connection which will help reduce the time. If you&amp;rsquo;re interested in trying the 1.6 master you can do this by adding it to your requirements.txt as:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://github.com/django/django/archive/master.zip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At this point it does not introduce pooling which could allow even more gains, though I&amp;rsquo;m sure if there&amp;rsquo;s enough need it&amp;rsquo;ll be on a roadmap at some point. Though, as it stands today before 1.6 your best bet is one of the above options.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 07 Mar 2013 22:55:56 GMT</pubDate><guid isPermaLink="true">/2013/03/07/Fixing-django-db-connections/</guid></item><item><title>learn how to do one minute hacks, in three minutes</title><link>https://purpleidea.com/blog/2013/03/07/learn-how-to-do-one-minute-hacks-in-three-minutes/</link><description>&lt;p&gt;I write this technical blog for you to enjoy, and to help me remember. So where do I get all this knowledge? I figure it out! Here&amp;rsquo;s how I learned to fix a small gedit annoyance in one minute, and within the next three, you&amp;rsquo;ll be able to do the same for other types of problems too. Ready? Set? Go!&lt;/p&gt;
&lt;p&gt;I use gedit enough, that when I hack, I often end up using up more than the five allotted spaces in the &amp;ldquo;recent files&amp;rdquo; sections. I wanted to see eight. Since I knew it would have been silly for the developers to hard code the number five, I decided there was a chance that they stored it in the &lt;a href="https://live.gnome.org/dconf"&gt;dconf&lt;/a&gt; settings. (BTW, there&amp;rsquo;s also an amazing &amp;ldquo;&lt;a href="http://seilo.geekyogre.com/2011/12/gedit-plugins-now-has-the-dashboard/"&gt;Dashboard&lt;/a&gt;&amp;rdquo; plugin which I use for more complex recent-files searching&amp;hellip;)&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 07 Mar 2013 20:38:45 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/03/07/learn-how-to-do-one-minute-hacks-in-three-minutes/</guid></item><item><title>Simple database read scaling without sharding in rails</title><link>/2013/03/06/Simple-database-read-scaling-without-sharding-in-rails/</link><description>&lt;p&gt;In an earlier post I provided a high level &lt;a href="http://www.craigkerstiens.com/2012/11/30/sharding-your-database/"&gt;overview of sharding&lt;/a&gt;. Sharding while a very solid approach to scaling capacity versus simply only relying on vertical scaling can also be a time intensive one. Additionally in some cases certain sites may only need extra capacity for a short lived period of time. Fortunately theres a nice middle ground alternative for scaling capacity that works well in quite a few cases. It even has a benefit that can potentially in place of sharding.&lt;/p&gt;
&lt;p&gt;This method results in scaling your reads to replica databases, you can do this on Heroku by taking advantage of followers. A follower is a read only database on Heroku Postgres that receives asynchronous updates of your data usually only lagging a very few commits behind. This means you can write all of your data to the leader (main) database, and then read from another.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;While you can arbitrarily do this there&amp;rsquo;s some major benefits to doing it based on the models. This is because Postgres maintains a cache on each instance its running on. Though you may have the same dataset, Postgres maintains frequently accessed or queried data in the cache giving you better performance. For more on this you can read earlier posts on &lt;a href="http://www.craigkerstiens.com/2012/11/30/sharding-your-database/"&gt;PostgreSQL Performance&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="setting-it-up-with-rails"&gt;
&lt;div&gt;
Setting it up with Rails
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;With a follower database created you can begin adding support for this to your application. The first thing is to add the gem to your Gemfile:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gem 'ar-octopus', :require =&amp;gt; &amp;quot;octopus&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then of course to install it with &lt;code&gt;bundle install&lt;/code&gt;. Now we can actually begin to add the code needed to have specific models access the follower.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;octopus:
shards:
shard_sqlite:
adapter: sqlite3
database: db/db_one.sqlite3
pool: 5
timeout: 5000
shard_pgsql:
adapter: postgresql
username: postgres
password:
database: db_two
encoding: unicode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;a&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class Project &amp;lt; ActiveRecord::Base
octopus_establish_connection(:adapter =&amp;gt; &amp;quot;sqlite3&amp;quot;, :database =&amp;gt; &amp;quot;db_one&amp;quot;)
end&lt;/code&gt;&lt;/pre&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 06 Mar 2013 22:55:56 GMT</pubDate><guid isPermaLink="true">/2013/03/06/Simple-database-read-scaling-without-sharding-in-rails/</guid></item><item><title>iOS Programming: The Big Nerd Ranch Guide</title><link>https://june.kim/big-nerd-ranch-ios/</link><author>june.kim</author><pubDate>Wed, 06 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://june.kim/big-nerd-ranch-ios/</guid></item><item><title>Stratified versus Uniform Sampling</title><link>https://blog.yiningkarlli.com/2013/03/stratified-versus-uniform-sampling.html</link><description>&lt;p&gt;As part of Takua Render’s new pathtracing core, I’ve implemented a system allowing for multiple sampling methods instead of just uniform sampling. The first new sampling method I’ve added in addition to uniform sampling is stratified sampling. Basically, in stratified sampling, instead of spreading samples per iteration across the entire probability region, the probability region is first divided into a number of equal sized, non-overlapping subregions, and then for each iteration, a sample is drawn with uniform probability from within a single subregion, called a strata. The result of stratified sampling is that samples are guaranteed to be more evenly spread across the entire probability domain instead of clustered within a single area, resulting in less visible noise for the same number of samples compared to uniform sampling. At the same time, since stratified sampling still maintains a random distribution within each strata, the aliasing problems associated with a totally even sample distribution are still avoided.&lt;/p&gt;

&lt;p&gt;Here’s a video showing a scene rendered in Takua Render with uniform and then stratified sampling. The video also shows a side-by-side comparison in its last third.&lt;/p&gt;

&lt;div class="embed-container"&gt;Takua Render Sampler Methods Comparison&lt;/div&gt;

&lt;p&gt;In the renders in the above video, stratified sampling is being used to choose new ray directions from diffuse surface bounces; instead of choosing a random point over the entire cosine-weighted hemisphere at an intersection point, the renderer first chooses a strata with the same steradian as all other strata, and then chooses a random sample within that solid angle. The strata is chosen sequentially for primary bounces, and then chosen randomly for all secondary bounces to maintain unbiased sampling over the whole render. As a result of the sequential strata selection for primary bounces, images rendered in Takua Render will not converged to an unbiased solution until N iterations have elapsed, where N is the number of strata the probability region is divided into. The number of strata can be set by the user as a value in the scene description which is then squared to get the total strata number. So, if a user specifies a strata level of 16, then the probability region will be divided into 256 strata and a unbiased result will not be reached until 256 or more samples per pixel have been taken.&lt;/p&gt;

&lt;p&gt;Here’s the Lamborghini model from last post at 256 samples per pixel with stratified (256 strata) and uniform sampling, to demonstrate how much less perceptible noise there is with the stratified sampler. From a distance, the uniform sampler renders may seem slightly darker side by side due to the higher percentage of noise, but if you compare them using the lightbox, you can see that the lighting and brightness is the same.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/lambo_strat.png"&gt;&lt;img alt="Stratified sampling, 256 strata, 256 samples per pixel" src="https://blog.yiningkarlli.com/content/images/2013/Mar/lambo_strat.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/uniform.png"&gt;&lt;img alt="Uniform sampling, 256 samples per pixel" src="https://blog.yiningkarlli.com/content/images/2013/Mar/uniform.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…and up-close crops with 400% zoom:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/lambo_strat_crop.png"&gt;&lt;img alt="Stratified sampling, 256 strata, 256 samples per pixel, 400% crop" src="https://blog.yiningkarlli.com/content/images/2013/Mar/lambo_strat_crop.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/uniform_zoom.png"&gt;&lt;img alt="Uniform sampling, 256 samples per pixel, 400% crop" src="https://blog.yiningkarlli.com/content/images/2013/Mar/uniform_zoom.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At some point soon I will also be implementing Halton sequence sampling and [0,2]-sequence sampling, but for the time being, stratified sampling is already providing a huge visual boost over uniform! In fact, I have a small secret to confess: all of the renders in the last post were rendered with the stratified sampler!&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Wed, 06 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/03/stratified-versus-uniform-sampling.html</guid></item><item><title>Fake It. Trash It. Build It.</title><link>http://42floors.com/blog/fake-it-trash-it-build-it/</link><description>&lt;p&gt;&amp;#8220;We didn&amp;#8217;t start with any wireframes. We didn&amp;#8217;t spend anytime in brainstorming meetings. I gathered an understanding of the general goals, and went to work throwing my initial thoughts into a fake product. The end result was a prototype that, in a lot of ways, was functional.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Just as writers do, designers often get caught up in minor details and the implementation of processes rather than creating a final product. Whether that sticking point is a brand new text editor or a distraction-free writing environment, a wireframe or finding the perfect hue to contrast just so with another color, it is important to put these potential time sinks in perspective: while they certainly are important, we &amp;#8220;need to concentrate on the things that the reader will notice&amp;#8221;, to &lt;a href="http://brooksreview.net/2013/02/cms-war/"&gt;quote Ben Brooks&lt;/a&gt;, rather than the details we get caught up in all too often, the details that prevent makers from making things.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://42floors.com/blog/fake-it-trash-it-build-it/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 05 Mar 2013 15:26:24 GMT</pubDate><guid isPermaLink="true">http://42floors.com/blog/fake-it-trash-it-build-it/</guid></item><item><title>Creating randomized eye movement in ImpactJS</title><link>https://liza.io/creating-randomized-eye-movement-in-impactjs/</link><description>&lt;p&gt;Last night I built randomized eye movement for the cat face in my March One Game a Month project (Promiscuous Flea). In the final version the eye movements won&amp;rsquo;t be &lt;em&gt;100%&lt;/em&gt; random, but this gives me something to build on. As usual, I am using the ImpactJS engine for this game. The final result looks kind of like this:&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Tue, 05 Mar 2013 13:33:05 GMT</pubDate><guid isPermaLink="true">https://liza.io/creating-randomized-eye-movement-in-impactjs/</guid></item><item><title>Fear of a WebKit Planet</title><link>http://hypercritical.co/2013/03/04/fear-of-a-webkit-planet</link><description>&lt;p&gt;John Siracusa in the opening paragraphs of his article &lt;em&gt;Fear of a WebKit Planet&lt;/em&gt; with a few atypical sentences characterizing the traits so many came to love of the former Hypercritical co-host:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;As someone whose memory of perceived past technological betrayals and injustices is so keen that I still find myself unwilling to have a Microsoft game console in the house, my lack of anxiety about this move may seem incongruous, even hypocritical. I am open to the possibility that I&amp;#8217;ll be proven wrong in time, but here&amp;#8217;s how I see it today.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://hypercritical.co/2013/03/04/fear-of-a-webkit-planet"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 04 Mar 2013 20:06:21 GMT</pubDate><guid isPermaLink="true">http://hypercritical.co/2013/03/04/fear-of-a-webkit-planet</guid></item><item><title>The CMS War</title><link>http://brooksreview.net/2013/02/cms-war/</link><description>&lt;p&gt;&amp;#8220;I&amp;#8217;ve looked deeply into SquareSpace. I know a lot about Shopify. I had this site running on MovableType, and tons of other CMSs &amp;#160;&amp;#8212;&amp;#160; but at the end of the day I realized that WordPress works fine and I need to concentrate on the things readers will actually notice.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/02/cms-war/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 04 Mar 2013 19:10:00 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/02/cms-war/</guid></item><item><title>AirPair on TechCrunch</title><link>https://peterlyons.com/problog/2013/03/airpair-on-techcrunch/</link><description>&lt;p&gt;TechCrunch has &lt;a href="http://techcrunch.com/2013/03/04/airpair-connects-startups-with-expert-developers-to-get-help-with-code-via-online-sessions/"&gt;this article on AirPair&lt;/a&gt; today with a nice quote about me. This is my first ever mention on TechCrunch (but hopefully not my first and only!).&lt;/p&gt;</description><author>Pete's Points</author><pubDate>Mon, 04 Mar 2013 18:30:24 GMT</pubDate><guid isPermaLink="true">https://peterlyons.com/problog/2013/03/airpair-on-techcrunch/</guid></item><item><title>How to deal with websites who exist only to put ads inside copied content</title><link>https://stop.zona-m.net/2013/03/how-to-deal-with-websites-who-exist-only-to-put-ads-inside-copied-content/</link><description>&lt;p&gt;Every now and then, I come across websites that don&amp;rsquo;t contain anything original. All their &amp;ldquo;pages&amp;rdquo; are verbatim copies of original content found online and copied automatically without permission, just to fill it with advertising banners. When I find such a website copying stuff I wrote, I send them the email you can find below, and I must say it normally works very well, and quite quickly too. You&amp;rsquo;re welcome to reuse it whenever you find a website of that kind. Actually, I strongly &lt;em&gt;encourage you&lt;/em&gt; to do it, to help make the Web a bit more useful for everybody.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Mon, 04 Mar 2013 10:00:09 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/03/how-to-deal-with-websites-who-exist-only-to-put-ads-inside-copied-content/</guid></item><item><title>A quick anaconda trick</title><link>https://purpleidea.com/blog/2013/03/04/a-quick-anaconda-trick/</link><description>&lt;p&gt;Here&amp;rsquo;s a quick &lt;a href="https://fedoraproject.org/wiki/Anaconda/Kickstart"&gt;anaconda&lt;/a&gt; solution that I am now using in some of my kickstart files&amp;hellip;&lt;/p&gt;
&lt;p&gt;I wanted to bootstrap a machine and do all the partitioning and logical volume creation, but not format or mount one of the logical volumes. The magic parameter I needed was:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;--fstype=none
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This seems to work perfectly for me. It&amp;rsquo;s not 100% intuitive to me, but it does work. I hope it&amp;rsquo;s not an accidental bug in the anaconda code! The full text of my partitioning is:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Mon, 04 Mar 2013 07:00:43 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/03/04/a-quick-anaconda-trick/</guid></item><item><title>First Progress on New Pathtracing Core</title><link>https://blog.yiningkarlli.com/2013/03/first-progress-on-new-pathtracing-core.html</link><description>&lt;p&gt;I’ve started work on a completely new pathtracing core to replace the one used in Rev 2. The purpose of totally rewriting the entire pathtracing integrator and brdf systems is to produce something much more modular and robust; as much as possible, I am now decoupling brdf and new ray direction calculation from the actual pathtracing loop.&lt;/p&gt;

&lt;p&gt;I’m still in the earliest stages of this rewrite, but I have some test images! Each of the following images was rendered out to somewhere around 25000 samples per pixel (a lot!), at about 5/6 samples per pixel per second. I let the renders run without a hard ending point and terminated them after I walked away for a while and came back, hence the inexact but enormous samples per pixel counts. Each scene was lit with my standard studio-styled lighting setup and in addition to the showcased model, uses a smooth backdrop that consists of about 10000 triangles.&lt;/p&gt;

&lt;p&gt;Approximately 100000 face Stanford Dragon:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/dragon.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Mar/dragon.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Approximately 150000 face Deloreon model:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/deloreon.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Mar/deloreon.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Approximately 250000 face Lamborghini Aventador model:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/lambo_back.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Mar/lambo_back.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/lambo_front.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Mar/lambo_front.png" /&gt;&lt;/a&gt;&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Mon, 04 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/03/first-progress-on-new-pathtracing-core.html</guid></item><item><title>Azusa Pacific University Counter-Strike Map</title><link>https://justingarrison.com/blog/2013-03-04-azusa-pacific-university-counter-strike-map/</link><description>A while ago a friend of mine set out on a quest to make a 3D map of my work.</description><author>Justin Garrison's Homepage</author><pubDate>Mon, 04 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-03-04-azusa-pacific-university-counter-strike-map/</guid></item><item><title>The Serif Readability Myth</title><link>http://www.marco.org/2013/01/23/the-serif-readability-myth</link><description>&lt;p&gt;&amp;#8220;A typeface&amp;#8217;s readability is about far more than just one cosmetic attribute.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Something to keep in mind next time you design a website with Arial or Helvetica. You don&amp;#8217;t even have to buy a font from TypeKit: go to Google Web Fonts and pick something suitable from there&amp;#160;&amp;#8212;&amp;#160;anything to make your site more readable and set yourself apart from everyone else is an excellent choice. Remember, though, that the first job a font should be employed to do is make readable content; it should not be employed to take over the job of your design, but rather serve as a complement to a superb design.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.marco.org/2013/01/23/the-serif-readability-myth"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 03 Mar 2013 23:54:01 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/01/23/the-serif-readability-myth</guid></item><item><title>Viterbi, my favorite algorithm</title><link>https://blog.separateconcerns.com/2013-03-03-viterbi-algorithm.html</link><description>&lt;section id="The-State-Machine"&gt;
&lt;h2&gt;The State Machine&lt;/h2&gt;
&lt;p&gt;Let us consider a system that can take a finite number of states &lt;code&gt;S[1]&lt;/code&gt; to &lt;code&gt;S[n]&lt;/code&gt; over time.&lt;/p&gt;
&lt;p&gt;We can represent the system as a N-node directed graph, where nodes are the states. An arc exists between node &lt;code&gt;S[i]&lt;/code&gt; and &lt;code&gt;S[j]&lt;/code&gt; if the system can transition from &lt;code&gt;S[i]&lt;/code&gt; to &lt;code&gt;S[j]&lt;/code&gt;. You probably already know that.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="In-Chains"&gt;
&lt;h2&gt;In Chains&lt;/h2&gt;
&lt;p&gt;We will now observe the evolution of the system over time. We will model time discretely. That does not mean that time itself is discrete, but we will observe the system at fixed-interval “ticks”. We call &lt;code&gt;S(t)&lt;/code&gt; the state of the system at tick &lt;code&gt;t&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If the system is known to be in &lt;code&gt;S[i]&lt;/code&gt; at tick &lt;code&gt;t&lt;/code&gt; (i.e. &lt;code&gt;S(t) = S[i]&lt;/code&gt;) we call &lt;code&gt;P(i-&amp;gt;j)&lt;/code&gt; the probability that it will be in &lt;code&gt;S[j]&lt;/code&gt; at tick &lt;code&gt;t+1&lt;/code&gt;. Here is a definition for the mathematically inclined: &lt;code&gt;P(i-&amp;gt;j) = P(S(t+1) = S[j] | S(t) = S[i])&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A few remarks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;P(i-&amp;gt;j)&lt;/code&gt; is considered independent of &lt;code&gt;t&lt;/code&gt;;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;P(i-&amp;gt;i)&lt;/code&gt; exists;
&lt;/li&gt;
&lt;li&gt;
the sum of outbound probabilities is 1: &lt;code&gt;∀i, ∑[j=1,N]{P(i-&amp;gt;j)} = 1&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By the way, this is called a Markov Chain.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Blurry-Sights"&gt;
&lt;h2&gt;Blurry Sights&lt;/h2&gt;
&lt;p&gt;Now let’s complicate things a little by introducing a separate system that can take states &lt;code&gt;V[1]&lt;/code&gt; to &lt;code&gt;V[M]&lt;/code&gt;. This second system &lt;code&gt;V&lt;/code&gt; is tied to &lt;code&gt;S&lt;/code&gt;: at every tick &lt;code&gt;t&lt;/code&gt;, the probability distribution of &lt;code&gt;V(t)&lt;/code&gt; only depends on &lt;code&gt;S(t)&lt;/code&gt;. We will note: &lt;code&gt;O(i,j) = P(V[j] | S[i])&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can think of &lt;code&gt;V&lt;/code&gt; as something that observes &lt;code&gt;S&lt;/code&gt; and reports on its state in an incomplete and probabilistic manner.&lt;/p&gt;
&lt;p&gt;If you have understood everything up to now, you should easily get what this means: &lt;code&gt;∀i, ∑[j=1,M]{O(i,j)} = 1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you have not, let’s take a really simple example with &lt;code&gt;N = M = 2&lt;/code&gt;. You can imagine that both &lt;code&gt;S&lt;/code&gt; and &lt;code&gt;V&lt;/code&gt; are lights that can be either red or blue. The relationship between &lt;code&gt;S&lt;/code&gt; and &lt;code&gt;V&lt;/code&gt; can be expressed by something like this: “If light &lt;code&gt;S&lt;/code&gt; is red, then there is 90% chance that &lt;code&gt;V&lt;/code&gt; is red too. If light &lt;code&gt;S&lt;/code&gt; is blue, then there is only 40% chance that &lt;code&gt;V&lt;/code&gt; is red.”&lt;/p&gt;
&lt;p&gt;Now, add more possible colors to &lt;code&gt;S&lt;/code&gt; and &lt;code&gt;V&lt;/code&gt;, not necessarily the same number for both, to generalize the system.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="The-Black-Box"&gt;
&lt;h2&gt;The Black Box&lt;/h2&gt;
&lt;p&gt;Now, here is our problem: imagine that you know how system &lt;code&gt;S&lt;/code&gt; works (the probabilities of transition between the states) but that it is hidden in a black box such that you cannot observe it. What you &lt;strong&gt;can&lt;/strong&gt; observe is system &lt;code&gt;V&lt;/code&gt;. Is there any way to guess what system &lt;code&gt;S&lt;/code&gt; is doing at any time in this setting? If yes, how?&lt;/p&gt;
&lt;p&gt;The answer to the first question is: “sometimes, yes”. “Sometimes” means “if the probability distributions help us”.&lt;/p&gt;
&lt;p&gt;The second question is the one my favorite algorithm, the Viterbi algorithm, answers. Let’s see how it works.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Make-it-Code"&gt;
&lt;h2&gt;Make it Code&lt;/h2&gt;
&lt;p&gt;First we need to represent the problem in a way that can be understood by a computer. I will use the Lua programming language for that.&lt;/p&gt;
&lt;p&gt;We start by defining a few parameters. We will choose &lt;code&gt;N = 3&lt;/code&gt; and &lt;code&gt;M = 2&lt;/code&gt; for simplicity. We will observe the system over 1000 ticks.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;local N = 3
local M = 2
local L = 1000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The probabilities of transitions in &lt;code&gt;S&lt;/code&gt; will be represented by a NxN matrix, with &lt;code&gt;P(i-&amp;gt;j)&lt;/code&gt; as &lt;code&gt;T[i][j]&lt;/code&gt;. We use percentages because they are easier to read and avoid some floating point calculation issues.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;local T = {
  {  60, 20, 20 },
  {   0, 70, 30 },
  {  70, 10, 20 },
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For instance, there is a 70% chance to transition from &lt;code&gt;S[3]&lt;/code&gt; to &lt;code&gt;S[1]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The probablitities of observations will be represented by a NxM matrix, with &lt;code&gt;O(i,j)&lt;/code&gt; as &lt;code&gt;O[i][j]&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;local O = {
  { 5, 95 },
  { 55, 45 },
  { 90, 10 },
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let us make sure we didn’t make too many mistakes thanks to our two probability equations from earlier:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;local sum = function(t)
  local s = 0
  for i=1,#t do s = s + t[i] end
  return s
end

for i=1,N do
  assert(sum(T[i]) == 100)
  assert(sum(O[i]) == 100)
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is what our example system looks like in graph form:&lt;/p&gt;
&lt;p&gt;&lt;img alt="graph" src="img/viterbi.png" /&gt;&lt;/p&gt;
&lt;p&gt;The green part is the Markov chain itself, the blue part corresponds to the observation device. Arcs are labeled with probabilities of transition or observation.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Stepping-Forward"&gt;
&lt;h2&gt;Stepping Forward&lt;/h2&gt;
&lt;p&gt;Now we can simulate the behavior of the system.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;local proba_pick = function(v)
  local p,s = math.random(1,100),0
  for i=1,#v do
    s = s + v[i]
    if p &amp;lt;= s then
      return i
    end
  end
  assert(false)
end

local S,V = {},{}

local transition = function(t)
  assert(S[t-1] and not S[t])
  S[t] = proba_pick(P[S[t-1]])
end

local observe = function(t)
  assert(S[t] and not V[t])
  V[t] = proba_pick(O[S[t]])
end

S[1] = math.random(1,N)
observe(1)

for t=2,L do
  transition(t)
  observe(t)
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This code is slightly more complicated, but what you should understand is that, at the end of it, &lt;code&gt;S&lt;/code&gt; is a vector of &lt;code&gt;L&lt;/code&gt; states of the system and &lt;code&gt;V&lt;/code&gt; is the corresponding vector of observations. The initial state &lt;code&gt;S[1]&lt;/code&gt; is chosen randomly with uniform probabilities.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Seeing-Through-the-Box"&gt;
&lt;h2&gt;Seeing Through the Box&lt;/h2&gt;
&lt;p&gt;Now, let us proceed to guess what happens inside the black box. We do so iteratively: at each tick &lt;code&gt;t&lt;/code&gt;, we calculate the most plausible sequence of events that could have led to each possible state of the system, given the observation at &lt;code&gt;t&lt;/code&gt; and the results for &lt;code&gt;t-1&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;local trellis = {{}}

local prb = function(x)
  return math.log(x/100)
end

local viterbi_node = function(t,i)
  local prev = assert(trellis[t-1])
  local idx,proba = 0,-math.huge
  local p
  for j=1,N do
    p = prev[j].proba + prb(T[j][i]) + prb(1/N*O[i][V[t]])
    if p &amp;gt; proba then proba,idx = p,j end
  end
  return {
    state = i,
    proba = proba,
    prev = prev[idx],
  }
end

local viterbi_step = function(t)
  assert(not trellis[t])
  trellis[t] = {}
  for i=1,N do
    trellis[t][i] = viterbi_node(t,i)
  end
end

-- initialize the trellis
for i=1,N do
  trellis[1][i] = {
    state = i,
    proba = prb(1/N*O[i][V[1]])
  }
end

-- run the algorithm
for t=2,L do
  viterbi_step(t)
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Again, not trivial code, but this is the Viterbi algorithm itself. Moreover we use logarithmic sums for probabilities to avoid numerical problems.&lt;/p&gt;
&lt;p&gt;What the algorithm does is build a trellis, a special kind of graph. For every step &lt;code&gt;t&lt;/code&gt; we calculate the most plausible sequence of events (a path through the trellis) which ends up with the system in each of the possible states. When we reach the end of the simulation, we take the most plausible state of the system and take the path that led to it as our estimate of what happened.&lt;/p&gt;
&lt;p&gt;To avoid memory usage explosion, we do not actually store the paths themselves in the nodes of the trellis. Instead, in a node at tick &lt;code&gt;t&lt;/code&gt;, we store a pointer to the previous node (at &lt;code&gt;t-1&lt;/code&gt;) that led there. This is why we have to backtrack through the trellis to find the actual path:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;local getpath = function(node)
  local r = {}
  repeat
    table.insert(r,1,node.state)
    node = node.prev
  until (not node)
  return r
end

local best_node = function(nodes)
  local r = {proba = -math.huge}
  for i=1,#nodes do
    if nodes[i].proba &amp;gt; r.proba then
      r = nodes[i]
    end
  end
  return r
end

local bestpath = getpath(best_node(trellis[L]))
&lt;/code&gt;&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="Does-this-thing-really-work"&gt;
&lt;h2&gt;Does this thing really work?&lt;/h2&gt;
&lt;p&gt;To check if this work, let’s take the actual system out of the box and calculate how much it looks like our estimate:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;local ok = 0
for i=1,L do
  if S[i] == bestpath[i] then
    ok = ok + 1
  end
end

print(100*ok/L)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The result I got with those parameters is 72% accuracy, to compare to what a naive random process would get (33%).&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Why-I-love-it"&gt;
&lt;h2&gt;Why I love it&lt;/h2&gt;
&lt;p&gt;Let’s go back to the title of this post: now that you know what it does, &lt;strong&gt;why&lt;/strong&gt; is Viterbi’s algorithm my favorite?&lt;/p&gt;
&lt;p&gt;I admit that the elegance of the representation of the problem as a trellis is part of the reason, but mainly it’s because of its implications. Think about it: fundamentally it is an algorithm that allows a machine to &lt;strong&gt;explain what it observes&lt;/strong&gt;. Isn’t that crazy?&lt;/p&gt;
&lt;p&gt;Yes, it is. And because of that it has a whole range of applications, from advanced orthographic correction and speech-to-text to the decoding of convolutional codes used in voice codecs. And I suspect its potential has not been fully exploited yet.&lt;/p&gt;
&lt;/section&gt;</description><author>Separate Concerns</author><pubDate>Sun, 03 Mar 2013 20:00:01 GMT</pubDate><guid isPermaLink="true">https://blog.separateconcerns.com/2013-03-03-viterbi-algorithm.html</guid></item><item><title>OpenStreetMap for young people: a cool game that (re)creates the real world</title><link>https://stop.zona-m.net/2013/03/openstreetmap-for-young-people-a-cool-game-that-recreates-the-real-world/</link><description>&lt;p&gt;Maps are very important and serious stuff. Maps explain, and in many cases control, how the world is.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Sun, 03 Mar 2013 14:38:19 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/03/openstreetmap-for-young-people-a-cool-game-that-recreates-the-real-world/</guid></item><item><title>Finding fried chicken with C-Sharp, Mono and ServiceStack</title><link>https://tomforb.es/blog/finding-fried-chicken-with-c-mono-and-servicestack/</link><description>I think I just solved a very first world problem - Where to find the nearest takeaway that sells fried chicken. When you are stumbling out of Spiders at 1am in the morning and craving some SFC goodness the last thing you want to do is wander the backstreets of hull in the cold looking for an open ta...</description><author>Tom Forbes</author><pubDate>Sat, 02 Mar 2013 23:57:06 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/finding-fried-chicken-with-c-mono-and-servicestack/</guid></item><item><title>Save the forests, not the tiger!</title><link>https://stop.zona-m.net/2013/03/save-the-forests-not-the-tiger/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Sat, 02 Mar 2013 13:28:14 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/03/save-the-forests-not-the-tiger/</guid></item><item><title>Open and Shut</title><link>http://daringfireball.net/2013/03/open_and_shut</link><description>&lt;p&gt;John Gruber in an exceptional article posted to Daring Fireball a few days ago. Not only a phenomenal piece on the history of the computing industry and the &amp;#8220;open versus closed&amp;#8221; argument but also an extraordinarily well-written piece&amp;#160;&amp;#8212;&amp;#160;a reminder that I still have far to go.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;The Mac&amp;#8217;s resurgence had nothing to do with being more open, and everything to do with improved quality: a modern operating system, well-designed software, and hardware designs that the entire rest of the industry now copies slavishly and shamelessly.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://daringfireball.net/2013/03/open_and_shut"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 02 Mar 2013 13:14:45 GMT</pubDate><guid isPermaLink="true">http://daringfireball.net/2013/03/open_and_shut</guid></item><item><title>"Did we just rip off Marco Arment and The Magazine?"</title><link>http://www.marco.org/2013/03/02/type-engine</link><description>&lt;p&gt;&amp;#8220;The Magazine isn&amp;#8217;t successful because I have red links, centered sans-serif headlines, footnote popovers, link previews, and a white table-of-contents sidebar that slides over the article from the left with a big shadow even on iPhone. It isn&amp;#8217;t successful because authors write in Markdown, the CMS gracefully supports multi-user editing, we preview issues right on our devices as we assemble them, and any edits we make after publication are quickly and quietly patched into the issue right as people are reading it. Very little of this matters.&amp;#8221;&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s an all-too-common belief these days, the idea that creating a website mimicking both the design and posting strategy of those bloggers we hold in high regard can somehow catapult us to a similar level of success. But as Marco goes on to say in the aforementioned blog post, design and presentation exist on the outside of a system in which content is the key that unlocks both loyal readership and phenomenal success.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.marco.org/2013/03/02/type-engine"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 02 Mar 2013 13:14:43 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/03/02/type-engine</guid></item><item><title>Quote of the Day: Shawn Blanc</title><link>https://twitter.com/shawnblanc/status/307518894090907649</link><description>&lt;p&gt;To adopt Ben Brooks&amp;#8217; practice of posting interesting tidbits as he comes across them as a &amp;#8220;Quote of the Day&amp;#8221;, I found this gem while scrolling through my twitter stream yesterday:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Everything I write feels like something I read somewhere else first.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="https://twitter.com/shawnblanc/status/307518894090907649"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 02 Mar 2013 13:14:33 GMT</pubDate><guid isPermaLink="true">https://twitter.com/shawnblanc/status/307518894090907649</guid></item><item><title>Calvin on predestination</title><link>https://honza.pokorny.ca/2013/03/calvin-on-predestination/</link><description>&lt;p&gt;&lt;a href="http://www.ccel.org/ccel/calvin/institutes.v.xxiii.html"&gt;Book 3, chapter 23&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When Paul declares that we were chosen in Christ before the foundation of
the world (Eph. 1:4), he certainly shows that no regard is had to our own
worth; for it is just as if he had said, Since in the whole seed of Adam
our heavenly Father found nothing worthy of his election, he turned his eye
upon his own Anointed, that he might select as members of his body those
whom he was to assume into the fellowship of life.&lt;/p&gt;
&lt;p&gt;By saying they were elected before the foundation of the world, he takes
away all reference to worth.&lt;/p&gt;
&lt;p&gt;In the additional statement that they were elected that they might be holy,
the apostle openly refutes the error of those who deduce election from
prescience, since he declares that whatever virtue appears in men is the
result of election.&lt;/p&gt;
&lt;p&gt;Then, if a higher cause is asked, Paul answers that God so predestined, and
predestined according to the good pleasure of his will.&lt;/p&gt;
&lt;p&gt;If you say that he foresaw they would be holy, and therefore elected them,
you invert the order of Paul.  You may, therefore, safely infer, If he
elected us that we might be holy, he did not elect us because he foresaw
that we would be holy.&lt;/p&gt;
&lt;p&gt;Hence, what Christ said to his disciples is found to be universally
applicable to all believers, &amp;ldquo;Ye have not chosen me, but I have chosen
you,&amp;rdquo; (John 15:16)&lt;/p&gt;
&lt;p&gt;In another passage, to suppress the vain boasting of those who, while only
covered with a mask, claim for themselves in the view of the world a first
place among the godly, Paul says, &amp;ldquo;The Lord knoweth them that are his,&amp;rdquo; (2
Tim. 2:19). In short, by that term he designates two classes of people, the
one consisting of the whole race of Abraham, the other a people separated
from that race, and though hidden from human view, yet open to the eye of
God. And there is no doubt that he took the passage from Moses, who
declares that God would be merciful to whomsoever he pleased&lt;/p&gt;
&lt;p&gt;&amp;ldquo;All that the Father giveth me shall come to me.&amp;rdquo; &amp;ldquo;And this is the Father&amp;rsquo;s
will which has sent me, that of all which he has given me I should lose
nothing,&amp;rdquo; (John 6:37, 39). Observe that the donation of the Father is the
first step in our delivery into the charge and protection of Christ. Some
one, perhaps, will here turn round and object, that those only peculiarly
belong to the Father who make a voluntary surrender by faith. But the only
thing which Christ maintains is that though the defections of vast
multitudes should shake the world, yet the counsel of God would stand firm,
more stable than heaven itself, that his election would never fail. The
elect are said to have belonged to the Father before he bestowed them on
his only begotten Son.&lt;/p&gt;
&lt;p&gt;We must, indeed hold, when he affirms that he knows whom he has chosen,
first, that some individuals of the human race are denoted; and, secondly,
that they are not distinguished by the quality of their virtues, but by a
heavenly decree. Hence it follows, that since Christ makes himself the
author of election, none excel by their own strength or industry.&lt;/p&gt;
&lt;p&gt;For when he says, &amp;ldquo;Those that thou gavest me I have kept, and none of them
is lost but the son of perdition,&amp;rdquo; (John 17:12), the expression, though
there is a catachresis in it, is not at all ambiguous. The sum is, that God
by gratuitous adoption forms those whom he wishes to have for sons; but
that the intrinsic cause is in himself, because he is contented with his
secret pleasure.&lt;/p&gt;
&lt;p&gt;Some object that God would be inconsistent with himself, in inviting all
without distinction while he elects only a few. Thus, according to them,
the universality of the promise destroys the distinction of special grace.
[&amp;hellip;] by external preaching all are called to faith and repentance, and
that yet the Spirit of faith and repentance is not given to all [&amp;hellip;] But
it is by Isaiah he more clearly demonstrates how he destines the promises
of salvation specially to the elect (Isa. 8:16); for he declares that his
disciples would consist of them only, and not indiscriminately of the whole
human race. Whence it is evident that the doctrine of salvation, which is
said to be set apart for the sons of the Church only, is abused when it is
represented as effectually available to all. [&amp;hellip;] Isaiah assigns the cause
when he says that the arm of the Lord is not revealed to all (Isa. 53:1).&lt;/p&gt;
&lt;p&gt;How, then, can it consistently be said, that God calls while he knows that
the called will not come? [&amp;hellip;] Moreover, if election is, as Paul declares,
the parent of faith, I retort the argument, and maintain that faith is not
general, since election is special. For it is easily inferred from the
series of causes and effects, when Paul says, that the Father &amp;ldquo;has blessed
us with all spiritual blessings in heavenly places in Christ, according as
he has chosen us in him before the foundation of the world,&amp;rdquo; (Eph. 1:3, 4),
that these riches are not common to all, because God has chosen only whom
he would.&lt;/p&gt;
&lt;p&gt;We come now to the reprobate, to whom the Apostle at the same time refers
(Rom. 9:13). For as Jacob, who as yet had merited nothing by good works, is
assumed into favor; so Esau, while as yet unpolluted by any crime, is
hated. If we turn our view to works, we do injustice to the Apostle, as if
he had failed to see the very thing which is clear to us. Moreover, there
is complete proof of his not having seen it, since he expressly insists
that when as yet they had done neither good nor evil, the one was elected,
the other rejected, in order to prove that the foundation of divine
predestination is not in works. Then after starting the objection, Is God
unjust? instead of employing what would have been the surest and plainest
defense of his justice-viz. that God had recompensed Esau according to his
wickedness, he is contented with a different solution-viz. that the
reprobate are expressly raised up, in order that the glory of God may
thereby be displayed. At last, he concludes that God has mercy on whom he
will have mercy, and whom he will he hardeneth (Rom. 9:18). You see how he
refers both to the mere pleasure of God. Therefore, if we cannot assign any
reason for his bestowing mercy on his people, but just that it so pleases
him, neither can we have any reason for his reprobating others but his
will. When God is said to visit in mercy or harden whom he will, men are
reminded that they are not to seek for any cause beyond his will.&lt;/p&gt;
&lt;/blockquote&gt;</description><author>Honza Pokorný</author><pubDate>Sat, 02 Mar 2013 01:50:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/03/calvin-on-predestination/</guid></item><item><title>The Ethicality of Outbox</title><link>https://zacs.site/blog/the-ethicality-of-outbox.html</link><description>&lt;p&gt;In my last post simply titled &lt;a href="https://zacs.site/blog/outbox.html"&gt;&lt;em&gt;Outbox&lt;/em&gt;&lt;/a&gt; I linked to an article by Laura June of The Verge in which she raised a number of doubts as to the practicality of Outbox, including the potential legal troubles the startup could run into given that opening its users&amp;#8217;s mail is an integral part of the startup&amp;#8217;s business model. I glossed over those concerns in my last post; however, I feel they do merit some discussion.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-ethicality-of-outbox.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 01 Mar 2013 15:58:36 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-ethicality-of-outbox.html</guid></item><item><title>Outbox</title><link>http://www.theverge.com/2013/2/28/4039990/the-postal-service-is-bad-but-outbox-is-worse</link><description>&lt;p&gt;&amp;#8220;For $4.99 a month, you sign up online for an Outbox account (they also have apps), and then an Outbox employee comes to your house, picks up your mail, takes it back to Outbox HQ, opens it, scans it, and gives you access to it via your account. From there, you can &amp;#8221;unsubscribe&amp;#8220; from junk mail, and request to have your mail &amp;#8221;delivered&amp;#8220; to your house (even though it was definitely already delivered once, the other day).&amp;#8221;&lt;/p&gt;

&lt;p&gt;After reading Laura June&amp;#8217;s article on the new startup Outbox posted to The Verge earlier this week, I feel that she missed the point: Outbox is not supposed to catalyze the process of bringing mail to your home, but instead offer real-life spam filtering and digitization in exchange for the addition of a day or two between sender and recipient. And that&amp;#8217;s a tradeoff I&amp;#8217;m sure many people, myself included, would be comfortable making.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/2/28/4039990/the-postal-service-is-bad-but-outbox-is-worse"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 01 Mar 2013 15:56:53 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/2/28/4039990/the-postal-service-is-bad-but-outbox-is-worse</guid></item><item><title>Open Data for education in Brazil</title><link>https://stop.zona-m.net/2013/03/open-data-for-education-in-brazil/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Fri, 01 Mar 2013 13:30:01 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/03/open-data-for-education-in-brazil/</guid></item><item><title>Silver Linings Playbook</title><link>https://olshansky.info/movie/silver_linings_playbook/</link><description>Olshansky's review of Silver Linings Playbook</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 01 Mar 2013 03:57:51 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/silver_linings_playbook/</guid></item><item><title>Short-stack KD-Tree Traversal</title><link>https://blog.yiningkarlli.com/2013/03/short-stack-kd-tree-traversal.html</link><description>&lt;p&gt;In my last post, I talked about implementing history flag based kd-tree traversal. While the history flag based stackless traverse worked perfectly fine in terms of traversing the tree and finding the nearest intersection, I discovered over the past week that its performance is… less than thrilling. Unfortunately, the history flag system results in a huge amount of redundant node visits, since the entire system is state based and therefore necessarily needs to visit every node in a branch of the tree both to move down and up the branch.&lt;/p&gt;

&lt;p&gt;So instead, I decided to try out a short-stack based approach. My initial concern with short-stack based approaches was the daunting memory requirements that keeping a short stack for a few hundred threads, however, I realized that realistically, a short stack never needs to be any larger than the maximum depth of the kd-tree being traversed. Since I haven’t yet had a need to test a tree with a depth beyond 100, the memory usage required for keeping short stacks is reasonably predictable and manageable; as a precaution, however, I’ve also decided to allow for the system to fall back to a stackless traverse in the case that a tree’s depth causes short stack memory usage to become unreasonable.&lt;/p&gt;

&lt;p&gt;The actual short-stack traverse I’m using is a fairly standard while-while traverse based on the &lt;a href="http://kunzhou.net/2008/kdtree.pdf"&gt;2008 Kun Zhou realtime kd-tree paper&lt;/a&gt; and the &lt;a href="http://graphics.stanford.edu/papers/i3dkdtree/"&gt;2007 Daniel Horn GPU kd-tree paper&lt;/a&gt;. I’ve added one small addition though: in addition to keeping a short stack for traversing the kd-tree, I’ve also added an optional second short stack that tracks the last N intersection test objects. The reason for keeping this second short stack is that kd-trees allow for objects to be split across multiple nodes; by tracking which objects we have already encountered, we can safely detect and skip objects that have already been tested. The object tracking short stack is meant to be rather small (say, no more than 10 to 15 objects at a time), and simply loops back and overwrites the oldest values in the stack when it overflows.&lt;/p&gt;

&lt;p&gt;The new while-while traversal is significantly faster than the history flag approach, to the order of a 10x or better performance increase in some cases.&lt;/p&gt;

&lt;p&gt;In order to validate that the entire kd traversal system works, I did a quick and dirty port of the old Rev 2 pathtracing integrator to run on top of the new Rev 3 framework. The following test images contain about 20000 faces and objects, and clocked in at about 6 samples per pixel per second with a tree depth of 15. Each image was rendered to 1024 samples per pixel:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/greencow.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Mar/greencow.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Mar/glasscow.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Mar/glasscow.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also attempted to render these images without any kd-tree acceleration as a control. Without kd-tree acceleration, each sample per pixel took upwards of 5 seconds, and I wound up terminating the renders before they got even close to completion.&lt;/p&gt;

&lt;p&gt;The use of my old Rev 2 pathtracing core is purely temporary, however. The next task I’ll be tackling is a total rewrite of the entire pathtracing system and associated lighting and brdf evaluation systems. Previously, this systems have basically been monolithic blocks of code, but with this rewrite, I want to create a more modular, robust system that can recycle as much code as possible between GPU and CPU implementations, the GL debugger, and eventually other integration methods, such as photon mapping.&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Fri, 01 Mar 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/03/short-stack-kd-tree-traversal.html</guid></item><item><title>Why Code Search is Difficult</title><link>https://boyter.org/2013/02/why-code-search-is-difficult/</link><description>&lt;p&gt;I was chatting with a colleague the other day and he was asking me why code search is a difficult problem. After all its not quite as dynamic as the web so it should be easier to index.&lt;/p&gt;
&lt;p&gt;In truth its a mixed bag. Some things like like crawling are easy, others such as indexing are much harder then you would think. I thought I would write down why this is.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Fri, 01 Mar 2013 01:26:36 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/02/why-code-search-is-difficult/</guid></item><item><title>February #1GAM Game - My Mind Is Going</title><link>https://liza.io/february-1gam-game-my-mind-is-going/</link><description>&lt;p&gt;It is done! Well ok, it is very far from done. It&amp;rsquo;s as far from done as far from done yet functional can be. It&amp;rsquo;s messy, buggy, untested, and the score calculations are all weird. But it works and it makes you want to throw things through windows when you play it.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Fri, 01 Mar 2013 00:07:59 GMT</pubDate><guid isPermaLink="true">https://liza.io/february-1gam-game-my-mind-is-going/</guid></item><item><title>The departure of Benedict XVI? Not on this computer, sorry</title><link>https://stop.zona-m.net/2013/02/the-departure-of-benedict-xvi-not-on-this-computer-sorry/</link><description>&lt;p&gt;&lt;em&gt;In the modern world, more and more documents and services are made available in digital format. Even if it can be a source of huge progress for all humankind, this phenomenon often happens through technologies which become obsolete in a few years, are incompatible with each other or cannot be afforded by everybody. This fact creates serious obstacles to a really free communication among people, to the preservation of the cultural and spiritual heritage of humankind and to the diffusion of the Word of God.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The paragraph above is the introduction of the &lt;a href="http://www.eleutheros.org/en/documents/manifesto/"&gt;Eleutheros Manifesto&lt;/a&gt; that I and other Catholics wrote almost seven years ago. Today, February 28th, 2013, Pope Benedict&amp;rsquo;s last meeting in Vatican provides a perfect example of those obstacles we were, and remain, worried about. Because not everybody can follow it online, not from its source at least.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Thu, 28 Feb 2013 18:08:55 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/02/the-departure-of-benedict-xvi-not-on-this-computer-sorry/</guid></item><item><title>The false savings of AntexWeb</title><link>https://stop.zona-m.net/2013/02/the-false-savings-of-antexweb/</link><description>&lt;p&gt;UPDATE 2014/03/11: the information below is NOT up to date anymore. The current version of AntexWeb does not have those problems. You can read its current specifications in the &lt;a href="https://stop.zona-m.net/2014/03/antex-answers-my-2013-post/"&gt;answer I just received today from Antex&lt;/a&gt;&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Thu, 28 Feb 2013 17:35:02 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/02/the-false-savings-of-antexweb/</guid></item><item><title>Le profonde intuizioni di Alan Kay</title><link>https://nicolaiarocci.com/le-profonde-intuizioni-di-alan-kay/</link><description>&lt;p&gt;Durante una conferenza di qualche tempo fa lo speaker, rivolto a una sala gremita di programmatori e informatici, chiese quanti conoscevano Alan Kay. Con suo (e mio) grande stupore pochissimi alzarono le mani.&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;The Deep Insights of Alan Kay&lt;!-- raw HTML omitted --&gt;  è un tributo da non perdere a questo vero gigante dell’informatica, tra l’altro impreziosito da una selezione di link ad alcuni dei suoi interventi più importanti, spesso tenuti in occasione del ritiro dei numerosi premi ricevuti in carriera (tra gli altri, l’Alan Turing per il fondamentale contributo alla programmazione orientata agli oggetti).&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Thu, 28 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/le-profonde-intuizioni-di-alan-kay/</guid></item><item><title>Generate OAuth Consumer Key and Shared Secrets using PHP</title><link>https://thomashunter.name/posts/2013-02-28-generate-oauth-consumer-key-and-shared-secrets-using-php</link><author>Thomas Hunter II</author><pubDate>Thu, 28 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-02-28-generate-oauth-consumer-key-and-shared-secrets-using-php</guid></item><item><title>I'm the most Organized Disorganized person you'll meet</title><link>http://jrgns.net/blog/2013/02/28/im-the-most-organized-disorganized-person-youll-meet.html</link><description>&lt;p&gt;One of the most telling compliments I ever received was from a good friend: “You’re
the most organized, disorganized person I know!”. It’s quite telling once you wrap your
head around it. It stuck by me, and it’s helping me shape my career.&lt;/p&gt;

&lt;p&gt;I’ve always been absent minded. Classic “if you’re head wasn’t tied to your body, you’ll
loose it!” stuff. I’d put something down, and then search for it for half an hour, only
to discover it’s been in my pocket the whole time. One time I was talking to my mom on
the phone, realised that I didn’t know where my phone was, and proceed to tell my mom
about it… At the end of the day, details just didn’t stick in my head.&lt;/p&gt;

&lt;p&gt;Now I’m in an industry where detail is everything. Businesses lose thousands
because of a missing negative sign. One line of code out of place crashes an application
and loses a company users, money and its reputation. I always tell people that creating
systems is like eating an elephant: bit by bit. what they don’t realise is that if you
get one byte wrong, everything comes crashing down.&lt;/p&gt;

&lt;p&gt;So how wise is it for a guy who can’t keep track of both his sandles to be in the details
business? Either very foolish, or a stroke of genius. Genius? Let’s look that compliment
again: The most &lt;em&gt;organized&lt;/em&gt; disorganized person. To cope with all these details, I
started to rely on systems. I organized my life in such a way that I didn’t need to
worry about the details.&lt;/p&gt;

&lt;p&gt;Using systems ensures that even the most unorganized person won’t miss any of the details.
I used calandering to keep track of appointments. A todo list for tasks. Evernote for
easy to forget yet important info. When I go out the door I chant “Phone, keys, wallet”
to ensure that I have the essentials. Every day I’m hacking my brain.&lt;/p&gt;

&lt;p&gt;The take away is that while people make mistakes, systems rarely do. Don’t rely
on people to take care of the details, rather put systems in place to take care it. If
it’s tricky or complicated to deploy an app, script it. If a process is long and protracted,
automate it. Create unit and behaviour tests for your code. Add state checks to the
application. Run regular audits on the numbers and make sure they balance.&lt;/p&gt;

&lt;p&gt;In the age of rapid development and continuous deployment, just writing your app isn’t
enough anymore. You need to write systems around your app to ensure that it is coded
correctly, deployed correctly, working correctly.&lt;/p&gt;</description><author>Jurgens du Toit</author><pubDate>Thu, 28 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://jrgns.net/blog/2013/02/28/im-the-most-organized-disorganized-person-youll-meet.html</guid></item><item><title>More tea...Silver Needle!</title><link>https://liza.io/more-tea-silver-needle/</link><description>&lt;p&gt;Well, the toughest part of the move is complete. I&amp;rsquo;m sitting in the kitchen of the new apartment (which is so much more awesome and homey than the old apartment), drinking Silver Needle white tea (a consequence of my aforementioned tea craze) and trying to convince myself to do at least some work on the rhythm game tonight. Although to be honest it&amp;rsquo;s 10:43pm and I&amp;rsquo;m falling asleep on this extremely comfortable kitchen stool right now, so it is probably not happening tonight.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Wed, 27 Feb 2013 23:46:38 GMT</pubDate><guid isPermaLink="true">https://liza.io/more-tea-silver-needle/</guid></item><item><title>ActiveRecord and DB Migration Ate My Model Attributes!</title><link>http://persumi.com/u/fredwu/tech/e/blog/p/activerecord-and-db-migration-ate-my-model-attributes</link><description/><author>Fred Wu (@fredwu)</author><pubDate>Wed, 27 Feb 2013 02:12:00 GMT</pubDate><guid isPermaLink="true">http://persumi.com/u/fredwu/tech/e/blog/p/activerecord-and-db-migration-ate-my-model-attributes</guid></item><item><title>[Computing] A usable Linux desktop</title><link>https://www.devever.net/~hl/linuxdesktop</link><description>&lt;p&gt;&lt;a href="https://derefer.it/http://infinality.net/"&gt;&lt;strong&gt;Infinality.net freetype &amp;amp;
        fontconfig Patches&lt;/strong&gt;&lt;/a&gt; — these are necessary to prevent Linux font
        rendering from sucking. With fontconfig correctly tuned, font rendering
        is “acceptably close” to Windows 7 Cleartype.&lt;/p&gt;</description><author>devever.net/~hl</author><pubDate>Wed, 27 Feb 2013 02:00:01 GMT</pubDate><guid isPermaLink="true">https://www.devever.net/~hl/linuxdesktop</guid></item><item><title>Set opendiff (FileMerge) as your git diff tool on OS X</title><link>https://thomashunter.name/posts/2013-02-27-set-opendiff-filemerge-as-your-git-diff-tool-on-os-x</link><author>Thomas Hunter II</author><pubDate>Wed, 27 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-02-27-set-opendiff-filemerge-as-your-git-diff-tool-on-os-x</guid></item><item><title>[Computing] Notes on building lexers</title><link>https://www.devever.net/~hl/lexer</link><description>&lt;p&gt;The following notes detail my preferred strategy for building UTF-8 lexers in C++. This strategy uses little specific to C++, and could be easily adapted to C with minimal effort.&lt;/p&gt;</description><author>devever.net/~hl</author><pubDate>Wed, 27 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.devever.net/~hl/lexer</guid></item><item><title>I Don't Actually Read your Blog</title><link>https://zacs.site/blog/i-dont-actually-read-your-blog.html</link><description>&lt;p&gt;Ah the linkblog. Although &lt;a href="https://twitter.com/hypercritical/status/294115979150098432"&gt;not the genesis of the format&lt;/a&gt;, John Gruber is often credited with the advent of this extremely pervasive practice and its widespread adoption over the years, a propagation that has continued despite the resurgence of its detractors every few months. Nevertheless, in spite of those dissidents, many writers have built a business around this model. Today, I would like to focus on one in particular: Shawn Blanc.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/i-dont-actually-read-your-blog.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 26 Feb 2013 16:38:20 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/i-dont-actually-read-your-blog.html</guid></item><item><title>My Airpair Session was written up</title><link>https://peterlyons.com/problog/2013/02/my-airpair-session-was-written-up/</link><description>&lt;p&gt;&lt;a href="http://hackerpreneurialism.com/post/44040862234/product-fit-and-success-in-online-marketplaces"&gt;Here's a post&lt;/a&gt; about my recent experience with the new &lt;a href="http://airpair.co"&gt;AirPair&lt;/a&gt; service connecting entrepreneurs with technology experts.&lt;/p&gt;</description><author>Pete's Points</author><pubDate>Tue, 26 Feb 2013 06:28:29 GMT</pubDate><guid isPermaLink="true">https://peterlyons.com/problog/2013/02/my-airpair-session-was-written-up/</guid></item><item><title>Lansing Startup Weekend February 2013: GeoMonsters Presentation</title><link>https://thomashunter.name/posts/2013-02-26-lansing-startup-weekend-february-2013-geomonsters-presentation</link><author>Thomas Hunter II</author><pubDate>Tue, 26 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-02-26-lansing-startup-weekend-february-2013-geomonsters-presentation</guid></item><item><title>Lua GC and linked native heap objects</title><link>https://makedist.com/posts/2013/02/26/lua-gc-and-linked-native-heap-objects/</link><description>Using a weak table to teach the Lua garbage collector about data relationships.</description><author>Noah Watkins</author><pubDate>Tue, 26 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://makedist.com/posts/2013/02/26/lua-gc-and-linked-native-heap-objects/</guid></item><item><title>Backbone.JS vs Angular.JS: dissacrare il mito</title><link>https://nicolaiarocci.com/backbone-js-vs-angular-js-dissacrare-il-mito/</link><description>&lt;p&gt;Lettura interessante se state cercando quello giusto fra le decine di front-end framework disponibili.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I love the way how each and every discussion turns into the war of the frameworks. I have worked with BackboneJS and AngularJS quite extensively and have come across most of their short comings in production. So, you dont really have to take this analysis with a grain of salt. I would be happy to take back anything that I have said if it turns out to be wrong. Lets get to the meat of it, then, shall we?&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Mon, 25 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/backbone-js-vs-angular-js-dissacrare-il-mito/</guid></item><item><title>Don't names classes AbstractThing or ISerializable</title><link>https://www.databasesandlife.com/dont-names-classes-abstractthing-or-iserializable/</link><description>&lt;p class="intro"&gt;Naming a class AbstractThing violates the Liskov Substitution Principle, and causes client code to read wrong. Call a class a name which you'd be happy to call any of the objects belong to the class.&lt;/p&gt;
&lt;p&gt;If you want to borrow your friend&amp;rsquo;s phone, and you&amp;rsquo;re not sure what brand it is, how many times have you asked &amp;ldquo;Excuse me mate, can I borrow your abstract phone? Cheers.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Object-oriented modeling and programming allows certain classes of objects to specialize other general classes of objects. For example, both a Rectangle and Circle are special types of of Shape.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Mon, 25 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/dont-names-classes-abstractthing-or-iserializable/</guid></item><item><title>As I See You</title><link>https://ho.dges.online/words/commonplace/as-i-see-you-by-clive-james/</link><description>&lt;p&gt;As I see you&lt;br /&gt;
Crystals grow&lt;br /&gt;
Leaves Chime&lt;br /&gt;
Roses flow&lt;/p&gt;
&lt;p&gt;As I touch you&lt;br /&gt;
Tables turn&lt;br /&gt;
Towers lean&lt;br /&gt;
Witches burn&lt;/p&gt;
&lt;p&gt;As I leave you&lt;br /&gt;
Lenses shiver&lt;br /&gt;
Flags fall&lt;br /&gt;
Show’s over.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Clive James&lt;/em&gt;&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Mon, 25 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/as-i-see-you-by-clive-james/</guid></item><item><title>Asimov's Guide To Shakespeare</title><link>https://ho.dges.online/words/commonplace/asimovs-guide-to-shakespeare/</link><description>&lt;p&gt;Isaac Asimov wrote &amp;ldquo;Asimov&amp;rsquo;s Guide to Shakespeare&amp;rdquo; and some talk show host asked him, &amp;ldquo;Why did you write this? There are thousands of books about Shakespeare!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;He said, &amp;ldquo;Yeah, but not by me.&amp;rdquo;&lt;/p&gt;</description><author>ho.dges.online</author><pubDate>Mon, 25 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://ho.dges.online/words/commonplace/asimovs-guide-to-shakespeare/</guid></item><item><title>An intro to SDR</title><link>https://blog.erethon.com/blog/2013/02/25/an-intro-to-sdr/</link><description>&lt;p&gt;
For the past two months I've been reading about &lt;a href="http://en.wikipedia.org/wiki/Software-defined_radio"&gt;SDR&lt;/a&gt; and everything
related to radio telecommunications. For those that don't know what
SDR is (and are too bored to click the previous link), Software
Defined Radio is a system that implements hardware subsystems of a
typical radio in software. People have been designing their own SDRs
with &lt;a href="http://en.wikipedia.org/wiki/Fpga"&gt;FPGAs&lt;/a&gt; for quite some time now, but in the last year there has
been a huge "revolution". It turns out that a lot of cheap USB digital
TV tuners based on the Realtek RTL2832U chip can be tuned at a wide
range of frequencies.&lt;/p&gt;</description><author>Erethon's Corner</author><pubDate>Mon, 25 Feb 2013 00:27:38 GMT</pubDate><guid isPermaLink="true">https://blog.erethon.com/blog/2013/02/25/an-intro-to-sdr/</guid></item><item><title>Shawn Blanc's Membership Giveaway</title><link>http://shawnblanc.net/2013/02/the-membership-giveaway/</link><description>&lt;p&gt;&amp;#8220;Members contribute nearly half of this site&amp;#8217;s income. Which means there is no way I could be writing here as my full-time gig without the generous support of the members.&amp;#8221;&lt;/p&gt;

&lt;p&gt;With a month left in Shawn Blanc&amp;#8217;s membership drive he announced an additional incentive to the existing membership perks: prizes. Worth an aggregate of more than $3,000, these prizes are a great way to encourage readers on the fence about whether to become a member or not and an interesting take on the increasingly popular practice of individual bloggers cultivating a strong readership through member programs. Here&amp;#8217;s to hoping Shawn not only reaches his goal, but exceeds it as well.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://shawnblanc.net/2013/02/the-membership-giveaway/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 24 Feb 2013 20:54:44 GMT</pubDate><guid isPermaLink="true">http://shawnblanc.net/2013/02/the-membership-giveaway/</guid></item><item><title>A potentially unwise newfound interest in tea.</title><link>https://liza.io/a-potentially-unwise-newfound-interest-in-tea/</link><description>&lt;p&gt;This week is shaping up to be full of crazy. Not only do I still have to finish my February One Game a Month submission, but just a couple of days ago I found out I&amp;rsquo;d have to pull off a move. The apartment now looks like a bomb went off as I stuff things into what empty boxes we have left and garbage bags. I&amp;rsquo;m trying to get as much as I can done over the weekend so that I don&amp;rsquo;t have to pull packing, cleaning, and JavaScript all-nighters on work days&amp;hellip;which I think I&amp;rsquo;m going to have to do anyway.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Sun, 24 Feb 2013 18:38:41 GMT</pubDate><guid isPermaLink="true">https://liza.io/a-potentially-unwise-newfound-interest-in-tea/</guid></item><item><title>Lansing Startup Weekend</title><link>https://thomashunter.name/posts/2013-02-24-lansing-startup-weekend</link><author>Thomas Hunter II</author><pubDate>Sun, 24 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-02-24-lansing-startup-weekend</guid></item><item><title>Airpair</title><link>https://peterlyons.com/problog/2013/02/airpair/</link><description>&lt;p&gt;So I've just been one of the earliest progragrammers to get involved with &lt;a href="http://codereview.airpair.co/"&gt;AirPair&lt;/a&gt;. It's a service that pairs entrepreneurs with technology experts for code review and pair programming sessions to help them with their coding projects.&lt;/p&gt;
&lt;p&gt;I did some google hangouts with an entrepreneur who built his own Ruby on Rails app that analyzes geology data files for oil &amp;amp; gas companies and is just starting to port it over to node.js. There's a &lt;a href="https://www.youtube.com/channel/UCOwZvL29sSlUAj6c2i_f53A?v=gdi9xDKZ5qg"&gt;youtube recording video of the 2-hour google hangout session this morning&lt;/a&gt; up. You can skip around in that if you want to get a feel for the service and experience.&lt;/p&gt;
&lt;p&gt;I'm perpetually interested in the startup community in general and connecting people across geographies via the Internet, so I was excited to try it out. I've done 3 hour-long sessions so far and so far so good.&lt;/p&gt;</description><author>Pete's Points</author><pubDate>Sun, 24 Feb 2013 00:26:52 GMT</pubDate><guid isPermaLink="true">https://peterlyons.com/problog/2013/02/airpair/</guid></item><item><title>Reclining airplane seats are a terrible idea and should be banned</title><link>http://www.slate.com/articles/life/a_fine_whine/2013/02/reclining_airplane_seats_are_a_terrible_idea_and_should_be_banned.single.html</link><description>&lt;p&gt;&amp;#8220;&amp;#8216;We paid for these goddamn seats, and we&amp;#8217;ll recline them if we want to.&amp;#8217; So then everyone was angry: I was angry because I had no room, and she was angry because I passive-aggressively kicked her seat once every 15 minutes&amp;#160;&amp;#8212;&amp;#160;often enough to be annoying, but not often enough to definitely be on purpose.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Funny how such a little thing could become such a bone of contention to so many people. Having spent days in airports and on numerous long flights though, I can certainly see where Dan Kois is coming from: there are few things more annoying during a flight than having what little personal space you are allotted cut down to a fraction by the person in front of you.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.slate.com/articles/life/a_fine_whine/2013/02/reclining_airplane_seats_are_a_terrible_idea_and_should_be_banned.single.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 23 Feb 2013 13:18:29 GMT</pubDate><guid isPermaLink="true">http://www.slate.com/articles/life/a_fine_whine/2013/02/reclining_airplane_seats_are_a_terrible_idea_and_should_be_banned.single.html</guid></item><item><title>can't want for much more than this</title><link>http://wholelarderlove.com/cant-want-for-much-more-than-this/</link><description>&lt;p&gt;&amp;#8220;As I fill the last jar with sweet summer pears I ponder for a second. Why do all this work when I could buy it? Well the truth is I don&amp;#8217;t like money. I&amp;#8217;m not good with it. Thats why I&amp;#8217;d rather work for my food. I know I&amp;#8217;ll never be a rich man, I&amp;#8217;ll never own anything of great expense, but I have everything I need, I don&amp;#8217;t want for much more than this. I have pears in a jar.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://wholelarderlove.com/cant-want-for-much-more-than-this/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 23 Feb 2013 13:17:53 GMT</pubDate><guid isPermaLink="true">http://wholelarderlove.com/cant-want-for-much-more-than-this/</guid></item><item><title>ExaSnapper 0.7 beta download and the hacking session videos</title><link>https://tanelpoder.com/2013/02/22/exasnapper-0-7-beta-download-and-the-hacking-session-videos/</link><description>&lt;p&gt;Thank you for attending the Exadata Snapper (ExaSnapper) hacking session!&lt;/p&gt;
&lt;p&gt;I have split the recording of this session into 3 pieces and uploaded to &lt;a class="broken_link" href="http://enkitec.tv" target="_blank"&gt;enkitec.tv&lt;/a&gt;. The &lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/exadata/exasnapper_install_latest.sql" target="_blank"&gt;ExaSnapper beta&lt;/a&gt; that I demoed is also available now in my blog. See the links below.&lt;/p&gt;
&lt;p&gt;For quick reference, here’s the syntax of running ExaSnapper – there are two modes, one is the before/after capture (think Tom Kyte’s runstats, but for exadata metrics) and the other is more like a DBA-monitoring mode, where you can just measure a few seconds worth of a long-running query runtime and get the IO and efficiency figures from there.&lt;/p&gt;
&lt;p&gt;Here’s an excerpt from the install script documentation section:&lt;/p&gt;
&lt;pre&gt;-- Usage:       Take a snapshot of a running session (use QC SID if PX):
--
--                a) Monitor a running query - "DBA mode" 
--
--                   SELECT * FROM TABLE(exasnap.display_sid(, [snap_seconds], [detail_level]));
--
--                   The SID argument can be just a number (SID in local instance) or a remote SID with
--                   @instance after it (like '123@4')
--
--                   SELECT * FROM TABLE(exasnap.display_sid(123));
--                   SELECT * FROM TABLE(exasnap.display_sid('123@4', p_detail=&amp;gt;'%');
--
--                b) Take Before &amp; After snapshots of a query execution - "Developer Mode"
--
--                   1) SELECT exasnap.begin_snap(123) FROM dual;
--                        or
--                      EXEC :begin_snap_id := exasnap.begin_snap(123);
-- 
--                   2) Run your query, wait until it finishes (or CTRL+C)
--
--                   3) SELECT exasnap.end_snap(123) FROM dual;
--                        or
--                      EXEC :end_snap_id := exasnap.end_snap(123);
--
--                   4) SELECT * FROM TABLE(exasnap.display_snap(:begin_snap_id, :end_snap_id, '%'));
--&lt;/pre&gt;
&lt;h4 id="one-slide-illustrating-the-idea-of-exasnapper"&gt;One slide illustrating the idea of ExaSnapper:&lt;/h4&gt;</description><author>Tanel Poder Blog</author><pubDate>Fri, 22 Feb 2013 21:38:28 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/02/22/exasnapper-0-7-beta-download-and-the-hacking-session-videos/</guid></item><item><title>Happy Villanelle</title><link>https://caiustheory.com/happy-villanelle/</link><description>&lt;p&gt;The writing group that Carole and Liberty belong to had a homework this month to write a Villanelle. It&amp;rsquo;s a very specific kind of poem, written to both a repeating line structure and a rhyming pattern. (If you go read &lt;a href="http://libertyfallsdown.wordpress.com/2013/02/22/villanelle/"&gt;Liberty&amp;rsquo;s villanelle&lt;/a&gt; she explains it properly at the start.)&lt;/p&gt;
&lt;p&gt;However, after reading both &lt;a href="http://carolefindsherwings.wordpress.com/2013/02/23/ward-26-a-villanelle/"&gt;Carole&amp;rsquo;s&lt;/a&gt; and &lt;a href="http://libertyfallsdown.wordpress.com/2013/02/22/villanelle/"&gt;Liberty&amp;rsquo;s&lt;/a&gt;, I was feeling they&amp;rsquo;d both done very depressing poems. It might be a strict structure of poem, but there&amp;rsquo;s no need to make the subject matter so down!&lt;/p&gt;
&lt;p&gt;So here&amp;rsquo;s my overly enthusiastically attempt to try and balance the world of villanelle&amp;rsquo;s into something less depressing!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Striding out down the street at last,&lt;br /&gt;
Like I own this town,&lt;br /&gt;
Tipping my hat to all that I passed.&lt;/p&gt;
&lt;p&gt;Smiling at a friendly chugger who asked,&lt;br /&gt;
Grinning at an exuberant clown,&lt;br /&gt;
Striding out down the street at last.&lt;/p&gt;
&lt;p&gt;Saluting the bookie behind his glass,&lt;br /&gt;
Turning frowns upside down,&lt;br /&gt;
Tipping my hat to all that I passed.&lt;/p&gt;
&lt;p&gt;Tapping my feet and having a blast,&lt;br /&gt;
Abusing verbs like they were a noun,&lt;br /&gt;
Striding out down the street at last.&lt;/p&gt;
&lt;p&gt;Being amused by kids playing on grass,&lt;br /&gt;
Seeing the queen in her glorious crown,&lt;br /&gt;
Tipping my hat to all that I passed.&lt;/p&gt;
&lt;p&gt;Compared to sadness I am a contrast,&lt;br /&gt;
Cheering folk up in my dressing gown,&lt;br /&gt;
Striding out down the street at last,&lt;br /&gt;
Tipping my hat to all that I passed.&lt;/p&gt;
&lt;/blockquote&gt;</description><author>Caius Theory</author><pubDate>Fri, 22 Feb 2013 17:15:03 GMT</pubDate><guid isPermaLink="true">https://caiustheory.com/happy-villanelle/</guid></item><item><title>The first "Read Later" service</title><link>http://www.marco.org/2013/02/21/the-first-read-later-service</link><description>&lt;p&gt;&lt;a href="https://zacs.site/blog/how-to-start-a-magazine.html"&gt;Speaking of Marco Arment&lt;/a&gt;, yesterday he posted an article called &lt;a href="http://www.marco.org/2013/02/21/the-first-read-later-service"&gt;&lt;em&gt;The first &amp;#8220;Read Later&amp;#8221; service&lt;/em&gt;&lt;/a&gt; in which he discussed the origins of Instapaper and the service that was eventually rebranded as Pocket:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Months after Instapaper launched all of these features and was being very well-received in the tech press, in October 2008, Read It Later added a web service for sync, other-browser bookmarklets, and offline saving. Then an iPhone app in 2009. And while Read It Later has introduced some original features, Weiner systematically copied almost every major Instapaper feature over the first few years of Instapaper&amp;#8217;s existence.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Marco also linked to a few other pieces in his aforementioned article: &lt;a href="http://www.marco.org/2011/11/16/readability"&gt;&lt;em&gt;The Relationship between Readability and Instapaper&lt;/em&gt;&lt;/a&gt; and &lt;a href="http://www.marco.org/2011/09/16/some-other-tablets-you-may-have-seen"&gt;&lt;em&gt;Some other tablets you may have seen&lt;/em&gt;&lt;/a&gt;. The following excerpt is from the latter of the two, explaining a part of his reasoning behind writing &lt;em&gt;The first &amp;#8220;Read Later&amp;#8221; service&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;This awkward avoidance betrays a lack of confidence in their innovation and an internal culture of severe denial &amp;#160;&amp;#8212;&amp;#160; two deep-rooted traits that Microsoft is famous for. So when the Microsoft people speak like this, it&amp;#8217;s not serving them well: to everyone outside of Microsoft, it&amp;#8217;s painfully obvious that they&amp;#8217;re either delusional or trying very poorly to bullshit us.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I agree wholeheartedly with Marco: the story behind Instapaper and its competitors needs to be told; and for those spreading lies, saying that Readability was the first app of its type on the market, this is unacceptable. Did I say Readability? I meant Clearly&amp;#160;&amp;#8212;&amp;#160;wait, no, Pocket; excuse my confusion.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.marco.org/2013/02/21/the-first-read-later-service"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Feb 2013 14:10:09 GMT</pubDate><guid isPermaLink="true">http://www.marco.org/2013/02/21/the-first-read-later-service</guid></item><item><title>How To Start A Magazine</title><link>http://www.npr.org/blogs/money/2013/02/21/172588471/how-to-start-a-magazine-and-make-a-profit</link><description>&lt;p&gt;Marco Arment gave Jacob Goldstein of NPR some concrete numbers for the Magazine, showing just how great an idea launching this publication was, the importance of a consistent publication schedule, and the rewards of such an excellent implementation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Last fall, Marco Arment launched a general interest magazine. It&amp;#8217;s called, aptly enough, The Magazine. Writers are paid $800 per article. There are no ads. Until recently, it was available only via iPhones and iPads. Astonishingly, it&amp;#8217;s already turning a profit.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.npr.org/blogs/money/2013/02/21/172588471/how-to-start-a-magazine-and-make-a-profit"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Feb 2013 14:08:01 GMT</pubDate><guid isPermaLink="true">http://www.npr.org/blogs/money/2013/02/21/172588471/how-to-start-a-magazine-and-make-a-profit</guid></item><item><title>If Philosophers Were Programmers</title><link>http://developeronline.blogspot.com/2009/04/if-philosophers-were-programmers.html</link><description>&lt;p&gt;With years of programming under my belt and currently taking a philosophy course, I found the parallels a blogger writing under the moniker &amp;#8220;panefsky&amp;#8221; drew between programming, philosophy, and specific philosophers interesting.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;It is perfectly reasonable to consider the programming languages as the different philosophies of a virtual world, in which entities do exist and interact with each other. To this respect, even the fundamental philosophical questions receive an interesting transformation: For example &amp;#8216;What is self-conscience?&amp;#8217; can be rephrased as &amp;#8216;What is reflection?&amp;#8217;.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://developeronline.blogspot.com/2009/04/if-philosophers-were-programmers.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Feb 2013 14:08:00 GMT</pubDate><guid isPermaLink="true">http://developeronline.blogspot.com/2009/04/if-philosophers-were-programmers.html</guid></item><item><title>You'll tweet when you're dead</title><link>http://www.theverge.com/2013/2/21/4010016/liveson-uses-artificial-intelligence-to-tweet-for-you-after-death</link><description>&lt;p&gt;&amp;#8220;&amp;#8216;We are at the very beginning of the build process,&amp;#8217; Dave Bedwood, creative partner at Lean Mean Fighting Machine, said in an email. &amp;#8216;This site is very much for people to sign up now, get a second twitter account, private to them, and just watch it learn and grow. As A.I advances, then maybe we will then get into it being able to copy syntax. When you die, if you&amp;#8217;ve had this account for a long time, it may be able to keep tweeting as you.&amp;#8217;&amp;#8221;&lt;/p&gt;

&lt;p&gt;Although skeptical at first, the more I thought about it&amp;#160;&amp;#8212;&amp;#160;especially in light of the impressive learning capabilities of the &lt;a href="https://zacs.site/blog/quadracopters.html"&gt;quadracopters previously linked to&lt;/a&gt;&amp;#160;&amp;#8212;&amp;#160;the more I became convinced that this step in artificial intelligence was not only possible, but something we will likely see in the coming years. And while I fail to see a need for such a service, it is very interesting challenge I would nevertheless love to see successful.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/2/21/4010016/liveson-uses-artificial-intelligence-to-tweet-for-you-after-death"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Feb 2013 14:05:12 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/2/21/4010016/liveson-uses-artificial-intelligence-to-tweet-for-you-after-death</guid></item><item><title>Throwing and Catching an Inverted Pendulum--with Quadracopters</title><link>http://robohub.org/video-throwing-and-catching-an-inverted-pendulum-with-quadrocopters/</link><description>&lt;p&gt;When I scrolled past this article on Hacker News late last night, I wasn&amp;#8217;t quite sure what to expect. I certainly wasn&amp;#8217;t expecting to see remote control quadracopters (flying vehicles with four rotors instead of one as in a helicopter) balancing, throwing, and catching a large pendulum with practiced precision. To my amazement though, that&amp;#8217;s exactly what I found, along with another video showing &lt;a href="http://youtu.be/3CR5y8qZf0Y"&gt;two similar quadracopters juggling a ball back and forth&lt;/a&gt; with near-unbelievable success. Merely classifying these demonstrations as absolutely amazing falls far short of the impressive work conducted by Dario Brescianini, Markus Hehn, Raffaello D&amp;#8217;Andrea, and the author of the original article Markus Waibel at the Swiss Federal Institute of Technology Zurich, but it will have to suffice.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://robohub.org/video-throwing-and-catching-an-inverted-pendulum-with-quadrocopters/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Feb 2013 10:49:19 GMT</pubDate><guid isPermaLink="true">http://robohub.org/video-throwing-and-catching-an-inverted-pendulum-with-quadrocopters/</guid></item><item><title>I'm a shut-in. This is my story.</title><link>http://fighttheurgetofade.com/</link><description>&lt;p&gt;Kenneth Erikson tells his amazing life story in an article titled &lt;em&gt;I&amp;#8217;m a shut-in. This is my story&lt;/em&gt;. No matter what I try I can&amp;#8217;t quite capture the essence of this intensely personal piece, so I will leave you with this excerpt and the strongest urging possible to set aside a good hour to read K-2052&amp;#8217;s amazing story from beginning to end.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;If you&amp;#8217;re fake for long enough you&amp;#8217;ll eventually start to fake yourself. The same tricks you pull on others you&amp;#8217;ll start to pull on yourself. And trust me, there is no better person at deceiving you than you. You know all the right things to say to make you feel good. You know all the buttons to push. You know all the quotes, phrases, logic, rationalizations and flashes of epiphany that you&amp;#8217;ll swallow hook line and sinker. You&amp;#8217;re your most deceptive foe. You could sell yourself invisible snake oil from an imaginary salesmen in an invisible desert and then congratulate yourself on your luck.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://fighttheurgetofade.com/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 22 Feb 2013 02:21:52 GMT</pubDate><guid isPermaLink="true">http://fighttheurgetofade.com/</guid></item><item><title>Stackless KD-Tree Traversal</title><link>https://blog.yiningkarlli.com/2013/02/stackless-kd-tree-traversal.html</link><description>&lt;p&gt;I have a working, reasonably optimized, speedy GPU stackless kd-tree traversal implementation! Over the past few days, I implemented the history flag-esque approach I outlined in &lt;a href="http://blog.yiningkarlli.com/2012/09/thoughts-on-stackless-kd-tree-traversal.html"&gt;this post&lt;/a&gt;, and it works quite well!&lt;/p&gt;

&lt;p&gt;The following image is a heatmap of a kd-tree built for the Stanford Dragon, showing the cost of tracing a ray through each pixel in the image. Brighter values mean more node traversals and intersection tests had to be done for that particular ray. The image was rendered entirely using Takua Render’s CUDA pathtracing engine, and took roughly 100 milliseconds to complete:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/dragon.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Feb/dragon.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…and a similar heatmap, this time generated for a scene containing two mesh cows, two mesh helixes, and some cubes and spheres in a box:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/cow.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Feb/cow.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although room for even further optimization still exists, as it always does, I am quite happy with the results so far. My new kd-tree construction system and stackless traversal system are both several orders of magnitude faster and more efficient than my older attempts.&lt;/p&gt;

&lt;p&gt;Here’s a bit of a cool image: in my OpenGL debugging view, I can now follow the kd-tree traversal for a single ray at a time and visualize the exact path and nodes encountered. This tool has been extremely useful for optimizing… without a visual debugging tool, no wonder my previous implementations had so many problems! The scene here is the same cow/helix scene, but rotated 90 degrees. The bluish green line coming in from the left is the ray, and the green boxes outline the nodes of the kd-tree that traversal had to check to get the correct intersection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/kdboxes_notree.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Feb/kdboxes_notree.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…and here’s the same image as above, but with all nodes that were skipped drawn in red. As you can see, the system is now efficient enough to cull the vast vast majority of the scene for each ray:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/kdboxes_yestree.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Feb/kdboxes_yestree.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The size of the nodes relative to the density of the geometry in their vicinity also speaks towards the efficiency of the new kd-tree construction system: empty spaces are quickly skipped through with enormous bounding boxes, whereas high density areas have much smaller bounding boxes to allow for efficient culling.&lt;/p&gt;

&lt;p&gt;Over the next day or so, I fully expect I’ll be able to reintegrate the actual pathtracing core, and have some nice images! Since the part of Takua that needed rewriting the most was the underlying scene and kd-tree system, I will be able to reuse a lot of the BRDF/emittance/etc. stuff from Takua Rev 2.&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Fri, 22 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/02/stackless-kd-tree-traversal.html</guid></item><item><title>'Futures' are a great addition to the software developer's toolkit</title><link>https://www.databasesandlife.com/futures/</link><description>&lt;p class="intro"&gt;I like things happening in parallel but which don't require mental effort thinking about synchronization and race conditions etc; i.e. where one can write code that basically looks like sequential code but is actually parallel. Futures, backed by threads, which are trivial to implement in Java, are great at this.&lt;/p&gt;
&lt;p&gt;My employee Martin&amp;rsquo;s written some code to fetch data (friends) from various connected accounts, which currently can include:&lt;/p&gt;
&lt;ul class="tight"&gt;
  &lt;li&gt;
    Facebook
  &lt;/li&gt;
  &lt;li&gt;
    XING
  &lt;/li&gt;
  &lt;li&gt;
    LinkedIn
  &lt;/li&gt;
  &lt;li&gt;
    Google Contacts
  &lt;/li&gt;
  &lt;li&gt;
    and potentially others in the future
  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These lookups could take time:&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Fri, 22 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/futures/</guid></item><item><title>Getting more out of psql (The PostgreSQL CLI)</title><link>/2013/02/21/more-out-of-psql/</link><description>&lt;p&gt;&lt;em&gt;After my last post I had a variety of readers reach out about many different tweaks they&amp;rsquo;d made to their workflows using with psql. One people &lt;a href="https://github.com/chanmix51/"&gt;Grégoire Hubert&lt;/a&gt; had a wondeful extensive list of items. Grégoire has been a freelance in web development and he has worked with Postgresql for some time now in addition to being the author of Pomm. Without further ado heres what he has to say on how he uses psql:&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="get-the-most-of-psql"&gt;
&lt;div&gt;
Get the most of psql
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Psql, the CLI postgreSQL client, is a powerful tool. Sadly, lot of developers are not aware of the features and instead look for a GUI to provide what they need. Let&amp;rsquo;s fly over what can psql do for you.&lt;/p&gt;
&lt;h2 id="feel-yourself-at-home"&gt;
&lt;div&gt;
Feel yourself at home
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;One of the most common misconception people have about CLI is «They are a poor user interface». C&amp;rsquo;mon, the CLI is &lt;strong&gt;the most efficient user interface ever&lt;/strong&gt;. There is nothing to disturb you from what you are doing and you are by far fastest without switching to your mouse all the time. Let&amp;rsquo;s see how we can configure psql at our convenience.&lt;/p&gt;
&lt;p&gt;First, you&amp;rsquo;ll have managed to choose a nice and fancy &lt;a href="http://hivelogic.com/articles/top-10-programming-fonts"&gt;terminal font&lt;/a&gt; like monofur or inconsolata. Do not underestimate the power of the font&lt;/p&gt;
&lt;p&gt;&lt;img alt="monofur font in action" src="https://public.coolkeums.org/github/power_font.png" /&gt;&lt;/p&gt;
&lt;p&gt;The nice line style shown above can be set with &lt;code&gt;\pset linestyle unicode&lt;/code&gt; and &lt;code&gt;\pset border 2&lt;/code&gt;. This is just an example of the many environment variables you can play with to get your preferred style of working out of psql.&lt;/p&gt;
&lt;p&gt;For example, I found the character ¤ the most accurate to express nullity (instead of default &lt;code&gt;NULL&lt;/code&gt;). Let&amp;rsquo;s just &lt;code&gt;\pset null ¤&lt;/code&gt; and here it is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM very_interesting_stat;
┌──────┬──────┬──────┬──────┬──────┐
│ a │ b │ c │ d │ e │
├──────┼──────┼──────┼──────┼──────┤
│ 9.06 │ ¤ │ ¤ │ ¤ │ ¤ │
│ 7.30 │ 3.55 │ 7.57 │ 3.31 │ ¤ │
│ 7.20 │ 5.08 │ ¤ │ 6.58 │ 5.90 │
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Another hugely value to get environment variables is colors in the prompt. Colors in the prompt are important because it makes easier to spot where output starts and ends between two interactions at the console. The &lt;a href="http://www.postgresql.org/docs/9.2/static/app-psql.html#APP-PSQL-PROMPTING"&gt;PROMPT1&lt;/a&gt; environment variable will even let you set an indicator to notify you are inside a transaction or not, give this a try for a sweet surprise&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\set PROMPT1 '%[%033[33;1m%]%x%[%033[0m%]%[%033[1m%]%/%[%033[0m%]%R%# '
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also like to disable the pager by default &lt;code&gt;\pset pager off&lt;/code&gt; and display the time every issued query takes &lt;code&gt;\timing&lt;/code&gt;. If you are used to psql, you may notice in the picture above, some content is wrapped. This is &lt;code&gt;\pset format wrapped&lt;/code&gt; option.&lt;/p&gt;
&lt;p&gt;Of course, writing all that on every connection would be a pain, so just write them in a &lt;code&gt;~/.psqlrc&lt;/code&gt; file, it will be sourced every time psql is launched.&lt;/p&gt;
&lt;p&gt;If you are familiar with &lt;code&gt;bash&lt;/code&gt; or other recent unix shells, you might also declare aliases in your configuration file. You can do the same with psql. For example if you want to have a query for slow queries such as from this &lt;a href="/2013/01/10/more-on-postgres-performance/"&gt;earlier post&lt;/a&gt; but not have to remember the query every time you can set it up as:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\set show_slow_queries
'SELECT
(total_time / 1000 / 60) as total_minutes,
(total_time/calls) as average_time, query
FROM pg_stat_statements
ORDER BY 1 DESC
LIMIT 100;'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, just entering &lt;code&gt;:show_slow_queries&lt;/code&gt; in your psql client will launch this query and give you the results:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; total_time | avg_time | query
------------------+------------------+------------------------------------------------------------
295.761165833319 | 10.1374053278061 | SELECT id FROM users WHERE email LIKE ?
219.138564283326 | 80.24530822355305 | SELECT * FROM address WHERE user_id = ? AND current = True
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="psql-at-your-fingertips"&gt;
&lt;div&gt;
Psql at your fingertips
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Now you have got a fancy prompt, here is the real question you ask, what can psql do for me ? and &lt;code&gt;\?&lt;/code&gt; has all of the answers. It has built-in queries to describe almost all database objects from tables to operators, indexes, triggers etc&amp;hellip; with clever auto-completion. Not only completion on tables and columns &amp;ndash; but also on aliases (sweet), &lt;strong&gt;SQL commands&lt;/strong&gt; (w00t) and database objects.&lt;/p&gt;
&lt;p&gt;Now we can enter some SQL commands. As usual, you need to check in the documentation how the heck to write this damn &lt;code&gt;ALTER TABLE&lt;/code&gt;. Relax, psql proposes inline documentation. Just enter &lt;code&gt;\h alter table&lt;/code&gt; (auto complete w00t) and you ll be ok.&lt;/p&gt;
&lt;h3 id="interacting-with-your-editor"&gt;
&lt;div&gt;
Interacting with your editor
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;psql provides two very handy commands: \e and \i. This last command sources a sql file in the client&amp;rsquo;s current session. \e edits the last command using the editor defined in the &lt;code&gt;EDITOR&lt;/code&gt; shell environment variables (aka vim). This grant you with real editor feature when it comes to writing long queries. What psql does, it saves the buffer in a temporary file and fires up the editor with that file. Once the editor is terminated, psql sources the file. Of course, you can use your editor to save queries in other places where they would be under version control, but the \e has a serious limitation: it spawns only the last query. Even if you sent several queries on the same line. (Note that \r clears psql&amp;rsquo;s last query buffer).&lt;/p&gt;
&lt;p&gt;Note: &lt;code&gt;\ef my_function&lt;/code&gt; opens stored function source code (With auto completion, I know, it&amp;rsquo;s awesome).&lt;/p&gt;
&lt;p&gt;Vim users can here benefit from Vim&amp;rsquo;s server mode. If you launch a vim specifying a server name (let&amp;rsquo; say &amp;ldquo;PSQL&amp;rdquo;) somewhere, and set the EDITOR variable as is &lt;code&gt;export EDITOR=&amp;quot;vim --servername PSQL --remote-tab-wait&lt;/code&gt; then psql will open a new tab on the running vim with the last query and run it as soon as you close this tab. Tmux or gnu/screen users will split their screen to have Vim and psql running on the same terminal window.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Vim, psql and tmux" src="https://public.coolkeums.org/github/vim_tmux.png" /&gt;&lt;/p&gt;
&lt;h3 id="call-a-friend"&gt;
&lt;div&gt;
Call a friend
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Vim power users know it is possible to pipe a buffer (or selection) directly in a program that can be &amp;hellip; psql (Using the &lt;code&gt;:w !psql&lt;/code&gt; syntax). Even from the shell, you might want to take advantage of the fantastic &lt;code&gt;\copy&lt;/code&gt; feature that loads formated file in the database (I use it to load apache logs). But always having to specify connection parameters are a hassle. Let&amp;rsquo;s use shell environment instead. Psql is sensitive to the following variables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PGDATABASE&lt;/li&gt;
&lt;li&gt;PGHOST&lt;/li&gt;
&lt;li&gt;PGPORT&lt;/li&gt;
&lt;li&gt;PGUSER&lt;/li&gt;
&lt;li&gt;PGCLUSTER (debian wrapper).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Set them once for all in you shell environment and call &lt;code&gt;psql&lt;/code&gt; to connect to the database. In case you want to skip password prompt, you can store your pass in a 600 mode access file named &lt;code&gt;.pgpass&lt;/code&gt; in your home (do not do that on shared or exposed computers). Although this is nice for development database servers, I do NOT recommend this for production servers since it should not be easy to mess with them.&lt;/p&gt;
&lt;p&gt;Resource for additional information is &amp;hellip; the man page and &lt;a href="http://www.postgresql.org/docs/9.2/static/index.html"&gt;Postgres Docs&lt;/a&gt;. All &lt;a href="http://www.postgresql.org/docs/9.2/static/index.html"&gt;PostgreSQL documentation&lt;/a&gt; is an example of what software reference documentation should be. Enjoy!&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 21 Feb 2013 22:55:56 GMT</pubDate><guid isPermaLink="true">/2013/02/21/more-out-of-psql/</guid></item><item><title>Writers Need their Freedom</title><link>https://zacs.site/blog/writers-need-their-freedom.html</link><description>&lt;p&gt;Quite some time ago I came across Jeffrey Way&amp;#8217;s article &lt;a href="http://net.tutsplus.com/articles/editorials/publishers-dont-restrict-writers/"&gt;&lt;em&gt;Publishers: Don&amp;#8217;t Restrict Writers&lt;/em&gt;&lt;/a&gt; and added it to my Instapaper queue more out of curiosity at an article posted on Nettuts+ not about programming than anything else. Nearly a month prior, I had read an article on Ben Brooks&amp;#8217; website called &lt;a href="http://brooksreview.net/2012/11/self-publishing/"&gt;&lt;em&gt;Self-Publishing&lt;/em&gt;&lt;/a&gt; in which he said something I found very interesting:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/writers-need-their-freedom.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 21 Feb 2013 20:10:49 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/writers-need-their-freedom.html</guid></item><item><title>A Writing Hiatus</title><link>https://zacs.site/blog/a-writing-hiatus.html</link><description>&lt;p&gt;Yesterday marks the tenth day since I last made a post to this site, the tenth day spent doing other things besides reading and writing in every free moment of my day; today marks the eleventh day since that last post went live, and the day I have decided to return to that lifestyle.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/a-writing-hiatus.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 21 Feb 2013 19:23:57 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/a-writing-hiatus.html</guid></item><item><title>Peeking into Linux kernel-land using /proc filesystem for quick’n’dirty troubleshooting</title><link>https://tanelpoder.com/2013/02/21/peeking-into-linux-kernel-land-using-proc-filesystem-for-quickndirty-troubleshooting/</link><description>&lt;p&gt;This blog entry is about modern Linuxes. In other words RHEL6 equivalents with 2.6.3x kernels and not the ancient RHEL5 with 2.6.18 kernel (wtf?!), which is the most common in enterprises unfortunately. And no, I’m not going to use kernel debuggers or SystemTap scripts here, just plain old “cat /proc/PID/xyz” commands against some useful /proc filesystem entries.&lt;/p&gt;
&lt;h4 id="troubleshooting-a-8220slow8221-process"&gt;Troubleshooting a “slow” process&lt;/h4&gt;
&lt;p&gt;Here’s one systematic troubleshooting example I &lt;em&gt;reproduced&lt;/em&gt; in my laptop. A DBA was wondering why their find command had been running “much slower”, without returning any results for a while. Knowing the environment, we had a hunch, but I got asked about what would be the systematic approach for troubleshooting this – &lt;em&gt;already ongoing&lt;/em&gt; – problem &lt;strong&gt;&lt;em&gt;right now&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Luckily the system was running OEL6, so had a pretty new kernel. Actually the 2.6.39 UEK2.&lt;/p&gt;
&lt;p&gt;So, let’s do some troubleshooting. First let’s see whether that &lt;em&gt;find&lt;/em&gt; process is still alive:&lt;/p&gt;
&lt;pre&gt;[root@oel6 ~]# ps -ef | grep find
root     &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;27288&lt;/strong&gt;&lt;/span&gt; 27245  4 11:57 pts/0    00:00:01 &lt;strong&gt;find . -type f&lt;/strong&gt;
root     27334 27315  0 11:57 pts/1    00:00:00 grep find&lt;/pre&gt;
&lt;p&gt;Yep it’s there – PID 27288 (I’ll use that pid throughout the troubleshooting example).&lt;/p&gt;
&lt;p&gt;Let’s start from the basics and take a quick look what’s the bottleneck for this process – if it’s not blocked by anything (for example reading everything it needs from cache) it should be 100% on CPU. If it’s bottlenecked by some IO or contention issues, the CPU usage should be lower – or completely 0%.&lt;/p&gt;
&lt;pre&gt;[root@oel6 ~]# top -cbp &lt;strong&gt;27288&lt;/strong&gt;
top - 11:58:15 up 7 days,  3:38,  2 users,  load average: 1.21, 0.65, 0.47
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2026460k total,  1935780k used,    90680k free,    64416k buffers
Swap:  4128764k total,   251004k used,  3877760k free,   662280k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
27288 root      20   0  109m 1160  844 D  &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;0.0&lt;/strong&gt;&lt;/span&gt;  0.1   0:01.11 &lt;strong&gt;find . -type f&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;Top tells me this process is either 0% on CPU or very close to zero percent (so it gets rounded to 0% in the output). There’s an important difference though, as a process that is completely stuck, not having a chance of getting onto CPU at all vs. a process which is getting out of its wait state every now and then (for example some polling operation times out every now and then and thee process chooses to go back to sleep). So, top on Linux is not a good enough tool to show that difference for sure – but at least we know that this process is not burning serious amounts of CPU time.&lt;/p&gt;
&lt;p&gt;Let’s use something else then. Normally when a process seems to be stuck like that (0% CPU usually means that the process is stuck in some blocking system call – which causes the kernel to put the process to sleep) I run &lt;code&gt;strace&lt;/code&gt; on that process to trace in which system call the process is currently stuck. Also if the process is actually not completely stuck, but returns from a system call and wakes up briefly every now and then, it would show up in strace (as the blocking system call would complete and be entered again a little later):&lt;/p&gt;
&lt;pre&gt;[root@oel6 ~]# strace -cp 27288
Process 27288 attached - interrupt to quit

&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;^C
^Z&lt;/strong&gt;&lt;/span&gt;
[1]+  Stopped                 strace -cp 27288

[root@oel6 ~]# kill -9 %%
[1]+  Stopped                 strace -cp 27288
[root@oel6 ~]# 
[1]+  Killed                  strace -cp 27288&lt;/pre&gt;
&lt;p&gt;Oops, the strace command itself got hung too! It didn’t print any output for a long time and didn’t respond to CTRL+C, so I had to put it into background with CTRL+Z and kill it from there. So much for easy diagnosis.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Thu, 21 Feb 2013 16:46:48 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/02/21/peeking-into-linux-kernel-land-using-proc-filesystem-for-quickndirty-troubleshooting/</guid></item><item><title>Writing RADOS object class handlers in Lua</title><link>https://makedist.com/posts/2013/02/21/writing-rados-object-class-handlers-in-lua/</link><description>Pushing down computations into the Ceph distributed storage system with Lua.</description><author>Noah Watkins</author><pubDate>Thu, 21 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://makedist.com/posts/2013/02/21/writing-rados-object-class-handlers-in-lua/</guid></item><item><title>Automatic hiera lookups in puppet 3.x</title><link>https://purpleidea.com/blog/2013/02/20/automatic-hiera-lookups-in-puppet-3-x/</link><description>&lt;p&gt;Dear readers,&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve started the slow migration of code from puppet 2.6 all the way to 3.x+. There were a few things I wasn&amp;rsquo;t clear on, so hopefully this will help to discuss these and make your migration easier!&lt;/p&gt;
&lt;p&gt;I used hiera in 2.6, and I actually like it a lot so far. I was concerned that automatic lookups would pull in values that I wasn&amp;rsquo;t expecting. This is not the case or a worry. Let&amp;rsquo;s dive in and let the code speak:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Wed, 20 Feb 2013 02:43:35 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/02/20/automatic-hiera-lookups-in-puppet-3-x/</guid></item><item><title>Apache commons for readability</title><link>https://www.craigpardey.com/post/2013-02-20-apache-commons-for-readability/</link><description>&lt;p&gt;There are many short methods in the &lt;a href="http://commons.apache.org/lang/api-release/index.html"&gt;Apache
Commons&lt;/a&gt; libraries that
seem like overkill at first glance, however, their purpose becomes more
apparent when you examine the effect that these methods have on the
readability of the caller.&lt;/p&gt;
&lt;p&gt;I see a lot of code that does stuff like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if( s == null || &amp;quot;&amp;quot;.equals(s.trim())) {  
	// Do something  
}  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;which could be re-written as&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if( StringUtils.isBlank(s)) {  
	// Do something  
}  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Personally, I find it much easier to understand the intent of the second
version.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Wed, 20 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-02-20-apache-commons-for-readability/</guid></item><item><title>Erlang Profiling Tips</title><link>https://srijan.ch/erlang-profiling-tips</link><description>Some erlang profiling tips / tools I've come across</description><author>Srijan Choudhary, all posts</author><pubDate>Wed, 20 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://srijan.ch/erlang-profiling-tips</guid></item><item><title>Remove keys from a list of dicts in Python</title><link>https://blog.nobugware.com/post/2013/02/19/remove-keys-from-a-list-of-dicts-in-python/</link><description>I often have this need to remove some keys from a list of dict, like cleaning it before passing it.
Comment on Gist</description><author>Fabrice Aneche</author><pubDate>Tue, 19 Feb 2013 22:53:12 GMT</pubDate><guid isPermaLink="true">https://blog.nobugware.com/post/2013/02/19/remove-keys-from-a-list-of-dicts-in-python/</guid></item><item><title>Hello Again, World!</title><link>https://www.anmolsarma.in/post/hello-again-world/</link><description>&lt;p&gt;Here it goes again: After a couple of attempts with Blogger, a dozen iterations with WordPress, a very brief tryst with Drupal and a false start with Bloggart, I’ve now decided to ditch dynamic content management systems and give Octopress a spin.&lt;/p&gt;
&lt;p&gt;I like the idea of a statically generated site I can deploy anywhere. I used Sphinx for a documentation once and the experience with was pretty good. However, getting Sphinx to work for a personal blog seemed to be too much work, so Octopress it is. So far I’m really happy with Octopress and with minimal tweaking, I have all the functionality I need. Hopefully, I will stick with it and actually blog this time around. Fingers crossed!&lt;/p&gt;</description><author>Anmol Sarma</author><pubDate>Tue, 19 Feb 2013 19:59:29 GMT</pubDate><guid isPermaLink="true">https://www.anmolsarma.in/post/hello-again-world/</guid></item><item><title>Mr. Nobody</title><link>https://olshansky.info/movie/mr._nobody/</link><description>Olshansky's review of Mr. Nobody</description><author>🦉 olshansky 🦁</author><pubDate>Tue, 19 Feb 2013 03:28:11 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/mr._nobody/</guid></item><item><title>Always Use a "default" Clause in a "switch" Statement</title><link>https://www.databasesandlife.com/always-use-a-default-clause-in-a-switch-statement/</link><description>&lt;p&gt;The following [question](&lt;a href="http://stackoverflow.com/questions/4649423/should-switch-statements-always-contain-a-default-clause/4649518#4649518%22" rel="noopener noreferrer" target="_blank"&gt;http://stackoverflow.com/questions/4649423/should-switch-statements-always-contain-a-default-clause/4649518#4649518"&lt;/a&gt; target=&amp;quot;_blank&amp;quot;&amp;gt;http://stackoverflow.com/questions/4649423/should-switch-statements-always-contain-a-default-clause/4649518) was asked on Stack Overflow:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I was told that it&amp;rsquo;s good practice to include a default clause in all switch statements. I recently remembered this advice but can&amp;rsquo;t remember what the justification was.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Things can and do go wrong. Values will not be what you expect, and so on. To quote the old computer science motto: &lt;a href="http://www.murphys-laws.com/murphy/murphy-laws.html" rel="noopener noreferrer" target="_blank"&gt;If it can go wrong, it will&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Not wanting to include a default clause implies you are confident that you know the set of possible values. If that&amp;rsquo;s the case, then a value which isn&amp;rsquo;t one of them indicates an error somewhere. And if that&amp;rsquo;s the case, you&amp;rsquo;d certainly want to be informed about it.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Tue, 19 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/always-use-a-default-clause-in-a-switch-statement/</guid></item><item><title>Even more Snapper – v4.03 now works in SQL Developer too!</title><link>https://tanelpoder.com/2013/02/18/even-more-snapper-v4-03-now-works-in-sql-developer-too/</link><description>&lt;p&gt;If you already downloaded snapper v4, then better &lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/snapper.sql" target="_blank"&gt;re-download it again&lt;/a&gt; as the v4.03 also runs in SQL Developer!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tanelpoder.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-19-at-1.02.13-AM.png"&gt;&lt;img alt="Snapper 4 inside SQL Developer" class="alignnone size-full wp-image-1891" height="713" src="https://tanelpoder.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-19-at-1.02.13-AM.png?resize=800%2C713" width="800" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You might also want to check &lt;a href="http://www.thatjeffsmith.com/archive/2012/05/enabling-dbms_output-by-default-in-sql-developer/" target="_blank"&gt;how to enable the DBMS_OUTPUT display in SQL Developer&lt;/a&gt; post by “That” Jeff Smith :-)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href="http://twitter.com/nlitchfield" target="_blank"&gt;Niall Litchfield&lt;/a&gt; pointed out that the “set serverout on” command was ignored on SQL Developer because I was using the short syntax (server&lt;strong&gt;out&lt;/strong&gt; instead of server&lt;strong&gt;output&lt;/strong&gt;). Once I changed this, the SQL Developer doesn’t print the warning anymore and there’s no need to explicitly open up the separate DBMS_OUTPUT. I have uploaded Snapper v4.04 with this fix included. Thanks Niall!&lt;/em&gt;&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Tue, 19 Feb 2013 01:21:54 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/02/18/even-more-snapper-v4-03-now-works-in-sql-developer-too/</guid></item><item><title>Manual “before” and “after” snapshot support in Snapper v4</title><link>https://tanelpoder.com/2013/02/18/manual-before-and-after-snapshot-support-in-snapper-v4/</link><description>&lt;p&gt;Snapper used to require access to DBMS_LOCK, so it could sleep for X seconds between the “before” and “after” performance data snapshots. Now it is possible to get away without using DBMS_LOCK. Instead you will run Snapper twice, once for taking the “before” snapshot, then run your workload and then run Snapper again for taking the “after” snapshot and print the output.&lt;/p&gt;
&lt;p&gt;So, the usual way of running snapper is this:&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Tue, 19 Feb 2013 00:10:18 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/02/18/manual-before-and-after-snapshot-support-in-snapper-v4/</guid></item><item><title>Snapper v4.02 and the Snapper launch party video</title><link>https://tanelpoder.com/2013/02/18/snapper-v4-02-and-the-snapper-launch-party-video/</link><description>&lt;p&gt;I have fixed most of the bugs that showed up during the Snapper launch party session and uploaded the new version (v4) of Snapper here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="line-height: 13px;"&gt;&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/snapper.sql" rel="noopener" target="_blank"&gt;&lt;a href="https://github.com/tanelpoder/tpt-oracle/blob/master/snapper.sql"&gt;https://github.com/tanelpoder/tpt-oracle/blob/master/snapper.sql&lt;/a&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have uploaded some of my videos to &lt;a href="https://www.youtube.com/tanelpoder" rel="noopener" target="_blank"&gt;&lt;a href="https://www.youtube.com/tanelpoder"&gt;https://www.youtube.com/tanelpoder&lt;/a&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=qQZmH6YvSjo" rel="noopener" target="_blank"&gt;&lt;span style="line-height: 13px;"&gt;Snapper &amp;amp; Ashtop Overview&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=j9_J4ei7Q3g" rel="noopener" target="_blank"&gt;&lt;span style="line-height: 13px;"&gt;Snapper v4 Launch Party video (old)&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have not updated the snapper documentation yet, but here are the main improvements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;RAC support (query remote instance&amp;rsquo;s sessions performance data via GV$)&lt;/li&gt;
&lt;li&gt;Manually specified &amp;ldquo;before and after&amp;rdquo; snapshot support. No need to use DBMS_LOCK to sleep for a certain number of seconds between snapshots&lt;/li&gt;
&lt;li&gt;Useful averages in the right side of the output (e.g. average bytes sent/received per roundtrip etc). I will keep adding new averages over the coming weeks.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="rac-support"&gt;RAC support&lt;/h4&gt;
&lt;p&gt;I have kept the syntax backwards-compatible, so when you run Snapper like this &amp;hellip;&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Mon, 18 Feb 2013 23:07:00 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/02/18/snapper-v4-02-and-the-snapper-launch-party-video/</guid></item><item><title>Argo</title><link>https://olshansky.info/movie/argo/</link><description>Olshansky's review of Argo</description><author>🦉 olshansky 🦁</author><pubDate>Mon, 18 Feb 2013 12:47:58 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/argo/</guid></item><item><title>HtmlToWord</title><link>https://tomforb.es/blog/htmltoword/</link><description>You can find the code here on github and the package here on PyPi I have written and continue to maintain a reporting system for a group of pentesters. During/after the tests the results and details are inputted into a web application using a WYSIWYG editor called Redactor (which is pretty awesome!)...</description><author>Tom Forbes</author><pubDate>Mon, 18 Feb 2013 07:38:08 GMT</pubDate><guid isPermaLink="true">https://tomforb.es/blog/htmltoword/</guid></item><item><title>Annual report number 8: My Success</title><link>https://www.jimwestergren.com/annual-report-number-8-my-success/</link><description>Back in December of 2004 I started a new life from zero. I was 22 years old without any money, education or connections. I borrowed my mothers computer and started to learn HTML and internet marketing. That is now 8 years ago and each year I publish an annual report. Earlier reports are linked from &amp;#91;...&amp;#93;</description><author>Jim Westergren</author><pubDate>Sun, 17 Feb 2013 00:39:00 GMT</pubDate><guid isPermaLink="true">https://www.jimwestergren.com/annual-report-number-8-my-success/</guid></item><item><title>Revision 3 KD-Tree/ObjCore</title><link>https://blog.yiningkarlli.com/2013/02/revision-3-kd-treeobjcore.html</link><description>&lt;p&gt;The one piece of Takua Render that I’ve been proudest of so far has been the KD-Tree and obj mesh processing systems that I built. So of course, over the past week I completely threw away the old versions of KdCore and ObjCore and totally rewrote new versions entirely from scratch. The motive behind this rewrite came mostly from the fact that over the past year, I’ve learned a lot more about KD-Trees and programming in general; as a result, I’m pleased to report that the new versions of KdCore and ObjCore are significantly faster and more memory efficient than previous versions. KdCore3 is now able to process a million objects into an efficient, optimized KD-Tree with a depth of 20 and a minimum of 5 objects per leaf node in roughly one second.&lt;/p&gt;

&lt;p&gt;Here’s my kitchen scene, exported to Takua Render’s AvohkiiScene format, and processed through KdCore3. White lines are the wireframe lines for the geometry itself, red lines represent KD-Tree node boundaries:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/kitchen_kd_wireframe.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Feb/kitchen_kd_wireframe.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…and the same image as above, but with only the KD-Tree. You can use the lightbox to switch between the two images for comparisons:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/kitchen_kd.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Feb/kitchen_kd.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the most noticeable improvements in KdCore3 over KdCore2, aside from the speed increases, is in how KdCore3 manages empty space. In the older versions of KdCore, empty space was often repeatedly split into multiple nodes, meaning that ray traversal through empty space was very inefficient, since repeated intersection tests would be required only for a ray to pass through the KD-Tree without actually hitting anything. The images in &lt;a href="http://blog.yiningkarlli.com/2012/06/more-kd-tree-fun.html"&gt;this old post&lt;/a&gt; demonstrate what I mean. The main source of this problem came from how splits were being chosen in KdCore2; in KdCore2, the chosen split was the lowest cost split regardless of axis. As a result, splits were often chosen that resulted in long, narrow nodes going through empty space. In KdCore3, the best split is chosen as the lowest cost split on the longest axis of the node. As a result, empty space is culled much more efficiently.&lt;/p&gt;

&lt;p&gt;Another major change to KdCore3 is that the KD-Tree is no longer built recursively. Instead, KdCore3 builds the KD-Tree layer by layer through an iterative approach that is well suited for adaptation to the GPU. Instead of attempting to guess how deep to build the KD-Tree, KdCore3 now just takes a maximum depth from the user and builds the tree no deeper than the given depth. The entire tree is also no longer stored as a series of nodes with pointers to each other, but instead all nodes are stored in a flat array with a clever indexing scheme to allow nodes to implicitly know where their parent and child nodes are within the array. Furthermore, instead of building as a series of nodes with pointers, the tree builds directly into the array format. This array storage format again makes KdCore3 more suitable to a GPU adaptation, and also makes serializing the Kd-Tree out to disk significantly easier for memory caching purposes.&lt;/p&gt;

&lt;p&gt;Another major change is how split candidates are chosen; in KdCore2, the candidates along each axis were the median of all contained object center-points, the middle of the axis, and some randomly chosen candidates. In KdCore3, the user can specify a number of split candidates to try along each axis, and then KdCore3 will simply divide each axis into that number of equally spaced points and use those points as candidates. As a result, KdCore3 is far more efficient than KdCore2 at calculating split candidates, can often find a better candidate with more deterministic results due to the removal of random choices, and offers the user more control over the quality of the final split.&lt;/p&gt;

&lt;p&gt;The following series of images demonstrate KD-Trees built by KdCore3 for the Stanford Dragon with various settings. Again, feel free to use the lightbox for comparisons.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level02.png"&gt;&lt;img alt="Max depth 2, min objects per node 20, min volume .0001% of whole tree" src="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level02.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level05.png"&gt;&lt;img alt="Max depth 5, min objects per node 20, min volume .0001% of whole tree" src="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level05.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level10.png"&gt;&lt;img alt="Max depth 10, min objects per node 20, min volume .0001% of whole tree" src="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level10.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level15.png"&gt;&lt;img alt="Max depth 15, min objects per node 20, min volume .0001% of whole tree" src="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level15.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level20.png"&gt;&lt;img alt="Max depth 20, min objects per node 20, min volume .0001% of whole tree" src="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level20.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level20_2.png"&gt;&lt;img alt="Max depth 20, min objects per node 5, min volume .0001% of whole tree" src="https://blog.yiningkarlli.com/content/images/2013/Feb/dragonkd_level20_2.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;KdCore3 is also capable of figuring out when the number of nodes in the tree makes traversing the tree more expensive than brute force intersection testing all of the objects in the tree, and will stop tree construction beyond that point. I’ve also given KdCore3 an experiment method for finding best splits based on a semi-Monte-Carlo approach. In this mode, instead of using evenly split candidates, KdCore3 will make three random guesses, and then based on the relative costs of the guesses, begin making additional guesses with a probability distribution weighted towards where ever the lower relative cost is. With this approach, KdCore3 will eventually arrive at the absolute optimal cost split, although getting to this point may take some time. The number of guesses KdCore3 will attempt can be limited by the user, of course.&lt;/p&gt;

&lt;p&gt;Finally, another one of the major improvements I made in KdCore3 was simply better use of C++. Over the past two years, my knowledge of how to write fast, effective C++ has evolved immensely, and I now write code very differently than how I did when I wrote KdCore2 and KdCore1. For example, KdCore3 avoids relying on class inheritance and virtual method table lookup (KdCore2 relied on inheritance quite heavily). Normally, virtual method lookup doesn’t add a noticeable amount of execution time to a single virtual method, but when repeated for a few million objects, the slowdown becomes extremely apparent. In talking with my friend Robert Mead, I realized that virtual method table lookup in almost, if not all implementations today necessarily means a minimum of three pointer lookups in memory to find a function, whereas a direct function call is a single pointer lookup.&lt;/p&gt;

&lt;p&gt;If I have time to later, I’ll post some benchmarks of KdCore3 versus KdCore2. However, for now, here’s a final pair of images showcasing a scene with highly variable density processed through KdCore3. Note the keavy amount of nodes clustered where large amounts of geometry exist, and the near total emptyness of the KD-Tree in areas where the scene is sparse:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/scene_kd_wireframe.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Feb/scene_kd_wireframe.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/scene_kd.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Feb/scene_kd.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up: implementing some form of highly efficient stackless KD-Tree traversal, possibly even using that &lt;a href="http://blog.yiningkarlli.com/2012/09/thoughts-on-stackless-kd-tree-traversal.html"&gt;history based approach I wrote about before&lt;/a&gt;!&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Fri, 15 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/02/revision-3-kd-treeobjcore.html</guid></item><item><title>Laptops Come With Android</title><link>https://www.databasesandlife.com/android-on-a-laptop/</link><description>&lt;p&gt;&lt;img src="https://www.databasesandlife.com/20130215-laptop-android.jpg" style="float: right; padding-left: 30px; padding-bottom: 15px;" /&gt;My mate has given me a laptop (which in itself is a strange occurrence, but that&amp;rsquo;s not the subject of this blog entry). It comes with two OSs, which you can choose from at boot:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Android&lt;/li&gt;
&lt;li&gt;Windows 7&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I mean, sure enough, this Acer Aspire netbook literally runs Android. But the hardware is different from any other device I&amp;rsquo;ve used Android on in the following respects:&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Fri, 15 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/android-on-a-laptop/</guid></item><item><title>My developer tools (Mobile)</title><link>https://blog.nobugware.com/post/2013/02/14/my-developer-tools/</link><description>As a day to day Python and iOS developer, I&amp;rsquo;m using a lot of tools on my Mac, here is a list that could help you too.
Textmate 2, Free, it&amp;rsquo;s funny to see that most people don&amp;rsquo;t know Textmate 2 is open source and totally free, this is a wonderful editor with completion and support for most languages.
SublimeText 2, free/pay, I&amp;rsquo;ve switched to Sublime mostly for the Golang support with Gosublime and not regreting it.</description><author>Fabrice Aneche</author><pubDate>Fri, 15 Feb 2013 01:20:35 GMT</pubDate><guid isPermaLink="true">https://blog.nobugware.com/post/2013/02/14/my-developer-tools/</guid></item><item><title>Drilling Deep Into Exadata Performance with ASH, SQL Monitoring and Exadata Snapper – slides and a hacking session!</title><link>https://tanelpoder.com/2013/02/14/drilling-deep-into-exadata-performance-with-ash-sql-monitoring-and-exadata-snapper-slides-and-a-hacking-session/</link><description>&lt;p&gt;The promised hacking session about Exadata performance troubleshooting will happen on &lt;strong&gt;Thursday 21st February 9am-11am PST&lt;/strong&gt; (2 hours). I will show a number of examples and demos where the Exadata Snapper shows what was going on in storage cells when running Smart Scans or just doing IO.&lt;/p&gt;
&lt;p&gt;Register here (free stuff!):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="line-height: 13px;"&gt;&lt;a href="https://www1.gotomeeting.com/register/270528161"&gt;https://www1.gotomeeting.com/register/270528161&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Slides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tanelpoder.com/files/Tanel_Poder_Drilling_Deep_Into_Exadata_Performance.pdf" target="_blank"&gt;/files/Tanel_Poder_Drilling_Deep_Into_Exadata_Performance.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I will post the scripts on the day of this session.&lt;/p&gt;
&lt;p&gt;Note that you should read through the slides before the hacking session – as I’m not going to spend much time on presenting slides, as the name says – it’s a hacking session, so 95% demos. I will show a couple of important slides which explain the essence of Exadata Snapper (check slide 17, 21, 22), but otherwise it’s all demos.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Fri, 15 Feb 2013 01:04:04 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/02/14/drilling-deep-into-exadata-performance-with-ash-sql-monitoring-and-exadata-snapper-slides-and-a-hacking-session/</guid></item><item><title>Troubleshooting high CPU usage with poor-man’s stack profiler – in a one-liner!</title><link>https://tanelpoder.com/2013/02/14/troubleshooting-high-cpu-usage-with-poor-mans-stack-profiler-in-a-one-liner/</link><description>&lt;p&gt;Here’s an example of a quick’n’dirty way of profiling stack traces on your command line. This is an example from Solaris (but the script should work on Linux too plus other Unixes with minor modifications).&lt;/p&gt;
&lt;p&gt;I created a problem case below, based on a case I once troubleshooted at a client site. Note that they had set optimizer_mode = FIRST_ROWS in their database and the optimized came up with a very inefficient execution plan for the select from DBA_LOCK_INTERNAL view below:&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; ALTER SESSION SET &lt;strong&gt;optimizer_mode = FIRST_ROWS&lt;/strong&gt;;

Session altered.

SQL&amp;gt; SET TIMING ON

SQL&amp;gt; &lt;strong&gt;SELECT * FROM dba_lock_internal&lt;/strong&gt;;
...
... &lt;em&gt;the output data stripped ...&lt;/em&gt;
...

927 rows selected.

Elapsed: 00:&lt;strong&gt;23:27.14&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;It took over 23 minutes to return 927 rows from DBA_LOCK_INTERNAL!&lt;/p&gt;
&lt;p&gt;I ran Snapper to see where the time is spent then:&lt;/p&gt;
&lt;pre&gt;SQL&amp;gt; @&lt;strong&gt;snapper4&lt;/strong&gt; all 5 1 222
Sampling SID 222 with interval 5 seconds, taking 1 snapshots...

-- Session Snapper v4.00 BETA - by Tanel Poder (  ) - Enjoy the Most Advanced Oracle Troubleshooting Script on the Planet! :)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    SID, USERNAME  , TYPE, STATISTIC                                                 ,         DELTA, HDELTA/SEC,    %TIME, GRAPH       , NUM_WAITS,  WAITS/SEC,   AVERAGES
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    222, SYS       , STAT, non-idle wait count                                       ,             1,        .19,         ,             ,          ,           ,          ~ per execution
    222, SYS       , TIME, DB CPU                                                    ,       6028084,      1.17s,   117.2%, [@@@@@@@@@@],          ,           ,
    222, SYS       , TIME, sql execute elapsed time                                  ,       6032677,      1.17s,   117.3%, [##########],          ,           ,
    222, SYS       , TIME, DB time                                                   ,       6032677,      1.17s,   117.3%, [##########],          ,           ,          ~ unaccounted time
    222, SYS       , WAIT, library cache: mutex X                                    ,             6,     1.17us,      .0%, [          ],         1,        .19,        6us average wait

--  End of Stats snap 1, end=2013-02-14 21:30:45, seconds=5.1

---------------------------------------------------------------------------------------------
Active% | SQL_ID          | SQL_CHILD | EVENT                               | WAIT_CLASS
---------------------------------------------------------------------------------------------
   &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;100%&lt;/strong&gt;&lt;/span&gt; | c884zcqpv9y5h   | 0         | &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;ON CPU&lt;/strong&gt;&lt;/span&gt;                              | ON CPU

--  End of ASH snap 1, end=2013-02-14 21:30:45, seconds=5, samples_taken=50&lt;/pre&gt;
&lt;p&gt;The query is apparently 100% on CPU with no significant waits. Normally I would expect some other metrics to pop up in snapper output in such high-CPU cases, like thousands of &lt;code&gt;session logical reads&lt;/code&gt; per second, &lt;code&gt;sorts (rows)&lt;/code&gt; showing millions of rows sorted per second or &lt;code&gt;parse count (hard)&lt;/code&gt; number in hundreds or thousands per second. These are the “usual suspects”.&lt;/p&gt;
&lt;p&gt;But this time none of these additional metrics were incremented by the session. So it’s time to systematically drill down by other means.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Thu, 14 Feb 2013 23:12:04 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/02/14/troubleshooting-high-cpu-usage-with-poor-mans-stack-profiler-in-a-one-liner/</guid></item><item><title>Switch from 'Entity Framework Linq' to 'Linq to Objects' with AsEnumerable</title><link>https://daniellittle.dev/ef-linq-as-emumerable</link><description>Most people know what when writing a Linq query with Entity Framework that until that query is enumerated it won't call out to the database…</description><author>Daniel Little Dev</author><pubDate>Thu, 14 Feb 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/ef-linq-as-emumerable</guid></item><item><title>How I work with Postgres – psql, My PostgreSQL Admin</title><link>/2013/02/13/How-I-Work-With-Postgres/</link><description>&lt;p&gt;On at least a weekly basis and not uncommonly multiple times in a single week I get this question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://twitter.com/neilmiddleton"&gt;@neilmiddleton&lt;/a&gt;
I&amp;rsquo;ve been hunting for a nice PG interface that works within other things. PGAdmin kinda works, except the SQL editor is a piece of shit&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sometimes it leans more to, what is the Sequel Pro equivilant for Postgres. My default answer is I just use psql, though I do have to then go on to explain how I use it. For those just interested you can read more below or just get the highlights here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set your default &lt;code&gt;EDITOR&lt;/code&gt; then use \e&lt;/li&gt;
&lt;li&gt;On postgres 9.2 and up &lt;code&gt;\x auto&lt;/code&gt; is your friend&lt;/li&gt;
&lt;li&gt;Set history to unlimited&lt;/li&gt;
&lt;li&gt;&lt;code&gt;\d&lt;/code&gt; all the things&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before going into detail on why psql works perfectly fine as an interface I want to rant for a minute about what the problems with current editors are and where I expect them to go in the future. First this is not a knock on the work thats been done on previous ones, for their time PgAdmin, phpPgAdmin, and others were valuable tools, but we&amp;rsquo;re coming to a point where theres a broader set of users of databases than ever before and empowering them is becoming ever more important.&lt;/p&gt;
&lt;p&gt;Empowering developers, DBA&amp;rsquo;s, product people, marketers and others to be comfortable with their database will lead to more people taking advantage of whats in their data. &lt;a href="/2013/01/10/more-on-postgres-performance/"&gt;pg_stat_statements&lt;/a&gt; was a great start to this laying a great foundation for valuable information being captured. Even with all of the powerful stats being captured in the statistics of PostgreSQL so many are still terrified when they see something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Hash Join (cost=4.25..8.62 rows=100 width=107) (actual time=0.126..0.230 rows=100 loops=1)
Hash Cond: (purchases.user_id = users.id)
-&amp;gt; Seq Scan on purchases (cost=0.00..3.00 rows=100 width=84) (actual time=0.012..0.035 rows=100 loops=1)
-&amp;gt; Hash (cost=3.00..3.00 rows=100 width=27) (actual time=0.097..0.097 rows=100 loops=1)
Buckets: 1024 Batches: 1 Memory Usage: 6kB
-&amp;gt; Seq Scan on users (cost=0.00..3.00 rows=100 width=27) (actual time=0.007..0.042 rows=100 loops=1)
Total runtime: 0.799 ms
(7 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Empowering more developers by surfacing this information in a digestable form, such as building on top of &lt;code&gt;pg_stat_statements&lt;/code&gt; tools such as &lt;a href="http://datascope.heroku.com"&gt;datascope&lt;/a&gt; by &lt;a href="http://www.twitter.com/leinweber"&gt;@leinweber&lt;/a&gt; and getting this to be part of the default admin we will truly begin empowering a new set of user.&lt;/p&gt;
&lt;p&gt;But enough of a detour, those tools aren&amp;rsquo;t available today. If you&amp;rsquo;re interested in helping build those to make the community better please reach out. For now I live in a work where I&amp;rsquo;m quite content with simple ole &lt;code&gt;psql&lt;/code&gt; here&amp;rsquo;s how:&lt;/p&gt;
&lt;h3 id="editor"&gt;
&lt;div&gt;
Editor
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Ensuring you&amp;rsquo;ve exported your preferred editor to the environment variable &lt;code&gt;EDITOR&lt;/code&gt; when you run \e it will allow you to view and edit your last run query in your editor of choice. This works for vim, emacs, or even sublime text.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export EDITOR=subl
psql
\e
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Gives me:&lt;/p&gt;
&lt;p&gt;&lt;img alt="sublime text" src="https://f.cl.ly/items/2I0f3M0B1T3k0d290v3k/Screenshot_2_12_13_9_58_AM.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note you need to make sure you connect with psql and have your editor set, once you do that saving and exiting the file will then execute the query&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="x-auto"&gt;
&lt;div&gt;
\x auto
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;psql has long had a method of formatting output. You can toggle this on and off easily by just running the &lt;code&gt;\x&lt;/code&gt; command. Running a basic query you get the output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT *
FROM users
LIMIt 1;
id | first_name | last_name | email | data | created_at | updated_at | last_login
----+------------+-----------+----------------------------+------------+---------------------+---------------------+---------------------
1 | Rosemary | Wassink | Rosemary.Wassink@yahoo.com | &amp;quot;sex&amp;quot;=&amp;gt;&amp;quot;F&amp;quot; | 2010-07-01 18:16:00 | 2011-05-14 11:47:00 | 2011-06-07 23:04:00
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With toggling the output and re-running the same query we can see how its now formatted:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\x
Expanded display is on.
craig=# SELECT * from users limit 1;
-[ RECORD 1 ]--------------------------
id | 1
first_name | Rosemary
last_name | Wassink
email | Rosemary.Wassink@yahoo.com
data | &amp;quot;sex&amp;quot;=&amp;gt;&amp;quot;F&amp;quot;
created_at | 2010-07-01 18:16:00
updated_at | 2011-05-14 11:47:00
last_login | 2011-06-07 23:04:00
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using &lt;code&gt;\x auto&lt;/code&gt; will automatically put this in what Postgres believes is the most intelligible format to read it in.&lt;/p&gt;
&lt;h3 id="psql-history"&gt;
&lt;div&gt;
psql history
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Hopefully this needs no justification&amp;hellip; having an unlimited history of all your queries is incredibly handy. Ensuring you set the following environment variables will ensure you never lose that query you ran several months ago again:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export HISTFILESIZE=
export HISTSIZE=
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="d"&gt;
&lt;div&gt;
\d
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;And while the last on the list one of the first things I do when connecting to any database is check out whats in it. I don&amp;rsquo;t do this by running a bunch of queries but rather checking out the schema and then poking at definitions of specific tables. &lt;code&gt;\d&lt;/code&gt; and variations on it are incredibly handy for this. Here&amp;rsquo;s a few highlights below:&lt;/p&gt;
&lt;p&gt;Listing all relations with simply &lt;code&gt;\d&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\d
List of relations
Schema | Name | Type | Owner
--------+------------------+---------------+-------
public | products | table | craig
public | products_id_seq | sequence | craig
public | purchases | table | craig
public | purchases_id_seq | sequence | craig
public | redis_db0 | foreign table | craig
public | users | table | craig
public | users_id_seq | sequence | craig
(7 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;List only all tables with &lt;code&gt;dt&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\dt
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+-------
public | products | table | craig
public | purchases | table | craig
public | users | table | craig
(3 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Describe a specific relation with &lt;code&gt;\d RELATIONNAMEHERE&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\d users
Table &amp;quot;public.users&amp;quot;
Column | Type | Modifiers
------------+-----------------------------+----------------------------------------------------
id | integer | not null default nextval('users_id_seq'::regclass)
first_name | character varying(50) |
last_name | character varying(50) |
email | character varying(255) |
data | hstore |
created_at | timestamp without time zone |
updated_at | timestamp without time zone |
last_login | timestamp without time zone |
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;One more pro-tip if you&amp;rsquo;re running a transaction with many tables and forget which are involved in it you can run &amp;lsquo;\d *transaction*&amp;rsquo; and it&amp;rsquo;ll display tables curently affected.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Have a tool you prefer, have something you use daily in psql that I missed, or interested in helping create a new admin experience please reach out and lets talk craig.kerstiens at gmail.com&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 13 Feb 2013 22:55:56 GMT</pubDate><guid isPermaLink="true">/2013/02/13/How-I-Work-With-Postgres/</guid></item><item><title>This blog is now running on Google App Engine</title><link>https://blog.nobugware.com/post/2013/02/12/this-blog-is-now-running-on-google-app-engine/</link><description>After 6 years of existence, where this blog was self hosted, it&amp;rsquo;s now running on Google App Engine with webapp2 Python framework.
It was previously a Django application, but no code has been reused, it&amp;rsquo;s a total rewrite (approx 5 hours).
The Google App Engine ecosystem is very good, all the tools are efficient and except a middle quality documentation, it was a pleasure to rewrite and transfer this blog.</description><author>Fabrice Aneche</author><pubDate>Wed, 13 Feb 2013 02:59:31 GMT</pubDate><guid isPermaLink="true">https://blog.nobugware.com/post/2013/02/12/this-blog-is-now-running-on-google-app-engine/</guid></item><item><title>Haskell vs Clojure syntax</title><link>https://honza.pokorny.ca/2013/02/haskell-vs-clojure-syntax/</link><description>&lt;p&gt;Clojure has virtually zero syntax.  What I mean by that is that all structures
look the same: the first item in a list is the function and the rest are the
arguments.  This is true for variable assignment, if statements, data
structures and functions themselves.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-clojure"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;+ &lt;/span&gt;&lt;span style="color: #b48ead;"&gt;1&lt;/span&gt; &lt;span style="color: #b48ead;"&gt;2&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;defn &lt;/span&gt;greet &lt;span style="color: #eceff4;"&gt;[&lt;/span&gt;name&lt;span style="color: #eceff4;"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;str &lt;/span&gt;&lt;span style="color: #a3be8c;"&gt;"Hello "&lt;/span&gt; name&lt;span style="color: #eceff4;"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;def &lt;/span&gt;user-count &lt;span style="color: #b48ead;"&gt;334&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, before you can do anything useful in Haskell, you must learn all kinds
of crazy syntax: function definitions, pattern matching, do forms, functors,
monads, typeclasses, &amp;hellip;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-haskell"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;*&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;&amp;lt;$&amp;gt;&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;Just&lt;/span&gt; &lt;span style="color: #b48ead;"&gt;2&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;&amp;lt;*&amp;gt;&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;Just&lt;/span&gt; &lt;span style="color: #b48ead;"&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1;"&gt;Nothing&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span style="color: #88c0d0;"&gt;\&lt;/span&gt;x &lt;span style="color: #81a1c1; font-weight: bold;"&gt;-&amp;gt;&lt;/span&gt; return &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;x&lt;span style="color: #81a1c1;"&gt;*&lt;/span&gt;&lt;span style="color: #b48ead;"&gt;10&lt;/span&gt;&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #81a1c1; font-weight: bold;"&gt;instance&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;Applicative&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;Maybe&lt;/span&gt; &lt;span style="color: #81a1c1; font-weight: bold;"&gt;where&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    pure &lt;span style="color: #81a1c1; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;Just&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #81a1c1;"&gt;Nothing&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;&amp;lt;*&amp;gt;&lt;/span&gt; &lt;span style="color: #81a1c1; font-weight: bold;"&gt;_&lt;/span&gt; &lt;span style="color: #81a1c1; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;Nothing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #eceff4;"&gt;(&lt;/span&gt;&lt;span style="color: #81a1c1;"&gt;Just&lt;/span&gt; f&lt;span style="color: #eceff4;"&gt;)&lt;/span&gt; &lt;span style="color: #81a1c1;"&gt;&amp;lt;*&amp;gt;&lt;/span&gt; something &lt;span style="color: #81a1c1; font-weight: bold;"&gt;=&lt;/span&gt; fmap f something
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is why I find Haskell extremely hard to learn.  It&amp;rsquo;s not because of
monads, recursion or functional programming concepts.  It&amp;rsquo;s because of the huge
amount of special syntax.  And you need to learn a lot of it before you can do
something useful.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Tue, 12 Feb 2013 22:33:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/02/haskell-vs-clojure-syntax/</guid></item><item><title>Pair new device with Nexxus Drive Transmit Pro</title><link>https://caiustheory.com/pair-new-device-with-nexxus-drive-transmit-pro/</link><description>&lt;p&gt;The device is a bluetooth to FM transmitter with Model number NEX-FMTX-BTCK. (Hereafter DTP.)&lt;/p&gt;
&lt;p&gt;The set of instructions I use to pair it to a new device, having lost the user manual/instruction booklet, is as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Remove all previously paired devices from range (turn them off/move them away from the DTP.)&lt;/li&gt;
&lt;li&gt;Turn the power on to the DTP without touching any buttons.&lt;/li&gt;
&lt;li&gt;Let it flash the blue call button a couple of times as it searches for known devices.&lt;/li&gt;
&lt;li&gt;Hold the call button down until the call/hangup buttons flash blue/red respectively.&lt;/li&gt;
&lt;li&gt;Find the &amp;ldquo;Drive Transmit Pro&amp;rdquo; on your device you want paired to it and pair with DTP.&lt;/li&gt;
&lt;li&gt;Test out the pairing by calling your girlfriend and talking to her in a funny accent.&lt;/li&gt;
&lt;li&gt;Celebrate with a beer!&lt;/li&gt;
&lt;/ol&gt;</description><author>Caius Theory</author><pubDate>Tue, 12 Feb 2013 20:26:59 GMT</pubDate><guid isPermaLink="true">https://caiustheory.com/pair-new-device-with-nexxus-drive-transmit-pro/</guid></item><item><title>Changing styles with Paperclip</title><link>https://joshuarogers.net/articles/2013-02/changing-styles-paperclip/</link><description>Just a quick Ruby tip today. If you use the Paperclip gem for image attachment with Ruby, you might have noticed the option to use a hash as part of your URL. Using this provides a simple way of creating a secret URL for your images. Rather than an easily predictable URL, a section of the URL created by hashing a secret key with a row from the database. For instance, the following code you might get a URL like /avatars/square/c2794196caf44b11b0b7b70cfd12ab88.</description><author>Joshua Rogers</author><pubDate>Tue, 12 Feb 2013 14:00:00 GMT</pubDate><guid isPermaLink="true">https://joshuarogers.net/articles/2013-02/changing-styles-paperclip/</guid></item><item><title>Remotely Mirroring a Disk from Linux</title><link>https://joshuarogers.net/articles/2013-02/remotely-mirroring-disk-linux/</link><description>In Linux you can make or restore an image of a drive with the dd command. For instance, creating a disc iso of a DVD could be done by specify the block device for the dvd-rom as the input file and a new file for the output file.
dd if=/dev/sr0 of=/home/jdoe/cdrom.iso Another frequent use would be to make a bit-for-bit copy of a disk as a backup.
dd if=/dev/sdb of=/dev/sdc What happens if you need to make a bit-for-bit copy of a drive to a remote machine though?</description><author>Joshua Rogers</author><pubDate>Tue, 12 Feb 2013 14:00:00 GMT</pubDate><guid isPermaLink="true">https://joshuarogers.net/articles/2013-02/remotely-mirroring-disk-linux/</guid></item><item><title>Picking up the pieces after a Fedora 18 install</title><link>https://purpleidea.com/blog/2013/02/12/picking-up-the-pieces-after-a-fedora-18-install/</link><description>&lt;p&gt;I love GNOME and Fedora, but &amp;ldquo;upgrading&amp;rdquo; from Fedora 17 to 18 did not go well for me. I recommend you wait until either these are all fixed, or Fedora 19+ suits your needs. Here are a list of problems I had, and some workarounds. Hopefully proper patches to these bugs will get merged quickly, so that you don&amp;rsquo;t need to use these fixes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Problem&lt;/span&gt;:&lt;/strong&gt; Boot fails after upgrade from Fedora 17 to Fedora 18. I used the new &amp;ldquo;fedup&amp;rdquo; method.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Tue, 12 Feb 2013 03:15:38 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/02/12/picking-up-the-pieces-after-a-fedora-18-install/</guid></item><item><title>SonarException: The project is already been analysing.</title><link>https://www.craigpardey.com/post/2013-02-12-sonarexception-the-project-is-already-been-analysing/</link><description>&lt;p&gt;I was getting this error when running a Sonar analysis recently.&lt;/p&gt;
&lt;p&gt;This was caused by the Jenkins/Sonar process getting killed while the project
analysis is underway. Sonar now uses a database semaphore to prevent multiple
builds running at the same time, but if the job gets terminated then the
semaphores don&amp;rsquo;t get cleaned up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To fix the problem&lt;/strong&gt;: Log into the database and delete any rows in the &amp;lsquo;semaphores&amp;rsquo; table.&lt;/p&gt;</description><author>Craig Pardey</author><pubDate>Tue, 12 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.craigpardey.com/post/2013-02-12-sonarexception-the-project-is-already-been-analysing/</guid></item><item><title>No need to support IE8 any more (even for corporate software)</title><link>https://www.databasesandlife.com/ie8/</link><description>&lt;p&gt;One of my customers (&lt;a href="http://www.mobilreport.com/" rel="noopener noreferrer" target="_blank"&gt;mobilreport&lt;/a&gt;) is used by accountancy departments in &lt;strong&gt;large companies in Austria and Germany&lt;/strong&gt; to analyze their employees&amp;rsquo; mobile phone usage. More so than average web software, this web software needs to work on whatever web browsers large companies have installed; large companies tend to use more Internet Explorer than the world at large.&lt;/p&gt;
&lt;p&gt;So it&amp;rsquo;s with pleasure that I report the following trend: (Numbers are the % of all users who come to the website within that month using IE8)&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Tue, 12 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/ie8/</guid></item><item><title>Giant Creme Egg</title><link>https://sam.hooke.me/teaandstuff/2013/03/giant-creme-egg/</link><description>&lt;p&gt;Tea club started with some Whittard&amp;rsquo;s Cherry Blossom tea, followed by some Fine Cut Lemongrass tea. The lemongrass tea left a lot of stuff at the bottom of the thing, perhaps because it is so fine that it escaped the filter thingy. I really need to improve my terminology.&lt;/p&gt;
&lt;p&gt;Every single track of Mario Kart on the N64 was then played, well, except for Rainbow Road - that course is just too tedious.&lt;/p&gt;
&lt;p&gt;In a more exciting turn of events, we travelled far across the urban wilderness of Portsmouth to humble abode of Waitrose. A number of items were bought:&lt;/p&gt;



 




&lt;figure class="single"&gt;
 &lt;div class="single-inset"&gt;
 










 
 
 
 &lt;a href="https://sam.hooke.me/images/egg_01.jpg"&gt;
 
 &lt;img alt="Photo of stacks of chocolate, butter, icing sugar and golden syrup" src="https://sam.hooke.me/images/egg_01_hu2453904387486020658.jpg" /&gt;
 
 &lt;/a&gt;
 


 &lt;figcaption style="margin: auto;"&gt;
 
 It later turned out 3 bars of chocolate wasn&amp;rsquo;t nearly enough
 
 &lt;/figcaption&gt;
 &lt;/div&gt;
&lt;/figure&gt;

&lt;p&gt;The plan was this: make a giant Cadbury Creme egg.&lt;/p&gt;</description><author>Sam Hooke</author><pubDate>Sun, 10 Feb 2013 20:45:40 GMT</pubDate><guid isPermaLink="true">https://sam.hooke.me/teaandstuff/2013/03/giant-creme-egg/</guid></item><item><title>Session Snapper v4 – The World’s Most Advanced Oracle Troubleshooting Script!</title><link>https://tanelpoder.com/2013/02/10/session-snapper-v4-the-worlds-most-advanced-oracle-troubleshooting-script/</link><description>&lt;h4 id="snapper-v4-webinar"&gt;Snapper V4 Webinar&lt;/h4&gt;
&lt;p&gt;Snapper V4 is out!&lt;/p&gt;
&lt;p&gt;The major new features include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;RAC support – ability to query stats from remote instances&lt;/li&gt;
&lt;li&gt;Manual Before and After snapshot support – no need to use DBMS_LOCK sleeps anymore&lt;/li&gt;
&lt;li&gt;Show useful averages and ratios *in addition to* raw metrics for faster troubleshooting&lt;/li&gt;
&lt;li&gt;And more! :)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Snapper is still a &lt;strong&gt;free-to-use&lt;/strong&gt; tool and it still does NOT require any object creation nor changes in your databases for use. Now even DBMS_LOCK access isn’t needed, although it’s still useful for convenience.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Sun, 10 Feb 2013 19:33:18 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/02/10/session-snapper-v4-the-worlds-most-advanced-oracle-troubleshooting-script/</guid></item><item><title>Normal is not Normal</title><link>http://www.macdrifter.com/2012/08/normal-is-not-normal.html</link><description>&lt;p&gt;&amp;#8220;As a young man I discovered that most people are insecure and full of shit. They are balloons of crap on the verge of bursting. The slightest pin-prick can destroy their self image and cover everyone else in their filth. I discovered that &amp;#8216;normal&amp;#8217; is a lie. A teenage boy that can&amp;#8217;t smile is as self conscious as a girl with a bad haircut. I was lucky. When I was 9 I lost control of a motorcycle and crashed. When I was 9 I learned that there&amp;#8217;s no such thing as being normal.&amp;#8221;&lt;/p&gt;

&lt;p&gt;A powerful post written by Gabe Weatherhead of Macdrifter.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.macdrifter.com/2012/08/normal-is-not-normal.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 10 Feb 2013 16:43:04 GMT</pubDate><guid isPermaLink="true">http://www.macdrifter.com/2012/08/normal-is-not-normal.html</guid></item><item><title>Thoughts on Paper Planes</title><link>https://joshuarogers.net/articles/2013-02/thoughts-paper-planes/</link><description>In my first year of college, there was a festival of sorts on campus. It was a day designed to provide the college with goodwill and easy photo ops for the pamphlets they would use to lure freshmen the next year. Though only a side-effect in the sight of those organizing the event, it managed to provide those of us who would normally spend the entire day in class with a chance to stop and imagine what it would be like to relax.</description><author>Joshua Rogers</author><pubDate>Sun, 10 Feb 2013 14:00:00 GMT</pubDate><guid isPermaLink="true">https://joshuarogers.net/articles/2013-02/thoughts-paper-planes/</guid></item><item><title>Quest for Immutable Static Files Hosting</title><link>https://avodonosov.blogspot.com/2013/02/quest-for-immutable-static-files-hosting.html</link><description>&lt;p&gt;For &lt;a href="https://github.com/cl-test-grid/cl-test-grid"&gt;cl-test-grid&lt;/a&gt; I need an online storage for static files - library test logs.&lt;/p&gt;

&lt;p&gt;The requirements:
&lt;ol&gt;
  &lt;li&gt; Permissions:
    &lt;ul&gt;
      &lt;li&gt;Upload new file - anyone (because the tests may be run by anyone)&lt;/li&gt;
      &lt;li&gt;Delete or modify existing file - forbidden for public.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    Current upload rate is around 50 000 small files per month, usually uploaded during several days after new Quicklisp is out. In the future it may increase to 100 000 or more.
    Size of each file is &lt;= 100 KB.    
  &lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;

&lt;p&gt;
After file is uploaded it must be available by an HTTP URL.&lt;/p&gt;
&lt;p&gt;
None of the online file storage services I saw satisfy my permissions requirements.
Usually if user can upload file, he can delete/modify it.
Therefore every of the solutions below include an intermediate server application which enforces
my access rules.&lt;/p&gt;
&lt;p&gt;
I have considered several variants:
&lt;ol&gt;
&lt;li&gt;
  &lt;a href="https://developers.google.com/appengine/docs/java/blobstore/"&gt;Google App Engine Blobstore&lt;/a&gt;

  &lt;p&gt;The first solution I found and it served me for more than a year. The free usage quota includes 5 GB of blobstore, which I hoped will be enough for years.&lt;/p&gt;

  &lt;p&gt;But it shown some disadvantages. I faced some bugs: &lt;a href="https://code.google.com/p/googleappengine/issues/detail?id=7619"&gt;#7619&lt;/a&gt;, &lt;a href="https://code.google.com/p/googleappengine/issues/detail?id=8032"&gt;#8032&lt;/a&gt;. Also every blob upload takes several Datastore operations, thus exhausting the free Datastore quota.
Also the blob keys are 164 characters long, making the log URLs horrible: &lt;a href="http://cl-test-grid.appspot.com/blob?key=AMIfv97wo4FQxGLBZOagyZyLZCqwMWavAfwsByKxjq8QiJQ5rIzEggGwGJ_kH2qRZLMb8N_el8aKIpLDbnr67Pxcy9r8RFKmBnjTQ1B44yaCcyZWtO2CSbBliyAINvoI41_R8uA8hoPia-yXPdlmADiJcavCCgpHGA"&gt;http://cl-test-grid.appspot.com/blob?key=AMIfv97wo4FQxGLBZOagyZyLZCqwMWavAfwsByKxjq8QiJQ5rIzEggGwGJ_kH2qRZLMb8N_el8aKIpLDbnr67Pxcy9r8RFKmBnjTQ1B44yaCcyZWtO2CSbBliyAINvoI41_R8uA8hoPia-yXPdlmADiJcavCCgpHGA&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;To make the URLs shorter I save blobkey in a Datastore Entity, and use the integer entity ID as a reference to the log:
  &lt;pre&gt;&lt;code&gt;    Entity shortKeyEntity = new Entity("ShortKey");
    shortKeyEntity.setProperty("blobKey", blobKey);
    datastore.put(shortKeyEntity); 
    return shortKeyEntity.getKey().getId();&lt;/code&gt;&lt;/pre&gt;
  That way the URLs look better: &lt;a href="http://cl-test-grid.appspot.com/blob?key=789714"&gt;http://cl-test-grid.appspot.com/blob?key=789714&lt;/a&gt;. But this increases amount of Datastore operations. Also, the Datastore creates some internal indexes for the entities, and which take huge amount of space. I in total have 1GB of log files, but it takes 4GB of Datastore to keep the mapping from blob keys to short IDs:
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2_OqSz9cnbKoNGZw6h0QfcipEGX1xWHWsO58hH_58PjZyN_FRDZHQlPulWyveC5pRHwF0y7WgxI_JRB_3HAkIBA-T2JlrKvIfjJ_cuaER0OZ-ugA11HUjqGqFNSI2PmukRhOF7-BvAMo/s1600/datastore-statistics.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2_OqSz9cnbKoNGZw6h0QfcipEGX1xWHWsO58hH_58PjZyN_FRDZHQlPulWyveC5pRHwF0y7WgxI_JRB_3HAkIBA-T2JlrKvIfjJ_cuaER0OZ-ugA11HUjqGqFNSI2PmukRhOF7-BvAMo/s320/datastore-statistics.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;So my application exceeds the free quota by several parameters and the paid plan must be used. It is &gt; $108 per yer. Expensive for just publishing 1GB of static files.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
  &lt;a href="https://developers.google.com/appengine/docs/java/googlestorage/"&gt;Google App Engine + Google Cloud Storage&lt;/a&gt;

  &lt;p&gt;Cloud Storage is an Amazon S3 clone. I migrated to it from App Engine Blobstore recently.&lt;/p&gt;
  &lt;p&gt;As you choose file names yourself there is no problem with long keys. Also Cloud Storage doesn't involve any App Engine Datastore operations.&lt;/p&gt;
  &lt;p&gt;There is an API to access it directly from App Engine, although it is experimental. And I faced a bug &lt;a href="https://code.google.com/p/googleappengine/issues/detail?id=8592"&gt;#8592&lt;/a&gt;; solved it by a work-around.&lt;/p&gt;
  &lt;p&gt;Other difficulties to solve were:
    &lt;ul&gt;
      &lt;li&gt;
        Handling of multipart/form-data based file uploads, because Google App Engine does not support servlet API 3.0 yet.
        And Apache Commons FileUpload library doesn't work out of box in App Engine, because it tries access file system.
      &lt;/li&gt;
      &lt;li&gt;Java Servlets on App Engine should handle every request in 30 seconds time-out. The servlet is killed if exceeds the time-out.&lt;/li&gt;
      &lt;li&gt;Writing files one-by-one to Cloud Storage via the Java API is relatively slow.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;Having solved all this by customizing Apache Commons FileUpload to keep the uploaded files in memory while parsing
    the request body and writing to Cloud Storage from multiple threads I now have a solution allowing to upload 300 logs in one request.
    And with the free 5GB provided by Google for the fist Cloud Storage project, the payments for this service will most likely be zero.&lt;/p&gt;
  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
  &lt;a href="http://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt; + &lt;a href="http://www.heroku.com/"&gt;Heroku&lt;/a&gt;.
  &lt;p&gt;This is the next thing I'll do if I have any problems with CloudStorage. A small app at Heroku creating pre-signed S3 URLs and returning them to client. The
  client uploads files and after the pre-signed URLs expire he can not modify the files.&lt;/p&gt;
  &lt;p&gt;Amazon only allows to upload one file per PUT request. With the price of $0.01 for 1000 requests it may cost me around $10 a year.&lt;/p&gt;
  &lt;p&gt;A tempting property of this solution is that the Heroku app may be written in Common Lisp thus getting rid of Java servlets in cl-test-grid.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;</description><author>blog</author><pubDate>Sun, 10 Feb 2013 02:32:36 GMT</pubDate><guid isPermaLink="true">https://avodonosov.blogspot.com/2013/02/quest-for-immutable-static-files-hosting.html</guid></item><item><title>World of Warcraft, Modern RPGs, and the Gear Grind</title><link>https://benovermyer.com/blog/2013/02/world-of-warcraft-modern-rpgs-and-the-gear-grind/</link><description>&lt;p&gt;After a full year of not playing, yesterday I jumped back into World of Warcraft. I'd heard enough good things about the latest changes that I decided to give it another shot. It remains to be seen whether that'll last or not. Something that did make me pause, though, is the obvious reminder that WoW is based on a gear grind. As soon as my character, a &lt;a href="http://us.battle.net/wow/en/character/kelthuzad/Exsecratus/simple" rel="external"&gt;worgen warlock named Exsecratus&lt;/a&gt;, made it to the new continent, I almost immediately replaced my raid epic gear from the Cataclysm days with greens. Today's junk is better than yesterday's hard-won treasure. That theme carries across many modern MMORPGs, but in all honesty, it's also present in tabletop RPGs these days. Dungeons &amp;amp; Dragons is one of the worst culprits, but there are plenty of others. That got me to thinking. Is the gear grind necessarily bad? The perpetual need to have better equipment may seem like a thin excuse to keep people playing a game, but taken as a component of a larger and more complex system, it's a reliable foundation to build on. In a game like &lt;a href="http://silvergryphongames.com/games/Ingenium/" rel="external"&gt;my own Ingenium&lt;/a&gt;, where if you have too many static modifiers it makes the randomization provided by the dice useless, a gear grind based on incremental bonus increases wouldn't make much sense. However, if there were a game out there that had more complex calculation involved with point bonuses, then having a Sword +513 wouldn't necessarily be any more unbalanced than a Sword +3. The trick is that to get to that level, you need to involve multiplication and division in the core mechanic, and that's the real holdup for a tabletop RPG. Let's face it - most tabletop gamers don't want to sit and recalculate their stats every time they pick up a new item. In video games it's possible because the game itself handles it automatically in the background without the player even being aware of the math. To introduce infinitely-scaling item stats into a tabletop RPG, you would have to do one of two things - either create a phone/tablet app to handle the math for you, or make the math so simplified that it would be possible to calculate quickly. Being a web developer by profession, I'm partial to the first one. These days it's not unreasonable to expect gamers to have a smartphone. How would you handle bringing the gear grind into a tabletop game?&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sun, 10 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/02/world-of-warcraft-modern-rpgs-and-the-gear-grind/</guid></item><item><title>Technology and Music, with John Roderick</title><link>http://thebroshow.libsyn.com/028-technology-and-music-with-john-roderick</link><description>&lt;p&gt;&amp;#8220;If computers are analogous to powered flight, we are four and a half years after the Wright Brothers flew at Kittyhawk; we are still flying airplanes made out of bicycle parts.&amp;#8221;&lt;/p&gt;

&lt;p&gt;This was merely the first of the near innumerable excerpts I wanted to pull out if CMD+SPACE&amp;#8217;s twenty-eight episode &lt;a href="http://thebroshow.libsyn.com/028-technology-and-music-with-john-roderick"&gt;Technology and Music, with John Roderick&lt;/a&gt;. For the rest of them though, check out this excellent podcast hosted by Myke Hurley of &lt;a href="http://www.70decibels.com/"&gt;70 Decibels&lt;/a&gt;. Along with this great episode Myke has also interviewed a number of other popular Internet figures, including Shawn Blanc in the episode before last&amp;#8217;s, &lt;a href="http://www.70decibels.com/cmdspace/2013/1/23/026-a-full-time-masterclass-with-shawn-blanc.html"&gt;A Full Time Masterclass with Shawn Blanc&lt;/a&gt;.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://thebroshow.libsyn.com/028-technology-and-music-with-john-roderick"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 09 Feb 2013 02:11:01 GMT</pubDate><guid isPermaLink="true">http://thebroshow.libsyn.com/028-technology-and-music-with-john-roderick</guid></item><item><title>I Don't Need No Stinking API: Web Scraping For Fun and Profit</title><link>http://blog.hartleybrody.com/web-scraping/</link><description>&lt;p&gt;After reading this article by Hartley Brody quite some time ago, I set out to build a web scraper designed to analyze Hacker News. And while the project remains unfinished, it is in no way a reflection upon the work that inspired me to undertake it. Hartley Brody talks about ah interesting way to capture data using a web browser and scraping rather than an API in an article well worth the read.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://blog.hartleybrody.com/web-scraping/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 09 Feb 2013 02:00:56 GMT</pubDate><guid isPermaLink="true">http://blog.hartleybrody.com/web-scraping/</guid></item><item><title>Libri gratuiti sul linguaggio C</title><link>https://nicolaiarocci.com/libri-gratuiti-sul-linguaggio-c/</link><description>&lt;p&gt;&lt;!-- raw HTML omitted --&gt;9 of the Best Free C Books&lt;!-- raw HTML omitted --&gt; è un’ottima selezione di libri gratuiti sul linguaggio C. C’è n’è per tutti, dai testi per principianti a quelli per programmatori esperti provenienti da altri linguaggi. Lo sapete già, C dovrebbe far parte del bagaglio di ogni programmatore.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Sat, 09 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/libri-gratuiti-sul-linguaggio-c/</guid></item><item><title>Introducing django-db-tools</title><link>/2013/02/08/Introducing-django-db-tools/</link><description>&lt;p&gt;For any successful web application there is likely to come a time when you need to conduct some large migration on the backend. I dont mean simple add a &lt;a href="http://www.craigkerstiens.com/2012/05/07/why-postgres-part-2/"&gt;column here or add an index there&lt;/a&gt;, but rather truly sizeable migrations&amp;hellip; Going from &lt;a href="http://lanyrd.com/blog/2012/lanyrds-big-move/"&gt;MySQL to Postgres&lt;/a&gt; or migrating from an older version of Postgres such as a &lt;a href="http://blog.sendhub.com/post/30041247598/how-to-upgrade-a-legacy-heroku-database"&gt;32 bit instance&lt;/a&gt; to a newer 64 bit instance. In these cases the default approach is to just schedule downtime often throwing up a splash screen saying so.&lt;/p&gt;
&lt;p&gt;For many sites this approach is simply wrong and lazy, with little effort you can improve the experience and there by ease the burden in conducting these types of migrations. By having the ability to turn your site into a read only mode which &lt;a href="http://twitter.com/simonw"&gt;Simon Wilson&lt;/a&gt; talked about in his post on Lanyrd you can still continue to operate just in a limited capacity. &lt;a href="http://www.aeracode.org/2012/11/13/one-change-not-enough/"&gt;Andrew Godwin&lt;/a&gt; further talks about some of this as well in regards to the Lanyrd move and even includes the script they used to &lt;a href="https://github.com/lanyrd/mysql-postgresql-converter/"&gt;migrate data from MySQL to Postgres&lt;/a&gt;. Though just in talking with Simon about this a week ago it occurred to me they had not released the code for their read-only mode.&lt;/p&gt;
&lt;p&gt;Finally onto the announcing, today I&amp;rsquo;m releasing &lt;a href="https://github.com/craigkerstiens/django-db-tools"&gt;django-db-tools&lt;/a&gt;. This is currently a very lightweight utility that allows you to flip your site into two modes.&lt;/p&gt;
&lt;h3 id="anonymous-mode"&gt;
&lt;div&gt;
Anonymous Mode
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;For sites that offer a bulk of their data to unauthenticated users anonymous mode will be what you want. This ensures all users appear logged out and thus cannot interact with data. To enable anonymous mode you&amp;rsquo;d simple set the environment variable or config var on heroku as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;READ_ONLY_MODE = True
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="restricting-posts"&gt;
&lt;div&gt;
Restricting POSTs
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;The other bucket of sites is one that allows users to stay logged in but not insert data. Django did not appear to have a convenient means to know whether data was actually being inserted into the DB or not. As a good practice when inserting data it should be receiving a HTTP POST. The &lt;code&gt;GET_ONLY_MODE&lt;/code&gt; mimmicks all POSTs as if they were sent via GETs thus hopefully eliminating inserting data into your application. To turn it on simply set the environment variabel or config var on heroku to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GET_ONLY_MODE = True
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="installing"&gt;
&lt;div&gt;
Installing
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;The tool itself is largely middleware, to install:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;pip install django-db-tools&lt;/code&gt; or add it to your &lt;code&gt;requirements.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;db_tools&lt;/code&gt; to your &lt;code&gt;INSTALLED_APPS&lt;/code&gt; in your &lt;code&gt;settings.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;'dbtools.middleware.ReadOnlyMiddleware',&lt;/code&gt; to your &lt;code&gt;MIDDLEWARE_CLASSES&lt;/code&gt; in &lt;code&gt;settings.py&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="contributing"&gt;
&lt;div&gt;
Contributing
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;As with all code this is largely a work in progress. There&amp;rsquo;s many items still to do such as providing default copy and error pages and potentially handling other edge cases. I&amp;rsquo;d welcome others to contribute and give feedback if they find it helpful or how it can be improved on Github.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Fri, 08 Feb 2013 22:55:56 GMT</pubDate><guid isPermaLink="true">/2013/02/08/Introducing-django-db-tools/</guid></item><item><title>Bounding Boxes for Ellipsoids</title><link>https://blog.yiningkarlli.com/2013/02/bounding-boxes-for-ellipsoids.html</link><description>&lt;p&gt;Update (2014): Tavian Barnes has written a &lt;a href="https://tavianator.com/2014/ellipsoid_bounding_boxes.html"&gt;far better / more detailed post&lt;/a&gt; on this topic; instead of reading my post, I suggest you go read Tavian’s post instead.&lt;/p&gt;

&lt;p&gt;Warning: this post is going to be pretty math-heavy.&lt;/p&gt;

&lt;p&gt;Let’s talk about spheres, or more generally, ellipsoids. Specifically, let’s talk about calculating axis aligned bounding boxes for arbitrarily transformed ellipsoids, which is a bit of an interesting problem I recently stumbled upon while working on Takua Rev 3. I’m making this post because finding a solution took a lot of searching and I didn’t find any single collected source of information on this problem, so I figured I’d post it for both my own reference and for anyone else who may find this useful.&lt;/p&gt;

&lt;p&gt;So what’s so hard about calculating tight axis aligned bounding boxes for arbitrary ellipsoids?&lt;/p&gt;

&lt;p&gt;Well, consider a basic, boring sphere. The easiest way to calculate a tight axis aligned bounding box (or AABB) for a mesh is to simply min/max all of the vertices in the mesh to get two points representing the min and max points of the AABB. Similarly, getting a tight AABB for a box is easy: just use the eight vertices of the box for the min/max process. A naive approach to getting a tight AABB for a sphere seems simple then: along the three axes of the sphere, have one point on each end of the axis on the surface of the sphere, and then min/max. Figure 1. shows a 2D example of this naive approach, to extend the example to 3D, simply add two more points for the Z axis (I drew the illustrations quickly in Photoshop, so apologies for only showing 2D examples):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/figure1.png"&gt;
&lt;img alt="Figure 1." src="https://blog.yiningkarlli.com/content/images/2013/Feb/figure1.png" /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This naive approach, however, quickly fails if we rotate the sphere such that its axes are no longer lined up nicely with the world axes. In Figure 2, our sphere is rotated, resulting in a way too small AABB if we min/max points on the sphere axes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/figure2.png"&gt;
&lt;img alt="Figure 2." src="https://blog.yiningkarlli.com/content/images/2013/Feb/figure2.png" /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we scale the sphere such that it becomes an ellipsoid, the same problem persists, as the sphere is just a subtype of ellipsoid. In Figures 3 and 4, the same problem found in Figures 1/2 is illustrated with an ellipsoid:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/figure3.png"&gt;
&lt;img alt="Figure 3." src="https://blog.yiningkarlli.com/content/images/2013/Feb/figure3.png" /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/figure4.png"&gt;
&lt;img alt="Figure 4." src="https://blog.yiningkarlli.com/content/images/2013/Feb/figure4.png" /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One possible solution is to continue using the naive min/max axes approach, but simply expand the resultant AABB by some percentage such that it encompasses the whole sphere. However, we have no way of knowing what percentage will give an exact bound, so the only feasible way to use this fix is by making the AABB always larger than a tight fit would require. As a result, this solution is almost as undesirable as the naive solution, since the whole point of this exercise is to create as tight of an AABB as possible for as efficient intersection culling as possible!&lt;/p&gt;

&lt;p&gt;Instead of min/maxing the axes, we need to use some more advanced math to get a tight AABB for ellipsoids.&lt;/p&gt;

&lt;p&gt;We begin by noting our transformation matrix, which we’ll call M. We’ll also need the transpose of M, which we’ll call MT. Next, we define a sphere S using a 4x4 matrix:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;[ r 0 0 0 ]
[ 0 r 0 0 ]
[ 0 0 r 0 ]
[ 0 0 0 -1] 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;where r is the radius of the sphere. So for a unit diameter sphere, r = .5. Once we have built S, we’ll take its inverse, which we’ll call SI.&lt;/p&gt;

&lt;p&gt;We now calculate a new 4x4 matrix R = M*SI*MT. R should be symmetric when we’re done, such that R = transpose(R). We’ll assign R’s indices the following names:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;R = [ r11 r12 r13 r14 ] 
  [ r12 r22 r23 r24 ] 
  [ r13 r23 r23 r24 ] 
  [ r14 r24 r24 r24 ] 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Using R, we can now get our bounds:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;zmax = (r23 + sqrt(pow(r23,2) - (r33*r22)) ) / r33; 
  	zmin = (r23 - sqrt(pow(r23,2) - (r33*r22)) ) / r33; 
  	ymax = (r13 + sqrt(pow(r13,2) - (r33*r11)) ) / r33; 
  	ymin = (r13 - sqrt(pow(r13,2) - (r33*r11)) ) / r33; 
  	xmax = (r03 + sqrt(pow(r03,2) - (r33*r00)) ) / r33; 
  	xmin = (r03 - sqrt(pow(r03,2) - (r33*r00)) ) / r33; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;…and we’re done!&lt;/p&gt;

&lt;p&gt;Just to prove that it works, a screenshot of a transformed ellipse inside of a tight AABB in 3D from Takua Rev 3’s GL Debug view:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Feb/takua_ellipse.png"&gt;&lt;img alt="" src="https://blog.yiningkarlli.com/content/images/2013/Feb/takua_ellipse.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve totally glossed over the mathematical rationale behind this method in this post and focused just on how to quickly get a working implementation, but if you want to read more about the actual math behind how it works, these are the two sources I pulled this from:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://stackoverflow.com/a/4369956"&gt;Stack Overflow post by user fd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.iquilezles.org/www/articles/ellipses/ellipses.htm"&gt;Article by Inigo Quilez&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In other news, Takua Rev 3’s new scene system is now complete and I am working on a brand new, better, faster, stackless KD-tree implementation. More on that later!&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Fri, 08 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/02/bounding-boxes-for-ellipsoids.html</guid></item><item><title>Dear Hacker Community - We Need To Talk.</title><link>http://asherwolf.com/dear-hacker-community-we-need-to-talk/101/</link><description>&lt;p&gt;&amp;#8220;When I communicated about concerns and issues - as well as complaints from Cryptoparty participants peeved with out-of-touch crypto-lecturers who wanted to teach command lines to crypto-newcomers - I got put downs, got brushed off, ignored, told &amp;#8216;oh don&amp;#8217;t worry, we&amp;#8217;ll look after it, it won&amp;#8217;t be a problem&amp;#8217;, &amp;#8216;don&amp;#8217;t worry your head about it&amp;#8217;, or aggravatingly - told that I wasn&amp;#8217;t qualified to judge their choices as I wasn&amp;#8217;t a crypto-expert or a hacker.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Asher Wolf brings to light a darker side of the internet as and the hacker community in particular, chronicling her &amp;#8220;perfect storm&amp;#8221; experience, if you will, with misogyny in the hacker culture. Disgusting&amp;#160;&amp;#8212;&amp;#160;indescribably disgusting; that&amp;#8217;s the thought that overrode all others as I read this piece, and the lesson we need to learn from this article. Absolutely terrible.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://asherwolf.com/dear-hacker-community-we-need-to-talk/101/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 07 Feb 2013 19:35:41 GMT</pubDate><guid isPermaLink="true">http://asherwolf.com/dear-hacker-community-we-need-to-talk/101/</guid></item><item><title>refresh</title><link>http://bloglivingthedream.wordpress.com/2013/01/24/refresh/</link><description>&lt;p&gt;From the author of &lt;a href="http://bloglivingthedream.wordpress.com/2013/02/06/so-simple/"&gt;so simple&lt;/a&gt;, the article I referenced in &lt;a href="https://zacs.site/blog/so-simple.html"&gt;my last post&lt;/a&gt;, speaking to her attempt at achieving a &amp;#8220;simpler, greener, cleaner, freer life&amp;#8221;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I still feel very guilty about small habits which I can&amp;#8217;t shake, one of which is my Nespresso coffee machine with its dependency on capsules bought in a store which makes my skin crawl with its ostentatiousness, a cathedral to consumerism.  But today while stocking up my habit, I found out that I can recycle the capsules at the store and the aluminium will be melted down.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As I looked back on this short post consisting merely of the two paragraphs above, prepared to save it for publication tomorrow morning, I couldn&amp;#8217;t shake the feeling that it lacked something. There was, ironically, definitely something missing from this post about simplifying one&amp;#8217;s life. And then it came to me: a few weeks ago during my cabin porn binge I posted an article called &lt;a href="https://zacs.site/blog/something-to-it.html"&gt;&lt;em&gt;Something to it&lt;/em&gt;&lt;/a&gt;. After spending two days consuming every available resource so much as mentioning cabins or simplified living, I made an observation that maybe there was something to this simple lifestyle after all, something more than a cabin deep within the woods and a less demanding lifestyle&amp;#160;&amp;#8212;&amp;#160;something more than meets the eye. This article from the anonymous writer at Living the Dream rekindled that spark, igniting the curiosity that prompted me to ask the question, &amp;#8220;is there something more to this simplicity?&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://bloglivingthedream.wordpress.com/2013/01/24/refresh/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 07 Feb 2013 11:57:57 GMT</pubDate><guid isPermaLink="true">http://bloglivingthedream.wordpress.com/2013/01/24/refresh/</guid></item><item><title>so simple</title><link>http://bloglivingthedream.wordpress.com/2013/02/06/so-simple/</link><description>&lt;p&gt;Another blogger writing a response to Rohan Anderson&amp;#8217;s post &lt;a href="http://wholelarderlove.com/hard-at-work-living-simple/"&gt;&lt;em&gt;Hard at Work, Living Simple&lt;/em&gt;&lt;/a&gt;, putting in to words the feeling I spent so long attempting to quantify and capture but, ultimately, proved too elusive to voice in &lt;a href="https://zacs.site/blog/hard-at-work.html"&gt;my commentary&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;There is no manual, no one set way to downsize, seize life, focus on what&amp;#8217;s important.  But geez, when I read Rohan&amp;#8217;s Whole Larder Love blog entry today, I was ready to make him my guru, his website my guide to &amp;#8216;simple living&amp;#8217;.  Read it for yourself.  Just this one post struck me deeply and I cannot explain why.  But I sat at my desk looking out my 6th floor office window reading it on my iPhone at lunch time with tears thickening my eyes.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://bloglivingthedream.wordpress.com/2013/02/06/so-simple/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 07 Feb 2013 11:56:54 GMT</pubDate><guid isPermaLink="true">http://bloglivingthedream.wordpress.com/2013/02/06/so-simple/</guid></item><item><title>Constraint name visibility on MySQL and PostgreSQL</title><link>https://www.databasesandlife.com/constraint-name-visibility-on-mysql-and-postgresql/</link><description>&lt;p class="intro"&gt;Can one have two tables with constraints of the same name? Is that even consistent between types of constraints? What about between database vendors?&lt;/p&gt;
&lt;p&gt;It turns out that it&amp;rsquo;s neither consistent between types, nor is the way in which it&amp;rsquo;s inconsistent consistent between database vendors.&lt;/p&gt;
&lt;table class="hlines" width="100%"&gt;
  &lt;tr&gt;
    &lt;td&gt;
      &amp;nbsp;
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td style=&amp;quot;font-weight:bold&amp;quot;&amp;gt;
  MySQL 5.5
&amp;lt;/td&amp;gt;

&amp;lt;td style=&amp;quot;font-weight:bold&amp;quot;&amp;gt;
  PostgreSQL 9.2
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      Unique constraint names
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  Local to table
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  Global to DB
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      Foreign Key constraint names
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  Global to DB
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  Local to table
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;From MySQL:&lt;/strong&gt;&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Thu, 07 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/constraint-name-visibility-on-mysql-and-postgresql/</guid></item><item><title>Analytics: Analyzing tracked events</title><link>https://goshacmd.com/analytics-analyzing-tracked-events/</link><author>Gosha Spark</author><pubDate>Thu, 07 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://goshacmd.com/analytics-analyzing-tracked-events/</guid></item><item><title>Working in the Cloud</title><link>https://yieldthought.com/post/42450188171</link><description>&lt;p&gt;&lt;em&gt;Note: this is (most of) the content from the first post to my Working in the Cloud email list - more are prepared and will go out soon, so if you don&amp;rsquo;t want to miss the rest you can &lt;a href="http://eepurl.com/pBDdv"&gt;still join the list here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;About a week after I published the &lt;a href="http://yieldthought.com/post/31857050698/ipad-linode-1-year-later"&gt;iPad + Linode: One Year Later&lt;/a&gt; post, my employer decided to buy me a &lt;a href="http://www.amazon.com/gp/product/B0081YPX3Q/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B0081YPX3Q&amp;amp;linkCode=as2&amp;amp;tag=yieldthought-20"&gt;shiny new laptop&lt;/a&gt; for CUDA (GPU) development - a Dell XPS 15 with 8GB RAM, a quad-core i7 CPU and a 512GB SSD drive. It was shiny!&lt;/p&gt;

&lt;p&gt;And it was fast. Compile times dropped from 53 seconds to just 20. Test suites ran faster. With 8 GB memory I could run larger tests, or more concurrently. Disk space - always a limitation on the Linode 512 - was no longer a problem.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ll be honest: after the first day, I began to have doubts about my future in the cloud.&lt;/p&gt;

&lt;p&gt;There were one or two cracks in the armor; a laptop keyboard just isn&amp;rsquo;t as nice as the Apple Wireless one. It gets unpleasantly warm and it&amp;rsquo;s just a bit too high off the table. I tried an external keyboard, but then I&amp;rsquo;m sitting too far away from the screen.&lt;/p&gt;

&lt;p&gt;I also missed touch. I never expected to say this, but moving the pointer around with a touchpad or even an external mouse just feels slightly awkward now. It&amp;rsquo;s less immediate; one more thing for my subconscious to work on.&lt;/p&gt;

&lt;p&gt;Having a desktop-class browser is really, really nice though. GMail is more responsive and I can use Google docs like a Real Person again. I can even attach things to emails! Hallelujah!&lt;/p&gt;

&lt;p&gt;The one thing I don&amp;rsquo;t really notice while programming is the screen. Everybody asks me how I can work on such a small or low-res screen with the iPad. Really, I don&amp;rsquo;t notice the difference unless I&amp;rsquo;m doing a 3-way merge and need the extra horizontal space.&lt;/p&gt;

&lt;p&gt;I spent a whole week working on the new laptop. It was a busy time at work and I was multitasking like an over-caffeinated rabbit, flicking back to my emails every few minutes to clear the next dozen that had arrived since I last looked. Meanwhile, my iPad lay in the corner quietly discharging its battery into the void. &lt;/p&gt;

&lt;p&gt;Until Thursday afternoon. It was a splendid autumnal day and as I stepped outside at lunch to pick up some fresh bread from the bakers something in the air called to my soul. You can&amp;rsquo;t sit inside on the last fine day of autumn, it whispered to me, come with me and be free.&lt;/p&gt;

&lt;p&gt;I went back inside, packed up my iPad, some water and a rug into my rucksack and set of, into the great outdoors. Twenty minutes later I was lying in the dappled shade in the vastness of Munich&amp;rsquo;s English Garden, feeling the breeze playing in my hair as set up my 3G tethering. This is right, I thought. This is the life! And yet at the back of my mind was a guilty question: am I wasting time out here? Would I be more effective sitting back at home chained to The Machine?&lt;/p&gt;

&lt;p&gt;I logged in and carried on hacking away at the same bug I&amp;rsquo;d tried and failed to track down the day before; a subtle problem that spanned several concurrently-running services in our system. I&amp;rsquo;d grown used to the rapid build/retest cycle of the new laptop and was finding the slower pace of the Linode increasingly frustrating. The air was beginning to turn chill and suddenly this wasn&amp;rsquo;t where I wanted to be or what I wanted to be doing.&lt;/p&gt;

&lt;p&gt;I queued up another build and a set of offline tests to run and checked the time; it&amp;rsquo;d take a good five to ten minutes before the results were in. Time to move. I told the system to ping my phone when it was done then packed up and got back onto my bike, heading South to find a nice warm cafe to finish the afternoon in.&lt;/p&gt;

&lt;p&gt;Back on my bike, gently coasting along the tree-lined paths, my muscles warmed up and my mind relaxed again. My thoughts turned back to the problem; not wanting to waste any more time I wondered how I could most effectively narrow down the scope of the bug. As I was crossing a small bridge I felt the buzz of the notification in my pocket; the builds were ready. Nearby was a small sunlit glade; I settled myself down between a small tree and the stream.&lt;/p&gt;

&lt;p&gt;Before logging in on the iPad, I lay back, watched the leaves fluttering against the darkening blue of the sky and finished thinking about the tests I&amp;rsquo;d run; what the various outcomes might actually mean, and what my next step could be. Once I knew exactly what I wanted to try next, I opened the iPad, logged in and did exactly that - no more, no less. Thirty minutes later I&amp;rsquo;d solved the problem.&lt;/p&gt;

&lt;p&gt;Riding back home, I realized I&amp;rsquo;d spent the entire afternoon thinking about and working on the problem. Not checking my emails, not writing a quick reply in some barely-related feature discussion. Not reading Hacker News. Just focused on the most important problem of the day.&lt;/p&gt;

&lt;p&gt;The same thing happened a week later when I had to write a press release. I&amp;rsquo;d spent all week putting it off, finding &amp;lsquo;more urgent&amp;rsquo; things to do in my emails, attacking small development problems. By Friday afternoon I&amp;rsquo;d run out of time. I closed the laptop and took my iPad to the window ledge, where I sat with a cup of tea and looked out across the grass, letting my thoughts come to rest.&lt;/p&gt;

&lt;p&gt;Then I started typing. Typing on the touch screen is slower than a keyboard, just as compiling on a Linode is slower than on a quad-core i7. Yet again, here the bottleneck wasn&amp;rsquo;t my typing speed, but my thoughts. The slower pace became meditative, the lack of distractions absolute. An hour later I was done. Later that night our CTO replied saying that he loved it, calling it &amp;ldquo;quirky, refreshing, and extremely likely to get the coverage we need.&amp;rdquo;&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m coming to the conclusion that the speed and generality of a laptop or desktop system is optimizing the wrong thing - it&amp;rsquo;s increasing the rate at which my brain receives distractions from the true bottleneck in my work: measured thought, repeatable inspiration.&lt;/p&gt;

&lt;p&gt;Yet I have one more test left to try, and one that I think might interest you: what if I try to get the best out of both worlds and use the iPad to remotely connect to my work laptop? This is something you could try, too - after a little bit of setup you could take your tablet down to the building cafeteria, or library, or outside, or home, and get a taste for what working on it is like without having to sign up and set up and entire remote server.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve now set this up myself using an iPad and Ubuntu 12.04 laptop and will send detailed instructions on how to do it in the next email. If you want to receive it, &lt;a href="http://eepurl.com/pBDdv"&gt;click here to join the list&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks, and until then, happy cloud working!&lt;/p&gt;</description><author>Yield Thought</author><pubDate>Wed, 06 Feb 2013 23:16:48 GMT</pubDate><guid isPermaLink="true">https://yieldthought.com/post/42450188171</guid></item><item><title>Enough, already</title><link>http://www.backupbrain.com/2013/02/enough-already/</link><description>&lt;p&gt;When the wagon lumbered up the street proclaiming the news of Aaron Swartz&amp;#8217;s suicide, I jumped right on. I had never even heard of him, but I nevertheless jumped right on the bandwagon, eager to bemoan the passing of an individual many hailed as nothing short of a prodigy. &lt;a href="https://zacs.site/blog/aaron-swartz.html"&gt;I eulogized the man&lt;/a&gt;, &lt;a href="https://zacs.site/blog/lean-into-the-pain.html"&gt;praised&lt;/a&gt; &lt;a href="https://zacs.site/blog/be-more-productive.html"&gt;his&lt;/a&gt; &lt;a href="https://zacs.site/blog/who-writes-wikipedia.html"&gt;work&lt;/a&gt;, and condemned the system that supposedly drove him from this life. Tom Negrino of Backup Brain took a slightly different approach after spending nearly four weeks in embittered silence:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I&amp;#8217;m fed up with the Aaron Swartz hagiography and subsequent bullshit garment-rending from people who didn&amp;#8217;t know him well, or at all. I&amp;#8217;m still reading fresh examples of anguished wailing and blogging and Twittering about the guy. But to me, he seems unworthy of the sainthood that&amp;#8217;s being thrust onto his corpse.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With a topic such as this and words such as Tom&amp;#8217;s, many will likely label him as insensitive and brusque. Think for a minute though, before writing a very strongly-worded tweet from the vantage point granted by your lofty pedestal, that Aaron Swartz might not have been the saintly do-gooder everyone describes him to be or the martyr we seem to be searching for so desperately. Maybe, just maybe, he was a cowardly child afraid of facing the consequences of his actions, someone that through some twisted reasoning though it acceptable to kill himself and allow one of the few people he loved to find his body suspended from the ceiling. Maybe, just maybe, Tom is right.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.backupbrain.com/2013/02/enough-already/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 06 Feb 2013 15:49:39 GMT</pubDate><guid isPermaLink="true">http://www.backupbrain.com/2013/02/enough-already/</guid></item><item><title>Civilized Discourse Construction Kit</title><link>http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html</link><description>&lt;p&gt;&amp;#8220;I greatly admire what WordPress did for the web; to say that we want to be the WordPress of forums is not a stretch at all. We&amp;#8217;re also serious about this eventually being a viable open-source business, in the mold of WordPress. And we&amp;#8217;re not the only people who believe in the mission: I&amp;#8217;m proud to announce that we have initial venture capital funding from First Round, Greylock, and SV Angel. We&amp;#8217;re embarking on a five year mission to improve the fabric of the Internet, and we&amp;#8217;re just getting started. Let a million discussions bloom!&amp;#8221;&lt;/p&gt;

&lt;p&gt;Jeff Atwood of Coding Horror announcing the release of a next-generation open source forum software toolkit designed to promote constructive and productive discussions across the modern web. Although in recent years I have made it a point to avoid forums at all costs, &lt;a href="http://www.discourse.org/"&gt;Discourse&lt;/a&gt; just might bring me and many others back.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 06 Feb 2013 12:24:25 GMT</pubDate><guid isPermaLink="true">http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html</guid></item><item><title>Church intertwined with State</title><link>https://caiustheory.com/church-intertwined-with-state/</link><description>&lt;p&gt;In the UK currently we&amp;rsquo;re moving (slowly) toward the &lt;a href="http://www.publications.parliament.uk/pa/bills/cbill/2012-2013/0126/cbill_2012-20130126_en_1.htm"&gt;same sex marriage bill&lt;/a&gt; making it&amp;rsquo;s way into law. (It&amp;rsquo;s got a way to go still, but support seems to be there now at least.)&lt;/p&gt;
&lt;p&gt;For the record, I&amp;rsquo;m glad to see the state moving toward allowing two people to be united under law, irrespective of terminology used - and with equal rights to those currently enjoyed by the uniting of a man &amp;amp; woman to date. But for a while now I&amp;rsquo;ve been thinking that the discussion is presented in an unclear fashion, which causes people to jump to polarising positions on it, without any common ground.&lt;/p&gt;
&lt;p&gt;The way I see it is the UK has been a country with Religion and State intertwined for many, many hundreds of years - and therefore we have some constructs that exist both in law, and religion, but are conflated under one word and changing one appears to be changing them both.&lt;/p&gt;
&lt;p&gt;The Church of England is Protestant, because Henry VIII wanted to get a divorce and the Catholics wouldn&amp;rsquo;t allow him that, so we as a country &amp;ldquo;forked&amp;rdquo; our own religion that wasn&amp;rsquo;t so different, but allowed divorce of marriage. Times were slightly different back then, the church had a lot more direct power in terms of laws &amp;amp; how people lived. We&amp;rsquo;re a more diverse society today, and the church has less (direct?) involvement in our laws, although older laws are still based upon that original conflation of state and church.&lt;/p&gt;
&lt;p&gt;I almost wonder if in this case (and others) we need to start diverging church from state and allowing the state to change things irrespective of the church, whilst still allowing the church to continue unhindered with practices it&amp;rsquo;s held for many years. Seems like the best of both worlds almost - in law we are a very generic and equal society, and if you wish to belong to or align with a group that has more specific beliefs, then that is open to you as well.&lt;/p&gt;
&lt;p&gt;Lets jump back to gay marriage here as an example then. If we define state marriage to be &amp;ldquo;the unity of two human beings, irrespective of their attributes&amp;rdquo;, then everyone is equal to join with a partner in the eyes of the law, and all such partnerships are afforded the lawful benefits that come with that unity. The church (and indeed, all religions) are also then free to define religious marriage in their doctrine as they wish, so they can say that for them it&amp;rsquo;s only permissible between a man and a woman. And if you wish to join with a partner following that doctrine, then you have to meet their rules.&lt;/p&gt;
&lt;p&gt;In this circumstance, I wonder how much of it is a hangup on the word &amp;ldquo;marriage&amp;rdquo;. I can see how the state wants to keep hold of it to describe partnerships between two people, and also that religions want to keep hold of it as they&amp;rsquo;ve been using it for years and neither wish to yield the word for the other to use. Which possibly means people think solely of this issue as just being an intertwined construct between state and religion, and not as the state giving everyone equality being a separate issue.&lt;/p&gt;</description><author>Caius Theory</author><pubDate>Wed, 06 Feb 2013 01:06:18 GMT</pubDate><guid isPermaLink="true">https://caiustheory.com/church-intertwined-with-state/</guid></item><item><title>College Could be Your Biggest Mistake</title><link>https://zacs.site/blog/college-was-my-biggest-mistake.html</link><description>&lt;p&gt;&amp;#8220;No one could tell me why I was wasting my creative energy, focus, and life on something I didn&amp;#8217;t want to do. Classes didn&amp;#8217;t hold my attention- I could teach myself more in an afternoon than I would learn in a 10-week class. My classes appealed to the lowest-common denominator. The bottom of the barrel.&amp;#8221;&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/college-was-my-biggest-mistake.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 05 Feb 2013 19:18:27 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/college-was-my-biggest-mistake.html</guid></item><item><title>12 resolutions for programmers</title><link>http://matt.might.net/articles/programmers-resolutions/</link><description>&lt;p&gt;&amp;#8220;Since my early twenties, I&amp;#8217;ve looked at my older peers and tried to figure out why some stagnate and how others stay vibrant.&amp;#8221;&lt;/p&gt;

&lt;p&gt;While Matt Might goes on to propose that &amp;#8220;comfort breeds technical fossilization&amp;#8221; and thus leads many writers to stagnate as time goes by, I would instead suggest that the blame should go to stagnation itself as both the cause and effect rather than simply the effect of growing comfortable, for through the door propped open by a lack of desire to try new and daring things waltzes stagnation and then ruin, unchecked and uninhibited by the rolling tides of innovation seeking to drown both. Matt Might&amp;#8217;s article &lt;em&gt;12 resolutions for programmers&lt;/em&gt; goes on to propose a number of other activities designed to keep those tides rolling, and in doing so perpetuate that all-important desire to create and innovate.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://matt.might.net/articles/programmers-resolutions/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 05 Feb 2013 16:33:14 GMT</pubDate><guid isPermaLink="true">http://matt.might.net/articles/programmers-resolutions/</guid></item><item><title>What I Do for a Living</title><link>http://ticci.org/what-i-do-for-a-living</link><description>&lt;p&gt;A powerful story from Federico Viticci talking about his prolonged battle with cancer, his job as a technology writer, and some of the realizations that combination has forced upon him.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I&amp;#8217;ve made mistakes in my life, but I can&amp;#8217;t escape from what I love doing &amp;#160;&amp;#8212;&amp;#160; what in part led me to being in this room.&lt;/p&gt;
&lt;p&gt;&amp;#8220;&amp;#8216;Doctor, I write about technology.&amp;#8217;&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://ticci.org/what-i-do-for-a-living"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 05 Feb 2013 16:32:42 GMT</pubDate><guid isPermaLink="true">http://ticci.org/what-i-do-for-a-living</guid></item><item><title>hard at work, living simple</title><link>http://wholelarderlove.com/hard-at-work-living-simple/</link><description>&lt;p&gt;Rohan Anderson of &lt;a href="http://wholelarderlove.com"&gt;Whole Larder Love&lt;/a&gt; on the pursuit of happiness in a more simple life:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Many believe that you&amp;#8217;re supposed to find love, get married, work you butt off, earn money, own stuff, out-do your neighbours and pop out perfect kids. People that believe in this are in fact, idiots. Because that approach is not suited for everyone. From my short life I&amp;#8217;d say life is more about experiences, love, culture, memories, achieving contentedness and if you&amp;#8217;re lucky, very lucky...finding true happiness. The latter of which is THE goal for people these days. But let&amp;#8217;s face it, it&amp;#8217;s a bit rubbish. You can&amp;#8217;t be happy all the time, not even half the time, but you can be content. And I reckon that&amp;#8217;s something worth aiming for.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One of the better articles I have read in quite some time. An excellent piece well worth the time required to appreciate it.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://wholelarderlove.com/hard-at-work-living-simple/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 05 Feb 2013 16:32:01 GMT</pubDate><guid isPermaLink="true">http://wholelarderlove.com/hard-at-work-living-simple/</guid></item><item><title>Personality: Just another Excuse for Poor Writing</title><link>https://zacs.site/blog/personality.html</link><description>&lt;p&gt;Last weekend I found myself at a place I rarely make it to these days: it was early evening, I had cleared my Instapaper queue of articles newer than the last week, and my feed reader&amp;#8217;s article count read, for the moment, zero. I had no articles to read, no back-burner topics clamoring for my attention, and I felt unmotivated to wade through my extensive Instapaper backlog in search of a suitable topic to write about. The situation felt strangely unfamiliar and weird. Shifting back into gear though I alt-tabbed over to my Simplenote client and began scrolling through an amalgam of nearly one hundred and fifty half-baked articles, prompts, and ideas. Before long I stopped on a note titled &amp;#8220;Citational Fallacy&amp;#8221; and began reading.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/personality.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 05 Feb 2013 14:52:11 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/personality.html</guid></item><item><title>The Splinternet</title><link>http://forrester.typepad.com/groundswell/2010/01/the-splinternet-means-the-end-of-the-webs-golden-age.html</link><description>&lt;p&gt;I somehow managed to forget to post this article after I wrote it, so here it finally is:&lt;/p&gt;

&lt;hr style="margin: 50px auto; width: 50%; border: 0; border-bottom: 1px dashed #ccc; background: #999;" /&gt;

&lt;p&gt;A blast from the past in an article written three years ago today, on January 26, 2010, by Josh Bernoff:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;We call this new world the Splinternet (with a nod to Doc Searls and Rich Tehrani, who used the term before us with a somewhat different meaning). It will splinter the Web as a unified system. The golden age has lasted 15 years. Like all golden ages, it lasted so long we thought it would last forever. But the end is in sight.&amp;#8221;&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s interesting to see how the increasingly diverse computing market was viewed even just a few years ago, in a time when accidentally finding this article on my computer and piecing together this post between my phone and iPad would have been impossible.&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://forrester.typepad.com/groundswell/2010/01/the-splinternet-means-the-end-of-the-webs-golden-age.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 04 Feb 2013 16:08:11 GMT</pubDate><guid isPermaLink="true">http://forrester.typepad.com/groundswell/2010/01/the-splinternet-means-the-end-of-the-webs-golden-age.html</guid></item><item><title>The Dish</title><link>http://dish.andrewsullivan.com</link><description>&lt;p&gt;In the wee hours of this morning Andrew Sullivan and his team completed The Dish&amp;#8217;s migration from The Daily Beast, transitioning fully to a reader-supported model. In an article posted to The Verge a few hours later titled &lt;a href="http://www.theverge.com/2013/2/4/3949834/andrew-sullivan-the-dish-experiment-goes-live"&gt;&lt;em&gt;Andrew Sullivan&amp;#8217;s grand experiment in reader-supported online journalism is now live&lt;/em&gt;&lt;/a&gt;, Jeff Blagdon describes the challenges facing The Dish as one of the first major websites to become reader-supported:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Prominent political blogger Andrew Sullivan&amp;#8217;s site The Dish is now up and running at its new user-funded home. So far, the ad-free experiment appears to be a success, with Sullivan pulling in $511,000 in revenue over the five weeks that passed since the project was announced &amp;#160;&amp;#8212;&amp;#160; half of the $1 million the writer says he needs to run the site for a year.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Jeff went on to question the plausibility of The Dish reaching its funding goal in the coming weeks, skeptical of whether or not it was possible. But Andrew has a plan, detailed in The Verge&amp;#8217;s piece &lt;a href="http://www.theverge.com/2013/1/2/3827960/andrew-sullivan-dish-blog-leaving-daily-beast-for-reader-subscription-model"&gt;&lt;em&gt;Andrew Sullivan leaving The Daily Beast for ad-free, reader-supported blog&lt;/em&gt;&lt;/a&gt; as well as on The Dish&amp;#8217;s own site in &lt;a href="http://dish.andrewsullivan.com/2013/02/04/migration-explained/"&gt;&lt;em&gt;Migration Explained&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Starting Monday morning, some posts will have a blue &amp;#8216;Read On&amp;#8217; button. If you click that button, the post will expand for continued reading, just as in the past. If you&amp;#8217;re a subscriber, you will always be able to access all read-on material. If you are a non-subscriber, you will be limited to seven read-on clicks during a 30-day period. If you open a read-on post in a new window, that will also count against the read-on meter. If non-subscribers max out the read-on meter, all content above a read-on will still be free and accessible - but the deeper dish won&amp;#8217;t be.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Striking the delicate balance between a full-on paywall and leaving their content open for anyone to read, The Dish&amp;#8217;s segregation strategy fills me with hope for other major websites forsaking ads in place of reader contributions in one form or another. He continues:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Incoming links from other blogs and websites will never, ever count toward the meter; other bloggers need not fear that their readers won&amp;#8217;t be able to see content they link to. I want to personally soothe Dan Savage&amp;#8217;s concern on this point.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While I foresee this becoming a problem, I applaud The Dish&amp;#8217;s foresight to create their paywall strategy with bloggers in mind. All in all The Dish has a very interesting plan, one that I hope to see succeed in the coming months.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://dish.andrewsullivan.com"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 04 Feb 2013 15:17:17 GMT</pubDate><guid isPermaLink="true">http://dish.andrewsullivan.com</guid></item><item><title>Write a Good Title, Please</title><link>https://zacs.site/blog/write-a-good-title.html</link><description>&lt;p&gt;On Saturday, Jim Dalrymple posted an article to his blog &lt;a href="http://loopinsight.com/"&gt;The Loop&lt;/a&gt; called &amp;#8220;&lt;a href="http://www.loopinsight.com/2013/02/02/scientists-create-near-living-crystal/"&gt;Scientists create near living crystal&lt;/a&gt;&amp;#8221;. When the article scrolled into view, I mused as to why a scientist creating something near a living crystal would be of any interest. After all, creating things is part of the scientist&amp;#8217;s job, is it not? Then yesterday afternoon I saw an article titled &amp;#8220;&lt;a href="http://sciencenordic.com/we-should-only-work-25-hours-week-argues-professor"&gt;We should only work 25 hours a week, argues professor&lt;/a&gt;&amp;#8221; from Science Nordic. Although the first time around I opted not to open it, curiosity got the better of me the second time I scrolled through Hacker News. I opened the page expecting to find a misguided, self-righteous professor of some degree (pun intended) pontificating as to why he felt academics should only work 25 hours a week. What I found, however, was an interesting piece proposing that rather than whiling away our youth working at the expense of spending time with family and friends only to find ourselves with an inordinate amount of free time in our latter years, we should instead work for greater portions of our lifespan in exchange for shorter work weeks.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/write-a-good-title.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 04 Feb 2013 14:03:43 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/write-a-good-title.html</guid></item><item><title>The Hypercritical Way</title><link>http://david-smith.org/blog/2012/12/21/the-hypercritical-way/</link><description>&lt;p&gt;&amp;#8220;One of the most refreshing parts of the show is how humbly John approaches his opinions. It isn&amp;#8217;t about him getting it correct, it is about arriving at the best result possible through collective effort. Nearly half of the show is John discussing follow-up comments he has received about past topics. Sharing his platform with the opinions and comments of others always felt incredibly intellectually honest.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I finally got around to David Smith&amp;#8217;s article The Hypercritical Way after hearing about it during Hypercritical&amp;#8217;s final episode, &lt;a href="http://5by5.tv/hypercritical/100"&gt;Metacritical&lt;/a&gt;. While the passage quoted above is a good attempt at quantifying one of the many reasons so many people loved Hypercritical so much, you will never find the actual reason written in a paragraph regardless of how many pages that paragraph spans. The compilation of selected excerpts at the end of the article gets closer to defining that feeling, but nevertheless falls short in an act only listening to every single episode will ever accomplish.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://david-smith.org/blog/2012/12/21/the-hypercritical-way/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 04 Feb 2013 14:02:03 GMT</pubDate><guid isPermaLink="true">http://david-smith.org/blog/2012/12/21/the-hypercritical-way/</guid></item><item><title>How to send and receive files like a professional</title><link>https://purpleidea.com/blog/2013/02/04/how-to-send-and-receive-files-like-a-professional/</link><description>&lt;p&gt;Everyone needs to send and receive files sometimes. Traditionally people send files as email attachments. This still works great, and supports encryption, but many mail servers are slow and cap the upper file size limit.&lt;/p&gt;
&lt;p&gt;ICQ was a great solution back in the 1990&amp;rsquo;s, but those days are now over. (I still remember my number.)&lt;/p&gt;
&lt;p&gt;A lot of folks use dropbox, which requires a dropbox account, and for you to trust them with your files.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Mon, 04 Feb 2013 12:56:35 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/02/04/how-to-send-and-receive-files-like-a-professional/</guid></item><item><title>What Twitter Really Looks Like</title><link>http://www.theatlantic.com/technology/archive/2013/01/what-twitter-really-looks-like/272583/</link><description>&lt;p&gt;&amp;#8220;What&amp;#8217;s maybe most striking about Tweetping is its presentation of data in pulses and punctuations: boomboomboomboom-PAUSE. That&amp;#8217;s largely an accident of interface, but it also suggests something profound about Twitter and the social web: This stuff has a beat. It has rhythms and rushes and respites. It&amp;#8217;s its own kind of organism, with its own kind of pulses &amp;#160;&amp;#8212;&amp;#160; its own kind of heartbeat.&amp;#8221;&lt;/p&gt;

&lt;p&gt;At first, the &lt;a href="http://tweetping.net/"&gt;Tweetping&lt;/a&gt; world map is nearly empty. A combination of javascript libraries begin parsing a real time stream of data from the Twitter API though, and the map quickly begins to populate. Within a few minutes, the map becomes a somewhat accurate representation of the world&amp;#8217;s Twitter activity. Although Tweetping has been the recipient of &lt;a href="http://www.wired.com/design/2013/02/tweetping/"&gt;some criticism&lt;/a&gt; since coming to widespread attention this past weekend, it is nevertheless one of the best Twitter activity visualizations on the internet. This morning, over breakfast, I used it to watch the West Coast wake up.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theatlantic.com/technology/archive/2013/01/what-twitter-really-looks-like/272583/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 04 Feb 2013 10:58:50 GMT</pubDate><guid isPermaLink="true">http://www.theatlantic.com/technology/archive/2013/01/what-twitter-really-looks-like/272583/</guid></item><item><title>Error handling for Lua object classes in Ceph</title><link>https://makedist.com/posts/2013/02/04/error-handling-for-lua-object-classes-in-ceph/</link><description>Improving the ergonomics of building object classes in Ceph with Lua.</description><author>Noah Watkins</author><pubDate>Mon, 04 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://makedist.com/posts/2013/02/04/error-handling-for-lua-object-classes-in-ceph/</guid></item><item><title>walk it off brother</title><link>http://wholelarderlove.com/walk-it-off-brother/</link><description>&lt;p&gt;Rohan Anderson of &lt;a href="http://wholelarderlove.com/"&gt;Whole Larder Love&lt;/a&gt;, also featured in &lt;a href="http://vimeo.com/48864768"&gt;The Smokehouse&lt;/a&gt;, a video I discovered last week chronicling the construction of his personal smokehouse:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Sometimes when the pressure of city living would build to boiling point, I&amp;#8217;d pack up my car and head bush. At times there would be a sense of insecurity, even fear, of the bush. Even though I grew up there, I would still be intimated. Why? Because I&amp;#8217;d become a synthetic human. I&amp;#8217;d spent far too much time at a desk under dull lights staring at a computer. I&amp;#8217;d eat in the tea room, or the cafeteria with the other robots, and I&amp;#8217;d spend hours between 8am - 5pm working on databases and spreadsheets and numerous other useless tasks. So when it came to the breaking point, I&amp;#8217;d pack the camping gear in the car and head bush, I ended up both intimidated and impressed by the bush, as it had become foreign to a certain extent.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://wholelarderlove.com/walk-it-off-brother/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 03 Feb 2013 22:07:28 GMT</pubDate><guid isPermaLink="true">http://wholelarderlove.com/walk-it-off-brother/</guid></item><item><title>Smart &amp;amp; Funny</title><link>http://vimeo.com/1212142</link><description>&lt;p&gt;Following this morning&amp;#8217;s &lt;a href="https://twitter.com/ylnt/status/297802332220055552"&gt;announcement&lt;/a&gt; that the popular podcast You Look Nice Today would come to a close &lt;a href="https://twitter.com/ylnt/status/297802897729671168"&gt;with one final episode&lt;/a&gt;, Rebecca O&amp;#8217;Malley tweeted a link to a video from 2009 titled Smart &amp;#38; Funny:&lt;/p&gt;



&lt;p&gt;I&amp;#8217;m sad to see the podcast end; it has been one of my favorites for quite some time now. For those looking to fill the void left after You Look Nice Today airs its final episode, check out one of Merlin Mann&amp;#8217;s other podcasts &lt;a href="http://www.merlinmann.com/roderick/"&gt;Roderick on the Line&lt;/a&gt;, now in its sixty-fourth episode. All the best to Merlin Mann, Scott Simpson, and Adam Lisagor: keep up the great work guys, your show will be missed.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://vimeo.com/1212142"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 03 Feb 2013 22:06:38 GMT</pubDate><guid isPermaLink="true">http://vimeo.com/1212142</guid></item><item><title>Making urxvt beautiful</title><link>https://bastian.rieck.me/blog/2013/making_urxvt_beautiful/</link><description>&lt;p&gt;For a long time, &lt;a href="http://software.schmorp.de/pkg/rxvt-unicode.html"&gt;&lt;code&gt;urxvt&lt;/code&gt;&lt;/a&gt; has been my favourite
terminal application. In the wake of all these theming approaches such as
&lt;a href="http://ethanschoonover.com/solarized"&gt;solarized&lt;/a&gt;, I decided to take another look at my
configuration. It turns out that teaching &lt;code&gt;urxvt&lt;/code&gt; to use another colour scheme is surprisingly easy.
Personally, I like the &lt;a href="http://tango.freedesktop.org/Tango_Icon_Theme_Guidelines"&gt;Tango colour
palette&lt;/a&gt;, so I added the following lines
to my &lt;code&gt;.Xdefault&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;urxvt*foreground: white
urxvt*background: black

*color0:  #2E3436
*color1:  #a40000
*color2:  #4E9A06
*color3:  #C4A000
*color4:  #3465A4
*color5:  #75507B
*color6:  #ce5c00
*color7:  #babdb9
*color8:  #555753
*color9:  #EF2929
*color10: #8AE234
*color11: #FCE94F
*color12: #729FCF
*color13: #AD7FA8
*color14: #fcaf3e
*color15: #EEEEEC
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To force &lt;code&gt;ls&lt;/code&gt; to to coloured listings, I added &lt;code&gt;alias ls='ls --color=auto'&lt;/code&gt; to my &lt;code&gt;.zshrc&lt;/code&gt; file. As
a final touch, I wanted some transparency for &lt;code&gt;urxvt&lt;/code&gt;. Since I am not using a composite window
manager, I settled for the &amp;ldquo;face&amp;rdquo; transparency option of &lt;code&gt;urxvt&lt;/code&gt;. This required the addition of only
two lines to &lt;code&gt;.Xdefaults&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;urxvt*transparent: true
urxvt*shading: 15
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, the amount of shading should be customized to &lt;em&gt;your&lt;/em&gt; personal preferences. It is
surprising how much more I like the command-line now. If you want to use a single theme for &lt;em&gt;all&lt;/em&gt;
applications, including your window manager, I would suggest looking at the &lt;a href="http://blog.liangzan.net/blog/2012/01/19/my-solarized-themed-arch-linux-setup/"&gt;blog of Liang
Zan&lt;/a&gt;. He really goes
the extra mile and customizes &lt;em&gt;every last aspect&lt;/em&gt; of his shell and associated programs&amp;hellip;&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Sun, 03 Feb 2013 20:54:40 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/making_urxvt_beautiful/</guid></item><item><title>Apple's 2013 To-Do List</title><link>http://hypercritical.co/2013/02/02/apples-2013-to-do-list</link><description>&lt;p&gt;John Siricusa on Apple&amp;#8217;s to-do list for the coming year, posted to his personal blog &lt;a href="http://hypercritical.co/"&gt;Hypercritical&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I didn&amp;#8217;t just lead Apple to a record quarterly profit of $13.1 billion on sales of $54.5 billion, so I don&amp;#8217;t expect to be consulted. But were Tim to ask me, here&amp;#8217;s what I would tell him Apple should do in 2013&amp;#160;&amp;#8212;&amp;#160;in broad strokes, and in no particular order.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;John&amp;#8217;s third and seventh points, to diversify the iPhone product line and to improve iCloud, respectively, merit some discussion. A few weeks ago I wrote a post called &lt;a href="https://zacs.site/blog/the-problems-with-icloud.html"&gt;&lt;em&gt;The Problems with iCloud&lt;/em&gt;&lt;/a&gt;, in which I talked about Apple&amp;#8217;s latest foray into cloud services and my problems with the product. It would be a huge step forward for Apple to finally offer a cloud service superior to the competition&amp;#160;&amp;#8212;&amp;#160;superior to Dropbox. Underestimating the significance of those move would be a mistake.&lt;/p&gt;

&lt;p&gt;And then we have the suggestion to diversify the iPhone product line. I first saw this idea from Marco Arment late last week, and the Internet has been abuzz since then. I am not qualified to speculate as to the probability of these rumors, nor would I even if I did possess the knowledge; my goal in publishing this website is not to become the next John Gruber or Mac Rumors. I will, however, say this: by &amp;#8220;diversify the iPhone product line&amp;#8221;, everyone means to say that Apple should ship a cheaper iPhone. Whether or not Apple chooses to do this, however, is not a matter of feasibility in production or difficulty selling this new, nuance device, but whether Apple wishes to support the low-end market they will capture with a low-end iPhone.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://hypercritical.co/2013/02/02/apples-2013-to-do-list"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 03 Feb 2013 14:44:53 GMT</pubDate><guid isPermaLink="true">http://hypercritical.co/2013/02/02/apples-2013-to-do-list</guid></item><item><title>We Could All Be The Magazine</title><link>https://zacs.site/blog/we-could-all-be-the-magazine.html</link><description>&lt;p&gt;When I sat down to write earlier this evening there were a lot of things on my mind, my mind kept returning to the subject of design, still fresh in my mind after this site&amp;#8217;s redesign last weekend. As much as I like the clean and simple layout I have now, it is not very media-friendly. I made this choice early on in the design process partially because I very rarely desire to post any sort of content other than plain text, but also because I have not found an acceptable way to do so in a manner complementary to my site&amp;#8217;s design. Like &lt;a href="http://the-magazine.org"&gt;The Magazine&lt;/a&gt; in its early days, therefore my site does not feature anything but simple text. Although for the most part I am fine with that, I would nevertheless prefer to have the ability to post a cool or interesting sound byte, image, or video should the need present itself.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/we-could-all-be-the-magazine.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 03 Feb 2013 00:02:38 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/we-could-all-be-the-magazine.html</guid></item><item><title>SleekMVC, my PHP Framework, gets Routing support</title><link>https://thomashunter.name/posts/2013-02-02-sleekmvc-my-php-framework-gets-routing-support</link><author>Thomas Hunter II</author><pubDate>Sat, 02 Feb 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-02-02-sleekmvc-my-php-framework-gets-routing-support</guid></item><item><title>Culinary Crime</title><link>https://sam.hooke.me/teaandstuff/2013/02/culinary-crime/</link><description>&lt;p&gt;Proceedings began with a trip to All About Tea, whereupon we sampled the many delightful smells in search of a new flavour to consume. A packet of Lavender and Camomile Tea was purchased, the ingredients being, well, lavender and camomile. It smelt like &amp;ldquo;Grandma&amp;rsquo;s garden&amp;rdquo;, apparently. I guess that makes sense if your grandma had lavender flowers and whatnot. To replace our supply of Portsmouth Tea, which had run out, some Hampshire Tea was purchased instead to change things up a bit. Oh, and also a small packet of Lemongrass Fine Cut Tea. It smelt rather nice, you see.&lt;/p&gt;</description><author>Sam Hooke</author><pubDate>Fri, 01 Feb 2013 23:14:23 GMT</pubDate><guid isPermaLink="true">https://sam.hooke.me/teaandstuff/2013/02/culinary-crime/</guid></item><item><title>Growing JavaScript trees for #1GAM</title><link>https://liza.io/growing-javascript-trees-for-1gam/</link><description>&lt;p&gt;&lt;a href="http://liza.io/wp-content/uploads/2013/02/alientree.png"&gt;&lt;img alt="Alien Tree - One Game a Month" src="https://liza.io/images/2013/02/alientree.png" /&gt;&lt;/a&gt;I&amp;rsquo;ve managed to scrape something together before the January deadline - a tree growing experiment in ImpactJS. You can see the mess of code I have &lt;a href="https://github.com/drakonka/Alien-Tree"&gt;on GitHub&lt;/a&gt; (I&amp;rsquo;m still not sure why my code looks misaligned on GH and not in my editor&amp;hellip;) and play the actual game &lt;a href="http://liza.io/alientree"&gt;here&lt;/a&gt;. I&amp;rsquo;ve only tested in in Chrome so far and it&amp;rsquo;s buggy even there.&lt;/p&gt;</description><author>Liza Shulyayeva</author><pubDate>Fri, 01 Feb 2013 23:12:12 GMT</pubDate><guid isPermaLink="true">https://liza.io/growing-javascript-trees-for-1gam/</guid></item><item><title>npm modules: development and release versions</title><link>https://peterlyons.com/problog/2013/02/npm-modules:-development-and-release-versions/</link><description>&lt;p&gt;You are working on two npm modules that are both actively being developed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;my_app&lt;/code&gt;: some application, which depends on &lt;code&gt;my_lib&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;my_lib&lt;/code&gt;: a shared library&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There are 2 modes you'll need inside &lt;code&gt;my_app&lt;/code&gt;: 1) using a published release of &lt;code&gt;my_lib&lt;/code&gt; and 2) using a local development version of &lt;code&gt;my_lib&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Using a published release of &lt;code&gt;my_lib&lt;/code&gt; is standard faire:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;list &lt;code&gt;my_lib&lt;/code&gt; as a dependency in &lt;code&gt;my_app/package.json&lt;/code&gt;
1. &lt;code&gt;dependencies: {"my_lib": "1.2.x"}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cd my_app &amp;amp;&amp;amp; npm install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;npm will populate &lt;code&gt;my_app/node_modules/my_lib&lt;/code&gt; for you as you would expect&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To use your development version so you can easily make changes to both codebases and have them available with minimal fuss, set up this structure&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~&amp;#x2f;projects&amp;#x2f;my_app (working directory for the app)
~&amp;#x2f;projects&amp;#x2f;my_lib   (working directory for the lib)
~&amp;#x2f;projects&amp;#x2f;node_modules&amp;#x2f;my_lib (symlink to ..&amp;#x2f;..&amp;#x2f;my_lib)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can set this up with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p ~&amp;#x2f;projects&amp;#x2f;my_app ~&amp;#x2f;projects&amp;#x2f;my_lib ~&amp;#x2f;projects&amp;#x2f;node_modules
cd ~&amp;#x2f;projects&amp;#x2f;node_modules
ln -nsf ..&amp;#x2f;..&amp;#x2f;my_lib
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So now when developing &lt;code&gt;my_app&lt;/code&gt; and you want to use the local development version of &lt;code&gt;my_lib&lt;/code&gt;, just do :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~&amp;#x2f;projects&amp;#x2f;my_app
npm uninstall my_lib
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now node's &lt;code&gt;require&lt;/code&gt; function will load &lt;code&gt;my_lib&lt;/code&gt; from &lt;code&gt;~/projects/node_modules/my_lib&lt;/code&gt; and you are good to go. To switch back to a public of &lt;code&gt;my_lib&lt;/code&gt; just do:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~&amp;#x2f;projects&amp;#x2f;my_app
npm install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, there is &lt;a href="https://npmjs.org/doc/link.html"&gt;the npm link command&lt;/a&gt; which does something nearly identical to this, so far I prefer this approach as I find it a little simpler.&lt;/p&gt;</description><author>Pete's Points</author><pubDate>Fri, 01 Feb 2013 22:17:35 GMT</pubDate><guid isPermaLink="true">https://peterlyons.com/problog/2013/02/npm-modules:-development-and-release-versions/</guid></item><item><title>A Fifth Major U.S. Carrier</title><link>http://www.theverge.com/2013/2/1/3940718/dish-interest-clearwire-sprint-deal</link><description>&lt;p&gt;&amp;#8220;Should things pan out in Dish&amp;#8217;s favor, we could very well see a fifth major carrier here in the US, something that would certainly shake things up in the wireless market. Whether or not Dish is able to accomplish that with Clearwire or by pursuing another deal will have to be seen, but we wouldn&amp;#8217;t count the satellite provider out just yet.&amp;#8221;&lt;/p&gt;

&lt;p&gt;In episode sixty-four of &lt;a href="http:/5by5.tv/criticalpath"&gt;The Critical Path&lt;/a&gt;, &lt;a href="http://5by5.tv/criticalpath/64"&gt;Mano a Mano&lt;/a&gt;, Horace Dediu and Benedict Evans discussed, among other things, the state of the cellular carriers throughout the world, with special focus paid to networks in the United States and the myriad difficulties an entrant would face against the incumbents.&lt;/p&gt;

&lt;p&gt;Not surprisingly Horace and Benedict both made very insightful observations as to the impracticality of the move Dish seems to be making, and yet Dish nevertheless appears intent on becoming the fifth major carrier in the United States. It will be very interesting to see how this unfolds.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/2/1/3940718/dish-interest-clearwire-sprint-deal"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 01 Feb 2013 16:59:52 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/2/1/3940718/dish-interest-clearwire-sprint-deal</guid></item><item><title>Who Writes Wikipedia?</title><link>http://www.aaronsw.com/weblog/whowriteswikipedia</link><description>&lt;p&gt;&amp;#8220;When you put it all together, the story become clear: an outsider makes one edit to add a chunk of information, then insiders make several edits tweaking and reformatting it. In addition, insiders rack up thousands of edits doing things like changing the name of a category across the entire site &amp;#160;&amp;#8212;&amp;#160; the kind of thing only insiders deeply care about. As a result, insiders account for the vast majority of the edits. But it&amp;#8217;s the outsiders who provide nearly all of the content.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Another characteristically excellent article by Aaron Swartz, this time on Wikipedia.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.aaronsw.com/weblog/whowriteswikipedia"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 01 Feb 2013 12:41:19 GMT</pubDate><guid isPermaLink="true">http://www.aaronsw.com/weblog/whowriteswikipedia</guid></item><item><title>Using ProviderName to get the database connection</title><link>https://daniellittle.dev/dbproviderfactories</link><description>When setting your connection string in a .NET config file you can make use of the  attribute by using  and passing it the provider name.</description><author>Daniel Little Dev</author><pubDate>Fri, 01 Feb 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/dbproviderfactories</guid></item><item><title>Be more productive</title><link>http://www.aaronsw.com/weblog/productivity</link><description>&lt;p&gt;Aaron Swartz made a number of interesting observations and suggestions throughout this piece. Of those, this is my favorite, found near the end of the article:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I first got serious about this when I had to write essays for college. Writing essays isn&amp;#8217;t a particularly hard task, but it sure is assigned. Who would voluntarily write a couple pages connecting the observations of two random books? So I started making the essays into my own little jokes. For one, I decided to write each paragraph in its own little style, trying my best to imitate various forms of speech. (This had the added benefit of padding things out.) Another way to make things more fun is to solve the meta-problem. Instead of building a web application, try building a web application framework with this as the example app. Not only will the task be more enjoyable, but the result will probably be more useful.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.aaronsw.com/weblog/productivity"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 31 Jan 2013 13:10:16 GMT</pubDate><guid isPermaLink="true">http://www.aaronsw.com/weblog/productivity</guid></item><item><title>Lean into the Pain</title><link>http://www.aaronsw.com/weblog/dalio</link><description>&lt;p&gt;&amp;#8220;The problem is that the topics that are most painful also tend to be the topics that are most important for us: they&amp;#8217;re the projects we most want to do, the relationships we care most about, the decisions that have the biggest consequences for our future, the most dangerous risks that we run. We&amp;#8217;re scared of them because we know the stakes are so high. But if we never think about them, then we can never do anything about them.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Another insightful article by Aaron Swartz. I&amp;#8217;m sure it won&amp;#8217;t be the last.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.aaronsw.com/weblog/dalio"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 31 Jan 2013 12:58:50 GMT</pubDate><guid isPermaLink="true">http://www.aaronsw.com/weblog/dalio</guid></item><item><title>Why College Graduates are Underemployed</title><link>https://solomon.io/college-graduates-underemployed/</link><description>Recently the Center for College Affordability released a report titled “Why Are Recent College Graduates Underemployed?”</description><author>Sam Solomon</author><pubDate>Thu, 31 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/college-graduates-underemployed/</guid></item><item><title>Treat Problems, Not Symptoms</title><link>https://solomon.io/treat-problems-symptoms/</link><description>“We will provide the support necessary for all young Americans to complete college and meet a new goal by 2020, once again, America will have the highest…</description><author>Sam Solomon</author><pubDate>Thu, 31 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/treat-problems-symptoms/</guid></item><item><title>Want to write a search engine? Have some links</title><link>https://boyter.org/2013/01/want-to-write-a-search-engine-have-some-links/</link><description>&lt;p&gt;A recent comment I left on Hacker News managed to get quite a lot of up-votes which surprised me since it was effectively just a collection of links about search engines. You can read the full thread at &lt;a href="http://news.ycombinator.com/item?id=5129530"&gt;http://news.ycombinator.com/item?id=5129530&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Anyway since it did do so well I thought I would flesh it out with some more information. Here are a collection of posts/blogs/discussions which go into the details of how to write a search engine.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 31 Jan 2013 01:29:36 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/01/want-to-write-a-search-engine-have-some-links/</guid></item><item><title>Whither Link Posts?</title><link>http://shawnblanc.net/2013/01/whither-link-posts/</link><description>&lt;p&gt;Like Shawn Blanc, I too prefer to share interesting links I come across on my site rather than through Twitter or, dare I even say it, Facebook.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Like Lopp and Bowler, many people are migrating to Twitter as their outlet to share links. And while I think Twitter and App.net are great places for that, I personally like the idea of sharing most of the links I come across via my site.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I choose to link a post based on three criteria: my interest in the topic, whether I feel I can add to the conversation or not, and depending on the obscurity of the link. I don&amp;#8217;t link to an article or a product if I&amp;#8217;m not excited about it; I don&amp;#8217;t want to waste my readers&amp;#8217; time any more than I want to waste mine. If I can&amp;#8217;t add to the conversation in a significant way, I simply won&amp;#8217;t join it. There are already too many websites that do this. And for those gems hidden on the fiftieth page of Cabin Porn or buried at the end of a long article, I often link to those as a way to call attention to something excellent that otherwise might go unnoticed. That&amp;#8217;s how I link, relying on the quality of my commentary and prudence in determining whether to link to an article or not to separate my site from the myriad others that have adopted the linkblog format. That&amp;#8217;s how I define rather than copy.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://shawnblanc.net/2013/01/whither-link-posts/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 30 Jan 2013 18:24:51 GMT</pubDate><guid isPermaLink="true">http://shawnblanc.net/2013/01/whither-link-posts/</guid></item><item><title>Consume, process and produce data with Wishbone and RabbitMQ</title><link>https://smetj.net/consume-process-and-produce-data-with-wishbone-and-rabbitmq.html</link><description>&lt;p&gt;When I first came in touch with the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol"&gt;messaging&lt;/a&gt;&amp;nbsp;concept&amp;nbsp;it was some
kind of a revelation. &amp;nbsp;Ever since many solutions I work on involve
message brokers one way or the other. &amp;nbsp;Because of that, a design pattern
occurred hence the need for a Python framework allowing me to easily …&lt;/p&gt;</description><author>Jelle Smet</author><pubDate>Tue, 29 Jan 2013 23:07:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/consume-process-and-produce-data-with-wishbone-and-rabbitmq.html</guid></item><item><title>DIY</title><link>http://diy.org</link><description>&lt;p&gt;I came across this site partway through Cabin Porn earlier this week, but haven&amp;#8217;t had a chance to take a look at it until now. Everything from cartography to programming to circuitry, to shelter building and winter survival tips is rewarded on DIY, an interesting initiative using badges to reward kids for learning important life skills.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://diy.org"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 19:07:09 GMT</pubDate><guid isPermaLink="true">http://diy.org</guid></item><item><title>The Battle of Asakai</title><link>https://zacs.site/blog/the-battle-of-asakai.html</link><description>&lt;p&gt;Penny Arcade&amp;#8217;s piece &lt;a href="http://penny-arcade.com/report/editorial-article/planning-for-war-how-the-eve-online-servers-deal-with-a-3000-person-battle"&gt;Planning for war: how the EVE Online servers deal with a 3,000 person battle&lt;/a&gt; climbed to the front page of Hacker News early this afternoon, at which point I came across the article and, curious, opened it. Althoug I spent roughly the next hour reading &lt;a href="http://www.pcgamer.com/2013/01/28/eve-online-battle-asakai/"&gt;PC Gamer&lt;/a&gt; and &lt;a href="http://themittani.com/news/asakai-aftermath-all-over-cobalt-moon"&gt;The Mittani&amp;#8217;s coverage&lt;/a&gt; of the incident and watching &lt;a href="http://www.youtube.com/watch?v=001iQyju_Cs"&gt;a number&lt;/a&gt; &lt;a href="http://www.youtube.com/watch?v=TLqb-m1ZZUA"&gt;of videos&lt;/a&gt; taken during the battle, I still can&amp;#8217;t quite wrap my head around a fight consisting of more than 3,000 individuals. Amazing.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-battle-of-asakai.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 17:43:02 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-battle-of-asakai.html</guid></item><item><title>This Post is Not About the 128GB iPad 4</title><link>https://zacs.site/blog/the-128gb-ipad-4.html</link><description>&lt;p&gt;Having &lt;a href="https://zacs.site/blog/cabin-porn.html"&gt;just&lt;/a&gt; &lt;a href="https://zacs.site/blog/the-patron-saint-of-cabin-porn.html"&gt;finished&lt;/a&gt; &lt;a href="https://zacs.site/blog/glass-lodge.html"&gt;going&lt;/a&gt; &lt;a href="https://zacs.site/blog/another-cabin-porn-update.html"&gt;through&lt;/a&gt; &lt;a href="https://zacs.site/blog/sharecroppers-cabin.html"&gt;every&lt;/a&gt; &lt;a href="https://zacs.site/blog/yukon-territory.html"&gt;article&lt;/a&gt; &lt;a href="https://zacs.site/blog/this-must-be-the-place.html"&gt;posted&lt;/a&gt; to Cabin Porn over the last four years, I thought it would be appropriate to take a step back, shift gears quickly, and write some observations about a rumor that has quickly gained a lot of traction over the past few hours. I am, of course, referring to the rumor of a 128GB iPad 4. As I thought more and more about it though, as I read &lt;a href="http://9to5mac.com/2013/01/27/apple-ready-to-release-additional-ipad-model-likely-128gb-version/"&gt;9to5 Mac&amp;#8217;s coverage of the rumor&lt;/a&gt;, &lt;a href="http://daringfireball.net/linked/2013/01/28/gurman-128"&gt;John Gruber&amp;#8217;s take&lt;/a&gt;, and &lt;a href="http://www.theverge.com/2013/1/28/3926532/5th-generation-ipad-part-potentially-revealed-in-leaked-image"&gt;potential substantiation by The Verge shortly thereafter&lt;/a&gt;, and as I watched &lt;a href="http://vimeo.com/52357425"&gt;A day in the life from Whole Larder Love&lt;/a&gt;, the realization that the iPad 4 rumor was not what I wanted to write about slowly dawned on me. I suppose in order to give that epiphany any degree of substance I should provide some background.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-128gb-ipad-4.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 12:29:00 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-128gb-ipad-4.html</guid></item><item><title>Thirty</title><link>http://brooksreview.net/2012/12/thirty/</link><description>&lt;p&gt;I accidentally re-discovered this article last night as I was writing &lt;a href="https://zacs.site/blog/the-128gb-ipad-4.html"&gt;&lt;em&gt;This Post is Not About the 128GB iPad 4&lt;/em&gt;&lt;/a&gt;, as I was looking for the link to &lt;a href="http://brooksreview.net/2011/12/knife-follow-up/"&gt;Ben Brooks&amp;#8217;s knife reviews&lt;/a&gt;. #20 is probably my favorite:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Don&amp;#8217;t give a shit about what people think of your honest opinion. If you think Android is better than iOS, Windows better than Mac, and Nikon better than Canon &amp;#160;&amp;#8212;&amp;#160; so be it. You&amp;#8217;d be wrong, but at least you&amp;#8217;re standing for what you believe in, and that&amp;#8217;s more important.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pandering came to mind the first time I read this and once again this time around. Something to keep in mind as you produce any sort of content attracting widespread attention and thus widespread criticism as well.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2012/12/thirty/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 12:22:42 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2012/12/thirty/</guid></item><item><title>That Phone Guy</title><link>https://zacs.site/blog/that-phone-guy.html</link><description>&lt;p&gt;Two of my favorites. My only complaint is that he didn&amp;#8217;t make more.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/that-phone-guy.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 12:22:04 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/that-phone-guy.html</guid></item><item><title>Something to it</title><link>https://zacs.site/blog/something-to-it.html</link><description>&lt;p&gt;I&amp;#8217;ve been making a lot of posts in the last 24 hours about Cabin Porn; I&amp;#8217;ve written a lot and linked to even more. At the risk of sounding repetitive, if I could condense all the insight I have gained over the past two days into a single paragraph, it would be the opening lines from &lt;a href="http://freecabinporn.com/post/13641808772/this-must-be-the-place-by-lost-found-films-50"&gt;John Coffer&amp;#8217;s video&lt;/a&gt; I linked to in &lt;a href="https://zacs.site/blog/this-must-be-the-place.html"&gt;&lt;em&gt;This Must Be the Place&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/something-to-it.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 02:07:58 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/something-to-it.html</guid></item><item><title>Vaibhav Puri: Founder of Taggito</title><link>https://solomon.io/vaibhav-puri-founder-of-taggito/</link><description>Vaibhav Puri is the founder of Taggito, a Madrid-based startup specializing in near field communication technology. Who are you, and what is your background?</description><author>Sam Solomon</author><pubDate>Tue, 29 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/vaibhav-puri-founder-of-taggito/</guid></item><item><title>My Problem with Cabin Porn</title><link>https://zacs.site/blog/my-problem-with-cabin-porn.html</link><description>&lt;p&gt;My problem, if it could even be called that, with my obviously beloved Cabin Porn tumblr is not really a problem as much as a twinge of disappointment I felt as I made my way through all fifty-six pages on the site. I was disappointed because as I neared and eventually surpassed the halfway point, fewer of the cabins were actually that: a cabin; rather, many of the structures featured on Cabin Porn were more akin to small houses than the cozy, generally handcrafted buildings nestled away from civilization I came to the site looking for. It got progressively worse as I approached the final page. Now granted, in recent years the folks at Beaver Brook have gotten much better at this, but it nevertheless left me feeling slightly dissatisfied when I closed page #56.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/my-problem-with-cabin-porn.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 01:16:24 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/my-problem-with-cabin-porn.html</guid></item><item><title>This Must Be the Place</title><link>http://freecabinporn.com/post/13641808772/this-must-be-the-place-by-lost-found-films-50</link><description>&lt;p&gt;John Coffer, in an excellent video produced by &lt;a href="http://www.lostfoundfilms.com/"&gt;Lost &amp;#38; Found Films&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I was living in Florida and I had a nice two-bedroom condominium, a garage, a swimming pool, some tangerine trees outside, a sports car and a Ford van. It wasn&amp;#8217;t really very fulfilling, in the end.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://freecabinporn.com/post/13641808772/this-must-be-the-place-by-lost-found-films-50"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 01:15:59 GMT</pubDate><guid isPermaLink="true">http://freecabinporn.com/post/13641808772/this-must-be-the-place-by-lost-found-films-50</guid></item><item><title>Yukon Territory</title><link>http://freecabinporn.com/post/17212355113/david-cartiers-homestead-in-the-yukon-territory</link><description>&lt;p&gt;&amp;#8220;The great thing about having my job evaporate into thin air was that we were able to move out of town to this nice, quiet place where the only traffic we ever see is the occasional passing of a neighbor&amp;#8217;s dog team.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://freecabinporn.com/post/17212355113/david-cartiers-homestead-in-the-yukon-territory"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 01:14:43 GMT</pubDate><guid isPermaLink="true">http://freecabinporn.com/post/17212355113/david-cartiers-homestead-in-the-yukon-territory</guid></item><item><title>Sharecropper's cabin</title><link>http://freecabinporn.com/post/13659061510/our-first-reader-submitted-cabin-our-follower</link><description>&lt;p&gt;&amp;#8220;My favorite detail: The chimney is built with stones collected from 30 different countries, a lifetime project for one of its previous, and apparently nomadic, owners.&amp;#8221;&lt;/p&gt;

&lt;p&gt;As if the unique and often quite intricate designs were not enough to separate these cabins.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://freecabinporn.com/post/13659061510/our-first-reader-submitted-cabin-our-follower"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 01:13:55 GMT</pubDate><guid isPermaLink="true">http://freecabinporn.com/post/13659061510/our-first-reader-submitted-cabin-our-follower</guid></item><item><title>Another Cabin Porn Update</title><link>https://zacs.site/blog/another-cabin-porn-update.html</link><description>&lt;p&gt;Rather than posting separate articles for each cool cabin I came across or interesting story I found on &lt;a href="http://freecabinporn.com"&gt;Cabin Porn&lt;/a&gt; throughout this past day, I decided to condense the day&amp;#8217;s updates into a single post. There are a few cabins, however, whose stories merited more than a simple line item on an imposingly long list, and for those I did make an exception.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/another-cabin-porn-update.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 01:13:19 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/another-cabin-porn-update.html</guid></item><item><title>Tools &amp;amp; Toys</title><link>http://toolsandtoys.net/</link><description>&lt;p&gt;A very cool website Shawn Blanc runs along with a small staff of other writers from around the internet. I first learned of Tools &amp;#38; Toys in episode #25 of the CMD+SPACE podcast, &lt;a href="http://www.70decibels.com/cmdspace/2013/1/23/026-a-full-time-masterclass-with-shawn-blanc.html"&gt;&lt;em&gt;A &amp;#8216;Full-Time&amp;#8217; Masterclass, with Shawn Blanc&lt;/em&gt;&lt;/a&gt;, and then spent some time earlier this afternoon taking a cursory look at the group&amp;#8217;s work. Not surprisingly, it&amp;#8217;s top-notch.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://toolsandtoys.net/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 29 Jan 2013 01:12:31 GMT</pubDate><guid isPermaLink="true">http://toolsandtoys.net/</guid></item><item><title>Algorithms, Data Structures &amp;amp; Protocols</title><link>https://blog.separateconcerns.com/2013-01-28-algorithms-data-structures-protocols.html</link><description>&lt;section id="Algorithms-Data-Structures"&gt;
&lt;h2&gt;Algorithms &amp;amp; Data Structures&lt;/h2&gt;
&lt;p&gt;For a long time I have thought that there were only two fundamental parts to Computer Science: Algorithms and Data Structures. This is how it used to be taught, and how I think it should still be taught to beginners.&lt;/p&gt;
&lt;p&gt;There are two main categories of parts in a computer: processing units (CPUs, GPUs…) and data storage units (caches, RAM, disk…). Your typical information processing program takes data from a durable storage unit, moves it to a temporary storage unit, modifies it thanks to a processing unit and stores the result in a permanent storage unit. Of course there are variations around this theme, and some programs do a bit of extra work such as handling user input, but that is the idea.&lt;/p&gt;
&lt;p&gt;We call “algorithms” the different ways we instruct the processing units to act on the data and “data structures” the different layouts we use to store data in the storage units.&lt;/p&gt;
&lt;p&gt;A very simple view of fundamental CS could be summed up to these two disciplines. You may argue that other things are indispensable, for instance theoretical aspects like lambda calculus or Turing machines, or maybe paradigms. You would be right, these things are important, but if you &lt;strong&gt;really&lt;/strong&gt; want the baseline, it all comes down to algorithms and data structures.&lt;/p&gt;
&lt;p&gt;Or so I thought.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Protocols"&gt;
&lt;h2&gt;Protocols&lt;/h2&gt;
&lt;p&gt;It turns out looking at the aforementioned parts of the computer is not enough. We need to look at the negative space too: how does the
data move around? Inside the computer, data mostly circulates in buses. Between computers, data may circulate in networks, on detachable storage units…&lt;/p&gt;
&lt;p&gt;With computers becoming increasingly parallel, the Internet reaching ubiquity and programs turning into complex distributed systems, understanding the interactions between computer parts, software parts or entirely different systems has become a necessity. This reveals a third fundamental side of CS, on equal footing with algorithms and data structures: protocols.&lt;/p&gt;
&lt;p&gt;Protocols are more present in CS than you may think. Even the original vision of OOP by Alan Kay was mostly about protocols. Joe Armstrong, a father of Erlang, &lt;a href="http://erlang.org/pipermail/erlang-questions/2013-January/071944.html"&gt;recently insisted&lt;/a&gt; on the necessity to teach protocols (and algorithms - if he had added data structures this post would look like plagiarism ;p).&lt;/p&gt;
&lt;p&gt;CS classes at engineering school did not teach me much or influence the way I write programs, but majoring in network engineering did. It made me start to think in terms of independent blocks and the protocols they use to communicate. I cultivated that vision during my MSc in distributed systems (it used to be called “grid computing”) and I still have it today.&lt;/p&gt;
&lt;p&gt;So when I see people arguing endlessly about static versus dynamic typing or such matters, I think: OK, that may be important, but do not forget CS is, at heart, about algorithms, data structures and protocols.&lt;/p&gt;
&lt;/section&gt;</description><author>Separate Concerns</author><pubDate>Tue, 29 Jan 2013 00:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.separateconcerns.com/2013-01-28-algorithms-data-structures-protocols.html</guid></item><item><title>Christiania</title><link>http://tinyhouseblog.com/tiny-house-concept/christiania-tiny-houses/</link><description>&lt;p&gt;&amp;#8220;A town within a city, a rebel neighborhood within a well-ordered society. This is Christiania (Freetown), Denmark, a small community smack dab in the middle of Copenhagen, Denmark. Within this community are tiny houses, built by hand and with whatever materials are within reach.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I found this article through a link on the Cabin Porn tumblr page. Christiania is not only home to a number of impressive cabins though, but also to a curious way of life made all the more interesting by the rules the residents abide by:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;The 900 or so freethinking individuals who inhabit the area are a self governing community who refuse to pay taxes to the Danish government, run their own businesses and schools, live without cars on unpaved roads, build their own houses, restaurants and civil buildings and even have their own currency.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://tinyhouseblog.com/tiny-house-concept/christiania-tiny-houses/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 28 Jan 2013 15:48:03 GMT</pubDate><guid isPermaLink="true">http://tinyhouseblog.com/tiny-house-concept/christiania-tiny-houses/</guid></item><item><title>Glass Lodge</title><link>http://freecabinporn.com/post/28090808148/glass-lodge-in-farellones-chile-submitted-by</link><description>&lt;p&gt;To once again reference Ben Brooks&amp;#8217;s article &lt;a href="http://brooksreview.net/2013/01/design-workspace/"&gt;&lt;em&gt;Fatal Design Flaw of Workspaces&lt;/em&gt;&lt;/a&gt;, he described his ideal workspace towards the end of the article:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I often dream of my ideal workspace:&lt;/p&gt;
&lt;p&gt;* 10,000 square foot space of nothing.&lt;/p&gt;
&lt;p&gt;* Four foot by ten foot desk in the center, made of wood.&lt;/p&gt;
&lt;p&gt;* Herman Miller Embody chair.&lt;/p&gt;
&lt;p&gt;* Concrete floors.&lt;/p&gt;
&lt;p&gt;* No windows.&lt;/p&gt;
&lt;p&gt;* Thirty foot ceiling.&lt;/p&gt;
&lt;p&gt;* Spot light illuminating only my desk.&lt;/p&gt;
&lt;p&gt;* Just the laptop on the desk.&lt;/p&gt;
&lt;p&gt;* No cables in sight.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As I read this description, I couldn&amp;#8217;t help but think about how different my own ideal workspace would be from this one. Where he dreams of a large expanse of nothing, dark except for well-lit area around his immaculate desk, I idealize a small cabin like the glass lodge linked at the top of this post: a bright, cozy space, isolated somewhere away from civilization where I can be alone to work. I suppose in that regard, at least, we can agree.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://freecabinporn.com/post/28090808148/glass-lodge-in-farellones-chile-submitted-by"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 28 Jan 2013 15:47:33 GMT</pubDate><guid isPermaLink="true">http://freecabinporn.com/post/28090808148/glass-lodge-in-farellones-chile-submitted-by</guid></item><item><title>American Canopy: Trees, Forests, and the Makings of a Nation</title><link>http://freecabinporn.com/post/26906123983/added-to-my-cabin-bookshelf-american-canopy-by</link><description>&lt;p&gt;&amp;#8220;My cabin at Beaver Brook is in a forest that used to be mostly dominated by white pines, the tallest trees in the Eastern United States. The forest was nearly clear cut and the logs were floated down the nearby Delaware River to Philadelphia where they were used as structural beams for buildings and British ships. ... Now, BB&amp;#8217;s trees are mostly 40-50 years old, though I&amp;#8217;m grateful there are still a few old growth trees to remind me of the previous magnificence of this historic forest.&amp;#8221;&lt;/p&gt;

&lt;p&gt;What struck me about this post as I scrolled through &lt;a href="http://freecabinporn.com/"&gt;Cabin Porn&lt;/a&gt; earlier this morning was not the sad story, but the cover of Erik Rutkow&amp;#8217;s book: featuring two cowboys, for lack of a better term, amidst a huge forest of leviathan trees. It saddens me to think that today, we lack both.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://freecabinporn.com/post/26906123983/added-to-my-cabin-bookshelf-american-canopy-by"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 28 Jan 2013 15:26:22 GMT</pubDate><guid isPermaLink="true">http://freecabinporn.com/post/26906123983/added-to-my-cabin-bookshelf-american-canopy-by</guid></item><item><title>The Abandonment of My Morals</title><link>https://zacs.site/blog/the-abandonment-of-my-morals.html</link><description>&lt;p&gt;I can&amp;#8217;t quite say for sure why I decided to go with this title, or, rather, what made it come to mind as the clock neared midnight last night. I had just finished &lt;a href="https://zacs.site/blog/the-art-of-not-saying-anything.html"&gt;&lt;em&gt;The Art of Not Saying Anything&lt;/em&gt;&lt;/a&gt; a few minutes ago, and some part of my mind was bemoaning the abandonment of a great majority of the lessons my English teacher instilled within me not long ago. Namely, to avoid be verbs and contractions; to write grammatically correct sentences; never to start a sentence with a conjunction; and never to address the reader directly. Over the past few months I have slowly abandoned many of these beliefs&amp;#160;&amp;#8212;&amp;#160;these morals, if you will&amp;#160;&amp;#8212;&amp;#160;one by one as I continue to evolve as a writer.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-abandonment-of-my-morals.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 28 Jan 2013 10:40:20 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-abandonment-of-my-morals.html</guid></item><item><title>The Art of Not Saying Anything</title><link>https://zacs.site/blog/the-art-of-not-saying-anything.html</link><description>&lt;p&gt;As I reflected upon &lt;a href="https://zacs.site/blog/cabin-porn.html"&gt;&lt;em&gt;Cabin Porn&lt;/em&gt;&lt;/a&gt; and finished &lt;a href="https://zacs.site/blog/the-patron-saint-of-cabin-porn.html"&gt;&lt;em&gt;The Patron Saint of Cabin Porn&lt;/em&gt;&lt;/a&gt; late last night, I thought back to something Jim Dalrymple and Merlin Mann talked about on the seventh episode of The Crossover, &lt;a href="http://5by5.tv/crossover/7"&gt;We Met at a Tequila Bar&lt;/a&gt;. It&amp;#8217;s late and I can&amp;#8217;t quite recall their exact words, but the gist of the discussion was that sometimes, you don&amp;#8217;t always need to write a thousand words&amp;#160;&amp;#8212;&amp;#160;or even a hundred, for that matter&amp;#160;&amp;#8212;&amp;#160;about something; sometimes, a simple &amp;#8220;Yep.&amp;#8221; will suffice. More is not always better.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-art-of-not-saying-anything.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 28 Jan 2013 10:38:18 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-art-of-not-saying-anything.html</guid></item><item><title>The Patron Saint of Cabin Porn</title><link>http://freecabinporn.com/post/33169675882/the-patron-saint-of-cabin-porn-of-all-the-many</link><description>&lt;p&gt;&amp;#8220;In 1968, at the age of 51, Dick left a life of ranching, carpentry and heavy machine repair to retire to Twin Lakes, Alaska in what is now Lake Clark National Park. Deposited by float plane, and carrying only the simplest of tools, he set out to build a homestead and survive the winter, alone in the wilderness.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I found this partway through the first ten pages of &lt;a href="http://freecabinporn.com/"&gt;Cabin Porn&lt;/a&gt; last night. At fifty-one to attempt something many will never attempt in their lifetime...such an amazing story. Inge Wegge and Jorn Ranum &lt;a href="http://freecabinporn.com/post/34097710799/in-2010-inge-wegge-and-j-rn-ranum-spent-9-months"&gt;did something similar in the Arctic Circle&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;In 2010, Inge Wegge and Jorn Ranum spent 9 months above the Arctic Circle surfing, snowboarding, and subsisting in a cabin they built of driftwood, stone, and sea debris.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://freecabinporn.com/post/33169675882/the-patron-saint-of-cabin-porn-of-all-the-many"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 28 Jan 2013 10:36:49 GMT</pubDate><guid isPermaLink="true">http://freecabinporn.com/post/33169675882/the-patron-saint-of-cabin-porn-of-all-the-many</guid></item><item><title>Cabin Porn</title><link>https://zacs.site/blog/cabin-porn.html</link><description>&lt;p&gt;When I finally got around to opening &lt;a href="http://freecabinporn.com/"&gt;Cabin Porn&lt;/a&gt; yesterday evening on another exotic living space binge brought on starting Friday afternoon with Ben Brooks&amp;#8217;s article &lt;a href="http://brooksreview.net/2013/01/design-workspace/"&gt;&lt;em&gt;Fatal Design Flaw of the Workspaces&lt;/em&gt;&lt;/a&gt;, I was excited. Posts like &lt;a href="http://huckberry.com/blog/posts/the-world-s-skinniest-house"&gt;&lt;em&gt;The World&amp;#8217;s Skinniest House&lt;/em&gt;&lt;/a&gt; and &lt;a href="http://huckberry.com/blog/posts/tiny-houses"&gt;&lt;em&gt;Tiny Houses&lt;/em&gt;&lt;/a&gt; over on Huckberry&amp;#160;&amp;#8212;&amp;#160;both linked to in Ben&amp;#8217;s article&amp;#160;&amp;#8212;&amp;#160;had rekindled a long-extinguished flame somewhere inside of me, igniting that visceral desire to discover something new and interesting. Here are a few of my favorites, in no particular order. I would be the happiest man in the world to have any one of these amazing cabins.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/cabin-porn.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 28 Jan 2013 10:34:43 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/cabin-porn.html</guid></item><item><title>First Crack's Complete Overhaul</title><link>https://zacs.site/blog/complete-overhaul.html</link><description>&lt;p&gt;Early Friday morning I started redesigning this site&amp;#8217;s layout. I wanted to create a better reading experience and place more emphasis on my content, with particular attention paid to the latest articles. Two days later, in the wee hours of Sunday morning, I closed my computer having not only accomplished my initial goals, but also after successfully completing a long-overdue complete overhaul of the content mangement system I drive this site with, First Crack. For those unfamiliar with my work on this Markdown-based content management system, check out &lt;a href="https://zacs.site/blog/introducing-first-crack.html"&gt;&lt;em&gt;Introducing First Crack&lt;/em&gt;&lt;/a&gt; and &lt;a href="https://zacs.site/blog/first-crack-in-practice.html"&gt;&lt;em&gt;First Crack in Practice&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/complete-overhaul.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 27 Jan 2013 18:01:31 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/complete-overhaul.html</guid></item><item><title>Renaming a GNOME keyring (for seahorse, the passwords and keyrings application)</title><link>https://purpleidea.com/blog/2013/01/27/renaming-a-gnome-keyring-for-seahorse-the-passwords-and-keyrings-application/</link><description>&lt;p&gt;The GNOME Keyring is a great tool to unify password management across the desktop. Sadly, Firefox is the one application that doesn&amp;rsquo;t support this natively. (Chrome actually does!)&lt;/p&gt;
&lt;p&gt;Seahorse is a useful tool to browse and manage your keyrings. Each keyring is physically stored in: &lt;em&gt;~/.gnome2/keyrings/&lt;strong&gt;$something&lt;/strong&gt;.keyring&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Usually the &amp;ldquo;&lt;strong&gt;&lt;em&gt;$something&lt;/em&gt;&lt;/strong&gt;&amp;rdquo;, matches the name of the keyring, however the real name comes from within the file. I had an older ubuntu machine running GNOME, and I wanted to import my keyring. Here&amp;rsquo;s how I did it:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Sun, 27 Jan 2013 17:33:50 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/01/27/renaming-a-gnome-keyring-for-seahorse-the-passwords-and-keyrings-application/</guid></item><item><title>Fatal Design Flaw of the Workspaces</title><link>http://brooksreview.net/2013/01/design-workspace/</link><description>&lt;p&gt;In pursuit of more perfect compromise between functionality and minimalism, Ben Brooks closed his article on minimalist spaces with an observation I found very vindicating, having made the switch almost wholly myself.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;I wonder if my perfect office really involves a laptop, or if it would be perfect with only an iPad and keyboard.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://brooksreview.net/2013/01/design-workspace/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 27 Jan 2013 14:36:24 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2013/01/design-workspace/</guid></item><item><title>Enable PHP Mail on OS X Mountain Lion</title><link>https://thomashunter.name/posts/2013-01-27-enable-php-mail-on-os-x-mountain-lion</link><author>Thomas Hunter II</author><pubDate>Sun, 27 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-01-27-enable-php-mail-on-os-x-mountain-lion</guid></item><item><title>Simple moving average Awk script</title><link>https://makedist.com/posts/2013/01/27/simple-moving-average-awk-script/</link><description>Wrangling time series data from the shell.</description><author>Noah Watkins</author><pubDate>Sun, 27 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://makedist.com/posts/2013/01/27/simple-moving-average-awk-script/</guid></item><item><title>How I learned to live with a 120GB  (after 500GB)</title><link>/posts/how-i-learned-to-live-with-a-120gb-after-500gb/</link><description>My laptop is from August &amp;lsquo;09, so it is now a little bit slow. It had a 500GB traditional spinning disk drive. I know, it is not dead yet, however random read/write is horrible. My Windows 7 installation took 1-2 minutes to boot and be ready to open new programs, so I have never closed my machine. I have always used hibernate/suspend. Opening heavy programs like Photoshop was not good. In fact, the biggest reason was, I am also using Linux for my development purposes.</description><author>Mustafa Akın</author><pubDate>Sat, 26 Jan 2013 22:32:49 GMT</pubDate><guid isPermaLink="true">/posts/how-i-learned-to-live-with-a-120gb-after-500gb/</guid></item><item><title>SplinterNet</title><link>https://github.com/megamattron/SplinterNet</link><description>&lt;p&gt;&amp;#8220;SplinterNet is a simple mobile app that allows users to author posts in a similar fashion to blogging or tweeting. These posts can contain text and a single image. However, rather than being hosting on internet servers, users distribute their posts by syncing with other app users via Bluetooth. The peer-to-peer syncing creates an ad hoc distribution network without requiring the use of mobile networks or any other monitored network infrastructure.&amp;#8221;&lt;/p&gt;

&lt;p&gt;A very interesting idea indeed, even when considered as simply another form of blogging&amp;#160;&amp;#8212;&amp;#160;a new platform for microblogging, perhaps. I look forward to hearing more from this app&amp;#8217;s creators as it evolves from development into a service suitable for widespread use.&lt;/p&gt;


                &lt;p&gt;&lt;a href="https://github.com/megamattron/SplinterNet"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 26 Jan 2013 20:45:08 GMT</pubDate><guid isPermaLink="true">https://github.com/megamattron/SplinterNet</guid></item><item><title>Those Who Make</title><link>http://vimeo.com/channels/thosewhomake/</link><description>&lt;p&gt;I have a particular fondness for hand-crafted things, and a special spot in my heart for crafting those things myself. &lt;a href="http://vimeo.com/channels/thosewhomake/"&gt;Those Who Make&lt;/a&gt; features masters of their respective crafts doing what they do best: making things. Since coming across the Vimeo channel in &lt;a href="http://shawnblanc.net/2013/01/those-who-make/"&gt;an article over on Shawn Blanc&amp;#8217;s blog&lt;/a&gt; last night, I only just managed to pull myself away for long enough to write this short post. As Shawn Blanc said, &amp;#8220;Click through with caution &amp;#160;&amp;#8212;&amp;#160; you may never come back.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://vimeo.com/channels/thosewhomake/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 26 Jan 2013 20:29:48 GMT</pubDate><guid isPermaLink="true">http://vimeo.com/channels/thosewhomake/</guid></item><item><title>The Problems with iCloud</title><link>https://zacs.site/blog/the-problems-with-icloud.html</link><description>&lt;p&gt;As a born PC user I rarely interact with iCloud on my main computer. Even on my iOS devices I rarely use iCloud, where, given the choice, I will choose Dropbox or some other method to sync documents and settings across devices. The most recent episode of Back to Work, &lt;a href="http://5by5.tv/b2w/103"&gt;&lt;em&gt;Lotta Little Knives&lt;/em&gt;&lt;/a&gt;, brought the issue to a head in my mind, and Ben Brooks&amp;#8217;s less recent article &lt;a href="http://brooksreview.net/2013/01/archiving-cloud/"&gt;&lt;em&gt;Archived Data, in the Cloud&lt;/em&gt;&lt;/a&gt;, in which he proposed an interesting solution to the topic at hand, prompted me to write this piece.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-problems-with-icloud.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 26 Jan 2013 20:28:21 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-problems-with-icloud.html</guid></item><item><title>Microsoft Surface RT Review</title><link>https://justingarrison.com/blog/2013-01-25-microsoft-surface-rt-review/</link><description>I was going to write a full review of the Surface RT but I just couldn’t bring myself</description><author>Justin Garrison's Homepage</author><pubDate>Fri, 25 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-01-25-microsoft-surface-rt-review/</guid></item><item><title>Sqlplus is my second home: Part 7 – Downloading files via sqlplus :-)</title><link>https://tanelpoder.com/2013/01/24/sqlplus-is-my-second-home-part-7-downloading-files-via-sqlplus/</link><description>&lt;p&gt;Some years ago I wrote about how sqlplus allows you to &lt;a href="https://tanelpoder.com/2007/08/31/sqlplus-is-my-second-home-part2/" target="_blank"&gt;run sqlplus scripts directly from HTTP and FTP locations&lt;/a&gt; instead of the local filesystem. By the way, I didn’t even notice – my blog is over 5 years old already! :)&lt;/p&gt;
&lt;p&gt;I a recent email thread &lt;a href="http://www.liberidu.com/blog/" target="_blank"&gt;Marco Gralike&lt;/a&gt; just showed the simplest way I to open a HTTP URL and download + list its contents in a CLOB datatype. It’s the &lt;a href="http://docs.oracle.com/database/121/ARPLS/t_dburi.htm#i1007928" target="_blank"&gt;HTTPURITYPE&lt;/a&gt; and its getCLOB (and getBLOB) methods.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Thu, 24 Jan 2013 23:17:22 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/01/24/sqlplus-is-my-second-home-part-7-downloading-files-via-sqlplus/</guid></item><item><title>Apple's Not the Only Interesting Company</title><link>https://zacs.site/blog/google-too.html</link><description>&lt;p&gt;After writing my last post, &lt;a href="https://zacs.site/blog/the-next-step.html"&gt;&lt;em&gt;The Next Step&lt;/em&gt;&lt;/a&gt;, and as I went back to perusing the steady stream of news and articles I proctor throughout the day, I started thinking about the prevalence of the Apple blog. I touched on this briefly in my last article. There&amp;#8217;s a strangely pervasive mentality in the blogosphere these days that in order to be successful, one must do some combination of three things: write about Apple, adopt the linkblog format, and post regularly, the argument being that few companies are as interesting to write about as Apple. For the most part, I agree with these requirements: nobody writes about Microsoft anymore, because Microsoft isn&amp;#8217;t doing anything revolutionary anymore; for the same reason, nobody writes about Samsung or Oracle or Adobe. But that doesn&amp;#8217;t mean Apple is the only interesting company on the market. As I said in my previous post, Google is doing many of the same things Apple does and receives so much attention for, although granted often to a lesser degree. In fact, Google does even more with their much broader research and development division, leading to the creation of driverless vehicles, augmented reality glasses, and, most recently, an experimental cell network. No other company in the world can claim the same.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/google-too.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 24 Jan 2013 16:32:54 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/google-too.html</guid></item><item><title>The Next Step</title><link>https://zacs.site/blog/the-next-step.html</link><description>&lt;p&gt;&amp;#8220;Now, Google&amp;#8217;s no stranger to crazy experiments, and not all of them will necessarily change the world: for every self-driving car and wearable display, there&amp;#8217;s an army of employees working on personal engineering projects. But it doesn&amp;#8217;t sound like that&amp;#8217;s what&amp;#8217;s happening here.&amp;#8221;  - Sean Hollister of The Verge in &lt;a href="http://www.theverge.com/2013/1/23/3909700/google-secret-wireless-network-maybe-dish-partnership"&gt;Google building secret wireless network, says it involves &amp;#8216;highly competitive consumer electronics&amp;#8217;&lt;/a&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/the-next-step.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 24 Jan 2013 16:32:44 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/the-next-step.html</guid></item><item><title>Open Source Agression</title><link>http://harthur.wordpress.com/2013/01/24/771/</link><description>&lt;p&gt;&amp;#8220;Can you imagine if one of these new open sourcerers took my advice and got this response, without the support I had. Can you imagine?&amp;#8221;&lt;/p&gt;

&lt;p&gt;Disappointing. If you see a problem but do nothing constructive to remedy it, are you really seeing the right problem?&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://harthur.wordpress.com/2013/01/24/771/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 24 Jan 2013 16:30:31 GMT</pubDate><guid isPermaLink="true">http://harthur.wordpress.com/2013/01/24/771/</guid></item><item><title>Custom Lua VM panic handler</title><link>https://makedist.com/posts/2013/01/24/custom-lua-vm-panic-handler/</link><description>Protecting your host application when Lua freaks out.</description><author>Noah Watkins</author><pubDate>Thu, 24 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://makedist.com/posts/2013/01/24/custom-lua-vm-panic-handler/</guid></item><item><title>Electronics &amp;amp; Beer</title><link>https://sam.hooke.me/teaandstuff/2013/01/electronics-and-beer/</link><description>&lt;p&gt;As is usual for tea club, we performed tangentially related activities. A tangent so long that one may struggle to see the connection with tea. That is indeed why we are named &amp;ldquo;Tea and Stuff&amp;rdquo;, because as well as tea, we do stuff.&lt;/p&gt;</description><author>Sam Hooke</author><pubDate>Wed, 23 Jan 2013 20:15:00 GMT</pubDate><guid isPermaLink="true">https://sam.hooke.me/teaandstuff/2013/01/electronics-and-beer/</guid></item><item><title>Nino Kuni, Studio Ghibli's gaming masterpiece</title><link>http://www.theverge.com/2013/1/23/3906010/studio-ghibli-ps3-game-ni-no-kuni</link><description>&lt;p&gt;Although the trailer features few live scenes from actual gameplay, it does exhibit impressive graphics especially when compared to traditional video game animations. I have high hopes for this game, and look forward to the day when live gameplay will be indiscernible from the animation used in the trailer.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/1/23/3906010/studio-ghibli-ps3-game-ni-no-kuni"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 23 Jan 2013 16:23:01 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/1/23/3906010/studio-ghibli-ps3-game-ni-no-kuni</guid></item><item><title>The Potential Inheritance of the Earth</title><link>http://jacobbacharach.wordpress.com/2013/01/23/the-potential-inheritance-of-the-earth-by-the-honey-badger/</link><description>&lt;p&gt;&amp;#8220;But when we&amp;#8217;re gone, its hydrogen will still continue fusing, irrespective of the politics of our successor race, whatever species next decides to fill its nearest star with qualities like love, intentionality, goodwill, and grace.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I take some issue with this fatalistic point of view. The hydrogen will indeed continue fusing regardless of the majority of the decisions we make today, but that fact should not be used to discount the change we can implement today to in some way effect future change.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://jacobbacharach.wordpress.com/2013/01/23/the-potential-inheritance-of-the-earth-by-the-honey-badger/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 23 Jan 2013 16:21:29 GMT</pubDate><guid isPermaLink="true">http://jacobbacharach.wordpress.com/2013/01/23/the-potential-inheritance-of-the-earth-by-the-honey-badger/</guid></item><item><title>Tweeting the News</title><link>http://www.theverge.com/2013/1/23/3890674/tweeting-the-news-andy-carvin-test-pilots-twitter-journalism</link><description>&lt;p&gt;In a space increasingly defined by Apple bloggers and their copycats, it is not only interesting to see another writer&amp;#8217;s process, but also to see how that creator works towards such a different end product using largely the same tools as those obfuscating this space.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Fundamentally what he&amp;#8217;s doing is quite simple: he tweets, and he retweets. A lot. Sometimes he goes 20 hours at a stretch, collating from those he follows and passing information on to his eighty thousand followers. He often interjects questions or critiques, building on what he&amp;#8217;s read and recruiting fact-checkers. The result can be simultaneously cacophonous, intimate, and illuminating.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.theverge.com/2013/1/23/3890674/tweeting-the-news-andy-carvin-test-pilots-twitter-journalism"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 23 Jan 2013 16:18:51 GMT</pubDate><guid isPermaLink="true">http://www.theverge.com/2013/1/23/3890674/tweeting-the-news-andy-carvin-test-pilots-twitter-journalism</guid></item><item><title>Canada is a schizophrenic country</title><link>https://honza.pokorny.ca/2013/01/canada-is-a-schizophrenic-country/</link><description>&lt;p&gt;I have now lived in Canada for over two years and there are some things that
Canadians can&amp;rsquo;t seem to make up their mind on.&lt;/p&gt;
&lt;h2 id="spelling"&gt;Spelling&lt;/h2&gt;
&lt;p&gt;Canadian spelling is stuck half way between British spelling and American
spelling.  Canadians will say:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;colour, favourite, honour (which are all British)&lt;/li&gt;
&lt;li&gt;program, realize (which are all American)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="measuring-units"&gt;Measuring units&lt;/h2&gt;
&lt;p&gt;When you&amp;rsquo;re driving in Canada, everything is in kilometers.  Snow fall is
measured in centimeters.  And yet, people insist on weighing and measuring
themselves in pounds.  We just had a baby girl here in Canada and they kept
saying, &lt;em&gt;Look she is so big, she is probably over eight.&lt;/em&gt;.  Sure, she was nice
and big but she certainly didn&amp;rsquo;t weight 8kg!  People ask me, &lt;em&gt;How tall are
you?&lt;/em&gt;, and I respond with 178 and receive blank stares.&lt;/p&gt;</description><author>Honza Pokorný</author><pubDate>Wed, 23 Jan 2013 13:26:00 GMT</pubDate><guid isPermaLink="true">https://honza.pokorny.ca/2013/01/canada-is-a-schizophrenic-country/</guid></item><item><title>evil.rb</title><link>https://caiustheory.com/evil-rb/</link><description>&lt;p&gt;Here be hax. Don&amp;rsquo;t &lt;strong&gt;ever&lt;/strong&gt; do these. ;-)&lt;/p&gt;
&lt;h2 id="reduce-local-variables-with-instance_eval"&gt;Reduce local variables with instance_eval&lt;/h2&gt;
&lt;p&gt;Sometimes (usually in a one-liner) I want to do some work with a value without assigning it to a variable. Chucking an &lt;code&gt;#instance_eval&lt;/code&gt; call in there will set &lt;code&gt;self&lt;/code&gt; to the value, which saves having to assign it to a local value. Pretty much only used by me in one-off scripts or cli commands.&lt;/p&gt;
&lt;h4 id="good"&gt;Good&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;start_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end_date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"24 Dec 2011"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"23 Jan 2013"&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="no"&gt;Date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;start_date&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; to &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;end_date&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;end_date&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;start_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_i&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; days"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="bad"&gt;Bad&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"24 Dec 2011"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"23 Jan 2013"&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="no"&gt;Date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;instance_eval&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; to &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;last&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_i&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; days"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;See, way less code! &lt;em&gt;cough, cough&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="bonus-usage-misdirection"&gt;Bonus usage: Misdirection&lt;/h3&gt;
&lt;p&gt;I also dropped some instance_eval on our campfire bot at &lt;a href="https://emberads.com/"&gt;EmberAds&lt;/a&gt; to always blame one person, but without the code reading as such.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sx"&gt;%w{Dom Mel Caius CBetta Baz}&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;instance_eval&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;"(4V5A8F5T=&amp;amp;$`"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unpack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"u"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That does not return one of the array elements as you might think it does from quickly scanning the code…&lt;/p&gt;
&lt;h2 id="set-method-local-variables-in-default-arguments"&gt;Set method-local variables in default arguments&lt;/h2&gt;
&lt;p&gt;You have a method and it takes one argument, which has a default value of &lt;code&gt;nil&lt;/code&gt; specified. You then run into the situation where you need to know if &lt;code&gt;nil&lt;/code&gt; was passed to the method, or if you&amp;rsquo;re getting the default value of &lt;code&gt;nil&lt;/code&gt;. You could change the default value to something you choose to be the &amp;ldquo;default value&amp;rdquo; and unlikely to be passed from elsewhere as the argument&amp;rsquo;s value, and reset the parameter to &lt;code&gt;nil&lt;/code&gt; after checking it, like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;output&lt;/span&gt; &lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ss"&gt;:default_value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="ss"&gt;:default_value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"caius"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;default&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;"name: &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inspect&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; -- default: &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inspect&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; "name: \"caius\" -- default: true"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"fred"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; "name: \"fred\" -- default: nil"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s quite a lot of code added to the method just to find out if we passed a default value or not. And if we forget to reset the value when it&amp;rsquo;s &lt;code&gt;:default_value&lt;/code&gt; then we end up leaking that into whatever the method does with that value. We also have the problem that one day the program &lt;em&gt;could&lt;/em&gt; possibly send that &amp;ldquo;default value&amp;rdquo; we&amp;rsquo;ve chosen as the actual parameter, and we&amp;rsquo;d blindly change it thinking it was set as the default value, not the passed argument.&lt;/p&gt;
&lt;p&gt;Instead we could (ab)use the power of ruby, and have ruby decide to set &lt;code&gt;default = true&lt;/code&gt; for us when, and only when, the variable is set &lt;em&gt;to&lt;/em&gt; the default value.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;output&lt;/span&gt; &lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="s2"&gt;"caius"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;"name: &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inspect&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; -- default: &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inspect&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; "name: \"caius\" -- default: true"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"fred"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; "name: \"fred\" -- default: nil"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can see, the output is identical. Yet we have no extra code &lt;em&gt;inside&lt;/em&gt; the method to figure out if we were given the default value or not. And as a bonus to that, we no longer have to check for a specific value being passed and presume that is actually the default, and not one passed by the program elsewhere.&lt;/p&gt;
&lt;p&gt;I posted this one in &lt;a href="https://gist.github.com/1528785"&gt;a gist&lt;/a&gt; a while back (to show &lt;a href="http://avdi.org/"&gt;Avdi&lt;/a&gt; it looks like), and people came up with some more insane things to do with it, including &lt;a href="https://gist.github.com/1528785#comment-71861"&gt;returning early&lt;/a&gt;, &lt;a href="https://gist.github.com/1528785#comment-71862"&gt;raising errors&lt;/a&gt; or even &lt;a href="https://gist.github.com/1528785#comment-71876"&gt;redefining the current method&lt;/a&gt;, all from the argument list! I&amp;rsquo;d suggest going to read them, it&amp;rsquo;s a mixture of OMG HAHA and OMFG NO WAY WHYY?!?!.&lt;/p&gt;
&lt;h3 id="dont-do-this"&gt;Don&amp;rsquo;t do this.&lt;/h3&gt;
&lt;p&gt;Don&amp;rsquo;t do the above. No really, don&amp;rsquo;t do them. Unless you&amp;rsquo;re writing a one-off thing. But seriously, don&amp;rsquo;t do them. :-D&lt;/p&gt;</description><author>Caius Theory</author><pubDate>Wed, 23 Jan 2013 13:07:43 GMT</pubDate><guid isPermaLink="true">https://caiustheory.com/evil-rb/</guid></item><item><title>Getting Started with Pandas - Predicting SAT Scores for New York City Schools</title><link>http://blog.untrod.com/2013/01/getting-started-with-pandas-predicting.html</link><description>&lt;h2&gt;An Introduction to Pandas&lt;/h2&gt;
&lt;p&gt;This tutorial will get you started with Pandas - a data analysis library for Python that is great for data preparation, joining, and ultimately generating well-formed, tabular data that's easy to use in a variety of visualization tools or (as we will see here) machine learning applications …&lt;/p&gt;</description><author>Untrod</author><pubDate>Wed, 23 Jan 2013 11:20:00 GMT</pubDate><guid isPermaLink="true">http://blog.untrod.com/2013/01/getting-started-with-pandas-predicting.html</guid></item><item><title>Updating an existing Github pull request</title><link>https://rd.nz/2013/01/updating-existing-github-pull-request.html</link><author>Rich Dougherty</author><pubDate>Wed, 23 Jan 2013 04:28:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/01/updating-existing-github-pull-request.html</guid></item><item><title>Tracking events in analytics systems</title><link>https://goshacmd.com/tracking-events-in-analytics-systems/</link><author>Gosha Spark</author><pubDate>Wed, 23 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://goshacmd.com/tracking-events-in-analytics-systems/</guid></item><item><title>The Right to Bear Arms</title><link>http://jacobbacharach.wordpress.com/2013/01/22/the-right-to-bear-arms</link><description>&lt;p&gt;A particularly astute observation from my favorite blog, Blogarach.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;America is a nation of tantrum-throwing moral infants that&amp;#8217;s been dragged bawling out of the crib of its own moral and ethical object impermanence, and even now it&amp;#8217;s kicking and screaming on the floor of the department store, yelling that some black guy got into a California law school ahead of a deserving white.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://jacobbacharach.wordpress.com/2013/01/22/the-right-to-bear-arms"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 22 Jan 2013 15:25:57 GMT</pubDate><guid isPermaLink="true">http://jacobbacharach.wordpress.com/2013/01/22/the-right-to-bear-arms</guid></item><item><title>Caesarian Sectionals</title><link>http://jacobbacharach.wordpress.com/2013/01/21/caesarian-sectionals/</link><description>&lt;p&gt;Another post from what is quickly becoming my favorite blog, and one of the few sites whose articles I consistent read.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;For all the po-faced, high-church sentimentality and stentorian sententiousness of the quadrennial American coronation day, there&amp;#8217;s something almost charmingly&amp;#160;&amp;#8212;&amp;#160;and disarmingly&amp;#160;&amp;#8212;&amp;#160;tacky about our great national junket jubilee, a certain plastic tablecloth, fire-hall wedding, warming-tray ziti trashiness that makes the fact that we are ultimately celebrating the ratification of one more dude&amp;#8217;s right to once more screw the poor and bomb the fuck out the rest of the world slightly more tolerable.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://jacobbacharach.wordpress.com/2013/01/21/caesarian-sectionals/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 22 Jan 2013 13:46:04 GMT</pubDate><guid isPermaLink="true">http://jacobbacharach.wordpress.com/2013/01/21/caesarian-sectionals/</guid></item><item><title>Sneak Peek Into The Future: Selectors, Level 4</title><link>http://coding.smashingmagazine.com/2013/01/21/sneak-peek-future-selectors-level-4/</link><description>&lt;p&gt;Lots of interesting things going in in this space right now.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://coding.smashingmagazine.com/2013/01/21/sneak-peek-future-selectors-level-4/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 22 Jan 2013 13:45:06 GMT</pubDate><guid isPermaLink="true">http://coding.smashingmagazine.com/2013/01/21/sneak-peek-future-selectors-level-4/</guid></item><item><title>Tumwhatnow?</title><link>http://hypercritical.co/2010/02/07/meta-intro</link><description>&lt;p&gt;John Siracusa in an article from 2010, in which he briefly discusses the problem faced by those wishing to enter into blogging.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Of course, now I just spent 20 minutes futzing with Tumblr themes (before giving up when I realized that I won&amp;#8217;t be happy with the results without investing many, many more hours) instead of writing the the post that motivated this little excursion in the first place.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For non-technical people, the problem is undoubtedly even worse. And while the advent of sites like Squarespace aim to lower the bar of entry, it is nevertheless still all too high, an unnecessary barrier preventing smart people from easily sharing their knowledge with the world.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://hypercritical.co/2010/02/07/meta-intro"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 22 Jan 2013 13:44:30 GMT</pubDate><guid isPermaLink="true">http://hypercritical.co/2010/02/07/meta-intro</guid></item><item><title>President Obama's Second Inaugural, as Heard By Conspiracy Theorists and Haters</title><link>http://www.theatlantic.com/politics/archive/2013/01/president-obamas-second-inaugural-as-heard-by-conspiracy-theorists-and-haters/266853/</link><description>&lt;p&gt;Absolutely hilarious.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theatlantic.com/politics/archive/2013/01/president-obamas-second-inaugural-as-heard-by-conspiracy-theorists-and-haters/266853/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 22 Jan 2013 13:42:59 GMT</pubDate><guid isPermaLink="true">http://www.theatlantic.com/politics/archive/2013/01/president-obamas-second-inaugural-as-heard-by-conspiracy-theorists-and-haters/266853/</guid></item><item><title>Put SQL together with the code that uses it</title><link>https://www.databasesandlife.com/inline-sql/</link><description>&lt;p&gt;The following &lt;a href="http://stackoverflow.com/questions/5303746/is-inline-sql-hard-coding/5303878#5303878" rel="noopener noreferrer" target="_blank"&gt;question&lt;/a&gt; was asked on Stack Overflow:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I have heard some strong developers say that &amp;ldquo;inline SQL in and of itself is not evil&amp;rdquo;. I do not understand how inline SQL is acceptable. To me its just like hard coding. Many a developer would scoff in my face for putting a connection string in the code vs a config file. So why is it that &amp;ldquo;SELECT value1,value2 FROM TABLE&amp;rdquo; is perfectly acceptable in compiled code?&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Tue, 22 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/inline-sql/</guid></item><item><title>Entity Framework and Foreign key constraint may cause cycles or multiple cascade paths</title><link>https://daniellittle.dev/ef-multiple-cascade-paths</link><description>Today I ran into the  issue for the first time. The first thing to note is the error isn't actually from Entity Framework it's from SQL…</description><author>Daniel Little Dev</author><pubDate>Mon, 21 Jan 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/ef-multiple-cascade-paths</guid></item><item><title>Life in Full Color</title><link>https://shawnblanc.net/category/full-color/</link><description>&lt;p&gt;Another article I glossed by a few weeks ago only to come back to it as the clock strikes midnight.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;The changes to my working (and sleeping) routine have forced me to write when it&amp;#8217;s time to write, not when I feel inspired.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At the time I didn&amp;#8217;t understand the concept of writing when it was time to write rather than when I felt inspired, which is why I didn&amp;#8217;t pay a great deal of attention to this article when Shawn Blanc first released it. At the time, I wrote when I felt inspired, not when it was time to write. At the time, there was no specific time to write, all the time was the time to write. And then my schedule got busy, and now I stay up late to write because it&amp;#8217;s what I love to do. Now I write when it&amp;#8217;s time to write.&lt;/p&gt;


                &lt;p&gt;&lt;a href="https://shawnblanc.net/category/full-color/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 21 Jan 2013 02:31:22 GMT</pubDate><guid isPermaLink="true">https://shawnblanc.net/category/full-color/</guid></item><item><title>A Day in the Life of Hunter S. Thompson</title><link>http://t.co/7uemxSNk</link><description>&lt;p&gt;When I first saw this tweet roll by in my feeds either earlier this week I didn&amp;#8217;t pay much attention to it. As I sit here and it&amp;#8217;s nearly midnight, however, John Gruber&amp;#8217;s excerpt came to mind: &amp;#8220;Midnight: Hunter ready to write.&amp;#8221; These days I have very small windows in which to write in: between homework and class during the day, and after I return home from FRC practice at 9:30 (at the earliest) each night. Outside of those small windows, which are all to frequently filled by one thing or another, I have the weekends. The weekends and midnight.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://t.co/7uemxSNk"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 21 Jan 2013 02:28:48 GMT</pubDate><guid isPermaLink="true">http://t.co/7uemxSNk</guid></item><item><title>North Korea: The Truman Show at Country Scale</title><link>https://zacs.site/blog/north-korea.html</link><description>&lt;p&gt;Certainly one of the most interesting comparison I have seen to a closed nation like Korea scrolled into view in my news feed as an article from The Verge titled &lt;a href="http://www.theverge.com/2013/1/20/3896570/sophie-schmidt-reports-on-north-korea-trip"&gt;&lt;em&gt;Eric Schmidt&amp;#8217;s daughter reports on creepy North Korea trip, says the country is like &amp;#8216;The Truman Show&amp;#8217;&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/north-korea.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 21 Jan 2013 02:27:02 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/north-korea.html</guid></item><item><title>Aaron Swartz on Blogs</title><link>http://www.aaronsw.com/weblog/stepback</link><description>&lt;p&gt;A few days ago in preparation for posting &lt;a href="https://zacs.site/blog/aaron-swartz.html"&gt;&lt;em&gt;We Have Lost One of Our Own&lt;/em&gt;&lt;/a&gt;, a short article I wrote eulogizing Aaron Swartz in response to the news that he had committed suicide, I spent some time perusing his work. This article, Take a Step Back, is one of the many I saved to Instapaper, and the one in which I found this interesting tidbit:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;There are the blogs on &amp;#8216;life hacks,&amp;#8217; which are full of gadgets and gizmos that seem to cause more problems than they solve. There are the anti-procrastination blogs, where the author has a constant stream of epiphanies that all seem to amount to &amp;#8216;just put away the distractions and get stuff done.&amp;#8217; And there are the charlatans, who tell you that all your wildest dreams can come true if you just follow their patented advice.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.aaronsw.com/weblog/stepback"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 20 Jan 2013 22:36:34 GMT</pubDate><guid isPermaLink="true">http://www.aaronsw.com/weblog/stepback</guid></item><item><title>Why the Heck?</title><link>https://zacs.site/blog/why-the-heck.html</link><description>&lt;p&gt;The title reworked for this article, Reginald Braithwaite&amp;#8217;s article &lt;a href="http://raganwald.posterous.com/why-the-fuck"&gt;&lt;em&gt;Why the Fuck?&lt;/em&gt;&lt;/a&gt; posted earlier today not only made it to the Hacker News front page, but to the top spot. He makes an interesting point to begin with, and then anticlimactically ended the piece with a call to arms in the fight against diabetes and obesity. But that&amp;#8217;s his point: today the glamorous projects aren&amp;#8217;t the ones helping people. The greatest technical minds of the previous generation spend their time at the Googles and Apples, at the Facebooks and Microsofts of today. Will we follow in their footsteps, or strike out on our own? And for those that do choose to walk a different path, where will that path lead?&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/why-the-heck.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 20 Jan 2013 22:32:32 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/why-the-heck.html</guid></item><item><title>"Every empire crumbles"</title><link>http://verynicewebsite.net/2013/01/every-empire-crumbles/</link><description>&lt;p&gt;I saw a similar post to this one a few days ago about Microsoft called &lt;a href="http://gravitationalpull.net/wp/?p=2312"&gt;&lt;em&gt;Fail Fail Fail iPad&lt;/em&gt;&lt;/a&gt; on Gravitational Pull, using preductions from years long past that coincidentally fit current events to predict the eventual demise of Microsoft. Both articles were wrong.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://verynicewebsite.net/2013/01/every-empire-crumbles/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 20 Jan 2013 15:33:08 GMT</pubDate><guid isPermaLink="true">http://verynicewebsite.net/2013/01/every-empire-crumbles/</guid></item><item><title>A Python Primer for Matlab Users</title><link>https://bastibe.de/2013-01-20-a-python-primer-for-matlab-users.html</link><description>&lt;blockquote&gt;
&lt;p&gt;Why would you want to use Python over Matlab?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Because Python is free and Matlab is not.&lt;/li&gt;
&lt;li&gt;Because Python is a general purpose programming language and Matlab is not.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let me qualify that a bit. Matlab is a very useful programming environment for numerical problems. For a very particular set of problems, Matlab is an awesome tool. For many other problems however, it is just about unusable. For example, you would not write a complex GUI program in Matlab, you would not write your blogging engine in Matlab and you would not write a web service in Matlab. You can do all that and more in Python.&lt;/p&gt;
&lt;h1&gt;Python as a Matlab replacement&lt;/h1&gt;
&lt;p&gt;The biggest strength of Matlab is its matrix engine. Most of the data you work with in Matlab are matrices and there is a host of functions available to manipulate and visualize those matrices. Python, by itself, does not have a convenient matrix engine. However, there are three packages (think Matlab Toolboxes) out there that will add this capability to Python:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Numpy (the matrix engine)&lt;/li&gt;
&lt;li&gt;Scipy (matrix manipulation)&lt;/li&gt;
&lt;li&gt;Matplotlib (plotting)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can either grab the individual installers for &lt;a href="http://python.org"&gt;Python&lt;/a&gt;, &lt;a href="http://numpy.org"&gt;Numpy&lt;/a&gt;, &lt;a href="http://scipy.org"&gt;Scipy&lt;/a&gt; and &lt;a href="http://matplotlib.org"&gt;Matplotlib&lt;/a&gt; from their respective websites, or get them pre-packaged from &lt;a href="https://code.google.com/p/pythonxy/"&gt;pythonxy()&lt;/a&gt; or &lt;a href="http://www.enthought.com/products/epd.php"&gt;EPD&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;A 30,000 foot overview&lt;/h1&gt;
&lt;p&gt;Like Matlab, Python is &lt;em&gt;interpreted&lt;/em&gt;, that is, there is no need for a compiler and code can be executed at any time as long as Python is installed on the machine. Also, code can be copied from one machine to another and will run without change.&lt;/p&gt;
&lt;p&gt;Like Matlab, Python is &lt;em&gt;dynamically typed&lt;/em&gt;, that is, every variable can hold data of any type, as in:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Python&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;         &lt;span class="c1"&gt;# a number&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# a list&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'text'&lt;/span&gt;    &lt;span class="c1"&gt;# a string&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Contrast this with C, where you can not assign different data types to the same variable:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;// C&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Unlike Matlab, Python is &lt;em&gt;strongly typed&lt;/em&gt;, that is, you can not add a number to a string.
In Matlab, adding a single number to a string will convert that string into an array of numbers, then add the single number to each of the numbers in the array. Python will simply throw an error.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;% Matlab&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'text'&lt;/span&gt;
    &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="c"&gt;% [121 106 125 121]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Python&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'text'&lt;/span&gt;
    &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="c1"&gt;# TypeError: Can't convert 'int' object to str implicitly&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Unlike Matlab, every Python file can contain as many functions as you like. Basically, you can organize your code in as many files as you want. To access functions from other files, use &lt;code&gt;import filename&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Unlike Matlab, Python is very quick to start. In fact, most operating systems automatically start a new Python process whenever you run a Python program and quit that process once the program has finished. Thus, every Python program behaves as if it indeed were an independent program. There is no need to wait for that big Matlab mother ship to start before writing or executing code.&lt;/p&gt;
&lt;p&gt;Unlike Matlab, the source code of Python is readily available. Every detail of Python's inner workings is available to everyone. It is thus feasible and encouraged to actively participate in the development of Python itself or some add-on package. Furthermore, there is no dependence on some company deciding where to go next with Python.&lt;/p&gt;
&lt;h1&gt;Reading Python&lt;/h1&gt;
&lt;p&gt;When you start up Python, it is a rather empty environment. In order to do anything useful, you first have to &lt;code&gt;import&lt;/code&gt; some functionality into your workspace. Thus, you will see a few lines of &lt;code&gt;import&lt;/code&gt; statements at the top of every Python file. Moreover, Python has &lt;em&gt;namespaces&lt;/em&gt;, so if you &lt;code&gt;import numpy&lt;/code&gt;, you will have to prefix every feature of Numpy with its name, like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;numpy&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zeros&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is clearly cumbersome if you are planning to use Numpy all the time. So instead, you can import all of Numpy into the global environment like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;numpy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ones&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Better yet, there is a pre-packaged namespace that contains the whole Numpy-Scipy-Matplotlib stack in one piece:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;pylab&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;randn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Note that Python does not plot immediately when you type &lt;code&gt;plot()&lt;/code&gt;. Instead, it will collect all plotting information and only show it on the screen once you type &lt;code&gt;show()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So far, the code you have seen should look pretty familiar. A few differences:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No semicolons at the end of lines;
In order to print stuff to the console, use the &lt;code&gt;print()&lt;/code&gt; function instead.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No &lt;code&gt;end&lt;/code&gt; anywhere.
In Python, blocks of code are identified by indentation and they always start with a colon like so:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Function definitions are different.
They use the &lt;code&gt;def&lt;/code&gt; keyword instead of &lt;code&gt;function&lt;/code&gt;.
You don't have to name the output variable names in the definition and instead use &lt;code&gt;return()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Python&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;% Matlab&lt;/span&gt;
    &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;
            &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;
        &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;There is no easy way to write out a list or matrix.
Since Python only gains a matrix engine by importing Numpy, it does not have a convenient way of writing arrays or matrices.   This sounds more inconvenient than it actually is, since you are probably using mostly functions like &lt;code&gt;zeros()&lt;/code&gt; or &lt;code&gt;randn()&lt;/code&gt; anyway and those work just fine. Also, many places accept Python lists (like this &lt;code&gt;[1, 2, 3]&lt;/code&gt;) instead of Numpy arrays, so this rarely is a problem. Note that you &lt;em&gt;must&lt;/em&gt; use commas to separate items and can not use semicolons to separate lines.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# create a numpy matrix:&lt;/span&gt;
    &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
               &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
               &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
    &lt;span class="c1"&gt;# create a Python list:&lt;/span&gt;
    &lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Arrays access uses brackets and is numbered from 0.
Thus, ranges &lt;em&gt;exclude&lt;/em&gt; the last number (see below).
Mostly, this just means that array access does not need any &lt;code&gt;+1&lt;/code&gt; or &lt;code&gt;-1&lt;/code&gt; when indexing arrays anymore.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;linspace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;one&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;two&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="c1"&gt;# &amp;quot;6:8&amp;quot; is a range of two elements:&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# &amp;lt;-- a Python list!&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Common traps&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Array slicing does not copy.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# [2 3 4]&lt;/span&gt;
    &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rand&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# this will change a and b!&lt;/span&gt;
    &lt;span class="c1"&gt;# make a copy like this:&lt;/span&gt;
    &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;copy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# copy=True can be omitted&lt;/span&gt;
    &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rand&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# changes only c&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Arrays retain their data type.
You can slice them, you can dice them, you can do math on them, but a 16 bit integer array will never lose its data type. Use &lt;code&gt;new = array(old, dtype=double)&lt;/code&gt; to convert an array of any data type to the default &lt;code&gt;double&lt;/code&gt; type (like in Matlab).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# pretend this came from a wave file:&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;int16&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="c1"&gt;# int16 only goes to 32768!&lt;/span&gt;
    &lt;span class="c1"&gt;# a is now [10000, 20000, 30000, -25536, -15536]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Going further&lt;/h1&gt;
&lt;p&gt;Now you should be able to read Python code reasonably well. Numpy, Scipy and Matplotlib are actually modeled after Matlab in many ways, so many functions will have a very similar name and functionality. A lot of the numerical code you write in Python will look very similar to the equivalent code in Matlab. For a more in-depth comparison of Matlab and Python syntax, head over to &lt;a href="http://www.scipy.org/NumPy_for_Matlab_Users"&gt;the Numpy documentation for Matlab users&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, since Python is a general purpose programming language, it offers some more tools. To begin with, there are a few more data types like associative arrays, tuples (unchangeable lists), proper strings and a full-featured object system. Then, there is a plethora of add-on packages, most of which actually come with your standard installation of Python. For example, there are &lt;a href="http://docs.python.org/3/library/internet.html"&gt;internet protocols&lt;/a&gt;, &lt;a href="http://www.riverbankcomputing.com/software/pyqt/intro"&gt;GUI programming frameworks&lt;/a&gt;, &lt;a href="https://people.csail.mit.edu/hubert/pyaudio/"&gt;real-time audio interfaces&lt;/a&gt;, &lt;a href="https://www.djangoproject.com"&gt;web frameworks&lt;/a&gt; and &lt;a href="http://www.pygame.org/"&gt;game development libraries&lt;/a&gt;. Even &lt;a href="https://github.com/bastibe/bastibe.github.com/tree/source"&gt;this very blog&lt;/a&gt; is created using a Python &lt;a href="http://pelican.readthedocs.org"&gt;static site generator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Lastly, Python has a great &lt;a href="http://docs.python.org/3/"&gt;online documentation site&lt;/a&gt; including a &lt;a href="http://docs.python.org/3.3/tutorial/"&gt;tutorial&lt;/a&gt;, there are &lt;a href="http://wiki.python.org/moin/PythonBooks"&gt;many books&lt;/a&gt; &lt;a href="http://www.learnpythonthehardway.org/"&gt;on Python&lt;/a&gt; and there is a helpful &lt;a href="http://wiki.python.org/moin/BeginnersGuide"&gt;Wiki on Python&lt;/a&gt;. There is also a &lt;a href="http://scipy.org/Cookbook"&gt;tutorial&lt;/a&gt; and &lt;a href="http://scipy.org/Getting_Started"&gt;documentation&lt;/a&gt; for Numpy, Scipy and &lt;a href="http://matplotlib.org/contents.html"&gt;Matplotlib&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A great way to get to know any programming language is to solve the first few problems on &lt;a href="https://projecteuler.net/"&gt;project euler&lt;/a&gt;.&lt;/p&gt;</description><author>bastibe.de</author><pubDate>Sun, 20 Jan 2013 12:55:00 GMT</pubDate><guid isPermaLink="true">https://bastibe.de/2013-01-20-a-python-primer-for-matlab-users.html</guid></item><item><title>New Wheels</title><link>https://dustin.lammiman.ca/photos/new-wheels/</link><description>&lt;p&gt;On Wednesday I picked up a new (used) car. 2001 Buick Century.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" class="" height="600" src="https://dustin.lammiman.ca/img/ZPDU9P2Pow-400.jpeg" width="800" /&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;img alt="" class="" height="600" src="https://dustin.lammiman.ca/img/_rlxmLq091-400.jpeg" width="800" /&gt;
&lt;p&gt;It is a little bittersweet though, as my old car got taken away today.&lt;/p&gt;
&lt;img alt="" class="" height="533" src="https://dustin.lammiman.ca/img/78m4Btt169-400.jpeg" width="400" /&gt;</description><author>Dustin.Lammiman</author><pubDate>Sun, 20 Jan 2013 02:31:44 GMT</pubDate><guid isPermaLink="true">https://dustin.lammiman.ca/photos/new-wheels/</guid></item><item><title>Tesco Value Tea</title><link>https://sam.hooke.me/teaandstuff/2013/01/tesco-value-tea/</link><description>&lt;p&gt;Tea Club was cancelled on Wednesday, so an impromptu belated meeting was held today instead, as all members were conveniently present thanks to a film night. This gave us the perfect opportunity for subjecting unaware participants to a very (un)scientific study.&lt;/p&gt;</description><author>Sam Hooke</author><pubDate>Sun, 20 Jan 2013 01:00:00 GMT</pubDate><guid isPermaLink="true">https://sam.hooke.me/teaandstuff/2013/01/tesco-value-tea/</guid></item><item><title>Madrid – OpenSpace Persistencia</title><link>https://danielpecos.com/2013/01/19/madrid-openspace-persistencia/</link><description>&lt;p&gt;&lt;em&gt;Persistencia&lt;/em&gt; ha sido el tema tratado en el OpenSpace que se ha realizado en las oficinas de tuenti. Hemos podido hablar sobre temas como NoSQL, ActiveRecord, BD basados en grafos, geoespaciales, … entre otros muchos. Ha habido mucho debate, con muchas opiniones, pero sobre todo muy buen ambiente.&lt;/p&gt;
&lt;p&gt;Muy interesante la charla que ha dado la gente de tuenti sobre como gestionan la persistencia. Es de agradecer la claridad y transparencia con la que han participado.&lt;/p&gt;
&lt;p&gt;Dar las gracias a @borillo por el esfuerzo en la organización del evento y a tuenti por ofrecer sus oficinas para el evento.&lt;/p&gt;
&lt;p&gt;Os recomiendo que en cuanto tengáis la oportunidad, acudáis a un OpenSpace siempre resulta una actividad muy gratificante y en la que seguro aprenderás algo nuevo.&lt;/p&gt;</description><author>GeekWare - Daniel Pecos Martínez</author><pubDate>Sat, 19 Jan 2013 21:31:50 GMT</pubDate><guid isPermaLink="true">https://danielpecos.com/2013/01/19/madrid-openspace-persistencia/</guid></item><item><title>Entering Kaggle Competitions with Google Predict</title><link>http://blog.untrod.com/2013/01/entering-kaggle-competitions-with.html</link><description>&lt;p&gt;BigML had a &lt;a href="http://blog.bigml.com/2013/01/04/machine-learning-throwdown-the-reckoning/"&gt;great series of
posts&lt;/a&gt;
over the summer pitting some prediction-as-a-service products against
each other. One of those was the &lt;a href="https://developers.google.com/prediction/"&gt;Google Predict
API&lt;/a&gt;. I thought it might be
fun to enter a Kaggle competition using the API and see how it did
against some of the world's top …&lt;/p&gt;</description><author>Untrod</author><pubDate>Fri, 18 Jan 2013 02:30:00 GMT</pubDate><guid isPermaLink="true">http://blog.untrod.com/2013/01/entering-kaggle-competitions-with.html</guid></item><item><title>Revision 3, Old Renders</title><link>https://blog.yiningkarlli.com/2013/01/revision-3-old-renders.html</link><description>&lt;p&gt;At the beginning of the semester, I decided to re-architect Takua again, hence the lack of updates for a couple of weeks now. I’ll talk more in-depth about the details of how this new architecture works in a later post, so for now I’ll just quickly describe the motivation behind this second round of re-architecting. As I &lt;a href="http://blog.yiningkarlli.com/2012/09/takuaavohkii-render.html"&gt;wrote about before&lt;/a&gt;, I’ve been keeping parallel CPU and GPU branches of my renderer so far, but the two branches have increasingly diverged. On top of that, the GPU branch of my renderer, although significantly better organized than the experimental CUDA renderer from spring 2012, still is rather suboptimal; after TAing &lt;a href="http://cis565-fall-2012.github.com/"&gt;CIS565&lt;/a&gt; for a semester, I’ve developed what I think are some better ways of architecting CUDA code. Over winter break, I began to wonder if merging the CPU and GPU branches might be possible, and if such a task could be done, how I might go about doing it.&lt;/p&gt;

&lt;p&gt;This newest re-structuring of Takua accomplishes that goal. I’m calling this new version of Takua “Revision 3”, as it is the third major rewrite.&lt;/p&gt;

&lt;p&gt;My new architecture centers around a couple of observations. First, we can observe that the lowest common denominator (so to speak) for structured data in CUDA and C++ is… a struct. Similarly, the easiest way to recycle code between CUDA and C++ is to implement code as inlineable, C style functions that can either be embedded in a CUDA kernel at compile time, or wrapped within a C++ class for use in C++. Therefore, one possible way to unify CPU C++ and GPU CUDA codebases could be to implement core components of the renderer using structs and C-style, inlineable functions, allowing easy integration into CUDA kernels, and then write thin wrapper classes around said structs and functions to allow for nice, object oriented C++ code. This exact system is how I am building Takua Revision 3; the end result should be a unified codebase that can compile to both CPU and GPU versions, and allow for both versions to develop in near lockstep.&lt;/p&gt;

&lt;p&gt;Again, I’ll go into a more detailed explanation once this process is complete.&lt;/p&gt;

&lt;p&gt;I’ll leave this post with a slightly orthogonal note; whilst in the process of merging code, I found some images from Takua Revision 1 that I never posted for some reason. Here’s a particularly cool pair of images from when I was implementing depth of field. The first image depicts a glass Stanford dragon without any depth of field, and the second image depicts the same exact scene with some crazy shallow aperture (I don’t remember the exact settings). You can tell these are from the days of Takua Revision 1 by the ceiling; I often made the entire ceiling a light source to speed up renders back then, until Revision 2’s huge performance increases rendered cheats like that unnecessary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Jan/glassdragon.png"&gt;&lt;img alt="Glass Stanford dragon without depth of field" src="https://blog.yiningkarlli.com/content/images/2013/Jan/glassdragon.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.yiningkarlli.com/content/images/2013/Jan/glassdragon_dof.png"&gt;&lt;img alt="Glass Stanford dragon with depth of field" src="https://blog.yiningkarlli.com/content/images/2013/Jan/glassdragon_dof.png" /&gt;&lt;/a&gt;&lt;/p&gt;</description><author>Code &amp;amp; Visuals</author><pubDate>Fri, 18 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.yiningkarlli.com/2013/01/revision-3-old-renders.html</guid></item><item><title>Japanese translation of some of my blog articles</title><link>https://tanelpoder.com/2013/01/17/japanese-translation-of-some-of-my-blog-articles/</link><description>&lt;p&gt;Ryota Watabe has translated some of my articles into Japanese and intends to translate more in the future (thanks for that! :)&lt;/p&gt;
&lt;p&gt;I have added a little “translations” section to the left sidebar of the blog (scroll down). Or just go to this link:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.csus4.net/d/japanese_translations_of_tanel_poder_s_posts_and_articles/" target="_blank"&gt;&lt;a href="http://www.csus4.net/d/japanese_translations_of_tanel_poder_s_posts_and_articles/"&gt;http://www.csus4.net/d/japanese_translations_of_tanel_poder_s_posts_and_articles/&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You might also want to follow Watabe-san on &lt;a href="https://twitter.com/wrcsus4" target="_blank"&gt;Twitter&lt;/a&gt; to get notified of any new Japanese translations that show up.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Fri, 18 Jan 2013 00:49:35 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/01/17/japanese-translation-of-some-of-my-blog-articles/</guid></item><item><title>The big-ticket items</title><link>https://emphaticallystatic.org/earlier/the-big-ticket-items/</link><description>The web has changed a lot since the early days of this journal. And in many ways, I miss the way things used to be. I guess it&amp;#8217;s that nostalgia that brings me here today. A lot too has happened in my life since I stopped updating the journal regularly, but here are a couple&amp;#8230; &lt;a class="more-link" href="https://emphaticallystatic.org/earlier/the-big-ticket-items/"&gt;Continue reading &lt;span class="screen-reader-text"&gt;The big-ticket items&lt;/span&gt; &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" src="https://emphaticallystatic.org/?ak_action=api_record_view&amp;#038;id=2905&amp;#038;type=feed" /&gt;</description><author>actuality.log</author><pubDate>Thu, 17 Jan 2013 18:38:59 GMT</pubDate><guid isPermaLink="true">https://emphaticallystatic.org/earlier/the-big-ticket-items/</guid></item><item><title>The Problem with Kickstarter</title><link>http://www.sthgnw.com/entries/problems-with-kickstarter</link><description>&lt;p&gt;Earlier this morning Dan Ryan posted &lt;a href="http://www.xconomy.com/boston/2013/01/17/the-problem-with-kickstarter/"&gt;&lt;em&gt;The Problem with Kickstarter&lt;/em&gt;&lt;/a&gt; over on Xconomy. Joshua Beckman of SthgNw commented on the piece, saying, &amp;#8220;The problem really is that people sell ideas and are expected to deliver hard products.&amp;#8221; I would take Josh&amp;#8217;s opinion one step further: the problem is that people sell &lt;em&gt;hard&lt;/em&gt; ideas and are expected to deliver hard products.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.sthgnw.com/entries/problems-with-kickstarter"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 17 Jan 2013 15:38:23 GMT</pubDate><guid isPermaLink="true">http://www.sthgnw.com/entries/problems-with-kickstarter</guid></item><item><title>Moving an existing repo to Github</title><link>https://rd.nz/2013/01/moving-existing-repo-to-github.html</link><author>Rich Dougherty</author><pubDate>Thu, 17 Jan 2013 11:48:00 GMT</pubDate><guid isPermaLink="true">https://rd.nz/2013/01/moving-existing-repo-to-github.html</guid></item><item><title>SElinux causes pain when using puppet 2.x with hiera</title><link>https://purpleidea.com/blog/2013/01/17/selinux-causes-pain-when-using-puppet-2-x-with-hiera/</link><description>&lt;p&gt;So hiera wasn&amp;rsquo;t working when used through my puppetmaster. It worked perfectly when I was running my scripts manually with: &lt;em&gt;puppet apply site.pp&lt;/em&gt; but the moment I switched over to regular &lt;em&gt;puppetmasterd&lt;/em&gt; usage, everything went dead.&lt;/p&gt;
&lt;p&gt;I realized a while back, that I could always expect some hiera failures from time to time. Whether this is hiera&amp;rsquo;s fault or not is irrelevant, the relevant part is that I quickly added:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 17 Jan 2013 05:03:36 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/01/17/selinux-causes-pain-when-using-puppet-2-x-with-hiera/</guid></item><item><title>What the heck is the INTERNAL_FUNCTION in execution plan predicate section?</title><link>https://tanelpoder.com/2013/01/16/what-the-heck-is-the-internal_function-in-execution-plan-predicate-section/</link><description>&lt;p&gt;Sometimes you see something like this in an execution plan:&lt;/p&gt;
&lt;pre&gt;--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |       |       |     2 (100)|          |
|*  1 |  TABLE ACCESS FULL| T    |     1 |    22 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("B"=&lt;strong&gt;INTERNAL_FUNCTION&lt;/strong&gt;("A"))&lt;/pre&gt;
&lt;p&gt;There’s quite a little information available about what the INTERNAL_FUNCTION really is and &lt;em&gt;why&lt;/em&gt; does it show up, thus this blog entry.&lt;/p&gt;</description><author>Tanel Poder Blog</author><pubDate>Thu, 17 Jan 2013 02:40:11 GMT</pubDate><guid isPermaLink="true">https://tanelpoder.com/2013/01/16/what-the-heck-is-the-internal_function-in-execution-plan-predicate-section/</guid></item><item><title>US Employee 'outsourced job to China'</title><link>http://www.bbc.co.uk/news/technology-21043693</link><description>&lt;p&gt;Interesting and apparently very lucrative application of a business practice all too prevalent throughout this nation by an individual.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.bbc.co.uk/news/technology-21043693"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 17 Jan 2013 01:01:12 GMT</pubDate><guid isPermaLink="true">http://www.bbc.co.uk/news/technology-21043693</guid></item><item><title>Seven short stories about drones told through Twitter | The Verge</title><link>http://mobile.theverge.com/2013/1/16/3881914/seven-short-stories-about-drones</link><description>&lt;p&gt;Interesting that Teju Cole chose to use Twitter as his blogging platform.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://mobile.theverge.com/2013/1/16/3881914/seven-short-stories-about-drones"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 17 Jan 2013 00:54:57 GMT</pubDate><guid isPermaLink="true">http://mobile.theverge.com/2013/1/16/3881914/seven-short-stories-about-drones</guid></item><item><title>A Foray Into Simplenote Alternatives</title><link>http://shawnblanc.net/2013/01/simplenote-alternatives/</link><description>&lt;p&gt;Speaking of talking about other writers&amp;#8217; tools and processes, here&amp;#8217;s Shawn Blanc searching for a replacement to an integral part of his workflow as a writer, Simplenote. Not a day goes by that I don&amp;#8217;t use Simplenote, and unfortunately I&amp;#8217;ve noticed some of the synching problems he has. Nevertheless Simplenote remains the best on the market, and for that single reason I will continue to keep all my notes, to write all my articles, and to store nearly every bit of textual information I come in contact with in this app.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://shawnblanc.net/2013/01/simplenote-alternatives/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 17 Jan 2013 00:36:04 GMT</pubDate><guid isPermaLink="true">http://shawnblanc.net/2013/01/simplenote-alternatives/</guid></item><item><title>Planet Earth Abandons Death Star Project In Face Of Superior Galactic Imperial Power | Star Wars Blog</title><link>http://starwarsblog.starwars.com/index.php/2013/01/15/planet-earth-abandons-death-star-project-in-face-of-superior-galactic-imperial-power/</link><description>&lt;p&gt;And so the story continues.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://starwarsblog.starwars.com/index.php/2013/01/15/planet-earth-abandons-death-star-project-in-face-of-superior-galactic-imperial-power/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 17 Jan 2013 00:35:47 GMT</pubDate><guid isPermaLink="true">http://starwarsblog.starwars.com/index.php/2013/01/15/planet-earth-abandons-death-star-project-in-face-of-superior-galactic-imperial-power/</guid></item><item><title>Some Small Refactorings in Ruby</title><link>https://caiustheory.com/some-small-refactorings-in-ruby/</link><description>&lt;p&gt;Here&amp;rsquo;s a few things I refactor as I write code down initially. Not entirely convinced it&amp;rsquo;s strictly refactoring, but it&amp;rsquo;s how I amend from one pattern I see in a line or three of code into a different structure that I feel achieves the same result with cleaner or more concise code.&lt;/p&gt;
&lt;h3 id="multiple-equality-comparisons"&gt;Multiple equality comparisons&lt;/h3&gt;
&lt;p&gt;Testing the equality of an object against another is fairly simple, just do &lt;code&gt;foo == &amp;quot;bar&amp;quot;&lt;/code&gt;. However, I usually try to test against multiple objects in a slightly different way. Your first thought might be that the easiest way is just to chain a series of &lt;code&gt;==&lt;/code&gt; with the OR (&lt;code&gt;||&lt;/code&gt;) operator.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"bar"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"baz"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="ss"&gt;:sed&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I much prefer to flip it around, think of the objects I&amp;rsquo;m testing against as a collection (&lt;code&gt;Array&lt;/code&gt;), and then ask them if they contain the object I&amp;rsquo;m checking. And for that, I use &lt;code&gt;Array#include?&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"bar"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"baz"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:sed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;include?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;(And if you&amp;rsquo;re only testing against strings, you could use &lt;code&gt;%w(bar baz)&lt;/code&gt; as a shortcut to create the array. Here&amp;rsquo;s more &lt;a href="http://caiustheory.com/ruby-shortcuts"&gt;ruby shortcuts&lt;/a&gt;.)&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="assigning-multiple-items-from-a-nested-hash-to-variables"&gt;Assigning multiple items from a nested hash to variables&lt;/h3&gt;
&lt;p&gt;Occasionally I find myself needing to be given a hash of a hash of data (most recently, an &lt;a href="https://github.com/intridea/omniauth/wiki"&gt;omniauth&lt;/a&gt; auth hash) and assign some values from it to separate variables within my code. Given the following hash, containing a nested hash:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;details&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ss"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"12345"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ss"&gt;info&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Caius Durling"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ss"&gt;nickname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"caius"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lets say we want to extract the name and nickname fields from &lt;code&gt;details[:info]&lt;/code&gt; hash into their own local variables (or instance variables within a class, more likely.) We should probably handle the case of &lt;code&gt;details[:info]&lt;/code&gt; not being a hash, and try not to read from it if that&amp;rsquo;s the case - so we might end up with something like the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;details&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:info&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;details&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:info&lt;/span&gt;&lt;span class="o"&gt;][&lt;/span&gt;&lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nickname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;details&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:info&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;details&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:info&lt;/span&gt;&lt;span class="o"&gt;][&lt;/span&gt;&lt;span class="ss"&gt;:nickname&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; "Caius Durling"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nickname&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; "caius"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then in the spirit of &lt;a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself"&gt;DRYing&lt;/a&gt; up our code, we see there&amp;rsquo;s duplication in both lines in checking &lt;code&gt;details[:info]&lt;/code&gt; exists (not actually that it&amp;rsquo;s a hash, but hey ho, we rely on upstream to send us &lt;code&gt;nil&lt;/code&gt; or a hash.) So we reduce it down using an if statement and give ourselves slightly less to type at the same time.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt; &lt;span class="n"&gt;info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;details&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:info&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;nickname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:nickname&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; "Caius Durling"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nickname&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; "caius"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="returning-two-values-conditionally"&gt;Returning two values conditionally&lt;/h3&gt;
&lt;p&gt;Sometimes a method will end with a ternary, where depending on a condition it&amp;rsquo;ll either return one or another value. If this conditional returns true, then the first value is returned. Otherwise it returns the second value. You could quite easily write it out as an if/else longer-form block too.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;my_method&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@blah&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="ss"&gt;:foo_matches&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ss"&gt;:no_match&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;My brain finds picking the logic in this apart slightly harder mentally, than if I drop a &lt;a href="http://en.wikipedia.org/wiki/Return_early"&gt;return early&lt;/a&gt; bomb on the method. Then it reads more akin to how I&amp;rsquo;d think through the logic. Return the first value if this conditional returns true. Otherwise the method returns this second value. I think the second value being on a completely separate line helps me make this mental distinction quicker too.&lt;/p&gt;
&lt;p&gt;So I&amp;rsquo;d write it this way:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;my_method&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="ss"&gt;:foo_matches&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@blah&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ss"&gt;:no_match&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="returning-nil-or-a-value-conditionally"&gt;Returning nil or a value conditionally&lt;/h3&gt;
&lt;p&gt;Following on from the last snippet, but taking advantage of the ruby runtime a bit more, is when you&amp;rsquo;re wanting to return a value if a conditional is true, or otherwise false. The easy way is to just write &lt;code&gt;nil&lt;/code&gt; in the ternary:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;my_method&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@foo&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="ss"&gt;:bar&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="ss"&gt;:foo_matches&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, we know ruby returns the result of the last expression in the method. And that if a single line conditional isn&amp;rsquo;t met, it returns nil from the expression. Combining that, we can rewrite the previous example into this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;my_method&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ss"&gt;:foo_matches&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@foo&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="ss"&gt;:bar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And it will still return nil in the case that &lt;code&gt;@foo&lt;/code&gt; doesn&amp;rsquo;t match &lt;code&gt;:bar&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="returning-a-boolean"&gt;Returning a boolean&lt;/h3&gt;
&lt;p&gt;Sometimes you have a method that returns the result of a conditional, but it&amp;rsquo;s written to return true/false in a conditional instead.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;my_method&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@foo&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="ss"&gt;:bar&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The really easy refactor here is to just remove the ternary and leave the conditional.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;my_method&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@foo&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="ss"&gt;:bar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And of course if you were returning &lt;code&gt;false&lt;/code&gt; when the conditional evaluates to &lt;code&gt;true&lt;/code&gt;, you can either negate the comparison (use &lt;code&gt;!=&lt;/code&gt; in that example), or negate the entire conditional result by prepending &lt;code&gt;!&lt;/code&gt; to the line.&lt;/p&gt;</description><author>Caius Theory</author><pubDate>Wed, 16 Jan 2013 14:23:54 GMT</pubDate><guid isPermaLink="true">https://caiustheory.com/some-small-refactorings-in-ruby/</guid></item><item><title>Writing Tools - Matt Gemmell</title><link>http://mattgemmell.com/2013/01/15/writing-tools/</link><description>&lt;p&gt;Always interesting to read about another writer&amp;#8217;s tools and setup, and Matt Gemmell&amp;#8217;s style makes this piece all the more pleasurable to read.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;What you&amp;#8217;re seeing through the window is Outside. Now, I&amp;#8217;m not a massive fan of Outside, generally speaking - I&amp;#8217;m of the belief that we coped with Outside for a long time, until we finally invented Inside, and then breathed a huge sigh of relief - but it can really clear your head and restore some perspective. And sanity. And apparently vitamin D, or something, but health is a worry for tomorrow.&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://mattgemmell.com/2013/01/15/writing-tools/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 16 Jan 2013 14:06:03 GMT</pubDate><guid isPermaLink="true">http://mattgemmell.com/2013/01/15/writing-tools/</guid></item><item><title>Javascript Promises Pattern in plain Javascript</title><link>https://danielpecos.com/2013/01/16/javascript-promises-101-part2/</link><description>&lt;p&gt;In the &lt;a href="https://danielpecos.com/2013/01/08/javascript-promises-pattern-101/" title="Javascript Promises – 101"&gt;previous post&lt;/a&gt; I gave a glimpse of the Javascript Promises Pattern (JPP). Now we are going to take a more in deep look into it and implement our (simplified) version of this pattern.&lt;/p&gt;
&lt;p&gt;First of all, let’s sow the code I we defined works: we had three operations (to make the example simpler, they all share the same code, but this is not a requisite), each of them expecting a set of arguments which are processed by an asynchronous operation. The result of this asynchronous operation will be feed to the next operation, and so on until we achieve &lt;code&gt;processResults&lt;/code&gt; function that will handle the final result. This is a refactored version of the code exposed in the previous post:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;function operation(params) {
  var promise = new Promise(this)
  async_task(params, function() {
    // ...
    promise.resolve(params);
  });
  return promise;
}

function processResults(results) {
  // ...
}

operation1 = operation;
operation2 = operation;
operation3 = operation;

operation1(params1).then(operation2).then(operation3).then(processResults);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Every operation creates a promise object that will be returned as result of the invocation to the operation. Furthermore, this promise object is used to store the future value that will result from the asynchronous call. This value is stored in the promise object using the &lt;code&gt;resolve&lt;/code&gt; method.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;operation1(params1).then(operation2).then(operation3).then(processResults);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This line is were all the magic is done: we invoke the first operation, which returns a promise object, and over this object we are invoking the &lt;code&gt;then&lt;/code&gt; method, passing a function as its argument, &lt;strong&gt;which will be invoked when the promise object is resolved&lt;/strong&gt;. Then we repeat this invocation to the &lt;code&gt;then&lt;/code&gt; method in order to chain more callbacks, each of them being invoked by successive promise &lt;code&gt;resolve&lt;/code&gt; invocations.&lt;/p&gt;
&lt;p&gt;This may appear simple, but it’s kind of tricky: we pretend to receive the results of every operation as argument of the following callback. That works ok for &lt;code&gt;operation1&lt;/code&gt;, but promises objects from operations 2 and 3 still don’t exist so there is no way to attach those promises to its correspondent callback. In other words, invoking the &lt;code&gt;then&lt;/code&gt; method of the promise object doesn’t actually invoke operation2 and operation3 (in fact, the parameters they need are still not available). What really happens is that they are chained into the operation1 promise object.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;operation1: return promise1
-&amp;gt; invoke then (operation2): return promise1
-&amp;gt; invoke then (operation3): return promise1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So how does JPP resolve this? Well, the trick can be discovered paying attention to the instantiation of the promise objects: we passed &lt;code&gt;this&lt;/code&gt; as first argument, which in fact turns to be global object &lt;code&gt;Window&lt;/code&gt; for &lt;code&gt;promise1&lt;/code&gt; and operation1 promise object for the &lt;em&gt;promise2&lt;/em&gt; and &lt;em&gt;promise3&lt;/em&gt; instantiations. That’s because &lt;strong&gt;resolve method invokes callbacks functions applying itself as the current scope&lt;/strong&gt;. Maybe it’s easier to see in code:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;function Promise(promise) {
    if (promise instanceof Promise) {
        return promise;
    } else {
        // this is a new promise chain
        this.callbacks = [];
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Having this idea clear, we can try to develop our own implementation for this pattern. We already have defined the constructor function, let’s go for the &lt;code&gt;then&lt;/code&gt; and &lt;code&gt;resolve&lt;/code&gt; methods:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Promise.prototype.then = function(callback_ok) {
    this.callbacks.push({
        ok: callback_ok
    });
    return this;
};

Promise.prototype.resolve = function() {
    var callback = this.callbacks.shift();
    if (callback &amp;amp;&amp;amp; callback.ok) {
        callback.ok.apply(this, arguments);
    }
};
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As we said, &lt;code&gt;then&lt;/code&gt; just store the function to call when the &lt;code&gt;resolve&lt;/code&gt; method is invoked. &lt;code&gt;resolve&lt;/code&gt; then just pops the callback function to invoke, applying current promise object (&lt;code&gt;this&lt;/code&gt;) as its scope, so when the next operation tries to create a new promise object, it gets the actual promise object instead of a new one, which turns to be the one used to define the chain of callbacks.&lt;/p&gt;
&lt;p&gt;Well, better than to read code to understand it, is to play with it, so &lt;a href="http://jsfiddle.net/dpecos/HDbBa/" target="_blank"&gt;here you have a fiddle&lt;/a&gt; ready to go. It’s a litlle more complex implementation than the exposed here, because I defined a &lt;code&gt;reject&lt;/code&gt; method, but the main idea stands.&lt;/p&gt;
&lt;p&gt;I would love to hear feedback from you about the pattern itself or the implementation, so don’t hesitate to post comments!&lt;/p&gt;</description><author>GeekWare - Daniel Pecos Martínez</author><pubDate>Wed, 16 Jan 2013 14:05:01 GMT</pubDate><guid isPermaLink="true">https://danielpecos.com/2013/01/16/javascript-promises-101-part2/</guid></item><item><title>How to Wite an Opening Sentence</title><link>http://asserttrue.blogspot.com/2013/01/how-to-write-opening-sentence.html</link><description>&lt;p&gt;Kas Thomas on how to write an opening sentence, drawing on his extensive writing career as well as a number of books on the subject. I particularly liked how he pointed out the openers prominent writers use over and over again. Definitely something to keep in mind when writing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;These aren&amp;#8217;t all the possible ways to start a piece, but if you&amp;#8217;re completely stuck, one of them should work. If not? Surprise the world with something outlandishly original. Don&amp;#8217;t be like most people. Don&amp;#8217;t just start with &amp;#8216;If you&amp;#8217;re like most people . . .&amp;#8217;&amp;#8221;&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://asserttrue.blogspot.com/2013/01/how-to-write-opening-sentence.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 16 Jan 2013 14:03:31 GMT</pubDate><guid isPermaLink="true">http://asserttrue.blogspot.com/2013/01/how-to-write-opening-sentence.html</guid></item><item><title>Why We're Raising the Signature Threshold for We the People</title><link>http://www.whitehouse.gov/blog/2013/01/15/why-we-re-raising-signature-threshold-we-people</link><description>&lt;p&gt;After the petition to build a Death Star and the petition to remove Ortiz from her position at the Department of Injustice (oops, a typo) all garnered the required 25,000 signatures, I suppose it&amp;#8217;s not surprising. Sam Byford has more on this in his post &lt;a href="http://www.theverge.com/2013/1/16/3881672/white-house-petition-signature-threshold-raised"&gt;&lt;em&gt;After Death Star and deportation petitions, White House raises signature threshold to 100,000&lt;/em&gt;&lt;/a&gt; on The Verge.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.whitehouse.gov/blog/2013/01/15/why-we-re-raising-signature-threshold-we-people"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 16 Jan 2013 11:28:11 GMT</pubDate><guid isPermaLink="true">http://www.whitehouse.gov/blog/2013/01/15/why-we-re-raising-signature-threshold-we-people</guid></item><item><title>The Days When We Had Rest, O Soul, for They Were Long</title><link>http://jacobbacharach.wordpress.com/2013/01/13/the-days-when-we-had-rest-o-soul-for-they-were-long/</link><description>&lt;p&gt;An interesting article posted over on Blogarach in response to Aaron Swartz&amp;#8217;s death. Even more impressive is that it&amp;#8217;s a single, extremely well-written sentence. Worth the read even if you are not following the tragedy that is Aaron Swartz&amp;#8217;s suicide.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://jacobbacharach.wordpress.com/2013/01/13/the-days-when-we-had-rest-o-soul-for-they-were-long/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 16 Jan 2013 11:11:21 GMT</pubDate><guid isPermaLink="true">http://jacobbacharach.wordpress.com/2013/01/13/the-days-when-we-had-rest-o-soul-for-they-were-long/</guid></item><item><title>You All Have No Business Writing</title><link>https://zacs.site/blog/you-all-have-no-business-writing.html</link><description>&lt;p&gt;Thirty-eight minutes and eleven seconds in to &lt;a href="http://5by5.tv/bb/18"&gt;the eighteenth episode&lt;/a&gt; of &lt;a href="http://5by5.tv/bb/"&gt;The B&amp;#38;B Podcast&lt;/a&gt;, Shawn Blanc, in response to Ben Brooks talking about the salient point of his Lion review, said, &amp;#8220;If you can&amp;#8217;t boil down your whole article into a tweet, what are you doing writing the article in the first place?&amp;#8221; Amidst a discussion regarding Ben and Shanw&amp;#8217;s recent Lion and Web OS reviews, respectively, this humble observation is easy to miss as its brevity belies its profundity. This modest phrase said in passing is nevertheless one of the most profound insights into the writer&amp;#8217;s craft I have ever come across.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/you-all-have-no-business-writing.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 16 Jan 2013 11:06:53 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/you-all-have-no-business-writing.html</guid></item><item><title>Self-Publishing</title><link>http://brooksreview.net/2012/11/self-publishing/</link><description>&lt;p&gt;An article from Ben Brooks posted in November of last year I had near the middle of my Simplenote list, burried beneath a slew of notes, ideas, and half-baked articles.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I&amp;#8217;m not interested in writing when it&amp;#8217;s not about the writing. iBooks Author is neat, but I don&amp;#8217;t want to learn it - instead I&amp;#8217;ll just &amp;#8220;publish&amp;#8221; the book here as a series of posts, where I know what I am doing (somewhat) and where writing is about writing and not layout, marketing, legal issues, notices, copyrights, glossaries, etc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I completely agree with his conclusion, as I&amp;#8217;m sure many writers do. That&amp;#8217;s why, in part, I built First Crack: so that once it was working, I didn&amp;#8217;t need to worry about the logistics and nitpicky details of publication. Instead, I could write in an environment in which &amp;#8220;writing is about writing.&amp;#8221;&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://brooksreview.net/2012/11/self-publishing/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 16 Jan 2013 11:06:15 GMT</pubDate><guid isPermaLink="true">http://brooksreview.net/2012/11/self-publishing/</guid></item><item><title>Dynamically including classes in puppet</title><link>https://purpleidea.com/blog/2013/01/16/dynamically-including-classes-in-puppet/</link><description>&lt;p&gt;As you might already know, I like pushing the boundaries of what puppet is able to do. Today, I realized that I needed to &lt;em&gt;include&lt;/em&gt; a class by variable name. A simple way to do this is possible with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$foo = 'world'
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;class { "hello::${foo}::params":
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I then realized that you could also do this with the standard include keyword:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$foo = 'world'
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;include "hello::${foo}::params"
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you&amp;rsquo;re really insane enough to need to have your include depend on a variable, then this should suit your needs. The advantage of the second form is that if that statement appears more than once, you won&amp;rsquo;t cause a &amp;ldquo;duplicate definition&amp;rdquo; error.&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Wed, 16 Jan 2013 09:29:14 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/01/16/dynamically-including-classes-in-puppet/</guid></item><item><title>We're Boring, They're Sexting</title><link>http://one37.net/blog/15/1/2013/were-boring-theyre-sexting</link><description>&lt;p&gt;Matt Alexander of One Thirty Seven made so many interesting points I had a hard time choosing an excerpt of acceptable length for this post. I ended up settling on this one though, reflective of the tone throughout his exceptionally well-written article &lt;em&gt;We&amp;#8217;re Boring, They&amp;#8217;re Sexting&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Sitting on the front porch of our quaint weblogs and latte-art-filled Instagram accounts, we&amp;#8217;re collectively yelling at the kids playing in the street using these platforms in newer, happier, and increasingly care-free ways. These kids have been born into a world of social networking and privacy concerns are literally the last things on their minds. They&amp;#8217;re just looking for the next best way to chat, flirt, and sext their way into each other&amp;#8217;s bedrooms, whilst we continue to perpetuate unwritten societal rules of etiquette for Twitter and Facebook.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I can&amp;#8217;t say enough good things about this piece&amp;#160;&amp;#8212;&amp;#160;just go read it for yourself. And while you&amp;#8217;re at it, read Josh Miller&amp;#8217;s post referenced in the first paragraph of Matt Alexander&amp;#8217;s article, &lt;a href="https://medium.com/product-design/d8d4f2300cf3"&gt;&lt;em&gt;Tenth Grade Tech Trends&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://one37.net/blog/15/1/2013/were-boring-theyre-sexting"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 16 Jan 2013 00:58:00 GMT</pubDate><guid isPermaLink="true">http://one37.net/blog/15/1/2013/were-boring-theyre-sexting</guid></item><item><title>Kid Sends Brilliantly Blunt Cover Letter For Wall Street Internship, And Now Tons Of People Are Trying To Hire Him</title><link>http://www.businessinsider.com/student-sends-great-cover-letter-for-internship-at-bank-and-its-now-going-viral-on-wall-street-2013-1</link><description>&lt;p&gt;Proof that honesty really is the best policy.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.businessinsider.com/student-sends-great-cover-letter-for-internship-at-bank-and-its-now-going-viral-on-wall-street-2013-1"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 15 Jan 2013 20:33:50 GMT</pubDate><guid isPermaLink="true">http://www.businessinsider.com/student-sends-great-cover-letter-for-internship-at-bank-and-its-now-going-viral-on-wall-street-2013-1</guid></item><item><title>Receipt Paper</title><link>https://zacs.site/blog/receipt-paper.html</link><description>&lt;p&gt;Interesting, all the things people are starting to do with receipt paper. Sean Hollister tells of a &lt;a href="http://mobile.theverge.com/2013/1/13/3873950/dc-restaurant-hands-out-miniature-newspaper-when-you-ask-for-the-check"&gt;DC restaurant that provides a collection of the latest news items printed on receipt paper&lt;/a&gt; when you ask for the check. Also mentioned in this article is &lt;a href="http://uk-shop.bergcloud.com/"&gt;BERG&amp;#8217;s Little Printer&lt;/a&gt;, &lt;a href="http://mobile.theverge.com/2012/8/14/3238974/little-printer-berg-matt-webb"&gt;a neat thermal printer with a bunch of cool features&lt;/a&gt;.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/receipt-paper.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 15 Jan 2013 20:32:50 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/receipt-paper.html</guid></item><item><title>Being Overtaken and Market Cannibalization</title><link>https://zacs.site/blog/cannibalization.html</link><description>&lt;p&gt;As I concluded &lt;a href="https://zacs.site/blog/defining-an-industry.html"&gt;&lt;em&gt;Defining an Industry&lt;/em&gt;&lt;/a&gt; I again found myself once again trying to decide whether I should continue writing or stop where I was. On the one hand I was happy with the article&amp;#8217;s length, approximately 550 words. On the other hand though, I really wanted to spend some time talking about being overtaken in a market and about market cannibalization. Ultimately proposing that adhering to industry standards in a given market will not perpetuate success, for in such a case a newcomer unbeholden to existing stigmas will eventually enter and surpass the incumbents, I felt such a topic would fit nicely in &lt;em&gt;Defining an Industry&lt;/em&gt;. The more I thought about it though the less I agreed with my initial sentiment though, so I finished the piece, saved it for posting at a later date, and began this article.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/cannibalization.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 14 Jan 2013 17:41:24 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/cannibalization.html</guid></item><item><title>Defining an Industry</title><link>https://zacs.site/blog/defining-an-industry.html</link><description>&lt;p&gt;Lately, I have been spending a lot of time thinking about disruption theory. I&amp;#8217;m writing articles about podcasting, technology, and education, in which 5by5, Apple, and the likes of The Khan Academy are disrupting the incumbents in their respective industries to superb results. 5by5 proved the viability of business based on podcasts, and explosive growth in this space ensued as the medium gained increasingly widespread recognition outside of geek circles. This growth and Dan&amp;#8217;s business model set into motion a renaissance of sorts and provided the foundation for the advent of companies like 70 Decibels and The Mule Radio Syndicate, and many more to come.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/defining-an-industry.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 14 Jan 2013 15:12:49 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/defining-an-industry.html</guid></item><item><title>California School Shooter Had a 'Hit-List'</title><link>http://www.thedailybeast.com/articles/2013/01/12/california-school-shooter-had-a-hit-list.html</link><description>&lt;p&gt;From Christine Pelisek&amp;#8217;s article on The Daily Beast, I thought these two excerpts were of particular interest:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In the wake of the Newtown tragedy, NRA executive Wayne LaPierre drew criticism for suggesting that posting armed guards in schools could help prevent future shootings. Taft Union High School does employ an armed officer on campus, but he was snowed in on Thursday and did not make it to work.&lt;/p&gt;
&lt;p&gt;In another ironic twist, the shooting happened just a few hours after the school held a staff meeting to talk about how to deal with shootings like the one in Newtown.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And this one later in the article:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;We can have all the gun control in the world but he was going to take [the gun] to school,&amp;#8221; said Youngblood about the suspect. &amp;#8220;It is an issue of mental health more than it is gun control. It is not normal to get a shotgun, walk into class, and shoot someone. That is not a normal reaction of someone who thinks he is being picked on.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The barrier to entry for pirating music, movies, or software discourages casual piracy; it does not pose anything other than a minor convenience, if even that, to anyone determined to download Carrie Underwood&amp;#8217;s latest album without spending a cent. The question, then, and Sherif Youngblood got to this point in the article as well, must be asked: &amp;#8220;How much of a difference will stricter gun laws make?&amp;#8221; The shooter at each and every one of these recent school shootings obtained the weapon from an adult family member or friend. How far must new gun laws reach in order to keep the weapons out of the hands of troubled young individuals, and at which point do the ends no longer justify the means?&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.thedailybeast.com/articles/2013/01/12/california-school-shooter-had-a-hit-list.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Mon, 14 Jan 2013 15:11:13 GMT</pubDate><guid isPermaLink="true">http://www.thedailybeast.com/articles/2013/01/12/california-school-shooter-had-a-hit-list.html</guid></item><item><title>The best places and moments to make room for women in technology</title><link>https://stop.zona-m.net/2013/01/the-best-places-and-moments-to-make-room-for-women-in-technology/</link><description>&lt;p&gt;A few great quotes from a piece on &lt;a href="http://www.npr.org/blogs/alltechconsidered/2012/12/24/167961947/kenyan-women-create-their-own-geek-cuture"&gt;technology, Kenyan women and geek culture&lt;/a&gt; that &lt;strong&gt;all&lt;/strong&gt; &amp;ldquo;first world&amp;rdquo; western people should read in full for its implications on &lt;strong&gt;their&lt;/strong&gt; society:&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Mon, 14 Jan 2013 07:55:01 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/01/the-best-places-and-moments-to-make-room-for-women-in-technology/</guid></item><item><title>Unwanted and Unwarranted Innovation?</title><link>https://zacs.site/blog/unwanted-and-unwarranted-innovation.html</link><description>&lt;p&gt;Earlier today I stumbled across an interesting article called &lt;a href="http://stupidiswinning.tumblr.com/post/40268049719/we-are-in-the-final-years-of-our-internet"&gt;We Are In The Final Years of Our Internet&lt;/a&gt; over on Stupid Is Winning explaining why the author believes the internet as we know it is likely to gradually fade as a younger, more tech savvy generation comes of age. The author is hypothesizing that a generation raised on touch screens and iTunes is unlikely to use the internet in the same way it is used now, which will eventually bring about a revolution of sorts in which the computing world and the internet in particular centers around specific apps rather than the browser. Perhaps the most interesting part in the article is not the main body, however, but the &amp;#8220;jumbled thoughts in no order&amp;#8221; at the bottom of the post, where the author proposes a number of questions and scenarios. Rather than a certainty though&amp;#160;&amp;#8212;&amp;#160;the idea that the world of technology and the internet in particular are destined to change dramatically in the near future&amp;#160;&amp;#8212;&amp;#160;I think we need to ask ourselves these questions: what is the possibility of reaching an asymptote in the near future at which point the need for innovation ceases? Before you answer, consider another: does anyone really want a phone the size of a bluetooth dongle&amp;#160;&amp;#8212;&amp;#160;a Siri phone? does anymore &lt;em&gt;really&lt;/em&gt; want a computer inside their head? Perhaps ranging into the dystopian extreme with the latter scenario, the thought nevertheless begs the question, &amp;#8220;Is there a point at which we will have innovated &lt;em&gt;enough&lt;/em&gt; that further innovation and future disruption is not only unwanted but also&amp;#160;&amp;#8212;&amp;#160;and most importantly&amp;#160;&amp;#8212;&amp;#160;unwarranted?&amp;#8221;&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/unwanted-and-unwarranted-innovation.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 13 Jan 2013 19:48:51 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/unwanted-and-unwarranted-innovation.html</guid></item><item><title>GeoLocation based Communication with Node.js, Redis</title><link>https://thomashunter.name/posts/2013-01-13-geolocation-based-communication-with-node-js-redis</link><author>Thomas Hunter II</author><pubDate>Sun, 13 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-01-13-geolocation-based-communication-with-node-js-redis</guid></item><item><title>Create When You Are Inspired</title><link>https://solomon.io/create-when-you-are-inspired/</link><description>When I was in college I would often skip homework or studying for a test. Why? Because I was inspired to work on something else.</description><author>Sam Solomon</author><pubDate>Sun, 13 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://solomon.io/create-when-you-are-inspired/</guid></item><item><title>Crafting in Tabletop RPGs</title><link>https://benovermyer.com/blog/2013/01/crafting-in-tabletop-rpgs/</link><description>&lt;p&gt;One of the systems near and dear to my heart in MMORPGs is crafting. I love being able to make things from materials that I've collected myself, and in so doing improve my own capabilities without having to rely on an external source (e.g., loot, or vendors). Very few tabletop RPGs have ever attempted to include a crafting system, and those that have (Dungeons &amp;amp; Dragons, I'm looking at you) focus primarily on high-cost, high-powered magical items. Here, I explain how a crafting system for a tabletop RPG might work, taking several cues from MMORPGs. Crafting in MMORPGs has three primary component systems - gathering, refining, and building finished items. Gathering is the collection of raw resources from the world. This usually takes the form of withdrawing units of resources from a resource node that randomly spawns in the world. Refining takes those raw materials and works them into usable forms. For example, smelting iron ore into iron bars is one such process. This step is sometimes optional. Building finished items takes resources and puts them together into a final usable form. In MMORPGs, the process of actually crafting the item is abstracted away such that the player doesn't need to worry about things like quenching steel in the proper temperature of liquid. Tabletop RPGs generally can't follow MMORPG mechanics, since a lot of the latter is based on intensive calculation behind the scenes. With crafting, my perception is that it's not popular because it's not a story component - in a tabletop gaming session, anything that smacks of busywork is not going to go over well. To address that concern, there are two possibilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make the whole crafting process fun and exciting, or&lt;/li&gt;
&lt;li&gt;Make the crafting process something that happens between adventures.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Personally, I think a mix of the two is ideal. The gathering process should be divided into two parts - acquiring rare raw materials through normal adventuring, and acquiring mundane raw materials in a quick process that occurs between gaming sessions. The refining process should be purely between sessions, unless it's something story-bound like imbuing a raw material with a specific magical aura that can only be done by a powerful hermit-mage that lives in the…. you get the picture. The crafting of the final item could go either way, though I'd tend to put it at the very beginning of a game session before the actual adventure starts to “prime” players' minds. A big component of crafting, and one of its greatest variables, is time. In real life, it takes a long time to smith a sword. In World of Warcraft, it takes seconds. Crafting in tabletop RPGs, as a character activity, should take little time. Crafting is a secondary system, and it's not epic to say that your character spent a month of in-game down time smithing a new longsword in a borrowed forge while the other members of the party twiddled their thumbs. This problem can be explained away in two ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give the character NPC assistants to do the crafting for him, or&lt;/li&gt;
&lt;li&gt;Make the crafting process itself something magical that takes little time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I prefer the first option, since it involves more story hooks and feels less like a deus ex machina. If a player discovers he has the materials to make an upgraded suit of armor just as a session is about to begin, you can allow him to do that and retcon that he contracted the work out while he was adventuring in the last session. This can tend to make retconning a standard, accepted practice for crafting, but I think that's of minor concern in this case. The other consideration when designing a crafting system for use in a tabletop RPG is the effect this can have on player equipment and expectations of loot. As such, it can't be designed in a vacuum - it needs to be part of the system from the beginning, or you risk turning a game into a Monty Haul campaign inadvertently. The secret here is in the timing - you can gate the frequency of crafting more powerful items by introducing a crafting skill advancement system and making it as restrictive as you like, thereby keeping crafted items in line with looted items (or not, if that's what you prefer). The Dungeons &amp;amp; Dragons system of spending experience to craft powerful items is one way to gate the acquisition of crafted items, but I think it's fundamentally flawed in that it makes little sense from a story point of view. Sauron didn't lose part of his essence to craft the One Ring - he just lost time and resources. To make something, a player has three resources available to him - Time, Money, and Effort. The ratio can vary between those three, but if you abstract out those concepts, you can arrive at a more sensible requirement ladder than Dungeons &amp;amp; Dragons'. In the end, crafting is a perfectly viable addition to a gaming system, as long as it's well-integrated with the rest of the game. I'm working on one such system for inclusion in a game of mine, and I like to think the players will love it.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sun, 13 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/01/crafting-in-tabletop-rpgs/</guid></item><item><title>This Isn't the Petition Response You're Looking For</title><link>https://petitions.whitehouse.gov/response/isnt-petition-response-youre-looking</link><description>&lt;p&gt;Paul Shawcross did an amazing job responding to the recent petition for the government to build an actual Death Star. An excellent article.&lt;/p&gt;


                &lt;p&gt;&lt;a href="https://petitions.whitehouse.gov/response/isnt-petition-response-youre-looking"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 13 Jan 2013 01:22:23 GMT</pubDate><guid isPermaLink="true">https://petitions.whitehouse.gov/response/isnt-petition-response-youre-looking</guid></item><item><title>The Meaning of Life</title><link>http://www.brainpickings.org/index.php/2012/09/17/the-meaning-of-life/</link><description>&lt;p&gt;An interesting collection of thoughts and observations regarding the meaning of life. These are my two favorites, the first from Frank Donofrio:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I have been asking myself why I&amp;#8217;m here most of my life. If there&amp;#8217;s a purpose I don&amp;#8217;t care anymore. I&amp;#8217;m seventy-four. I&amp;#8217;m on my way out. Let the young people learn the hard way, like I did. No one ever told me anything.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And from Charles Bukowski:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For those who believe in God, most of the big questions are answered. But for those of us who can&amp;#8217;t readily accept the God formula, the big answers don&amp;#8217;t remain stone-written. We adjust to new conditions and discoveries. We are pliable. Love need not be a command or faith a dictum. I am my own God.&lt;/p&gt;
&lt;p&gt;We are here to unlearn the teachings of the church, state and our educational system.&lt;/p&gt;
&lt;p&gt;We are here to drink beer.&lt;/p&gt;
&lt;p&gt;We are here to kill war.&lt;/p&gt;
&lt;p&gt;We are here to laugh at the odds and live our lives so well that Death will tremble to take us.&lt;/p&gt;
&lt;p&gt;We are here to read these words from all these wise men and women who will tell us that we are here for different reasons and the same reason.&lt;/p&gt;

&lt;/blockquote&gt;

                &lt;p&gt;&lt;a href="http://www.brainpickings.org/index.php/2012/09/17/the-meaning-of-life/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 13 Jan 2013 01:06:41 GMT</pubDate><guid isPermaLink="true">http://www.brainpickings.org/index.php/2012/09/17/the-meaning-of-life/</guid></item><item><title>My Kippo findings after three months</title><link>https://blog.erethon.com/blog/2013/01/13/my-kippo-findings-after-three-months/</link><description>&lt;p&gt;
Three months ago I installed Kippo in a low end VPS of mine. About a
month after that, I got bored of manually checking kippo everyday so I
made a small script to automate the process. Fast forward another two
months and here we're.&lt;/p&gt;</description><author>Erethon's Corner</author><pubDate>Sun, 13 Jan 2013 00:30:42 GMT</pubDate><guid isPermaLink="true">https://blog.erethon.com/blog/2013/01/13/my-kippo-findings-after-three-months/</guid></item><item><title>Das Blinkenlights on the MSP430 Launchpad with Linux</title><link>https://www.anmolsarma.in/post/msp430-launchpad-linux/</link><description>&lt;p&gt;TI’s &lt;a href="http://www.ti.com/tool/msp-exp430g2" title="MSP430 Launchpad"&gt;MSP430 LaunchPad&lt;/a&gt; development kit offers some serious bang for the buck. You get two modern 16-bit microcontrollers, a programmer-cum-debugger with pins broken out and a USB cable for less than 5 USD inclusive of shipping. TI even provides two free (as in beer) IDE’s for Windows. Linux support though was a bit sketchy when the board was first released.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="https://www.anmolsarma.in/images/2015/09/LaunchPad.jpg" /&gt;
 &lt;/p&gt;
&lt;p&gt;Things of course have greatly improved and getting the Launchpad to work with Linux is now a breeze. The versions of MSPGCC and MSPDebug in Ubuntu 11.10’s repositories seem to work just fine. There’s also functional Arduino fork for the MSP430 called &lt;a href="http://energia.nu/" title="Energia"&gt;Energia&lt;/a&gt;.&lt;/p&gt;</description><author>Anmol Sarma</author><pubDate>Sat, 12 Jan 2013 21:06:05 GMT</pubDate><guid isPermaLink="true">https://www.anmolsarma.in/post/msp430-launchpad-linux/</guid></item><item><title>We Have Lost One of Our Own</title><link>https://zacs.site/blog/aaron-swartz.html</link><description>&lt;p&gt;I planned to work on a number of articles this evening, but then, after I got home a short while ago and opened Hacker News, my evening plans changed as I began to read about Aaron Swartz. Rather than attempt to write about a man I know little of and who I knew nothing of before this afternoon, here are the better articles I have seen floating around the internet:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/aaron-swartz.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 12 Jan 2013 19:35:00 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/aaron-swartz.html</guid></item><item><title>First Crack in Practice</title><link>https://zacs.site/blog/first-crack-in-practice.html</link><description>&lt;p&gt;Last month I published &lt;a href="https://zacs.site/blog/introducing-first-crack.html"&gt;&lt;em&gt;Introducing First Crack&lt;/em&gt;&lt;/a&gt; shortly after this site went life. In that post I outlined a number of goals I set for First Crack during its development, as well as a few of the advantages I believed my new CMS would have over the incumbents. Since making that post nearly two months have gone by. During those two months I have used First Crack exclusively, and I have not looked back.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/first-crack-in-practice.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Fri, 11 Jan 2013 16:46:12 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/first-crack-in-practice.html</guid></item><item><title>Ninject and Singletons in the WebAPI with Scopes</title><link>https://daniellittle.dev/ninject-webapi</link><description>The new Activation Blocks in Ninject are great for automatically resolving dependencies in the request scope. However they suffer from one…</description><author>Daniel Little Dev</author><pubDate>Fri, 11 Jan 2013 04:00:00 GMT</pubDate><guid isPermaLink="true">https://daniellittle.dev/ninject-webapi</guid></item><item><title>More on Postgres Performance</title><link>/2013/01/10/More-on-Postgres-Performance/</link><description>&lt;p&gt;If you missed my previous post on &lt;a href="/2012/10/01/understanding-postgres-performance/"&gt;Understanding Postgres Performance&lt;/a&gt; its a great starting point. On this particular post I&amp;rsquo;m going to dig in to some real life examples of optimizing queries and indexes.&lt;/p&gt;
&lt;h3 id="it-all-starts-with-stats"&gt;
&lt;div&gt;
It all starts with stats
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;I wrote about some of the &lt;a href="https://postgres.heroku.com/blog/past/2012/12/6/postgres_92_now_available/"&gt;great new features in Postgres 9.2&lt;/a&gt; in the recent announcement on support of Postgres 9.2 on &lt;a href="https://www.heroku.com"&gt;Heroku&lt;/a&gt;. One of those awesome features, is &lt;a href="http://www.postgresql.org/docs/9.2/static/pgstatstatements.html"&gt;pg_stat_statements&lt;/a&gt;. Its not commonly known how much information Postgres keeps about your database (beyond the data of course), but in reality it keeps a great deal. Ranging from basic stuff like table size to cardinality of joins to distribution of indexes, and with pg_stat_statments it keeps a normalized record of when queries are run.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;First you&amp;rsquo;ll want to turn on pg_stat_statments:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CREATE extension pg_stat_statements;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What this means it would record both:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT id
FROM users
WHERE email LIKE 'craig@heroku.com';
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT id
FROM users
WHERE email LIKE 'craig.kerstiens@gmail.com';
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To a normalized form which looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT id
FROM users
WHERE email LIKE ?;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="understanding-them-from-afar"&gt;
&lt;div&gt;
Understanding them from afar
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;While Postgres collects a great deal of this information dissecting it to something useful is sometimes more mystery than it should be. This simple query will show a few very key pieces of information that allow you to begin optimizing:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT
(total_time / 1000 / 60) as total_minutes,
(total_time/calls) as average_time,
query
FROM pg_stat_statements
ORDER BY 1 DESC
LIMIT 100;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The above query shows three key things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The total time a query has occupied against your system in minutes&lt;/li&gt;
&lt;li&gt;The average time it takes to run in milliseconds&lt;/li&gt;
&lt;li&gt;The query itself&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Giving an output something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; total_time | avg_time | query
------------------+------------------+------------------------------------------------------------
295.761165833319 | 10.1374053278061 | SELECT id FROM users WHERE email LIKE ?
219.138564283326 | 80.24530822355305 | SELECT * FROM address WHERE user_id = ? AND current = True
(2 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="what-to-optimize"&gt;
&lt;div&gt;
What to optimize
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;A general rule of thumb is that most of your very common queries that return 1 or a small set of records should return in ~ 1 ms. In some cases there may be queries that regularly run in 4-5 ms, but in most cases ~ 1 ms or less is an ideal.&lt;/p&gt;
&lt;p&gt;To pick where to begin I usually attempt to strike some balance between total time and long average time. In this case I&amp;rsquo;d start with the second probably, as on the first one I could likely shave an order of magnitude off, on the second I&amp;rsquo;m hopeful to shave two order of magnitudes off thus reducing the time spent on that query from a cumulative 220 minutes down to 2 minutes.&lt;/p&gt;
&lt;h3 id="optimizing"&gt;
&lt;div&gt;
Optimizing
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;From here you probably want to first example my other detail on understanding the explain plan. I want to highlight some of this with a more specific case based on the second query above. The above second query on an example data set does contain an index on user_id and yet there&amp;rsquo;s still high query times. To start to get an idea of why I would run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;EXPLAIN ANALYZE
SELECT *
FROM address
WHERE user_id = 245
AND current = True
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This would yield results:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=4690.88..4690.88 rows=1 width=0) (actual time=519.288..519.289 rows=1 loops=1)
-&amp;gt; Nested Loop (cost=0.00..4690.66 rows=433 width=0) (actual time=15.302..519.076 rows=213 loops=1)
-&amp;gt; Index Scan using idx_address_userid on address (cost=0.00..232.52 rows=23 width=4) (actual time=10.143..62.822 rows=1 loops=8)
Index Cond: (user_id = 245)
Filter: current
Rows Removed by Filter: 14
Total runtime: 219.428 ms
(1 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hopefully not being too overwhelmed by this due to having read the other detail on &lt;a href="/2012/10/01/understanding-postgres-performance/"&gt;query plans&lt;/a&gt; we can see that it is using an index as expected. The difference is its having to fetch 15 different rows from the index then discard the bulk of them. The number of rows discarded is showcased by the line:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Rows Removed by Filter: 14
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;This is just one more of the many improvements in Postgres 9.2 alongside pg_stat_statements.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To further optimize this we would great a conditional OR composite index. A conditional would be where only current = true, where as the composite would index both values. A conditional is commonly more valuable when you have a smaller set of what the values may be, meanwhile the composite is when you have a high variability of values. Creating the conditional index:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CREATE INDEX CONCURRENTLY idx_address_userid_current ON address(user_id) WHERE current = True;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can then see the query plan is now even further improved as we&amp;rsquo;d hope:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;EXPLAIN ANALYZE
SELECT *
FROM address
WHERE user_id = 245
AND current = True
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=4690.88..4690.88 rows=1 width=0) (actual time=519.288..519.289 rows=1 loops=1)
-&amp;gt; Index Scan using idx_address_userid_current on address (cost=0.00..232.52 rows=23 width=4) (actual time=10.143..62.822 rows=1 loops=8)
Index Cond: ((user_id = 245) AND (current = True))
Total runtime: .728 ms
(1 rows)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re looking for a deeper resource on Postgres I recommend the book &lt;a href="https://theartofpostgresql.com/?affiliate=cek"&gt;The Art of PostgreSQL&lt;/a&gt;. It is by a personal friend that has aimed to create the definitive guide to Postgres, from a developer perspective. If you use code CRAIG15 you&amp;rsquo;ll receive 15% off as well.&lt;/em&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 10 Jan 2013 22:55:56 GMT</pubDate><guid isPermaLink="true">/2013/01/10/More-on-Postgres-Performance/</guid></item><item><title>From the Notepad</title><link>https://zacs.site/blog/from-the-notepad.html</link><description>&lt;p&gt;With &lt;a href="https://zacs.site/blog/perspective.html"&gt;&lt;em&gt;From the Notepad: Perspective&lt;/em&gt;&lt;/a&gt; I started doing something the result of which I am very pleased with, and something I plan to continue in the future&amp;#160;&amp;#8212;&amp;#160;an innovation of sorts: it&amp;#8217;s not a post made in the traditional linkblog format, but it does draw some inspiration from it; it&amp;#8217;s not a full-fledged article, it&amp;#8217;s much more concise and to the point; it&amp;#8217;s not an overly simplified, minified post condensed into a near-inscrutable tweet; it&amp;#8217;s somewhere in between all of those, in a space I feel I can occupy very well. Rather than writing a full-fledged post for each of the myriad notes I have created over the past months in Simplenote, I will begin posting whatever I have collected for the potential topic as I would a linked item: with the excerpt as a blockquote along with some commentary if I deem it necessary. These types of post will allow me to expedite the publishing process without expending the extensive time and effort required to make a full-fledged post, thereby making it possible for me to post more frequently and in more easily digested modules.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/from-the-notepad.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 10 Jan 2013 18:19:36 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/from-the-notepad.html</guid></item><item><title>F. Scott Fitzgerald on the Secret of Great Writing</title><link>http://www.brainpickings.org/index.php/2013/01/08/f-scott-fitzgerld-on-writing/</link><description>&lt;p&gt;When Francis Scott Fitzgerald&amp;#8217;s daughter entered into high school, he wrote her a short letter. In this letter, he cautioned against following in his own footsteps in becoming a writer, while simultaneously encouraging her to pursue her dreams and not to get discouraged when her work fell short of her expectations.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Nobody ever became a writer just by wanting to be one. If you have anything to say, anything you feel nobody has ever said before, you have got to feel it so desperately that you will find some way to say it that nobody has ever found before, so that the thing you have to say and the way of saying it blend as one matter&amp;#160;&amp;#8212;&amp;#160;as indissolubly as if they were conceived together.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An interesting point of view to keep in mind.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.brainpickings.org/index.php/2013/01/08/f-scott-fitzgerld-on-writing/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 10 Jan 2013 17:44:08 GMT</pubDate><guid isPermaLink="true">http://www.brainpickings.org/index.php/2013/01/08/f-scott-fitzgerld-on-writing/</guid></item><item><title>IBM's Watson Memorized Urban Dictionary</title><link>http://www.theatlantic.com/technology/archive/2013/01/ibms-watson-memorized-the-entire-urban-dictionary-then-his-overlords-had-to-delete-it/267047/</link><description>&lt;p&gt;I&amp;#8217;m not sure what&amp;#8217;s funnier: the story or the comment thread at the end.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://www.theatlantic.com/technology/archive/2013/01/ibms-watson-memorized-the-entire-urban-dictionary-then-his-overlords-had-to-delete-it/267047/"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Thu, 10 Jan 2013 17:32:38 GMT</pubDate><guid isPermaLink="true">http://www.theatlantic.com/technology/archive/2013/01/ibms-watson-memorized-the-entire-urban-dictionary-then-his-overlords-had-to-delete-it/267047/</guid></item><item><title>Code a Search Engine in PHP Part 5</title><link>https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-5/</link><description>&lt;p&gt;[Are you really interested in learning how to Write a Search Engine from Scratch? Click this link and register your interest for my book about how to do so.][1]&lt;/p&gt;
&lt;p&gt;This is part 5 of a 5 part series.&lt;/p&gt;
&lt;p&gt;[Part 1][2] – [Part 2][3] – [Part 3][4] – [Part 4][5] – [Part 5][6] – [Downloads/Code][7]&lt;/p&gt;
&lt;p&gt;So we need to convert the indexer to a method that wont consume as much memory. Looking at how it works now we can determine a few areas that could be improved before we implement out new method.```
public function index(array $documents) {
$documenthash = array(); // so we can process multiple documents faster&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 10 Jan 2013 07:34:18 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-5/</guid></item><item><title>Code a Search Engine in PHP Part 4</title><link>https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-4/</link><description>&lt;p&gt;&lt;a href="https://leanpub.com/creatingasearchenginefromscratch"&gt;Are you really interested in learning how to Write a Search Engine from Scratch? Click this link and register your interest for my book about how to do so.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is part 4 of a 5 part series.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-1/%22"&gt;Part 1&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-2/"&gt;Part 2&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-3/"&gt;Part 3&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-4/"&gt;Part 4&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-5/"&gt;Part 5&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-5/#downloads"&gt;Downloads/Code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So previously we had 4 main issues identified. Im going to go with low hanging fruit and add a simple porn filter.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 10 Jan 2013 07:31:34 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-4/</guid></item><item><title>Code a Search Engine in PHP Part 3</title><link>https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-3/</link><description>&lt;p&gt;[Are you really interested in learning how to Write a Search Engine from Scratch? Click this link and register your interest for my book about how to do so.][1]&lt;/p&gt;
&lt;p&gt;This is part 3 of a 5 part series.&lt;/p&gt;
&lt;p&gt;[Part 1][2] – [Part 2][3] – [Part 3][4] – [Part 4][5] – [Part 5][6] – [Downloads/Code][7]&lt;/p&gt;
&lt;p&gt;At this point I had a large chunk of the web sitting on my disk waiting to be indexed. The first thing we need to think about is what are we going to index. Since we are dealing with HTML files we have marked up content can can pick to a certain extent what we want to index on. For our search im going to index on the title and the meta description tags. Titles are still a part of search engine ranking algorithms as many people search for things like &amp;ldquo;Yahoo&amp;rdquo; and &amp;ldquo;Facebook&amp;rdquo; and the title/URL usually contains this information. The meta description had fallen out of favor with being something search engines use these days due to being gamed, but since its unlikely the top 1 million are going to be doing this I am going to use it as well. These two terms should work fairly well at our scale and ensure our index isn&amp;rsquo;t too massive. We can always add the rest of page content at a later point.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 10 Jan 2013 07:27:57 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-3/</guid></item><item><title>Code a Search Engine in PHP Part 2</title><link>https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-2/</link><description>&lt;p&gt;&lt;a href="https://leanpub.com/creatingasearchenginefromscratch"&gt;Are you really interested in learning how to Write a Search Engine from Scratch? Click this link and register your interest for my book about how to do so.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is part 2 of a 5 part series.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-1/%22"&gt;Part 1&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-2/"&gt;Part 2&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-3/"&gt;Part 3&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-4/"&gt;Part 4&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-5/"&gt;Part 5&lt;/a&gt; – &lt;a href="http://www.boyter.org/2013/01/code-for-a-search-engine-in-php-part-5/#downloads"&gt;Downloads/Code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first implementation has a few issues that are pretty apparent. Chiefly is performance. Secondly it stores the index in a single folder which is loosely related to the first. Finally it shows duplicates in the search results. Lets fix the above and test things again to see how far we can go.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 10 Jan 2013 05:03:54 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-2/</guid></item><item><title>Code a Search Engine in PHP Part 1</title><link>https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-1/</link><description>&lt;p&gt;[Are you really interested in learning how to Write a Search Engine from Scratch? Click this link and register your interest for my book about how to do so.][1]&lt;/p&gt;
&lt;p&gt;This is part 1 of a 5 part series.&lt;/p&gt;
&lt;p&gt;[Part 1][2] – [Part 2][3] – [Part 3][4] – [Part 4][5] – [Part 5][6] – [Downloads/Code][7]&lt;/p&gt;
&lt;p&gt;I imagine that if you have landed on this page you probably have an interest in search and search engines. Not only that, you have probably read the following [Why Writing Your Own Search Engine is Hard by Anna Patterson (of Cuil fame) http://queue.acm.org/detail.cfm?id=988407][8] If not, go read it and come back here. I have always had an interest in search and indexing I thought I would take the time to write a simple indexer as a way of testing if I had actually learnt anything.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 10 Jan 2013 04:55:54 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-1/</guid></item><item><title>Using MetricFactory to get Hadoop metrics into Graphite.</title><link>https://smetj.net/using-metricfactory-to-get-hadoop-metrics-into-graphite.html</link><description>&lt;p&gt;Without metrics we're flying blind and that's very much the case with
&amp;nbsp;&lt;a class="reference external" href="http://hadoop.apache.org/"&gt;Hadoop&lt;/a&gt;. &amp;nbsp;Hadoop is a well known framework to build reliable,
scalable&amp;nbsp;and distributed computing clusters. &amp;nbsp;The Hadoop framework is a
complex environment which &amp;quot;out of the box&amp;quot; hardly offers any metrics
oversight on how the different components are …&lt;/p&gt;</description><author>Jelle Smet</author><pubDate>Thu, 10 Jan 2013 01:40:00 GMT</pubDate><guid isPermaLink="true">https://smetj.net/using-metricfactory-to-get-hadoop-metrics-into-graphite.html</guid></item><item><title>Value Tea &amp;amp; Dunking</title><link>https://sam.hooke.me/teaandstuff/2013/01/value-tea-and-dunking/</link><description>&lt;p&gt;And so commences the first Tea and Stuff meeting of 2013!&lt;/p&gt;
&lt;p&gt;It did begin rather late, as not all were present until 5:30. While waiting for all members to turn up, we cleared space for a recently acquired beer home brewing kit. Though we could not commence the beer brewing, as a few additional items are still required (e.g. brewing sugar). There is now room in the cupboard under the stairs for the fermenting pot thing, but in order to make this space several hundred plastic bags had to be relocated.&lt;/p&gt;</description><author>Sam Hooke</author><pubDate>Wed, 09 Jan 2013 22:18:47 GMT</pubDate><guid isPermaLink="true">https://sam.hooke.me/teaandstuff/2013/01/value-tea-and-dunking/</guid></item><item><title>What WordPress 4.x Could Be</title><link>https://thomashunter.name/posts/2013-01-09-what-wordpress-4-could-be</link><author>Thomas Hunter II</author><pubDate>Wed, 09 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-01-09-what-wordpress-4-could-be</guid></item><item><title>The alternatives to Apple, Facebook &amp;amp; C already exist. Shall we package them?</title><link>https://stop.zona-m.net/2013/01/the-alternatives-to-apple-facebook-c-already-exist-shall-we-package-them/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Tue, 08 Jan 2013 23:19:41 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/01/the-alternatives-to-apple-facebook-c-already-exist-shall-we-package-them/</guid></item><item><title>Why I love DATA</title><link>https://caiustheory.com/why-i-love-data/</link><description>&lt;p&gt;In a ruby script, there&amp;rsquo;s a keyword &lt;code&gt;__END__&lt;/code&gt; that for a long time I thought just marked anything after it as a comment. So I used to use it to store snippets and notes about the script that weren&amp;rsquo;t really needed inline. Then one day I stumbled across the &lt;code&gt;DATA&lt;/code&gt; constant, and wondered what flaming magic it was.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DATA&lt;/code&gt; is in fact an IO object, that you can read from (or anything else you&amp;rsquo;d do with an IO object). It contains all the content after &lt;code&gt;__END__&lt;/code&gt; in that ruby script file&lt;!-- raw HTML omitted --&gt;*&lt;!-- raw HTML omitted --&gt;. (It only exists when the file contains &lt;code&gt;__END__&lt;/code&gt;, and for the first file ruby invokes though. See &lt;!-- raw HTML omitted --&gt;footnote&lt;!-- raw HTML omitted --&gt; for more details.)&lt;/p&gt;
&lt;p&gt;How can we use this, and why indeed do I love this fickle constant? I mostly use it for quick scripts where I need to process text data, rather than piping to STDIN.&lt;/p&gt;
&lt;p&gt;Given a list of URLs that I want to open in my web browser and look at, I could do the following for instance:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="no"&gt;DATA&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;each_line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="ss"&gt;:chomp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sb"&gt;`open "&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;"`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;__END__
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;http://google.com/
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;http://yahoo.com/
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;which upon running (on a mac) would open all the URLs listed in DATA in my default web browser. (For bonus points, use &lt;a href="https://github.com/copiousfreetime/launchy#readme"&gt;Launchy&lt;/a&gt; for cross-platform compatibility.) Really handy &amp;amp; quick/simple when you&amp;rsquo;ve got 500+ URLs to open at once to go through. (I once had a job that required me to do this daily. Fun.)&lt;/p&gt;
&lt;p&gt;Or given a bunch of CSV data that you just want one column for, you could reach for &lt;code&gt;cut&lt;/code&gt; or &lt;code&gt;awk&lt;/code&gt; in the terminal, but ruby has a really good CSV library which I trust and know how to use already. Why not just use that &amp;amp; &lt;code&gt;DATA&lt;/code&gt; to pull out the field you want?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"csv"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="no"&gt;CSV&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;DATA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"kName"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;__END__
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;kId,kName,kURL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;1,Google UK,http://google.co.uk
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;2,"Yahoo, UK",http://yahoo.co.uk
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# &amp;gt;&amp;gt; Google UK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# &amp;gt;&amp;gt; Yahoo, UK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I find when the data I want to munge is already in my clipboard, and I can run ruby scripts directly from text editors without having to save a file, it saves having to write the data out to a file, have ruby read it back in, etc just to do something with the data. I can just write the script reading from &lt;code&gt;DATA&lt;/code&gt;, paste the data in and run it. Which also lets me run it iteratively and build up a slightly more complex script that I don&amp;rsquo;t want to keep. Then do what I need with the output and close the file without saving it.&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;*&lt;!-- raw HTML omitted --&gt; technically DATA is an IO handler to read &lt;code&gt;__FILE__&lt;/code&gt;, which has been wound forward to the start of the first line after &lt;code&gt;__END__&lt;/code&gt; in the file. And it only exists for the first ruby file to be invoked by the interpreter.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma" tabindex="0"&gt;&lt;code class="language-shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat &amp;gt; tmp/data.rb &lt;span class="s"&gt;&amp;lt;&amp;lt;RUBY
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;p DATA.read
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;__END__
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;data.rb
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;RUBY&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ruby tmp/data.rb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# =&amp;gt; "data.rb\n"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat &amp;gt; tmp/data-require.rb &lt;span class="s"&gt;&amp;lt;&amp;lt;RUBY
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;require "./tmp/data"
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;RUBY&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ruby tmp/data-require.rb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# =&amp;gt; /Users/caius/tmp/data.rb:1:in `&amp;lt;top (required)&amp;gt;': uninitialized constant DATA (NameError)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And because it&amp;rsquo;s a file handle pointing at the current file, you can rewind it and read the entire ruby script into itself…&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ruby tmp/readself.rb
DATA.rewind
print DATA.read
__END__
something goes here
&lt;/code&gt;&lt;/pre&gt;</description><author>Caius Theory</author><pubDate>Tue, 08 Jan 2013 21:09:42 GMT</pubDate><guid isPermaLink="true">https://caiustheory.com/why-i-love-data/</guid></item><item><title>Javascript Promises Pattern – 101</title><link>https://danielpecos.com/2013/01/08/javascript-promises-pattern-101/</link><description>&lt;p&gt;I am sure you have heard about the javascript Promises Pattern, but if you haven&amp;rsquo;t, here is a quick and simple definition: a promise or future is an object that represents a future result, not yet obtained or calculated (&lt;a href="http://en.wikipedia.org/wiki/Futures_and_promises"&gt;here&lt;/a&gt; you have a more complete definition). In fact, what is really nice about it is that allows you to define callbacks for async code in and more elegant and readable way.&lt;/p&gt;
&lt;p&gt;But wait a moment, what&amp;rsquo;s the problem with the actual callbacks system? Well, they work, but they become a big mess when you try to chain two or more of them, resulting in a code looking like a pyramid. Let&amp;rsquo; see an example.&lt;/p&gt;
&lt;p&gt;Suppose you have several async operations: operation1, operation2 and operation3 and they must be execute in strict sequence, that is, operation 2 must wait for operation1 to finish and so on. The resulting code will look like something like this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;operation1(params1) {
  async_task(params1, function() {
    operation2(params2) {
      async_task(params2, function() {
        operation3(params3) {
          async_task(params3, function() {
            // here we have the results of the three operations
          }
        }
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This code is, at least, hard to follow and thus to understand (and in my opinion quite ugly), but it has been the common way to deal with asynchronism in javascript… until now. Look how the same code would look like using Promise Pattern:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;function operation1(params1) {
  var promise = new Promise()
  async_task(params1, function() {
    // ...
    promise.resolve(params2);
  });
  return promise;
}

function operation2(params2) {
  var promise = new Promise(this)
  async_task(params2, function() {
    // ...
    promise.resolve(params3);
  });
  return promise;
}

function operation3(params3) {
  var promise = new Promise(this)
  async_task(params3, function() {
    // ...
    promise.resolve(allResults);
  });
  return promise;
}

function processResults(allResults) {
  // ...
}
operation1(params1).then(operation2).then(operation3).then(processResults);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here you can clearly see that there are three different operations, that don&amp;rsquo;t appear to be tight one to another. The chainability of the three functions is established in the last line of code, making it clear with a glimpse that every operations depends on the result of the previous one, and thus, they must be executed in strict order. This line is the key of the Promise Pattern and it works because every operation return a promise object. We&amp;rsquo;ll deep into this in further posts.&lt;/p&gt;
&lt;p&gt;This code can be heavy refactored, but I prefer to keep it like this to make it easy to understand how promises work. Anyway, I think you will agree with me that this code is much elegant and easy to understand than the previous one.&lt;/p&gt;
&lt;p&gt;So far, so good. In further posts I will show you how to easily implement this pattern in plain javascript, and we will deep into the tricks that promises use to make this code work. By the moment enjoy using the implementations provided by the main javascript libraries (much more powerfull than the one we will create) like &lt;a href="http://api.jquery.com/category/deferred-object/"&gt;jQuery&amp;rsquo;s deferreds&lt;/a&gt; (they are the same concept as promises).&lt;/p&gt;
&lt;p&gt;See you in following posts!&lt;/p&gt;</description><author>GeekWare - Daniel Pecos Martínez</author><pubDate>Tue, 08 Jan 2013 12:03:59 GMT</pubDate><guid isPermaLink="true">https://danielpecos.com/2013/01/08/javascript-promises-pattern-101/</guid></item><item><title>Killers</title><link>https://olshansky.info/movie/killers/</link><description>Olshansky's review of Killers</description><author>🦉 olshansky 🦁</author><pubDate>Tue, 08 Jan 2013 11:16:09 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/killers/</guid></item><item><title>Vi presento Eve il framework per le REST API Web</title><link>https://nicolaiarocci.com/vi-presento-eve-il-framework-per-lanciare-la-vostra-rest-api-web/</link><description>&lt;p&gt;Lo scorso anno abbiamo lavorato duro per costruirci una RESTful Web API su misura, flessibile e completa. In corso d’opera abbiamo imparato molto sulle migliori pratiche REST, mettendo anche alla frusta le rinomate capacità Web del linguaggio Python.&lt;/p&gt;
&lt;p&gt;Ad EuroPython 2012 ho poi &lt;a href="http://nicolaiarocci.com/sviluppare-una-restful-web-api-con-python-flask-e-mongodb/"&gt;raccontato la nostra esperienza&lt;/a&gt; e condiviso ciò che avevamo imparato. In quell’occasione mi sono reso conto di quanto l’argomento fosse d’attualità, tanto che da quel 4 luglio le slide che avevo preparato (le trovate su &lt;!-- raw HTML omitted --&gt;Speaker Deck&lt;!-- raw HTML omitted --&gt; o &lt;!-- raw HTML omitted --&gt;Slideshare&lt;!-- raw HTML omitted --&gt;) ed i video su YouTube (&lt;!-- raw HTML omitted --&gt;italiano&lt;!-- raw HTML omitted --&gt;; &lt;!-- raw HTML omitted --&gt;inglese&lt;!-- raw HTML omitted --&gt;) hanno totalizzato 30mila visite. Da allora ricevo continue richieste di chiarimenti, suggerimenti, approfondimenti, consigli. Soprattutto, mi si chiedono esempi di codice. In fin dei conti prima o poi qualunque sviluppatore web si trova, volente o nolente, a fare i conti con una REST API.&lt;/p&gt;</description><author>Nicola Iarocci</author><pubDate>Tue, 08 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://nicolaiarocci.com/vi-presento-eve-il-framework-per-lanciare-la-vostra-rest-api-web/</guid></item><item><title>I turned on a light</title><link>https://thomashunter.name/posts/2013-01-08-i-turned-on-a-light</link><author>Thomas Hunter II</author><pubDate>Tue, 08 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-01-08-i-turned-on-a-light</guid></item><item><title>SMS trailers at Uboot</title><link>https://www.databasesandlife.com/sms-trailers/</link><description>&lt;p class="intro"&gt;We developed a cool algorithm to add informational trailer texts to SMS at Uboot. It was online from mid 2000 to mid 2011 (when Uboot stopped doing SMS). I developed this algorithm together with my colleague Mike. So that it doesn't get lost forever, here is a description of it :-)&lt;/p&gt;
&lt;p&gt;The general situation was this:&lt;/p&gt;
&lt;ul class="tight"&gt;
  &lt;li&gt;
    The users may send SMS from Uboot to phones
  &lt;/li&gt;
  &lt;li&gt;
    SMS have fixed length (e.g. single part SMS contains 160 characters)
  &lt;/li&gt;
  &lt;li&gt;
    The user may well type fewer than the maximum number of characters (e.g. 100 characters, resulting in a 1-part SMS with a maximum length of 160 characters)
  &lt;/li&gt;
  &lt;li&gt;
    We can use this space to promote Uboot (e.g. add "Sent by www.uboot.com" text)
  &lt;/li&gt;
  &lt;li&gt;
    We realized we needed a trailer system to define what text should be added to which SMS under which circumstances
  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Requirements:&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Tue, 08 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/sms-trailers/</guid></item><item><title>PHP's array_merge_recursive function explained</title><link>http://jrgns.net/blog/2013/01/08/php-array-merge-recursive-function-explained.html</link><description>&lt;p&gt;Reading the PHP docs, it’s not immediately clear how the &lt;a href="http://php.net/manual/en/function.array-merge-recursive.php"&gt;&lt;code class="highlighter-rouge"&gt;array_merge_recursive&lt;/code&gt;&lt;/a&gt; function behaves.
I’ve setup a couple of test cases and compared them with the plain &lt;a href="http://php.net/manual/en/function.array-merge.php"&gt;&lt;code class="highlighter-rouge"&gt;array_merge&lt;/code&gt;&lt;/a&gt; function to explain it further:&lt;/p&gt;

&lt;p&gt;The following snippet set’s up a couple of arrays, and outputs them for completeness sake.&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="nv"&gt;$cats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s1"&gt;'white'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Kitty'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="s1"&gt;'brown'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Bach'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'mixed'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Tomcat'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$dogs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s1"&gt;'white'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Bowser'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'brown'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Rex'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'mixed'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Mutt'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb"&gt;var_dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Cats'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$cats&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Dogs'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$dogs&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;pre&gt;&lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Cats'&lt;/font&gt; &lt;i&gt;(length=4)&lt;/i&gt;
&lt;b&gt;array&lt;/b&gt;
  'white' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; 
    &lt;b&gt;array&lt;/b&gt;
      0 &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Kitty'&lt;/font&gt; &lt;i&gt;(length=5)&lt;/i&gt;
  'brown' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Bach'&lt;/font&gt; &lt;i&gt;(length=4)&lt;/i&gt;
  'mixed' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; 
    &lt;b&gt;array&lt;/b&gt;
      0 &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Tomcat'&lt;/font&gt; &lt;i&gt;(length=6)&lt;/i&gt;
&lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Dogs'&lt;/font&gt; &lt;i&gt;(length=4)&lt;/i&gt;
&lt;b&gt;array&lt;/b&gt;
  'white' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Bowser'&lt;/font&gt; &lt;i&gt;(length=6)&lt;/i&gt;
  'brown' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Rex'&lt;/font&gt; &lt;i&gt;(length=3)&lt;/i&gt;
  'mixed' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Mutt'&lt;/font&gt; &lt;i&gt;(length=4)&lt;/i&gt;
&lt;/pre&gt;

&lt;p&gt;This snippet highlights what happens when the arrays being merged have matching keys.&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-php"&gt;&lt;table style="border-spacing: 0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter gl" style="text-align: right;"&gt;&lt;pre class="lineno"&gt;1
2
3
4&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="nb"&gt;var_dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Cats and Dogs - plain'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;array_merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$cats&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$dogs&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nb"&gt;var_dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Cats and Dogs - recursive'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;array_merge_recursive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$cats&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$dogs&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;All values that’s not already in an array will be placed in an array,
and merged with other values with the same keys. Arrays are left as they are and then merged.&lt;/p&gt;

&lt;pre&gt;
&lt;b&gt;array&lt;/b&gt;
  'white' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; 
    &lt;b&gt;array&lt;/b&gt;
      0 &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Kitty'&lt;/font&gt; &lt;i&gt;(length=5)&lt;/i&gt;
      1 &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Bowser'&lt;/font&gt; &lt;i&gt;(length=6)&lt;/i&gt;
  'brown' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; 
    &lt;b&gt;array&lt;/b&gt;
      0 &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Bach'&lt;/font&gt; &lt;i&gt;(length=4)&lt;/i&gt;
      1 &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Rex'&lt;/font&gt; &lt;i&gt;(length=3)&lt;/i&gt;
  'mixed' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; 
    &lt;b&gt;array&lt;/b&gt;
      0 &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Tomcat'&lt;/font&gt; &lt;i&gt;(length=6)&lt;/i&gt;
      1 &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Mutt'&lt;/font&gt; &lt;i&gt;(length=4)&lt;/i&gt;
&lt;/pre&gt;

&lt;p&gt;Compare this with the normal &lt;code class="highlighter-rouge"&gt;array_merge&lt;/code&gt; function, where the values of the latter arrays replace
all the values with the same key.&lt;/p&gt;

&lt;pre&gt;
&lt;b&gt;array&lt;/b&gt;
  'white' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Bowser'&lt;/font&gt; &lt;i&gt;(length=6)&lt;/i&gt;
  'brown' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Rex'&lt;/font&gt; &lt;i&gt;(length=3)&lt;/i&gt;
  'mixed' &lt;font color="#888a85"&gt;=&amp;gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color="#cc0000"&gt;'Mutt'&lt;/font&gt; &lt;i&gt;(length=4)&lt;/i&gt;
&lt;/pre&gt;

&lt;p&gt;Values with numerical keys get added to the original array with a renumbering of keys. This
is the same behaviour as that of &lt;code class="highlighter-rouge"&gt;array_merge&lt;/code&gt;.&lt;/p&gt;</description><author>Jurgens du Toit</author><pubDate>Tue, 08 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">http://jrgns.net/blog/2013/01/08/php-array-merge-recursive-function-explained.html</guid></item><item><title>Programmer Religious Wars and the Abstraction Gradient</title><link>https://thomashunter.name/posts/2013-01-07-programmer-religious-wars-and-the-abstraction-gradient</link><author>Thomas Hunter II</author><pubDate>Mon, 07 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-01-07-programmer-religious-wars-and-the-abstraction-gradient</guid></item><item><title>Making an ugly Ethernet tap</title><link>https://blog.erethon.com/blog/2013/01/07/making-an-ugly-ethernet-tap/</link><description>&lt;p&gt;
A long time ago, I saw &lt;a href="http://hakshop.myshopify.com/products/throwing-star-lan-tap"&gt;this in the Hak5 store&lt;/a&gt;. After reading about it
in &lt;a href="http://ossmann.blogspot.gr/2011/02/throwing-star-lan-tap.html"&gt;mossmann's blog&lt;/a&gt;, I found somewhat interesting that using this
easily built device you can &lt;a href="https://youtu.be/drJWxMLrpE0"&gt;HACK THE PLANET&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
An ethernet tap is a passive device used to monitor traffic between
two hosts using a third one. For more info on network taps read &lt;a href="https://en.wikipedia.org/wiki/Network_tap"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><author>Erethon's Corner</author><pubDate>Sun, 06 Jan 2013 23:12:56 GMT</pubDate><guid isPermaLink="true">https://blog.erethon.com/blog/2013/01/07/making-an-ugly-ethernet-tap/</guid></item><item><title>What if Europe made its own Open Microelectronics (Education)?</title><link>https://stop.zona-m.net/2013/01/what-if-europe-made-its-own-open-microelectronics-education/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Sun, 06 Jan 2013 13:53:49 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/01/what-if-europe-made-its-own-open-microelectronics-education/</guid></item><item><title>Microelectronics makes all YOUR world work</title><link>https://stop.zona-m.net/2013/01/microelectronics-makes-the-world-work/</link><description>&lt;p&gt;Microelectronics and, to a much greater extent, software, are two strategic, immensely powerful technologies. Here I try to explain, in the simplest possible way, why this happens and the basic characteristics of some modern integrated circuits.&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Sun, 06 Jan 2013 13:50:21 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/01/microelectronics-makes-the-world-work/</guid></item><item><title>From the Notepad: Perspective</title><link>https://zacs.site/blog/perspective.html</link><description>&lt;p&gt;With this post I thought I would try something different: rather than writing a full-fledged post for each of the myriad notes I have created over the past months in Simplenote, I will begin posting whatever I have collected for the potential topic as I would a linked item: with the excerpt as a blockquote along with some commentary if I deem it necessary. With that, then, the first post taken straight from my notepad, in which I attempt to frame the omniscient platform war with a bit of perspective:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/perspective.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sun, 06 Jan 2013 12:17:55 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/perspective.html</guid></item><item><title>Internet is Back</title><link>https://etodd.io/2013/01/06/internet-is-back/</link><description>&lt;p&gt;I just got internet back after being without it since before Christmas. It was a tearful reunion, to be sure. Turns out, I was actually more productive than usual without internet. There's a one-word explanation for that, and it rhymes with "edit".&lt;/p&gt;
&lt;p&gt;ANYway, here's what got done:&lt;/p&gt;
&lt;h3&gt;Analytics&lt;/h3&gt;
&lt;p&gt;When you finish a play session, you'll see something like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://etodd.io/assets/kZ5Hs.jpg"&gt;&lt;img alt="" class="full" src="https://etodd.io/assets/kZ5Hs.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I haven't figured out the server side of this system yet, but all it really needs to do is accept plain text file uploads. Once I have the files, it's easy to load them into the editor, yielding data like this:&lt;/p&gt;</description><author>Evan Todd</author><pubDate>Sun, 06 Jan 2013 02:42:41 GMT</pubDate><guid isPermaLink="true">https://etodd.io/2013/01/06/internet-is-back/</guid></item><item><title>Dell Sputnik beta participant gift</title><link>https://kyrofa.com/posts/dell-sputnik-beta-participant-gift/</link><description>Well, how nice! Look what the UPS man hid behind my garbage can (seriously&amp;hellip; the thing was all damp; it must have been sitting out there for two weeks).
That&amp;rsquo;s pretty nice of them! It even included a note:
The one strange thing is that while it&amp;rsquo;s marked for Project Sputnik (which uses a Dell XPS 13), I&amp;rsquo;m not sure I would feel comfortable carrying such a small computer with it.</description><author>kyrofa's blog</author><pubDate>Sun, 06 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://kyrofa.com/posts/dell-sputnik-beta-participant-gift/</guid></item><item><title>If you tell others about this page, you owe me 1000 Dollars!</title><link>https://stop.zona-m.net/2013/01/if-you-tell-others-about-this-page-you-owe-me-1000-dollars/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Sat, 05 Jan 2013 23:22:38 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/01/if-you-tell-others-about-this-page-you-owe-me-1000-dollars/</guid></item><item><title>My Router Blacklisted Hacker News</title><link>https://zacs.site/blog/hacker-news-blacklisted.html</link><description>&lt;p&gt;Over the course of the last few days I have begun developing a new app to replace &lt;a href="http://hnpickup.appspot.com/"&gt;Hacker News Story Pickup Rate&lt;/a&gt;, a site that aims to take the guesswork out of submitting stories to Hacker News by using various heuristics to determine the best time to submit a story in order to gain the most attention. Partway through last week Hacker News Story Pickup Rate went down, and as of January 1st it had not gone back online.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/hacker-news-blacklisted.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 05 Jan 2013 19:59:31 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/hacker-news-blacklisted.html</guid></item><item><title>Node App Inspired by Daniel Suarez' Book Daemon</title><link>https://thomashunter.name/posts/2013-01-05-node-app-inspired-by-daniel-suarez-book-daemon</link><author>Thomas Hunter II</author><pubDate>Sat, 05 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://thomashunter.name/posts/2013-01-05-node-app-inspired-by-daniel-suarez-book-daemon</guid></item><item><title>Conquering 2013: Goals for the Year</title><link>https://benovermyer.com/blog/2013/01/conquering-2013-goals-for-the-year/</link><description>&lt;p&gt;I'm joining the vast numbers of bloggers who are publicly declaring their goals for the new year right now. Scott Dinsmore of Live Your Legend fame has challenged people to, well, Live Your Legend in 2013, and offers a &lt;a href="https://web.archive.org/web/20221002031539/http://liveyourlegend.net/free-2013-goal-setting-guide/" rel="external"&gt;Goal Setting &amp;amp; Action Workbook&lt;/a&gt; to help achieve that. I took four hours this morning to fill it out and plan my goals for the year, and this blog post summarizes the results of that. Two of my six big goals for the year have to do with gaming, but the rest are personal goals. I'll share all of them with you after the jump.&lt;/p&gt;
&lt;h1 id="goal-1-release-a-computer-game"&gt;Goal #1) Release a Computer Game&lt;/h1&gt;
&lt;p&gt;I've worked, briefly, in the computer game industry. I've started numerous game projects. But I've never actually released a finished game. 2013 is the year to change that. While I won't be releasing my dream game this year (the MMORPG tentatively called &lt;a href="https://starbornuniverse.wordpress.com/" rel="external"&gt;Starborn: Universe&lt;/a&gt;), I'm going to fire off a single-player action sandbox game called Starborn: Genesis. My release goal is by December 1, 2013. Future blog posts will detail this, my most difficult goal of 2013, as I work on it.&lt;/p&gt;
&lt;h1 id="goal-2-join-a-local-developer-group"&gt;Goal #2) Join a Local Developer Group&lt;/h1&gt;
&lt;p&gt;This goal is much smaller than #1. The purpose, though, is no less important; it has been said that you are an average of the five people you spend the most time with, and all of the five people I hang out with most are at best only tangentially related to computer game development. I want to connect with people more, and I especially want to connect with others who are passionate about computer game development. Joining a local developer group is an important part of that.&lt;/p&gt;
&lt;h1 id="goal-3-take-a-vacation-with-treasure-to-hawaii"&gt;Goal #3) Take a Vacation with Treasure to Hawaii&lt;/h1&gt;
&lt;p&gt;My wife Treasure and I have not yet taken a vacation outside of the Midwest. As both of us have traveled the world and love new places, this is a problem. This year, I'm committing to getting us both to Hawaii for a week in June, near or on our 4th anniversary. It will be an event to remember, I'm sure! Now I just need to figure out how to pay for it…&lt;/p&gt;
&lt;h1 id="goal-4-lead-a-yoga-class"&gt;Goal #4) Lead a Yoga Class&lt;/h1&gt;
&lt;p&gt;I don't know a thing about yoga. I've never taken a class and know only a few movements from Wii Fit. So why would I make a goal to lead a class? Because I'm interested in it, and no one ever achieved anything meaningful by aiming low. I'll need to join a class and become proficient enough over the coming year to teach a community class by the end of December. I've already picked out the location and instructor to help me achieve that. It's just a matter of getting it done.&lt;/p&gt;
&lt;h1 id="goal-5-reach-1-000-visitors-per-month-on-dicejockey"&gt;Goal #5) Reach 1,000 Visitors Per Month On Dicejockey&lt;/h1&gt;
&lt;p&gt;Yep, my blog wasn't going to slide by without a major goal this year. Dicejockey's not about Top Ten lists or Five Steps to Success, but I like to think I say things worth talking about, and that's worth pushing harder on. My life is my passion, and Dicejockey is a window to that passion. With a little luck and an extra dose of hard work, I hope to make Dicejockey a popular choice for gaming geeks.&lt;/p&gt;
&lt;h1 id="goal-6-collaborate-on-something-with-tasha"&gt;Goal #6) Collaborate on Something With Tasha&lt;/h1&gt;
&lt;p&gt;My sister Tasha and I don't talk very frequently. This isn't because we're not on speaking terms; it's just because we don't have much in common. This year I want to change that. We're both very passionate about a wide variety of topics, and I'm sure we can find something to truly connect on. I've got a tentative plan on how to achieve this goal, and I really want to get closer to my family, so I know I'll meet this goal by year's end. So those are my goals for 2013. How about you? What are you looking to achieve this year?&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 05 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2013/01/conquering-2013-goals-for-the-year/</guid></item><item><title>Using SSH Public Key Authentication on the Raspberry Pi</title><link>https://blog.tafkas.net/2013/01/05/using-ssh-public-key-authentication-on-the-raspberry-pi/</link><description>If you log into your Raspberry Pi using ssh it will prompt you for a password. Having to do this multiple times a days this is very annoying. To ease the pain, and enhance security, you can use public key authentication instead. Therefor you create a pair of keys on your client, and store the public key on your Raspberry Pi. Then you set up an authentication by key. Afterwards the user can login into the Raspberry Pi using his private key.</description><author>Tafkas Blog</author><pubDate>Sat, 05 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.tafkas.net/2013/01/05/using-ssh-public-key-authentication-on-the-raspberry-pi/</guid></item><item><title>Full-Time Blogging</title><link>https://zacs.site/blog/full-time-blogging.html</link><description>&lt;p&gt;During my flight earlier this afternoon I started writing an article tentatively titled &amp;#8220;I Should Blog Full Time, But I Can&amp;#8217;t&amp;#8221;, the first two paragraphs of which I have included below:&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/full-time-blogging.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Sat, 05 Jan 2013 00:09:45 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/full-time-blogging.html</guid></item><item><title>The Jacket</title><link>https://olshansky.info/movie/the_jacket/</link><description>Olshansky's review of The Jacket</description><author>🦉 olshansky 🦁</author><pubDate>Fri, 04 Jan 2013 15:35:20 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/the_jacket/</guid></item><item><title>A Future of Uncommunications (in 2002)</title><link>https://stop.zona-m.net/2013/01/a-future-of-uncommunications-in-2002/</link><description>&lt;p&gt;Background: straight from my &amp;ldquo;digital diary&amp;rdquo; vault, here is something I wrote in September 2002 (that is before smartphones, Facebook, the Internet of Things and so on), marking it with the following tagline: &amp;ldquo;there has never been so muchcommunication technology as today, yet as little communication among &lt;strong&gt;people&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;</description><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Fri, 04 Jan 2013 10:38:19 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/01/a-future-of-uncommunications-in-2002/</guid></item><item><title>Why the future needs a brandname.</title><link>https://klinger.io/posts/why-the-future-needs-a-brandname</link><description>There is a disenchantment in our generation. We are still sitting on our lonely planet without space travel nor flying cars or at...</description><author>Blog posts of Andreas Klinger</author><pubDate>Fri, 04 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://klinger.io/posts/why-the-future-needs-a-brandname</guid></item><item><title>To Be Productive, Be Prepared</title><link>https://martinrue.com/to-be-productive-be-prepared/</link><description>Motivation by itself gives us the willingness to do something, but nothing more. Once we make a start, the game changes and it becomes about knowing how to make progress.</description><author>Martin Rue</author><pubDate>Fri, 04 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://martinrue.com/to-be-productive-be-prepared/</guid></item><item><title>Let's rewrite this in Java!</title><link>https://www.databasesandlife.com/rewrite/</link><description>&lt;p class="intro"&gt;I've heard the phrase "Let's rewrite this in Java!" uttered in various meetings at various companies at various times in my career. Often by managers. All such projects to completely re-write the company's software in a new language or framework inevitably end in disaster. Why is this? I must confess I don't really know.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I suppose it doesn&amp;rsquo;t have to be Java,&lt;/strong&gt; although it often is. Java is the classic. For example, a big company comes along and sees, &lt;em&gt;oh my god, the entire code-base is written in a scripting language!!&lt;/em&gt; and feels the need to &amp;ldquo;clean up&amp;rdquo; the source code. Without further thought, the decision is taken to write everything. I think at least such companies inevitably choose to transition to Java.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Fri, 04 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/rewrite/</guid></item><item><title>Usability of Free Software Desktops: a rant from 2002</title><link>https://stop.zona-m.net/2013/01/usability-of-free-software-desktops-a-rant-from-2002/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Thu, 03 Jan 2013 12:12:26 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/01/usability-of-free-software-desktops-a-rant-from-2002/</guid></item><item><title>Clustering virtual machines with rgmanager and clusvcadm</title><link>https://purpleidea.com/blog/2013/01/03/clustering-virtual-machines-with-rgmanager-and-clusvcadm/</link><description>&lt;p&gt;This &lt;em&gt;could&lt;/em&gt; be a post detailing how to host clustered virtual machines with &lt;a href="https://fedorahosted.org/cluster/wiki/RGManager"&gt;rgmanager&lt;/a&gt; and clusvcadm, but that is a longer story and there is much work to do. For now, I will give you a short version including an informative &amp;ldquo;gotcha&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;With my cluster up and running, I added a virtual machine entry to my &lt;em&gt;cluster.conf&lt;/em&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-fallback"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&amp;lt;vm name="test1" domain="somedomain" path="/shared/vm/" autostart="0" exclusive="0" recovery="restart" use_virsh="1" /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This goes inside the &lt;em&gt;&lt;/em&gt; block. As a benchmark, please note that starting the machine with &lt;em&gt;virsh&lt;/em&gt; worked perfectly:&lt;/p&gt;</description><author>The Technical Blog of James on purpleidea.com</author><pubDate>Thu, 03 Jan 2013 06:25:15 GMT</pubDate><guid isPermaLink="true">https://purpleidea.com/blog/2013/01/03/clustering-virtual-machines-with-rgmanager-and-clusvcadm/</guid></item><item><title>Email Template</title><link>https://www.databasesandlife.com/email-template/</link><description>&lt;p&gt;One often needs to send users email notifications. Ideally these should have the following capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Text is stored in separate files (not strings in the source code)&lt;/li&gt;
&lt;li&gt;Localizable into different languages&lt;/li&gt;
&lt;li&gt;Variables (&amp;ldquo;Hello Adrian!&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;Attachments (e.g. PDF invoices)&lt;/li&gt;
&lt;li&gt;HTML (for styling)&lt;/li&gt;
&lt;li&gt;Plain text alternative version&lt;/li&gt;
&lt;li&gt;Inline images (e.g. company logo)&lt;/li&gt;
&lt;li&gt;Variables displayed properly in HTML mails (escaping of &amp;ldquo;&amp;amp;&amp;rdquo; etc.)&lt;/li&gt;
&lt;li&gt;Variables which are embedded directly in the HTML (&lt;code&gt;Here are your products: &amp;lt;table&amp;gt;...&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Supporting unit testing (no email sent; assertions over what would have been sent)&lt;/li&gt;
&lt;li&gt;HTML is easy to edit (double-click file, see inline images, use HTML editor, etc.)&lt;/li&gt;
&lt;li&gt;Unicode (UTF-8) only&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finding no such library available, I wrote my own in Java: EmailTemplate. &lt;a href="http://javadoc.databasesandlife.com/com/databasesandlife/util/EmailTemplate.html" rel="noopener noreferrer" target="_blank"&gt;Javadoc&lt;/a&gt; | &lt;a href="https://github.com/adrianmsmith/databasesandlife-java-common/blob/master/src/com/databasesandlife/util/EmailTemplate.java" rel="noopener noreferrer" target="_blank"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Thu, 03 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/email-template/</guid></item><item><title>Tools for Writing a Diploma Thesis</title><link>https://bastian.rieck.me/blog/2013/diploma_thesis_tools/</link><description>&lt;p&gt;I have already &lt;a href="https://bastian.rieck.me/blog/2012/diploma_thesis_writing/"&gt;written about the writing process of a diploma
thesis&lt;/a&gt;. In this post, I want to focus on some tools I
consider necessary. My recommendations have no special order and only stem from personal experience.
This post could easily be summarized as &lt;strong&gt;Use the right tool for the right job&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use LaTeX&lt;/strong&gt;: When writing a thesis, you should focus on the &lt;em&gt;content&lt;/em&gt; first before thinking about
the &lt;em&gt;layout&lt;/em&gt;. LaTeX frees your mind from tedious layout settings. It makes creating &lt;em&gt;consistent&lt;/em&gt;
layouts easy. I would &lt;em&gt;not&lt;/em&gt; recommend using Microsoft Word for creating longer documents. Unless you
&lt;em&gt;really&lt;/em&gt; know what you are doing, chances are that you will spend a lot of time fiddling around with
Word&amp;rsquo;s settings, trying to find out where your graphics went, and so on… If you are not
convinced, read &lt;a href="http://cda.psych.uiuc.edu/latex_class_material/wp.html"&gt;Allin Cottrell&amp;rsquo;s article on word
processors&lt;/a&gt; and &lt;a href="http://www.johndcook.com/blog/2008/04/03/microsoft-word-and-latex"&gt;John D. Cook&amp;rsquo;s post on
contrasting Microsoft Word and
LaTeX&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If possible, use vector graphics&lt;/strong&gt;: With vector graphics (as opposed to bitmap graphics), your
document scales better. As a bonus, you don&amp;rsquo;t have to think about the proper resolutions any more. I
found &lt;a href="http://www.inkscape.org"&gt;Inkscape&lt;/a&gt; a very valuable tool. Recent versions (0.48 and newer)
even have built-in support for rendering LaTeX markup, which facilitates integration. For a more
fine-grained control over the graphics, I used &lt;a href="http://www.texample.net/tikz"&gt;TikZ&lt;/a&gt;, a TeX package
for procedural graphics creation. In retrospect, I could have done the same things quicker with
Inkscape, so be aware that TikZ might be rather time-consuming. I would &lt;em&gt;not&lt;/em&gt; recommend using
&lt;a href="http://wwww.gimp.org"&gt;GIMP&lt;/a&gt; because it forces you to work with bitmap graphics. Likewise, using
&lt;a href="http://www.xfig.org"&gt;Xfig&lt;/a&gt; is simply not worth the bother any more. At least for me, everything
Xfig does, Inkscape does better (and quicker).&lt;/p&gt;
&lt;p&gt;For plotting functions, nothing beats &lt;a href="http://www.gnuplot.info"&gt;gnuplot&lt;/a&gt; and its various terminal
settings. Investing some hours to learn the basics of gnuplot is well worth the time, in my opinion.
For my diploma thesis, I found the &lt;code&gt;epslatex&lt;/code&gt; terminal to produce better results than the &lt;code&gt;pdf&lt;/code&gt;
terminal, as I did not have to worry about the proper font settings. &lt;code&gt;gnuplot&lt;/code&gt; directly leads to my
next recommendation:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use scripts to create scientific graphics&lt;/strong&gt;: &lt;code&gt;gnuplot&lt;/code&gt; allows you to store all commands that are
necessary to create a graphic in a simple control file. In conjunction with a data file (of a
certain mathematical function, for example), this allows you to create a very flexible graphics
workflow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your graphics remain consistent&lt;/li&gt;
&lt;li&gt;You only need to do backups of the control files because the graphics can easily be generated&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;appearance&lt;/em&gt; of each graphic remains changeable at all times&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most plotting tools are capable of scripting. If yours is not and you have enough time, it might be
worth the hassle to look for another one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use a version control system&lt;/strong&gt;: It might seem like overkill, but a version control system like
&lt;a href="http://git-scm.com"&gt;git&lt;/a&gt; frees your mind. When you remove or rewrite a section in your document,
the content does not get irretrievably lost. You don&amp;rsquo;t need to create copies of your document for
keeping different versions (believe me, I &lt;em&gt;have&lt;/em&gt; seen this in practice). In addition, your backup
strategy becomes very easy: Simply copy your folder or (in the case of git) create a remote
repository. I found the &lt;em&gt;branching&lt;/em&gt; features of git particularly useful when giving out parts of my
thesis to proofreaders. For each of the readers, I created a new branch. I then proceeded to work
again with the &lt;code&gt;master&lt;/code&gt; branch, knowing full well that I would be able to merge the changes later
on.&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t worry about the extra overhead imposed by a VCS: Since you are probably the only
person working on your thesis, your commit messages don&amp;rsquo;t need to be verbose. Heck, they don&amp;rsquo;t even
need to make sense. In the later stages of my diploma thesis, my commit messages sometimes only
consisted of a single &lt;code&gt;.&lt;/code&gt;.&lt;/p&gt;</description><author>Ecce Homology on Bastian Grossenbacher Rieck's personal homepage</author><pubDate>Wed, 02 Jan 2013 21:32:14 GMT</pubDate><guid isPermaLink="true">https://bastian.rieck.me/blog/2013/diploma_thesis_tools/</guid></item><item><title>Moonrise Kingdom</title><link>https://olshansky.info/movie/moonrise_kingdom/</link><description>Olshansky's review of Moonrise Kingdom</description><author>🦉 olshansky 🦁</author><pubDate>Wed, 02 Jan 2013 16:04:55 GMT</pubDate><guid isPermaLink="true">https://olshansky.info/movie/moonrise_kingdom/</guid></item><item><title>Coming soon to your smartphone: a network that everybody could turn off</title><link>https://stop.zona-m.net/2013/01/lte-jamming-smartphone/</link><description/><author>Welcome to Marco Fioretti's website! on Stop at Zona-M</author><pubDate>Wed, 02 Jan 2013 16:04:16 GMT</pubDate><guid isPermaLink="true">https://stop.zona-m.net/2013/01/lte-jamming-smartphone/</guid></item><item><title>Startups, think about SOA</title><link>https://blog.separateconcerns.com/2013-01-02-startups-soa.html</link><description>&lt;section id="What-is-SOA"&gt;
&lt;h2&gt;What is SOA?&lt;/h2&gt;
&lt;p&gt;When people say SOA (Service Oriented Architecture) they often mean different things. My personal definition of SOA is rather loose and, like all the quotes in this article, &lt;a href="http://queue.acm.org/detail.cfm?id=1142065"&gt;comes from Werner Vogels&lt;/a&gt;, the CTO of Amazon:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For us service orientation means encapsulating data with the business logic that operates on the data, with the only access through a published service interface.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you are an Object Oriented Programming person this should ring a bell. Indeed, SOA is essentially encapsulation at the system level. Actually, I strongly believe OOP is a good idea (encapsulation) applied at the wrong layer.&lt;/p&gt;
&lt;p&gt;The opposite of SOA in the context of the Web is monolithic applications. Think textbook Ruby on Rails or Django, for instance. Monolithic applications are fine as long as they are small, but I think SOA is a better fit for larger projects. If you are a technological startup, that means you should at least start thinking about what SOA could bring you if you are starting to have a clear idea of what your product is. Monolithic applications are great for prototypes and MVPs.&lt;/p&gt;
&lt;p&gt;If you are wondering if what you are currently doing is closer to SOA than to monolithic applications, ask yourself these questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;How many different repositories does our code live in? (If you do &lt;strong&gt;not&lt;/strong&gt; use source control you have more urgent problems to think about than SOA.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How many different databases do we have? How many database instances do we have? How many connections? How many schemas? (SOA and NoSQL tend to mix well.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do we have a Web application that does significantly more than rendering templates? Is it stateful? What parts of that state could we also use in a mobile application? Does the same application render JSON and HTML?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="Advantages-of-SOA"&gt;
&lt;h2&gt;Advantages of SOA&lt;/h2&gt;
&lt;p&gt;One of the most obvious benefits of SOA is that services are easier to scale than monolithic applications. Maybe you want to migrate user authentication data to Redis and keep other data in whatever DB you already have? SOA makes it trivial. Maybe some part of your product would benefit from running on an AWS instance that has lots of RAM while another one is CPU-intensive? Just deploy the corresponding services where they run best.&lt;/p&gt;
&lt;p&gt;SOA will also help you achieve resilience. You can program user-facing or aggregate services defensively so that they detect the unavailability of backend services and degrade gracefully. You can even use a &lt;a href="https://blog.codinghorror.com/working-with-the-chaos-monkey/"&gt;chaos monkey&lt;/a&gt; to ensure this.&lt;/p&gt;
&lt;p&gt;However in my opinion the main advantages of SOA are not technical, they are organizational.&lt;/p&gt;
&lt;p&gt;As the number of your employees increases you will have to separate them into teams. The classical way to do this is by specialty: first developers and operations, then spin off DBAs… The main problem with that organization is that it hinders innovation. To create a new feature you need to coordinate all these people, and it results in endless meetings and sterile debates (not to mention clan wars).&lt;/p&gt;
&lt;p&gt;This is not a fatality. You have probably heard of DevOps, and maybe dismissed it as Yet Another Buzzword. Well SOA is the easiest way to implement True DevOps (TM?), meaning that developers and operations really work together all the time. The trick is that there are no “devs” and “ops”, because you create teams along another dimension: services. In Werner Vogel’s words:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The traditional model is that you take your software to the wall that separates development and operations, and throw it over and then forget about it. Not at Amazon. You build it, you run it. This brings developers into contact with the day-to-day operation of their software.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These teams are like smaller startups within your growing startup: they have all they need to build new features or even whole products by themselves. And they will keep you nimble if you give them enough leeway:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We allow teams to function as independently as possible. Developers are like artists; they produce their best work if they have the freedom to do so, but they need good tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;SOA also gives you language agnosticism almost for free. Not much prevents different services from being written in different programming languages. Why would you want to do that? Well, beyond the fact that different problems are better solved in Python, Haskell or C, there is lot of talent out there not using Ruby, Python, PHP, Scala, JavaScript or whatever language you have chosen for your monolithic application. Some of those Scheme, Io, Factor, Lua or F# hackers can be real assets for those clever enough to give them a job.&lt;/p&gt;
&lt;p&gt;Finally, I can see a (perhaps more abstract) last advantage to SOA which is related to the rise of the Programmable Web. After all, there is little difference between a Web API and a service, except that you wrote the latter and not the former. Embracing SOA will prepare you to work with external APIs, and more importantly to publish your own. For instance, lots of AWS services have started their life as internal services at Amazon.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="Conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am not saying SOA &lt;strong&gt;only&lt;/strong&gt; has advantages. Such an architecture can be fragile if you do not code with service unavailability in mind. Testing complex operations involving lots of services can be hard, and debugging them even harder. Correctly defining the boundaries and interfaces of services requires a significant amount of reflection and may not be a good idea when you do not know what exactly you are building.&lt;/p&gt;
&lt;p&gt;That being said I still think more technological and/or Web startups should consider SOA instead of the “everything within the Framework” approach, not really for future scalability reasons, but because they risk limiting their flexibility, speed of iteration and capacity to hire short term if it is not already the case.&lt;/p&gt;
&lt;/section&gt;</description><author>Separate Concerns</author><pubDate>Wed, 02 Jan 2013 16:00:01 GMT</pubDate><guid isPermaLink="true">https://blog.separateconcerns.com/2013-01-02-startups-soa.html</guid></item><item><title>Hello again, World!</title><link>https://blog.separateconcerns.com/2013-01-02-hello-world.html</link><description>&lt;p&gt;&lt;a href="https://catwell.info"&gt;I&lt;/a&gt; have not had a blog for over two years. The main reason for that is that writing is hard, so I went shopping on Twitter instead.&lt;/p&gt;
&lt;p&gt;This was a bit hypocrite since I am an advocate for the Open Web and a huge consumer of information feeds, with several hundreds of them in my news reader. So for this New Year I have decided to put an end to this situation, thrown together a few lines of Lua code that act as a static blog generator (because reinventing the wheel is fun), and here it is: my new online journal.&lt;/p&gt;
&lt;p&gt;I do not know with what frequency I will publish but expect articles about working at startups, distributed systems, programming in Lua, dealing with mobile networks, and whatever I happen to read and find interesting. Oh, and also the occasional rant, I guess.&lt;/p&gt;
&lt;p&gt;Now here’s to the tradition:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-lua"&gt;local greet = function(name)
  print(string.format("Hello, %s!",name))
end

greet("World")
&lt;/code&gt;&lt;/pre&gt;</description><author>Separate Concerns</author><pubDate>Wed, 02 Jan 2013 16:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.separateconcerns.com/2013-01-02-hello-world.html</guid></item><item><title>Cycloramic and Disruption</title><link>https://zacs.site/blog/cycloramic-disruption.html</link><description>&lt;p&gt;It happened when Steve Jobs introduced the iPhone, and it happened again when he introduced the iPad: a new player entered a market stagnated by incumbents and surprised everyone by tossing the norm out the window and ushering in a new era through the door. On a much smaller scale this happened earlier last week when I stumbled across &lt;a href="http://cycloramic.com/"&gt;Cyloramic&lt;/a&gt;, a neat little iOS app for the iPhone 5 that uses vibration patterns to spin the phone in a full circle and take a panoramic shot of its surroundings.&lt;/p&gt;
                &lt;p&gt;&lt;a href="https://zacs.site/blog/cycloramic-disruption.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Wed, 02 Jan 2013 14:12:08 GMT</pubDate><guid isPermaLink="true">https://zacs.site/blog/cycloramic-disruption.html</guid></item><item><title>Purple Cow</title><link>https://june.kim/purple-cow/</link><author>june.kim</author><pubDate>Wed, 02 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://june.kim/purple-cow/</guid></item><item><title>Store Users' Birth Dates, Not Ages, in the Database</title><link>https://www.databasesandlife.com/age/</link><description>&lt;p class="intro"&gt;If you store your users' ages in the database, in one year's time their ages will be wrong. If you store your users' birth dates in the database, and calculate their age from that, this age will always be correct.&lt;/p&gt;
&lt;p&gt;Some sites wish to ask the user their age and display it. It would seem simplest to just store this number in an integer field alongside the user in the database. But you can be sure that, in one year, this value will be wrong.&lt;/p&gt;</description><author>Databases &amp;amp; Life</author><pubDate>Wed, 02 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://www.databasesandlife.com/age/</guid></item><item><title>Reflections on 2012</title><link>https://dustin.lammiman.ca/text/reflections-on-2012/</link><description>&lt;p&gt;Last night as I celebrated the beginning of a new year with friends and family we reflected on Proverbs 3:5-6:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Trust in the Lord with all your heart&lt;br /&gt;
and lean not on your own understanding;&lt;br /&gt;
in all your ways submit to him,&lt;br /&gt;
and he will make your paths straight.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is amazing to think back on the year and realize how many times God has made my paths straight.&lt;!--more--&gt; A year ago I was getting ready to drive back to Yellow Grass after a much needed Christmas break. I didn’t want to go. It wasn’t that my internship experience to that point had been horrible, but I was feeling very discouraged by a lack of progress. I was half way through my eight months in Saskatchewan and the two things I was responsible for, a kid’s club and Sunday evening Bible study, had just barely gotten started and were already in danger of dying due to a lack of attendance.&lt;/p&gt;
&lt;p&gt;Looking back on my time in Yellow Grass now I see a much different picture. By the time I left in April the attendance at the kid’s club had swelled from ~10 kids a week to over 20 most weeks. More importantly, these kids were being taught the Bible and the gospel message and other adults in town became excited about what was happening. The Sunday evening Bible study never grew much, but the small group of Christians that met faithfully every week began to see its value as a time of encouragement where they could fellowship, pray together, and imagine what Kingdom work in Yellow Grass might look like in the future. So, while in January I didn’t want to go back to Yellow Grass, by April I wasn’t sure I wanted to leave. God had indeed made my path straight and was doing great things in small town Saskatchewan. I was very encouraged to go back for VBS in August and see how he continues to work.&lt;/p&gt;
&lt;p&gt;2012 brought many other blessings to me for which I am very thankful. I graduated with my Bachelor’s degree in Theology from Alberta Bible College and I traveled Europe for a month with a good friend. Now I feel that the path in front of me is winding again. I’m not really sure what God has in store for me next but I’m itching to know. It is frustrating at times when I feel like I am just spinning my tires and going nowhere. But if I look back I can see that God has straightened the winding paths for me in the past, and so I can be confident that he will continue to do so in 2013 and beyond.&lt;/p&gt;
&lt;p&gt;So, how did God make your paths straight in 2012?&lt;/p&gt;</description><author>Dustin.Lammiman</author><pubDate>Wed, 02 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://dustin.lammiman.ca/text/reflections-on-2012/</guid></item><item><title>How I Fell in Love with a Schizophrenic</title><link>http://asserttrue.blogspot.com/2013/01/how-i-fell-in-love-with-schizophrenic.html</link><description>&lt;p&gt;What an amazing story.&lt;/p&gt;


                &lt;p&gt;&lt;a href="http://asserttrue.blogspot.com/2013/01/how-i-fell-in-love-with-schizophrenic.html"&gt;Permalink.&lt;/a&gt;&lt;/p&gt;</description><author>Zac Szewczyk</author><pubDate>Tue, 01 Jan 2013 13:10:28 GMT</pubDate><guid isPermaLink="true">http://asserttrue.blogspot.com/2013/01/how-i-fell-in-love-with-schizophrenic.html</guid></item><item><title>The Giving Tree</title><link>https://june.kim/giving-tree/</link><author>june.kim</author><pubDate>Tue, 01 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://june.kim/giving-tree/</guid></item><item><title>2013 Technology Predictions</title><link>https://justingarrison.com/blog/2013-01-01-2013-technology-predictions/</link><description>Yay! Another year and another post for my technology predictions.</description><author>Justin Garrison's Homepage</author><pubDate>Tue, 01 Jan 2013 02:00:00 GMT</pubDate><guid isPermaLink="true">https://justingarrison.com/blog/2013-01-01-2013-technology-predictions/</guid></item></channel></rss>