<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>Hacker News Personal Blogs 2011 | Top 100 Blogs</title><link>https://hn-blogs.kronis.dev/feed-top100.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>searchcode now supports regex code search</title><link>https://boyter.org/2011/12/searchcode-now-supports-regex-code-search/</link><description>&lt;p&gt;searchcode updates now supports regex code search&lt;/p&gt;
&lt;p&gt;Similar to the soon to be defunt Google Code Search you can now search over 1 billion lines of code from github, bitbucket, sourceforge, google code and codeplex on searchcode. All you need do it search using a regex such as &lt;a href="http://searchco.de/?q=/%5Bcb%5Dat/"&gt;/[cb]at/&lt;/a&gt; or &lt;a href="http://searchco.de/?q=/a%7B1,5%7D/"&gt;/a{1,5}/&lt;/a&gt; etc… You can filter by file extension as well using ext:[FILETYPE] EG, [/print_r/ ext:php][3] The only catch is due to constraints you can only do prefix regex not infix. Essentially this means the following search /lisp*/ will work as expected but /*lisp/ may not. The reason for this is that I am a single founder without funding and resources are finite. Assuming there is a demand for these features I can ramp up pretty quickly however (just a few config changes). Some searches such as [/[a-z]/][4] will take a while to return initially as the system warms up. You can see a lot more examples on the [features][5] page.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Sat, 17 Dec 2011 06:52:21 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/12/searchcode-now-supports-regex-code-search/</guid></item><item><title>Google, Fix your Google+ API</title><link>https://captnemo.in/blog/2011/12/06/google-plus-api-fixit/</link><description>&lt;p&gt;Dear Google,&lt;/p&gt;

&lt;p&gt;Please release the Google+ write API as well. In case you’ve forgotten, its been 6 months since you launched. I’ve got stuff I wanna post, stuff I wanna develop. Please keep to your promises, and don’t make me quote Steve Yegge.&lt;/p&gt;

&lt;p&gt;Also, while you are at it, please fix &lt;a href="http://code.google.com/p/google-plus-platform/issues/detail?id=83"&gt;this issue&lt;/a&gt; and make the list of +1d url’s available.&lt;/p&gt;

&lt;p&gt;Thanks,
A frustrated developer and Google+ user.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Tue, 06 Dec 2011 02:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/12/06/google-plus-api-fixit/</guid></item><item><title>Someone jailbreak my iPad</title><link>https://captnemo.in/blog/2011/12/05/someone-jailbreak-my-ipad/</link><description>&lt;blockquote&gt;
  &lt;p&gt;This is a rant, mainly targeted at Apple. If you are a Apple fanboi, just &lt;a href="https://daringfireball.net"&gt;go&lt;/a&gt; &lt;a href="https://www.eff.org/"&gt;elsewhere&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Please, and quickly. I can’t take another minute of this iTunes. It refuses to properly sync songs, does not update my songs tag info, unless I play them individually, and to top it all, my iPad gives out incorrect usage information about my apps. I tried adding them up, and it seems the total is way off. And since everything in thr Apple land lives happily inside the propertiery Apple File System, I cannot even check it realiabily. And don’t even get me started on the the application transfers. The file sharing system is so bad in iOS that almost evey other app comes built in with a wi-fi or ftp server. When alomst mevery app that deals with files starts ro do that, there is something definately wrong with your file system approach.&lt;/p&gt;

&lt;p&gt;And why doesn’t my itunes recognize any video files at all. I was given a warning about needing QuickTime, and I installed it, but it still refuses to play them in iTunes, and doesn’t even give me an error string to hold on to.&lt;/p&gt;

&lt;p&gt;Seriously, iTunes go back to the bloatware land that you came from. I’ll try my luck with something else from now on. And only if someone could give me the specs for the arcane plist format, I might write a PC version of the iBooks app. And calibre needs to fix up its pdf to epub approach. Inline styles are not used anymore, doesn’t it know already.&lt;/p&gt;

&lt;h3 id="a-few-days-later"&gt;A few days later…&lt;/h3&gt;

&lt;p&gt;After spending a few more days with my iPad, I have developed a love/hate relationship wit it. I hate the ugly sync process, which still refuses to sync videos, telling me I have to delete everything to start sync. I love it for its ease of use, awesome touch, and aesthetics. I hate it for its lack of support, oepn sync protocols, and most of all Apple’s close mindedness regarding unsigned binaries.&lt;/p&gt;

&lt;p&gt;Seriously Apple, if tablets are the computer of the future, treat them as auch. Let me treat it as a fully functional comouter, which lets me run whatever I want, with whatever privileges I want.&lt;/p&gt;

&lt;p&gt;If Microsoft had tried to create such a walled garden of apps in Windows, would it have been so successful? Granted, people would love running apps from Windows 8 Marketplace, if only because it would keep their software updated. But Windows at least has a choice,to allow me to download a tiny binary from a small Windows Developer who does not want to pay MS just to let people use his/her apps.&lt;/p&gt;

&lt;p&gt;An appstore is an excellent idea, executed brilliantly by Apple, but please follow MS and give us an official way to do whatever the hell I want to do with my iPad.&lt;/p&gt;

&lt;h3 id="a-few-weeks-later"&gt;A few weeks later…&lt;/h3&gt;

&lt;p&gt;I really hate my iPad now, especially once I realise that my cheap Nokia cell phone has tether support, while my iPad does not.  To do any task that may require you access to a normal file system, such as cloning a repository from github, or editing an document anywhere is impossible in the device. I love playing games on it, though, but it seems like a really costly device to play games and read books on. Get the Fire at less than half the price, and root it to install cyanogen mod (which will soon be available for the Fire).&lt;/p&gt;

&lt;p&gt;Sometimes, I wonder if Indian carriers would have installed Carrier IQ on an iPad (which comes without a SIM card). I’ll find out as soon as I can root it.&lt;/p&gt;

&lt;p&gt;One of my friends gave a very serious comment on the iPad : “It seems as if you have rented the device from Apple, rather than bought it”. And I’ve come to realise that its a reflection of the sad state that the electronics manufacturing industry is in today.&lt;/p&gt;

&lt;h3 id="a-few-more-weeks-later-"&gt;A few more weeks later :&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;I jailbroke my iPad :)&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id="further-links-"&gt;Further links :&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://gizmodo.com/5863640"&gt;Kindle fire unroots itself&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.theverge.com/2011/12/16/2642039/"&gt;Fire doesnt allow you to visit android marketplace&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://lifehacker.com/5863895/"&gt;Carrier IQ controversy&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.gsmarena.com/nokia_x2_01-3610.php"&gt;Nokia dumb phone features&lt;/a&gt; - X2-01&lt;/li&gt;
  &lt;li&gt;How &lt;a href="http://cydiablog.com/category/jailbreak/"&gt;I Jailbroke my iPad&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Nemo's Home</author><pubDate>Mon, 05 Dec 2011 02:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/12/05/someone-jailbreak-my-ipad/</guid></item><item><title>How Heroku Works - Hiring</title><link>/2011/12/02/How-Heroku-Works-Hiring/</link><description>&lt;p&gt;I alluded in earlier posts of &lt;a href="http://www.craigkerstiens.com/2011/11/02/how-heroku-works-teams-tools/"&gt;How Heroku Works&lt;/a&gt; that we have talented engineers. In fact I would venture to say that there is not a weak link when it comes to our engineers at Heroku. Ensuring we have talented engineers makes it easier for us to find other talented engineers and maintains a level of quality in our product. This means we must be very careful about not diluting our pool of engineering talent, which is where our hiring process becomes especially key. By the time we hire a new employee, we know without a doubt they&amp;rsquo;re a fit within our organization.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Our goal in hiring is seldom to fill a role, but more commonly to find more talented people share our goal (changing the world for developers).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So what&amp;rsquo;s our hiring process look like&amp;hellip;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt;Review Resume/Github Profile&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt;Initial Screen&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt;Second Screen&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt;Starter Project&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;While there&amp;rsquo;s definitely a process that we follow that&amp;rsquo;s not what&amp;rsquo;s interesting. We way too often get worried about the steps 1, 2, 3&amp;hellip; Instead you should focus on what&amp;rsquo;s important: are they a fit? Can they get shit done? Who cares about how many phone screens someone goes through?! Five phone screens instead of two doesn&amp;rsquo;t make them a better fit for your company. The short of it is they go through enough screens that you feel comfortable and you progress them through the process. For us at any point in the process if someone is determined to not be a fit the process ends there. If the process does end the hiring manager will relay this in the appropriate form, though always in writing via email as well.&lt;/p&gt;
&lt;p&gt;The hiring manager could debatably be the biggest difference between our process and others. When a candidate applies to a position it goes to the hiring manager (&lt;em&gt;not an HR person&lt;/em&gt;). The hiring manager will be your manager once at Heroku it&amp;rsquo;s one in the same and this ensures from the start of the process the candidate and the manager mesh well. Yes, having the manager of a group review github profiles and resumes is extra effort, but who better to judge from a quick glance than engineers. In general as a manager you&amp;rsquo;re evaluated on the success of those you manage, as such you should be invested heavily in those you hire. In addition to this we find a big difference in the on boarding process and how quickly someone can succeed. We have used many approaches, but the success of someone at Heroku based on having their hiring manager and manager be the same individual is best highlighted below:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Hiring Manager = Manager" src="https://f.cl.ly/items/462y1J3G0L3q1f3v1o1U/hiring-1.png" /&gt;&lt;/p&gt;
&lt;p&gt;While every step in the hiring process is valuable starter projects may be the most valuable to ensuring quality. The final step with nearly everyone we hire is to invite them to come hack with us. Instead of parading someone around for a day long interview we get down to business and write some code. It could be something internal to Heroku, it could be an open source project we use, it could be something interesting that the candidate feels would add value to Heroku. Starter Projects vary slightly between each hiring manager.&lt;/p&gt;
&lt;p&gt;Several of our managers prefer to lay out several potential interesting projects, talk through them with the candidate, and then let the candidate decide what they&amp;rsquo;d like to work on. Sometimes there&amp;rsquo;s a pressing need that the candidate can jump right in and add some value. It&amp;rsquo;s &lt;strong&gt;always&lt;/strong&gt; important that the starter project is achievable, if it&amp;rsquo;s too broad of difficult for a 1-2 day period then the manager has failed in the hiring process. Regardless of the project it&amp;rsquo;s far more than an exercise on a white board, it&amp;rsquo;s actually what life is like at Heroku. We have lunch at the &lt;a href="http://www.flickr.com/photos/teich/4928103311/"&gt;same table&lt;/a&gt; that we eat at every other day, we interact just as we normally would, and after work there may or may not &lt;a href="http://drunken-samurai-42.tumblr.com/"&gt;be drinks&lt;/a&gt; just like any other day.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As a slight aside, we even conduct starter projects when current Herokai move from one team to another&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Starter projects usually last anywhere from a day to several days. At the end of a starter project the candidate presents what they did, in a similar fashion to weekly demos that occur at workshop (more on that some other time). In earlier days it was nearly the entire company that would sit in, ask questions and give feedback. Now it&amp;rsquo;s a bit harder for all us to fit into one conference room, though there&amp;rsquo;s an open invite and anyone that wishes can sit in (often 10-20 Herokai). At the end of the starter project there&amp;rsquo;s no question that the candidate fits or doesn&amp;rsquo;t, often from both sides. Of course if it&amp;rsquo;s a fit we make an offer and welcome them into the family.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Fri, 02 Dec 2011 22:55:56 GMT</pubDate><guid isPermaLink="true">/2011/12/02/How-Heroku-Works-Hiring/</guid></item><item><title>Wildcards</title><link>https://boyter.org/2011/11/wildcards/</link><description>&lt;p&gt;Just a quick update to let you know that wildcard searches have been updated to support prefix and postfix.&lt;/p&gt;
&lt;p&gt;Essentially this means the following searches now all work,&lt;/p&gt;
&lt;p&gt;&lt;a href="http://searchco.de/?q=*print"&gt;*print&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://searchco.de/?q=*clo*"&gt;*clo*&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://searchco.de/?q=clo*"&gt;clo*&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In addition code characters such as { } [ ] &amp;lt; &amp;gt; are now being indexed. Finally searchco.de has been on a bit of a diet and should be a lot faster to load and search.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Mon, 28 Nov 2011 06:49:22 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/11/wildcards/</guid></item><item><title>Skyrim: A Nord's Tale, Part 4</title><link>https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-4/</link><description>&lt;p&gt;I formally joined the Companions, and learned that the Circle, that group that is the central leadership of the Companions, all are werewolves. I heard through the grapevine that players who join the Circle can also become werewolves. Since I've committed to the Companion track, I think I'll gun for that. I also took down two more dragons and learned a little more about that storyline. It looks like there's a big master dragon that's resurrecting other dragons. I forget his name, but he mocked (pitied?) me when he resurrected another dragon in front of me. Curious. I need to explore that more.&lt;/p&gt;
&lt;p&gt;In light of the limitation on how many skills you can master, I've stopped exploring alchemy and magic in favor of my skill focuses - Heavy Armor, Two-Handed Weapons, Smithing, and to a lesser degree, Enchanting. I may drop Enchanting, depending on how easily I can acquire magical items in the future. I like the idea of smithing magical jewelry, and I'm starting to amass quite a collection of components for that. My most recent perk acquisition is Dwarven Smithing. Dwarven armor seems to be just a little better than steel armor, so I'll be upgrading my armor as soon as I can to that standard.&lt;/p&gt;
&lt;img alt="A screenshot of dwarven armor in Skyrim" class="photo" src="https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-4/DwarvenArmor_Skyrim.jpg" /&gt;</description><author>Ben Overmyer's Site</author><pubDate>Fri, 25 Nov 2011 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-4/</guid></item><item><title>My Experience with the Deloitte Cyber Collegiate Threat Competition (2011)</title><link>https://captnemo.in/blog/2011/11/20/cctc-blog/</link><description>&lt;p&gt;I recently was part of a team at IIT-Roorkee that won the Deloitte Cyber Collegiate Threat Competition. It was a competition modeled after The Deloitte sponsored CCDC in the US. The event will be organized in the subsequent years as well, and hence this blog post will summarize my experience so as to help any future participants. Moreover, the organizing team has guaranteed us that the competition will be altered significantly in the coming years. This was the first year that this event was organized, after all.&lt;/p&gt;

&lt;p&gt;I’ll go into the contest round by round, so beginning with Round 1.&lt;/p&gt;

&lt;h1 id="round-1"&gt;Round 1&lt;/h1&gt;
&lt;p&gt;Deloitte came to our campus, with little promotion about the event. A presentation was given on the current scenario of Cyber Threat, particularly with respect to India. Free swag was awarded to people who asked some good questions, or answered some as well. After the presentation, a quiz was goven out, consisting mainly of questions about Web Application Security. A few of the questions asked to write down code to circumvent a particular issue (like SQL Injection). But it was mostly about stuff that every security conscious Web Developer would know about.&lt;/p&gt;

&lt;p&gt;After the quiz, they selected the top 9 candidates, and asked us to form teams. Make sure that you attend the quiz with your friends, as we definitely had an edge by knowing everyone in our team before the event. The number of teams varied from campus to campus. But if you perform decent enough, you will be selected.&lt;/p&gt;

&lt;h1 id="round-2"&gt;Round 2&lt;/h1&gt;
&lt;p&gt;Each of the teams were given a VM Image, and we were asked to hack into it. We were not allowed to exploit vulnerabilities in the guest OS, or things like VMWare, or try to boot into the image with another OS, but other than that everything went.&lt;/p&gt;

&lt;p&gt;The VM had a library application, with several vulnerabilities. A challenge sheet was mailed to us, and we were expected to finish as many challenges as we could. Any further vulnerabilities not mentioned in the challenge could also be mentioned, but theywere only to be used in the case of a tie with another team.&lt;/p&gt;

&lt;p&gt;The time duration for Round 2 was 15 days and we were supposed to submit our reports by then. We were able to complete most of the challenges after we found a blind sql injection vulnerablity. Further, we were able to get a copy of the obsfucated PHP code, which we converted to simpler versions easily enough. We had no way to make use of the code, but it did help us in identifying possible files and entry routes for vulnerabilities.&lt;/p&gt;

&lt;p&gt;To get a good score in round 2, try to attack every point in the application. In our case, some of them were too stupid to be used in a real case scenario. For instance, we had password hashes appearing in images. Pour through the javascript code, and search like hell. Stuff like w3af might help you, but since its a limited application only, it is often easier to just track the application flow. We did try kernel level exploites, but the VM was fully patched and up to date.&lt;/p&gt;

&lt;h1 id="round-3"&gt;Round 3&lt;/h1&gt;

&lt;p&gt;Round 3 was organized at Hyderabad and was a head on hack everything contest. We were handed 3 virtual machines, with lots of vulnerable services. We had to keep those services running, which were periodically pinged by a scorebot. Scores were awarded in three categories : attack, defense, and flags.&lt;/p&gt;

&lt;p&gt;Attack points were earned upon getting a shell on any of the other team’s servers.&lt;/p&gt;

&lt;p&gt;Flag points of awardedon the basis of getting access to secrets stored inside the other team’s servers.&lt;/p&gt;

&lt;p&gt;Defense points were earned on the basis of status of your own service.&lt;/p&gt;

&lt;p&gt;The network architecture was 3 tiered. A single central router routed requests to a team’s router, which was then connected to an individual team switch. A switch was connected to the host VM, and the attack machines. Two different subnets were created for attack and defense in each team’s router. All uVMs were present in the attack subnets.&lt;/p&gt;

&lt;h2 id="day-1"&gt;Day 1&lt;/h2&gt;
&lt;p&gt;Day 1 consisted mostly of us learning about the network and trying to gain access into the other systems. All the services were highly vulnerable, and as a result, we had to patch that vulnerability in our own servers before we attacked anyone with it. DoS attacks started late in theday, but were ever present.&lt;/p&gt;

&lt;p&gt;The VMs handed t us included a Windows Server 2003, a debian, and an Ubuntu. Only open source/freeware tools were allowed, and we used lots of stuff including :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Backtrack for almost everything since attack laptops given to us had Windows installed&lt;/li&gt;
  &lt;li&gt;LOIC for DoS attacks&lt;/li&gt;
  &lt;li&gt;Wireshark for packet analysis.&lt;/li&gt;
  &lt;li&gt;Snort for intrusion detection.&lt;/li&gt;
  &lt;li&gt;NMap for scanning services&lt;/li&gt;
  &lt;li&gt;Metasploit for trying out exploits&lt;/li&gt;
  &lt;li&gt;Cain and Abel for miscellaneous stuff&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="day-2"&gt;Day 2&lt;/h2&gt;
&lt;p&gt;Day 2 involves lots of pwning,and a surprise twist. All VMs for day 1 had been reset to their current state, and we had to do patch them all over again in first fifteen minutes of the session. Other than that, the increase in traffic was exponential. All our machines were scanned tonell. DoS attacks became normal, and the epic moment of the day was during the last session when we had our router pwned.&lt;/p&gt;

&lt;p&gt;Pics from the Event are at &lt;a href="https://www.facebook.com/media/set/?set=a.2204003219759.2107008.1237711792"&gt;Facebook&lt;/a&gt;.&lt;/p&gt;

&lt;h1 id="conclusion"&gt;Conclusion&lt;/h1&gt;

&lt;p&gt;Kudos to the Deloitte Team for organizing such a brilliant contest. We had lots of fun. They have assured us that next year it will be even bigger and better. And that the format will be entirely Different. Ext hear so this blog post might not be as helping as you may have thought.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Sun, 20 Nov 2011 02:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/11/20/cctc-blog/</guid></item><item><title>Skyrim: A Nord's Tale, Part 3</title><link>https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-3/</link><description>&lt;p&gt;So I finally solved the Sapphire Claw dungeon... something Shroud Barrow. Ended up being a Draugr corpse blocking my ability to depress a button to lower the drawbridge. I had to use my Unrelenting Force Shout to move it aside so I could lower the bridge.&lt;/p&gt;
&lt;p&gt;Once that happened, though, things got awesome. I fought more Draugr, took out a new Draugr Overlord, and learned a new Shout… which I haven't yet tested out. On the way back, I found a bandit hideout with an AMAZING view of Whiterun. I may run that dungeon again just to see the view. It's simply awesome.&lt;/p&gt;

&lt;img class="photo" src="https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-3/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;skyrim-whiterun.3b6250a175981eeb.jpg" /&gt;
&lt;p&gt;I went out looking for iron ore deposits, because I was excited to try out mining. I found a few, but the highlight of that particular adventure was when I was wandering along a path and, all of a sudden, a dragon dropped out of the sky right on top of me. Scared the crap out of me! I dodged out of the way and let Lydia shoot it with her bow while I hammered away at the thing with my Whiterun Axe. Eventually it went the way of its predecessor (Dragon Kill Count: 2), but that certainly was not something I was expecting. The long run to Whiterun hauling massive amounts of dragonbone was a very anticlimactic aftermath.&lt;/p&gt;
&lt;p&gt;I'm getting closer to my goal of owning a house in Whiterun. 3,000 gold down, 2,000 to go. I'm trying to level my smithing and enchanting skills too, but those are expensive, since I don't always have the ingredients I need to craft things. Enchanting in particular is pricey.&lt;/p&gt;
&lt;p&gt;The Big Story wants me to head northwest to a far-away town. Eventually, I will go that way, but for now I'm concentrating on exploring the area around Whiterun.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Fri, 18 Nov 2011 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-3/</guid></item><item><title>Skyrim: A Nord's Tale, Part 2</title><link>https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-2/</link><description>&lt;p&gt;Alchemy in Skyrim is vaguely unpleasant at first, since in order to discover the first alchemical property of something, you must taste it. This is all fine and good, but some of these ingredients are less than appetizing - skreevers' tails, for example. On the other hand, blacksmithing is a real gem. I've learned how to create steel items now, though I don't yet have steel ingots. I discovered something interesting - iron ore deposits. I didn't have a pickaxe with me at the time, and apparently that's required to mine ore. I'm excited about this development, though - it means I don't have to buy ingots or ore! I became a Thane of Whiterun by helping defeat a dragon, and the Jarl assigned Lydia to me as my own housecarl. She's come in very handy, though her pathing AI has been very irritating at times. She was probably the only reason I survived an encounter with an ice troll, though she herself didn't remain conscious for the entire event.&lt;/p&gt;

&lt;img class="photo" src="https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-2/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;skyrim-troll.74f390dba08a8d39.jpg" /&gt;
&lt;p&gt;Trolls are brutal, especially if left to heal for a few seconds. After ascending the Throat of the World to meet with the Greybeards, they gave me additional Words of Power to give me one new Shout and beef up my existing one. I like the Norse feel of the draconic language; very different from the usual Elvish/Latin draconic languages. Returning from Hrothgar, I solved the mystery of a ghost in a nearby barrow, only to discover a very complex dungeon hidden beneath it. As of this writing, I'm stuck on a puzzle in its depths. Supposedly, I should be able to rotate four stone pillars to lower a wooden bridge, but despite doing what I thought was the correct pattern based on clues in an adjacent room, the bridge remains stubbornly vertical. No idea how I'm going to fix this one.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Tue, 15 Nov 2011 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-2/</guid></item><item><title>Getting Started with Django</title><link>/2011/11/12/Getting-Started-with-Django/</link><description>&lt;p&gt;For those completely new to web development, Django is a web framework that makes it easier to build web applications with Python. For those that have some knowledge of other web frameworks and Django you may be able to fly through much of the following. Django is a slight modification on the &lt;a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller"&gt;MVC&lt;/a&gt; construct which views itself as a &lt;a href="https://docs.djangoproject.com/en/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names"&gt;MVT&lt;/a&gt; Model, View, Template. Django views a website as a project and within it smaller apps are contained.&lt;/p&gt;
&lt;p&gt;Earlier we installed Django into your virtual environment. If your environment is loaded we can get started with a Django project. First lets create the 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;django-admin.py startproject myproject
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This should have created a directory for your project called myproject. Within the myproject folder you&amp;rsquo;ll find some core files to every Django 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;$ ls
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;myproject venv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ ls myproject
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;manage.py myproject
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ ls myproject/myproject
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;__init__.py settings.py urls.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s examine a little of each of the files and what they&amp;rsquo;re used for:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;manage.py&lt;/code&gt; - A management utility for interacting with your Django project. In addition to the default commands available which you see by running &lt;code&gt;python manage.py&lt;/code&gt;, you can create custom commands (we&amp;rsquo;ll get into that much later).
&lt;code&gt;settings.py&lt;/code&gt; - This is the settings file for your application. Here you&amp;rsquo;ll put various configuration and load things such as your database connection.
&lt;code&gt;urls.py&lt;/code&gt; - This is the place to setup how your urls will work. You&amp;rsquo;ll define a path for the url and then which code is to be executed when you visit that url.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Sun, 13 Nov 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/11/12/Getting-Started-with-Django/</guid></item><item><title>Skyrim: A Nord's Tale, Part 1</title><link>https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-1/</link><description>&lt;p&gt;Last night at midnight, I purchased Elder Scrolls V: Skyrim for Xbox 360. This morning I got up at my usual 5:30 and went straight down to the living room to play.&lt;/p&gt;
&lt;p&gt;The next few blog posts will be brief updates on my adventures in Skyrim. They'll be out of character, more a log than a story.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;After a dragon's attack conveniently freed me from captivity and nuked my captors, I was spirited away to a Nord village by a fellow survivor. As a Nord myself, it was interesting to see the culture surrounding the village, and how the villagers reacted to my chosen race as a familiar stranger.&lt;/p&gt;
&lt;p&gt;Of the massive arsenal I acquired in the hour or so of play this morning, the weapon I've used the most has been a two-handed battle axe. I loved that I could, straightaway, put the axe on the grindstone and use an iron ingot to turn it into a &lt;code&gt;[Fine] Battle Axe&lt;/code&gt;. Crafting systems ROCK!&lt;/p&gt;
&lt;p&gt;I'm a little overwhelmed by all there is to do. With so many choices and quest givers practically throwing themselves at me, I just shut down and ignored the quests, opting instead to do some exploring. I plan on delving into the inventory/item system next, checking out what I can do in that arena.&lt;/p&gt;
&lt;p&gt;I want to see if there's something to these spider eggs I picked up on my flight from the dragon...&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 12 Nov 2011 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/11/skyrim-a-nords-tale-part-1/</guid></item><item><title>Simple PHP ASCII Art Generator</title><link>https://donatstudios.com/Damn-Simple-PHP-ASCII-Art-Generator</link><description>&lt;p&gt;So yesterday I was bored and asked my friend what I should do.  She replied &amp;quot;I don't know, draw ASCII art or something!&amp;quot; and sitting there with the terminal open I kind of wondered what it would take to write one of those image to ASCII scripts.&lt;/p&gt;
&lt;p&gt;20 minutes later I had the following PHP Shell Script! It works by simply sampling the saturation of every X&lt;i&gt;th&lt;/i&gt; pixel and mapping that saturation to a character from an array. There is no nearest-neighboring or anything like that, just straight up sampling.&lt;/p&gt;
 
&lt;h2&gt;Huzzah!&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://donatstudios.com/assets/36/AsciiJorie.png" rel="lightbox"&gt;&lt;img alt="ASCII JORIE is made of ASCII" src="https://donatstudios.com/assets/36/AsciiJorie.png" style="margin: auto; display: block; width: 44%; float: right;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And there you have it! A whopping 35 lines of code. There is a ton of tweaking you can do like changing the array of characters, or adjusting the $scale variable which is simply how wide of a sample it makes.  Setting it to 1 for instance should sample every pixel on the Y and every other pixel on the X (so it scales properly). To the right is a sample output of the script.&lt;/p&gt;
&lt;h2&gt;Try it for yourself!&lt;/h2&gt;
&lt;p&gt;The script accepts local or remote image paths as the first argument.  The following is a simple usage example you can use to get you started.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;./ascii.php "https://donatstudios.com/images/site/JesseDonat.jpg"&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It was a fun little project and I look forward to seeing if/what the internet comes up with for it. &lt;a href="https://gist.github.com/1353237"&gt;Fork me on Github&lt;/a&gt;, or post links in the comments!  Happy hacking!&lt;/p&gt;</description><author>Donat Studios</author><pubDate>Thu, 10 Nov 2011 21:18:43 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/Damn-Simple-PHP-ASCII-Art-Generator</guid></item><item><title>Postgres... The death of NoSQL</title><link>/2011/11/08/Postgres...-The-death-of-NoSQL/</link><description>&lt;p&gt;NoSQL has long been a trend that many have talked about. While there&amp;rsquo;s a place for various key-value stores and tools such as memcache and redis, this will address most specifically how NoSQL is attempting to replace a traditional database. I&amp;rsquo;ve long been a fan of postgres and in general traditional relational databases. In a broad sense traditional databases offer multiple things.&lt;/p&gt;
&lt;h2 id="rdms"&gt;
&lt;div&gt;
RDMS
&lt;/div&gt;
&lt;/h2&gt;
&lt;h3 id="data-guarantees"&gt;
&lt;div&gt;
Data guarantees
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;The current major SQL databases (SQL Server, Postgres, MySQL, Oracle) offer guarantees around your data that doesn&amp;rsquo;t always exist with other systems. At a very high level this means when they say they have the data there&amp;rsquo;s not a chance they&amp;rsquo;ll loose it. When using something as a primary datastore this is always my first requirement. Data is a valuable commodity so keeping it around is obviously important. There are cases where exceptions exist (reporting applications are common here). The specific thing I always look for is that a system upholds the ACID properties. For a quick breakdown of these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;A&lt;/em&gt; is for atomic. In short it means no transaction can be partially completed, its all or nothing.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;C&lt;/em&gt; is for consistent. This means you go from one consistent state to another. Meaning things like cascades and constraints are upheld and can&amp;rsquo;t be ignored for a period of time.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;I&lt;/em&gt; is for isolation. This means transactions don&amp;rsquo;t get to interfere with each other.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;D&lt;/em&gt; is for durability. This means once the transactions there its not going anywhere.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These basic principles make me feel pretty content with my data being safe. This doesn&amp;rsquo;t include things like backups and replication, but rather is a baseline for me feeling safe with a system.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Here&amp;rsquo;s a hint, many NoSQL solutions don&amp;rsquo;t enforce these which is where they get speed from&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="consistent-means-for-accessing-data-sql"&gt;
&lt;div&gt;
Consistent means for accessing data (SQL)
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Many people complain about SQL and while its not a perfect language it is a common standard for accessing data. There are idioms that exist in Oracle that do not in Postgres and ones that exist in MySQL that do not in SQL Server, but on the whole ANSI-SQL is a common standard. This means if you learn one in large part you learn another (from an application developers perspective). This means you have a broader people to pull from when you consider moving from one to another, and that skills are more portable. While Mongo may be growing, its in no way guaranteed to be around in 5 years, nor is CouchDB. In fact there have been many NoSQL databases that have come and gone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tokyo Cabinent&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="postgres"&gt;
&lt;div&gt;
Postgres
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;So there&amp;rsquo;s some shared things that make databases great, but in particular Postgres aims to be the single database capable of ushering in a death to NoSQL. While each item could easily be its own blog post hopefully the following calls out they key values and allows people to dive in deeper.&lt;/p&gt;
&lt;h3 id="hstore"&gt;
&lt;div&gt;
HStore
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;I strongly debated saving the best for last, but really just couldn&amp;rsquo;t wait. If there&amp;rsquo;s a single feature in Postgres that will kill NoSQL its HStore. HStore is a data-type that allows you to store a dictionary within postgres.&lt;/p&gt;
&lt;h3 id="custom-datatypes"&gt;
&lt;div&gt;
Custom datatypes
&lt;/div&gt;
&lt;/h3&gt;
&lt;h3 id="postgis"&gt;
&lt;div&gt;
PostGIS
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Location is all the buzz these days and more and more applications have some tough of location involved in them.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 08 Nov 2011 22:55:56 GMT</pubDate><guid isPermaLink="true">/2011/11/08/Postgres...-The-death-of-NoSQL/</guid></item><item><title>How Heroku Works - Maker's Day</title><link>/2011/11/07/how-heroku-works-maker-day/</link><description>&lt;p&gt;In my earlier post on &lt;a href="/2011/11/02/how-heroku-works-teams-tools/"&gt;Teams and Tools at Heroku&lt;/a&gt;, I mentioned how we value engineers&amp;rsquo; time; their work has enabled us to build a great platform. As a result of what we&amp;rsquo;ve built, we&amp;rsquo;ve had great growth both of our platform and of our teams internally. With that growth inevitably comes different distractions on engineers&amp;rsquo; time. Despite how a manager may plan things, engineering work needs long periods of uninterrupted time. To ensure that no matter what, an engineer has plenty of opportunity to do the work he or she was hired to do, Heroku has Maker&amp;rsquo;s Day.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Maker&amp;rsquo;s Day ensures that engineers get a full day of uninterrupted time to focus on making things.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Maker&amp;rsquo;s Day" src="/images/makerday.png" /&gt;&lt;/p&gt;
&lt;p&gt;The more consistent interruptions are throughout an engineer&amp;rsquo;s day, the more time will be lost due to context switching in addition to the time spent on those other activities. These interruptions may include a quick question from a manager, a question on a code problem someone else is working through, or an email or IM from a coworker. Regardless of the type of interruption, it causes an engineer to lose focus. According to &lt;a href="http://www.amazon.com/gp/product/0932633439/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;Peopleware: Productive Projects and Teams&lt;/a&gt;, in a study regarding productivity among engineers, the top performers when surveyed said they were interrupted regularly 38% of the time versus the bottom performers, who were interrupted 76%. Context switching should be counted as fully wasted time for an engineer, and all too often as the number of meetings increases, the time involved with context switching is increased similarly to the following:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Cost of context switching" src="/images/contextswitch.png" /&gt;&lt;/p&gt;
&lt;p&gt;For more on how interruptions or context switching decreases productivity, Jeff Atwood has a great post about &lt;a href="http://www.codinghorror.com/blog/2006/09/the-multi-tasking-myth.html"&gt;The Multi-Tasking Myth&lt;/a&gt;, which demonstrates &amp;hellip;&lt;/p&gt;
&lt;p&gt;Most people understand that context switching is bad, but another team may still have valid demands on your time. Pushing back against another team or manager isn&amp;rsquo;t always feasible; after all, we do work together, and each team at times may need something from another team. This is where Maker&amp;rsquo;s Day starts to come in. Every Thursday at Heroku is Maker&amp;rsquo;s Day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Maker&amp;rsquo;s day is meant for making shit. Meetings don&amp;rsquo;t happen on Maker&amp;rsquo;s Day&lt;/strong&gt;. If someone asks if that time on your calendar works for a meeting, the simple response is no&amp;ndash;it&amp;rsquo;s Maker&amp;rsquo;s Day. Because Maker&amp;rsquo;s Day has been ingrained into our culture, engineers have no problem giving that response when there&amp;rsquo;s a request on their time on Maker&amp;rsquo;s Day. If someone in marketing, sales, or another non-engineering role wants to book meetings, they’re welcome to do so, but they&amp;rsquo;re going to be without engineers. However, even for non-engineers, Maker&amp;rsquo;s Day is equally invaluable; uninterrupted hours of focus at a time are amazing for productivity in any role.&lt;/p&gt;
&lt;p&gt;Maker&amp;rsquo;s Day varies in how it is executed from person to person. Often the office is slightly less busy due to some engineers working from home or coffee shops to maximize their productivity. To an outsider, the office may appear business as usual: engineers sit at their desks, working. At lunch, everyone is sitting around the lunch table eating together. To the unobservant eye it may appear to be just any other day, but the engineers notice the difference. There will be significantly less interruptions by someone walking over to your desk, you won&amp;rsquo;t be pulled into meetings that distract you from features, and you know it&amp;rsquo;s an opportunity to accomplish a bulk of work laid out from your weekly planning meeting.&lt;/p&gt;
&lt;p&gt;As Heroku has grown, meetings have increased, and the value of Maker Day&amp;rsquo;s has increased exponentially.&lt;/p&gt;
&lt;p&gt;Whether you&amp;rsquo;re in the early stages of bootstrapping a company or at a large company of thousands of engineers, one of the best practices anyone can put into place is dedicated quality time for engineers to produce code. Maker&amp;rsquo;s Day is a fantastic way to ensure this happens on a weekly basis.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Mon, 07 Nov 2011 22:55:56 GMT</pubDate><guid isPermaLink="true">/2011/11/07/how-heroku-works-maker-day/</guid></item><item><title>How Heroku Works - Teams and Tools</title><link>/2011/11/02/how-heroku-works-teams-tools/</link><description>&lt;p&gt;Heroku is a largely agile company, we work in primarily small teams that talk via api and data contracts. Its also a company comprised primarily of engineers, even product managers often write code. Heroku as a platform drives many of the features not from top down, but from bottom up based on engineers desires or skunkworks projects. There&amp;rsquo;s many valuable insights into how Heroku runs efficiently for engineering.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll be diving into many various practices that enable Heroku to put quality engineering above all else, but first let me highlight the team structure and tools that enable this.&lt;/p&gt;
&lt;p&gt;Heroku is comprised of many small teams internally, each team operates much like an individual entity. The team chooses its own tools and best method for communication, though as a whole some form of Scrum is run throughout teams. Think of the unix philosophy of small sharp tools &lt;a href="http://www.amazon.com/gp/product/0131429019/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;tag=mypred-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0131429019"&gt;as in The Art of Unix Programming&lt;/a&gt; applied to teams and people.&lt;/p&gt;
&lt;p&gt;For most teams this involves a weekly planning meeting earlier in the week. In such a meeting teams may conduct a retrospective, opportunities to improve the process the coming week, and of course plan tasks for the coming week. Its &lt;!-- raw HTML omitted --&gt;very&lt;!-- raw HTML omitted --&gt; important to note that planning tasks for the week doesn&amp;rsquo;t necessarily involve planning the deadline for them, but rather simply laying out what people are working on (more on this in a future post). Each team will record and track this in a tool of their own choosing. Several use &lt;a href="http://www.pivotaltracker.com"&gt;pivotal tracker&lt;/a&gt;, one uses &lt;a href="http://www.scrumy.com"&gt;scrumy&lt;/a&gt;, some use email to distribute and track against personal to do lists. The method for tracking issues is again entirely up to the individual team. A one person team may choose to use a simple to do list, larger teams commonly use &lt;a href="http://www.github.com"&gt;github&lt;/a&gt; issues and pull requests. Given the team is the one responsible for their own productivity the team is the one to choose what tools they use.&lt;/p&gt;
&lt;p&gt;Meeting loads vary from person to person depending on what is the demands are on their time, though everyone at Heroku participates in some form of standup. Most teams do these daily as quick status stand-ups of what was worked on the day before and whats to be worked on the next day. In addition to the planning meeting and stand-ups, there is often collaborative engineering, and company wide gatherings.&lt;/p&gt;
&lt;p&gt;Collaborative engineering once again varies depending on which engineers are working together. Engineers may get in front of a white board or in front of machines and simple collaborate. For engineers together in the office this is often the most productive way. These practices work the same for remote employees, though slightly modified for the high touch interaction. For remote employees this often works as pair programming via Skype. Skype is indispensable for allowing remote workers to feel far less remote. Skype alongside &lt;a href="http://typewith.me/"&gt;typewith.me&lt;/a&gt; and you have an unbelievable easy to collaborate not just with 1 other, but with multiple parties to work through a document on a given topic. For smaller activities of communication asynchronous is key. This ranges from &lt;a href="http://campfirenow.com/"&gt;campfire&lt;/a&gt; most commonly during common working hours when someone is likely to be at a machine, to email when the return on a request may take slightly longer.&lt;/p&gt;
&lt;p&gt;Finally there is the all common company wide meeting, which occurs weekly. The structure of this varies from status updates to broader ongoings. Its often the perfect time for engineers to hear about what sales is doing or get updates on teams you don&amp;rsquo;t commonly interact with. Along with common status updates there will be broader company updates.&lt;/p&gt;
&lt;p&gt;Consistently across all teams you&amp;rsquo;ll find these principles which allow us to ensure the quality of engineering as we continue to grow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Small teams that talk across defined API&amp;rsquo;s and data contracts&lt;/li&gt;
&lt;li&gt;Teams using the tool that they believe is best for the job&lt;/li&gt;
&lt;li&gt;Frequent asynchronous communication&lt;/li&gt;
&lt;li&gt;Collaboration (including for remote employees)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key in Heroku running efficiently is primarily allowing each team to run as it chooses. Heroku works because we have talented engineers, the best thing we can do for those engineers is allow them to work productively. Often only they know the best way to accomplish this, so who better to let them accomplish it than themselves.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 02 Nov 2011 22:55:56 GMT</pubDate><guid isPermaLink="true">/2011/11/02/how-heroku-works-teams-tools/</guid></item><item><title>Installing Python Packages</title><link>/2011/11/01/Installing-Python-Packages/</link><description>&lt;p&gt;Now that you have you system and project environment all setup you probably want to start developing. But you likely don&amp;rsquo;t want to start writing an entire project fully from scratch, as you dive in you&amp;rsquo;ll quickly realize theres many tools helping you build projects and sites faster. For example making a request to a website there&amp;rsquo;s &lt;a href="http://docs.python-requests.org/en/latest/index.html"&gt;Requests&lt;/a&gt;, for handling processing images there&amp;rsquo;s &lt;a href="http://www.pythonware.com/products/pil/"&gt;Python Imaging Library&lt;/a&gt;, or for a full framework to help you in building a site there&amp;rsquo;s &lt;a href="http://www.djangoproject.com"&gt;Django&lt;/a&gt;. With all of these there&amp;rsquo;s one simple and common way to install them. But first a little more on how it all works.&lt;/p&gt;
&lt;p&gt;All major Python packages are hosted on &lt;a href="http://pypi.python.org/"&gt;PyPi&lt;/a&gt; (Pronounced Pi-P or Cheeseshop). When you use a common python installer it will:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Search for the package you specify&lt;/li&gt;
&lt;li&gt;If you specify a version will use it, otherwise will use the latest&lt;/li&gt;
&lt;li&gt;Will download the source for that package&lt;/li&gt;
&lt;li&gt;Install it into your Python environment&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now for actually installing&amp;hellip; Lets get started with installing the three packages below. At this point you should at least have a fresh Python environment, however you don&amp;rsquo;t have an immediate way to install packages. The defacto Python package installer is &lt;a href="http://pip-installer.org"&gt;pip&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Earlier we setup virtualenv to help isolate our python packages we were working with. First lets go ahead and create a folder for our project then setup a new environment for the project we&amp;rsquo;ll work on:&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;$ mkdir myapp
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ cd myapp
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ virtualenv --no-site-packages venv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If we list the contents of the directory you&amp;rsquo;ll now see a folder venv. Within this folder you&amp;rsquo;ll find all the parts of the environment that virtualenv just created:&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;$ ls
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;venv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ ls venv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;bin include lib
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now you&amp;rsquo;ve got a sandboxed environment that exists but you haven&amp;rsquo;t loaded it. You can now activate and deactivate this any time you like. Once you do this it customizes your path to use the packages you&amp;rsquo;ve installed for this environment. To load your environment when in the myapp directory:&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;$ source venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To deactivate this simple:&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;$ deactivate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that we&amp;rsquo;ve got your environment loaded installing your packages should be pretty simple. Ensure that you have your virtualenv loaded and then run:&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;$ pip install requests
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ pip install PIL
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ pip install Django
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that you&amp;rsquo;ve installed your packages you want to be able to share this with others to make it easy to get setup. You could provide a list of everything your application needs to run manually, or because its Python you can expect it to make it easy for you. Pip has a wonderful command freeze that will show all of your packages and their versions that are installed. Simply run:&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;$ pip freeze
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, this only outputs the information. Along with this pip has a canonical form for listing requirements and installing them from a file. The filename is commonly a requirements.txt. To create this we simply pipe the results of pip freeze to this file.&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;$ pip freeze &amp;gt; requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next we&amp;rsquo;ll talk about a few more advanced items in dependency management, then finally we&amp;rsquo;ll get started on building an application.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 01 Nov 2011 22:55:56 GMT</pubDate><guid isPermaLink="true">/2011/11/01/Installing-Python-Packages/</guid></item><item><title>Getting Setup with Python</title><link>/2011/10/27/Getting-Setup-with-Python/</link><description>&lt;p&gt;This is the first of a multipart series to getting started with Python. Throughout this guide we&amp;rsquo;ll walk you through a full setup. For starters if you&amp;rsquo;re a mac or linux user you already have &lt;a href="http://python.org"&gt;Python&lt;/a&gt; on your system. You should be able to confirm you have python my opening up a terminal window and running:&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;$ python --version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;Python 2.7.2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As long as you see a Python version 2.5.x-2.7.x you should be fine to continue. From here we&amp;rsquo;re going to work through setting up your Python project environment. For this we&amp;rsquo;re going to use &lt;a href="http://virtualenv.org"&gt;virtualenv&lt;/a&gt;. For those of you not familiar &lt;a href="http://virtualenv.org"&gt;virtualenv&lt;/a&gt; is a self-contained python environment. It holds its own copy of python and any libraries you install. This allows you to work on multiple projects with different versions of libraries.&lt;/p&gt;
&lt;p&gt;While we&amp;rsquo;re installing virtualenv we&amp;rsquo;re also going to go ahead and setup PostgreSQL as we&amp;rsquo;ll be using it later. If you&amp;rsquo;re on a mac you&amp;rsquo;ll first need to setup homebrew. Homebrew is used for installing various system packages. If you&amp;rsquo;re on linux, in particular Ubuntu you can skip down to the steps for setting up your environment.&lt;/p&gt;
&lt;p&gt;First for Mac users lets setup homebrew which will allow us to install various system packages:&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;$ /usr/bin/ruby -e &lt;span style="color: #e6db74;"&gt;"&lt;/span&gt;&lt;span style="color: #66d9ef;"&gt;$(&lt;/span&gt;curl -fsSL https://raw.github.com/gist/323731&lt;span style="color: #66d9ef;"&gt;)&lt;/span&gt;&lt;span style="color: #e6db74;"&gt;"&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- raw HTML omitted --&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;$ curl -O http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg | sh setuptools-0.6c11-py2.7.egg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ easy_install virtualenv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ brew install postgresql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- raw HTML omitted --&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;$ sudo apt-get install virtualenv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ sudo apt-get install postgresql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now you have Python, virtualenv, and postgresql all installed. We can now focus on setting up the initial start to a project.&lt;/p&gt;
&lt;p&gt;In the next part we can start with installing some Python packages.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Fri, 28 Oct 2011 06:55:56 GMT</pubDate><guid isPermaLink="true">/2011/10/27/Getting-Setup-with-Python/</guid></item><item><title>Hello World Collection</title><link>https://boyter.org/2011/10/hello-world-collection/</link><description>&lt;p&gt;I was looking through the logs of what people are searching for and noticed there is a large amount of &amp;ldquo;Hello World&amp;rdquo; searches such as &amp;ldquo;hello world java&amp;rdquo; which actually came up with no results. I couldn&amp;rsquo;t have that continue so I quickly integrated the &lt;a href="http://www.roesler-ac.de/wolfram/hello.htm"&gt;Hello World Collection&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can now search for hello world in 400+ languages (although curiously no in Clojure). Just type hello world and the language you are searching for EG,&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 18 Oct 2011 07:48:09 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/10/hello-world-collection/</guid></item><item><title>Underscore.js joins the party</title><link>https://boyter.org/2011/10/underscorejs-joins-the-party/</link><description>&lt;p&gt;Had a spare moment and added underscore.js documentation in.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://searchco.de/?q=underscore.js+template"&gt;underscore.js template&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://searchco.de/?q=_+pluck"&gt;_ pluck&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Still working on C++ Ruby and C#. I will be adding backbone.js soon however as I am using that on my own projects.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Mon, 17 Oct 2011 07:45:28 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/10/underscorejs-joins-the-party/</guid></item><item><title>Github +1 URLs</title><link>https://captnemo.in/blog/2011/10/17/github-projects-to-follow/</link><description>&lt;p&gt;I was working on the Google +1 Listing API (undocumented). So here’s a list of my current +1 urls on github.com. Most of the projects pertain to web-designing. I’ll update this list automatically every week or so, provided I remember to/set a cron job.&lt;/p&gt;
&lt;table&gt;
  &lt;tbody id="urls"&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/jayferd/color.js" title="https://github.com/jayferd/color.js"&gt;jayferd/color.js&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;color.js - The missing color library&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/typicaljoe/taffydb" title="https://github.com/typicaljoe/taffydb"&gt;typicaljoe/taffydb&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;taffydb - TaffyDB - an open source JavaScript Database for your browser&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/antirez/lamernews" title="https://github.com/antirez/lamernews"&gt;antirez/lamernews&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;lamernews - Lamer News -- an HN style social news site written in Ruby/Sinatra/Redis/JQuery&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/felixge/node-mysql/" title="https://github.com/felixge/node-mysql/"&gt;felixge/node-mysql&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;node-mysql - A pure node.js JavaScript Client implementing the MySql protocol.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/daneden/animate.css" title="https://github.com/daneden/animate.css"&gt;daneden/animate.css&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;animate.css - A big ol' goody bag filled with CSS animations for WebKit, Firefox and beyond.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/javve/list" title="https://github.com/javve/list"&gt;javve/list&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Do you want a 7 KB cross-browser native JavaScript that makes your plain HTML lists super flexible, searchable, sortable and filterable? Yea&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/azer/jekyll-social-activities" title="https://github.com/azer/jekyll-social-activities"&gt;azer/jekyll-social-activities&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;jekyll-social-activities - a jekyll project template to list social network activities&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/e1ven/Robohash" title="https://github.com/e1ven/Robohash"&gt;e1ven/Robohash&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Robohash - RoboHash.org&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/donpark/node-robohash" title="https://github.com/donpark/node-robohash"&gt;donpark/node-robohash&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;node-robohash - node.js implementation of Robohash. It's neither complete nor render general SVG.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/lg/marshmallow" title="https://github.com/lg/marshmallow"&gt;lg/marshmallow&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;marshmallow - An open source Campfire server&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/tmcw/big" title="https://github.com/tmcw/big"&gt;tmcw/big&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;big - presentations for busy messy hackers&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/blog/964-all-of-the-hooks" title="https://github.com/blog/964-all-of-the-hooks"&gt;All of the Hooks&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Service Hooks are available for more events (issues, pull requests, forks, etc). Update them through the API!&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/chromakode/karmabot" title="https://github.com/chromakode/karmabot"&gt;chromakode/karmabot&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;karmabot - A highly extensible IRC karma+information bot written in Python.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/moserware/PHPSkills" title="https://github.com/moserware/PHPSkills"&gt;moserware/PHPSkills&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;PHPSkills - An implementation of the TrueSkill algorithm in PHP&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/nodejitsu/docs" title="https://github.com/nodejitsu/docs"&gt;nodejitsu/docs&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;docs - Community powered rocket fuel for node.js&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="http://fgnass.github.com/spin.js/" title="http://fgnass.github.com/spin.js/"&gt;spin.js&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;An animated CSS activity indicator with VML fallback.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://blackberry.github.io/Alice/demos/index.html" title="https://blackberry.github.io/Alice/demos/index.html"&gt;Alice.js Demos&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Alice.js Demos. Alice.js (A Lightweight Independent CSS Engine) is a micro JavaScript library focused on using hardware-accelerated capabili&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/tcorral/Design-Patterns-in-Javascript" title="https://github.com/tcorral/Design-Patterns-in-Javascript"&gt;tcorral/Design-Patterns-in-Javascript&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Design-Patterns-in-Javascript - Based in examples on Head First Design Patterns&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/atduskgreg/srender" title="https://github.com/atduskgreg/srender"&gt;atduskgreg/srender&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;srender - John Resig's Simple Javascript Templating turned into a jQuery Plugin&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/mrdavidlaing/functional-javascript" title="https://github.com/mrdavidlaing/functional-javascript"&gt;mrdavidlaing/functional-javascript&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;functional-javascript - A fun set of koans to teach you functional programming techniques in Javascript&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/mrdavidlaing/javascript-koans" title="https://github.com/mrdavidlaing/javascript-koans"&gt;mrdavidlaing/javascript-koans&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;javascript-koans - Koans to learn Javascript&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/robrighter/current" title="https://github.com/robrighter/current"&gt;robrighter/current&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;current - Node.js app for visualizing http requests on a lan&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/bcoe/endtable" title="https://github.com/bcoe/endtable"&gt;bcoe/endtable&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;endtable - A ridiculously simple Object Mapper for Node running on top of CouchDB.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/sproutcore/sproutcore" title="https://github.com/sproutcore/sproutcore"&gt;sproutcore/sproutcore&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;sproutcore - JavaScript Application Framework - JS library only&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/tpope" title="https://github.com/tpope"&gt;tpope's Profile&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;tpope (Tim Pope). You're not logged in! Login; Pricing &amp;amp; Signup. Name: Tim Pope. Website/Blog: http://tpo.pe/. Company: Waiting on t&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/tpope/vim-fugitive" title="https://github.com/tpope/vim-fugitive"&gt;tpope/vim-fugitive&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;vim-fugitive - fugitive.vim: a Git wrapper so awesome, it should be illegal&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/github/gitignore" title="https://github.com/github/gitignore"&gt;github/gitignore&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;A collection of useful .gitignore templates&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="http://harvesthq.github.com/chosen/" title="http://harvesthq.github.com/chosen/"&gt;Chosen - a JavaScript plugin for jQuery and Prototype - makes select boxes better&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Standard Select.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/harvesthq/chosen" title="https://github.com/harvesthq/chosen"&gt;harvesthq/chosen&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;chosen - Chosen is a library for making long, unwieldy select boxes more friendly.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/rthauby/Paige" title="https://github.com/rthauby/Paige"&gt;rthauby/Paige&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Paige - Super simple project page generation&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="http://jashkenas.github.com/docco/" title="http://jashkenas.github.com/docco/"&gt;docco.coffee&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Docco is a quick-and-dirty, hundred-line-long, literate-programming-style documentation generator. It produces HTML that displays your comme&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/LeaVerou/prefixfree" title="https://github.com/LeaVerou/prefixfree"&gt;LeaVerou/prefixfree&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;prefixfree - Break free from prefix hell!&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/twitter/scala_school" title="https://github.com/twitter/scala_school"&gt;twitter/scala_school&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;scala_school - Lessons in the Fundamentals of Scala&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/arcturo/library" title="https://github.com/arcturo/library"&gt;arcturo/library&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;A library of free eBooks we're working on&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/tcr/selection.js" title="https://github.com/tcr/selection.js"&gt; tcr/selection.js&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;selection.js - A tiny JavaScript DOM selection library for modern browsers and IE5-8.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="http://dodgeball.github.com/" title="http://dodgeball.github.com/"&gt;First Annual Octocat Dodgeball Invitational&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Why? We were brainstorming in the office and decided we should throw balls at our enemies. But why stop at destroying our enemies with foam &lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/coreh-deprecated/nide" title="https://github.com/coreh-deprecated/nide"&gt;nide - Beautiful IDE for Node.JS&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;nide. Beautiful IDE for Node.JS. nide is a web-based IDE for Node.js, designed with simplicity and ease-of-use in mind. The current version &lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/mikeal/request" title="https://github.com/mikeal/request"&gt;mikeal/request&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;Simplified HTTP request client.&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://github.com/unconed/TermKit" title="https://github.com/unconed/TermKit"&gt;unconed/TermKit&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;TermKit - Experimental Terminal platform built on WebKit + node.js. Currently only for Mac and Windows, though the prototype works 90% in an&lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
      &lt;td&gt;&lt;a href="http://usersinhell.com/dropbox-github-pricing/" title="http://usersinhell.com/dropbox-github-pricing/"&gt;If Dropbox Used GitHub’s Pricing Plan&lt;/a&gt;
          &lt;/td&gt;&lt;td&gt;&lt;p&gt;If Dropbox Used GitHub's Pricing Plan. What if Dropbox used GitHub's pricing model? Folders? Yes, folders. I have a lot of folders. &lt;/p&gt;
      &lt;/td&gt;
  &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</description><author>Nemo's Home</author><pubDate>Mon, 17 Oct 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/10/17/github-projects-to-follow/</guid></item><item><title>Google Killing off Code Search</title><link>https://boyter.org/2011/10/google-killing-off-code-search/</link><description>&lt;p&gt;Google has just annouced that they are killing off two new products, Buzz and Google Code search &lt;a href="http://news.ycombinator.com/item?id=3112029"&gt;(read here)&lt;/a&gt;. Buzz is a no brainer (although I am certain someone out there is using it) but code search is a little sad. Its also both annoying and an opportunity for &lt;a href="http://searchco.de/"&gt;http://searchco.de/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Its annoying because I have branch in my source control which integrates with Google code search. I was about to push it out too. This kills a few hours integration work which is annoying. I can understand Googles point of view though. I imagine that the Grep code search was rather CPU heavy and that storing all that source code (including versions) would have really eaten up some disk space. I would be curious to see their stats though as im certain there is enough traffic there to make something viable.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Sat, 15 Oct 2011 07:43:32 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/10/google-killing-off-code-search/</guid></item><item><title>Must Use Web Applications</title><link>https://captnemo.in/blog/2011/10/15/awesome-webapps/</link><description>&lt;p&gt;Here are a few of the applications that I would heavily recommend.&lt;/p&gt;

&lt;h2 id="workflowy"&gt;&lt;a href="http://workflowy.com"&gt;Workflowy&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Here’s how Workflow describes itself.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;WorkFlowy is a simple, but powerful way to manage all the information in your life.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here’s their introductory video:&lt;/p&gt;



&lt;p&gt;If that does not hook you, I don’t know what will.&lt;/p&gt;

&lt;h2 id="clipboard-"&gt;Clipboard &lt;img alt="" src="https://img.shields.io/badge/status-dead-red.svg?style=flat-square" /&gt;&lt;/h2&gt;

&lt;p&gt;Clipboard is a content archiver tool that makes it quick, snappy, easy, and cool. It has got tons of features and is still in private beta. However, since Michael Arrington blogged about it, it has begun accepting larger number of invites. I’ve only started to use it, but it has been quite awesome till now.&lt;/p&gt;

&lt;p&gt;My favorite feature is &lt;em&gt;embed&lt;/em&gt;. Everything I’ve embedded on this page is via clipboard, as a demo. You can clip tweets, pics, videos and what not and embed it on your blog easily.&lt;/p&gt;

&lt;h2 id="gett-"&gt;&lt;a href="http://ge.tt/"&gt;Ge.tt&lt;/a&gt; &lt;img alt="" src="https://img.shields.io/badge/status-mostly-dead-orange.svg?style=flat-square" /&gt;&lt;/h2&gt;

&lt;p&gt;Ge.tt is one of the many file sharing sites that seem to have cropped up in Web 2.0. Its USP is its simplicty, however don’t be fooled by it. It has got lots of features as well:&lt;/p&gt;

&lt;p&gt;&lt;img alt="Gett Screenshot" src="/img/gett.png" /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Share URLs while your stuff is uploading&lt;/li&gt;
  &lt;li&gt;Share without even logging in&lt;/li&gt;
  &lt;li&gt;Drag and drop upload&lt;/li&gt;
  &lt;li&gt;Versioning for file Uploads&lt;/li&gt;
  &lt;li&gt;Share multiple files under a single upload&lt;/li&gt;
  &lt;li&gt;Limited Analytics (See number of Downloads)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So yes, its not as powerful as many others, but has got quite enough features to keep me busy.&lt;/p&gt;

&lt;h2 id="minus-"&gt;Minus] &lt;img alt="" src="https://img.shields.io/badge/status-dead-red.svg?style=flat-square" /&gt;&lt;/h2&gt;

&lt;p&gt;Minus is a simple image sharing service. It was amongst the first to offer Drag-And-Drop upload back before it was cool. Right now, it is trying to become the next flickr, allowing people to subscribe to each other. If you are someone who posts cool pics regularly, check this out.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Minus Home Page" src="/img/minus.png" /&gt;&lt;/p&gt;

&lt;p&gt;My primary browser is Chromium, and here are some Chrome Applications that I use regularly:&lt;/p&gt;

&lt;h2 id="offline-gmail-"&gt;Offline GMail &lt;img alt="" src="https://img.shields.io/badge/status-dead-red.svg?style=flat-square" /&gt;&lt;/h2&gt;

&lt;p&gt;Was a Chrome extension that used Google Gears for letting you use GMail completely offline.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Offline GMail Screenshot" src="https://lh4.googleusercontent.com/G7YSss4-ULNnV0NPYE3UDszmIAdeV8l3FWAqK0qy_s7LmCTiqG5JeRkl6pEXed2fCwhtoZEU=s400-h275-e365" /&gt;&lt;/p&gt;

&lt;h3 id="pros"&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Looks cool&lt;/li&gt;
  &lt;li&gt;Allows multiple accounts&lt;/li&gt;
  &lt;li&gt;Drafs facility&lt;/li&gt;
  &lt;li&gt;Labels&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="cons"&gt;Cons&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Not all the functionality of Online GMail&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="collaborative-editors"&gt;Collaborative Editors&lt;/h2&gt;

&lt;p&gt;I like collaborative editing, working together with people in real-time. Unfortunately, the &lt;a href="http://wave.google.com"&gt;biggest entrant&lt;/a&gt; fizzed out. However, there are still quite a lot of competitors left in the field.&lt;/p&gt;

&lt;h3 id="google-docs"&gt;&lt;a href="https://docs.google.com"&gt;Google Docs&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I tend to avoid Google Docs usually, as it is too much of a bloat for me. The integration with Google Chat is good, but sometimes all you need is a plain text editor. There is also an &lt;a href="https://chrome.google.com/webstore/detail/apdfllckaahabafndbhieahigkjlhalf?hc=search&amp;amp;hcp=main"&gt;Offline Google Docs&lt;/a&gt; application, although it does not allow one to edit documents. Also no presentations.&lt;/p&gt;

&lt;h3 id="etherpad"&gt;&lt;a href="http://etherpad.com"&gt;Etherpad&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Etherpad is quite good, as a plain text collaborative editor. I tend it to use it frequently, and it has some excellent features. It makes a thousand revisions of each of my posts, and allows me to play through them, and see who made wat change in real-time. All this, for free. Plus you get chat, and basic formatting (bold, italics, underline).&lt;/p&gt;

&lt;p&gt;The previously mentioned &lt;a href="http://workflowy.com"&gt;workflowy&lt;/a&gt; keeps your lists in sync over time, so it is collaborative, though not in real time.&lt;/p&gt;

&lt;p&gt;Also, mention goes out to &lt;a href="http://pastehtml.com"&gt;pastehtml&lt;/a&gt;, which does an excellent job. Its neither collaborative nor has sharing, but it had me hooked at &lt;em&gt;editable markdown&lt;/em&gt;. You can type in markdown, publish in html, and come back and edit your documents, as per your your heart’s wish.&lt;/p&gt;

&lt;h2 id="grooveshark-"&gt;Grooveshark &lt;a href="https://www.cinchsolution.com/what-happened-to-grooveshark-com/"&gt;&lt;img alt="" src="https://img.shields.io/badge/status-dead-red.svg?style=flat-square" /&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;I rarely listen to music online, but when I do, its either on Youtube or Grooveshark.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Grooveshark Screenshot" src="/img/grooveshark.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;Looking back at this document, it seems that there are not many web-apps that I use.&lt;/p&gt;

&lt;p&gt;Some other applications that I regularly use, in no particular order:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;FreedCamp - A free alternative to &lt;a href="http://basecamphq.com"&gt;Basecamp&lt;/a&gt; &lt;img alt="" src="https://img.shields.io/badge/status-dead-red.svg?style=flat-square" /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.issueburner.com/"&gt;IssueBurner&lt;/a&gt; - Simple Issue Tracking via Email&lt;/li&gt;
  &lt;li&gt;Postary - A simple blogging platform. “Write.Share.” &lt;img alt="" src="https://img.shields.io/badge/status-dead-red.svg?style=flat-square" /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://lastpass.com"&gt;LastPass&lt;/a&gt; - Password Manager&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll probably add some Chrome Extensions later as well.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Sat, 15 Oct 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/10/15/awesome-webapps/</guid></item><item><title>Coverage</title><link>https://boyter.org/2011/10/coverage/</link><description>&lt;p&gt;It was a long weekend here in Australia and as such I decided to take it with my girlfriend and spend time totally off the grid. As I came back from my time off I had a look at my general stats and was very surprised to see some massive spikes. Looked into it a bit more and it seems searchco.de has gotten some coverage from a few sites. See the below,&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Mon, 10 Oct 2011 07:41:06 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/10/coverage/</guid></item><item><title>Blogging with Jekyll</title><link>https://captnemo.in/blog/2011/09/19/jekyll/</link><description>&lt;p&gt;For the past few years, there has been a revolution in the blogging scene. People have moved towards better hosting providers, better blogging tools, with automated, and delayed blogging becoming the norm. Posts are written months in advance, and proof-read dozens of times, before making it to the general public. &lt;a href="http://wordpress.com"&gt;Wordpress&lt;/a&gt;, &lt;a href="http://blogspot.com"&gt;Blogspot&lt;/a&gt;, &lt;a href="http://tumblr.com"&gt;Tumblr&lt;/a&gt;, Posterous, Texpaterrn are pretty much everything that most of the bloggers use. However, there have been some silent niche entries in this market. Static Site Generators.&lt;/p&gt;

&lt;h2 id="static-site-generators"&gt;Static Site Generators&lt;/h2&gt;
&lt;p&gt;Static Site Generators are tools which you use to generate a static version of your site. Instead of using a dynamic scripting language (such as php), your tool takes in your markup &amp;amp; combines it with your blog posts to generate an html only version of your site. This version is then uploaded(for eg, via ftp) and is then visible as your blog. Most such tools are written in languages such as &lt;code class="language-plaintext highlighter-rouge"&gt;ruby&lt;/code&gt;, &lt;code class="language-plaintext highlighter-rouge"&gt;python&lt;/code&gt;, &lt;code class="language-plaintext highlighter-rouge"&gt;node.js&lt;/code&gt;, and &lt;code class="language-plaintext highlighter-rouge"&gt;erlang&lt;/code&gt;. The most commonly known are Jekyll, Hyde, nanoc, and webby. An excellent list is available &lt;a href="https://staticsitegenerators.net/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id="benifits-of-using-static-site-generators"&gt;Benifits of using Static Site Generators&lt;/h2&gt;

&lt;h3 id="markup"&gt;Markup&lt;/h3&gt;

&lt;p&gt;For me, the most important part of using Jekyll is that it allows me to use &lt;code class="language-plaintext highlighter-rouge"&gt;markdown&lt;/code&gt; as my writing syntax. Markdown is a markup language that is compiled to HTML. It is supposed to be a highly readable version of html. For instance it uses backticks(`) to write code.&lt;/p&gt;

&lt;p&gt;`this` becomes &lt;code class="language-plaintext highlighter-rouge"&gt;this&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Also, you can use * to emphasize text(strong or emphasis). Link creation is not the horrible &amp;lt;a href=&amp;gt; that you remember, but the sleek looking [Link text](Link URL). Similarly it offers lots of other features. You can even specify alternative markup languages, such as textile in jekyll configuration.&lt;/p&gt;

&lt;h3 id="ease-of-blogging"&gt;Ease Of Blogging&lt;/h3&gt;
&lt;p&gt;You can write blog entries very easily. I’ve added markdown syntax bindings to &lt;code class="language-plaintext highlighter-rouge"&gt;vim&lt;/code&gt;, my favorite editor, and geany has a markdown plugin as well. I am of the opinion that you should write text entries in a text-editor, not a textarea in a browser window. I used Windows Live Writer for quite some time and still believe that it is far ahead of anything else in the market. But the wpost format that it uses is propertiery, and as such stopped me from importing blog posts anywhere.&lt;/p&gt;

&lt;h3 id="revision-control"&gt;Revision Control&lt;/h3&gt;
&lt;p&gt;Revision Control, such as &lt;code class="language-plaintext highlighter-rouge"&gt;git&lt;/code&gt;, works best with text-files. Since your blog entries are now just plain text files, you can easily store them under version control, easily reverting blotched commits, making branches, and merging errors. And in case you do not know it yet, &lt;code class="language-plaintext highlighter-rouge"&gt;git&lt;/code&gt; is awesome!&lt;/p&gt;

&lt;h3 id="layout-tools"&gt;Layout Tools&lt;/h3&gt;
&lt;p&gt;Jekyll allows you to define your layout using Liquid Templating. {{content}} translates to the variable content. Similarly you can iterate over blog posts, by using Liquid tags for &lt;code class="language-plaintext highlighter-rouge"&gt;foreach&lt;/code&gt;. The best part is that this is all done before publishing your website, meaning that the final result is always just pure html. You can easily create static portions of your site (such as headers, footers, sidebars).&lt;/p&gt;

&lt;h2 id="getting-started-with-jekyll"&gt;Getting Started With Jekyll&lt;/h2&gt;
&lt;p&gt;I’ll start with jekyll, since it is the most used one out there, and runs on github. It even powers this very blog. First, you must install jekyll. On an Ubuntu machine, &lt;code class="language-plaintext highlighter-rouge"&gt;sudo apt-get install ruby rubygems &amp;amp;&amp;amp; gem install jekyll&lt;/code&gt; should work. If you are working on development using Ruby, I’d recommend you to &lt;code class="language-plaintext highlighter-rouge"&gt;rvm&lt;/code&gt;, instead of plain vanilla distro ruby installs. For windows folks, install Ruby, and the Devkit using RubyInstaller.org. After that run &lt;code class="language-plaintext highlighter-rouge"&gt;gem install jekyll&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Instead of preparing a site from scratch, we will instead be forking an existing site running on jekyll, and using it to model our own. This is partly to shield this tutorial from html/css/js which is irrelevant in this case. In this particular case, I will be using &lt;a href="http://captnemo.in"&gt;my very own website&lt;/a&gt;. &lt;a href="http://github.com/captn3m0/captn3m0.github.com"&gt;Download the source code&lt;/a&gt; for my website from github and extract it somewhere. Next, you will have to delete all the content inside the &lt;code class="language-plaintext highlighter-rouge"&gt;_posts&lt;/code&gt;, projects, &lt;code class="language-plaintext highlighter-rouge"&gt;_drafts&lt;/code&gt;, contact, &amp;amp; data directories as I do not give permission to you do use those in your site.&lt;/p&gt;

&lt;p&gt;Next, create a file called &lt;code class="language-plaintext highlighter-rouge"&gt;_posts/2011-month-date.md&lt;/code&gt; with the following format :&lt;/p&gt;
&lt;pre&gt;
&lt;code class="prettyprint"&gt;
---
title: Title Of Post
layout: post
---
The blog entry follows here in markdown. You can use *italic*, **bold**, [Link](http://google.com), #header1, ##header2 etc.

For more markdown details, visit its official page at http://daringfireball.net/projects/markdown/syntax#autolink
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;Now, open up the &lt;code class="language-plaintext highlighter-rouge"&gt;_layouts/&lt;/code&gt; and edit default.html. You’d need basic html skills to replace my photo with your own, and change links to various places. After you are done, just &lt;code class="language-plaintext highlighter-rouge"&gt;cd&lt;/code&gt; into the root directory of the site, and run &lt;code class="language-plaintext highlighter-rouge"&gt;jekyll&lt;/code&gt;. Some output should confirm that the server ran successfully. Open up &lt;code class="language-plaintext highlighter-rouge"&gt;http://localhost:4000&lt;/code&gt; in your browser, and you will see your web-site running.&lt;/p&gt;

&lt;p&gt;Now for the hosting part. All of your current site is hosted in &lt;code class="language-plaintext highlighter-rouge"&gt;_site&lt;/code&gt; folder, so you can upload it anytime you want. Or, if you want, you can use github as your hosting provider. Just follow the instructions on &lt;a href="http://pages.github.com"&gt;pages.github.com&lt;/a&gt; and you should be be up and running in no time.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Mon, 19 Sep 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/09/19/jekyll/</guid></item><item><title>Six Months of Ubuntu</title><link>https://captnemo.in/blog/2011/09/13/6-months-of-ubuntu/</link><description>&lt;p&gt;I installed Ubuntu as my primary OS back sometime in February. Not that I’d not tried it earlier. In fact, I’d used a copy of Ubuntu 3 back in day. But this time around, Windows (from my dual boot) just gave up and died. The partition with Windows got heavily corrupted, lost lots of data, and ultimately I had to format it. And Ubuntu dragged through all that. And here I’m today, a veteran of 3 Ubuntu versions, starting with 10.10, and right now on the 11.10 beta.&lt;/p&gt;

&lt;p&gt;What have I learned ? That its better than Windows, for one. But several other things as well. I’m writing this post from the general linux-distro scene, and not just Ubuntu in specific. For the period before Feb, I’d been using Linux Mint as my primary OS for quite some time. But Ubuntu Natty Alpha brought all that Unity love (which I doted on once), and I had to move to 11.04&lt;/p&gt;

&lt;h2 id="reasons-to-switch-to-linux"&gt;Reasons to switch to Linux&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;Its free!&lt;/li&gt;
  &lt;li&gt;Its free! No more paying up for Windows. People who had Windows ship with their computers would be delighted to know that there is something called a Windows Refund, which allows you to be compensated by the cost of Windows, if you decide not to use it.&lt;/li&gt;
  &lt;li&gt;Better file system. If you’ve ever lost yourself in the mirth of files in “Program Files”, “AppData”, “Application Data”, “sytem32” and the like, you’d be delighted to know that there is a very well balanced binary management system in Linux. All binaries are in PATH, unlike Windows, where some softwares do that, and most don’t. So you can actually run &lt;code class="language-plaintext highlighter-rouge"&gt;php&lt;/code&gt;, &lt;code class="language-plaintext highlighter-rouge"&gt;git&lt;/code&gt;, &lt;code class="language-plaintext highlighter-rouge"&gt;ruby&lt;/code&gt; from any damn place that you want. People who have tried to compile Java programs using &lt;code class="language-plaintext highlighter-rouge"&gt;javac&lt;/code&gt; on Windows might remembring updating PATH in Windows. No more of that in Linux.&lt;/li&gt;
  &lt;li&gt;Free softwares! The majority of good software on Windows is paid (and even more with Mac). But in the Linux world, (almost) everything is free. What is paid for then? Some games, high level commercial softwares and the like. But most of the stuff is free.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Package Management&lt;/strong&gt; Apparently Windows 8 will have some sort of app-store with it. Which is a long time coming in Windows. But guess what, almost all Linux distros have some flavor of package manager built in. Debian (and Ubuntu) has &lt;code class="language-plaintext highlighter-rouge"&gt;apt-get&lt;/code&gt;, Arch has &lt;code class="language-plaintext highlighter-rouge"&gt;pacman&lt;/code&gt;, Fedora has &lt;code class="language-plaintext highlighter-rouge"&gt;yum&lt;/code&gt;. And installing softwares is as easy as it could be. Need mysql? Just type &lt;code class="language-plaintext highlighter-rouge"&gt;sudo apt-get install mysql&lt;/code&gt;. Done. Boom. Just like that.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Customization Level&lt;/strong&gt; Even though I don’t like the messing up of Gnome by Ubuntu, there are tons of alternatives available. I’m right now using Gnome-Shell, and have plans to move to &lt;code class="language-plaintext highlighter-rouge"&gt;xmonad&lt;/code&gt;, which is another Window Manager. Almost every feature on the Linux desktop can be customized.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Terminal&lt;/strong&gt; I’d always had planned several &lt;code class="language-plaintext highlighter-rouge"&gt;learn bash scripting&lt;/code&gt; kind of to-dos but never got to it until I started using Linux. Even if you don’t script, the actual power of your machine is opened by the terminal. Hacking away in &lt;code class="language-plaintext highlighter-rouge"&gt;vim&lt;/code&gt;, and browsing sites using &lt;code class="language-plaintext highlighter-rouge"&gt;elinks&lt;/code&gt;, and ordering Pizzas in Command Line is as geeky as it gets. Gnome is designed in such a way to allow a normal user to use his computer fully without touching the terminal, but if you use it, it gets better &amp;amp; better.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Applications&lt;/strong&gt; There was a time I used to be a Windows fanatic, using WMP, Zune, Everything and what not. But now, I’ve got a bigger arsenal of softwares. Ever used &lt;em&gt;Audacious&lt;/em&gt;? That’s my default music player, and its awesome.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Development&lt;/strong&gt; You use Windows to develop stuff for Windows. I’m nowhere near to writing applications in C#. I’ll probably be hacking away scripts in ruby, node, python, bash, and building stuff using xul, gtk, webgtk, and qt. All my web applications are ultimately deployed on Linux machines, so it makes sense to write them on Linux. And only Linux has the ease of language package managers, like rubygems, npm, and pip.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Open Source&lt;/strong&gt; I haven’t yet checked out the Linux Kernel source code, but I’m thinking of getting my hands dirty real soon. Ever since I’ve joined github, I’ve been introduced to several awesome coders, projects, and organizations. And guess what? Its all open source! Meaning I actually spend less time writing parsers for xml, and more time working on applications.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="what-ive-learned"&gt;What I’ve Learned&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Be utterly fearless&lt;/strong&gt; Back when I was in Windows, a simple partition deletion used to scare me to death. Now? I’m ready for anything. If you, like me, go play with the alpha of all your favorite stuff, then things will break. And it will be fun to solve all that stuff. You will learn a thousand new things in the process, gain lots of rep on askubuntu, and become a Ubuntu Jedi Master. OK, maybe not the last bit, but &lt;em&gt;you shall become utterly fearless&lt;/em&gt; of all danger. I had to use my computer without network accesibility for three days. And it didn’t even give me a GUI. So I just drudged along for 3 days straight on the console. :)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Community&lt;/strong&gt; Sometimes, I feel people do not get my helpful comments, and offerings of help on Facebook. Its not their fault. They’ve never been introduced to a proper online, helpful community before. The Linux community is helpful, worldwide, readily available, and has probably handled the problem that you are facing now.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Server Administration&lt;/strong&gt; I’m still lacking on the cloud front, as I don’t have servers powerful enough to host virtual machines. But otherwise, I’ve handled lots of stuff. &lt;code class="language-plaintext highlighter-rouge"&gt;ssh&lt;/code&gt; is my thing, and I use &lt;code class="language-plaintext highlighter-rouge"&gt;git&lt;/code&gt; to deploy applications like a pro. I’ve moved on from &lt;code class="language-plaintext highlighter-rouge"&gt;apache&lt;/code&gt; to &lt;code class="language-plaintext highlighter-rouge"&gt;nginx&lt;/code&gt; to &lt;code class="language-plaintext highlighter-rouge"&gt;cherokee&lt;/code&gt; and what not.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Take Backups&lt;/strong&gt; Remember all those “Take Backups before installing Windows/Ubuntu” things that popup while installing your OS. I never paid attention to them, until recently. Now, I’ve got backups scheduled on &lt;code class="language-plaintext highlighter-rouge"&gt;Dropbox&lt;/code&gt;, &lt;code class="language-plaintext highlighter-rouge"&gt;SpiderOak&lt;/code&gt;, and a custom &lt;code class="language-plaintext highlighter-rouge"&gt;SparkleShare&lt;/code&gt; server. I make sure to host my code on github, or my personal git repositories and backup images to Picasa. Everyone knows hard discs are unreliable, so why not make your data redundant and take backups.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The only counter argument would be that Windows has much more stream-lined view of things, with almost everything offering a GUI based application to amange stuff. That’s just not the Linux way. Still, I’m not one of those crazy fanatics who go around preaching Linux (maybe I am!). I feel that if you are using your computer to just open Chrome, Firefox, VLC, and Word, then anything would do. You could probably install android on your computer and do everything you are doing right now. If you are a heavy gamer, then better stay with Windows. And if you are a programmer, switch to Linux.&lt;/p&gt;

&lt;h2 id="windows-8"&gt;Windows 8&lt;/h2&gt;
&lt;p&gt;I installed a developer preview copy of Windows 8 recently, and although I was really awed by its designs concepts, I feel that it is still lacking in certain fronts. For instance, it seems to me that Microsoft is trying to get 8 to the tablets much more readily than on the desktops. Why? Because, there is nothing that can undermine Windows superior market share in Desktops for the near future. However Android &amp;amp; iOS have a very strong presence. Ergo, Windows 8 goes to tables.&lt;/p&gt;

&lt;p&gt;I installed all my favorite programs on Windows 8, but had to switch back after a few days. As a developer, it just does not offer me the same freedom, and easy workflow that I am accustomed to. For instance :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Installing Ruby with build support for gems took a lot of time and patience.&lt;/li&gt;
  &lt;li&gt;Cygwin does not compare anywhere near to a bash shell. Its like this tiny humble brother of shell who turns away when you say PATH. You have to type all those monstrous &lt;code class="language-plaintext highlighter-rouge"&gt;C:/\&lt;/code&gt; kind of paths.&lt;/li&gt;
  &lt;li&gt;No App Store. Windows 8 dev preview does not have an app store yet, which was one of the reasons I had tried Win8. I’m used to frequently browsing the Ubuntu Software Center just to find something that fits.&lt;/li&gt;
  &lt;li&gt;I found that my productivity reduced to half when I was on Windows. I spent too much time looking for stuff which could be done by a single line bash on Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tags: operating systems, linux, ubuntu, windows 8, weblog ifest 2011&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Tue, 13 Sep 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/09/13/6-months-of-ubuntu/</guid></item><item><title>Programming in Node.JS</title><link>https://captnemo.in/blog/2011/09/12/programming-in-nodejs/</link><description>&lt;p&gt;After my attempts at &lt;a href="http://captnemo.in/blog/2011/05/16/learning-python"&gt;python&lt;/a&gt;, &lt;a href="https://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt;, this was the time for node.js. You ask me what is node.js ? Remember when Google Chrome came out and went &lt;a href="http://stackoverflow.com/questions/40994/is-google-chromes-v8-engine-really-that-good"&gt;blazing past the rest of the browsers&lt;/a&gt; in Javascript benchmarks. That was because of its internal Javascript Engine, called &lt;a href="http://code.google.com/p/v8/"&gt;V8&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Soon, V8 was developed as a backend to an evented IO library, that is now known as &lt;a href="http://nodejs.org"&gt;node.js&lt;/a&gt;. Initially, it was named just node, but to prevent confusion, and explain its javascript inheritance, it was renamed node.js. This is the water-cooler moment of the language. If you know node, you’re the cool guy on the block. So what is so special in node ?&lt;/p&gt;

&lt;h2 id="evented-io"&gt;Evented IO&lt;/h2&gt;

&lt;p&gt;Basically node allows you bring home the same good anonymous functions from &lt;a href="http://jquery.org"&gt;JQuery&lt;/a&gt; on your server. In advanced terms, node allows evented input/output, meaning all the IO calls are non-blocking and evented, or scheduled in parallel.&lt;/p&gt;

&lt;h3 id="traditional-io"&gt;Traditional I/O:&lt;/h3&gt;
&lt;pre class="prettyprint"&gt;
data = file.read("/foo/bar");
  // wait...
  doSomething(data);
&lt;/pre&gt;

&lt;h3 id="evented-io-1"&gt;Evented I/O:&lt;/h3&gt;
&lt;pre class="prettyprint"&gt;
file.read("/foo/bar", function(data) {
  // called after data is read
  doSomething(data);
});
otherThing(); // execute immediately;
&lt;/pre&gt;

&lt;h2 id="how-to-install"&gt;How To Install&lt;/h2&gt;

&lt;p&gt;The official installation guide is present at &lt;a href="https://github.com/joyent/node/wiki/Installation"&gt;https://github.com/joyent/node/wiki/Installation&lt;/a&gt;. I’d present a slightly different version, using &lt;code class="language-plaintext highlighter-rouge"&gt;nvm&lt;/code&gt;, i.e &lt;a href="https://github.com/creationix/nvm"&gt;Node Version Manager&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id="unixlinux"&gt;Unix/Linux&lt;/h3&gt;

&lt;h4 id="dependencies"&gt;Dependencies&lt;/h4&gt;
&lt;p&gt;There are some dependencies on installing node.&lt;/p&gt;

&lt;p&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;sudo apt-get install git-core build-essentials libssl-dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Run the corresponding command for your distro (yum etc).&lt;/p&gt;

&lt;h4 id="installing-nvm"&gt;Installing nvm&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Clone nvm:
&lt;code class="language-plaintext highlighter-rouge"&gt;git clone https://github.com/creationix/nvm.git ~/.nvm&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Include nvm:
&lt;code class="language-plaintext highlighter-rouge"&gt;. ~/.nvm/nvm.sh&lt;/code&gt; //The dot is important&lt;/li&gt;
  &lt;li&gt;Source it to your bash file. Basically copy the above command(2) inside your ~/.bashrc.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id="fetching-node"&gt;Fetching node&lt;/h4&gt;
&lt;p&gt;Node is under heavy development at the moment. Development of node is carried across a stable &amp;amp; a testing branch. The stable branch is the one that you should prefer. As of now, &lt;code class="language-plaintext highlighter-rouge"&gt;stable&lt;/code&gt; is &lt;code class="language-plaintext highlighter-rouge"&gt;v0.4.11&lt;/code&gt; and testing has reached &lt;code class="language-plaintext highlighter-rouge"&gt;v0.5.6&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now run the following commands:
&lt;code class="language-plaintext highlighter-rouge"&gt;nvm install v0.4.11&lt;/code&gt; to install v0.4.11
&lt;code class="language-plaintext highlighter-rouge"&gt;nvm use v0.4.11&lt;/code&gt;
&lt;code class="language-plaintext highlighter-rouge"&gt;nvm alias default v.04.11&lt;/code&gt; to make it default&lt;/p&gt;

&lt;p&gt;You can type &lt;code class="language-plaintext highlighter-rouge"&gt;which node&lt;/code&gt; to see the actual node binaries being used.&lt;/p&gt;

&lt;h4 id="package-methods"&gt;Package Methods&lt;/h4&gt;
&lt;p&gt;I would strongly advice against using your distro versions of node, unless you are on a rolling release distro, such as Arch. Please do not run &lt;code class="language-plaintext highlighter-rouge"&gt;sudo apt-get install node&lt;/code&gt; to install node. This would only cause much anguish and pain later on.&lt;/p&gt;

&lt;p&gt;As of now, even the beta of Ubuntu 11.10 holds &lt;code class="language-plaintext highlighter-rouge"&gt;v0.4.9&lt;/code&gt; and is likely to do so for the next 6 months.&lt;/p&gt;

&lt;h3 id="windows"&gt;Windows&lt;/h3&gt;
&lt;p&gt;As I’ve stopped using Windows for quite some time, here are instructions from the official node installation guide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows Build (Node v0.5.5)&lt;/strong&gt;: &lt;a href="http://nodejs.org/dist/v0.5.5/node.exe"&gt;http://nodejs.org/dist/v0.5.5/node.exe&lt;/a&gt;
I would again recommend to install &lt;a href="http://nodejs.org/dist/v0.4.11/node.exe"&gt;http://nodejs.org/dist/v0.4.11/node.exe&lt;/a&gt; for stability reasons.&lt;/p&gt;

&lt;p&gt;Self-contained binaries are available at &lt;a href="http://node-js.prcn.co.cc"&gt;http://node-js.prcn.co.cc&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="node-package-manager"&gt;Node Package Manager&lt;/h3&gt;
&lt;p&gt;All cool programming languages come with their own package managers. Ruby has &lt;a href="https://rubygems.org"&gt;rubygems&lt;/a&gt;, Python has pip, PHP has PECL, perl has CPAN, and &lt;code class="language-plaintext highlighter-rouge"&gt;node&lt;/code&gt; has &lt;a href="https://github.com/isaacs/npm"&gt;npm&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;npm&lt;/code&gt; holds a large collection of packages that are the extra batteries that don’t come included in node. If you need to parse documents, or do some other fancy stuff in node, don’t look farther than npm. If you need it, chances are, it already has a package in npm. See &lt;a href="https://www.npmjs.com/"&gt;list of packages&lt;/a&gt; on the npm site.&lt;/p&gt;

&lt;h4 id="unix"&gt;Unix&lt;/h4&gt;

&lt;p&gt;A simple one line install is available for &lt;code class="language-plaintext highlighter-rouge"&gt;npm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;curl http://npmjs.org/install.sh | sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After that, you can install any package by &lt;code class="language-plaintext highlighter-rouge"&gt;npm install package&lt;/code&gt;. For instance, install jade by &lt;code class="language-plaintext highlighter-rouge"&gt;npm install jade&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Windows folks can clone the &lt;a href="https://github.com/isaacs/npm"&gt;npm repository&lt;/a&gt; and run the included &lt;code class="language-plaintext highlighter-rouge"&gt;nmp.bat&lt;/code&gt; file, and hope that it works.&lt;/p&gt;

&lt;h2 id="simple-servers-in-node"&gt;Simple Servers in Node&lt;/h2&gt;

&lt;p&gt;node.js comes with “batteries included”, and part of that battery is node’s ability to instantly create web servers. Yes, right inside your program, you can easily create web servers, which will hold full compliance to HTTP.&lt;/p&gt;

&lt;p&gt;This is a very simple HTTP server, written using the http module(included) in node :&lt;/p&gt;

&lt;pre class="prettyprint"&gt;var http=require('http');
http.createServer(function(request, response) {
  var headers = { "Content-Type": "text/plain" };
  response.sendHeader(200, headers);
  response.sendBody("Hello, World!\n");
  response.finish();
}).listen(8000);
&lt;/pre&gt;
&lt;p&gt;As you can see, the createServer function takes a callback function as its argument. The callback function is called for each of the requests. All events are handled easily and instead of a server handling threads, memory etc, node just handles requests. In essence, a request generates an &lt;em&gt;event&lt;/em&gt;, which is then handled by the callback function provided.&lt;/p&gt;

&lt;p&gt;This is quite similar to the way we program event loops in javascript on the browser.&lt;/p&gt;

&lt;h2 id="the-good-stuff"&gt;The good stuff&lt;/h2&gt;
&lt;p&gt;There are loads of interesting projects using node. Visit the &lt;a href="https://github.com/joyent/node/wiki/modules"&gt;modules section&lt;/a&gt; on the node wiki for a list of interesting node modules available. These include node clients for various libraries such as &lt;a href="https://github.com/joyent/node/wiki/modules#wiki-database"&gt;Databases&lt;/a&gt;(mysql, postgre, sqlite, Cassandra etc), Microframeworks (lik Sinatra), Frameworks, wikis, CMS, parsers and what not.&lt;/p&gt;

&lt;p&gt;I’d recommend starting out with &lt;a href="https://github.com/senchalabs/Connect"&gt;Connect&lt;/a&gt; which is a middleware for node, and allows you to wrap your application easily around it. For databases, you can either go with the standard Relational ones(like mysql) or be brave, and take a spin with the noSQL ones like CouchDB, Cassandra, or MongoDB. All of them have native bindings available for node.js.&lt;/p&gt;

&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://github.com/joyent/node/"&gt;Node On GitHub&lt;/a&gt;, including the wiki, documentation &amp;amp; code&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://nodejs.org/"&gt;Nodejs.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="blogs--other-resources"&gt;Blogs &amp;amp; Other resources&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://blog.nodejitsu.com/"&gt;NodeJitsu&lt;/a&gt;, a company working completely on node. &lt;img alt="" src="https://img.shields.io/badge/status-dead-red.svg?style=flat-square" /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.bytemuse.com/2011/06/getting-started-with-node-js-express-and-couchdb/"&gt;Getting Started with Node.JS, Express and CouchDB&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.nodejitsu.com/6-must-have-nodejs-modules"&gt;6 Must Have Node.js Modules&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://addyosmani.com/blog/spotlight-issue1/"&gt;Some cool node projects&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://howtonode.org/"&gt;HowToNode&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://nodebeginner.org/"&gt;The node Beginner book&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://nodecasts.org/"&gt;NodeCasts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="stackoverflow-questions-on-node"&gt;&lt;a href="http://stackoverflow.com"&gt;StackOverflow&lt;/a&gt; Questions on node&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/5869216"&gt;How to store Node.js deployment settings/configuration files?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/2353818/how-do-i-get-started-with-nodejs"&gt;How do I get started with NodeJS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/1884724/what-is-node-js"&gt;What is node.js&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/3648993/where-can-i-host-a-node-js-app"&gt;Where to host node.js applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Nemo's Home</author><pubDate>Mon, 12 Sep 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/09/12/programming-in-nodejs/</guid></item><item><title>Michael Hart Has Passed Away</title><link>https://blog.nawaz.org/posts/2011/Sep/michael-hart-has-passed-away/</link><description>&lt;p&gt;I just learned that Michael Hart, founder of &lt;a class="reference external" href="http://www.gutenberg.org"&gt;Project Gutenberg&lt;/a&gt; has &lt;a class="reference external" href="http://www.gutenberg.org/wiki/Michael_S._Hart"&gt;passed away&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I met him once in April of 2006. He gave an overview talk on Project
Gutenberg in the building I worked in on campus. I assumed they had
flown him over for the talk and was surprised …&lt;/p&gt;</description><author>Beetle Space</author><pubDate>Thu, 08 Sep 2011 10:00:00 GMT</pubDate><guid isPermaLink="true">https://blog.nawaz.org/posts/2011/Sep/michael-hart-has-passed-away/</guid></item><item><title>Slow</title><link>https://boyter.org/2011/09/slow/</link><description>&lt;p&gt;Well it seems searchco.de has been very slow to respond over the last few days. Turns out I had some rogue processes running for another domain chunews.com which were eating a lot of the CPU. I just killed them and switched off the processes for maybe good as that website really needs an overhaul anyway.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 06 Sep 2011 07:38:11 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/09/slow/</guid></item><item><title>Hard Numbers</title><link>https://boyter.org/2011/08/hard-numbers/</link><description>&lt;p&gt;Thought I would quickly post some hard numbers showing the number of searches since searchco.de launched. The results surprised me somewhat actually. 2011-7 13636&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2011-6 8154&lt;/li&gt;
&lt;li&gt;2011-5 6183&lt;/li&gt;
&lt;li&gt;2011-4 8532&lt;/li&gt;
&lt;li&gt;2011-3 10886&lt;/li&gt;
&lt;li&gt;2011-2 6476&lt;/li&gt;
&lt;li&gt;2011-1 948&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I could dig into the results more closely since a lot of those could be the ajax firing off events like &amp;ldquo;a&amp;rdquo; and the like but I do like the upwardish trend.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 04 Aug 2011 07:29:46 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/08/hard-numbers/</guid></item><item><title>Learning Ruby on Rails</title><link>https://captnemo.in/blog/2011/08/01/learning-ruby-on-rails/</link><description>&lt;p&gt;Continuing my quest on Web Designing, I’ve started learning &lt;a href="http://rubyonrails.org" title="Official RoR Site"&gt;Ruby On Rails&lt;/a&gt;, which is like &lt;em&gt;the&lt;/em&gt; most-hyped web framefork of the moment. After all, &lt;a href="https://github.com" title="GitHub"&gt;Github&lt;/a&gt; runs on Ruby On Rails, &lt;a href="http://redmine.org" title="A project management system with code browsing"&gt;Redmine&lt;/a&gt; uses Rails, and so do &lt;a href="http://basecamphq.com"&gt;Basecamp&lt;/a&gt;,&lt;a href="http://hulu.com"&gt;Hulu&lt;/a&gt;,&lt;a href="http://scribd.com"&gt;Scribd&lt;/a&gt;, and even &lt;a href="http://twitter.com"&gt;Twitter&lt;/a&gt;. Even though RoR has Ruby in its name, its just a namesake.&lt;/p&gt;

&lt;p&gt;Learning Ruby and learning Rails are entirely two different routes, and learning one only gives you a slight advantage in the other. I’m learning Rails by the excellent book, &lt;a href="https://www.railstutorial.org/" title="Ruby On Rails Tutorial Book"&gt;Ruby On Rails 3 Tutorial&lt;/a&gt;, by Michael Hartl. It covers Rails 3, which is one reason I picked it as Rails 3 is quite different from Rails 2 in comparision.&lt;/p&gt;

&lt;p&gt;Rails in a few words would be described as &lt;em&gt;a Web framework that makes writing web applications really, really easy&lt;/em&gt;. And I really mean that. I’ve been programming in Rails for ~2 days, and I can confortably say that it is better than any other PHP framework (viz &lt;a href="http://cakephp.org"&gt;CakePHP&lt;/a&gt;, &lt;a href="http://codeigniter.com"&gt;CodeIgniter&lt;/a&gt;, &lt;a href="http://kohanaphp.com"&gt;Kohana&lt;/a&gt;) simple because it is powered by Ruby.&lt;/p&gt;

&lt;p&gt;And the beauty of Ruby is not in its implementation, but in its elegance. Reading ruby code is lie reading seeing a visual presentation. While PHP is the paragraphed, prose version of the same stuff. Simply put, PHP allows you to do the same things, but essentialy it was not readable enough to match Ruby’s elegance.&lt;/p&gt;

&lt;p&gt;Rails follows the &lt;a href="http://en.wikipedia.org/wiki/Model-view-controller" title="Model View Conroller"&gt;MVC pattern&lt;/a&gt; (Model-View-Controller) for development, and uses it strictly. It has got its own conventions, but as I found out, the concept of convention over Configuration makes much more sense in Rails than it ever did in PHP. All that time I spent in the CakePHP console was nothing compared to the interactivity of the Rails Console(&lt;code class="language-plaintext highlighter-rouge"&gt;rails c&lt;/code&gt;). Starting development server(&lt;code class="language-plaintext highlighter-rouge"&gt;rails s&lt;/code&gt;) is as easy as running the production server(&lt;code class="language-plaintext highlighter-rouge"&gt;rails s --environment production&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Instead of writing down &lt;em&gt;another&lt;/em&gt; beginner tutorial on Rails, I’d rather direct you to some of the excellent Rails resources :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://www.railstutorial.org/" title="Ruby On Rails Tutorial Book"&gt;Ruby on Rails 3 Tutorial&lt;/a&gt;, the book I’m reading for learning Rails. Highly recommended&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://railsbrains.org"&gt;RailsBrains&lt;/a&gt;, offline API for Rails&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://guides.rubyonrails.org/getting_started.html"&gt;Rails Getting Started&lt;/a&gt;, Official Rails Getting Started guide&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/tagged/ruby-on-rails"&gt;Rails@Stackoverflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Nemo's Home</author><pubDate>Mon, 01 Aug 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/08/01/learning-ruby-on-rails/</guid></item><item><title>Photo Booth Plist Rebuild/Repair Script</title><link>https://donatstudios.com/Lion-Photobooth-Repair</link><description>&lt;fieldset&gt;&lt;legend&gt;Update 2023-10-17&lt;/legend&gt;
The script has been verified to work in macOS Sonoma.
&lt;/fieldset&gt;
&lt;p&gt;When I switched from an older MacBook Pro to a MacBook Air the backup from my old MacBook Pro was corrupted and unmountable. However, I had preserved a backup of my Photo Booth Photos and wanted the Photo Booth application to recognize them. This is just a matter of creating a &lt;code&gt;Recents.plist&lt;/code&gt;, an ordered list of the image files.&lt;/p&gt;
&lt;p&gt;While adding these photos to the &lt;code&gt;Recents.plist&lt;/code&gt; file Photo Booth uses seems straightforward enough, arranging hundreds of photos from different naming schemes across various OS versions manually is pretty tedious.&lt;/p&gt;
&lt;p&gt;To fix this, I wrote a script that automatically creates a new plist file with the photos in the correct order. As a safety measure, the script backs up the existing Recents.plist as Recents.plist.bk.[time], allowing easy restoration if needed.&lt;/p&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;h3&gt;Please Note - &lt;em&gt;NEW&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;This script is compatible with macOS versions up to macOS 14 (Sonoma). However, it relies on PHP. While PHP was bundled with macOS until macOS 12 (Monterey), subsequent versions require a separate PHP installation.&lt;/p&gt;
&lt;p&gt;I recommend using Homebrew. You can find Homebrew installation instructions on their &lt;a href="https://brew.sh/"&gt;official website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After setting up Homebrew, install PHP by entering the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;brew install php&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;To Begin With&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ensure all photos and movies you wanted loaded into Photo Booth are located in your Pictures/Photo Booth Library/Pictures/ folder.&lt;/li&gt;
&lt;li&gt;Ensure the Photo Booth Application is &lt;strong&gt;closed&lt;/strong&gt; to avoid overwriting our changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Simple Method&lt;/h3&gt;
&lt;p&gt;&lt;small&gt;Added September 10, 2012&lt;/small&gt;&lt;br /&gt;
Open Terminal and run the following command.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;curl -Ls https://gist.githubusercontent.com/donatj/1108691/raw/Photobooth_rebuild.sh.php | php&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Git Method&lt;/h3&gt;
&lt;p&gt;Simply executing the following should both download it and set it executable.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;git clone https://gist.github.com/1108691.git PhotoBoothRepair&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Non-Git Method&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.githubusercontent.com/donatj/1108691/raw/Photobooth_rebuild.sh.php"&gt;Save the script&lt;/a&gt; somewhere accessible to you via Terminal.&lt;/li&gt;
&lt;li&gt;Navigate in Terminal to the directory where you saved the shell script&lt;/li&gt;
&lt;li&gt;Set the file executable by running &lt;pre&gt;&lt;code class="terminal"&gt;chmod +x Photobooth_rebuild.sh.php&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Execute the shell script &lt;pre&gt;&lt;code class="terminal"&gt;./Photobooth_rebuild.sh.php&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;All Done - Fire up Photo Booth to see our results!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Known Limitations&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;All Leopard format names will come first regardless of date simply for lack of anything to go on. They're just numbered and contain no date information.&lt;/li&gt;
&lt;/ul&gt;</description><author>Donat Studios</author><pubDate>Wed, 27 Jul 2011 13:13:20 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/Lion-Photobooth-Repair</guid></item><item><title>Quick update on Eiridia</title><link>https://benovermyer.com/blog/2011/07/quick-update-on-eiridia/</link><description>&lt;p&gt;I was laid off two Wednesdays ago and then went to a science fiction convention, which is why there was no blog post last week. As you read this, I’ll be at a &lt;a href="http://www.sca.org" rel="external"&gt;Society for Creative Anachronism&lt;/a&gt; event for the weekend. This is going to be a short post just detailing a bit of where Silver Gryphon Games is at with the Eiridia Campaign Setting for Ingenium.&lt;/p&gt;
&lt;p&gt;The Campaign Setting book includes a host of new races, Talents, professions, and spells, in addition to giving a good overview to the game world. The writing is currently being done by two people – myself, and a freelancer we’ve hired to do some of the mechanical portions. We have roughly a fourth of the manuscript done.&lt;/p&gt;
&lt;p&gt;In the next few weeks, I’ll be putting out a call to find a cover artist. Once the cover is complete, the manuscript should be finished enough that we’ll begin playtesting in earnest. If you’d like to get involved with that, there are some very cool incentives to being an active “alpha” player. &lt;a href="mailto:ben@silvergryphongames.com"&gt;Email me&lt;/a&gt; and we’ll talk about it.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 09 Jul 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/07/quick-update-on-eiridia/</guid></item><item><title>Announcing Planet IITR</title><link>https://captnemo.in/blog/2011/07/09/announcing-planet-iitr/</link><description>&lt;p&gt;&lt;a href="http://www.planetaki.com/iitr/"&gt;Planet IIT-R&lt;/a&gt; is a blog collection similar to the &lt;a href="http://planet.ubuntu.com"&gt;Planet Ubuntu&lt;/a&gt;, &lt;a href="http://planet.wordpress.com"&gt;Wordpress&lt;/a&gt;, and the likes. The basic idea is to create a single address where all blogs of IIT-R are aggregated. This way, people can easily follow happenings and blogs at IIT-Roorkee without individually following various blogs. I’ve added a few blogs to it already, including those of &lt;a href="http://divye.in"&gt;Divye Kapoor&lt;/a&gt;, Sanath Rath, &lt;a href="http://wona.co.in"&gt;Wona&lt;/a&gt;, Arasu and the likes.&lt;/p&gt;

&lt;p&gt;A complete list of blogs in the planet is available at &lt;a href="http://www.planetaki.com/iitr/subscriptions/"&gt;http://www.planetaki.com/iitr/subscriptions/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: There is also a feature in planetaki to suggest a website for the planet. Unfortunately, you need to be logged in to planetaki (ie create a planet) to suggest a site. In case you are, you can use &lt;a href="http://planetaki.com/iitr/subscriptions/suggest"&gt;the suggestions&lt;/a&gt; feature to suggest websites.&lt;/p&gt;

&lt;p&gt;To suggest a blog to add to the list, please use the form below. You can also see the current spreadsheet &lt;a href="https://spreadsheets.google.com/spreadsheet/pub?hl=en_US&amp;amp;hl=en_US&amp;amp;key=0AmqzfUR1eWkldHdGSTNOM1kyZVEtRElWU0xsYkZVZ1E&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html"&gt;here&lt;/a&gt; :&lt;/p&gt;
Loading...
&lt;p&gt;You can also &lt;a href="/contact/"&gt;email me&lt;/a&gt; for any further queries.&lt;br /&gt;
Further Links :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://planetaki.com"&gt;http://planetaki.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://planetplanet.com"&gt;http://planetplanet.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://spreadsheets.google.com/spreadsheet/pub?hl=en_US&amp;amp;hl=en_US&amp;amp;key=0AmqzfUR1eWkldHdGSTNOM1kyZVEtRElWU0xsYkZVZ1E&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html"&gt;Spreadsheet of the form above&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Nemo's Home</author><pubDate>Sat, 09 Jul 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/07/09/announcing-planet-iitr/</guid></item><item><title>Nusphere PhpED Dark Theme</title><link>https://donatstudios.com/PhpED-Dark-Theme</link><description>&lt;p&gt;It would seem there is a fair deal of call for an updated version of my PhpED dark theme from colleagues as well as random folks on the internet who’ve seen screenshots of my PhpED installation.  I previously had my Dark Theme for 5 linked on my Review of PhpED, but I figured I could have a page dedicated to it.&lt;/p&gt;

&lt;fieldset&gt;&lt;legend&gt;Screenshots&lt;/legend&gt;
&lt;a href="https://donatstudios.com/assets/34/phped_php.png" rel="lightbox"&gt;&lt;img alt="PhpED Dark Theme PHP" src="https://donatstudios.com/assets/34/phped_php.png" style="margin: auto; display: block; width: 30%; float: left;" /&gt;&lt;/a&gt;
&lt;a href="https://donatstudios.com/assets/34/phped_css.png" rel="lightbox"&gt;&lt;img alt="PhpED Dark Theme CSS" src="https://donatstudios.com/assets/34/phped_css.png" style="margin: auto; display: block; width: 30%; float: right;" /&gt;&lt;/a&gt;
&lt;a href="https://donatstudios.com/assets/34/phped_html.png" rel="lightbox"&gt;&lt;img alt="PhpED Dark Theme HTML" src="https://donatstudios.com/assets/34/phped_html.png" style="margin: auto; display: block; width: 30%; margin: 0 auto;" /&gt;&lt;/a&gt;
&lt;/fieldset&gt;
&lt;h2&gt;Download and Installation&lt;/h2&gt;
&lt;p&gt;The first step is to download the proper version.  &lt;br /&gt;Click here to download the &lt;a href="https://raw.github.com/gist/734872/57bea8d954110b7849bcea25851495d6a3f4ffa3/hl.cfg" target="_blank"&gt;PhpED 6 Version&lt;/a&gt; or here to download the &lt;a href="https://raw.github.com/gist/734872/69fc228a0c174f10a2aa571b0532113cdaa9bfeb/hl.cfg" target="_blank"&gt;PhpED 5 Version&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After you have downloaded the file you will need to replace your hl.cfg. &lt;/p&gt;&lt;p&gt;In Windows 7 or Vista this should be located in or around: &lt;pre&gt;C:\Users\&lt;strong&gt;YOUR_USER_NAME&lt;/strong&gt;\AppData\[&lt;em&gt;Roaming&lt;/em&gt; / &lt;em&gt;Local&lt;/em&gt;]\NuSphere\PhpED\config&lt;/pre&gt;
&lt;br /&gt;Likewise in XP it should be located in something like: &lt;pre&gt;C:\Documents and Settings\&lt;strong&gt;YOUR_USER_NAME&lt;/strong&gt;\Application Data\NuSphere\PhpED\config&lt;/pre&gt;
&lt;/p&gt;&lt;p&gt;The final step is to simply change your background color to a dark color.  The background color is oddly saved in a different configuration file than the highlighting. This can be found in &lt;strong&gt;Tools&lt;/strong&gt; &amp;rArr; &lt;strong&gt;Settings&lt;/strong&gt; &amp;rArr; &lt;strong&gt;Editor&lt;/strong&gt; &amp;rArr; &lt;strong&gt;Appearance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While you're in there you may want to tweak the settings some to your taste, but that is all there is to it.&lt;/p&gt;</description><author>Donat Studios</author><pubDate>Fri, 08 Jul 2011 06:34:57 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/PhpED-Dark-Theme</guid></item><item><title>What if Linus Torvalds designed Google+</title><link>https://captnemo.in/blog/2011/07/07/linus/</link><description>&lt;p&gt;Google’s announced its next big thing, &lt;a href="http://plus.google.com"&gt;Google+&lt;/a&gt; to take on Facebook left people wondering if the next version would be called Google++. Inspite of all the great work that Vic Gundotra has put into Google+, it still lacks something. The creator of linux, Linus Torvalds. Google+ is as-of-now the social network for tech-geeks who are part of a field trial experiment(monkeys!) on the site. Google+ is still halfway geek, and in my imagination it would have been the ultimate geek power tool if it had been designed by Linus. Unfortunately, he is busy developing the linux kernel (10 million lines, 2% being his), and we would have to suffice with these thoughts:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Open Source&lt;/strong&gt; : Google+ would be open sourced. Anyone could run Google+ on their own servers, and use it to create their own Social Network&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Command Line&lt;/strong&gt; : The default Google+ client would run natively on linux/unix but would be ported later to Windows using cygwin.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Difficulty-of-use&lt;/strong&gt; : Gone are the click and point days. You’d be required to have absolute mastery over at least 5 different commands before you can even post a single item to your feed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Full Control&lt;/strong&gt; : You will have full control over whatever you post. You can make 4 changes, stage them, take them back, commit 2 of them, edit a post, and recommit before pushing it to the server. However all of this will be stored.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Git Backend&lt;/strong&gt; : Both the client and the server will use git as its backend to store history, revisions, links, and circles.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Circles&lt;/strong&gt; : would be called trees. And you can tag your trees to take a snapshot of your friends lists at a time.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Branching&lt;/strong&gt; : would allow you to create multiple versions of your profile. The default version will be called master, while you can continue your secret development in alpha, staging, beta branches. Circles will automatically be associated with branches and auto-post items.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Merging&lt;/strong&gt; : will allow for collaborative posts.&lt;/li&gt;
  &lt;li&gt;After 12 years of development, Google+ will reach version 2.1&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;No deletions&lt;/strong&gt; : Everything in history has an importance. You are allowed to use rebase to rewrite history. Beware: use cautiously. Incorrect usage may lead to painfull scenarios.&lt;/li&gt;
  &lt;li&gt;A mascot(direwolf ?) would be found for Google+ (probably after it bit Linus in an aquarium)&lt;/li&gt;
  &lt;li&gt;Facebook would spend $421m fighting Google+&lt;/li&gt;
  &lt;li&gt;The manual of Google+ would be a labryinth of switches amd command line arguments for all the features that it came with. A user would be expected to read through the entire manual, or at least the first one-third, before being able to &lt;em&gt;do something&lt;/em&gt; of use with the service.&lt;/li&gt;
  &lt;li&gt;To block a user, you must enter his id in an ignore file&lt;/li&gt;
  &lt;li&gt;3 years hence, the next big thing would be ghub offering a farm-like service to create, host, and customize your own google+ servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;Note: Based on the history of linux, and the usability of git.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id="announcement"&gt;Announcement&lt;/h3&gt;

&lt;p&gt;The &lt;a href="http://www.thelinuxdaily.com/2010/04/the-first-linux-announcement-from-linus-torvalds/"&gt;famous announcement of Linux Kernel&lt;/a&gt; on the &lt;code class="language-plaintext highlighter-rouge"&gt;comp.os.minix&lt;/code&gt; mailing list is well-known. Slightly re-written, this is how Linus might have announced Google+.&lt;/p&gt;

&lt;pre&gt;
&amp;gt;From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)  
&amp;gt;Newsgroups: web.social.facebook  
&amp;gt;Subject: What would you like to see most in facebook  
&amp;gt;Summary: small poll for my new social network  
&amp;gt;Message-ID: &amp;lt;2011Jun28.205708.9541@klaava.Helsinki.FI&amp;gt;  
&amp;gt;Date: 28 Jun 11 20:57:08 GMT  
&amp;gt;Organization: Google  

&amp;gt;Hello everybody out there using facebook -

&amp;gt;I’m doing a (free) social network (just a hobby, won’t be big and professional like facebook). This has been brewing since dec, and is starting to get ready. I’d like any feedback on things people like/dislike in facebook, as my site resembles it somewhat (same layout of the news feed and comments(due to practical reasons) among other things).

&amp;gt;I’ve currently ported feed(1.08), comments(2.1), photos(3.14), and likes(1.40), and things seem to work. This implies that I’ll get something practical within a few months, and I’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them :-)

&amp;gt;Linus (torvalds@kruuna.helsinki.fi)

&amp;gt;PS. Yes – it’s free of any facebook code, and it has pipelined js. It is NOT protable (uses google accounts), and it probably never will support anything other than Google App Engine, as that’s all I have :-(.

&lt;/pre&gt;

&lt;p&gt;Tags: &lt;a href="http://www.facebook.com/WeBlog2011"&gt;WeBlog iFest 2011&lt;/a&gt;, humour, linux, linus&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Thu, 07 Jul 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/07/07/linus/</guid></item><item><title>Vector Space Search Model Explained</title><link>https://boyter.org/2011/06/vector-space-search-model-explained/</link><description>&lt;p&gt;A mate of mine was looking at a previous article I wrote about &lt;a href="http://www.wausita.com/captcha/"&gt;Decoding CAPTCHA&amp;rsquo;s&lt;/a&gt; where I pointed people to the following article (PDF) &lt;a href="http://la2600.org/talks/files/20040102/Vector_Space_Search_Engine_Theory.pdf"&gt;http://la2600.org/talks/files/20040102/Vector_Space_Search_Engine_Theory.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;He was having some difficulty understanding it so I thought I would write up a very simple explanation of what&amp;rsquo;s actually happening in the vector space.&lt;/p&gt;
&lt;p&gt;The vector space isn&amp;rsquo;t actually that complicated, but getting your head around how it works takes a few steps. Let&amp;rsquo;s imagine for the moment that we are going to search over a collection of documents which only contain one word &amp;ldquo;boffin&amp;rdquo;. Each document has a different count of our word but only contain those words. We can represent this visually using a simple graph.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Wed, 29 Jun 2011 02:19:48 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/06/vector-space-search-model-explained/</guid></item><item><title>New RPG in the works!</title><link>https://benovermyer.com/blog/2011/06/new-rpg-in-the-works/</link><description>&lt;p&gt;Generally I post on Saturdays, but for this I thought I’d make an exception. Sunday I sat down in a coffee shop called Latté Da in Vermillion, SD and wrote another RPG system. Took me a couple hours, and it hasn’t been playtested or even simulated yet.&lt;/p&gt;
&lt;p&gt;The premise is that each character has six attributes. Each Attribute is a die type, and any dice roll is comprised of three Attributes and (in the case of PCs and special NPCs) a Hero Die. The Hero Die functions like a normal die, unlike the Wild Die in Savage Worlds.&lt;/p&gt;
&lt;p&gt;There are no levels, classes, or skill trees. While the system is fantasy-based, it could be used for any genre with very little tweaking. Borrowing from a certain RPG from Atarashi Games, players can throw out Challenges for each other when they think someone’s having too easy a time of it, just as the GM can. That includes NPCs.&lt;/p&gt;
&lt;p&gt;The rules are about six pages long. You can download the prototype from here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ge.tt/9wBgyU5" rel="external"&gt;http://ge.tt/9wBgyU5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thoughts? Comments? Concerns?&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Tue, 28 Jun 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/06/new-rpg-in-the-works/</guid></item><item><title>Eiridia, My Fantasy Setting</title><link>https://benovermyer.com/blog/2011/06/eiridia-my-fantasy-setting/</link><description>&lt;div class="dress-image"&gt;
    &lt;img alt="The black-and-white lineart by Aaron Nakahara for Eiridia&amp;#x27;s cover, depicting a hero with a magic sword fighting a four-armed monster" src="https://benovermyer.com/blog/2011/06/eiridia-my-fantasy-setting/&amp;#x2F;&amp;#x2F;benovermyer.com&amp;#x2F;processed_images&amp;#x2F;eiridia-cover.ac8b2ee3f738580d.jpg" /&gt;
    
&lt;/div&gt;

&lt;p&gt;Just over eleven years ago, I began the setting that will see publication next year. It has evolved and gone through dozens of sweeping changes. The result is something that generates excitement when I talk about it with others, and that makes me really happy. There is no greater joy for a writer than to see his works enjoyed by others.&lt;/p&gt;
&lt;p&gt;My own reading enjoyment comes from a very epic slant. I like stories where the hero wins, but only by the narrowest of margins. I like stories where the entire world is at stake. I like stories where someone grows from simple origins into a legendary hero. These themes came through in Eiridia’s history.&lt;/p&gt;
&lt;p&gt;The system it’s built for owes equal parts of its style to original D&amp;amp;D, Diablo, World of Warcraft, and 4E. This mix works oddly well, considering the fervor with which some crowds denounce each of those games in turn. It helps that I enjoy all of them, I suppose. With &lt;a href="http://www.silvergryphongames.com/games/ingenium/" rel="external"&gt;Ingenium&lt;/a&gt;, I sought to create a game that didn’t get in the way of the epic stories I wove for my players. It was designed to be simple to learn and simple to play, but with enough complexities to interest the more tactical or creative players.&lt;/p&gt;
&lt;p&gt;Eiridia mixes a number of different real-world and fictional analogues together to form a cohesive whole. I took inspiration from Robert E. Howard’s Hyborea. Jur’gaan is a feudal land of warlords and dark magic. The Oriental influence is strongest there. Tantris is a desert populated by bandits. Arabia played the biggest part there. Nardora is a dystopia, its sprawling pristine cities ruled absolutely by a cult and its Queen. The Mongol Hordes provided the original inspiration for Nardora. Tandarus is a city-state populated almost entirely by the winged Tandari, making it a city of angels. Mercedes Lackey’s &lt;em&gt;&lt;a href="http://www.amazon.com/White-Gryphon-Mage-Wars/dp/0886776821/ref=sr_1_1?ie=UTF8&amp;amp;qid=1309006944&amp;amp;sr=8-1" rel="external"&gt;The White Gryphon&lt;/a&gt;&lt;/em&gt; inspired that race and their city. Rekellia is a weakened domain, a remnant of a once-great empire that spanned the entire continent. It was born of stories of Rome. Redami is a kingdom that, through the shortsighted malice of its populace, unwittingly created its own worst enemy. It had no one inspiration that influenced it most.&lt;/p&gt;
&lt;p&gt;The other continent in Eiridia, Khathana, was initially written for the stillborn fantasy setting for Æther, my business partner’s brainchild. Not wanting to see the concept wasted, he handed it over to me to see if it could be incorporated into Eiridia. Given the epic, sweeping nature of Khathana, it was a natural fit. I’m in the process of pulling together the histories now.&lt;/p&gt;
&lt;p&gt;I’m planning on shifting the focus of this blog to writing about Eiridia. If you like the new focus, let me know about it in the comments. If you hate the new focus, let me know, too. I’ll still continue with my plans, but it’s nice to know what the audience I’m writing for thinks.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 25 Jun 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/06/eiridia-my-fantasy-setting/</guid></item><item><title>Why Indian Government Sucks at Technology</title><link>https://captnemo.in/blog/2011/06/22/why-indian-government-sucks-at-technology/</link><description>&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: All opinions are mine alone. Please keep your opinions limited to comments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is in wake of the &lt;a href="http://www.voiceofgreyhat.com/2011/06/anonymous-withdrawn-op-india-untold.html" title="Aftermath of the attack"&gt;not-so-anonymous&lt;/a&gt; &lt;a href="http://www.thehackernews.com/2011/06/anonymous-india-opindia-strikes-again.html" title="News report of the actual event"&gt;attacks&lt;/a&gt; on the nic servers. Apparently a &lt;a href="http://pastebin.com/MHwHNTEi" title="Names of perpetrators of the hack"&gt;few people&lt;/a&gt; had decided to brand their own version of AnonymousIndia and hack into the nic servers. This had been viewed as almost normal in the Indian Media. This is after all something that happens every other day in India. Its just the Indian Army website, nothing that we care about.&lt;/p&gt;

&lt;p&gt;Even though there are excellent &lt;a href="http://jobs.nullcon.net/" title="Jobs in indian security sector"&gt;tech-security companies in India&lt;/a&gt;, we have never developed the right attitude to it. People still think that hacking is fun, and its something that could never happen to them. I’ve never seen people reading the fine print on the thousand social web sites they join now a days. Piracy is rampant in India without any checks and the Indian Government is silent.&lt;/p&gt;

&lt;p&gt;Why? Because we are used to it. It has always happened this way. Information leaks have been a major part of the Indian history and would remain so unless we realize that the more we embrace technology; the more we become dependent on it, it is coming one step closer to the edge.&lt;/p&gt;

&lt;p&gt;A recent tweet by &lt;a href="http://www.twitter.com/#!/divyekapoor/" title="@divyekapoor on twitter"&gt;@divyekapoor&lt;/a&gt; reminded me of the AADHAR project, which aims to give out a unique identification number to each Indian citizen.&lt;/p&gt;

&lt;!-- http://twitter.com/#!/divyekapoor/status/82123483202584576 --&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p dir="ltr" lang="en"&gt;Hacks like these ensure that I will resist giving my Biometrics to the UID project till they've suffered atleast 4 security breaches.&lt;/p&gt;&amp;mdash; Divye Kapoor (@divyekapoor) &lt;a href="https://twitter.com/divyekapoor/status/82123483202584576"&gt;June 18, 2011&lt;/a&gt;&lt;/blockquote&gt;


&lt;!-- end of tweet --&gt;

&lt;p&gt;I read out the &lt;a href="http://uidai.gov.in/" title="Official Website"&gt;UIDAI&lt;/a&gt; &lt;a href="http://uidai.gov.in/UID_PDF/Front_Page_Articles/MOU/MOUsSigned/MOU_Uttarakhand.pdf" title="UIDAI's 'MOU With the uttrakhand govt."&gt;docs&lt;/a&gt; and it tells us that it would  &lt;em&gt;“prescribe protocols to ensure the confidentiality, privacy and security  of data”&lt;/em&gt;, and &lt;em&gt;“follow the confidentiality, privacy and security  protocols prescribed by the UIDAI”&lt;/em&gt;. A search on the uidai.gov.in website gives out a little detail :&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The UID database will be guarded both physically and electronically by a few select individuals with high clearance. It will not be available even for many members of the UID staff and will be secured with the best encryption, and in a highly secure data vault. All access details will be properly logged.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the most that they have to say on the subject. If that makes you feel safe, remember the earlier fiasco involving the security of the &lt;a href="http://indiaevm.org/" title="Website of the security researchers detailing their study on tampering of EVMs"&gt;EVM machines&lt;/a&gt;. Ultimately I’m with the government on that one, however, since a user had to have physical access to actually do any harm to the machine. But &lt;em&gt;it was possible&lt;/em&gt; and Election Council kept denying it. As it happened, it seems that all our govt. agencies are probably trying more to hide their technical requirements, rather than make them open.&lt;/p&gt;

&lt;p&gt;So why is this approach taken in India? Beauracracy? probably yes. But I feel that unless the technocrats rise up and actually enter the Indian Govt. technical agencies (such as NIC), nothing would change. For instance I find that almost everything that Indian government does is tailored specifically for Windows. There is no reason to plaster &lt;a href="http://www.google.com/search?q=Internet%20Explorer%20site:gov.in%20-filetype:pdf" title="List of indian government websites with the words Internet Explorer"&gt;“Works best in Internet Explorer 6 at 1024x768”&lt;/a&gt; in all your web sites, we already know how much the &lt;a href="http://techrights.org/wiki/index.php/Microsoft_influence_in_the_Indian_government" title="Microsoft's Influence in the Indian Government"&gt;Indian&lt;/a&gt; &lt;a href="http://techrights.org/2010/01/22/india-patents-microsoft-lobby/" title="&amp;quot;) [loves Windows](http://ramdas.diqtech.com/blogs/2008/jun/16/how-microsoft-has-locked-the-indian-government/ &amp;quot;Microsft has locked the Indian Government"&gt;government&lt;/a&gt;. So much so that they get it pre-installed everywhere, even in government schools, and technical institutions.&lt;/p&gt;

&lt;p&gt;Yet there is a small faction that is working tirelessly in the other direction as well. For instance the &lt;a href="http://technorati.com/technology/gadgets/article/sakshat-a-35-tablet-to-be/" title="Technorati's report on the device with specs of the tablet"&gt;Sakshat project&lt;/a&gt; has been under the news recently as well. It would ship with a version of android (which one?) with wi-fi, bluetooth and other frills. However the project has been known for shadowing and changing its details at each conference it is unvealed, so beware. It may suddenly change from an android to a Windows phone in the next one. Or maybe a blade server (speaking of which, the &lt;a href="http://www.uidai.gov.in/index.php?option=com_content&amp;amp;view=article&amp;amp;id=177&amp;amp;Itemid=214" title="List of contracts awareded by UIDAI"&gt;uid project ordered 68 of them&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve worked a little bit on online Geo-Mapping tools earlier (mostly using Google Maps API). However, I wanted some accurate data for one of my projects (such as geographical boundaries). Other sources for this data are not as reliable, and I found the &lt;a href="http://bhuvan3.nrsc.gov.in/" title="Bhuvan is a Google Earth like mapping tool developed by ISRO"&gt;bhuvan online tool&lt;/a&gt; to be extremely accurate in this respect. If you’ve forgotten &lt;a href="http://bhuvan.nrsc.gov.in/bhuvan/" title="Official site"&gt;Bhuvan&lt;/a&gt;, its the Indian version of Google Maps. It was supposed to be &lt;strong&gt;the tool for mapping things&lt;/strong&gt;. Unfortunately, as things have planned out, most of its &lt;a href="http://ogleearth.com/2008/11/bhuvan-indias-upcoming-web-map-announced-misreported/" title="Bhuvan not what it was supposed to be"&gt;claims have been rubbished&lt;/a&gt; (like 10m resolution power), or made null due to the extremely slow servers it uses(and it was supposedly optimized for low bandwidths). If you’re plannig to fight google, you’ve to step up your game. Try checking out the horrible design of the Bhuvan website. Leaving aside its horrible interface, Windows only support (.net), installation of additional plugins to just run it, and , it had brilliant geographical data(collected via various government agencies). However as it turns out, this data is not public. Why? It seems that ISRO plans to &lt;a href="http://www.dnaindia.com/india/report_bhuvan-our-answer-to-google-earth-soon_1203871"&gt;sell this data&lt;/a&gt; to people interested in using it. Wow! So a public funded agency decides to make money from the development done using &lt;em&gt;our money&lt;/em&gt;. It’s been close to 3 years since its launch. And I’d be highly interested in knowing where it managed to sell this data.&lt;/p&gt;

&lt;p&gt;In all fairness, though they’ve said that they would only sell the high resolution data, while making the general data &lt;em&gt;freely available to users&lt;/em&gt;. But I don’t see fair unless its own my system, damn it. If by free you mean I’d have to open your website each time I need to find a village, it seems we have different thoughts about the word’s usage. Oh, and there’s a link on the website’s home page to a section called APIs which redirects to the Bhuvan Software download page, where guess what, there are no APIs at all. I managed to dig a few links and download two versions of their APIs, which seem to be downloaded copies of the documentation of the open layer javascript protocol they are using for mapping in the browser. So the data is available, it seems. But they’re forgetting to mention where.&lt;/p&gt;

&lt;p&gt;Seriously, people wake up. This is the 21st century, and the most hyped buzz word today is open-source(well, after cloud). And if you really want to work on things, make them open source. Not just the technology, but the data as well. Becauase open data is essential to growth and planning of a nation, as Hans Rosling keeps on reminding us. Meanwhile, DRDO decides to go ahead and &lt;a href="http://articles.economictimes.indiatimes.com/2010-10-10/news/28458329_1_saraswat-drdo-cyber-attacks"&gt;develop its own operating system&lt;/a&gt;. Why? Because it will be closed-source and will be much more secure than any of the variants of linux.  Or so they think.&lt;/p&gt;

&lt;p&gt;The Informatics center still runs thousands of its websites in ASP (not even ASP.net), and this fact alone is enough to scare me off. With major corporations suffering from data leakage (Sony, Gawker) where user access was compromised, it is high time that the Indian Govt. someone realizes that you cannot secure your systems by locking them in a vault. These companies did the same, and look at the result.&lt;/p&gt;

&lt;p&gt;Even the American Government has come up with an open-source initiative. Their website &lt;a href="http://www.data.gov"&gt;data.gov&lt;/a&gt; is a collection of applications, apis and raw data collected by various government agencies. And to top it all, the &lt;a href="http://www.govtech.com/e-government/White-House-Honors-Unsung-Open-Data-App-Developers.html"&gt;US government invited the top application developers&lt;/a&gt; from their platform at data.gov to the White House, hailing them as unsung heroes of the new age. If you’re interested in reading more and taking a stand for the open data democracy, take a look at &lt;a href="http://share-psi.eu/papers/TNO.pdf"&gt;this whitepaper&lt;/a&gt; by the Netherlands Organisation for Applied Scientific Research for a keen review of what are the major barriers to a government from sharing its data. Also go ahead and donate some money to wikileaks, while you’re at it.&lt;/p&gt;

&lt;p&gt;And where is the Indian government at this? Not &lt;em&gt;very&lt;/em&gt; far behind, but lagging nonetheless. Let us take the prime example of the decennial festival that is the Census. Apparently all census data is free (as it should be). But there is a minor caveat. The entire site is made in asp (which doesn’t really matter, I just don’t like it), and all the data (tables, figures, maps) are in pdf format. So, you can access the data personally, on a single page. Page by page, it might be thousands of documents, figures, charts, and what not. But since it is all in pdf format, it is locked down. You could parse it by some means, but the data is supposed to be free, in the best format possible so that everyone can use it easily. And the geographical boundary data(which I mentioned earlier) is also available in the census results, but only via a &lt;a href="http://www.censusindia.gov.in/maps/censusgis/Census_GIS/page/India_WhizMap/IndiaMap.htm" title="Developed by Whizmaps, Riddhi softwares"&gt;java applet&lt;/a&gt;, which does not allow access to the raw data, that an application developer would need. Am I expected to file an RTI application, just to know the &lt;em&gt;exact&lt;/em&gt; boundaries of my state. Or perhaps, I should just pay ISRO and be done with it.&lt;/p&gt;

&lt;p&gt;As an &lt;del&gt;additional benifit&lt;/del&gt; &lt;ins&gt;easter egg&lt;/ins&gt;, the census website &lt;a href="http://www.censusindia.gov.in/Footer_Menus/Disclaimer.html"&gt;states the following&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Census of India or any data or content providers shall not be liable for any errors in the content, or for any actions taken in reliance thereon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;All efforts have been made to ensure the accuracy and currency of the content on this website. However, users are requested to verify/check any information with us to obtain appropriate professional advice before acting on the information provided in the website. In no event will the Government or office of the Registrar General India be liable for any expense, loss or damage including, without limitation, indirect or consequential loss or damage, or any expense, loss or damage whatsoever arising from use, or loss of use, of data, arising out of or in connection with the use of this website.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And lastly, as an analogue to the excellent Right To Information Act, there must be an analogous Right To Technology act. It should empower each and every person in the country to know what is happening behind the scenes. We demand total transparency in technological decisions. Not just the passing of tenders, but the decisions which involve actual technological development. For. eg at the CDAC website, the government offers a trial version of various forensic tools they’ve developed. Why aren’t they open sourced? Why were they writen using a particular language? If RTI fought off the beauracracy, this could help us eliminate the old technocrat thinking from the India Govt. If we are able to get the right data, in the right format, thousands of application developers across the world are willing to create great ways to access that data. Data by itself is not enough, however. It must be met with an equal resolve from people to make it accesible, and usable.&lt;/p&gt;

&lt;p&gt;This could be a turning point in the Indian Govt. Either they could continue what they’ve been doing and meet their doom in a major state sponsored hack crippling the entire nation. Or they could take a step back, and do things the right way.&lt;/p&gt;

&lt;p&gt;And what is the right way?&lt;/p&gt;

&lt;p&gt;&lt;img alt="Peace, Love, Linux" src="/img/peace-love-linux.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt; :According to an article in the &lt;a href="http://economictimes.indiatimes.com/news/international-business/all-new-e-governance-projects-must-work-on-open-source-operating-systems-draft/articleshow/9119827.cms"&gt;Economic Times&lt;/a&gt;, there is a working draft for bringing Open-Source in e-governence systems under work.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Wed, 22 Jun 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/06/22/why-indian-government-sucks-at-technology/</guid></item><item><title>Setting Up Sparkleshare Server using Gitolite and Ubuntu</title><link>https://captnemo.in/blog/2011/06/20/ubuntu-gitolite-sparkleshare-install/</link><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Everybody seems to be all about open-source cloud-backup and sync solutions now-a-days. The hype is all around the cloud, they say. However cloud is just a stupid &lt;a href="http://everythingsysadmin.com/2011/06/avoid-using-the-term-cloud-com.html"&gt;concept for sales people&lt;/a&gt;, that I prefer to avoid. However people are coming up with all kinds of crazy ideas to create their own &lt;a href="http://fak3r.com/geek/howto-build-your-own-open-source-dropbox-clone/"&gt;dropbox&lt;/a&gt; &lt;a href="http://www.rubyinside.com/rubydrop-a-dropbox-clone-in-ruby-3968.html"&gt;clones&lt;/a&gt;. A few similar services include &lt;a href="https://spideroak.com/"&gt;SpiderOak&lt;/a&gt;, &lt;a href="https://one.ubuntu.com/"&gt;Ubuntu One&lt;/a&gt;, &lt;a href="https://www.sugarsync.com/"&gt;Sugar Sync&lt;/a&gt;, and &lt;a href="http://www.wuala.com/"&gt;Wuala&lt;/a&gt;. However, not all of them are compatible with Linux (unlike Dropbox, which is).&lt;/p&gt;

&lt;h2 id="comparision"&gt;Comparision&lt;/h2&gt;
&lt;p&gt;So here’s a minor comparision of some famous clients :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Dropbox&lt;/strong&gt; : Cuurent Leader, offers everything from sync, collaboration, sharing, public links, upgradable storage and is &lt;em&gt;the de-facto&lt;/em&gt; client for synchonization tasks. However there have been a few issues regarding its privacy issues recently.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Ubuntu One&lt;/strong&gt; : Ubuntu One is Ubuntu’s fighting offering to Dropbox. Its excellent, with an open source api, that allows one to create applications for the Ubuntu One platform very easily. However, the server-side of Ubuntu-One is still closed source, which means you cannot setup it on your own servers (similar to dropbox). Canonical has hinted that it might be made open source in the future.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Wuala&lt;/strong&gt; : is a file-backup network where you trade your own hard disk space for extra storage. This allows wuala to offer higher space at a much lower offering rate.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;SpiderOak&lt;/strong&gt; : I’m using this currently along with SparkleShare and Dropbox. It has proven to be very robust, allowing me to backup almost anything to its servers. I’ve got a 5GB account which is more than enough for me till now. Its very powerful interface allows one to control each and every aspect of your backup/sync/share process. Also it boasts of a true-privacy feature, meaning that all your documents are encrypted before being sent to dropbox. It also means that you can only reset your password from your own computer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Take a look at &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_file_synchronization_software"&gt;http://en.wikipedia.org/wiki/Comparison_of_file_synchronization_software&lt;/a&gt; for a better comparision of several other services as well.&lt;/p&gt;

&lt;h1 id="installing-sparkleshare-using-gitolite"&gt;Installing SparkleShare using gitolite&lt;/h1&gt;
&lt;p&gt;This is a simple tutorial on running your own sparkleshare server as a hosting server. Note, that this implementation should ideally be built as a separate module for sparkleshare-admin, which is still under works as of writing. Sparkleshare’s basic concept is to use git repositories as storage places. In case you don’t know what git is, I’d recommend &lt;a href="https://git.wiki.kernel.org/index.php/GitFaq"&gt;this guide&lt;/a&gt; for more details. In short it is an awesome revisioning system for use by anyone managing code(or content for that matter as well). It allows you to keep track of what is happening with your directory, and revert back to earlier versions (among &lt;strong&gt;several&lt;/strong&gt; other things).&lt;/p&gt;

&lt;p&gt;Sparkleshare asks you to setup a git-server somewhere and use it as a remote storage system. It offers out of the box support for git hosting providers &lt;a href="https://www.github.com"&gt;github&lt;/a&gt; and &lt;a href="http://gitorious.org/"&gt;gitorious&lt;/a&gt;. It also allows you to add your own custom servers as well. Enough description, lets get down to some work :&lt;/p&gt;

&lt;h3 id="setup-gitolite"&gt;Setup Gitolite&lt;/h3&gt;
&lt;h4 id="assumptions-"&gt;Assumptions :&lt;/h4&gt;
&lt;ol&gt;
  &lt;li&gt;You are running a stable Linux OS (Fedore/Debian/Ubuntu etc)&lt;/li&gt;
  &lt;li&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;user@host1&lt;/code&gt; is your own computer&lt;/li&gt;
  &lt;li&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;user2@host2&lt;/code&gt; is the primary computer where you intend to start the server&lt;/li&gt;
  &lt;li&gt;The gitolite username is &lt;code class="language-plaintext highlighter-rouge"&gt;sparkle&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;pre class="prettyprint lang-sh"&gt;
#On your host machine (which will be remote admin to the git share)
ssh-copy-id user2@host2:/tmp/user.tmp
#should not ask for password:
ssh user2@host2
sudo apt-get install gitolite 
sudo dpkg-reconfigure sparkleshare
#Configuration Options may vary, but remember the gitolite user name that you specified
logout #Come back to your own computer
git clone sparkle@host2:gitolite-admin 
#Should work, or else you did something wrong. Go read the [gitolite docs](http://sitaramc.github.com/gitolite/doc/)
cd gitolite-admin
nano conf/gitolite.conf
&lt;/pre&gt;

&lt;h3 id="setup-wildrepos"&gt;Setup WildRepos&lt;/h3&gt;
&lt;p&gt;Edit the file and add the following lines at the bottom :&lt;/p&gt;
&lt;pre class="prettyprint lang-pl"&gt;
repo	share/[a-z0-9]{6}
	C	=   @all
	RW+	=   CREATOR
&lt;/pre&gt;

&lt;p&gt;Now we need a method to allow anyone to create git repositories on the server. This is accomplished via Gitolite’s very powerful Wildcard Repositories feature.&lt;/p&gt;
&lt;pre class="prettyprint lang-sh"&gt;
#Login back to server
ssh user2@host2
#Since we are using package install method, sparkle's password needs to be set
sudo passwd sparkle
su - sparkle
nano .gitolite.rc
#search for $GL_WILDREPOS and set it to 1
logout
#Now we push our admin repo to add the wildrepo settings
#you're still inside the gitolite-admin directory, right
git push
&lt;/pre&gt;

&lt;h3 id="setup-client"&gt;Setup Client&lt;/h3&gt;
&lt;p&gt;Now, your server is all setup, but there is still stuff to be done :&lt;/p&gt;
&lt;pre class="prettyprint lang-sh"&gt;
#On user1@host1
mkdir -p ~/.ssh
sudo add-apt-repository ppa:warp10/sparkleshare
sudo apt-get update
sudo apt-get install sparkleshare libwebkit1.1-cil git-core
sparkleshare start &amp;amp;
sparkleshare stop
&lt;/pre&gt;
&lt;p&gt;When you run sparkleshare for the first time, it asks you for a few things, including your email-id. Fill in those details, but do not setup your repository yet. You need to first allow your sparkleshare account access to gitolite.&lt;/p&gt;

&lt;pre class="prettyprint lang-sh"&gt;
cd ~/.config/sparkleshare
ls #Should reveal files called sparkleshare.email.key and sparkleshare.email.key.pub
cp sparkleshare.email.key.pub /path/to/gitolite-admin/keydir/
cd /path/to/gitolite-admin/
git commit -am "Added sparkleshare client1"
git push
&lt;/pre&gt;

&lt;p&gt;Now if all goes well, you’d have allowed acess to gitolite for this user. We now need to re-run the sparkeshare setup again. Find it in your Applications. Now when it asks you to fill a repository path, type in the following details :&lt;/p&gt;

&lt;pre class="prettyprint lang-yaml"&gt;
Server: sparkle@host2
Path: /share/fh73ah
&lt;/pre&gt;

&lt;p&gt;Please take care of the slashes, otherwise sparkleshare fails to recognize it as a valid ssh address. Instead of fh73ah, you can type any alphanumeric string of 6 characters. You can change this in your gitolite-admin conf.&lt;/p&gt;

&lt;p&gt;After your first sync is complete (in which it tries to clone your existing repo, and gitolite creates it for you), you can find a folder called Sparkleshare in your home directory. This contains all your personal sparkleshares, including your first one. Put in any content inside the fh73ah and it would be automatically synchronized.&lt;/p&gt;

&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The best thing about sparkleshare is that you can use your own server under your own rules. I’ve synced 143GB via Sparkleshare so far, and it has been working excellent so far. It takes a complete history, takes care of moves (git) and allows you to keeo huge backups easily. Just drag and drop, and forget. If you want to sync already existing folders, just drag them , and alt+drop them inside the shared folder. This way a sym-link gets created, which refers to the original directory. The sparkleshare folder on my computer takes up hardly a few kbs, but syncs worth 150gb.&lt;/p&gt;

&lt;p&gt;This method is only useful if you need to manage multiple accounts on the same host. Otherwise, you can refer to this &lt;a href="http://www.webupd8.org/2011/03/set-up-sparkleshare-with-your-own.html"&gt;excellent post&lt;/a&gt; on webupd8 for instructions to install it to a single user system (which does not involve the complication of gitolite). I’ve been looking for some gitolite management scripts (I’ve written a few as well) which would allow one to easily add their own ssh keys. This way anyone can easily setup accounts on the system. However, as of now, this is just a dream.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Mon, 20 Jun 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/06/20/ubuntu-gitolite-sparkleshare-install/</guid></item><item><title>Two Systems, One Game</title><link>https://benovermyer.com/blog/2011/06/two-systems-one-game/</link><description>&lt;p&gt;Recently I read a post over on &lt;a href="http://shirosrpg.blogspot.com/2011/06/heresy-or-when-systems-collide.html" rel="external"&gt;the RPG Corner&lt;/a&gt; about using one system for the Dungeon Master and one separate one for the players. This sounded like a fascinating idea to me. Many of the commentators chimed in with good thoughts, like “how do you reconcile the appearance of disparate magic systems?” That last question makes the assumption that your game setting has distinct spells that players need to be able to recognize.&lt;/p&gt;
&lt;p&gt;What if the setting assumed magic could produce wondrous effects, and that its practitioners had mysterious powers that no one but them could understand?&lt;/p&gt;
&lt;p&gt;The discussion on the RPG Corner post, however, limited itself pretty drastically by sticking only to Dungeons &amp;amp; Dragons or derivatives thereof for its rules material. What if we brought other, completely different, systems into this mix? Say… &lt;a href="http://www.peginc.com/games.html" rel="external"&gt;Savage Worlds&lt;/a&gt;? Or &lt;a href="http://rpg.drivethrustuff.com/product_info.php?products_id=86469&amp;amp;filters=0_0_0_0&amp;amp;manufacturers_id=750" rel="external"&gt;Ingenium&lt;/a&gt;? Or even jump the setting gap altogether, and use &lt;a href="http://www.mutantsandmasterminds.com/" rel="external"&gt;Mutants &amp;amp; Masterminds&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;Before you start yelling about this not being in keeping with the Old School philosophy, allow me to explain. This is completely in keeping with the &lt;a href="http://www.escapistmagazine.com/articles/view/columns/days-of-high-adventure/6412-Full-Circle-A-History-of-the-Old-School-Revival" rel="external"&gt;Old School Revival&lt;/a&gt; – not because it adheres to rules sets with decades under their belts, but because it relies heavily on a distinctly OSR concept: that the purpose of the game is to explore the unknown, conquer danger, outwit enemies, and develop a story that keeps all of its players and the GM engaged. Newer games like 4E could be played like this, &lt;a href="http://slamdancr.com/wp/2011/01/what-is-fourthcore/" rel="external"&gt;and are&lt;/a&gt;, but for the most part they tend towards being tactical games rather than role-playing games.&lt;/p&gt;
&lt;p&gt;So here’s my proposal.&lt;/p&gt;
&lt;p&gt;At the start of a campaign, before the first session, let the players choose a rules set to play by. They can choose anything, as long as the GM is at least passingly familiar with it, and all of the players must adhere to it.&lt;/p&gt;
&lt;p&gt;The GM then chooses a system to use as the behind-the-scenes crunch. The players don’t need to be aware of the system.&lt;/p&gt;
&lt;p&gt;The part that you need to think about here is bridging the two in terms of common situations. The players need a solid turn order, and damage and ability usage need to be abstracted enough that they can be converted between the two systems on the fly. This is easier than it sounds, as long as you set this up beforehand. This is why the GM needs to be familiar with the players’ system.&lt;/p&gt;
&lt;p&gt;As an example, let’s say the players are using Savage Worlds and the GM is using &lt;a href="http://www.goblinoidgames.com/labyrinthlord.html" rel="external"&gt;Labyrinth Lord&lt;/a&gt;. Turn order in Savage Worlds is handled via poker cards as initiative, with Jokers being wild. To reconcile this with Labyrinth Lord, where initiative is determined via a roll, the GM might use 3d20 as his initiative roll instead of the usual. Granted, this changes the probability of the NPCs going first rather drastically in their favor, but no one ever said the game had to be fair – just fun, for everyone involved.&lt;/p&gt;
&lt;p&gt;Savage Worlds has a concept of “Edges” and “Hindrances” similar to other games’ Advantages and Disadvantages. Labyrinth Lord has no analogue to this. However, the vast majority of these are things that the players themselves have to work out, and this has no bearing on Labyrinth Lord. For example, one Edge is “Quick,” and lets the player redraw initiative cards until he has a 6 or higher.&lt;/p&gt;
&lt;p&gt;Combat is the toughest to bridge between Savage and LL. Savage Worlds uses wound levels and has exploding dice – that is, if you roll the highest number on a die, you get to roll it again and add the two together (potentially infinitely). However, there is a way to get the two systems to play nice together. NPCs still roll their usual damage dice, but set a specific amount of damage as equivalent to a Shake or Wound result that makes sense for the PCs’ power level. Status effects like poison or daze have equivalent rules in both systems that are relatively simple.&lt;/p&gt;
&lt;p&gt;Whenever the two systems you’re using collide in a way that seems unbridgeable, use whatever resolution is the most fun for everyone.&lt;/p&gt;
&lt;p&gt;So what do you think? If you’ve ever combined two systems in this way, how did it work out for you?&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 18 Jun 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/06/two-systems-one-game/</guid></item><item><title>New Website [ CaptNemo.in]</title><link>https://captnemo.in/blog/2011/06/13/new-website-captnemo-in/</link><description>Just if someone's still following this blog around(don't, its already dead).

&amp;nbsp;

I've moved over to my new website (&lt;a href="http://www.captnemo.in" target="_blank" title="CaptNemo.in"&gt;http://www.captnemo.in&lt;/a&gt;). Its running from github and will be a perfectly static website where the power of my awesome magical skills shall finally be revealed.

Just joking. Its hosted on the awesome servers of github and you might want to check it out..</description><author>Nemo's Home</author><pubDate>Mon, 13 Jun 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/06/13/new-website-captnemo-in/</guid></item><item><title>Once, in a forest beyond time…</title><link>https://benovermyer.com/blog/2011/06/once-in-a-forest-beyond-time/</link><description>&lt;p&gt;This mighty forest spreads for miles upon miles. Many hundreds of different kinds of trees grow here, from the pines of the west to the oaks of the deep forest. Though the furthest edges are occasionally visited by men, the vast majority remains unseen by human eyes. This is an ancient forest, one that has stood for countless millennia. The first ages of the world when gods walked the earth and men were but a whisper in the minds of their creators saw this forest come to being from a single tree. That tree, the Eversource, still stands in the heart of the forest. Its trunk is so wide that fifty men could not encircle it. It is so tall that its canopy dwarfs even the mighty ironoaks, whose branches reach a hundred heights of man into the air. No disease or infestation has ever dared to take hold in the Eversource, and through its power the trees around it have flourished and spread.&lt;/p&gt;
&lt;p&gt;The forest holds many wonders, and many horrors. There are beasts within that would shake the bravest hearts. Even the trees in some places have grown wild and angry, and do harm to any animal large enough to make its notice. The rains that come frequently nourish the beasts as well as the trees, and there are things in the deepest parts of the wood that have grown to sizes equal to the titanic ironoaks.&lt;/p&gt;
&lt;p&gt;What follows here are some inspirations your games can take from such a forest as this one. I present a handful of creatures, new materials, and adventure ideas to make your Saturday a little more entertaining. The creatures are presented using the Labyrinth Lord format.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Creatures&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fearwillow&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Stat&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;No.&lt;/td&gt;&lt;td&gt;1 (1d2)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Align&lt;/td&gt;&lt;td&gt;Chaotic&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Move&lt;/td&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;AC&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;HD&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Att&lt;/td&gt;&lt;td&gt;3 (branches)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Dmg&lt;/td&gt;&lt;td&gt;1d8/1d8/1d8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Save&lt;/td&gt;&lt;td&gt;F3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Morale&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Hoard&lt;/td&gt;&lt;td&gt;None&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;XP&lt;/td&gt;&lt;td&gt;320&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;These trees occur when the seed of a willow tree takes its sustenance and incubation from the corpse of a demon. They are the same size and shape as a regular willow tree, but their trunks, branches, and leaves are all white. Red spots run the length of the trunk. Whenever a living thing passes within a few yards of a fearwillow, the tree’s branches will shake and shiver as if in anticipation. If a living thing passes under the willow, then the wispy tree’s branches will caress it gently. Every touch of a fearwillow causes a sense of growing dread. If something spends too long in the grasp of the tree, the fearwillow will suddenly seize it and draw it towards the trunk, where an unholy maw will open. Unless the creature breaks free, the abomination will devour it whole, feeding on the terror it has been cultivating. It takes two full days for a fearwillow to consume its prey. When finished, the entire body will have been incorporated into the tree, and it will grow in size in proportion to the terror of the victim.&lt;/p&gt;
&lt;p&gt;The bark of a fearwillow can be dried, ground up, and steeped to make a tea. This tea grants the ability to sense fear and feed on it, letting the imbiber recover 1 HP per round spent in the immediate vicinity of something that is afraid. This ability lasts for one month for every pot of fearwillow tea consumed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hunter Beetle&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Stat&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;No.&lt;/td&gt;&lt;td&gt;1d4 (1d4)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Align&lt;/td&gt;&lt;td&gt;Neutral&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Move&lt;/td&gt;&lt;td&gt;120’ (40’)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;AC&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;HD&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Att&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Dmg&lt;/td&gt;&lt;td&gt;1d6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Save&lt;/td&gt;&lt;td&gt;F2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Morale&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Hoard&lt;/td&gt;&lt;td&gt;None&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;XP&lt;/td&gt;&lt;td&gt;80&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;These insects grow to be a hand’s length in size at adulthood and live in dark parts of the wood that have little light beneath the canopy. It has three horns coming from its head and is a ghostly grey in color. When it flies, its wings create a buzzing tone that sounds like the hum of a gargantuan tuning fork. Its preferred method of attack is to eject a stream of foul-smelling liquid onto its prey. This bile has a paralyzing effect, causing total paralysis within 8 rounds. The hunter beetle is content to wait for its prey to stop moving before it advances and begins to feed. It will attack anything up to an elephant in size, as anything bigger than that is unaffected by the bile. Creatures the size of a squirrel or smaller are generally ignored.&lt;/p&gt;
&lt;p&gt;A hunter beetle’s bile can be harvested from its body after it dies and retains its potency for a full year. Only an ounce is necessary to paralyze a man. The paralysis wears off after an hour.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adventure Ideas&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Long-dead civilizations are not the only source of treasure to be found in this world. Clever and knowledgeable adventurers can discover many things within the depths of an ancient forest. Here I present some single-line adventure ideas to get your mind working.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An alchemist hires the party to retrieve an ingredient that can only be found in the heart of the forest.&lt;/li&gt;
&lt;li&gt;One of the party is attacked by a poisonous creature of the forest, and they must find the antidote before it’s too late.&lt;/li&gt;
&lt;li&gt;The party finds an old hermit in the forest who offers to teach them a strange new spell if they assist him in finding his “daughter.”&lt;/li&gt;
&lt;li&gt;A talking tree asks the party for help against a company of orcs that are felling trees to make a war camp.&lt;/li&gt;
&lt;li&gt;A royal chef is tasked with preparing a delicacy for a tyrant, and needs the party’s help in order to procure the ingredients.&lt;/li&gt;
&lt;/ul&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 11 Jun 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/06/once-in-a-forest-beyond-time/</guid></item><item><title>Grep Match a Tab</title><link>https://boyter.org/2011/06/grep-match-a-tab/</link><description>&lt;p&gt;Ever wanted to match a tab while using grep for some reason? The trick (under bash anyway) is to Ctrl+V and then press the tab key so you get whatever you are looking for.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat file_to_grep.txt | grep &amp;quot;^log    &amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I was trying to match a file for the exact match of log and then a tab. Without the tab I ended up getting back a bunch of junk results like &amp;ldquo;logger&amp;rdquo; &amp;ldquo;logging&amp;rdquo; &amp;ldquo;login&amp;rdquo; etc…&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Wed, 08 Jun 2011 02:19:24 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/06/grep-match-a-tab/</guid></item><item><title>Clojure 1.3 Now Avaliable</title><link>https://boyter.org/2011/06/clojure-13-now-avaliable/</link><description>&lt;p&gt;Added Clojure 1.3 documentation today. The Clojure language itself is pretty tight, but its nice to have something to browse through when looking for some elusive method.&lt;/p&gt;
&lt;p&gt;You can view it by searching for &lt;a href="http://searchco.de/?q=clojure"&gt;clojure&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One thing I have discovered while doing this is that if I have a slight amount of familiarity with the language it really makes parsing it easier. This stands to reason as I can pick up errors more easily, but somewhat surprising. Another thought is that I think there should be a standard for programming language documentation. Every language has its own which means each one needs a specialised parser.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 07 Jun 2011 02:19:04 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/06/clojure-13-now-avaliable/</guid></item><item><title>A Craftsman’s Magic</title><link>https://benovermyer.com/blog/2011/06/a-craftsmans-magic/</link><description>&lt;p&gt;Not all magical items are weapons or armor. The list below is of a few items that might prove useful to a clever adventurer. Some may make excellent flavor items for particularly interesting NPCs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Forgemaster’s Hammer&lt;/strong&gt; – This hammer is ensorcelled by an ancient dwarven forgemaster. Its weighty iron head is engraved with seven runes of power, and its hilt is wrapped in dragonhide leather carved from the corpse of an adult red dragon. Generally such hammers are not sold or traded. A forgemaster will pass this hammer down to his first-born son when he dies or becomes too old to smith any longer. The hammer grants the wielder the ability to shape any metal as if it were the most malleable copper. If used as a weapon against a foe in nonmagical metal armor, any successful hit will permanently reduce (or increase, if using descending AC) the AC of that armor by 1. If this penalty would negate the armor’s AC bonus, the armor is destroyed. The hammer’s true purpose, though, is in the forging of masterworks of metalcraft. Legendary swords have been forged with this hammer, and its value for historical reasons may outweigh its value as a magical item.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Saw of Severing&lt;/strong&gt; – One of many like it, this hand saw was enchanted to allow it to cut through anything without dulling. It has two magical properties; one, it can cut through any nonmagical solid inanimate material at a rate of 1 foot in thickness every round. Two, the blade of this saw will never dull.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Box of Endless Nails&lt;/strong&gt; – This box is invaluable to any carpenter. It appears as a simple oak box one foot long, one foot wide, and six inches deep. A latch made of iron holds the box shut. On the underside of the box is a symbol of three crossed hammers burnt into one corner. If a person opens the box, he will find a dozen nails of the exact size, thickness, and material that he needs for the job at hand. No matter how many he removes from the box, if he closes and latches the box, then opens it again, there will be twelve new nails exactly as before.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spade of Well-Digging&lt;/strong&gt; – This small iron spade has a mahogany handle. Carved into the handle is a shallow impression of a farmer digging a well. If a person spends five rounds digging a hole with this spade, the hole will expand to a circle four feet in diameter and ten feet deep. The hole will instantly fill with clean, drinkable water. If the ground that the hole was initially dug in is not large enough to accommodate the well (say, if the wielder was digging on the lip of a cliff), the hole will enlarge but it will not fill with water. After one day, the well vanishes, leaving the terrain as it was before the ground was disturbed by the spade.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Sat, 04 Jun 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/06/a-craftsmans-magic/</guid></item><item><title>Link Love</title><link>https://boyter.org/2011/06/link-love/</link><description>&lt;p&gt;With the fall from grace of the TWiT podcast (less Dvorak and no Calacanis makes for boring shows) I went looking for new podcast&amp;rsquo;s to keep me entertained over the last couple of months. Here are a few that I highly recommend.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://techzinglive.com/"&gt;Tech Podcast TechZing Live&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The boys from tech-zing are full of energy, always come up with new stuff and usually manage to do one thing technical each show that makes me want to scream with frustration. All in all good stuff. They also interviewed both Calacanis and Dvorak which were probably 2 of the better shows they did.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 02 Jun 2011 02:18:41 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/06/link-love/</guid></item><item><title>IIT-JEE 2011 Results</title><link>https://captnemo.in/blog/2011/06/01/iit-jee/</link><description>&lt;p&gt;I worked out the entire IIT-JEE 2011 results and the end result is available &lt;a href="/projects/iitjee"&gt;here&lt;/a&gt;. I’ve intentionally removed the Application Form Number (partially) in the results, so that it may not be misused. I’m thinking of trying a full-scale birthday permutation attempt on the JEE site for the Application Form. What do you think? Will it be worth it?&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Wed, 01 Jun 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/06/01/iit-jee/</guid></item><item><title>Nginx HttpCoreModule Documentation</title><link>https://boyter.org/2011/05/nginx-httpcoremodule-documentation/</link><description>&lt;p&gt;Added the Nginx HttpCoreModule Documentation to the index. Hopefully helps someone out there!&lt;/p&gt;
&lt;p&gt;You can view it here &lt;a href="http://searchco.de/?q=nginxcoremodule"&gt;Nginx HttpCoreModule Documentation&lt;/a&gt;&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Sat, 21 May 2011 02:18:17 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/05/nginx-httpcoremodule-documentation/</guid></item><item><title>Environment Structure for Django Apps</title><link>/2011/05/16/Environment-Structure-for-Django-Apps/</link><description>&lt;p&gt;I&amp;rsquo;ve been writing applications off and on for nearly 4 years now, since before Django 1.0 was even released. I must say the framework could not be better described than by its own tagline &amp;ldquo;The Web framework for perfectionists with deadlines&amp;rdquo;. Among the things I love about it are:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;However, after using the framework for nearly 4 years I&amp;rsquo;m just now discovering my preferred way of managing environments. I know there&amp;rsquo;s still a bit of back and forth on development environment/IDE, but as far as configuring actual project environment I&amp;rsquo;ve become very comfortable with what I&amp;rsquo;ve now been using for many months. It also allows for someone else bootstrapping their environment incredible quickly as well. Below is a quick cookbook of how to do this on OSX and Ubuntu.&lt;/p&gt;
&lt;!-- raw HTML omitted --&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;$ sudo port install python27
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ sudo port install py27-virtualenv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ sudo port install postgresql90
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now for setting up your 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;$ mkdir example
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ cd example
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ virtualenv-2.7 --no-site-packages .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ source bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- raw HTML omitted --&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;$ sudo brew install python
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ sudo brew install virtualenv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ sudo brew install postgresql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now for setting up your 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;$ mkdir example
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ cd example
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ virtualenv --no-site-packages .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ source bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- raw HTML omitted --&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;$ sudo aptitude install python
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;sudo aptitude install virtualenv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;sudo aptitude install postgresql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now for setting up your 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;$ mkdir example
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ cd example
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ virtualenv --no-site-packages .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;$ source bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For those of you not familiar virtualenv is a self-contained python environment. It holds its own copy of python and any libraries you install. Now that you&amp;rsquo;ve setup your virtualenv we can go through the process of installing django and setting up your repository. This is the same across all of the above platforms:&lt;/p&gt;
&lt;p&gt;Add to a .gitignore file:&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;bin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;build
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;include
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;lib
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;.Python
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;*.pyc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add to a requirements.txt file:&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;Django&lt;span style="color: #f92672;"&gt;==&lt;/span&gt;1.3.1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;psycopg2&lt;span style="color: #f92672;"&gt;==&lt;/span&gt;2.4.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then run:&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;$ bin/pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This should fully installed any of your required apps and makes it easy for others to do the same to begin contributing to a larger app. Finally if you like you can create your git repo from this an make your first commit:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ git init
$ git add .
$ git commit -m 'my first django virtualenv'
&lt;/code&gt;&lt;/pre&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 17 May 2011 06:55:56 GMT</pubDate><guid isPermaLink="true">/2011/05/16/Environment-Structure-for-Django-Apps/</guid></item><item><title>Learning Python, PyGTK</title><link>https://captnemo.in/blog/2011/05/16/learning-python/</link><description>&lt;p&gt;I had been meaning to learn either Python or Ruby for a long time but had been unable to decide. I had a basic understanding of both of these, but I never had the chance to build an entire application in either. And I’m not talking about using &lt;a href="http://djangoproject.com" title="Django is a web framework for Python"&gt;Django&lt;/a&gt; or &lt;a href="http://rubyonrails.org" title="Ruby on Rails is a web framework for Ruby"&gt;Ruby on Rails&lt;/a&gt; (which are both brilliant), but building a desktop application using GTK.
The application I was first aiming for was a P2P sharing client which would be completely decentralized and offer several special features, such as :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;NAT Transversal using &lt;a href="http://en.wikipedia.org/wiki/UDP_hole_punching"&gt;UDP Hole Punching&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;HTTP based file sharing as well (so that people can install their clients, and &lt;strong&gt;still use&lt;/strong&gt; IDM for downloading stuff)&lt;/li&gt;
  &lt;li&gt;Client discovery &amp;amp; routing behind firewalls along the lines of Skype (&lt;a href="http://www.h-online.com/security/features/How-Skype-Co-get-round-firewalls-747197.html"&gt;using supernodes&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However my dreams were shattered by the first point itself, being the difficulty of NAT Transversals. Further ahead was the question of networking as well, which could have potentially driven me nuts. I worked a bit on it, using &lt;a href="http://en.wikipedia.org/wiki/STUN" title="Stun is a NAT transversal server"&gt;STUN&lt;/a&gt;, &lt;a href="http://twistedmatrix.com" title="Twisted is a networking framework for Python"&gt;twisted&lt;/a&gt;, but gave up on it soon as being unfeasable as a learning project.&lt;/p&gt;

&lt;p&gt;The next idea came to me when I got tired of downloading stuff using &lt;a href="http://axel.alioth.debian.org/" title="Axel is a multithreaded download binary"&gt;axel&lt;/a&gt; from the command line and started itching for something similar to &lt;a href="http://internetdownloadmanager.com"&gt;Internet Download Manger&lt;/a&gt; for Ubuntu. The closest thing to a download manager on Ubuntu is &lt;a href="http://fatrat.dolezel.info/"&gt;FatRat&lt;/a&gt; and is something I really don’t like. It is based on Qt and prouds on working as a front-end for several file-sharing websites as well. What I needed was in fact a fast download manager, which keeps tracks of what I download, and does not require keeping a terminal open all the time.&lt;/p&gt;

&lt;p&gt;I found &lt;a href="http://projects.gnome.org/gwget/"&gt;GwGet&lt;/a&gt;, which occassionaly looks much better in the source version than in the one from the Ubuntu Repositories. I really liked this one, except for the fact that it was made using C++, and used single threaded downloads (like wget). As a result it was quite slow, and not upto my needs.&lt;/p&gt;

&lt;p&gt;That was when I thought of the idea of creating a download manger using [GTK][gtk] + Python/Ruby. I looked around for axel ports in Python/Ruby and found &lt;a href="http://code.google.com/p/pyaxel/" title="Axel port to python"&gt;PyAxel&lt;/a&gt;, which beat axel in some of my benchmarks (after &lt;a href="http://code.google.com/p/pyaxel/issues/detail?id=4" title="My patch for optimizing PyAxel's chunk size"&gt;this patch&lt;/a&gt;). For the past two days, I have been working on PyGTK, Glade, Anjuta and several other IDEs, none of them to my liking. I really prefer Vim :)&lt;/p&gt;

&lt;p&gt;So far, the work on &lt;a href="https://github.com/captn3m0/pget" title="PGet home page on Github"&gt;PGet&lt;/a&gt; has been minimal. I’ve worked out threading, and little parts of GUI which were stripped from GwGet. As of now, it is still under works, but I am hoping for a release real soon. After all, it is not for nothing that they call Python a dynamic langugae&lt;/p&gt;

&lt;p&gt;For more details, please go the &lt;a href="https://github.com/captn3m0/pget" title="PGet home page on Github"&gt;PGet&lt;/a&gt; project page on Github. I will be posting further updates over there.
In case someone is following this blog, you can view the source for this website at &lt;a href="https://github.com/captn3m0/captn3m0.github.com" title="This website on GitHub"&gt;github&lt;/a&gt; and maybe even fork it!&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Mon, 16 May 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/05/16/learning-python/</guid></item><item><title>Puzzles, Life &amp;amp; Other Things</title><link>https://captnemo.in/blog/2011/04/30/puzzles/</link><description>&lt;p&gt;Since I’ve already decided to make this my newer blog, why not just continue in the same spirit and write a little of the events of my highly boring, lazy life. For one, I was part of the SDSLabs 1st yearly trip to Robber’s Caves which was highly enthralling. We enjoyed a lot, and as a bonus I learned to play Mafia. Somehow the concept of not-knowing and yet trying to deduce out a solution in Mafia seems quite interesting for a Party game to me. Among other things, my sister got me a new Rubik Cube (which should be my 6th or 7th I guess), and I’ve been practising quite a lot (to the dismay of my friends and teachers), My timings have not been upto the mark as they were last year, but I’ve been improving and I average around 80 seconds per solve. I’ve been focusing on learning the entire Fridrich, and try to learn 2-3 moves per day.&lt;/p&gt;

&lt;p&gt;I also spent some time reading a brilliant new fantasy series called “The Kingkiller Chronicles” by Patrick Rothfuss. It is a brilliant new debut series in fantasy fiction, and already has 2 books out from its planned trilogy : The name of the Wind, and The Wise Man’s Fear. The series is highly praised, and you were to believe me, one of the best pieces of Fantasy ever written. But it is not the fantasy about this book that makes it so great. Its the general themes of love, tragedy, enemity, and knowledge that make it brilliant. Kvothe, the protagonist of the series is a charming character who is telling the story of his life to the Chronicler. Enough on the book, just go ahead and read it!&lt;/p&gt;

&lt;p&gt;Oh, and I’ve got a RSS feed for blog using Jekyll already. Its available [here] (/atom.xml)&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Sat, 30 Apr 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/04/30/puzzles/</guid></item><item><title>Game Of Thrones</title><link>https://captnemo.in/blog/2011/04/19/game-of-thrones/</link><description>&lt;p&gt;For the uninitiated, Game Of Thrones is a high budget fantasy TV series currently being screened on HBO. It is based on George R.R Martin’s epic fantasy, A Song Of Fire &amp;amp; Ice, book one of the Game Of Thrones series. 
I had started reading the book a few weeks ago (not knowing then about the TV series), but never quite got the time. However after the highly promoted Trailer, and the absolutely brilliant episode 1, I’ve picked up the book once again.&lt;/p&gt;

&lt;p&gt;I’ve decided to keep myself aloof from all the spoilers, and read the book along with the series. This means that I will be finishing the book in a very long time, but also that I will be able to get a much better insight into what is going on the series. For eg there are very many characters in the TV series, which are not yet introduced, and it was interesting to see them come upfront in the book.&lt;/p&gt;

&lt;p&gt;Is anyone else reading the book for the first time along with the TV series ?&lt;/p&gt;

&lt;p&gt;Below is the ground from the book that each episode contains. I will continue to update this as the series goes ahead :&lt;/p&gt;

&lt;p&gt;Episode :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Chapters 1-8&lt;/li&gt;
  &lt;li&gt;Chapters 9-17&lt;/li&gt;
  &lt;li&gt;Chapters 18-24*&lt;/li&gt;
  &lt;li&gt;Chapters 25-29&lt;/li&gt;
  &lt;li&gt;Chapters 30-35&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;* Only half of the chapter is present in the respective episode.&lt;/p&gt;

&lt;p&gt;Let me know what you think of Game Of Thrones in the comments…&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Tue, 19 Apr 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/04/19/game-of-thrones/</guid></item><item><title>jQuery Hello World Plugin</title><link>https://boyter.org/2011/04/jquery-hello-world-plugin/</link><description>&lt;p&gt;I was doing a simple job test the other day and one of the questions involved creating a simple jQuery plugin. Having never created one myself I had to look into how to do it. I couldn&amp;rsquo;t find a dead simple hello world plugin example so I thought I would create a simple example here for people to look at.&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: #66d9ef;"&gt;function&lt;/span&gt;( &lt;span style="color: #a6e22e;"&gt;$&lt;/span&gt; ){
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;  &lt;span style="color: #a6e22e;"&gt;$&lt;/span&gt;.&lt;span style="color: #a6e22e;"&gt;fn&lt;/span&gt;.&lt;span style="color: #a6e22e;"&gt;HelloWorld&lt;/span&gt; &lt;span style="color: #f92672;"&gt;=&lt;/span&gt; &lt;span style="color: #66d9ef;"&gt;function&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;    &lt;span style="color: #a6e22e;"&gt;$&lt;/span&gt;(&lt;span style="color: #66d9ef;"&gt;this&lt;/span&gt;).&lt;span style="color: #a6e22e;"&gt;html&lt;/span&gt;(&lt;span style="color: #e6db74;"&gt;'Hello World!'&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: #a6e22e;"&gt;jQuery&lt;/span&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The above essentially just attaches a new function called HelloWorld to the basic jQuery object. You can then call it using the below,&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Sat, 16 Apr 2011 02:17:36 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/04/jquery-hello-world-plugin/</guid></item><item><title>Convert MPO to Anaglyph or Stereo Images</title><link>https://donatstudios.com/MPO-to-JPEG-Stereo</link><description>&lt;fieldset style="float: left; width: 300px; margin-bottom: 22px; margin-right: 22px;"&gt;&lt;legend&gt;Convert MPO to JPEG&lt;/legend&gt;
	 
&lt;/fieldset&gt;

&lt;p style="clear: right;"&gt;
This tool converts MPO files from devices like the Nintendo 3DS, Fujifilm FinePix Real 3D, or other 3D cameras that support MPO files, into more usable images. It's useful for viewing and sharing 3D photos in a more commonly used format.
&lt;/p&gt;

&lt;p style="clear: right;"&gt;
Unlike many other online tools that simply strip one of the eyes from the result, presenting you with a single image, this tool incorporates both the left and right photos, preserving the depth and detail of the original 3D images.
&lt;/p&gt;

&lt;p style="clear: right;"&gt;
Additionally, it can convert MPO files into an anaglyph format, allowing the images to be viewed with standard bi-color 3D glasses.
&lt;/p&gt;

&lt;fieldset style="margin-bottom: 22px; clear: both;"&gt;&lt;legend&gt;Gallery&lt;/legend&gt;

&lt;/fieldset&gt;</description><author>Donat Studios</author><pubDate>Thu, 14 Apr 2011 07:41:33 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/MPO-to-JPEG-Stereo</guid></item><item><title>jQuery Documention Now Avaliable</title><link>https://boyter.org/2011/04/jquery-documention-now-avaliable/</link><description>&lt;p&gt;It has been a long time coming, but jQuery is now in the index and can be searched on.&lt;/p&gt;
&lt;p&gt;You can by searching for &lt;!-- raw HTML omitted --&gt;jquery&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT&lt;/strong&gt; And a list of all functions to go with it, &lt;!-- raw HTML omitted --&gt;List of all jQuery Functions&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 14 Apr 2011 02:16:56 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/04/jquery-documention-now-avaliable/</guid></item><item><title>Introduction</title><link>https://captnemo.in/blog/2011/04/10/introduction/</link><description>&lt;p&gt;Welcome to my github pages. This will be my personal code blog site, or something of that sort. I will soon be transitioning this site to Jekyll for easier publishing and maybe move away from wordpress. (Done)&lt;/p&gt;

&lt;p&gt;I am a proficient coder in PHP, working on various internal projects at SDSLabs.&lt;/p&gt;

&lt;p&gt;Here is my current setup :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Dell Inspiron 1545&lt;/li&gt;
  &lt;li&gt;T-6400 Intel Core 2 Duo&lt;/li&gt;
  &lt;li&gt;Ubuntu Oneric Ocelot 11.10 (Default Primary OS)&lt;/li&gt;
  &lt;li&gt;&lt;del&gt;&lt;a href="http://elementaryos.org"&gt;Elementary OS&lt;/a&gt; (Under Testing)&lt;/del&gt; Will be moving to Gnome Shell soon&lt;/li&gt;
  &lt;li&gt;&lt;del&gt;&lt;a href="http://samurai.inguardians.org"&gt;Samurai WTF&lt;/a&gt;, &lt;a href="http://backtrack-linux.org"&gt;Backtrack 5&lt;/a&gt;&lt;/del&gt; for pen-tests&lt;/li&gt;
  &lt;li&gt;Moved from Windows after remaining a staunch supporter for 5 years&lt;/li&gt;
&lt;/ul&gt;</description><author>Nemo's Home</author><pubDate>Sun, 10 Apr 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/04/10/introduction/</guid></item><item><title>Simple WPF VB.Net JumpList Example</title><link>https://donatstudios.com/WPF-VBNet-JumpList-Example</link><description>&lt;p&gt;Today I decided to spruce up a VB.Net application I wrote in
	college and still use almost daily. In the process of converting it
	from .Net 2 to .Net 4 I wanted to add a splash of Windows 7 goodness; there were some
	very simple operations I wanted to add to JumpLists.  The problem I ran into with all the examples I
	could find is that they either called entirely different applications (the Microsoft
	examples all called &lt;i&gt;Notepad&lt;/i&gt;) or
	the example was in C#.  The
	application is in VB.Net and I intend to keep it that way, as it is my .Net
	language of choice.&lt;/p&gt;
&lt;p&gt;The interesting problem with JumpLists is they are just
	shortcuts.  They call an executable with
	the specified arguments. Microsoft’s reasoning for this is that they are still
	available while the program is no longer running. The initial &lt;i&gt;execution&lt;/i&gt; of an application placed in
	the taskbar registers the JumpLists, after which point they are cached by the
	system and continue to be available even when the application is no longer
	running. This potentially limits the usefulness of JumpLists as they do start a
	new instance of your application.  If
	anyone knows how to catch the arguments on a single instance application, I
	would be &lt;i&gt;very&lt;/i&gt; interested to hear
	it.  The best I’ve come up with is simply
	passing messages to my current instance from a new instance and then
	terminating the second instance, but this is awkward to my eye.&lt;/p&gt;
&lt;p&gt;XAML can be used to create JumpLists in the Application.xaml
	file, which many other examples will demonstrate – but the issue here is there
	is no way to get the path to the current executable via XAML, so you can only
	call &lt;i&gt;other&lt;/i&gt; executables whom you know
	the full path to.&lt;/p&gt;
&lt;p&gt;The answer then is to create our JumpLists dynamically.  The best place to do this is in your
	Application.xaml.vb file.  The New method
	will be used to instantiate and register the JumpLists, whereas the Startup
	event will be used to handle arguments passed to the new instance of our
	application.&lt;/p&gt;
&lt;p&gt;Below is a very simple example of JumpLists not too far off from what I ended up going with in my own application.  Feel free to leave me comments as to any improvements or changes you would make, or go ahead and fork the gist.&lt;/p&gt;</description><author>Donat Studios</author><pubDate>Thu, 07 Apr 2011 13:00:31 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/WPF-VBNet-JumpList-Example</guid></item><item><title>How to run apt-add-repository behind firewalls (#iitr)</title><link>https://captnemo.in/blog/2011/04/01/run-apt-add-repo-behind-firewall/</link><description>&lt;p&gt;Copied from &lt;a href="http://www.omgubuntu.co.uk/2011/01/how-to-add-repositories-to-ubuntu-from-behind-a-firewall/"&gt;OMGUbuntu&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Press Alt-F2 and type “gksu gedit /usr/lib/python2.6/dist-packages/softwareproperties/ppa.py”&lt;/li&gt;
  &lt;li&gt;Find line 88, change “keyserver.ubuntu.com” to “hkp://keyserver.ubuntu.com:80”&lt;/li&gt;
  &lt;li&gt;Save and close&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note that this is the default setting in Ubuntu Natty Narwhal (11.04), and was only applicable for Maverick or older versions.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Fri, 01 Apr 2011 03:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/04/01/run-apt-add-repo-behind-firewall/</guid></item><item><title>How I store Enumerations in the Database</title><link>https://boyter.org/2011/03/store-enumerations-database/</link><description>&lt;p&gt;One of the things I come across in databases now and then is a collection of single tables with a name like &amp;ldquo;MessageType&amp;rdquo;. You have a look in them and it turns out to have 6 or so rows with no foreign key relationships. Every single time it turns out to be someone had the idea to store an Enumeration (Enum) type in the database. Not a bad idea as it turns out since you can add sort options, soft deletes and the like, but the implementation of a single table for each one is flawed.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 31 Mar 2011 02:16:26 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/03/store-enumerations-database/</guid></item><item><title>PHP User Agent Parser</title><link>https://donatstudios.com/PHP-Parser-HTTP_USER_AGENT</link><description>&lt;fieldset&gt;&lt;legend&gt;Demo&lt;/legend&gt;

&lt;/fieldset&gt;
&lt;p&gt;&lt;br clear="all" /&gt;&lt;/p&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;PHP &amp;gt;= 5.4.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Download&lt;/h2&gt;
&lt;p&gt;The script is available over on &lt;a href="https://github.com/donatj/PhpUserAgent"&gt;GitHub&lt;/a&gt; or via Composer:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-console"&gt;$ composer require 'donatj/phpuseragentparser'&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;p&gt;The original procedural use is as simple as:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-php"&gt;&amp;lt;?php

// v0 style global function - @deprecated
$uaInfo = parse_user_agent();
// or
// modern namespaced function
$uaInfo = donatj\UserAgent\parse_user_agent();

echo $uaInfo[donatj\UserAgent\PLATFORM] . PHP_EOL;
echo $uaInfo[donatj\UserAgent\BROWSER] . PHP_EOL;
echo $uaInfo[donatj\UserAgent\BROWSER_VERSION] . PHP_EOL;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The new object oriented wrapper form:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-php"&gt;&amp;lt;?php

use donatj\UserAgent\UserAgentParser;

$parser = new UserAgentParser();

// object-oriented call
$ua = $parser-&amp;gt;parse();
// or
// command style invocation
$ua = $parser();

echo $ua-&amp;gt;platform() . PHP_EOL;
echo $ua-&amp;gt;browser() . PHP_EOL;
echo $ua-&amp;gt;browserVersion() . PHP_EOL;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Currently Detected Platforms&lt;/h2&gt;
&lt;p&gt;see: &lt;a href="https://github.com/donatj/PhpUserAgent#currently-detected-platforms"&gt;List of Detected Browsers&lt;/a&gt;&lt;/p&gt;</description><author>Donat Studios</author><pubDate>Wed, 30 Mar 2011 06:51:09 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/PHP-Parser-HTTP_USER_AGENT</guid></item><item><title>Lesson Learnt – Save Assets</title><link>https://boyter.org/2011/03/lesson-learnt-save-assets/</link><description>&lt;p&gt;I really should learn from my past mistakes, and usually I do, but this one comes to bite me again and again. I never save assets.&lt;/p&gt;
&lt;p&gt;This results in me having to find fonts, recreate images and the like over and over. If you do a hard refresh of this page (CTRL+F5) you will notice the logo looks a little different. This is because I couldn&amp;rsquo;t find the font I used before and had to find something similar.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 29 Mar 2011 02:15:49 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/03/lesson-learnt-save-assets/</guid></item><item><title>Coming in April–WGR 2!</title><link>https://benovermyer.com/blog/2011/03/coming-in-april-wgr-2/</link><description>&lt;p&gt;The next version of WoW Guild Retrieve is coming, and this will be a doozy of an update.&lt;/p&gt;
&lt;p&gt;Slated for an &lt;strong&gt;April 30th release&lt;/strong&gt;, WGR 2 brings a host of new features.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Caching&lt;/strong&gt; – The plugin will only retrieve data from the Armory every 4/12/24 hours, depending on what you set the frequency to. This means high traffic sites will no longer experience temporary blacklisting.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;New data source&lt;/strong&gt; – Instead of pulling from the old XML service, v2.0 will parse the new Armory. This means new information will be available for display, including (but not limited to) Achievement Points.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;More flexible limit options&lt;/strong&gt; – The new version lets you set a specific level limit instead of just the option of 85-only. You will also be able to limit the players displayed by rank.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;New styling options&lt;/strong&gt; – Visual control is back! Instead of just “dark” and “light” themes, you will be able to control the colors of each of the fields through the plugin settings page.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Column display toggling&lt;/strong&gt; – Now you will be able to toggle individual columns on or off. Everything but the name column will now be optional.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition, there will be some behind-the-scenes changes to make the plugin play nicer with other plugins and generally be easier to use.&lt;/p&gt;</description><author>Ben Overmyer's Site</author><pubDate>Thu, 24 Mar 2011 02:00:00 GMT</pubDate><guid isPermaLink="true">https://benovermyer.com/blog/2011/03/coming-in-april-wgr-2/</guid></item><item><title>iOS Documention Now Available</title><link>https://boyter.org/2011/03/ios-documention-now-avaliable/</link><description>&lt;p&gt;Added iOS documentation to join the OSX documentation.&lt;/p&gt;
&lt;p&gt;You can by searching for &lt;!-- raw HTML omitted --&gt;appleios&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Mon, 21 Mar 2011 01:15:12 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/03/ios-documention-now-avaliable/</guid></item><item><title>Attribution 101</title><link>/2011/03/18/Attribution-101/</link><description>&lt;p&gt;Continuing with the recent posts on metrics and marketing. I want to give a quick primer on attribution. To any marketing or analytics people out there, simply skip this it would aim to be a primer recap at best for you.&lt;/p&gt;
&lt;p&gt;The very general meaning behind attribution is to give credit. When it comes to web products this can be giving credit for lots of things:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;Its really wonderful when there&amp;rsquo;s a direct mapping in correlation. Take for example the case where:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;Disclaimer: I have little to no formal training in stats or analytics, have simply learned through launching products so take this for what its worth, someone that has been there and done it.&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Sat, 19 Mar 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/03/18/Attribution-101/</guid></item><item><title>Lorem Ipsum Word Generation</title><link>https://boyter.org/2011/03/lorem-ipsum-word-generation/</link><description>&lt;p&gt;Something I tend to need from time to time is some generated lorem ipsum text as a placeholder. I would normally search for lorem ipsum, click through to lipsum.com click paragraph etc…&lt;/p&gt;
&lt;p&gt;I thought this was too much work, so I quickly added a lipsum generator.&lt;/p&gt;
&lt;p&gt;To use it just type the following,&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;lorem:100&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;Where you can replace 100 with any number of words up to 1000. Works for the following search texts as well,&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Fri, 18 Mar 2011 01:14:28 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/03/lorem-ipsum-word-generation/</guid></item><item><title>Wona Oct-Dec '10 Review</title><link>https://captnemo.in/blog/2011/03/17/wona-review/</link><description>&lt;p&gt;Download the issue on the WONA
&lt;a href="/wona/"&gt;archive website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="/wona/"&gt;&lt;img alt="Wona December
Issue" src="https://captnemo.in/wona/2010-12.jpg" title="Wona December Issue" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note about Archival&lt;/strong&gt;: &lt;em&gt;This post used to live on the (now-dead) piratecoders.co.cc website. I’ve moved it here for archival’s sake.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The latest issue of WONA turned up 3 months late at my doorstep. Other
than the fact that it was missing an apology letter for this lateness,
it was a good step in the forward direction by WONA in general. Once you
take aside the pleasantries, and the sarcasm, I felt that WONA was, on a
general scale, surpassing what it had been doing till now, and moving
towards a better (and hopefully a quicker) issue. However, this one was
definately not the one to be labelled perfect. So here comes the review
:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cover :&lt;/strong&gt; Let’s start with the cover. Not much to write about it,
other than the fact that it took me quite some time to figure out what
was Maradone doing on it. Nice work in putting up the WONA logo (which
I’m genuinely fond of). Nice choice of color scheme, and over-all good
work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Editorial :&lt;/strong&gt; The magazine starts at a good note with the editorial
promising us what’s inside in a nutshell. This was the best write-up of
issue for me, and did its job well. I was enticed into reading further,
and got a gist of what was about to come.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Almost Famous :&lt;/strong&gt; Almost Famous has quite a history of its own, and is
one column that every person who lays his hands on WONA definately
reads. This time around, you held out Jan Flaming for me. As for the
interview itself, it was clearly written, had some nice questions, some
imaginary answers, and overall does quite well for the reader. On a
second take, this was probably the reason it ends up on the first page
this time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Murphy’s Strip :&lt;/strong&gt; Alas if Murphy had been here, he might have taken a
shot or two at you. How about : “Any comic that can go wrong &lt;em&gt;will&lt;/em&gt; go
wrong.” Or maybe “If Vela could draw stupid sketches, he would.” Still,
nice concept, bad execution. Could have been better, definately,
especially with regards to sketching. Still 42 times better than the
other strip.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NewsNotes :&lt;/strong&gt; were 4 pages of news, which arrived 3 months too late.
Nobody remembers any of these incidences happening, let alone being part
of them. PAN-IIT was way bigger than your coverage, and deserved a bit
more. Rest all the newsnotes were in a bit, exactly what they were
supposed to be : News, without any sarcasm or humour. However I’m
heavily against the use of one and half pages to glorify pages. I know
how costly it is to push each page into the magazine, but please don’t
fill it with something that no one bothers to read. Medal winners,
please don’t mind but the two tables were a waste of space, if not
something else. Or else the nine people from WONA’s news section could
not find enough news. Anyone could have gotten these lists from the
Sports Council a day after the event ceremonies. Give me something
better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Face-Off :&lt;/strong&gt; was usual stuff. Nice choice of topic, nicely edited,
with some actual points being thrown around, this turned out fine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Big Story (Devil Wears Prada) :&lt;/strong&gt; In spite of my initial skeptism
about the story (I knew about it before the issue came out), I really
liked it. This article goes ahead and proves that what you write on is
unimportant (or at least less so) as long as you write it well. In a
world of geeks, bringing out a cover story on fashion is really a bold
move, and I must applaud you for having the guts to do so. The article
was well written, and a joy to read. However I’d come to hear, from
several sources, that people quoted in the article did not in fact give
one to WONA. Please take care not to make up stuff next time. You’re a
news mag, stick to the status quo, please.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verbatim :&lt;/strong&gt; WONA gets its hands on the most respected professor on on
our campus, and does quite a good job of it as well. Nice questions,
interesting answers make up a good read. In fact, the only negative
point of the article was its placement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WonaLeaks :&lt;/strong&gt; This was the article that forced me to write this
review. If it was an attempt at humour, it failed badly. As an attempt
to mix news and wonaspeek, it fails even badly. Mixing kangaroos, indian
cricket team, koala bears and a state prosecutor is definately not the
recipe for sucess. It might work in movies (Spaceman + Potato Head +
Zombie Dolls + Cowboy + Alien with 3 eyes = Oscar), but definately not
on paper. Nobody remembers the event the article talks about. Its
relation to wikileaks is not enough to demand a WonaLeaks icon. I shall
forever remember this as the worst of writing, and imagination that ever
came out of wona.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech-ila Shots :&lt;/strong&gt; The in house tech article arrives a few months
late. (Google just released Cr-48). I would have personally liked to see
something else here (iPhone vs Android, iPhone 5, Ubuntu vs Windows
etc). But as it was, the article was well thought of, and did exactly
what it planned to. It could have done with a bit of pruning though, and
the author might have liked to tell us a bit more about the OS itself
(it only mentions the fact that its web based, comes as pre-installed,
will not run intensive applications).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Random Ed :&lt;/strong&gt; I’m not sure if it really is an editorial, but I’ll
stick with the title. Nicely written in short. However the purpose and
intent of such an article is lost in the true random nature of the
article itself. The article fails to reach a resolution, and delievers
nothing at all. Indeed most of the thoughts mentioned in the article,
must have sprung to every person’s brain at some time or another. Then
what’s the need of this article? Is it philosophy that Wona’s trying to
dive into? Or perhaps its just a conspiracy to get all students in the
campus to think more randomly, leading to a decrease in entropy of the
thoughts of the profs, and as a consequence, simpler question papers.
(For the skeptics, something similar has already happened, and our
thought patterns &lt;em&gt;are&lt;/em&gt; involed in the entropy of a system.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ethics :&lt;/strong&gt; was actually the cover story (which one comes to know only
after re-reading the cover). The author is unclear of the intent of the
article, and it steers in various directions. I’m still unsure as to
where it ends, and whether Arasu’s mumblings (Another Brick in the Wall)
are part of it. One might raise question as to the relevance of the last
section itself, but this article had its moments as well. In short, nice
concept, nice writing, but could have done with a bit of restructuring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Canine Strip :&lt;/strong&gt; Another page wasted. The time spent by the sketcher
could so easily have been devoted on bettering the other one. Needless
to say, wona seems to be lacking in people who actually write, and the
it results in a page filled with a stupid comic about dogs taking over
the campus. Seriously, get some creativity. Even zombies would have done
better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WORC :&lt;/strong&gt; Good decision in continuing this column. I was afraid it
might get scrapped along with Agony Aunt(which was a very good
decision). I can just hope that you actually asked some persons to
create those pie charts. Dr. Sinhval seems to have taken his time in
answering the questions, and his reply is full of facts, explanations,
and ideas. Nice work by the ed team here, definitely.&lt;/p&gt;

&lt;p&gt;Other than the articles there are a few more areas of interest I would
like to point out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Design:&lt;/strong&gt; Seriously, have you people ever heard of vector graphics.
Your designers really need a course on making scalable graphics. The
need for Darth Vader to illustrate an article is fine, as long as you
have a big enough image to fit. Trying to scale a 400×300 jpg into a
page will not do. Even the cafe de norma ad was pixellated. The girl
wearing Prada proves that it was possible to pring clearer graphics .
However on the very next page, there’s an overdose of black. Similarly
pixellated were most of the other pics on the mag. The 3 monkeys
illustrating the second last page could have been something better. The
essence of the German flag was lost in black &amp;amp; white(Almost Famous) .
And just so you know that everyone noticed , dark colored pics in the
background make text unreadable (Chrome OS).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ads :&lt;/strong&gt; I don’t know the reasons behind it, but from a reader’s point
of view, an issue with only 3 ads is really awesome. Especially once you
compare it with Kshitiz’s latest issue. I know it must have been really
hard to cover the costs, and manage the finances and all that. But folks
over here are smiling for your hard work. You finally published it
(albeit 3 months late), and that’s what matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Placement :&lt;/strong&gt; could have been better. Some articles should have gotton
more coverage than given. Perhaps you should think of making Tech-ila
bigger. I would’nt have minded the least if Verbatim had gotten a bit
larger. The ethics article was divided into portions, I couldn’t
understand, and might have done with fewer sections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cover :&lt;/strong&gt; A little side note as to why the article change from the
cover to the article itself. Isn’t the cover supposed to hold titles as
well. On second thoughts, I might be wrong to suggest your current
layout, but can you just put up page numbers! They would surely help.&lt;/p&gt;

&lt;p&gt;And finally a note from my side : Wona is an excellent magazine. Despite
it having a status quo of its own on its supposed unreadability without
an excellent understanding of wona’s inner sanctum, I believe that the
magazine is an essential part of life at iitr. It is one of the few
sections in our campus, whose work is actually a part of our daily life.
Thanks to the entire team for working so hard on this issue.&lt;/p&gt;

&lt;p&gt;This review is my way of letting you know that there are people who care
about what you write. There are people who wait for the issue, and who
are determined to do so till they pass out. Consider it a friendly nudge
and a little feedback from my side. Its up to you decide what your mag
is after all. With hopes that the next issue is even better than this
one&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update&lt;/strong&gt;:&lt;/em&gt; Friends over at wona inform me that the delay in the mag
was due to an issue on the administration’s side rather than wona’s
side. If that was the case, the blame’s partially on your staff advisors
(spelled incorrectly in the mag’s first page) : Dr. M.J. Nigam, and Dr.
B.R.Gurjar. I’m still not sympathatic to the excuse given entirely, and
believe that it might have come out a bit more sooner with some more
effort on wona’s side.&lt;/p&gt;</description><author>Nemo's Home</author><pubDate>Thu, 17 Mar 2011 02:00:00 GMT</pubDate><guid isPermaLink="true">https://captnemo.in/blog/2011/03/17/wona-review/</guid></item><item><title>List of Most Commonly Used PHP Functions</title><link>https://boyter.org/2011/03/list-of-most-commonly-used-php-functions/</link><description>&lt;p&gt;One of the things about ranking in Search is that you need to consider all sorts of methods of working out what is relevent. Google broke new ground (although the idea had already existed) with its PageRank algorithm which supplied better search results then all the other search engines. For what I am doing however I need to consider what programmers are looking for. One thing that I considered some time ago was working out which are the most common functions in a language and adding this as an additional signal to ranking.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Wed, 16 Mar 2011 01:13:43 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/03/list-of-most-commonly-used-php-functions/</guid></item><item><title>List of MySQL, SQL Server 2008 and Apache Directives</title><link>https://boyter.org/2011/03/list-of-mysql-sql-server-2008-and-apache-directives/</link><description>&lt;p&gt;Added some more lists now that the feature is working correctly.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt;List of MySQL Functions&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt;List of SQL Server 2008 Functions&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt;List of Apache 2 Directives&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 15 Mar 2011 01:13:47 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/03/list-of-mysql-sql-server-2008-and-apache-directives/</guid></item><item><title>List of all GNU/Linux and Windows Commands</title><link>https://boyter.org/2011/03/list-of-all-gnu-linux-windows-commands/</link><description>&lt;p&gt;Today I can announce a small but possibly useful feature which is the addition of lists. They are here as way of making it easier to find what you are looking for if the main search lets you down and you want to try a browser inline search. They can also be useful if you just want to scroll through everything in a particular subject. I have the following lists already created,&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 15 Mar 2011 01:11:51 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/03/list-of-all-gnu-linux-windows-commands/</guid></item><item><title>Startup/Bootstrapped Marketing Recap</title><link>/2011/03/07/Startup/Bootstrapped-Marketing-Recap/</link><description>&lt;p&gt;If you have an hour to spare its well worth it to look back and look back at my series on startup/bootstrapped marketing. But if you&amp;rsquo;re short on time and want the high level summary here&amp;rsquo;s the quick recap:&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;Part 1 - Focus on SEO&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 08 Mar 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/03/07/Startup/Bootstrapped-Marketing-Recap/</guid></item><item><title>BATF – Big Arse Text File</title><link>https://boyter.org/2011/03/batf-big-arse-text-file/</link><description>&lt;p&gt;Ever needed the ability to track bugs and features without using a full featured bug/feature tracker? What about storing all your random notes such as server details, blog ideas, books to read, urls etc, without using a full featured CMS or the like. Want to have everything searchable and in the most platform independent format possible?&lt;/p&gt;
&lt;p&gt;Enter the BATF. I have always been a fan of the big arse text file (BATF) for keeping track of the above. The catch being I wanted it centralised so I could get at it from any machine I was on (assuming internet access). I also wanted it to provide a simplistic version system. Tags would be useful too.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 08 Mar 2011 01:10:23 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/03/batf-big-arse-text-file/</guid></item><item><title>Reading Metrics to Evaluate Marketing</title><link>/2011/03/02/Reading-Metrics-to-Evaluate-Marketing/</link><description>&lt;p&gt;A short while backed I talked about &lt;!-- raw HTML omitted --&gt;tactically measuring metrics&lt;!-- raw HTML omitted --&gt; for your site/company. Recently I talked a bit about &lt;!-- raw HTML omitted --&gt;methods of marketing&lt;!-- raw HTML omitted --&gt;. A large key to getting the most out of your time and money is to properly report against the intersection of these two items. First I&amp;rsquo;m going to make the assumption you&amp;rsquo;ve read those posts, if you haven&amp;rsquo;t go back and do that. Next this is heavily on the assumption that you&amp;rsquo;re using Google Analytics as your primary tool for measuring metrics and have setup goals appropriately.&lt;/p&gt;
&lt;p&gt;Within measuring you&amp;rsquo;re metrics you&amp;rsquo;ll have abandonment at each level. You may have some visitors that never register, and many that register but never purchase anything. It&amp;rsquo;s wonderful if you&amp;rsquo;re able to immediately have full insight of the best means of marketing to drive revenue, however realistically it occurs in a more phased approach. The first step is to drive visitors and almost immediate second is to convert those users as registered.&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;Acquisition -&amp;gt; Activation&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;This at a high level makes sense, as does at a high level knowing you should be targeting users in your target market. However, even slightly drilling into this you realize that all traffic is not equal. It&amp;rsquo;s often known that CPC and CPA advertising does not convert well for users, though can drive traffic. This may not always be the case. For Registry Stop to make this analysis easier we&amp;rsquo;ve created a custom report in google.&lt;/p&gt;
&lt;p&gt;To create your own custom report simply click Manage Custom Reports under the Custom Reports area then &amp;ldquo;Create new custom report&amp;rdquo;. The custom report ability in google gives you much more ability to drill into the data that you already have at a higher level. To track effectiveness of converting visitors to registered users and which sources are effective at this you&amp;rsquo;d create something that looks like:&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;Here while very simple we&amp;rsquo;re able to see some very key information quickly. Here&amp;rsquo;s an example of how it would appear over a few day period:&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;As you progress in your stage of bootstrapping or growing your startup you&amp;rsquo;ll want to grow custom reports that allow you to report against as many &lt;!-- raw HTML omitted --&gt;metrics&lt;!-- raw HTML omitted --&gt; as possible. The first and last part of my day is spent pouring over these reports. Having this data readily available allows us to drive our business based on data. Perhaps the hardest part of all of this is admitting when the data is counter to what we expect and following its advice.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 03 Mar 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/03/02/Reading-Metrics-to-Evaluate-Marketing/</guid></item><item><title>Batch RewriteRule Generator</title><link>https://donatstudios.com/RewriteRule_Generator</link><description>&lt;fieldset style="float: right; margin-left: 11px; text-align: center;"&gt;&lt;legend&gt;Find this useful?&lt;/legend&gt;Buy me a coffee! &lt;hr /&gt; &lt;div style="text-align: center;"&gt;
	&lt;div style="display: inline-block; vertical-align: top;"&gt;
		&lt;p&gt;&lt;strong&gt;PayPal&lt;/strong&gt;:&lt;/p&gt;

		&lt;form action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;
			&lt;input name="cmd" type="hidden" value="_s-xclick" /&gt;
			&lt;input name="encrypted" type="hidden" value="-----BEGIN PKCS7-----MIIHLwYJKoZIhvcNAQcEoIIHIDCCBxwCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYAy4BMQR+gXgzT+VlMBgLYMmHmJUzkedAnz3pQKsB0ZJPBkPs8UGmCDeD3fwMMAEiMxqanNw+fX5XtRJp18ONZmM6NLXPy9MtWM5e4W4ZaaKwvYhg+BqjGec1IE0yuKHvwrb9uBIpYnYrhj9Ar4TKo+y3jDj0Jyeyb8F4MUu3X8BDELMAkGBSsOAwIaBQAwgawGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIRndc+ju3hn+AgYgXZRvvb1qCbLB5lLTjPDeue/6MBVENfs1z2jAUSFA69Ppvo3gkF9PKu0q+iwcIxSiKA3eJMVP6m4cayd1UFLSgN9rHbisgz3RRRqMMZXIoP7oZ45SXM+xl6TUKcGc7U14wRNuj5o1K8HqC60UZaHr37tiiubp/ngw9i5l73kHBoqajlS3yS0bioIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTMwMjE1MDIwNjQzWjAjBgkqhkiG9w0BCQQxFgQU6pFsKsltm2oPpMCSwqPuFB2OShEwDQYJKoZIhvcNAQEBBQAEgYAXkXscShHz6Q+ckNrEnCQGB5z24Y9I2aSGHS9V3jHNbD+fHyUiGor0X2D9DmlJMi3ksBgJIVnTnv/+0ju2yN8WX3178bsoK+yliHYPRQpi2fANfVGLgmr2A33w06o2xi2DLxjL10JTWpxVSJRKQ64h/neP8tdwym8PumZwB0rB8w==-----END PKCS7-----
		" /&gt;
			&lt;input alt="PayPal - The safer, easier way to pay online!" border="0" name="submit" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" style="border: none; padding: 0;" type="image" /&gt;
			&lt;img alt="" border="0" height="1" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" /&gt;
		&lt;/form&gt;
	&lt;/div&gt;
	&lt;div style="display: inline-block; vertical-align: top;"&gt;
		&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;:&lt;/p&gt;
		 
	&lt;/div&gt;
	&lt;div style="display: inline-block; vertical-align: top;"&gt;
	&lt;div style="float: left;"&gt;
		&lt;p&gt;&lt;strong&gt;Ko-Fi&lt;/strong&gt;:&lt;/p&gt;
		&lt;a href="https://ko-fi.com/P5P1PFQ11" target="_blank"&gt;&lt;img alt="Buy Me a Coffee at ko-fi.com" border="0" height="36" src="https://storage.ko-fi.com/cdn/kofi2.png?v=3" style="border: 0px; height: 36px;" /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;/div&gt;
&lt;/fieldset&gt;

&lt;p&gt;I find myself often needing to set up a large number of 301 redirects from an excel file of old to new url’s. Until this point, writing these had been a fairly exhausting process as you need to be certain to escape every character that could be picked up by the regular expression engine, or risk unintended consequences. On top of that, writing these rewrites to catch GET parameters in any order is complex to say the least.  While working through a large list of 301s for a very picky server where &lt;em&gt;Redirect 301&lt;/em&gt; style redirects were not an option, I began setting up RewriteRule's by hand and decided there had to be a better way. Voila! My 301 RewriteRule Builder was born.
	&lt;/p&gt;&lt;img alt="Excel Usage Example" src="https://donatstudios.com/assets/28/Old2New.png" style="float: right; padding-left: 11px;" /&gt;
&lt;p&gt;You can simply enter a list of tab or space delimited urls (copied from Excel works great) and it will spit out the generated RewriteRule’s for you. GET parameters on the old urls are broken up and built into multiple RewriteCond’s set up to work in any passed order. 	&lt;/p&gt;
&lt;p&gt;I hope someone finds this useful.  Any comments are welcome below, of feel free to &lt;a href="https://github.com/donatj/Mod-Rewrite-Rule-Generator" target="_blank"&gt;fork me on github&lt;/a&gt;! &lt;/p&gt;
&lt;p&gt;Please make sure you have &lt;code&gt;RewriteEngine On&lt;/code&gt; somewhere near the top of your .htaccess, before you attempt any rewrites.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Need more help?&lt;/strong&gt; The tool can only do so much, and sometimes you need human help. I offer .htaccess help as a paid service and have 10+ years of Apache experience. Send me a note on my &lt;a href="https://donatstudios.com/contact"&gt;contact page&lt;/a&gt; and we can discuss your options.&lt;/p&gt;

&lt;fieldset&gt; &lt;center&gt;&lt;small&gt;&lt;a href="https://github.com/donatj/RewriteRule-Generator" target="_blank"&gt;Fork my source on Github!&lt;/a&gt;&lt;/small&gt;&lt;/center&gt;&lt;/fieldset&gt;</description><author>Donat Studios</author><pubDate>Tue, 01 Mar 2011 09:58:44 GMT</pubDate><guid isPermaLink="true">https://donatstudios.com/RewriteRule_Generator</guid></item><item><title>Setting up Goals and Funnels - Google Analytics</title><link>/2011/02/28/Setting-up-Goals-and-Funnels-Google-Analytics/</link><description>&lt;p&gt;I had a recent request on how to setup a funnel in Google Analytics. If you&amp;rsquo;ve missed by first post on some tips for &lt;!-- raw HTML omitted --&gt;Google Analytics&lt;!-- raw HTML omitted --&gt; first check that out. With most websites today there is some portion of the site that is event and not page based, meaning you have some workflow on the page based on Javascript. If this is the case you&amp;rsquo;ll want to &lt;!-- raw HTML omitted --&gt;fake a page view&lt;!-- raw HTML omitted --&gt; instead of an event in order to entirely use it in funnels and goals.&lt;/p&gt;
&lt;p&gt;A personal recommendation is actually to use both, goals and funnels. The key a funnel is that you need to have successive steps that occur in some order. With regards to metrics tracking this is absolutely needed, but typically you may have 1-2 total funnels with many steps in your site versus goals where you could have 10-15 single goals. For &lt;!-- raw HTML omitted --&gt;Registry Stop&lt;!-- raw HTML omitted --&gt; we&amp;rsquo;ve structured our site so that our earlier stage goals become the same as steps in later stage funnels. For us in almost all cases the first part of the funnel is the visit, the second is registering for an account. We do have independent goals for visits and registrations as well, but we do not have funnels on those goals.&lt;/p&gt;
&lt;p&gt;A key to getting the most use out of your funnels is to know that there is a &lt;!-- raw HTML omitted --&gt;workflow to follow&lt;!-- raw HTML omitted --&gt; to getting to that end goal. To highlight this slightly more visually let me walk through an example:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;The parts of your funnel will be:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;Once here it becomes a bit more intuitive. You can begin by simply adding a goal. Your goal types should seem mostly intuitive, as mentioned in an earlier post you cannot use an Event in a goal. For this reason you can fake a pageview as if it actually occurred and then create your goal against that non-existent page view. If you want a few more details of how to do this check out the previous post . So for an example, we have a goal on &lt;!-- raw HTML omitted --&gt;Registry Stop&lt;!-- raw HTML omitted --&gt; that detects when a page view occurs as a result of a registry being synced. Because this workflow is heavily javascript and flow based we fake the page view and track it as if the page was actually visited. The goal itself looks like:&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;For setting up your funnel as we mentioned above its generally a set of page views. A very key item is the check box next to the first item in your funnel. If you check this is means any other steps in the funnel are not counted unless you the first step is completed. If you have a very structured 1, 2, 3 workflow this makes sense. However, if there are various ways for the goal to complete then be very careful about selecting this.&lt;/p&gt;
&lt;p&gt;For this same goal above we have a corresponding funnel to track in detail how our conversion flows. The funnel itself looks like this once setup:&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;This results in a funnel report that looks like:&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 01 Mar 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/02/28/Setting-up-Goals-and-Funnels-Google-Analytics/</guid></item><item><title>Using wget and xargs</title><link>https://boyter.org/2011/02/wget-xargs/</link><description>&lt;p&gt;The joy of the linux/unix command line is how versatile the commands are. I recently had 50,000 URL&amp;rsquo;s I needed to download in a text file. I was thinking about writing a crawler in Python to do it but ended up just doing the following,&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat urllist | xargs -P16 wget -i
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A 16 thread (process really) webcrawler in a single command. Joy.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Mon, 28 Feb 2011 07:46:55 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/02/wget-xargs/</guid></item><item><title>Evaluating Paying for a Blog Post</title><link>/2011/02/25/Evaluating-Paying-for-a-Blog-Post/</link><description>&lt;p&gt;At a recent meetup I talked a bit about how I&amp;rsquo;d been using blog posts on other blogs, both free and paid for as a primary user acquisition tool. I was very shocked, when several were surprised and curious on the method for this. In tech startups coverage is common, but its usually just that press, not paid for press. I must say I love how the tech community doesn&amp;rsquo;t force people to pay to get the word out, but it is very much a competition; that might be just as much work as paying.&lt;/p&gt;
&lt;p&gt;In contrast the wedding industry is very much a pay to play space. If you give some money you can get some attention.&lt;/p&gt;
&lt;p&gt;First things first, contact the blog you&amp;rsquo;re interested in being written up in and ask for their media kit. If they welcome sponsored posts, then it is likely called out in their media kit. However, this isn&amp;rsquo;t always the case, if you&amp;rsquo;ve noticed posts on their blog that have been sponsored posts but pricing isn&amp;rsquo;t called out in their blog then email them explicitly and inquire.&lt;/p&gt;
&lt;p&gt;Once you&amp;rsquo;ve got their media kit its time to do some digging. My process has first been to validate their numbers. Most blogs include their unique visitors and page views in their media kits. I immediately jump over to compete to check if their numbers are even in the ballpark. To clarify in the ballpark can be somewhere around 1.5x of compete. There are a surprising number of blogs that may be 20x off in the numbers they are stating. This could mean you&amp;rsquo;re outright lying on your stats, or that you&amp;rsquo;re not running a solid enough business that you know how to effectively track your numbers. It could be, because your blog exists on 5 different domains, while compete I&amp;rsquo;m checking only the primary. Regardless, if you&amp;rsquo;re numbers aren&amp;rsquo;t close, it often means you&amp;rsquo;re not as together as we&amp;rsquo;d like.&lt;/p&gt;
&lt;p&gt;If they pass the first smoke screen of the stats being in the ballpark, then we can move on to evaluating sponsoring a post. Traffic&amp;rsquo;s a big factor, unique visitors are important as well as page views. Next we&amp;rsquo;ll typically look for how active your users are. Do users actively engage in comments, where there are active commenters there&amp;rsquo;s usually opportunity to get a bit more out of your post.&lt;/p&gt;
&lt;p&gt;Next would be, how frequent are posts. Are you looking at 1-2 posts that go up per day, or 10. If 10, it simply means your content will be pushed to the bottom of the page pretty quickly, in this case if page views are exceptionally high, it may mean that users only view 1-2 posts per day and miss the others. I&amp;rsquo;ve historically done this on a subjective basis, but it could easily be a number that is calculated and factored in.&lt;/p&gt;
&lt;p&gt;So you start with this basic methodology for one blog, then do it for a few more. Its pretty simple to compare 3-4 blogs on their potential value, but when you really start expanding this you could be looking at 100 blogs. If that&amp;rsquo;s the case it does help to have some structured method. We typically weight their unique visitors, page views, a factor of how accurate they are against compete, their commenter level, and finally their post frequency. We multiply that weight against the cost of a sponsored post and there you have your priority in terms of which blogs to begin advertising on. Its usually best to try 2-3 blogs to determine your return. But even one can give you an idea of results.&lt;/p&gt;
&lt;p&gt;A quick recap of the basic formula:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Sat, 26 Feb 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/02/25/Evaluating-Paying-for-a-Blog-Post/</guid></item><item><title>JQuery and Django Autocomplete</title><link>/2011/02/25/JQuery-and-Django-Autocomplete/</link><description>&lt;p&gt;In a couple of various places I&amp;rsquo;ve seen light requests of how to put autocomplete in for a Django web application. Here&amp;rsquo;s a really light weight version with a view and autocomplete functionality using:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-python"&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #f92672;"&gt;from&lt;/span&gt; django.utils &lt;span style="color: #f92672;"&gt;import&lt;/span&gt; simplejson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt;&lt;span style="color: #66d9ef;"&gt;def&lt;/span&gt; &lt;span style="color: #a6e22e;"&gt;autocompleteModel&lt;/span&gt;(request):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; search_qs &lt;span style="color: #f92672;"&gt;=&lt;/span&gt; ModelName&lt;span style="color: #f92672;"&gt;.&lt;/span&gt;objects&lt;span style="color: #f92672;"&gt;.&lt;/span&gt;filter(name__startswith&lt;span style="color: #f92672;"&gt;=&lt;/span&gt;request&lt;span style="color: #f92672;"&gt;.&lt;/span&gt;REQUEST[&lt;span style="color: #e6db74;"&gt;'search'&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; results &lt;span style="color: #f92672;"&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; &lt;span style="color: #66d9ef;"&gt;for&lt;/span&gt; r &lt;span style="color: #f92672;"&gt;in&lt;/span&gt; search_qs:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; results&lt;span style="color: #f92672;"&gt;.&lt;/span&gt;append(r&lt;span style="color: #f92672;"&gt;.&lt;/span&gt;name)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; resp &lt;span style="color: #f92672;"&gt;=&lt;/span&gt; request&lt;span style="color: #f92672;"&gt;.&lt;/span&gt;REQUEST[&lt;span style="color: #e6db74;"&gt;'callback'&lt;/span&gt;] &lt;span style="color: #f92672;"&gt;+&lt;/span&gt; &lt;span style="color: #e6db74;"&gt;'('&lt;/span&gt; &lt;span style="color: #f92672;"&gt;+&lt;/span&gt; simplejson&lt;span style="color: #f92672;"&gt;.&lt;/span&gt;dumps(result) &lt;span style="color: #f92672;"&gt;+&lt;/span&gt; &lt;span style="color: #e6db74;"&gt;');'&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display: flex;"&gt;&lt;span&gt; &lt;span style="color: #66d9ef;"&gt;return&lt;/span&gt; HttpResponse(resp, content_type&lt;span style="color: #f92672;"&gt;=&lt;/span&gt;&lt;span style="color: #e6db74;"&gt;'application/json'&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For the jQuery autocomplete and call:&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Sat, 26 Feb 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/02/25/JQuery-and-Django-Autocomplete/</guid></item><item><title>Bootstrapped/Startup Marketing Part 4</title><link>/2011/02/22/Bootstrapped/Startup-Marketing-Part-4/</link><description>&lt;p&gt;We&amp;rsquo;ve talked some about &lt;!-- raw HTML omitted --&gt;SEO&lt;!-- raw HTML omitted --&gt;, &lt;!-- raw HTML omitted --&gt;media/blog posts&lt;!-- raw HTML omitted --&gt;, adwords, no one of these is a magic bullet. Some work better for different reasons. As I mentioned in the first post, if you haven&amp;rsquo;t checked out the post on &lt;!-- raw HTML omitted --&gt;tactically measuring metrics&lt;!-- raw HTML omitted --&gt; then please do. If you have followed those steps and explore each of these options, then you should have an idea of which one works well for you and which doesn&amp;rsquo;t. The final piece of marketing may be a bit harder to measure, but is going to do great things towards growing your brand to users and visitors.&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;Retargetting&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;
Retargetting is the idea of showing an ad to a user that has already visited your site. It&amp;rsquo;s pretty basic, someone comes to your site and you have a pixel that loads telling your ad network they&amp;rsquo;ve visited. From then on they may see your ad when randomly browsing the web. With my most recent venture into the online registry space I was browsing Chiacgo Tribune and Slashdot and came across our ads. There&amp;rsquo;s absolutely no contextual relevance there, but I checked and it was due to our retargetting. This will make it appear as if you are everywhere to your users. If you do want to heavily monitor what retargetting is doing for you, the best place to do it is around your retention metric.&lt;/p&gt;
&lt;p&gt;How do you do retargetting? Sounds like a complicated process slightly&amp;hellip; Well it&amp;rsquo;s simple you don&amp;rsquo;t, let one of the major ad networks do it for you. The first step for it, is to use image ads. Text based ads may work great for google and facebook, but on most of the websites your retargetting will run on you want to have images that the blogs typically serve. The 3 key form factors you&amp;rsquo;ll want are:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;If you want your shop to seem like a mom and pop site that has 100 visitors a month, then retargetting will hold absolutely no value for you. But even if you do only have 100 visitors a month, with retargetting they&amp;rsquo;ll get some confidence that you&amp;rsquo;re a real online brand with a presence.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 23 Feb 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/02/22/Bootstrapped/Startup-Marketing-Part-4/</guid></item><item><title>Bootstrapped/Startup Marketing Part 3</title><link>/2011/02/18/Bootstrapped/Startup-Marketing-Part-3/</link><description>&lt;p&gt;For this third part on the series I&amp;rsquo;m going to dive into what people perhaps most traditionally think of with marketing startups, online advertising. Online advertising can work, but its definitely not cheap and it does take a good about of pounding at it to know what works. I&amp;rsquo;m going to break up the three key types of advertising, based on the way I&amp;rsquo;ve utilized them and evaluated them recently.&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;Contextual&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;
The first is search advertising, or contextual. The biggest usage of this has of course most recently been with google AdWords. For the complete novices out there, this is where you&amp;rsquo;re ad would appear as text based on certain search keywords. You&amp;rsquo;re the one that is able to determine the keywords, though google does rank you for relevance and how much you are willing to pay respective of the other person bidding on the same keywords.&lt;/p&gt;
&lt;p&gt;For a startup I&amp;rsquo;d very strongly discourage advertising for keywords you already appear as the first result. A part of this goes back to &lt;!-- raw HTML omitted --&gt;part one of the series&lt;!-- raw HTML omitted --&gt;, SEO doesn&amp;rsquo;t cost you anything other than time, so invest in it. If you&amp;rsquo;re already at the top of the results, why potentially pay $2 for a click, when you&amp;rsquo;re already there. With limited budget you want to be very selective about which keywords you target. In our experiences the best targetting can be with regards to your competitors or similar products. Also take advantage of google&amp;rsquo;s tools here. There are many tools within adwords that will suggest new keywords, rank your relevance, and show traffic to certain keywords.&lt;/p&gt;
&lt;p&gt;Always remember, &lt;!-- raw HTML omitted --&gt;what you really want is conversion&lt;!-- raw HTML omitted --&gt;, so make sure that&amp;rsquo;s what you&amp;rsquo;re tracking against performance. The key to doing this is linking your Google AdWords account to your Google Analytics. Google mentions in several places you should do this, but is very light on the instructions of how. So for a really quick how to:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;We followed a rather structured process to identify what worked. If there&amp;rsquo;s enough interest in this specifically I&amp;rsquo;ll do a full follow up post later but the high level steps:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;Vertical&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;
Most people term this display advertising, display is typically a banner/image ad going up on some website. I prefer viewing it as vertical, because if you target your display advertising correctly on sites you want to be on, its definitely more targetted than a standard billboard. Google does have some options for display advertising, but I&amp;rsquo;ve found their image approval process very painful.&lt;/p&gt;
&lt;p&gt;With display or vertical advertising there&amp;rsquo;s a few key&amp;rsquo;s I&amp;rsquo;ve found valuable:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Image approval process matters as you dont have multiple weeks to spare&lt;/li&gt;
&lt;li&gt;The ability to target/select your sites is an obvious must&lt;/li&gt;
&lt;li&gt;Filtering out MFA (Made for Adsense) sites in the case you do open it up slightly by site type&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;On the third item theres two ways of doing this, you can manually check daily in google, and exclude sites. What you&amp;rsquo;re looking for here is sites with &amp;lt; 100 impressions and abnormally high click through rates. The other option for managing and tweaking these vertical campaigns is to let someone else do much of the optimization. My recent favorite for this is &lt;!-- raw HTML omitted --&gt;AdRoll&lt;!-- raw HTML omitted --&gt;. There&amp;rsquo;s definitely a slight premium over going directly to google, but they do let you easily get your campaign running and very much help optimize.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Sat, 19 Feb 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/02/18/Bootstrapped/Startup-Marketing-Part-3/</guid></item><item><title>Bootstrapped/Startup Marketing Part 2</title><link>/2011/02/16/Bootstrapped/Startup-Marketing-Part-2/</link><description>&lt;p&gt;For the second part of the series we&amp;rsquo;re going talk a bit about finding the influencers in certain industries. We&amp;rsquo;ll get to more traditional means that people think of later, and if you&amp;rsquo;ve missed our first post that dealt mostly with SEO make sure you check it out first. In most online ventures there&amp;rsquo;s a key set of influencers, often times these are blogs or podcasts. Blogs can receive a huge readership, which are often very loyal.&lt;/p&gt;
&lt;p&gt;The first step to taking advantage of this is obviously finding the correct blogs. As a byproduct of being in the valley I spend plenty of time reading Techcrunch among many other blogs. While a post on Techcrunch might result in massive traffic spike, or some moderate feedback, its definitely not in our target demographic. If our goal was investors then Techcrunch might be viable, but here we&amp;rsquo;re talking about marketing and marketing to core users at that. The blogs for your core demographic should be pretty straight forward and you can find them through google or other basic means.&lt;/p&gt;
&lt;p&gt;The hard part might be once you&amp;rsquo;ve found them, how do you get on them. The first thing to do is work on networking with them if at all possible. If you&amp;rsquo;re in the same area as bloggers try seeing if they typically attend certain meetups or go one step further and simply organize a meetup or tweetup yourself. Or simply network, find others in your space that can make in intro. Hands down a first person intro will work better than any other method.&lt;/p&gt;
&lt;p&gt;If for whatever reason networking and getting directly in touch doesnt work (which can often be the case). You can always resort to cold emailing them. This can work. There&amp;rsquo;s a few keys to this approach though:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;The next step will bleed a bit more into the next post in this series, but here&amp;rsquo;s a small preview: Advertise to your influencers, not your users. If you have a limited ad budget, don&amp;rsquo;t advertise to your target user. Advertise to the influencer of your target user. We&amp;rsquo;ll get into more detail on this in the next post but a quick example:&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re building a sports site, why advertise on facebook for people who like sports &lt;!-- raw HTML omitted --&gt;when&lt;!-- raw HTML omitted --&gt; you could advertise to someone that works on espon.com. If the latter notices you and see&amp;rsquo;s interest they could potentially write you up or refer you to people that might be of interest.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 17 Feb 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/02/16/Bootstrapped/Startup-Marketing-Part-2/</guid></item><item><title>Bootstrapped/Startup Marketing Part 1</title><link>/2011/02/14/Bootstrapped/Startup-Marketing-Part-1/</link><description>&lt;p&gt;This is the first of a 4 part series on marketing for startups/bootstrapped companies. Much of the learnings from this are a result of experiences with Registry Stop. The key to each of these is going to be measuring and reacting to your efforts. If you need help on this, check out previous post around metrics for startups.&lt;/p&gt;
&lt;p&gt;So without further adieu, on this initial post of the series we&amp;rsquo;re going to talk a bit about the biggest free way to get traction and traffic for your startup. The best way to aquire free traffic to your site, is to ensure your site is optimized for search engines or more commonly &lt;!-- raw HTML omitted --&gt;SEO&lt;!-- raw HTML omitted --&gt;. Sure you can pay $3 for your ad to show up on certain keywords, but why spend the $3 per click if you can simply ensure you&amp;rsquo;re the first search result. There are slightly different methods for this for each search engine, but we&amp;rsquo;ll cover a broad set of items to pay attention to.&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;Sitemap&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;
Most sites have a sitemap.xml at their root level. This could perhaps be one of the biggest pieces of getting indexed that you can pay attention to. This xml tells search engines what pages they should index, how frequently they are updated, and the priority of the page. If you have dynamic pages, you should have this sitemap.xml generated so that it captures all pages.&lt;/p&gt;
&lt;p&gt;If you need a little more reading on creating your sitemap take a look at:
&lt;!-- raw HTML omitted --&gt; &lt;a href="http://www.google.com/support/webmasters/bin/answer.py?answer=183668"&gt;http://www.google.com/support/webmasters/bin/answer.py?answer=183668&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;Meta Tags&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;
Many search engines pay little attention to these tags, but that doesn&amp;rsquo;t mean that all don&amp;rsquo;t. You do want these tags to be as unique as possible per page and relate as much as possible to the content. The really key meta tags you want to have would be your description and your keywords. For a little more information you can check out:
&lt;!-- raw HTML omitted --&gt; &lt;a href="http://searchenginewatch.com/2167931"&gt;http://searchenginewatch.com/2167931&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;Other Tags&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;
While meta tags make pretty straight forward sense, other tags are immensly powerful in how a search engine indexes your site. The first is the title tag, you absolutely want it in &lt;!-- raw HTML omitted --&gt;and&lt;!-- raw HTML omitted --&gt; want it to be &lt;!-- raw HTML omitted --&gt;unique&lt;!-- raw HTML omitted --&gt; per page. You also want to correctly use html markup throughout your page. Just because your page looks like you want, doesn&amp;rsquo;t mean a search engine will understand it the same way. It&amp;rsquo;s important to use proper headings, including h1, h2, h3, to show just that, your headings and importance. You also want to be careful about the use of tables when not representing tabular data.&lt;/p&gt;
&lt;p&gt;Once your page is live, you&amp;rsquo;ll want to submit it to google and other search engines. &lt;!-- raw HTML omitted --&gt;Do Not&lt;!-- raw HTML omitted --&gt; use a tool to do this, submit to the major search engines manually. Once you&amp;rsquo;ve done this you&amp;rsquo;ll start to appear in search results. The key from here is to begin monitoring what users are searching for, from within google analytics, and when they visit your site.
A few key links to submit and manage your sites, as well as evaluate how you&amp;rsquo;re doing include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt; &lt;a href="https://www.google.com/webmasters/tools/home?hl=en"&gt;https://www.google.com/webmasters/tools/home?hl=en&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt; &lt;a href="http://siteexplorer.search.yahoo.com/"&gt;http://siteexplorer.search.yahoo.com/&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;&lt;!-- raw HTML omitted --&gt; &lt;a href="http://websitegrader.com/"&gt;http://websitegrader.com/&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 15 Feb 2011 05:55:56 GMT</pubDate><guid isPermaLink="true">/2011/02/14/Bootstrapped/Startup-Marketing-Part-1/</guid></item><item><title>MySQL Export to CSV</title><link>https://boyter.org/2011/02/mysql-export-csv/</link><description>&lt;p&gt;Ever needed to export data from MySQL into a CSV file? Its actually fairly simple,&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;SELECT * INTO OUTFILE '/tmp/name.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM [tablename]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Certainly easier then writing a quick Python/Perl/PHP script to do the job.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Tue, 15 Feb 2011 01:33:51 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/02/mysql-export-csv/</guid></item><item><title>Requirements Gathering for Consumer Startups</title><link>/2011/02/08/Requirements-Gathering-for-Consumer-Startups/</link><description>&lt;p&gt;Most all development projects start with a hunch at a problem. Seldom do you have the opportunity of enough resources prior beginning building to fully vet all assumptions and define all requirements. Or at the very least if you do, you&amp;rsquo;re not in startup mode. For this reason the very first thing you build is often not the perfect solution. If you&amp;rsquo;re lucky its a start at a solution, and even if its not, if you&amp;rsquo;re close users will tell you what they want.&lt;/p&gt;
&lt;p&gt;What this leaves you with is a couple of key items. First is get to the minimum product you can to vet your idea. Most commonly known as Minimally Viable Product. This should be the minimum product you need to vet your idea, and add some form of value for users. Once you&amp;rsquo;ve created this, don&amp;rsquo;t refine, don&amp;rsquo;t keep iterating, &lt;!-- raw HTML omitted --&gt;launch&lt;!-- raw HTML omitted --&gt;. More time won&amp;rsquo;t let you perfectly solve the problem, getting it in front of users will help you solve things perfect.&lt;/p&gt;
&lt;p&gt;Second is make feedback simple. Often times support can be difficult, if its a form that requires 5 fields on your website forget it. If at all possible, provide multiple ways for users to give feedback. ALL ways should be simple for users. Email is great, because every user already has it. If it can be built on your website, great, but you should make registering as light as possible. Personally, I&amp;rsquo;m a big fan of &lt;!-- raw HTML omitted --&gt;Get Satisfaction&lt;!-- raw HTML omitted --&gt;. They give a great embeddable widget and provide a service that just simply works.&lt;/p&gt;
&lt;p&gt;Third, and perhaps most important: Listen to your users! When users start to give you feedback, that&amp;rsquo;s the best requirements you can receive. There&amp;rsquo;s a couple of pieces to this step. When users give you feedback, you want to acknowledge them. Give some recognition for giving feedback; respond as positively and supportively as possible. If at all possible to act on requests do it, it will set you apart from the typical services they use of never getting a response and never seeing a change.&lt;/p&gt;
&lt;p&gt;In short three key steps make for requirements gathering that trumps all else:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Tue, 08 Feb 2011 16:49:20 GMT</pubDate><guid isPermaLink="true">/2011/02/08/Requirements-Gathering-for-Consumer-Startups/</guid></item><item><title>Tactical Steps for Startup Metrics</title><link>/2011/02/03/Tactical-Steps-for-Startup-Metrics/</link><description>&lt;p&gt;Metrics are obviously a very valuable area for start-ups, if you don&amp;rsquo;t believe in metrics and think you&amp;rsquo;re idea wins just because its great then you better start searching for your next day job. &lt;!-- raw HTML omitted --&gt;Dave McClure&lt;!-- raw HTML omitted --&gt; has done a great talk on start-ups several times over, you can check out a video and corresponding slide show at:&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;a href="http://www.ustream.tv/recorded/5336115"&gt;http://www.ustream.tv/recorded/5336115&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;&lt;a href="http://www.slideshare.net/dmc500hats/startup-metrics-for-pirates-long-version"&gt;http://www.slideshare.net/dmc500hats/startup-metrics-for-pirates-long-version&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;And besides, it&amp;rsquo;s a pirates acronym, so it&amp;rsquo;s got to be great. But translating these from concept to actual technology metrics is also something that needs discussion. You can&amp;rsquo;t exactly say we&amp;rsquo;re going to use Google Analytics and let it magically tell you everything, furthermore all of the web developers out there talking about tweaks on Google Analytics do little to actually tell you what you need to know.&lt;/p&gt;
&lt;p&gt;To start with I&amp;rsquo;m going to lay out a few of the key features of Google Analytics, assuming it&amp;rsquo;s the key backbone for web analytics, and because it really is an amazing free tool.If you&amp;rsquo;re not familiar with google analytics go and explore before reading this, we&amp;rsquo;re going to skip right over the basics of what are visitors and traffic sources directly to what you need to use and customise to get valuable metrics for a start-up. Diving right in a few key items:&lt;/p&gt;
&lt;p&gt;Goals - These are custom items that you want to setup. What is a goal? Well that can be a bit abstract but it can be a specific page that was visited, time spent on the site, or a certain number of pages per visit.&lt;/p&gt;
&lt;p&gt;Events - Here you can start track events to any type of your liking. In most cases this can be some in page action, but the key here is to each event you can track a value. This starts to become useful if you want to track most shared content, most liked products, or other items. Typically those kinds of items might exist within your in-house database, but exposing it to Google Analytics gives you an extra level of reporting integration&lt;/p&gt;
&lt;p&gt;Custom Reporting - Google is great out of the box, if you feel like it just grazes the surface then you haven&amp;rsquo;t explored it. But in some cases it&amp;rsquo;s easier to create a custom report of data that you can&amp;rsquo;t get exactly to, or to get very quick insight into similar data.&lt;/p&gt;
&lt;p&gt;So this is a really high level, but how do you use each of the above to tie to actually implementing the metrics you care about? We&amp;rsquo;ll go through an example of how you track each of Dave McClure&amp;rsquo;s 5 key metrics based. For those of you not familiar with his metrics, please go to the above links and listen to his presentation first.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Fri, 04 Feb 2011 05:39:54 GMT</pubDate><guid isPermaLink="true">/2011/02/03/Tactical-Steps-for-Startup-Metrics/</guid></item><item><title>Events with Google Analytics and Tricking Pageviews</title><link>/2011/02/02/Events-with-Google-Analytics-and-Tricking-Pageviews/</link><description>&lt;p&gt;Google analytics is great out of the box, the basic tracking tag on every page will do a lot for you. Unfortunately most people never get beyond this. There are two key items with tracking that you can do that will let you get a bit further. There&amp;rsquo;s also plenty more on the reporting side, but we&amp;rsquo;ll get to some of that later. On the tracking side the first item is event tracking. This is perhaps most commonly used for tracking various Javascript events that occur during a visit, however it can also be a bit more flexible towards tracking values. A very simple example might be:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;Or a real life example of this, might be on a FAQ screen, clicking the link to an anchored section of the page:&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;But events by their sheer nature give a bit more flexibility with that value field. In the case of a user sending a message&lt;/p&gt;
&lt;p&gt;you might be able to track how many recipients it has, or any other numeric value you want to track.&lt;/p&gt;
&lt;p&gt;Events overall are great, but you&amp;rsquo;re limited to the set Google Analytics report to know whats happening with them. So much of Google Analytics is based around page views, fortunately Google makes it easy to entirely fake a page view. If you&amp;rsquo;re wondering why you&amp;rsquo;d care whether it&amp;rsquo;s a page view versus events, we&amp;rsquo;ll get to that in a later post. For now what&amp;rsquo;s important to know is that you can fake any page view with:
&lt;!-- raw HTML omitted --&gt;_gaq.push([&amp;rsquo;_trackPageview&amp;rsquo;, &amp;lsquo;/somepagenamehere]);&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;While seemingly small tweaks and extra additions these two items will create massive value for what you can actually do with Google Analytics. Stayed tuned later for how you use these with the base Google Analytics to actually get the value.&lt;/p&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Thu, 03 Feb 2011 02:28:56 GMT</pubDate><guid isPermaLink="true">/2011/02/02/Events-with-Google-Analytics-and-Tricking-Pageviews/</guid></item><item><title>Converting Bookmarklet to Chrome Extension</title><link>/2011/02/02/Converting-Bookmarklet-to-Chrome-Extension/</link><description>&lt;p&gt;Google&amp;rsquo;s documentation is pretty good when it comes to how to create an extension that opens a full page and has large functionality. But if you&amp;rsquo;re more interested in transforming an existing bookmarklet into an extension there&amp;rsquo;s not great quality on it. The steps themselves are really quite simple. The big key that&amp;rsquo;s not heavily documented is creating a background html that creates an event listener. After the jump is a full sample that would then call your javascript to activate the bookmarklet:&lt;/p&gt;
&lt;p&gt;manifest.json&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;background.html&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.sendRequest(tab.id, {fun: &amp;ldquo;callBM&amp;rdquo;})
});
&amp;lt;/script&amp;gt;&lt;!-- raw HTML omitted --&gt;
bm.js&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;</description><author>CRAIG KERSTIENS</author><pubDate>Wed, 02 Feb 2011 10:34:49 GMT</pubDate><guid isPermaLink="true">/2011/02/02/Converting-Bookmarklet-to-Chrome-Extension/</guid></item><item><title>MySQL Command Line Import UTF-8</title><link>https://boyter.org/2011/01/mysql-command-line-import-utf-8/</link><description>&lt;p&gt;Ever wanted to command line import some data into MySQL and keep the encoding type? Turns out its not that difficult. Just a simple command line option. That said I have to look it up all the time.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mysql -u USERNAME  -pPASSWORD --default_character_set utf8  DATABASE &amp;gt; file.sql
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That will import things across with the correct encoding type. I think personally that the face that MySQL fails to throw an error or even raise a warning when it encounters these sort of issues is wrong but where you have no choice the above fixes problems.&lt;/p&gt;</description><author>Ben E. C. Boyter</author><pubDate>Thu, 27 Jan 2011 23:24:36 GMT</pubDate><guid isPermaLink="true">https://boyter.org/2011/01/mysql-command-line-import-utf-8/</guid></item></channel></rss>