-
Notifications
You must be signed in to change notification settings - Fork 7
/
about.htm
170 lines (138 loc) · 8.78 KB
/
about.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<!-- Mobile Specific Metas
================================================== -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Chicago Boss: About The Project</title>
<link rel="stylesheet" href="includes/css/main.css">
<script src="includes/js/main.js"></script>
<!-- IE Fix for HTML5 Tags -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Google analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-46635298-1', 'chicagoboss.org');
ga('require', 'displayfeatures');
ga('send', 'pageview');
</script>
</head>
<body>
<header id="nav-global-container">
<span id="forkongithub"><a href="https://github.com/ChicagoBoss/ChicagoBoss">Fork me on GitHub</a></span>
<aside id="logo">
<a href="index.htm">
<svg id="logo-large" height="99" width="252" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<image x="" y="" height="99" width="252" xlink:href="images/logo.svg" />
</svg>
<svg id="logo-small" height="79" width="232" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<image x="" y="" height="79" width="232" xlink:href="images/logo.svg" />
</svg>
</a>
</aside>
<nav id="nav-global">
<a href="documentation.htm">Documentation</a>
<a href="about.htm">About</a>
<a href="community.htm">Community</a>
<a href="download.htm" class="download">Download <span>📥</span></a>
<a href="contact.htm">Contacts</a>
</nav>
</header>
<section class="container">
<div class="sixteen columns">
<article id="content-container" class="padding-twenty">
<div class="row clearfix">
<div class="ten columns alpha">
<h2>About</h2>
<div class="video-container">
<iframe src="http://www.youtube.com/embed/LGGo6bIuj8w?rel=0" frameborder="0" allowfullscreen></iframe>
</div>
<h5>Chicago Boss creator, Evan Miller at Erlang Factory 2013</h5>
<hr />
<p><strong>We love Rails</strong>, but we believe that Ruby is the wrong choice of platform on which to build a simple, fast, reliable website. The alternatives aren't much better: the JVM, V8, Python, and Perl all eventually run into the problem of <strong>dog-slow server-side templates</strong>.</p>
<p>Web developers usually "solve" the problem in a number of ways: buying lots of hardware, hiring a big ops team, implementing complex nested hierarchical cache structures, ripping out features, and moving to a "thick-client" architecture that takes forever to load. But there's a much simpler solution: it's called <strong>respecting the RAM</strong>.</p>
<h3>Erlang Respects Your RAM!</h3>
<p>Erlang is different from other platforms because when rendering a server-side template, it doesn't create a separate copy of a web page in memory for each connected client. Instead, it constructs <strong>pointers to the same pieces of immutable memory</strong> across multiple requests.</p>
<p>So if two people request two different profile pages at the same time, they're actually sent the same chunks of memory for the header, footer, and other shared template snippets. The result is a server that can construct complex, <strong>uncached</strong> web pages for hundreds of users per second without breaking a sweat.</p>
<p>With Erlang, you can run a website on a <strong>fraction of the hardware</strong> that Ruby and the JVM require, saving you money and operational headaches. You can run a website on "wimpy-core" ARM servers, helping your bottom-line along with the environment. Your test suite will run much faster than you thought possible, shortening your development cycle and letting you deliver features more quickly.</p>
<h3>Chicago Boss Makes Erlang Accessible</h3>
<p>Erlang has a reputation for being a mystical technology available only to an elite few willing to spend years learning its arcane syntax. It's true that Erlang "looks weird" to developers accustomed to C-like syntax, and the semantics of functional programming takes some getting used to. By <strong>adopting familiar Rails conventions</strong>, Chicago Boss has finally made Erlang accessible to programmers who don't have years and years of free time.</p>
<p>Let's look at a few examples:</p>
<h4>Defining an action</h4>
<h5>Ruby on Rails:</h5>
<pre><code>def index
case @request.method
when "POST"
# do something...
when "GET"
# do something...
end
end</code></pre>
<h5>Chicago Boss:</h5>
<pre><code>index('POST', []) ->
# do something...
index('GET', []) ->
# do something...</code></pre>
<hr />
<h4>Creating a record</h4>
<h5>Ruby on Rails:</h5>
<pre><code>@person = Person.new(:name => "Joe", :age => 4)</code></pre>
<h5>Chicago Boss:</h5>
<pre><code>Person = boss_record:new(person, [{name, "Joe"}, {age, 4}])</code></pre>
<hr />
<h4>Saving a record</h4>
<h5>Ruby on Rails:</h5>
<pre><code>@person.save</code></pre>
<h5>Chicago Boss:</h5>
<pre><code>Person:save()</code></pre>
<hr />
<h4>Perform a 302 Redirect</h4>
<h5>Ruby on Rails:</h5>
<pre><code>redirect_to :action => 'show', :id => @person.id</code></pre>
<h5>Chicago Boss:</h5>
<pre><code>{redirect, [{action, "show"}, {id, Person:id()}]}</code></pre>
<p>Check out the <a href="https://github.com/evanmiller/ChicagoBoss/wiki/Ruby-on-Rails-Versus-Chicago-Boss">wiki page</a> for more examples, including record validation, before filters, and more.</p>
<h3>Chicago Boss Is Ready For Action</h3>
<p>We're not quite to a 1.0 release, but Chicago Boss is already being used in production on a number of <a href="https://github.com/evanmiller/ChicagoBoss/wiki/List-of-companies-using-Chicago-Boss-internally">internal</a> as well as <a href="https://github.com/evanmiller/ChicagoBoss/wiki/List-of-public-websites-built-with-Chicago-Boss">public-facing</a> websites. If you like what you've read so far, you can download <a href="https://github.com/evanmiller/ChicagoBoss">the latest code</a>, browse the <a href="/api.html">API documents</a>, read the <a href="/tutorial.pdf">PDF tutorial</a>, check out our <a href="https://github.com/evanmiller/ChicagoBoss/wiki">wiki</a>, or come and <a href="contact.htm">talk to us</a>!</p>
</div>
<div class="sidebar five columns omega">
<h3><span></span>Talk to us<span> </span></h3>
<ul>
<li>#chicagoboss on irc.freenode.net</li>
<li><a href="https://groups.google.com/forum/?fromgroups#!forum/chicagoboss">chicagoboss</a>@googlegroups.com</li>
</ul>
</div>
<div class="sidebar five columns omega">
<h3><span>👍</span>Ideal for</h3>
<ul>
<li>TCO-conscious developers</li>
<li>Multi-core servers</li>
<li>Resource-constrained environments (small VPS's, embedded, ARM…)</li>
<li>DevOps people tired of crashes</li>
<li>Building deployable applications with few moving parts</li>
<li>Internal (intranet) applications</li>
<li>Interfacing with legacy databases</li>
<li>Continuous deployment</li>
<li>Building the Next Great Web Service</li>
</ul>
</div>
</div>
</article>
</div>
</section>
<footer class="clearfix">
<nav id="nav-footer" class="clearfix">
<a href="documentation.htm">Documentation</a>
<a href="about.htm">About</a>
<a href="community.htm">Community</a>
<a href="download.htm" class="download">Download</a>
<a href="contact.htm">Contacts</a>
</nav>
</footer>
</body>
</html>