<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
  <title>Akshell Blog</title>
  
  <link href="http://blog.akshell.com/" />
  <id>http://blog.akshell.com/</id>
  <updated>2012-02-23T09:44:45Z</updated>
  <author><name>Akshell</name></author>
  
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/akshell" /><feedburner:info uri="akshell" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><entry>
      <title>The HN Effect and Our Accidental Launch</title>
      <link type="text/html" href="http://blog.akshell.com/hn-effect/" />
      <id>http://blog.akshell.com/hn-effect/</id>
      <updated>2011-03-24T00:00:00Z</updated>
      <content type="html">&lt;p&gt;Mostly due to the fact that neither Anton nor I are cut out to be movie directors, 
producers or presenters, we submitted our YC application in the last moment at five minutes to 8pm PST. 
This was 6am in Moscow on Monday.&lt;/p&gt;

&lt;p&gt;Having only slept for 6 hours in the preceding 48, I hit the bunk right away, only to be 
awoken a few hours later. I stumbled to the computer to check our &lt;a href="http://getclicky.com/204510"&gt;Clicky&lt;/a&gt; logs to see if anybody 
from YC had already looked at the site. To my surprise, we had 200 visitors - twice the average daily uniques.&lt;/p&gt;

&lt;p&gt;At this point it became apparent that &lt;a href="http://twitter.com/yogsototh"&gt;@yogstoth&lt;/a&gt; had &lt;a href="http://news.ycombinator.com/item?id=2349127"&gt;submitted us to HN&lt;/a&gt;. 
I should say resubmitted, because Akshell has been on HN a &lt;a href="http://news.ycombinator.com/item?id=1261786"&gt;few&lt;/a&gt; 
&lt;a href="http://news.ycombinator.com/item?id=1357890"&gt;times&lt;/a&gt; &lt;a href="http://news.ycombinator.com/item?id=2217350"&gt;before&lt;/a&gt;. 
In fact, Anton and I "met" in the comments of the first submission.&lt;/p&gt;

&lt;p&gt;48 hours later, we have seen 20K+ visitors, with 300+ concurrent users online at
 peak, average time on site at 4+ minutes, a few investors knocking on the door and bloggers asking for interviews.&lt;/p&gt;

&lt;center&gt;
&lt;img src="http://i.imgur.com/A9a03.png" alt="" title="Hosted by imgur.com" /&gt;
&lt;/center&gt;

&lt;br/&gt;&lt;br/&gt;

&lt;h2&gt;What Went Wrong&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;we had no alerts in place to notify us of the swarm of HN 
	and twitter visitors - I was asleep and Anton was on the subway when things took off&lt;/li&gt;
&lt;li&gt;we had no monitoring other than top and Munin which could only be accessed from 
	localhost so was as good as useless as I couldn't set up an SSH SOCKS proxy&lt;/li&gt;
&lt;li&gt;we didn't have the necessary infrastructure nor a clear step by step plan for how 
	to scale &lt;i&gt;without downtime&lt;/i&gt; - the service was running on the cheapest 
	&lt;a href="http://www.linode.com/?r=49290d58b3c7b2bd4235478187d38ce7666f17cd"&gt;Linode&lt;/a&gt; available&lt;/li&gt;
&lt;li&gt;we didn't have a mechanism for capture user info other than getting them 
	to register after creating a webapp; as a result our conversion rate from visitor to registered developer was below 1%&lt;/li&gt;
&lt;li&gt;we didn't make it easy for people to Like or RT our URL, despite having this feature on the TODO list&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;What Went Right&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;we responded quickly by replying to people, posting the HN comments link on 
	Twitter and continued engaging users on all fronts&lt;/li&gt;
&lt;li&gt;our landing page was simple and to the point; we made the barriers to entry 
	as low as possible by letting users write code and run the webapp without registering&lt;/li&gt;
&lt;li&gt;people actually liked the service&lt;/li&gt;
&lt;li&gt;we coped with the load by: quickly adding cloudkick to improve our monitoring,
	 asking for advice on #linode on OTC and consulting &lt;a href="http://twitter.com/LordCope"&gt;Stephen&lt;/a&gt; a #devops expert from 
	 &lt;a href="http://atalanta-systems.com"&gt;Atalanta Systems&lt;/a&gt;, 
	 	drinking a lot of coffee and not sleeping for another 48 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;What We Learned&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;you should reply to people with questions&lt;/li&gt;
&lt;li&gt;you should make it as easy as possible for people to promote you&lt;/li&gt;
&lt;li&gt;you need both &lt;a href="https://cloudkick.com/referral/f23f7f71"&gt;Cloudkick&lt;/a&gt; and &lt;a href="http://www.pagerduty.com"&gt;PagerDuty&lt;/a&gt; 
set up &lt;i&gt;before&lt;/i&gt; you have an emergency&lt;/li&gt;
&lt;li&gt;you should find the fastest solution to your most pressing problem: we considered 
	upgrading our Linode instance which would've resulted in 15 minutes of downtime, 
	but instead opted for a RAM upgrade which was a 30s or so reboot which nobody noticed 
	due to the &lt;a href="http://www.cappuccino.org"&gt;Cappuccino&lt;/a&gt; IDE being cached by the browsers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Where to Next&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;now that the traffic has died down, we have upgraded our infrastructure and 
	are getting this update out to our users and the HN community&lt;/li&gt;
&lt;li&gt;we're trying to get the word out that Akshell is a serious development platform 
	and that we have developers lined up in Russia and elsewhere to quickly build webapps
	and API mashups for anyone who is interested&lt;/li&gt;
&lt;li&gt;we are keen to talk to companies with APIs that would like to use Akshell 
	for promotion and running "demos"&lt;/liul&gt;
&lt;li&gt;due to visa hassles, we are already booking the flights to the US, 
	despite not knowing whether we will be accepted into YC, so if anyone wants to talk 
	to us or meet when we are there, you can reach us at &lt;a href="mailto:info@akshell.com"&gt;info@akshell.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
It looks like &lt;a href="http://blog.rapportive.com/the-accidental-launch"&gt;accidental launches&lt;/a&gt; are becoming a 
bit of a tradition. Thank you to everyone who helped us get here. Every &lt;a href="http://news.ycombinator.com/item?id=2365612"&gt;Hacker News upvote&lt;/a&gt; 
and &lt;a href="http://twitter.com/akshell_com/status/51008657193844736"&gt;retweet&lt;/a&gt; counts!
&lt;/p&gt;</content>
    </entry>
  
    <entry>
      <title>Akshell 0.3</title>
      <link type="text/html" href="http://blog.akshell.com/akshell-0.3/" />
      <id>http://blog.akshell.com/akshell-0.3/</id>
      <updated>2011-02-14T00:00:00Z</updated>
      <content type="html">&lt;p&gt;
Akshell 0.3 is out! This release introduces a brand new IDE. It was
designed to provide a desktop-like experience in a browser
window. It's tightly integrated with the Akshell guts; it doesn't
require installation or configuration; you can use it from anywhere
without a hassle. And you even don't have to sign up to 
&lt;a href="http://www.akshell.com/ide/"&gt;try it&lt;/a&gt;!
The coolest IDE feature is Git support: not only you can take your code
from GitHub, but you can directly run Git commands, just like on your
local machine.
&lt;/p&gt;
&lt;p&gt;
The engine hasn't changed much, but there is good news about it too:
it will be open sourced soon. No vendor lock-in anymore, you'll be
able to run Akshell apps on your own server.
&lt;/p&gt;
&lt;p&gt;
So here is Akshell 0.3: the open source infrastructure and the sophisticated IDE.
&lt;a href="http://www.akshell.com/ide/"&gt;Give it a spin&lt;/a&gt;!
&lt;/p&gt;</content>
    </entry>
  
    <entry>
      <title>Introducing the json Attribute Type</title>
      <link type="text/html" href="http://blog.akshell.com/json/" />
      <id>http://blog.akshell.com/json/</id>
      <updated>2010-06-07T00:00:00Z</updated>
      <content type="html">&lt;p&gt;I'm happy to present a new type of database attributes: &lt;code&gt;json&lt;/code&gt;. It makes storing arbitrary JavaScript objects into the database really seamless. Serialization and deserialization are performed automatically; the API makes it impossible to store an invalid JSON. The type is opaque for database queries: it's just coerced to &lt;code&gt;string&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;As always, the main goal was simplicity. Here is an example of an evaluation session:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; rv.X.create({j: ['json', {prop: 'value'}]})
&amp;gt;&amp;gt;&amp;gt; rv.X.insert({j: [1, 2, 3]})
&amp;gt;&amp;gt;&amp;gt; rv.X.insert({j: 42})
&amp;gt;&amp;gt;&amp;gt; rv.X.insert({}) // use the default {prop: 'value'}
&amp;gt;&amp;gt;&amp;gt; repr(rv.X.all().get({attr: 'j'}))
[[1, 2, 3], 42, {prop: "value"}]
&lt;/code&gt;&lt;/pre&gt;</content>
    </entry>
  
    <entry>
      <title>Akshell 0.2</title>
      <link type="text/html" href="http://blog.akshell.com/akshell-0.2/" />
      <id>http://blog.akshell.com/akshell-0.2/</id>
      <updated>2010-05-18T00:00:00Z</updated>
      <content type="html">    &lt;p&gt;&lt;a href="http://www.akshell.com/"&gt;Akshell&lt;/a&gt; 0.2 is out! Akshell is is intended for rapid development of web applications in JavaScript and problem-free hosting them in the cloud. It features an online IDE; so the only tool required for development is a web browser. Akshell runtime environment enables applications to interact with each other; so they can be really modular and social.&lt;/p&gt;

&lt;p&gt;In the 0.2 version the engine has been changed significantly. The framework has been ported to new infrastructure. And the &lt;a href="http://vimeo.com/11831303"&gt;new screencast&lt;/a&gt; has been recorded (thanks to &lt;a href="http://twitter.com/olegpodsechin"&gt;Oleg Podsechin&lt;/a&gt; for narrating it).&lt;/p&gt;

&lt;p&gt;Because there are a number of backward incompatible changes, the 0.1 support is not going to be dropped any time soon. All 0.1 applications are unaffected by this release. &lt;/p&gt;

&lt;p&gt;In this post I'll describe the significant 0.2 features and migration from 0.1.&lt;/p&gt;

&lt;h4&gt;require()&lt;/h4&gt;

&lt;p&gt;Instead of the custom include() function of 0.1, the 0.2 release features &lt;a href="http://www.akshell.com/docs/0.2/ref/core/misc/#require"&gt;require()&lt;/a&gt; compatible with the &lt;a href="http://wiki.commonjs.org/wiki/Modules/1.1.1"&gt;CommonJS Modules 1.1.1&lt;/a&gt; proposal. It should make Akshell applications more portable and enable you to export existing CommonJS libraries to Akshell.&lt;/p&gt;

&lt;h4&gt;Binary&lt;/h4&gt;

&lt;p&gt;Now Akshell supports handling of binary data through the &lt;a href="http://www.akshell.com/docs/0.2/ref/core/misc/#Binary"&gt;Binary&lt;/a&gt; class. It's a mutable fixed-length numeric byte storage type. The &lt;a href="http://wiki.commonjs.org/wiki/Binary/F"&gt;CommonJS Binary/F&lt;/a&gt; proposal inspired its interface.&lt;/p&gt;

&lt;h4&gt;fs.File&lt;/h4&gt;

&lt;p&gt;The new &lt;a href="http://www.akshell.com/docs/0.2/ref/core/fs/#fs.open"&gt;fs.open()&lt;/a&gt; function opens a file and return an &lt;a href="http://www.akshell.com/docs/0.2/ref/core/fs/#fs.File"&gt;fs.File&lt;/a&gt; object. It supports common reading, writing, and positioning file stream operations. The uploaded files are also represented by fs.File instances (these ones are read-only).&lt;/p&gt;

&lt;h4&gt;Proxy&lt;/h4&gt;

&lt;p&gt;The &lt;a href="http://www.akshell.com/docs/0.2/ref/core/misc/#proxy"&gt;Proxy&lt;/a&gt; class brings simple means of metaprogramming to JavaScript. Proxy objects intercept property access and react accordingly. For example, the &lt;a href="http://www.akshell.com/docs/0.2/ref/ak/db/#rv"&gt;rv&lt;/a&gt; object is an instance of Proxy. It transparently maps database relation variables to JavaScript object properties.&lt;/p&gt;

&lt;h4&gt;JSGI&lt;/h4&gt;

&lt;p&gt;The &lt;a href="http://www.akshell.com/apps/core/"&gt;core&lt;/a&gt; library has been decoupled from the basic Akshell library. The &lt;a href="http://www.akshell.com/apps/ak/"&gt;ak&lt;/a&gt; framework is no longer required for development in Akshell; only the core library is a must. It wraps the engine APIs and provides a &lt;a href="http://wiki.commonjs.org/wiki/JSGI/Level0/A/Draft2"&gt;JSGI&lt;/a&gt; interface to request handling. You can bring a JSGI compatible framework or middleware to Akshell or create your own.&lt;/p&gt;

&lt;h4&gt;Migration&lt;/h4&gt;

&lt;p&gt;If you have an Akshell application, you need to migrate it to 0.2 to experience these new features. Here are some basic steps to perform.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Replace all include() and use() by require(). Require the 0.2 version of the ak framework. Substitute:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ak.use('ak', '0.1');
ak.update(this, ak);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;... by:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;require('ak', '0.2').setup();
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All module variables declared by var are now module-local; so you can remove anonymous functions wrapping modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Replace the __root__ global variable by exports.root.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Replace the __main__ global variable by exports.main. exports.main defaults to the &lt;a href="http://www.akshell.com/docs/0.2/ref/ak/rest/#defaultServe"&gt;defaultServe()&lt;/a&gt; function; so you can just remove a line like this:&lt;/p&gt;

&lt;p&gt;var __main__ = defaultServe;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the &lt;a href="http://www.akshell.com/docs/0.2/ref/ak/db/#RelVar.create"&gt;create()&lt;/a&gt; &lt;a href="http://www.akshell.com/docs/0.2/ref/ak/db/#RelVar"&gt;RelVar&lt;/a&gt; method instead of db.create().&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rename __main__.js to main.js.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change the engine version in the Administrate tab and test the application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enjoy!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
    </entry>
  
    <entry>
      <title>Public Beta</title>
      <link type="text/html" href="http://blog.akshell.com/public-beta/" />
      <id>http://blog.akshell.com/public-beta/</id>
      <updated>2010-04-13T00:00:00Z</updated>
      <content type="html">&lt;p&gt;Today, 13 April 2010, I launched the public beta of Akshell. Here is a quick overview of the current Akshell environment.&lt;/p&gt;

&lt;h4&gt;Ready Tools&lt;/h4&gt;

&lt;p&gt;These tools should be used in everyday Akshell development.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.akshell.com/apps/ak/"&gt;&lt;code&gt;ak&lt;/code&gt;&lt;/a&gt; is the basic Akshell library, the foundation of all applications. The &lt;a href="http://akshell.com/docs/"&gt;documentation&lt;/a&gt; describes it in detail.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.akshell.com/apps/form/"&gt;&lt;code&gt;form&lt;/code&gt;&lt;/a&gt; is a form-handling library, a port of the &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; &lt;a href="http://docs.djangoproject.com/en/dev/ref/forms/"&gt;forms&lt;/a&gt; library.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.akshell.com/apps/log/"&gt;&lt;code&gt;log&lt;/code&gt;&lt;/a&gt; is a logging utility. It's useful for debugging.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.akshell.com/apps/markdown/"&gt;&lt;code&gt;markdown&lt;/code&gt;&lt;/a&gt; is a library for processing the &lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt; language. It's employed in the &lt;code&gt;blog&lt;/code&gt; application, which you are using right now. By the way, the &lt;code&gt;blog&lt;/code&gt; &lt;a href="http://www.akshell.com/apps/blog/code/"&gt;code&lt;/a&gt; is a good example of a common Akshell application.&lt;/p&gt;

&lt;h4&gt;Work in Progress Tools&lt;/h4&gt;

&lt;p&gt;These and other tools should make Akshell environment really handy and pleasant.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;guard&lt;/code&gt; should enable a user to control access of applications to the user's data stored in other applications.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;profile&lt;/code&gt; should store user profiles and provide an API for accessing them.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;config&lt;/code&gt; should store configuration information.&lt;/p&gt;

&lt;p&gt;All tools are open, their Mercurial repositories are hosted on &lt;a href="http://bitbucket.org/akshell/"&gt;bitbucket&lt;/a&gt;. If you are interested in the development of the environment, you are welcome to join it. Just write me to &lt;a href="&amp;#109;&amp;#97;&amp;#x69;&amp;#x6C;&amp;#116;&amp;#111;:&amp;#x61;&amp;#x6E;&amp;#116;&amp;#111;&amp;#x6E;&amp;#x40;&amp;#x61;k&amp;#x73;&amp;#104;&amp;#x65;&amp;#x6C;&amp;#108;.&amp;#x63;o&amp;#109;"&gt;&amp;#x61;&amp;#x6E;&amp;#116;&amp;#111;&amp;#x6E;&amp;#x40;&amp;#x61;k&amp;#x73;&amp;#104;&amp;#x65;&amp;#x6C;&amp;#108;.&amp;#x63;o&amp;#109;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Enjoy.&lt;/p&gt;</content>
    </entry>
  
</feed>

