<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1661503906941457505</atom:id><lastBuildDate>Fri, 18 May 2012 17:43:54 +0000</lastBuildDate><category>mailjet</category><category>funny</category><category>development</category><category>net profile switch</category><category>UI</category><category>france</category><category>hide files</category><category>hosting</category><category>crm</category><category>Apple</category><category>WYSIWYG-BBCode</category><category>tech talks</category><category>enkodr</category><category>infographics</category><category>web 2.0</category><category>customer support</category><category>self-development</category><category>.net</category><category>productivity</category><category>usability</category><category>blogger.com</category><category>startups</category><category>announcements</category><category>misv</category><category>personal</category><category>security</category><category>BoS 2010</category><category>best practices</category><category>link list</category><category>autotext</category><category>games</category><category>entrepreneurship</category><category>the making of</category><category>cloud</category><category>macro recorder</category><category>misc</category><category>seo</category><category>helpdesk</category><category>Jitbit</category><category>rss feed creator</category><category>Mistakes I Made</category><category>sql</category><category>realbasic</category><category>twitter</category><category>marketing</category><category>asp.net</category><category>Russia</category><category>email marketing</category><category>AspNetForum</category><category>web-design</category><category>google</category><title>Founder's Blog - Jitbit</title><description>My story of building a small profitable software company. I blog about startups, entrepreneurship, SEO, software development...</description><link>http://blog.jitbit.com/</link><managingEditor>noreply@blogger.com (Alex)</managingEditor><generator>Blogger</generator><openSearch:totalResults>213</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/JitbitSoftwareBlog" /><feedburner:info uri="jitbitsoftwareblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>JitbitSoftwareBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-7516253770349989349</guid><pubDate>Fri, 11 May 2012 22:47:00 +0000</pubDate><atom:updated>2012-05-12T00:31:26.179-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">announcements</category><category domain="http://www.blogger.com/atom/ns#">UI</category><title>Please welcome - HeatTest.com</title><description>We're proud to announce our latest product - &lt;a href="http://heattest.com/"&gt;heattest.com&lt;/a&gt; - a heat-map click analytics for websites.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Finally, a product for startups. Dream comes true. We scratched our own itch and built the service for our own websites and projects.&lt;/blockquote&gt;&lt;br /&gt;
I know what you're thinking. Yes, it is very similar to "CrazyEgg" and "ClickDensity", but our service updates in realtime. Your heatmaps are not being generated every 24 hours or every hour, but every time you will be looking at your stats. You see the updated heatmap statistics just seconds after someone clicks something on your website.&lt;br /&gt;
&lt;br /&gt;
And unlike Google Analytics that only shows which &lt;i&gt;links &lt;/i&gt; people click (messing it all up when multiple links on a page point to the same URL) our heatmap analytics tracks the exact element and coordinates your visitors click. Even if it's not a link or a button.&lt;br /&gt;
&lt;br /&gt;
Another great feature that puts us ahead of the competition is that our script is immune to website layouts, screen resolutions and works out-of-the-box. You don't have to tune it according to your website design ("liquid 100% width" or "fixed-center") or tell it where your logo-image is fixated. We developed a unique architecture that is totally immune to this. Just paste our script and forget about it.&lt;br /&gt;
&lt;br /&gt;
Anyways, I'd be honored if you &lt;a href="http://heattest.com/"&gt;try it out&lt;/a&gt;. Here's the invite code for blog readers: IUWEYR7&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-7516253770349989349?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=lfLqk7IiuiY:nw8vIw_cBOE:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=lfLqk7IiuiY:nw8vIw_cBOE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=lfLqk7IiuiY:nw8vIw_cBOE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=lfLqk7IiuiY:nw8vIw_cBOE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=lfLqk7IiuiY:nw8vIw_cBOE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/lfLqk7IiuiY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/lfLqk7IiuiY/please-welcome-heattestcom.html</link><author>noreply@blogger.com (Alex)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.jitbit.com/2012/05/please-welcome-heattestcom.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-5718367527185446058</guid><pubDate>Mon, 02 Apr 2012 20:16:00 +0000</pubDate><atom:updated>2012-04-04T03:23:02.673-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>Once there was a search engine</title><description>This is a sad story of an Internet giant. Started by two guys in a garage it eventually grew to control over 80% of the Internet search market and practically owned the whole Internet.&lt;br /&gt;
&lt;br /&gt;
It was innovative and agile. The stock market loved it - at times the company stock doubled in price within just a month. It was one of the very few surviving companies after the dot-com bubble burst.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The company was adding more and more awesome free services: from newsgroups to image-hosting. It practically reinvented email by launching a great free web-based email app. It introduced a blogging platform and even tried entering the social networking space. It launched a free website-hosting service, introduced its own instant-messenger/voice application, social bookmarking service and many others. It published lots of open-source frameworks, tools and APIs for developers.&lt;br /&gt;
&lt;br /&gt;
The apps it didn't create in-house - it acquired from the competitors, continuing to expand its range of services.&lt;br /&gt;
&lt;br /&gt;
The company acquired several marketing agencies and started offering "paid inclusion" - adding ADs to the search results. Some people even claim that the term "PPC" was invented inside this very company.&lt;br /&gt;
&lt;br /&gt;
But the company kept adding more confusing menus, bells and whistles to its homepage.&lt;br /&gt;
&lt;br /&gt;
The search results were getting more and more cluttered by more and more ADs.&lt;br /&gt;
&lt;br /&gt;
New players came to the field. And many users - first the early adopters then the rest of the crowd - chose the newcomers over the giant.&lt;br /&gt;
&lt;br /&gt;
Eventually, the giant collapsed.&lt;br /&gt;
&lt;br /&gt;
The giant's name was "Yahoo".&lt;br /&gt;
&lt;br /&gt;
"History does not repeat itself, but it does rhyme" - Mark Twain.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-5718367527185446058?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=wbtyWGnbwqM:Jm2qVAXPocA:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=wbtyWGnbwqM:Jm2qVAXPocA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=wbtyWGnbwqM:Jm2qVAXPocA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=wbtyWGnbwqM:Jm2qVAXPocA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=wbtyWGnbwqM:Jm2qVAXPocA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/wbtyWGnbwqM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/wbtyWGnbwqM/once-there-was-search-engine.html</link><author>noreply@blogger.com (Alex)</author><thr:total>10</thr:total><feedburner:origLink>http://blog.jitbit.com/2012/04/once-there-was-search-engine.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-5939304519080826763</guid><pubDate>Sun, 18 Mar 2012 13:58:00 +0000</pubDate><atom:updated>2012-03-18T16:39:24.757-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cloud</category><category domain="http://www.blogger.com/atom/ns#">startups</category><title>Automating Amazon S3 backups on a Windows Server</title><description>Our &lt;a href="http://www.jitbit.com/hosted-helpdesk/"&gt;helpdesk app&lt;/a&gt; (the hosted version) is being used in about 170 companies. Users have uploaded almost 150k (150,000) files. We have logged about half a million tickets. From about 100k users.&lt;br /&gt;
&lt;br /&gt;
Obviously, we need to backup all this data. And obviously, a consumer product like Dropbox or SugarSync is not an option. We needed something fast, reliable &amp; scalable. We needed cloud storage. So we chose Amazon S3 and I decided to write this simple step-by-step guide for anyone interested in automating S3 backups on a Windows server:&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;h2&gt;1: Create an Amazon AWS account&lt;/h2&gt;&lt;br /&gt;
If you don't already have an AWS account - &lt;a href="http://aws.amazon.com/s3/" rel="nofollow"&gt;create it here&lt;/a&gt;, it's free. Amazon's "free usage tier" on S3 gives you 5GB free storage from scratch, so after registering, sign in to your "AWS Management Console", select the "S3" tab and create one or more "buckets" on the left.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-IBQ3DdGMbXk/T2XVq19gxTI/AAAAAAAAAbU/UIJcxqfsnHM/s1600/awsconsole.png" /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;2: Get your access keys&lt;/h2&gt;&lt;br /&gt;
You will need security credentials to access your online storage from the server, so click your account name - "Security Credentials" - "Access Keys" and copy your Key ID and Secret.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;3: Download "S3Sync"&lt;/h2&gt;&lt;br /&gt;
"S3Sync" is a great free command-line application from SprightlySoft. It is .NET-based and even comes with the source codes. At the time of writing this post their website was down, so I published the tool on Google Docs here: &lt;a href="https://sites.google.com/site/jitbit/files/S3Sync.zip?attredirects=0&amp;d=1" rel="nofollow"&gt;S3Sync.zip&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The tool syncs a given folder with your S3 bucket. And the best part - unlike similar scripts and utilities it performs a "smart" differential sync that detects additions, deletions and file-modifications.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;4: Write a backup script&lt;/h2&gt;&lt;br /&gt;
Create a batch file and paste this code into it:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;S3Sync.exe -AWSAccessKeyId xxxxxxx -AWSSecretAccessKey xxxxxxx -SyncDirection upload -LocalFolderPath "C:\inetpub\wwwroot" -BucketName YOURBUCKETNAME&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The code above is pretty self-explanatory. Just replace the "xxxxxx" with your access codes from #2, "YOURBUCKETNAME" with the name of your S3 bucket, and "C:\inetpub\wwwroot" - with the folder you want to backup. Then create a scheduled task that runs the batch file every 24 hours, and you're all set.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;5: Pricing&lt;/h2&gt;&lt;br /&gt;
Amazon gives you a 5 GB free storage during the first year. After the year ends the pricing is still very moderate. For instance, a 10GB storage will cost you about 60 cents a month which makes it a no-brainer.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-5939304519080826763?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=5gzbVUo60rg:7segL4n9vZA:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=5gzbVUo60rg:7segL4n9vZA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=5gzbVUo60rg:7segL4n9vZA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=5gzbVUo60rg:7segL4n9vZA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=5gzbVUo60rg:7segL4n9vZA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/5gzbVUo60rg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/5gzbVUo60rg/automating-amazon-s3-backups-for-your.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-IBQ3DdGMbXk/T2XVq19gxTI/AAAAAAAAAbU/UIJcxqfsnHM/s72-c/awsconsole.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.jitbit.com/2012/03/automating-amazon-s3-backups-for-your.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-9029615173243846590</guid><pubDate>Wed, 14 Mar 2012 17:28:00 +0000</pubDate><atom:updated>2012-03-20T03:54:18.039-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">usability</category><category domain="http://www.blogger.com/atom/ns#">startups</category><title>Wait, don't add that feature</title><description>Just had an argument with my partner. He was going to add a new logging feature to our &lt;a href="http://www.jitbit.com/helpdesk-software/"&gt;help desk app&lt;/a&gt;. Another feature. Another button in the admin panel. Another setting. Another report to read.&lt;br /&gt;
&lt;br /&gt;
This reminded me of &lt;a href="http://en.wikipedia.org/wiki/Jamie_Zawinski#Quotes" rel="nofollow"&gt;Jamie Zawinski&lt;/a&gt;'s law. The one that says &lt;b&gt;every program attempts to expand until it can read mail&lt;/b&gt;.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Looks familiar?&lt;br /&gt;
&lt;br /&gt;
&lt;img border="0" src="http://4.bp.blogspot.com/-GCJg_52awU8/Tzwco2xG6KI/AAAAAAAAAbE/_tebYf2SPhU/s1600/simplicity.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
Stop adding frigging features. If you think there's a killer-feature worth adding... think again.&lt;br /&gt;
&lt;br /&gt;
If you're still positive about it - make sure that:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;...the feature works exactly like it's supposed to.&lt;/li&gt;
&lt;li&gt;...the feature works like the users &lt;b&gt;expect it to&lt;/b&gt; which is even more important. If the user expects a fireman to resque his cat - give him a shiny "fireman" button, not a "cat rescue squad".&lt;br /&gt;
&lt;br /&gt;
That's why Adobe Photoshop has so many photography terms in the user interface. The majority of Adobe users are photographers, who &lt;i&gt;expect these names&lt;/i&gt;. They want menu items to say "aperture" and "exposure", instead of "blur the background" and "clip the whites".&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;...the feature is easy to locate. &lt;i&gt;Add features, not easter-eggs.&lt;/i&gt; It won't add any value to your product if no user can find it. And adding a gigantic manual called "keyboard shortcuts and other hacks" is also not an option. The hacks, shortcuts and gestures should be obvious.&lt;/li&gt;
&lt;li&gt;Don't make assumptions. &lt;b&gt;Ask your users&lt;/b&gt; before adding a feature. &lt;b&gt;Measure&lt;/b&gt; if the area of your app you're willing to improve is even being used by anyone. And that "genius" feature of yours might actually turn out to be a piece of crap. Lots and lots of startup founders I know keep avoiding this step.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;span style="font-size: xx-small;"&gt;PS. Image courtesy of Erik Burke from "stuffthatmatters.com", his site seem to be down, fortunately, had it saved on my HDD.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-9029615173243846590?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=_NWk3RhAAMY:UoSRstoYTns:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=_NWk3RhAAMY:UoSRstoYTns:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=_NWk3RhAAMY:UoSRstoYTns:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=_NWk3RhAAMY:UoSRstoYTns:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=_NWk3RhAAMY:UoSRstoYTns:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/_NWk3RhAAMY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/_NWk3RhAAMY/wait-dont-add-that-feature.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-GCJg_52awU8/Tzwco2xG6KI/AAAAAAAAAbE/_tebYf2SPhU/s72-c/simplicity.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.jitbit.com/2012/03/wait-dont-add-that-feature.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-6985850316202254688</guid><pubDate>Wed, 25 Jan 2012 18:13:00 +0000</pubDate><atom:updated>2012-03-20T03:49:13.186-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>Why Developers Hate Antiviruses</title><description>I hate antivirus software. I really do. Like almost &lt;b&gt;every desktop software developer&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
And the reasons are:
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;#1 - False-positive alarms&lt;/h2&gt;&lt;br /&gt;
I'm sick and tired that my software is being detected as a "virus"...&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;...in spite of being signed with a trusted Verisign certificate.&lt;/li&gt;
&lt;li&gt;...in spite of being .NET-based (a platform which is not very "virus-authoring-friendly", so to speak) and not even using any code-obfuscation.&lt;/li&gt;
&lt;li&gt;...in spite of using the "ClickOnce" installation-technology (in other words - the code runs in a sandbox).&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;Why?&lt;br /&gt;
&lt;br /&gt;
Because if your software has some kind of copy-protection built-in (encrypts and stores serial numbers, hides parts of the source code to protect from reverse engineering etc.) - an antivirus &lt;i&gt;will&lt;/i&gt; most likely detect some "very dangerous" trojan.&lt;br /&gt;
&lt;br /&gt;
Because if your software tracks mouse or monitors keyboard (like our &lt;a href="http://www.jitbit.com/autotext/"&gt;AutoText&lt;/a&gt; for instance) - an antivirus &lt;i&gt;will&lt;/i&gt; detect a malware.&lt;br /&gt;
&lt;br /&gt;
Because if your software is some kind of a "compiler" - i.e. it's capable of building its own EXE-files - an antivirus &lt;i&gt;will&lt;/i&gt; detect a self-replicating virus. Oh, and all your EXE-files will also be marked as viruses by the way (since you're most likely using a "self-executing-unpacker-code + data" architecture, which is considered a risk-factor by most antiviruses, no idea why).&lt;br /&gt;
&lt;br /&gt;
Because if your software uses the "ClickOnce" technology (an auto-update framework that comes from Microsoft and is &lt;i&gt;built-in&lt;/i&gt; to Windows!) - an antivirus &lt;i&gt;will&lt;/i&gt; detect a "trojan downloader" and block your website in some cases.&lt;br /&gt;
&lt;br /&gt;
These are just the few... And these are the actual reports I deal with every week. "Help, AVG blocks your installer saying it's a Trojan!", "Help, Opera has just blocked the downloaded file!".&lt;br /&gt;
&lt;br /&gt;
EVERY. FUCKING. WEEK.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;#2 - Antivirus vendors not dealing with false-positive reports properly&lt;/h2&gt;&lt;br /&gt;
Now, dear antivirus companies! I understand - &lt;b&gt;Users&lt;/b&gt; come first. &lt;i&gt;Their&lt;/i&gt; security is your utmost concern. If someone sends you a virus sample - dealing with it is your #1 priority. I understand. I'm one of your paying users after all.&lt;br /&gt;
&lt;br /&gt;
But &lt;i&gt;please&lt;/i&gt; don't forget about us, the developers. We do send samples as well - the "false-positive" samples. We deserve some response. Fine, let it be within a week. Two weeks. A month. Two months. But please react!&lt;br /&gt;
&lt;br /&gt;
Instead, some of you do not even have a feedback form or a forum on your website so we can upload a false-positive... And those who do, sometimes require us to send you our code-signing certificates, home-addresses, company papers and photo-IDs... We're guilty by suspicion. Everything is a virus until the author proves the opposite.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;PS. In fairness, though, some antivirus companies do have these feedback forms in place, have nice developer support, and react promptly.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;#3 - Antivirus my ass!&lt;/h2&gt;&lt;br /&gt;
Create a simple C program with a code like this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="color: blue;"&gt;#include&lt;/span&gt; &amp;lt;windows.h&amp;gt;&lt;br /&gt;
&lt;span style="color: blue;"&gt;#include&lt;/span&gt; &amp;lt;string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue;"&gt;int&lt;/span&gt; __stdcall WinMain(HINSTANCE,HINSTANCE,LPSTR,&lt;span style="color: blue;"&gt;int&lt;/span&gt;)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;return&lt;/span&gt; MessageBoxA(0,(std::&lt;span style="color: blue;"&gt;string&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"-&amp;gt;"&lt;/span&gt;)+GetCommandLineA()+&lt;span style="color: #a31515;"&gt;"&amp;lt;-"&lt;/span&gt;).c_str(),&lt;span style="color: #a31515;"&gt;"Cmdline"&lt;/span&gt;,0);&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Compile it with a free "express" edition of Visual Studio 2008:&lt;br /&gt;
&lt;code&gt;cl -Os -EHs-c- -GR- -MD test.cpp /link -fixed:no user32.lib -incremental:no -out:test.exe&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Now test this program with your favorite antivirus. Voila! A "TR/ATRAPS.Gen" has been detected.&lt;br /&gt;
&lt;br /&gt;
Congrats! You've just wrote your first virus!&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-6985850316202254688?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=x-UmG0y4md8:bWR6q2642c8:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=x-UmG0y4md8:bWR6q2642c8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=x-UmG0y4md8:bWR6q2642c8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=x-UmG0y4md8:bWR6q2642c8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=x-UmG0y4md8:bWR6q2642c8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/x-UmG0y4md8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/x-UmG0y4md8/why-developers-hate-antiviruses.html</link><author>noreply@blogger.com (Alex)</author><thr:total>29</thr:total><feedburner:origLink>http://blog.jitbit.com/2012/01/why-developers-hate-antiviruses.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-3301260455662263679</guid><pubDate>Sat, 24 Dec 2011 08:48:00 +0000</pubDate><atom:updated>2011-12-25T06:49:32.151-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">announcements</category><category domain="http://www.blogger.com/atom/ns#">startups</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>Our Two Cents on SOPA</title><description>&lt;b&gt;Jitbit Software has just transferred all of it's domains away from GoDaddy because of their SOPA bill support.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
That's the least I can do. I'm outside the US, so I don't have a congressman to contact. If you are - sending a letter to your congressman is the only way to prevent the bill from being approved.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;If you’re not sure what the "Stop Online Piracy Act" is - visit &lt;a href="http://fightforthefuture.org/pipa/" rel="nofollow"&gt;this link&lt;/a&gt; and read &lt;a href="https://docs.google.com/a/thenextweb.com/document/d/1pkjK3fllT3Oojtl3tsk5CC2cnIIKiWGodPHGdDAknjQ/edit?hl=en_US&amp;pli=1" rel="nofollow"&gt;SOPA For Dummies&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Now, there's a question that haunts me these days. &lt;i&gt;Lots&lt;/i&gt; of non-tech friends, ex-colleagues, even some fellow hackers keep asking me:&lt;blockquote&gt;&lt;b&gt;"If you're selling downloadable software online, you're supposed to support SOPA, right?"&lt;/b&gt;&lt;/blockquote&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;1. No, software companies don't benefit from SOPA&lt;/h2&gt;&lt;br /&gt;
I've said this many many times and I'm gonna say it again: &lt;i&gt;if you're a software company - stop worrying about "pirates".&lt;/i&gt; Stop throwing piles of money at a complicated top-notch software-protection system. An "ok" system is just fine, just to keep kids from messing around with your licensing system and writing key-generators. But beware of the "unbreakable" systems.&lt;br /&gt;
&lt;br /&gt;
First of all, "pirates" don't pay anyway. These users have already made their decision. They'll keep looking for a way to get your app free of charge. Nag screens and functional limitations will only annoy them.&lt;br /&gt;
&lt;br /&gt;
And if your app is "unbreakable" - &lt;b&gt;they turn to a competitor and you lose a user.&lt;/b&gt; In fact, making your app "unbreakable" brings other risks as well - eCommerce fraud, stolen credit cards, chargebacks etc.&lt;br /&gt;
&lt;br /&gt;
So, one or two cracked packages floating around on torrent-websites are just fine. In fact, we have tons of customers who bought our tools after trying the pirated version and loving it.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;2. Guess what - SOPA won't even work&lt;/h2&gt;&lt;br /&gt;
SOPA targets HTTP and DNS protocols. Leaving behind the torrent-protocol. Which utilizes neither HTTP or DNS. And which has the 99% of the world pirated traffic. My cracked packages will still be out there somewhere.&lt;br /&gt;
&lt;br /&gt;
Here's what will happen: huge corporations get a new way of suing and shutting down competing websites. Lots of young companies and startups move their websites, servers, domains outside the US to minimise the risk - just like they're moving away from GoDaddy right now (see &lt;a href="http://thenextweb.com/insider/2011/12/24/go-daddy-lost-21054-domains-yesterday-in-wake-of-sopa-pr-disaster/" rel="nofollow"&gt;GoDaddy lost 21k domains in one day&lt;/a&gt;). Online businesses switch to European payment-processing gateways. End-users experience longer latency. US hosting companies, data-centers, domain-registrars lose their customers just like GoDaddy loses it right now. Google won't be able to crawl "blocked" websites, moving the crawlers to data-centers overseas (still making "bad" websites appear in its cache). The majority of online sales moves from away from the US to the outside world. Etc.&lt;br /&gt;
&lt;br /&gt;
And guess what the pirates are still there. Outside the HTTP/DNS protocol scope.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-3301260455662263679?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=L2k9Vo8BJR4:rOLP80EfmDs:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=L2k9Vo8BJR4:rOLP80EfmDs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=L2k9Vo8BJR4:rOLP80EfmDs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=L2k9Vo8BJR4:rOLP80EfmDs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=L2k9Vo8BJR4:rOLP80EfmDs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/L2k9Vo8BJR4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/L2k9Vo8BJR4/our-2-cents-on-sopa.html</link><author>noreply@blogger.com (Alex)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/12/our-2-cents-on-sopa.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-5080210216699594574</guid><pubDate>Fri, 16 Dec 2011 10:55:00 +0000</pubDate><atom:updated>2011-12-27T08:26:09.272-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">self-development</category><category domain="http://www.blogger.com/atom/ns#">entrepreneurship</category><category domain="http://www.blogger.com/atom/ns#">infographics</category><title>[Infographics] The Ultimate Career Advice</title><description>I'm SO happy to be in the middle.&lt;br /&gt;
&lt;br /&gt;
And don't forget to check the &lt;a href="http://blog.jitbit.com/2008/02/24-steps-to-success.html"&gt;24 Steps To Success&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-HyWb745lAWo/TushIJQpMpI/AAAAAAAAAag/O4fSjoMOO14/s1600/BeInTheMiddle.png" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-5080210216699594574?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=TpOpRCl3xlI:7QrZkojoc9E:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=TpOpRCl3xlI:7QrZkojoc9E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=TpOpRCl3xlI:7QrZkojoc9E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=TpOpRCl3xlI:7QrZkojoc9E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=TpOpRCl3xlI:7QrZkojoc9E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/TpOpRCl3xlI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/TpOpRCl3xlI/infographics-ultimate-career-advice.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-HyWb745lAWo/TushIJQpMpI/AAAAAAAAAag/O4fSjoMOO14/s72-c/BeInTheMiddle.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/12/infographics-ultimate-career-advice.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-658429190676692189</guid><pubDate>Mon, 28 Nov 2011 14:20:00 +0000</pubDate><atom:updated>2012-03-18T06:59:34.708-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">cloud</category><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>Rethinking the Cloud</title><description>For months I've been thinking that a "cloud-server" is just an overpriced version of a &lt;a href="http://en.wikipedia.org/wiki/Virtual_private_server" rel="nofollow"&gt;VPS&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Don't get me wrong, I get the platform - as a software engineer. As a business owner - I even get all the benefits - elasticity, reliability, scalability, flexibility and all the other &lt;nobr&gt;"bilities"&lt;/nobr&gt;. On the other hand...&lt;br /&gt;
&lt;br /&gt;
See, a regular VPS also runs "virtually" - just like the cloud. It's isolated from the host-machine failures - just like the cloud. The latest VPS-software (say, vSphere) can even do load-balancing, shadowing and real-time switching between physical hosts in case of a hardware failure - &lt;i&gt;just like the cloud&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
So, what's the difference then?&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Actually with a VPS you might end up paying for &lt;i&gt;unused&lt;/i&gt; CPU-cycles, &lt;i&gt;unused&lt;/i&gt; hard-disk operations and &lt;i&gt;unused&lt;/i&gt; extra RAM. But that's fine with me. As long as it's cheaper.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;No cloud for "fat" servers&lt;/h2&gt;&lt;br /&gt;
Let's have a look at one of our virtual servers - it runs a couple of static websites and two huge ASP.NET SaaS-applications along with their databases. It has an 80 gig hard-drive and 4 gigs of memory. Every month it eats up 500 gigs of traffic. And the monthly price is &lt;i&gt;under $100&lt;/i&gt;. Now, according to &lt;a href="http://calculator.s3.amazonaws.com/calc5.html" rel="nofollow"&gt;Amazon's Pricing Calculator&lt;/a&gt; setting up a similar server in the cloud would cost &lt;i&gt;around $500 a month&lt;/i&gt;. &lt;a href="http://www.youtube.com/watch?v=pA7nHD5ORUA&amp;t=0m55s" rel="nofollow" target="_blank"&gt;Seems expensive?&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;That's not how you estimate the cloud&lt;/h2&gt;&lt;br /&gt;
Recently, while doing a project for our hosted help desk app, I realized &lt;i&gt;that's not how you estimate the cloud&lt;/i&gt;. While VPS'es are fine for heavy &amp; &lt;i&gt;continuous&lt;/i&gt; work, the cloud can be great for occasional stuff, when buying a separate server would be ridiculous.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Real-life example: virtual emails for the helpdesk app&lt;/h2&gt;&lt;br /&gt;
We figured we need a new feature for our &lt;a href="http://www.jitbit.com/hosted-helpdesk/"&gt;helpdesk app&lt;/a&gt;. &lt;b&gt;We wanted to provide our customers with &lt;i&gt;free temporary email-addresses&lt;/i&gt;&lt;/b&gt;. And not just random addresses, but the ones that use the same subdomain as the SaaS web-application.&lt;br /&gt;
&lt;br /&gt;
I mean, if "Acme Motorcycles" runs their SaaS-helpdesk at "acme.jitbit.com" I want to give them the "support@acme.jitbit.com" address. So they can start using it right away, without configuring POP3/IMAP interfaces, or any other complicated stuff.&lt;br /&gt;
&lt;br /&gt;
To make this work I needed a "catch-all" email setup that will intercept all emails like &lt;code&gt;*@*.jitbit.com&lt;/code&gt;. And the only way I found I could do this (aside from writing lots of code and setting up a weird DNS configuration)  was to set up a Linux machine running Postfix agent.&lt;br /&gt;
&lt;br /&gt;
I couldn't use my existing servers cause they're Windows-based. I did not want to rent a $20 linux box just for that... And then I realized that the cloud could be the ideal solution.&lt;br /&gt;
&lt;br /&gt;
I'll save the step-by-step instructions for another post, let me just concentrate on the price here.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;It turned out an Amazon server doing this kind of mail routing for us would cost... Around 35 cents a month.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;35 cents a month&lt;/i&gt;. It even has a 10 GB drive (9.5 GB of which is obviously a free space) and runs 24/7. Which means, if I lower the disk space and set up a script that schedules this server to start/stop every 10 minutes (enough for email routing) it'd be even less. But I won't even bother. Cause - did I mention - Amazon's micro instances stay free for the first year.&lt;br /&gt;
&lt;br /&gt;
I'm a cloud fanboy now.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-658429190676692189?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=W0ZrbOm_lS0:vHs8gAY__3Q:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=W0ZrbOm_lS0:vHs8gAY__3Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=W0ZrbOm_lS0:vHs8gAY__3Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=W0ZrbOm_lS0:vHs8gAY__3Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=W0ZrbOm_lS0:vHs8gAY__3Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/W0ZrbOm_lS0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/W0ZrbOm_lS0/rethinking-cloud.html</link><author>noreply@blogger.com (Alex)</author><thr:total>1</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/11/rethinking-cloud.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-7505365446691062219</guid><pubDate>Sat, 12 Nov 2011 19:08:00 +0000</pubDate><atom:updated>2011-12-25T06:36:38.730-08:00</atom:updated><title>Trying Rails &amp; Mac, confessions of a .NET developer</title><description>&lt;br /&gt;
I run &lt;b&gt;Windows on my MacBook&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Windows&lt;/i&gt; - because I'm a .NET developer and our startup is mainly Microsoft-based. And, to be honest, I &lt;i&gt;like&lt;/i&gt; Windows 7. Finally, a decent OS from Microsoft.&lt;br /&gt;
&lt;br /&gt;
And &lt;i&gt;MacBook&lt;/i&gt; - because it's simply the best hardware you can get for it. The unibody design is awesome, the keyboard &amp; touchpad are great, the 17" screen is fabulous... I love my Mac. I'm practically an Apple fanboy.&lt;br /&gt;
&lt;br /&gt;
The only thing I don't like about my Mac - is Mac OS X.&lt;br /&gt;
&lt;br /&gt;
It just didn't suit me from the very beginning. That blurry font-rendering, that mouse acceleration you can't disable... Also, I'm a &lt;a href="http://blog.jitbit.com/2010/09/how-gaming-affects-your-productivity.html"&gt;gaming junkie&lt;/a&gt; and, let's say, Mac is not the most popular gaming platform.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;But let's try a Mac for a change&lt;/h2&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Yesterday we had a new project idea and my cofounder suggested we do it on Rails. I was pretty open-minded about this. After all, it's always nice to try new languages, frameworks and environments, right?&lt;br /&gt;
&lt;br /&gt;
And, hey, all the cool startup guys do their startups on Macs! There &lt;i&gt;must&lt;/i&gt; be a reason, right? I want to be like that 37Signalish/YCombinatorish startup crowd. I want to be like those cool kids doing trendy Web 2.0 apps on their Macs. I don't want to be "a PC" from the &lt;a href="http://www.youtube.com/watch?v=9DWLyrljLDk" rel="nofollow"&gt;Apple commercials&lt;/a&gt;. I want to be the "skinny-hipster-Mac". So let's develop in Ruby. Hell yeah!&lt;br /&gt;
&lt;br /&gt;
Also, Macs should be easy to use, right? Everything works "out of the box", right? I mean, my Mac came from Apple. Same company that made my iPhone. And my iPad. And my iPod. And my &lt;i&gt;other &lt;/i&gt;iPod (gee I really &lt;i&gt;am&lt;/i&gt; an Apple fanboy). Also, I'm kinda familiar with *nix operating systems, the Bash command processor and stuff... So, there should be no problem right?&lt;br /&gt;
&lt;br /&gt;
"Totally", - that was Max, my cofounder, - "no problem. Works right out of the freaking box"&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;The long journey&lt;/h2&gt;&lt;br /&gt;
"Out of the box" turned into 40 hours of installing, reinstalling and configuring stuff. I'm not judging, just describing the steps I had to take to prepare my Mac to write some Rails code. Maybe it's because I'm just a dumb Windows guy.&lt;br /&gt;
&lt;br /&gt;
First I figured that I need, well, Rails installed. Along with a Mercurial client. That should be enough to get me started and shouldn't take more than an hour to install.&lt;br /&gt;
&lt;br /&gt;
While trying to install both Rails and Mercurial I got a bunch of error messages about an outdated Python version I had on my Mac. Fine, let's get a fresh version from Python.org... Didn't work. The "Pyhton.prg" version installs side-by-side with the built-in "Apple Python" and Mac OS still thinks I have an old version... After some head-scratching I decided to let my Mac check for updates - and bingo, Python was updated. But still, the version was not good enough for Rails &amp; Mercurial... After another hour of black magic with python &amp; &lt;a href=="http://mxcl.github.com/homebrew/" rel="nofollow"&gt;homebrew&lt;/a&gt; and forcing &lt;i&gt;another &lt;/i&gt;software update the Mercurial client was finally up &amp; working.&lt;br /&gt;
&lt;br /&gt;
But not Rails. It turned out it requires the "ruby-dev" package installed. And, well, the only way to get "ruby-dev" I found - is to install XCode. The big, heavyweight development suit from Apple.&lt;br /&gt;
&lt;br /&gt;
Fine.&lt;br /&gt;
&lt;br /&gt;
I tried downloading version 4.0 but the Apple website gave me an error in Chrome. I tried opening it in Safari, and it asked me to regster as an Apple developer.&lt;br /&gt;
&lt;br /&gt;
Fine.&lt;br /&gt;
&lt;br /&gt;
Let's get a developer ID. I filled out a lengthy form, confirmed my email address, got myself a developer ID, and... the Apple website showed me the exact same error message I got from Chrome earlier.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-VWZ9kLgRKRg/TsK2tg-n3UI/AAAAAAAAAaI/r-PoTXFL5mk/s1600/u6lr.Screen%2Bshot%2B2011-11-12%2Bat%2B19-24-49.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" width="500" src="http://2.bp.blogspot.com/-VWZ9kLgRKRg/TsK2tg-n3UI/AAAAAAAAAaI/r-PoTXFL5mk/s400/u6lr.Screen%2Bshot%2B2011-11-12%2Bat%2B19-24-49.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
OK, there is another way to install XCode - to get it from the AppStore. But you need a Mac OS 10.7 Lion for that. Which is another hour of downloading, another hour installing and another $30 to Apple, because Lion is a paid sucka... OK, I'm on it. Gimme that Lion.&lt;br /&gt;
&lt;br /&gt;
Another couple of hours downloading XCode 4.2, installing it, configuring all the "gems", and finally, after 40 hours of having sex with my Mac I was finally able to open "localhost:3000" and start writing some code.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Same on Windows&lt;/h2&gt;&lt;br /&gt;
During that weekend I had to reboot to Windows a couple of times to fix some minor bugs in our helpdesk app and do some support stuff... And at some point, while in Windows, I had to make an urgent fix in our Rails app. I was too lazy to reboot back to Mac OS. So I decided to fix that on Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;I went to &lt;a href="http://railsinstaller.org/" rel="nofollow"&gt;RailsInstaller.org&lt;/a&gt;, installed Rails, "pulled" the app from the repo, made the change, tested it on "localhost:3000", and pushed my changes back to the repo. And all that - in 9 minutes.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Wow.&lt;br /&gt;
&lt;br /&gt;
9 minutes. Including the coding part. And including the time I spent Googling for tips &amp; best practices on setting up Notepad++ for Rails development.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-p-4GXuE6XKU/TsK2mVPQN5I/AAAAAAAAAZ8/wwXdxlKmhRg/s1600/wnqn.screenshot_15.11.2011_15-52.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" width="500" src="http://2.bp.blogspot.com/-p-4GXuE6XKU/TsK2mVPQN5I/AAAAAAAAAZ8/wwXdxlKmhRg/s400/wnqn.screenshot_15.11.2011_15-52.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Sorry, folks. Call me a pervert, but I'm doing Rails development on Windows now.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;I know!&lt;/h2&gt;&lt;br /&gt;
I know that it's just me being dumb and, maybe, too used to Windows-ish ways of doing things. I know my Mac software was outdated. I know that every Mac developer probably already has XCode installed. I know I was having problems with the Unix-part of my Mac, not the shiny part of Mac OS. I know that in Windows it also takes time to install Visual Studio, SQL Server and other stuff to get you started (none of this is required for Rails though), I know comparing setup times on a platform you work with daily to a platform you've never used before is a bit unfair.&lt;br /&gt;
&lt;br /&gt;
Some day I will make another attempt to move to the Light Side of the Force. Who knows, maybe even learn Vim! But we have a project to get done, so... Maybe next weekend.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-7505365446691062219?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=nuu6R5zxBjA:LAcEOWMIRQc:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=nuu6R5zxBjA:LAcEOWMIRQc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=nuu6R5zxBjA:LAcEOWMIRQc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=nuu6R5zxBjA:LAcEOWMIRQc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=nuu6R5zxBjA:LAcEOWMIRQc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/nuu6R5zxBjA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/nuu6R5zxBjA/trying-rails-mac-confessions-of-net.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-VWZ9kLgRKRg/TsK2tg-n3UI/AAAAAAAAAaI/r-PoTXFL5mk/s72-c/u6lr.Screen%2Bshot%2B2011-11-12%2Bat%2B19-24-49.png" height="72" width="72" /><thr:total>39</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/11/trying-rails-mac-confessions-of-net.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-8677748626564892297</guid><pubDate>Mon, 31 Oct 2011 14:38:00 +0000</pubDate><atom:updated>2011-10-31T08:24:41.733-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">self-development</category><category domain="http://www.blogger.com/atom/ns#">productivity</category><title>Boosting Creativity Tip #1</title><description>&lt;h2&gt;"Ideas don't come from watching television" Seth Godin.&lt;/h2&gt;&lt;br /&gt;
Stop watching. Start &lt;b&gt;reading books&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
When you read a book, your brain is in the "uber-creative" mode. It analyses the text and tries to visualize what you read. It builds abstractions, pictures, sometimes even a whole new universe... Every time your read something - your brain is working out in gym.&lt;br /&gt;
&lt;br /&gt;
On the contrary, when you watch - everything is pre-created for you. You just sit there and &lt;i&gt;consume&lt;/i&gt; the picture. Your brain rests. Everything is pre-constructed.&lt;br /&gt;
&lt;br /&gt;
And just like your body passes through different sleep-phases before it goes to the &lt;a href="http://en.wikipedia.org/wiki/Rapid_eye_movement_sleep" rel="nofollow"&gt;REM sleeping phase&lt;/a&gt;, your brain passes through different creativity phases before it reaches the "uber-creativity" peak. This means, the reading process should last, uninterrupted, 10 minutes least. So we're talking fiction books, not Twitter, not blogs or news feeds. Not even professional literature. Fiction books. Biographies. Semi-fiction books, like &lt;a href="http://www.amazon.com/gp/product/1451648537/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;tag=jitbit-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=1451648537" rel="nofollow"&gt;Steve Jobs story&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=jitbit-20&amp;l=as2&amp;o=1&amp;a=1451648537&amp;camp=217145&amp;creative=399373" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;padding:0" /&gt; or &lt;a href="http://www.amazon.com/gp/product/1936719118/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;tag=jitbit-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=1936719118" rel="nofollow"&gt;Anything You Want&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=jitbit-20&amp;l=as2&amp;o=1&amp;a=1936719118&amp;camp=217145&amp;creative=399373" width="0" height="0" border="0" alt="" style="border:none !important; margin:0px !important;padding:0" /&gt; by Derek Sivers (highly recommended, by the way).&lt;br /&gt;
&lt;br /&gt;
All the coolest ideas I had - I had while reading a book or listening to a great talk. So here are some tips for reading more:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;Take reading to where you have to wait&lt;/b&gt; - in the lines, at the landromat. Use public transportation - buses and the tube - instead of a car.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use gadgets&lt;/b&gt;. Use your smartphone. &lt;i&gt;Buy an electronic reader&lt;/i&gt; and take it wherever you go. Since I bought my first Kindle, I read much more. &lt;i&gt;Much&lt;/i&gt; more. Though now I prefer Sony over Kindle.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Always have something to read.&lt;/b&gt; And contrary to common belief - it's great to read &lt;i&gt;several&lt;/i&gt; books at a time. It's working out, remember?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use audiobooks&lt;/b&gt; when jogging, biking or cooking&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Read less&lt;/b&gt;. Read books you enjoy. If the book doesn't feel "right" after the first chapter - move on, don't force yourself. Don't feel pressured to read a book just because someone gave it to you as a present. Or you got it free at some conference. Stop. Move on. Otherwise only a half of your brain will be actually reading, the other half will be busy fixing your attention.&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-8677748626564892297?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=FpVJk5NE0W8:xNgznMdYXqM:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=FpVJk5NE0W8:xNgznMdYXqM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=FpVJk5NE0W8:xNgznMdYXqM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=FpVJk5NE0W8:xNgznMdYXqM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=FpVJk5NE0W8:xNgznMdYXqM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/FpVJk5NE0W8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/FpVJk5NE0W8/boosting-creativity-tip-1.html</link><author>noreply@blogger.com (Alex)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/10/boosting-creativity-tip-1.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-8379589689598344258</guid><pubDate>Fri, 26 Aug 2011 08:37:00 +0000</pubDate><atom:updated>2011-12-25T06:36:56.571-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">macro recorder</category><category domain="http://www.blogger.com/atom/ns#">seo</category><title>Outgoing Links Effect for SEO: Experiment</title><description>There's been a lot of debate about whether external linking helps or hurts your SEO and most of the SEO experts including the &lt;a href="http://www.seomoz.org/blog/external-linking-good-for-seo-whiteboard-friday" rel="nofollow"&gt;gurus at SEOmoz&lt;/a&gt; tend to think of external-linking as a &lt;i&gt;good &lt;/i&gt;strategy.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
I made a simple experiment about six months ago. And discovered the flip-side of the coin. Here are the exact steps I took:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;I have a page that ranks on top of Google's SERP. It's our &lt;a href="http://www.jitbit.com/macro-recorder/"&gt;Macro Recorder&lt;/a&gt; homepage. I've put a lot of effort to get it there and it took us five (5) years of hard "white-hat" work to rank high on "macro recorder", "mouse recorder", "macro program", "keyboard macro" and all the variations.&lt;/li&gt;
&lt;li&gt;I've put an external link on that page - linking to a &lt;a href="http://en.wikipedia.org/wiki/Macro_recorder"&gt;Wikipedia-article&lt;/a&gt; on the very same topic - "macro recording". It's a &lt;i&gt;highly&lt;/i&gt; relevant link, obviously. And what can be more trusted and authoritative than Wikipedia?.&lt;/li&gt;
&lt;li&gt;Boom. In one day the Wikipedia article has outranked my page in the SERP.&lt;/li&gt;
&lt;/ol&gt;Enough said.&lt;br /&gt;
&lt;br /&gt;
So be careful.&lt;br /&gt;
&lt;br /&gt;
I guess in my particular case the reason was as follows: domains like Wikipedia are much, much more "trusted" and "relevant" in Google's eyes, that's why adding one tiny link to it's macro-recording article rocket-launched the article outranking my own page.&lt;br /&gt;
&lt;br /&gt;
Removing the link restored rankings back to normal. But it took several days.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-8379589689598344258?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=_aOaA7u-5So:50N9CwMygTU:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=_aOaA7u-5So:50N9CwMygTU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=_aOaA7u-5So:50N9CwMygTU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=_aOaA7u-5So:50N9CwMygTU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=_aOaA7u-5So:50N9CwMygTU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/_aOaA7u-5So" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/_aOaA7u-5So/external-links-effect-for-seo.html</link><author>noreply@blogger.com (Alex)</author><thr:total>1</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/08/external-links-effect-for-seo.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-5457312068508245503</guid><pubDate>Wed, 03 Aug 2011 14:46:00 +0000</pubDate><atom:updated>2011-08-03T15:27:56.358-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">web-design</category><category domain="http://www.blogger.com/atom/ns#">usability</category><category domain="http://www.blogger.com/atom/ns#">startups</category><category domain="http://www.blogger.com/atom/ns#">Mistakes I Made</category><category domain="http://www.blogger.com/atom/ns#">UI</category><title>Go Get A Cofounder [Mistakes I Made #5]</title><description>&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #999999;"&gt;This is the 5th post in the "&lt;a href="http://blog.jitbit.com/search/label/Mistakes%20I%20Made"&gt;Mistakes I made&lt;/a&gt;" series, where I share the "donts" of my startup experience.&lt;/span&gt;&lt;/blockquote&gt;I'll start from afar. My website has a number of pricing tables and I thought the tables look just fine. Until one morning I realized that they're a &lt;i&gt;complete usability nightmare&lt;/i&gt;. Here's the "before" look:&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="fancyimg" href="http://1.bp.blogspot.com/-87UyFXUcSyw/TjkrdbCw8iI/AAAAAAAAAYc/tGxBn61_0FM/s1600/oldpricingpage.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="255" width="400" src="http://1.bp.blogspot.com/-87UyFXUcSyw/TjkrdbCw8iI/AAAAAAAAAYc/tGxBn61_0FM/s400/oldpricingpage.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
A messy pile of text, prices, red-fonts and buttons organized into variable-height rows. I spent an hour or two tuning it until I had a much cleaner design:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="fancyimg" href="http://3.bp.blogspot.com/-mkUWBTh4vAI/TjkrwDWvlrI/AAAAAAAAAYk/41FS7c-1lL0/s1600/newpricingpage.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="255" width="400" src="http://3.bp.blogspot.com/-mkUWBTh4vAI/TjkrwDWvlrI/AAAAAAAAAYk/41FS7c-1lL0/s400/newpricingpage.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
A small number of tiny changes - making the price "stand out", adding background colors to the table rows etc - has improved my conversions by almost 10% and sure saved me from a number of support-questions... But I had a crappy pricing page &lt;i&gt;for years&lt;/i&gt;. All because I didn't have a cofounder to tell me to "go and redesign this crap".&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;You need someone to call you an idiot&lt;/h2&gt;&lt;br /&gt;
There are downsides of being a single founder. Even aside from the fact that a startup is too much for one person to bear. You need someone to challenge you. Someone to question your decisions.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Someone to call you an idiot&lt;/i&gt;. To tell you "man, this is crap, and needs rethinking".&lt;br /&gt;
&lt;br /&gt;
Employees won't call you an idiot. You're the boss. Even if they try, they fall back as soon as they face resistance - "ah, whatever, you're the boss, it's your call". In fact, most of the failed startups I know have this in common: the lack of someone calling the founder an idiot. That eventually makes him come to believe that he's always right.&lt;br /&gt;
&lt;br /&gt;
Customers won't call you an idiot as well. The ones that would - have already chosen your competitor's product. Also, as &lt;a href="http://www.joelonsoftware.com/articles/fog0000000356.html" rel="nofollow"&gt;we all know from Joel&lt;/a&gt;:&lt;ol&gt;&lt;li&gt;Customers Don't Know What They Want.&lt;/li&gt;
&lt;li&gt;Stop Expecting Customers to Know What They Want.&lt;/li&gt;
&lt;/ol&gt;As a single person in charge you get used to your creations (that you're obviously in love with), not noticing the obvious idiocies. At that point getting a cofounder becomes more important than anything else. So go and get one now.&lt;br /&gt;
&lt;br /&gt;
PS. I highly recommend reading PG's &lt;a href="http://www.paulgraham.com/notnot.html" rel="nofollow"&gt;essay on this&lt;/a&gt; (scroll to #6).&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-5457312068508245503?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=6FI8xBFxuyw:0YzMLTZrVSY:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=6FI8xBFxuyw:0YzMLTZrVSY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=6FI8xBFxuyw:0YzMLTZrVSY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=6FI8xBFxuyw:0YzMLTZrVSY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=6FI8xBFxuyw:0YzMLTZrVSY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/6FI8xBFxuyw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/6FI8xBFxuyw/go-get-cofounder-mistakes-i-made-5.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-87UyFXUcSyw/TjkrdbCw8iI/AAAAAAAAAYc/tGxBn61_0FM/s72-c/oldpricingpage.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/08/go-get-cofounder-mistakes-i-made-5.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-8045657719654573271</guid><pubDate>Mon, 27 Jun 2011 14:12:00 +0000</pubDate><atom:updated>2011-06-29T11:18:34.866-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">web-design</category><category domain="http://www.blogger.com/atom/ns#">usability</category><category domain="http://www.blogger.com/atom/ns#">startups</category><category domain="http://www.blogger.com/atom/ns#">UI</category><title>"90% of your users are idiots"</title><description>I just overheard this conversation between two developers at a co-working site:&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;"I plan creating a prototype for my new XXXX application, whatcha think it should be - a web-app, or a desktop app?"&lt;/b&gt;&lt;/blockquote&gt;The answer was:&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;"90% of your users are idiots who won't be able to tell the difference"&lt;/b&gt;&lt;/blockquote&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
I think I just found my answer to &lt;a href="http://en.wikipedia.org/wiki/Phrases_from_The_Hitchhiker's_Guide_to_the_Galaxy#Answer_to_the_Ultimate_Question_of_Life.2C_the_Universe.2C_and_Everything_.2842.29" rel="nofollow"&gt;the ultimate question of life universe and everything&lt;/a&gt; and it's not "42".&lt;br /&gt;
&lt;br /&gt;
It's &lt;i&gt;"90% of your users are idiots".&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Now thats a questionable term to describe your customers. I don't think 90% of &lt;i&gt;my&lt;/i&gt; users are idiots. But. That's &lt;i&gt;the&lt;/i&gt; way to think of your users when making design decisions and building your interface.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Wondering if you should make this main button big or small?&lt;br /&gt;
&lt;i&gt;"90% of your users are idiots"&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Wondering if it should be one button or two?&lt;br /&gt;
&lt;i&gt;"90% of your users are idiots"&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Wondering if your installer should ask all those really important questions, like, how it should name the installation folder under "Program Files"? Or just perform the default action with no questions at all?&lt;br /&gt;
&lt;i&gt;"90% of your users are idiots"&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;You're absolutely sure that the "pricing" page of your website should have fifteen different "plans" of your SaaS application?&lt;br /&gt;
&lt;i&gt;"90% of your users are idiots"&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Wondering if you should publish the installer as a ZIP-file or as an EXE-file?&lt;br /&gt;
&lt;i&gt;"90% of your users are idiots"&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;And, in good conscience, don't &lt;b&gt;you&lt;/b&gt; want to be an idiot when you're on the other side of the screen? I do! I want to be an idiot!&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Please &lt;/i&gt;let me be an idiot. I want things to "just work". Don't make me figure my way through all the setup procedures. "Don't make me think" (c) Steve Krug.&lt;br /&gt;
&lt;br /&gt;
I've been a computer nerd since I'm 11. I mean, I love the command line and stuff... But when I urgently need a port-scanner to test my server vulnerabilities after it's been &lt;a href="http://blog.jitbit.com/2011/03/protecting-your-startups-server-from.html"&gt;hacked&lt;/a&gt;, I don't want the &lt;a href="http://www.nmap.org/" rel="nofollow"&gt;nmap&lt;/a&gt; tool, with a dozen of command-line options and a bunch of drivers it requires me to install. I just want a big red "scan" button. I'm an idiot, OK?&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-8045657719654573271?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=oZDGKsySHic:to8nDIKOryY:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=oZDGKsySHic:to8nDIKOryY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=oZDGKsySHic:to8nDIKOryY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=oZDGKsySHic:to8nDIKOryY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=oZDGKsySHic:to8nDIKOryY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/oZDGKsySHic" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/oZDGKsySHic/90-of-your-users-are-idiots.html</link><author>noreply@blogger.com (Alex)</author><thr:total>58</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/06/90-of-your-users-are-idiots.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-7998105518890379486</guid><pubDate>Sun, 22 May 2011 10:22:00 +0000</pubDate><atom:updated>2011-05-30T13:09:09.575-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">funny</category><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>What If Drivers Were Hired Like Programmers?</title><description>&lt;i&gt;What if drivers were hired like software developers?&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Job title:&lt;/b&gt; car driver&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Job requirements:&lt;/b&gt; professional skills in driving normal- and heavy-freight cars, buses and trucks, trolley buses, trams, subways, tractors, shovel diggers, contemporary light and heavy tanks currently in use by NATO countries.&lt;br /&gt;
&lt;br /&gt;
Skills in rally and extreme driving are obligatory!&lt;br /&gt;
Formula-1 driving experience is a plus.&lt;br /&gt;
&lt;br /&gt;
Knowledge and experience in repairing of piston and rotor/Wankel engines, automatic and manual transmissions, ignition systems, board computer, ABS, ABD, GPS and car-audio systems by world-known manufacturers - obligatory!&lt;br /&gt;
&lt;br /&gt;
Experience with car-painting and tinsmith tasks is a plus.&lt;br /&gt;
&lt;br /&gt;
The applicants must have certificates by BMW, General Motors and Bosch, but not older than two years.&lt;br /&gt;
&lt;br /&gt;
Compensation: $15-$20/hour, depends on the interview result.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Education requirements:&lt;/b&gt; Bachelor's Degree of Engineering.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;color:grey"&gt;Saw this on a programmer's &lt;a href="http://www.jitbit.com/asp-net-forum/"&gt;forum&lt;/a&gt;, but was unable to locate the original. Let me know, I'd be happy to link.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-7998105518890379486?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=yJmWMG3FO4U:axoicsku5OM:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=yJmWMG3FO4U:axoicsku5OM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=yJmWMG3FO4U:axoicsku5OM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=yJmWMG3FO4U:axoicsku5OM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=yJmWMG3FO4U:axoicsku5OM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/yJmWMG3FO4U" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/yJmWMG3FO4U/what-if-drivers-were-hired-like.html</link><author>noreply@blogger.com (Alex)</author><thr:total>33</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/05/what-if-drivers-were-hired-like.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-516008546217869043</guid><pubDate>Sat, 30 Apr 2011 12:02:00 +0000</pubDate><atom:updated>2011-05-22T17:01:17.646-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>Rootkit on a brand new Toshiba Laptop</title><description>&lt;blockquote&gt;Sorry for the offtopic, this post has nothing to do with startups, web-development or entrepreneurship, but I felt I should still write this&lt;/blockquote&gt;I've just discovered a built-in rootkit in my wife's brand new Toshiba laptop. A non-removable malicious software application right from the manufacturer. That even captured and sent-out screenshots of my wife's work... But first things first.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;First, let me apologize for the tone of this post and kinda incoherent writing. Please try to imagine where I am right now and please accept my apologies - I just finished dealing with this issue, like, 10 minutes ago. And, to be honest, I'm angry as a bear.&lt;/blockquote&gt;It all started with some corrupted files &amp; folders on my wife's laptop. No problem - I launched the "CHKDSK" utility and scheduled a disk scan on restart. No big deal, right?&lt;br /&gt;
&lt;br /&gt;
Except - there was no disk scan when I rebooted. I tried again - no scan. I tried everything: rebooting to safe-mode, marking the disk as a "dirty" one with the "CHKNTFS" tool, booting with recovery disk - nothing helped. I just couldn't launch checkdisk or schedule it for the next startup. So, I figured that the checkdisk file itself might be corrupted, so I ran "SFC /scannow" command that, supposedly, should restore it.&lt;br /&gt;
&lt;br /&gt;
The command went up to 47% and aborted with the error message "Windows Resource Protection could not perform the requested operation". Hmmm... May be there's a virus preventing this? So I opened the &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653" rel="nofollow"&gt;Process Explorer&lt;/a&gt; tool (God bless SysInternals) and found a suspicious process called "&lt;b&gt;rcpnetp.exe&lt;/b&gt;".&lt;br /&gt;
&lt;br /&gt;
Why hello there! The process has no "Description" and "Company Name" fields, it loads "rcpnetp.dll" via &lt;b&gt;AUTOCHK.EXE&lt;/b&gt;. A-ha! &lt;b&gt;The tool that is supposed to launch startup disk scan!&lt;/b&gt; This can't be a coincidence. I opened &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb963902" rel="nofollow"&gt;Autoruns&lt;/a&gt; (God bless SysInternals #2) trying to find some registry key or something that launched this "rcpnetp" process.&lt;br /&gt;
&lt;br /&gt;
Surprisingly, I found nothing. I decided to kill the process, delete those files from the "System32" folder and reboot the laptop. &lt;b&gt;Imagine my frustration when those processes were back there, up and running!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I spent hours trying to figure, where this monster launches from... I tried several antiviruses, manual registry search, SysInternals tools... Nothing. So I turned to Google. And found &lt;a href="http://c0d3h4x0r.wordpress.com/2009/04/09/computracelojack-for-laptops-rcpnetp-exe-rpcnetp-dll-autochk-exe/" rel="nofollow"&gt;some&lt;/a&gt; &lt;a href="http://www.rom.by/article/BIOS-nyj_trojan_ot_Absolute_Software" rel="nofollow"&gt;links&lt;/a&gt; (the second link is in Russian).&lt;br /&gt;
&lt;br /&gt;
It turns out the files are loaded from BIOS:&lt;br /&gt;
&lt;blockquote style='background-color:#ebebeb'&gt;It's a "security" software built into the BIOS of many laptops called CompuTrace. It is sorta like "LoJack" for laptops. If your laptop is stolen, CompuTrace can notify a server where your laptop is. It is written by &lt;a href="http://www.absolute.com/en/" rel="nofollow"&gt;Absolute Software&lt;/a&gt; and provided to laptop manufacturers so they can include it in the BIOSes they supply for their laptops.&lt;br /&gt;
&lt;br /&gt;
CompuTrace is a rootkit &amp;lt;...&amp;gt; &lt;b&gt;it will hijack the AUTOCHK.EXE process&lt;/b&gt; that normally runs during Windows boot, and instead run its own code. One issue this rootkit may cause: &lt;b&gt;chkdsk will not run during boot like it is supposed to&lt;/b&gt;.&lt;/blockquote&gt;&lt;br /&gt;
&lt;h2&gt;So, what is this thing?&lt;/h2&gt;&lt;br /&gt;
I'll summarize what I've found out so far:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;This thing lives in your BIOS&lt;/b&gt;.&lt;br /&gt;
When the system starts, it searches for "autochk.exe" in your system folder, supporting both FAT and NTFS drives. Then it hijacks "autochk.exe" substituting its own code instead, which unpacks and starts the "rcpnetp" process. It also verifies the registry key &lt;i&gt;[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\Session Manager] "BootExecute"= autocheck autochk&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-X6NQcuTxU1s/Tbv05U6_xCI/AAAAAAAAARg/c8HB4cX5guw/s1600/Computrace-agent.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="231" width="400" src="http://2.bp.blogspot.com/-X6NQcuTxU1s/Tbv05U6_xCI/AAAAAAAAARg/c8HB4cX5guw/s400/Computrace-agent.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-pVzf0PS1rms/Tbv1LVv-DvI/AAAAAAAAARo/jy2wIGXHsmw/s1600/Computrace-rpcnet.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="334" width="400" src="http://1.bp.blogspot.com/-pVzf0PS1rms/Tbv1LVv-DvI/AAAAAAAAARo/jy2wIGXHsmw/s400/Computrace-rpcnet.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;When the Internet connection is up, it updates itself via the internet (connecting to 209.53.113.xxx - xxx.absolute.com), tries to send some personal info to the server and then &lt;b style='color:red'&gt;listens to the instructions&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-w0ByfaiBGfg/Tbv1UDi5-ZI/AAAAAAAAARw/AGoBpXpmQBQ/s1600/Computrace-wininet.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="312" width="400" src="http://3.bp.blogspot.com/-w0ByfaiBGfg/Tbv1UDi5-ZI/AAAAAAAAARw/AGoBpXpmQBQ/s400/Computrace-wininet.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;This crap is &lt;b&gt;white-listed&lt;/b&gt; by most known antivirus packages that's why it was not found by my antivirus.&lt;/li&gt;
&lt;li&gt;This crap has even created screenshots of my wife's activity and placed the JPG files into the %WinDir% folder, it gathered system reports about the laptop, our external IP-address etc. etc. etc.&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;How to fight this&lt;/h2&gt;&lt;br /&gt;
If you find this process ("rcpnetp.exe") in the processes list, follow these steps:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Delete the files rpcnetp.exe, rpcnetp.dll from your system&lt;/li&gt;
&lt;li&gt;Move autochk.exe to another folder&lt;/li&gt;
&lt;li&gt;Edit the registry:&lt;br /&gt;
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]&lt;br /&gt;
"BootExecute"=hex(7):00,00&lt;/li&gt;
&lt;li&gt;Note that this crap will come back after reinstalling Windows&lt;/li&gt;
&lt;li&gt;Note that you can forget about the checkdisk tool forever. &lt;br /&gt;
&lt;/ol&gt;&lt;h2&gt;What's the big deal?&lt;/h2&gt;
Now, &lt;b&gt;this rootkit does no harm.&lt;/b&gt; But &lt;ol&gt;&lt;li&gt;I don't like that someone collects my personal info without my permission&lt;/li&gt;
&lt;li&gt;I don't want my computer running programs I never approved&lt;/li&gt;
&lt;li&gt;I don't like the possibility that a dishonest employee at Absolute Software can execute remote commands on millions of laptops. There's a name for this. It's called a &lt;b&gt;botnet&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;I don't like the possibility that some malware authors can piggyback this system.&lt;/li&gt;
&lt;li&gt;I want to be able to CHKDSK my hard-drive for Pete's sake!!!&lt;/li&gt;
&lt;/ol&gt;UPDATE: After some more Googling I discovered that this was a big news story about a year ago, and &lt;b&gt;some &lt;/b&gt;(not all) laptop manufacturers have released BIOS updates that remove this rootkit... But my wife's laptop was bought on Amazon only 2 months ago, it's a Toshiba Satellite T135, and the rootkit is still there. I just tried downloading the latest BIOS for our Toshiba - and the "rcpnetp" is still there even after reflashing BIOS. So check your laptops! Esp ASUS and Toshibas.        

UPDATE 2: Turns out that the AVG free antivirus detects this as a rootkit and tries to remove the files. But - of course - it's back up after a system restart.        

UPDATE 3: Here's the &lt;a href="http://www.google.com/patents?id=qIiaAAAAEBAJ" rel="nofollow"&gt;patent&lt;/a&gt; for this thing.   &lt;br /&gt;
&lt;br /&gt;
UPDATE 4: I've just sent a support ticket to Absolute Software requesting to remove this tool, let's wait for their reply...&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-516008546217869043?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=b5Jn6kiNrXM:yHxNYqfezfk:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=b5Jn6kiNrXM:yHxNYqfezfk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=b5Jn6kiNrXM:yHxNYqfezfk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=b5Jn6kiNrXM:yHxNYqfezfk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=b5Jn6kiNrXM:yHxNYqfezfk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/b5Jn6kiNrXM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/b5Jn6kiNrXM/rootkit-on-brand-new-toshiba-laptop.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-X6NQcuTxU1s/Tbv05U6_xCI/AAAAAAAAARg/c8HB4cX5guw/s72-c/Computrace-agent.jpg" height="72" width="72" /><thr:total>33</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/04/rootkit-on-brand-new-toshiba-laptop.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-5804875392251464990</guid><pubDate>Sun, 17 Apr 2011 14:28:00 +0000</pubDate><atom:updated>2011-10-07T15:44:19.482-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">web-design</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">asp.net</category><title>Why I hate IE6. And why I miss IE6</title><description>&lt;b&gt;I'm getting kinda tired of cross-browser development&lt;/b&gt;. Yes, I know... The more the better, competition rocks, rendering standards are great, FireFox is cool, Chrome is awesome, and the evil MSIE monopoly is sacrilege.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I mean, I do hate IE6. Just like I hate IE7. I even hate IE8 a little bit. And, of course, I hate IE9 (for that lousy font rendering and no proper CSS3 support). But I do miss the IE6-days. I never thought I'd say this, but I do miss the days when IE6 was &lt;i&gt;The Browser For Them All&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
I still have to support IE6 and IE7. I'm sorry, I'm not some big corporation to say "OK, we're &lt;i&gt;phasing out&lt;/i&gt; support for the older browsers". I have a freaking ton of customers running older browsers, OK? Running all possible kinds of older browsers, actually. Including the stupid IE6. I cannot just &lt;i&gt;phase them out&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
But even without the older browsers there are still lots of issues with &lt;b&gt;the newest non-IE browsers&lt;/b&gt; as well. I won't bore you with the details, but trust me - both Chrome and Firefox have their nuances. And every tiny piece of JavaScript, every non-trivial HTML-code has to be tested in a &lt;i&gt;zoo&lt;/i&gt; of browsers. Not to mention mobile devices.&lt;br /&gt;
&lt;br /&gt;
Cross-browser is fine, competition is good, the more the better... But I'm just getting kinda tired of &lt;b&gt;this&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-l2ZxEIykSng/Tar3D0HNYzI/AAAAAAAAAQw/DRJ3QuhupME/s1600/browsers.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="179" width="400" src="http://1.bp.blogspot.com/-l2ZxEIykSng/Tar3D0HNYzI/AAAAAAAAAQw/DRJ3QuhupME/s1600/browsers.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now, to make this post not so boring, here's a great "History of Web Browsers" infographic by &lt;a href="http://www.shah3d.com" rel="nofollow"&gt;Shahed Syed&lt;/a&gt; that he kindly allowed me to publish here. The history of browsers and their popularity over time:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.testking.com/techking/wp-content/uploads/2011/03/IG-Browser-Evo-2-760px.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" width="203" src="http://1.bp.blogspot.com/-0JnKh2z0FPg/TaG_gtL3NBI/AAAAAAAAAP8/aRrReltkNeA/s1600/IG-Browser-Evo-2-760px.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-5804875392251464990?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=htl6AfCIlWU:EAOjJpeDtXg:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=htl6AfCIlWU:EAOjJpeDtXg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=htl6AfCIlWU:EAOjJpeDtXg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=htl6AfCIlWU:EAOjJpeDtXg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=htl6AfCIlWU:EAOjJpeDtXg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/htl6AfCIlWU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/htl6AfCIlWU/why-i-miss-ie6.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-l2ZxEIykSng/Tar3D0HNYzI/AAAAAAAAAQw/DRJ3QuhupME/s72-c/browsers.png" height="72" width="72" /><thr:total>11</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/04/why-i-miss-ie6.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-417283585881838011</guid><pubDate>Tue, 12 Apr 2011 09:47:00 +0000</pubDate><atom:updated>2011-05-22T17:09:08.251-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">seo</category><category domain="http://www.blogger.com/atom/ns#">startups</category><title>Lessons learned from The Traffic Spike</title><description>My recent blog post about the &lt;a href="http://blog.jitbit.com/2011/04/chinese-magic-drive.html"&gt;Chinese hard drive&lt;/a&gt; has attracted HUGE amounts of traffic. It's been featured at TechCrunch, Slashdot, Reddit, StumbleUpon and others. Of course, after being upvoted at HackerNews - my long-time personal favorite.&lt;br /&gt;
&lt;br /&gt;
It was "liked" by 14K (forteen thousand) people on Facebook and retweeted more than 2.5K times. My blog has received about 450 000 visits (and still counting) - thank God I host it at blogger.com, otherwise my server would be dead by now.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oDHxAxVHlJs/Tabd_DOUmrI/AAAAAAAAAQg/0zkHMbVeJck/s1600/ga.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="107" width="400" src="http://1.bp.blogspot.com/-oDHxAxVHlJs/Tabd_DOUmrI/AAAAAAAAAQg/0zkHMbVeJck/s400/ga.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
But what's in it for me and my startup? Let's have a look at the ups and downs:&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Pros&lt;/h3&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Self-esteem and excitement&lt;/b&gt;. I'd lie if I didn't say that my ego was flattered. Come on, wouldn't you be happy to get this &lt;strike&gt;shitload&lt;/strike&gt; impressive amount of visitors and mentions?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SEO-effect&lt;/b&gt;. The blog has attracted hundreds of links. Those links are &lt;i&gt;completely&lt;/i&gt; outside of my business's target keywords niche (the most weird ones came from a marijuana-growing forum, German politician's blog and Vietnamese social network)... But I guess I'll still earn some "trust-rank" for my blog.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Brand awareness&lt;/b&gt;. Hopefully. In Vietnam and Germany, at least.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Conversion&lt;/b&gt; - I gained some new subscribers and Twitter-followers (read on for the exact numbers)&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Cons&lt;/h3&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Low conversion rates&lt;/b&gt;. And by "low" I mean "almost zero". Only 15% of the visitors actually checked out some other pages on the blog. Out of 450 000 visitors only 500 people (0.11%) have subscribed to my feed and only 100 (0.03%) have followed me on Twitter. Another 100 (0.03%) visitors cared to view the "about this blog" page and only 400 people (0.08%) have checked my main (non-blog) website so far.&lt;br /&gt;
&lt;br /&gt;
I'd call this kind of traffic - "carpet bombing" (as opposed to "laser-guided missile"). Still, the SEO effect should not be underestimated.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Comment-moderation is exhausting&lt;/b&gt;. The Internet &lt;strike&gt;is full of idiots&lt;/strike&gt; has some unrestrained individuals. Every five minutes some Anonymous was posting an aggressive, racist, offensive or meaningless comment. I spent &lt;i&gt;hours&lt;/i&gt; removing hundreds of the most awful ones.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Productivity drop&lt;/b&gt;. You end up checking your blog every half an hour, reviewing stats or the number of retweets. And - moderating comments.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Of course this does not mean that the "viral" approach is dead. You should keep creating great "shareable" content... Just remember that the "viral" traffic converts badly, the bounce-rate is 95%. It won't drive the actual sales. But do concentrate on converting this traffic into RSS or mailing list subscribers instead.&lt;br /&gt;
&lt;br /&gt;
According to this great post by Rob Walling - &lt;a href="http://www.softwarebyrob.com/2011/02/02/your-traffic-sources-have-a-half-life/" rel="nofollow"&gt;every traffic source has a half-life&lt;/a&gt; and this was a striking illustration. Traffic spikes after being featured at TechCrunch, being upvoted at Reddit, being "Stumbled Upon" or retweeted - are always followed by a decay. And your job is to keep your website &lt;i&gt;prepared&lt;/i&gt; to "The Traffic Spike" and make the most of it.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, my blog was completely UNprepared. It didn't even have an "about" page until last week...&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Steps to prepare your blog&lt;/h3&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Add the "sharing" widgets&lt;/b&gt; to your pages where appropriate. Facebook "like" button, "retweet" button and a couple of bookmarking sites - are a must. You can use a service like  &lt;a href="http://www.addthis.com/" rel="nofollow"&gt;addthis.com&lt;/a&gt; or add the buttons manually.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Optimize your feed&lt;/b&gt;: host your feed at &lt;a href="http://feedburner.google.com/" rel="nofollow"&gt;feedburner&lt;/a&gt; to track your stats, ensure fast delivery and optimized markup. Add "share" and "retweet" buttons to all your RSS feed items. If you use feedburner, go to "Optimize" - "Feed flare" and add Facebook and Declicious. The "retweet" flare is not there by default, you have to paste this line into the "Add new flare" field: &lt;pre&gt;http://erik.thauvin.net/download/tweetflare.xml&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Call-to-action in every post&lt;/b&gt;: add a "subscribe" link to the bottom of every post of your blog. This includes the RSS feed (your RSS items will get published and republished many many times).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Content is king&lt;/b&gt; - OK, you must be sick of this one. But, guess what, it's still true!&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-417283585881838011?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=utBUWutYHu8:mD2V6gg3aD0:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=utBUWutYHu8:mD2V6gg3aD0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=utBUWutYHu8:mD2V6gg3aD0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=utBUWutYHu8:mD2V6gg3aD0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=utBUWutYHu8:mD2V6gg3aD0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/utBUWutYHu8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/utBUWutYHu8/lessons-learned-from-traffic-spike.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-oDHxAxVHlJs/Tabd_DOUmrI/AAAAAAAAAQg/0zkHMbVeJck/s72-c/ga.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/04/lessons-learned-from-traffic-spike.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-4589798910243311609</guid><pubDate>Fri, 08 Apr 2011 07:47:00 +0000</pubDate><atom:updated>2011-04-08T03:52:24.043-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>Electronic Reader Running Doom 2</title><description>Being a huge fan of electronic readers, I could not pass this up. This is a leaked video of &lt;b&gt;Doom 2&lt;/b&gt; running on "PocketBook 360 Plus" prototype, recorded by a &lt;a href="http://pocketbook-int.com/" rel="nofollow"&gt;PocketBook&lt;/a&gt; employee. To be precise, it's running &lt;a href="http://prboom.sourceforge.net/about.html"&gt;PrBoom&lt;/a&gt; - a Linux port of the original game from id Software.&lt;br /&gt;
&lt;br /&gt;
This looks pretty amazing - the FPS seems really nice for an e-ink screen.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe title="YouTube video player" width="460" height="289" src="http://www.youtube.com/embed/QOPZrVsCEHg" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
UPDATE: I've just dug up that the e-Ink screen model being used on this device is "e-Ink Vizplex V110". Full device specs:&lt;br /&gt;
&lt;blockquote&gt;Screen - 5″ V110&lt;br /&gt;
CPU - FreeScale i.MX35 ARM11 533MHz&lt;br /&gt;
RAM - 128mb RAM&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-4589798910243311609?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=xSFUJOfdBBc:vSiiksXERo0:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=xSFUJOfdBBc:vSiiksXERo0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=xSFUJOfdBBc:vSiiksXERo0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=xSFUJOfdBBc:vSiiksXERo0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=xSFUJOfdBBc:vSiiksXERo0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/xSFUJOfdBBc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/xSFUJOfdBBc/electronic-reader-running-doom-2.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/QOPZrVsCEHg/default.jpg" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/04/electronic-reader-running-doom-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-203604079829494333</guid><pubDate>Thu, 07 Apr 2011 09:22:00 +0000</pubDate><atom:updated>2011-07-10T13:24:23.709-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">funny</category><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>Chinese Magical Hard-Drive</title><description>A Russian friend of mine has posted this absolutely amazing story.&lt;br /&gt;
&lt;br /&gt;
He works at a hard-drive repair center in a Russian town right next to the Chinese border. A couple of days ago a customer has brought a broken 500Gb USB-drive that he had bought in a Chinese store across the river, for an &lt;i&gt;insanely &lt;/i&gt;low price. But the drive was not working: if you, say, save a movie onto the drive, playing the saved movie back resulted in replaying just the last 5 minutes of the film.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-smstNS9zQJM/TZ1-nyC7h0I/AAAAAAAAAPY/y4_DCNw5ljg/s1600/hdd.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="221" width="320" src="http://2.bp.blogspot.com/-smstNS9zQJM/TZ1-nyC7h0I/AAAAAAAAAPY/y4_DCNw5ljg/s320/hdd.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The whole service center was rolling on the floor laughing. This was not the first time someone has brought a disk like that. And the previous drives were also bought in China... They opened up the drive right in front of the astonished customer. This is what they saw:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2OAOnW3Ad2E/TZ2AAKiuoBI/AAAAAAAAAPg/cC3PP09wPjg/s1600/00f63d6s.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="221" width="320" src="http://2.bp.blogspot.com/-2OAOnW3Ad2E/TZ2AAKiuoBI/AAAAAAAAAPg/cC3PP09wPjg/s320/00f63d6s.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
It's a 128-MB flash-drive. Working in a "looped" mode - when it runs out of space, it starts overwriting from the beginning. My friend said they're still trying to figure out how did the Chinese do that. Because the drive reports "correct" file sizes and disk-capacity. And the "looped-overwriting" does not touch the other files present on the drive.&lt;br /&gt;
&lt;br /&gt;
The device looks pretty convincing - lots of tech labels and stuff... The Chinese salesman even saved something to the drive to demonstrate that it "works" in the store.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-203604079829494333?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=ygCwGyp7zqQ:YP23spSsIrA:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=ygCwGyp7zqQ:YP23spSsIrA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=ygCwGyp7zqQ:YP23spSsIrA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=ygCwGyp7zqQ:YP23spSsIrA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=ygCwGyp7zqQ:YP23spSsIrA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/ygCwGyp7zqQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/ygCwGyp7zqQ/chinese-magic-drive.html</link><author>noreply@blogger.com (Alex)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-smstNS9zQJM/TZ1-nyC7h0I/AAAAAAAAAPY/y4_DCNw5ljg/s72-c/hdd.jpg" height="72" width="72" /><thr:total>118</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/04/chinese-magic-drive.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-2702918914753536597</guid><pubDate>Mon, 04 Apr 2011 07:53:00 +0000</pubDate><atom:updated>2011-04-10T16:01:45.926-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">web-design</category><category domain="http://www.blogger.com/atom/ns#">funny</category><title>Happy Webmasters Day</title><description>While deploying a new build of our &lt;a href="http://www.jitbit.com/hosted-helpdesk/"&gt;hosted help-desk&lt;/a&gt; I ran into a bunch of "not found" service pages... And then realized that it's the 4th of April!&lt;br /&gt;
&lt;br /&gt;
I think we should make the 4th of April the &lt;b&gt;official webmaster's day&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; font-size: 120pt;margin-bottom:0px"&gt;4&lt;span style="font-size: 80pt;"&gt;.&lt;/span&gt;04&lt;/div&gt;&lt;br /&gt;
Happy holiday to all the webmasters and web-developers out there!&lt;br /&gt;
&lt;br /&gt;
PS. Actually, if you google for "webmaster day" you'll find that GoDaddy's customer support has declared it April 29. But that's just marketing. I guess &lt;b&gt;"4/04"&lt;/b&gt; fits much better. Let's declare this day our holiday and celebrate de-facto!&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-2702918914753536597?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=QbKt_ayDW8E:42_WquNh-Xw:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=QbKt_ayDW8E:42_WquNh-Xw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=QbKt_ayDW8E:42_WquNh-Xw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=QbKt_ayDW8E:42_WquNh-Xw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=QbKt_ayDW8E:42_WquNh-Xw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/QbKt_ayDW8E" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/QbKt_ayDW8E/happy-webmasters-day.html</link><author>noreply@blogger.com (Alex)</author><thr:total>9</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/04/happy-webmasters-day.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-259448111678690179</guid><pubDate>Fri, 01 Apr 2011 10:36:00 +0000</pubDate><atom:updated>2011-05-22T17:10:16.238-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">asp.net</category><title>ASP.NET Session: Caching Expiring Values</title><description>&lt;blockquote class="news"&gt;Another post for ASP.NET/C# developers reading this blog. If you think these posts do not belong here, please leave a comment, and I'll consider moving my development articles to a separate blog.&lt;/blockquote&gt;Pretty often I need to cache something in the Session object, and expire the stored value after, say, 5 minutes. Just like it would in the ASP.NET Cache storage.&lt;br /&gt;
&lt;br /&gt;
But the session state has no expiration concept. And the Cache object - well, cache is not specific to a user-session, it's application-wide. So I created this tiny useful extension class for this. Hope the code explains itself:&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;font size="2" face="Courier New" color="black"&gt;&lt;font color="#008000"&gt;/// &amp;#60;summary&amp;#62;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;/// this class saves something to the Session object&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;/// but with an EXPIRATION TIMEOUT&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;/// (just like the ASP.NET Cache)&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;/// (c) Jitbit 2011. Feel free to use/modify/whatever&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;/// usage sample:&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;///&amp;nbsp; Session.AddWithTimeout(&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;///&amp;nbsp;&amp;nbsp; "key",&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;///&amp;nbsp;&amp;nbsp; "value",&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;///&amp;nbsp;&amp;nbsp; TimeSpan.FromMinutes(5));&lt;/font&gt;&lt;br /&gt;
&lt;font color="#008000"&gt;/// &amp;#60;/summary&amp;#62;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt; &lt;font color="#0000ff"&gt;class&lt;/font&gt; SessionExtender&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt; &lt;font color="#0000ff"&gt;void&lt;/font&gt; AddWithTimeout(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;this&lt;/font&gt; HttpSessionState session,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;string&lt;/font&gt; name,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;object&lt;/font&gt; &lt;font color="#0000ff"&gt;value&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#2B91AF"&gt;TimeSpan&lt;/font&gt; expireAfter)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session[name] = &lt;font color="#0000ff"&gt;value&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session[name + &lt;font color="#A31515"&gt;"ExpDate"&lt;/font&gt;] = &lt;font color="#2B91AF"&gt;DateTime&lt;/font&gt;.Now.Add(expireAfter);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt; &lt;font color="#0000ff"&gt;object&lt;/font&gt; GetWithTimeout(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;this&lt;/font&gt; HttpSessionState session,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;string&lt;/font&gt; name)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;object&lt;/font&gt; &lt;font color="#0000ff"&gt;value&lt;/font&gt; = session[name];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;if&lt;/font&gt; (&lt;font color="#0000ff"&gt;value&lt;/font&gt; == &lt;font color="#0000ff"&gt;null&lt;/font&gt;) &lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#0000ff"&gt;null&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#2B91AF"&gt;DateTime&lt;/font&gt;? expDate = session[name + &lt;font color="#A31515"&gt;"ExpDate"&lt;/font&gt;] &lt;font color="#0000ff"&gt;as&lt;/font&gt; &lt;font color="#2B91AF"&gt;DateTime&lt;/font&gt;?;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;if&lt;/font&gt; (expDate == &lt;font color="#0000ff"&gt;null&lt;/font&gt;) &lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#0000ff"&gt;null&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;if&lt;/font&gt; (expDate &amp;#60; &lt;font color="#2B91AF"&gt;DateTime&lt;/font&gt;.Now)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session.Remove(name);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session.Remove(name + &lt;font color="#A31515"&gt;"ExpDate"&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#0000ff"&gt;null&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#0000ff"&gt;value&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;/font&gt;&lt;br /&gt;
&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-259448111678690179?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=Kn2EPL6T2Ng:7Wf22od28T4:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=Kn2EPL6T2Ng:7Wf22od28T4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=Kn2EPL6T2Ng:7Wf22od28T4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=Kn2EPL6T2Ng:7Wf22od28T4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=Kn2EPL6T2Ng:7Wf22od28T4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/Kn2EPL6T2Ng" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/Kn2EPL6T2Ng/aspnet-session-caching-expiring-values.html</link><author>noreply@blogger.com (Alex)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/04/aspnet-session-caching-expiring-values.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-8128839991959187632</guid><pubDate>Wed, 30 Mar 2011 15:00:00 +0000</pubDate><atom:updated>2011-05-22T17:11:13.391-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">best practices</category><category domain="http://www.blogger.com/atom/ns#">startups</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">hosting</category><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>Protecting your startup's server from attacks</title><description>Our server was kinda hacked the other day. The attacker has obtained an FTP password for one of our servers and was able to download some stuff - thank God nothing critical... While I'll save the details on the attack for my next blog post (this is &lt;b&gt;quite a story&lt;/b&gt; actually! hackers have fooled our hosting company submitting a fake support request), I'm going to share some knowledge I've accumulated during the last couple of days dealing with the consequences.&lt;blockquote&gt;NB: my small company is powered by a bunch of Windows 2008 R2 servers, but some of these recommendations should fit any platform, not just Windows.&lt;/blockquote&gt;So, here we go. The steps I took to protect my VPS server from future attacks:&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b style="color: red;"&gt;Set up the lockout policy&lt;/b&gt;. By default your windows-server is not protected from a &lt;a href="http://en.wikipedia.org/wiki/Brute-force_attack" rel="nofollow"&gt;brute-force&lt;/a&gt; attack. An attacker, for instance, can open a thousand RDP (Remote Desktop) connections trying different username/password combinations...&lt;br /&gt;
&lt;br /&gt;
That's why you must set up the &lt;b&gt;lockout policy&lt;/b&gt; for your server. Open "Start - Run - secpol.msc - Security Settings - Account Policies - Account Lockout Policy". Set it to "5 times" and "5 minutes" for example - this will block an account for 5 minutes after 5 invalid login attempts.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Disable the "support user"&lt;/b&gt;. If you rent a server, very likely there'll be a support user account for your hosting provider's tech team. Disable it. Sometimes the security is compromised by the hoster's staff (mine was).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;No FTP unless required&lt;/b&gt;. Disable FTP, SMTP and other unneeded services unless your customers/applications really need it. Enable the FTP only when you're actually uploading files onto the server and limit it to your IP address.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Install a nice password manager&lt;/b&gt;. You'd be surprised how many people go for the "one password for everything" mode. Even some geeky tech nerds I know, even programmers and system administrators... &lt;b&gt;Don't&lt;/b&gt;. Even the service accounts &amp; database-users must have unique strong generated passwords only. I prefer the "&lt;a href="https://lastpass.com/" rel="nofollow"&gt;LastPass&lt;/a&gt;" manager which is available as a Chrome extension, and it saved me a ton of headache.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Backup&lt;/b&gt;. Backup. Backup. Backup. Both on-site and off-site. Create daily backup-jobs on your SQL server to backup your databases both locally and online. Even if you're running the free Express version of MS SQL Server there are still ways &lt;a href="http://blog.jitbit.com/2009/12/simulating-jobs-in-ms-sql-express.html"&gt;to create periodic "jobs"&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Here's our configuration: all databases are backed up twice a day - locally, and twice a week - to an online storage. For the online storage we use Microsoft &lt;a href="http://en.wikipedia.org/wiki/Windows_Live_SkyDrive" rel="nofollow"&gt;SkyDrive&lt;/a&gt;, it offers 25 gigs of free space (which is pretty amazing) and comes with a sync tool. Another similar option to consider would be &lt;a href="https://www.dropbox.com/home" rel="nofollow"&gt;DropBox&lt;/a&gt; of course.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Firewall&lt;/b&gt; is a must. You can use the Windows Server 2008 built-in&lt;br /&gt;
firewall, it's pretty good for a start, and then upgrade to something more sophisticated later. The rule of thumb here is - DISABLE EVERYTHING. Leave ports 80 and 443 open - and that's it.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Don't use standard ports&lt;/b&gt;. If you need anything beside the web-server open to the public (e.g. SQL server, terminal services) - then move the applications to non-standard ports, some weird number like 15089 etc.&lt;br /&gt;
&lt;br /&gt;
The Terminal Services (RDP) port can be changed in the registry, at "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber" (remember to restart the RDP service and allow incoming connections on the firewall).&lt;br /&gt;
&lt;br /&gt;
SQL Server ports can be adjusted in the "SQL Server Configuration Manager" tool - "Network Configuraion" - "Protocols for [INSTANCENAME]" - "TCP-IP" - right-click - "Properties".&lt;/li&gt;
&lt;li&gt;&lt;a name="8"&gt;&lt;/a&gt;&lt;b&gt;No "/admin/" folder or other standard names&lt;/b&gt;. Your website's CMS folder should not be named "http://www.website.com/admin/". Your admin user should not be named "administrator". The login page for ASP.NET forms authentication should not be named "login.aspx". Etc.. You get the point.&lt;/li&gt;
&lt;/ol&gt;&lt;span style="font-size: x-small;"&gt;P.S. Dear attacker! If you're reading this - please let us know what you were looking for. Why not just send us a note and we'll give you what you need - for free... We provide free versions of our software to bloggers, non-profit organizations, we give away huge discounts etc. etc. We're a small friendly company, let's talk :)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-8128839991959187632?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=VUDSSv762V8:2IKvfTntOow:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=VUDSSv762V8:2IKvfTntOow:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=VUDSSv762V8:2IKvfTntOow:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=VUDSSv762V8:2IKvfTntOow:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=VUDSSv762V8:2IKvfTntOow:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/VUDSSv762V8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/VUDSSv762V8/protecting-your-startups-server-from.html</link><author>noreply@blogger.com (Alex)</author><thr:total>9</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/03/protecting-your-startups-server-from.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-3361528384109466094</guid><pubDate>Tue, 15 Mar 2011 19:06:00 +0000</pubDate><atom:updated>2011-04-12T02:55:39.683-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">misc</category><category domain="http://www.blogger.com/atom/ns#">Russia</category><title>Thank God Japan is well prepared</title><description>This could sound outrageous. This could sound awful and even offensive. Please forgive me for saying this. But.&lt;br /&gt;
&lt;br /&gt;
Thank God the reactor disaster is happening &lt;b&gt;in Japan&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
As you might know, I was born in Russia before moving to the UK. Or - to be precise - I was born in the USSR. I was nine years old when &lt;a href="http://en.wikipedia.org/wiki/Chernobyl_disaster" rel="nofollow" target="_blank"&gt;Chernobyl&lt;/a&gt; happened. And I was watching all the lying TV reports claiming that "there's only 7 people dead, calm down, everything is under control, nothing to worry about". The government even refused to take help from the international community.&lt;br /&gt;
&lt;br /&gt;
And there was my father. A rocket scientist working for the military, he's been sent to that plant a couple of times. And he was telling me &lt;b&gt;the truth&lt;/b&gt;. That the firefighters who came to the scene were never even told it was a nuclear reactor (so they wouldn't get scared). That a dozen of firefighting units had only two (2!) Geiger counters (devices that measure radiation) and only one of them was working. So it was 3:00 AM (two hours after the explosion) before they actually realized that the radiation levels were dangerous. That none of the firefighters wore any protective gear. That they were not told how dangerously radioactive the smoke and the debris were. Most died from radiation exposure within three weeks.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The truth&lt;/b&gt; that, contrary to safety regulations, a combustible material (bitumen) had been used in the construction of the roof and the rest of the building (that's why the fire was so difficult to fight). That the plant operators were given respirators and potassium-iodide tablets and were &lt;b&gt;forced&lt;/b&gt; to continue working. That the reactor was shut down only 4 hours after the explosion. That the janitors were cleaning the building with bare hands and wet rags the next day.&lt;br /&gt;
&lt;br /&gt;
So thank God it's Japan. Not Iran or North Korea. And not some backward country that wouldn't be able to handle this. I am sorry for saying this. I have lots of friends living in Japan and God knows we all wish this never happened.&lt;br /&gt;
&lt;br /&gt;
Japanese are exceptionally well prepared for natural disasters. They are disciplined professionals. Their cultural background emphasizes code of honor. And I am sure that all those heroes who continue working on the nuclear plant despite the radiation levels are doing everything they can to save us from another Chernobyl. Our prayers are with them.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-3361528384109466094?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=aSMoImXXygU:FOogvx6bDAY:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=aSMoImXXygU:FOogvx6bDAY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=aSMoImXXygU:FOogvx6bDAY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=aSMoImXXygU:FOogvx6bDAY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=aSMoImXXygU:FOogvx6bDAY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/aSMoImXXygU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/aSMoImXXygU/thank-god-its-japan.html</link><author>noreply@blogger.com (Alex)</author><thr:total>13</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/03/thank-god-its-japan.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-6557915527423586020</guid><pubDate>Mon, 14 Mar 2011 12:02:00 +0000</pubDate><atom:updated>2011-03-14T05:02:58.462-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">misc</category><category domain="http://www.blogger.com/atom/ns#">tech talks</category><title>KeyFreeze - free tool that locks keyboard and mouse</title><description>I have kids so I know what it's like, when they're having a Skype-talk with their grandparents - they keep accidentally pressing buttons, moving the mouse etc etc.&lt;br /&gt;
&lt;br /&gt;
So I wrote a small free Windows app that locks keyboard and mouse while the screen stays active. Head over to &lt;a href="http://keyfreeze.com/"&gt;KeyFreeze.com&lt;/a&gt; to download it.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-6557915527423586020?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=qor0MP0tF5s:Gxu-wIxN3wg:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=qor0MP0tF5s:Gxu-wIxN3wg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=qor0MP0tF5s:Gxu-wIxN3wg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=qor0MP0tF5s:Gxu-wIxN3wg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=qor0MP0tF5s:Gxu-wIxN3wg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/qor0MP0tF5s" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/qor0MP0tF5s/keyfreeze-free-tool-that-locks-keyboard.html</link><author>noreply@blogger.com (Alex)</author><thr:total>6</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/03/keyfreeze-free-tool-that-locks-keyboard.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1661503906941457505.post-8360868343483399782</guid><pubDate>Tue, 22 Feb 2011 21:13:00 +0000</pubDate><atom:updated>2011-02-22T13:16:44.319-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">macro recorder</category><category domain="http://www.blogger.com/atom/ns#">announcements</category><title>Macro Recorder is dead. Long live Macro Recorder!</title><description>It's been a while since I announced anything "official" on this blog, but this announcement is worth mentioning here.&lt;br /&gt;
&lt;br /&gt;
Our four-months project is finished: we have completely rewritten Jitbit &lt;a href="http://www.jitbit.com/macro-recorder/"&gt;Macro Recorder&lt;/a&gt; to the .NET platform. It's a HUGE amount of work done. It seemed unbelievable, absolutely unachievable when we started it... But here we are. It's been published on our website and it works. Even on our old XP-based test computers.&lt;br /&gt;
&lt;h2&gt;What's so great about the new version?&lt;/h2&gt;&lt;br /&gt;
Why, there are several huge advantages:&lt;br /&gt;
&lt;br /&gt;
1. &lt;b&gt;The "ClickOnce" technology&lt;/b&gt; - Microsoft's deployment framework that enables the user to install and run an application by simply clicking a link in a web page. It even has a built-in auto-update feature. Which means - critical fixes and improvements reach Macro Recorder users faster. It works almost like in a web-application: we release a fix - all users get it instantly.&lt;br /&gt;
&lt;br /&gt;
2. &lt;b&gt;The .NET Framework&lt;/b&gt; - I'm so tired of C++ and VB6... Yes, I know, C++ is "cool". But I'm tired, sorry. The .NET framework makes the development process &lt;b&gt;amazingly fast&lt;/b&gt;. Adding new features and releasing updates for the Macro Recorder has never been easier for developers. And - we made the application compatible with .NET version 2.0, which makes it compatible even with the oldest Windows computers.&lt;br /&gt;
&lt;br /&gt;
3. &lt;b&gt;Code-signature&lt;/b&gt; - the application is now "signed" with a security certificate from Comodo. Which means - no scary "untrusted publisher" boxes when a user installs our application, no false alarms from antiviruses and firewalls.&lt;br /&gt;
&lt;blockquote&gt;Oh, don't get me started on this! Comodo (the certification authority) has been pestering me for weeks. They asked for my phone bills, they asked for copies of all documents possible, written signatures, bank account statements, utility contracts, address verifications... They called my cell phone and my landline number to verify we exist. In the middle of the night, of course, since I'm not in the US (I actually had to tell them how to dial outside the US: "dial 011..."). It took me dozens of emails, 5 lengthy support tickets, faxes... But it was totally worth it. Now I have that magic certificate that tells our users "those guys are real, relax and run the installer".&lt;/blockquote&gt;4. &lt;b&gt;Lots and lots of minor fixes&lt;/b&gt; throughout the application.&lt;br /&gt;
&lt;br /&gt;
I'm keeping my fingers crossed cause I've never been that scared in the history of Jitbit Software. Jitbit Macro Recorder is dead, ladies and gentlemen. Long live &lt;a href="http://www.jitbit.com/macro-recorder/"&gt;Jitbit Macro Recorder&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;&lt;br/&gt;
&amp;copy; &lt;a href="http://www.jitbit.com/"&gt;Jitbit Software&lt;/a&gt; &amp;nbsp; &lt;a href="http://feeds.feedburner.com/JitbitSoftwareBlog"&gt;subscribe to our feed&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661503906941457505-8360868343483399782?l=blog.jitbit.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=vlckYqJedgI:urAF5JNfG4w:6W8y8wAjSf4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=6W8y8wAjSf4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=vlckYqJedgI:urAF5JNfG4w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=vlckYqJedgI:urAF5JNfG4w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?i=vlckYqJedgI:urAF5JNfG4w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?a=vlckYqJedgI:urAF5JNfG4w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JitbitSoftwareBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JitbitSoftwareBlog/~4/vlckYqJedgI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JitbitSoftwareBlog/~3/vlckYqJedgI/macro-recorder-is-dead-long-live-macro.html</link><author>noreply@blogger.com (Alex)</author><thr:total>6</thr:total><feedburner:origLink>http://blog.jitbit.com/2011/02/macro-recorder-is-dead-long-live-macro.html</feedburner:origLink></item></channel></rss>

