-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
639 lines (276 loc) · 20.4 KB
/
index.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
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Trevor Oakes</title>
<meta name="author" content="Trevor Oakes">
<meta name="description" content="As I am making notes as I read papers, It seemed a shame to let them bit rot in “the cloud”. If you don’t already have the paper in …">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://hacklash.github.com">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="/javascripts/ender.js"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<link href="http://feeds.feedburner.com/trevoroakes" rel="alternate" title="Trevor Oakes" type="application/atom+xml">
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-27908177-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">Trevor Oakes</a></h1>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="http://feeds.feedburner.com/trevoroakes" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:hacklash.github.com" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div class="blog-index">
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/06/19/notes-on-deforestation-transforming-programs-to-eliminate-trees/">Notes on Deforestation: Transforming programs to eliminate trees</a></h1>
<p class="meta">
<time datetime="2012-06-19T21:17:00-06:00" pubdate data-updated="true">Jun 19<span>th</span>, 2012</time>
</p>
</header>
<div class="entry-content"><p>As I am making notes as I read papers, It seemed a shame to let them bit rot in <a href="https://docs.google.com/">“the cloud”</a>.</p>
<p>If you don’t already have the paper in front of you, get it from one of <a href="http://scholar.google.com/scholar?cluster=1027879618469354516">these links</a>.</p>
<h2>Paper Outline</h2>
<p>The idea is to create a new optimization for optimizing functional compilers to reduce memory overhead.
The paper:</p>
<ol>
<li>Defines pure treeless form for a first-order lazy functional language</li>
<li>Extends that model with “Blazing” - marking trees according to type, to allow some intermediate values that don’t affect efficiency</li>
<li>Adds back most higher order functions using higher-order macros</li>
</ol>
<p>It came out of the author’s <a href="http://scholar.google.com/scholar?cluster=18051469765918212223">previous</a> <a href="http://scholar.google.com/scholar?cluster=16047718747708421938">work</a> on “listlessness,” but is simpler, more general and the result is a functional, not an imperative program. For example, the algorithm developed in the second paper only applies when pre-order traversal can be verified. However, the class of treeless functions is not a superset of the class of listless programs; the deforestation algorithm does not optimize programs like the average function <code>(/ (sum xs) (length xs))</code>.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2012/06/19/notes-on-deforestation-transforming-programs-to-eliminate-trees/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/03/17/intro-to-deforestation-and-macros/">Intro to Deforestation and Macros</a></h1>
<p class="meta">
<time datetime="2012-03-17T21:39:00-06:00" pubdate data-updated="true">Mar 17<span>th</span>, 2012</time>
</p>
</header>
<div class="entry-content"><p>My new project is to write a deforestation macro for Racket. Since I’ll be spending a lot of time on that in the next few months and there will probably be a corresponding amount of related content here on the blog, for the rest of the post I’ll unpack that sentence for you so you can follow along in the future. Read on to get a grounding in deforestation and Racket macros.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2012/03/17/intro-to-deforestation-and-macros/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/03/08/first-class-and-higher-order-functions/">First Class and Higher Order Functions</a></h1>
<p class="meta">
<time datetime="2012-03-08T21:24:00-07:00" pubdate data-updated="true">Mar 8<span>th</span>, 2012</time>
</p>
</header>
<div class="entry-content"><p>In order to expand my mind, I’ve been exploring different languages, but sometimes I’ve had to come back to the first language I learned in depth: Java. And when I do, the thing I miss most is first class, higher order functions. That and pattern matching.</p>
<p>Let me show you what I mean:</p>
</div>
<footer>
<a rel="full-article" href="/blog/2012/03/08/first-class-and-higher-order-functions/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/03/01/john-carmack-on-static-analysis/">John Carmack on Static Analysis</a></h1>
<p class="meta">
<time datetime="2012-03-01T15:22:00-07:00" pubdate data-updated="true">Mar 1<span>st</span>, 2012</time>
</p>
</header>
<div class="entry-content"><p>… and functional programming.</p>
<blockquote><p>The most important thing I have done as a programmer in recent years is to aggressively pursue static code analysis. Even more valuable than the hundreds of serious bugs I have prevented with it is the change in mindset about the way I view software reliability and code quality.</p><footer><strong>John Carmack, #AltDevBlogADay</strong> <cite><a href='http://altdevblogaday.com/2011/12/24/static-code-analysis/'>altdevblogaday.com/2011/12/24/…</a></cite></footer></blockquote>
<p>Now if you don’t know who that is, that’s ok, but out of the people in industry that I know, which to be fair isn’t many, John Carmack is the programmer that I repect the most. It’s not just because he created some very popular games (Doom and Quake for instance) but that he essentially created the western game industry as we know it by creating whole new graphics techniques.</p>
<p>First he wrote the first all-software 2d game engine for Commander Keane, and then he created the whole 3d games genre with Doom. The techniques he developed and even a decent chunk of the code that John Carmack has written lives in practically every 3d western game you’ve ever played. Wow.</p>
<p>I’m really glad that Carmack recognizes the importance of static analysis and functional programming languages on code quality, and its good to hear when reasearch we have about software productivity is supported by luminaries in industry. I’ve started the video where he begins talking about static analysis which goes until 1:12:35.</p>
<p><em>Stay til then and you’ll hear him recommend Haskell and Ocaml, which makes me smile.</em></p>
<iframe width="560" height="315" src="http://www.youtube.com/embed/4zgYG-_ha28?rel=0&start=3253" frameborder="0" allowfullscreen></iframe>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/02/22/programming-languages-and-sheet-music/">Programming Languages and Sheet Music</a></h1>
<p class="meta">
<time datetime="2012-02-22T10:06:00-07:00" pubdate data-updated="true">Feb 22<span>nd</span>, 2012</time>
</p>
</header>
<div class="entry-content"><p>If the juxtaposition seems strange to you, I agree with you that at first glance there doesn’t seem to be much in common between the two. If you’ve chalked it up the strangeness of the author and moved on to something else I wouldn’t blame you, but I still think you’re wrong.</p>
<p>Programming languages and sheet music share some interesting historical similarities besides their importantance as mathematically grounded tools for capturing and spreading ideas. Very different ideas.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2012/02/22/programming-languages-and-sheet-music/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2011/12/23/greenteas-2nd-place-entry-postmortem-translated-by-hand/">GreenTea’s 2nd Place Entry Postmortem Translated by Hand</a></h1>
<p class="meta">
<time datetime="2011-12-23T22:10:00-07:00" pubdate data-updated="true">Dec 23<span>rd</span>, 2011</time>
</p>
</header>
<div class="entry-content"><h2>Editorial stuff</h2>
<p>This is the <a href="http://brunneng.blogspot.com/2011/12/google-ai-challenge-2011-ants.html">original</a> but I got tired of reading the Google Translation and thought that more people would enjoy reading the postmortem in native(-ish) English. I’d like to thank GreenTea for linking to this and for any Russian speakers, proshu prosheniye za oshibki perovedeniya.
Before we begin, here is the <a href="https://sourceforge.net/projects/ants2011/">code for the final bot</a>.</p>
<p><strong>Begin Translation</strong></p>
<p>As I write this post the finals of the Google AI Contest 2011 - Ants is in full swing. The organizers are gradually cutting off the weaker bots to allow the stronger ones to play more. According to the timer on the <a href="http://ants.aichallenge.org">official site</a> the winner will be announced in 1 day, 5 hours, 35 minutes and 5, 4, 3, 2 … seconds.</p>
<p>Oh yeah, what was I saying? At the moment <a href="http://ants.aichallenge.org/profile.php?user=398">my bot GreenTea</a> is in third place (<em>Ed. it finished in second place</em>). And it is the focus of this post. I don’t even know where best to start since so much effort and time was invested, beginning with the beta itself before hills were added to the game …</p>
<p>This year’s beta ended up dragging on for an inexcusable amount of time. This greatly undermined my faith in enthusiasm and in open source. Then suddenly the developers wrote on the site “Sponsored by Google” and then an intense commotion began to stir as well as some commits. Come on! Although better that than the alternative :) - I really thought that it was going to stall at the beta stage and that would be it … And the whole beta (I can’t even remember how long anymore, 4 months?) I coded something little by little, adding and improving.</p>
<p>If there’s a reason I love this type of competition, it’s because there is LOTS of time. You don’t have to hurry or rush: you can sit down, think everything through, try stuff, test, make a change … make 5 more changes, do some more testing, etc. Basically its enjoyable to program within my level of understanding.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2011/12/23/greenteas-2nd-place-entry-postmortem-translated-by-hand/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2011/12/19/ai-challenge-code-dump/">AI Challenge Code Dump</a></h1>
<p class="meta">
<time datetime="2011-12-19T10:29:00-07:00" pubdate data-updated="true">Dec 19<span>th</span>, 2011</time>
</p>
</header>
<div class="entry-content"><p>Phew. The Google AI contest closed for entries last night. I had been working on a bot since the start of the contest, but I gave it up after running into timeout issues that I couldn’t track down.</p>
<p>With 36 hours to the deadline I jumped back into the game, read through the forums and decided to try a different approach than I had been pursuing. The code is ugly and there are almost no comments (none if you count only those that will make sense to anyone else) but I thought that this blog could use some more code on it, and some of you may be interested in how my diffusion approach looks.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2011/12/19/ai-challenge-code-dump/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2011/11/30/dont-watch-tv-news/">Don’t Watch TV News</a></h1>
<p class="meta">
<time datetime="2011-11-30T17:04:00-07:00" pubdate data-updated="true">Nov 30<span>th</span>, 2011</time>
</p>
</header>
<div class="entry-content"><p>Don’t watch TV news, especially the 24 hour news coverage. The incentives are aligned so that news is fast, inaccurate and shocking, and often inaccurate in order to be shocking.</p>
<p>A number of studies have consistently shown that TV news makes people more stupid, i.e. more misinformed, more irrational, more confused, and less able to draw reasonable conclusions or make good decisions.</p>
<p>Instead take the time to accomplish or progress towards your goals. I’ve slowly been cutting down on my TV and for fun internet browsing. It actually makes a difference in how I feel about the direction of my life. Not so much because I’m “wasting” less time, but that I am moving towards my goals. And that feels good. TV news should be the easiest to cut from your life, mostly because it’s crap. If I want news I’ll catch some NPR or read the Economist, the more leisurely news schedule is actually a good thing.</p>
<p>Don’t believe me that TV news is crap?</p>
</div>
<footer>
<a rel="full-article" href="/blog/2011/11/30/dont-watch-tv-news/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2011/11/24/algorithms-are-not-a-four-letter-word/">Algorithms Are Not a Four-Letter Word</a></h1>
<p class="meta">
<time datetime="2011-11-24T15:30:00-07:00" pubdate data-updated="true">Nov 24<span>th</span>, 2011</time>
</p>
</header>
<div class="entry-content"><p>Algorithms are important. And actually interesting too, especially if you get away from the dry textbooks and into some applications.</p>
<p>This presentation does that with minimum spanning tree algorithms and shows how they can be used to generate mazes. Watching as the mazes are created is beautiful, so <a href="http://www.jamisbuck.org/presentations/rubyconf2011/index.html#thanks">check them out</a> if that’s all you get from this post.</p>
<p>In addition he uses these algorithms as examples of deliberate practice, something I’ll be talking about a lot more, hopefully soon. That’s because it is important for maximizing one’s potential productivity, and Jamis makes a <a href="http://www.jamisbuck.org/presentations/rubyconf2011/index.html">convincing case for deliberate practice</a>.</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2011/11/21/haskell-amuse-bouche-google-tech-talk-video/">Haskell Amuse-Bouche: Google Tech Talk [Video]</a></h1>
<p class="meta">
<time datetime="2011-11-21T15:26:00-07:00" pubdate data-updated="true">Nov 21<span>st</span>, 2011</time>
</p>
</header>
<div class="entry-content"><p>As I mentioned in <a href="http://www.trevoroakes.com/blog/2011/10/26/expand-your-mind-with-your-next-programming-language/">a previous post</a> one of the languages I will be learning soon is Haskell. If you’ve never heard of Haskell or you have and don’t know why you should be interested in learning it, this Google Tech Talk is for you. I really enjoyed it and am excited to have my mind wrung out and then filled up with new ways of thinking about programming.</p>
<iframe width="560" height="315" src="http://www.youtube.com/embed/b9FagOVqxmI" frameborder="0" allowfullscreen></iframe>
</div>
</article>
<div class="pagination">
<a class="prev" href="/blog/page/2/">← Older</a>
<a href="/blog/archives">Blog Archives</a>
</div>
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/blog/2012/06/19/notes-on-deforestation-transforming-programs-to-eliminate-trees/">Notes on Deforestation: Transforming programs to eliminate trees</a>
</li>
<li class="post">
<a href="/blog/2012/03/17/intro-to-deforestation-and-macros/">Intro to Deforestation and Macros</a>
</li>
<li class="post">
<a href="/blog/2012/03/08/first-class-and-higher-order-functions/">First Class and Higher Order Functions</a>
</li>
<li class="post">
<a href="/blog/2012/03/01/john-carmack-on-static-analysis/">John Carmack on Static Analysis</a>
</li>
<li class="post">
<a href="/blog/2012/02/22/programming-languages-and-sheet-music/">Programming Languages and Sheet Music</a>
</li>
</ul>
</section>
<section>
<h1>Latest Tweets</h1>
<ul id="tweets">
<li class="loading">Status updating…</li>
</ul>
<script type="text/javascript">
$.domReady(function(){
getTwitterFeed("TrevorOakes", 4, false);
});
</script>
<script src="/javascripts/twitter.js" type="text/javascript"> </script>
<a href="http://twitter.com/TrevorOakes" class="twitter-follow-button" data-show-count="false">Follow @TrevorOakes</a>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright © 2012 - Trevor Oakes -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span> - <a href="http://www.flickr.com/photos/gential/7382762762/">Header photo by Gential Lambert</a>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'trevoroakes';
var disqus_script = 'count.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/' + disqus_script;
(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>
</body>
</html>