forked from nimbupani/nimbupani.github.com
/
interviews-with-singapores-next-generation-hackers-herryanto-siatono.html
287 lines (151 loc) · 14.3 KB
/
interviews-with-singapores-next-generation-hackers-herryanto-siatono.html
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title> Interviews with Singapore's Next Generation Hackers: Herryanto Siatono. | Divya Manian</title>
<meta name="author" content="Divya Manian">
<meta name="description" content="This is the second interview in the series of interviewing Web 2.0 hackers from Singapore. Today we get to see Herry. Herry is a hacker and a …">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://nimbupani.github.com/blog/interviews-with-singapores-next-generation-hackers-herryanto-siatono.html">
<link href="/blog/stylesheets/screen.css" rel="stylesheet">
<script src="/blog/javascripts/modernizr-2.0.js"></script>
<link href="http://feeds.feedburner.com/nimbupani" rel="alternate" title="Divya Manian" type="application/atom+xml">
</head>
<body >
<div class="container">
<div class="content">
<header role="banner"> <h1><a href="/blog/">Divya Manian</a></h1>
<h2><a class="twitter" href="https://twitter.com/divya">twitter</a> <a class="rss" href="http://feeds.feedburner.com/nimbupani">RSS Feed</a> <a class="youtube" href="http://youtube.com/nimbupani">Youtube Channel</a></h2>
</header>
<nav class="sitenav"><form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:nimbupani.github.com/blog" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<a href="/blog/">Home</a>
<a href="/blog/blog/archives">Archives</a>
<a href="/blog/about">About</a>
</nav>
<article>
<nav class="article">
<a class="previous" href="/blog/100-mbps-where-is-my-100mbps.html" title=" 100 Mbps...Where is my 100Mbps">❬</a>
<a class="next" href="/blog/50matches-com.html" title=" 50matches.com">❭</a>
</nav>
<header>
<time datetime="2007-05-12T00:00:00-07:00" pubdate><span class='month'>May</span> <span class='day'>12</span> <span class='year'>2007</span></time>
<h1 class="entry-title"><a href="/blog/interviews-with-singapores-next-generation-hackers-herryanto-siatono.html"> Interviews with Singapore's Next Generation Hackers: Herryanto Siatono.</a></h1>
</header>
<div class="entry-content"><hr>
<p>This is the second interview in the series of interviewing Web 2.0 hackers from Singapore. Today we get to see <a href="http://pluitsolutions.com/about">Herry</a>. Herry is a hacker and a designer. He developed the acclaimed <a href="http://bookjetty.com/">BooJetty</a> a social book-bookmarking site that also mashes up Amazon and Singapore National Library (NLB) catalogue information. He talks about BookJetty, what it is like to be a developer and a designer, and of course, the technical aspects of BookJetty and how he gets a project off ground.</p>
<hr>
<h3>What drives you to create web apps like <a href="http://bookjetty.com">BookJetty</a>?</h3>
<p>It was to solve a problem I had, of having to swap between <a href="http://amazon.com">Amazon.com</a> and <a href="http://vistaweb.nlb.gov.sg/">Singapore NLB online catalogue site</a> – to check out if a book is worth a read and if it is available in the library.</p>
<p>At that time, I was looking for a pet project to learn more about <a href="http://www.adaptivepath.com/publications/essays/archives/000385.php">AJAX</a>, and BookJetty idea popped into my mind immediately. That was how it got started.</p>
<h3>How much time do you devote to BookJetty?</h3>
<p>On average 2-3 days a week, when I got bored between works for client, and on some evenings and weekends.</p>
<p>But at times, work can be so demanding; when I don’t even have much time to sleep, I have stay away from BookJetty for a while.</p>
<h3>What technologies do you use on BookJetty?</h3>
<p>It was originally written on <a href="http://java.sun.com">Java</a>, using <a href="http://www.hibernate.org">Hibernate</a> and <a href="http://www.springframework.org">Spring framework</a>.
But, again, my curiosity for a pet project to learn more about <a href="http://rubyonrails.org">Ruby On Rails</a> (RoR), pushed me to go ahead of this crazy idea of rewriting it from scratch using RoR. Lucky me, it went off smoothly, and the database is on MySQL.</p>
<p>Memory caching (<a href="http://www.danga.com/memcached/">Memcached</a>) was used to cache and speed up <abbr title="National Library Board">NLB</abbr> response, and to save on the server sessions, I pooled the session IDs.</p>
<p>As for the front-end site, the JavaScript libraries, I mainly used <a href="http://www.prototypejs.org/">Prototype</a>, <a href="http://script.aculo.us">Scriptaculous</a> and <a href="http://cross-browser.com">X-Library</a>. <abbr title="Integrated Development Environment">IDE</abbr>, none other than <a href="http://www.radrails.org">RadRails</a>. <a href="http://subversion.tigris.org">Subversion</a> for the version control, and server co-located at <a href="http://www.qala.com.sg">Qala</a>, running on <a href="http://www.ubuntu.com">Ubuntu</a>.</p>
<h3>How long did it take for you to get any web app off the ground?</h3>
<p>It’s a subjective question, depending on the complexity of the application and the platform you use to develop. Using <abbr title="Ruby on Rails">RoR</abbr> will be faster. :)</p>
<p>A full fledged application with testing and administration site done properly, on an average, would take about 3 months. While a quick-off-the-ground
application, can be done in days to weeks.</p>
<h3>How many people currently use BookJetty?</h3>
<p>Currently there are close to 200 registered users, mainly local users, as BookJetty only links up with Singapore <abbr title="National Library Board">NLB</abbr>, but the actual number of users using it could be more, as people don’t need to register to use BookJetty.</p>
<h3>6. What is the plan for the future of BookJetty?</h3>
<p>To keep developing it into a full fledged social book-bookmarking site, and to link up with more libraries, so as to open it up to the world.</p>
<h3>What challenges do you face in developing for BookJetty?</h3>
<p>The biggest challenge I would say the part that links it up with <abbr title="National Library Board">NLB</abbr>. It looks easy on the surface, as it is not just about passing parameters and screen scrapping.</p>
<p>In the backend, there are some sessions involved, thus the sessions have to be managed carefully, as some may have expired too; and due to the asynchronous requests from BookJetty, there is also a need to streamline and improve the query time through caching and session pooling. A lot more work than what I had thought it required.</p>
<h3>Looking back, is there anything you would have done differently with BookJetty, given the new technologies now?</h3>
<p>Technologically, I think I am on the right track with <abbr title="Ruby on Rails">RoR</abbr>, it is so much joy to enhance the site right now.</p>
<p>But as for the execution of BookJetty, I should have planned it for global users from the start, the on-the-fly call number availability check is God-sent, but would be quite a challenge to implement it across many libraries.</p>
<h3>What do you think you would be doing next? What do you see in your future as you develop for the web?</h3>
<p>I have just spent a few months working on a project collaboration system for a client, so I am thinking of spending a few more months to wrap it up as a product, and hopefully be able to learn something from this experience.</p>
<p>I’m not sure if I know about the future, the web is changing so fast. At one moment, you think this is right, later, as you learn, you think that this is stupid. But, at the end of the day, it’s always about how can we be better off with the web, and people will keep pushing the limits of what they can do with the web.</p>
<h3>You indicated in <a href="http://www.pluitsolutions.com/">your blog</a> that you took a sabbatical to learn about new technologies. How did that help? Is there anyway you think you could have done without it?</h3>
<p>Yeah, there is no way I could have done without it. Other than the technical gains, it also gave me a new perspective to what I believe in and what I want to pursue. The one regret I have is, why did I not do it earlier?</p>
<h3>You are also a rare species that designs and codes. How do you see the relationship between the two? Given that designers are always bickering about developers. Do you think sometimes being a developer constrains your design view (especially on the web)?</h3>
<p>I think the line that separates the two is getting thinner. Now that the basic needs of Create, Read, Update and Delete (CRUD) tasks have been fulfilled, we start to look further; we look at how to do things better, faster, easier, and with more joy.</p>
<p>To push beyond that limit, we need designers with some programming knowledge and programmers who know some design concepts.</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/pluitsolutions" rel="tag">pluitsolutions</a>, <a class="performancingtags" href="http://technorati.com/tag/webstandards" rel="tag">webstandards</a>, <a class="performancingtags" href="http://technorati.com/tag/webdesign" rel="tag">webdesign</a>, <a class="performancingtags" href="http://technorati.com/tag/css" rel="tag">css</a>, <a class="performancingtags" href="http://technorati.com/tag/bookjetty" rel="tag">bookjetty</a>, <a class="performancingtags" href="http://technorati.com/tag/rubyonrails" rel="tag">rubyonrails</a>, <a class="performancingtags" href="http://technorati.com/tag/webapps" rel="tag">webapps</a></p>
</div>
<footer>
<p class="meta">This post was posted by
<a href="/blog/about.html">Divya Manian</a>
on
<time datetime="2007-05-12T00:00:00-07:00" pubdate><span class='month'>May</span> <span class='day'>12</span> <span class='year'>2007</span></time> in
.
</p>
</footer>
</article>
<section>
<h1>Comments</h1>
<div id="disqus_thread" aria-live="polite"><noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
</section>
</div>
</div>
<aside id="articles">
<h2>Posts on Web Development</h2>
<ul>
<li><a href="/blog/this-revolution-needs-new-revolutionaries.html">This revolution needs new revolutionaries</a></li>
<li><a href="/blog/some-css-transition-hacks.html">Some CSS Transition hacks</a></li>
<li><a href="/blog/safe-css-defaults.html">Safe CSS Defaults</a></li>
<li><a href="/blog/unplugged-2011.html">Unplugged 2011</a></li>
<li><a href="/blog/bokeh-with-css3-gradients.html">Bokeh with CSS3 Gradients</a></li>
<li><a href="/blog/making-pure-css3-demos-better.html">Making "Pure CSS3" demos better</a></li>
<li><a href="/blog/web-opener-at-opera.html">Web Opener at Opera</a></li>
<li><a href="/blog/current-color-in-css.html">Current Color in CSS</a></li>
<li><a href="/blog/css-vocabulary.html">CSS Vocabulary</a></li>
<li><a href="/blog/active-web-development.html">Active Web Development</a></li>
<li><a href="/blog/sexy-css3-buttons.html">Sexy CSS3 Buttons</a></li>
<li><a href="/blog/accessible-css-barcharts.html">Accessible CSS Barcharts</a></li>
<li><a href="/blog/svg-is-coming.html">SVG is coming!</a></li>
<li><a href="/blog/wee-marquee.html">Wee! Marquee</a></li>
<li><a href="/blog/vignettes-with-css3-box-shadows.html">Vignettes with CSS3 Box Shadows</a></li>
<li><a href="/blog/drop-shadows-with-css3.html">Drop Shadows with CSS3</a></li>
<li><a href="/blog/diversity.html">Diversity</a></li>
<li><a href="/blog/notes-from-javascript-n00b.html">Notes from a JavaScript n00b</a></li>
<li><a href="/blog/spacing-out-on-css-namespaces.html">Spacing Out on CSS Namespaces</a></li>
<li><a href="/blog/notes-from-html5-readiness-hacking.html">Notes from HTML5 Readiness Hacking</a></li>
<li><a class="btn" href="/blog/categories/web-development/">More</a></li>
</ul>
</aside>
<footer role="contentinfo"><p>
Copy to your heart’s content 2011 - Divya Manian -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'nimbublog';
var disqus_developer = 1;
var disqus_url = 'http://nimbupani.com/interviews-with-singapores-next-generation-hackers-herryanto-siatono.html';
var disqus_identifier = 'http://nimbupani.com/interviews-with-singapores-next-generation-hackers-herryanto-siatono.html';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}());
</script>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.0.min.js"><\/script>')</script>
<script src="/blog/javascripts/octopress.js" type="text/javascript"></script>
</body>
</html>