<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>Population Algorithms</title><generator>Tumblr (3.0; @popalg)</generator><link>http://popalg.tumblr.com/</link><item><title>Hi Peter! Do you have any high res screenshots of Nitti Pear? I'm wondering how readable it is at different sizes. Any chance of a copy?</title><description>&lt;p&gt;Refer to Blue Monday. They are making a new coding version of Nitti.&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/45677834530</link><guid>http://popalg.tumblr.com/post/45677834530</guid><pubDate>Mon, 18 Mar 2013 12:08:47 -0400</pubDate></item><item><title>I have been browsing for the Nitti font for coding.  I was wondering if you could send me your variation, Nitti Pear?  Thank you very much.</title><description>&lt;p&gt;Bold Monday is in the process of making a professional coding Nitti font. You should contact them.&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/45677767638</link><guid>http://popalg.tumblr.com/post/45677767638</guid><pubDate>Mon, 18 Mar 2013 12:07:25 -0400</pubDate></item><item><title>jonklassen:

A spread from ‘The Dark’, written by Lemony...</title><description>&lt;img src="http://25.media.tumblr.com/e0d984e5004216e5860da43b71065d52/tumblr_mjbx9l16KL1qjx6w1o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a class="tumblr_blog" href="http://jonklassen.tumblr.com/post/44846093253/a-spread-from-the-dark-written-by-lemony"&gt;jonklassen&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A spread from ‘The Dark’, written by Lemony Snicket. Comes out April 2nd!&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://popalg.tumblr.com/post/44852315548</link><guid>http://popalg.tumblr.com/post/44852315548</guid><pubDate>Fri, 08 Mar 2013 05:26:17 -0500</pubDate></item><item><title>straightsixes:

DP Custom’s Ironhead Bobber

The Gulf rules</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ma9b15o8qx1rb9yuso1_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_ma9b15o8qx1rb9yuso3_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_ma9b15o8qx1rb9yuso2_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_ma9b15o8qx1rb9yuso4_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;&lt;a class="tumblr_blog" href="http://straightsixes.tumblr.com/post/31419931103/dp-customs-ironhead-bobber"&gt;straightsixes&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DP Custom’s Ironhead Bobber&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Gulf rules&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/35447287713</link><guid>http://popalg.tumblr.com/post/35447287713</guid><pubDate>Sat, 10 Nov 2012 19:58:39 -0500</pubDate></item><item><title>kiss</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m7v7atHwqg1qjx6w1o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;kiss&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/35447105280</link><guid>http://popalg.tumblr.com/post/35447105280</guid><pubDate>Sat, 10 Nov 2012 19:55:54 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m7avowYbrb1qkzxjyo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://popalg.tumblr.com/post/27430181259</link><guid>http://popalg.tumblr.com/post/27430181259</guid><pubDate>Tue, 17 Jul 2012 16:46:34 -0400</pubDate></item><item><title>Go's gob encoding and nil values</title><description>&lt;p&gt;In Go1 (to be specific, revision &lt;code&gt;7021c8a8a25a&lt;/code&gt;) the &lt;code&gt;gob&lt;/code&gt; package returns an error if one tries to encode a nil value loosely speaking.&lt;/p&gt;
&lt;p&gt;Excluding channels and functions (which cannot be serialized), nil values can be assumed by slices, maps, pointers and interfaces. Nil values, in the case of slices and maps, linguistically behave like empty slices and empty maps, respectively, which is perhaps why the gob package can, in fact, encode and decode those correctly.&lt;/p&gt;
&lt;p&gt;On the other hand, it returns an error if one tries to encode a nil pointer or a nil interface. (Here, a nil interface is either an interface which has no type and no value, or an interface that has a type and a nil value.)&lt;/p&gt;
&lt;p&gt;Oddly, there are some other quirks. Gob refuses to encode a slice of pointers, if any element in the slice is nil. However, it does not refuse to encode a struct that has pointer fields that are nil.&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/24916201028</link><guid>http://popalg.tumblr.com/post/24916201028</guid><pubDate>Mon, 11 Jun 2012 19:35:11 -0400</pubDate><category>golang</category></item><item><title>Jon Klassen from the book Coraline. I wonder if his process is...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m0zlsqjZyr1qev7uvo3_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_m0zlsqjZyr1qev7uvo2_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_m0zlsqjZyr1qev7uvo1_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_m0zlsqjZyr1qev7uvo4_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_m0zlsqjZyr1qev7uvo5_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_m0zlsqjZyr1qev7uvo6_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;Jon Klassen from the book Coraline. I wonder if his process is all digital, all manual, in between?&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/19792119118</link><guid>http://popalg.tumblr.com/post/19792119118</guid><pubDate>Fri, 23 Mar 2012 15:28:15 -0400</pubDate></item><item><title>Awesomeness.</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lw5vtoJLZk1qjx6w1o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Awesomeness.&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/19673695641</link><guid>http://popalg.tumblr.com/post/19673695641</guid><pubDate>Wed, 21 Mar 2012 05:02:00 -0400</pubDate></item><item><title>libflame and Elements</title><description>&lt;p&gt;I listened to a talk by Robert van de Geijn today at MIT. I learned a few handy things regarding linear algebraic computation. The FLAME project contains a few sub-projects, which are of independent interest:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The Elements project is all about &amp;#8216;programmability&amp;#8217; of linear-algebraic and other numeric algorithms. This means that it includes a language for expressing numeric algorithm while avoiding the cumbersome, error-prone and often-encountered multiple nested loops. This language consequently compiles down to machine code and optimizes the code intelligently for different targets: cluster, multi-core, GPU processors, even Texas Instruments&amp;#8217; DSP card (which purportedly can now SVD systems with nearly 100,000 variables).&lt;/li&gt;
&lt;li&gt;The Elements project comes with re-implementations of BLAS and LAPACK and since it can compile for a cluster target, it is marketed as an improvement of ScaLAPACK. Apparently is beats ScaLAPACK in speed but also in having a more human-friendly language for implementing algorithms.&lt;/li&gt;
&lt;li&gt;It seems that the bare-bones FLAME framework redefines the interface of BLAS and LAPACK and is actually easy to compile and use. It is thus probably preferred over the latter two.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The current research trajectory of the team is to figure out how to abstract away (and isolate from the algorithm logic) the expert&amp;#8217;s knowledge of how to optimize code for a specific target hardware; thereby making it possible to plug in different optimization drivers into Elements for new hardware or cluster targets.&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/18625747881</link><guid>http://popalg.tumblr.com/post/18625747881</guid><pubDate>Fri, 02 Mar 2012 17:46:00 -0500</pubDate><category>numeric</category></item><item><title>Design by Transformation (DxT)</title><description>&lt;p&gt;There is an interesting talk advertisement at MIT by &lt;span&gt;Robert van de Geijn. The advertisement stirred some thoughts with me regarding (systems for implementing) distributed numerical algorithms (like recommender systems, community detection, etc.). But first, the talk abstract:&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;The FLAME project has yielded modern alternatives to LAPACK and related &lt;/span&gt;&lt;span&gt;effort.  An attractive feature of this work is the complete vertical &lt;/span&gt;&lt;span&gt;integration of the entire software stack, starting with low level kernels that &lt;/span&gt;&lt;span&gt;support the BLAS and finishing with a new distributed memory library, &lt;/span&gt;&lt;span&gt;Elemental.  In between are layers that target a single core, multicore, and &lt;/span&gt;&lt;span&gt;multiGPU architectures.  What this now enables is a new approach where &lt;/span&gt;&lt;span&gt;libraries are viewed not as instantiations in code but instead as a repository &lt;/span&gt;&lt;span&gt;of algorithms, knowledge about those algorithm, and knowledge about target &lt;/span&gt;&lt;span&gt;architectures.  Representations in code are then mechanically generated by a &lt;/span&gt;&lt;span&gt;tool that performs optimizations for a given architecture by applying &lt;/span&gt;&lt;span&gt;high-level transformations much like a human expert would. We discuss how this &lt;/span&gt;&lt;span&gt;has been used to mechanically generate tens of thousands of different &lt;/span&gt;&lt;span&gt;distributed memory implementations given a single sequential algorithm. By &lt;/span&gt;&lt;span&gt;attaching cost functions to the component operations, a highly optimized &lt;/span&gt;&lt;span&gt;implementation is chosen by the tool.  The chosen optimization invariably &lt;/span&gt;&lt;span&gt;matches or exceeds the performance of implementations by human experts. We &lt;/span&gt;&lt;span&gt;call the underlying approach Design by Transformation (DxT).&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;There are at least a couple of interesting things to be said here, from the point of view of massive-scale computation (as the one that happens in Facebook, Twitter, Google, Tumblr, Amazon, e.g.) engineering:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;First, the majority of large-scale massively-distributed computation (like recommender systems or community detection) is numerical and no one is taking advantage of this handy bit of information. Paradigms for massive computation (like MapReduce) specify information flow scheduling, but assume entirely arbitrary information processing by user applications, thereby foregoing the ability to (statically or dynamically) optimize the resulting distributed code (in general and with respect to the available hardware). A direction worth exploring!&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;My current favorite paradigm for massive data processing is GraphLab, or to be more specific, the abstraction proposed by the GraphLab team. It is worth exploring how this compares with the paradigm in FLAME and whether a marriage is possible.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;FLAME claims to have converged on a programming paradigm that shields the novice programmer from the tricky pitfalls of numerical algorithms. If this is indeed achieved, it worth keeping their design ideas when developing runtime platforms for massive-scale computation. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;The possibilities hinted at are quite attractive: &lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;Can one design an optimizing compiler (and respective runtime) for massive-scale distributed numerical computation by fusing ideas from FLAME and GraphLab?&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://popalg.tumblr.com/post/18570988690</link><guid>http://popalg.tumblr.com/post/18570988690</guid><pubDate>Thu, 01 Mar 2012 17:39:00 -0500</pubDate></item><item><title>The Nitti Pear programming font</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m04l6yBQYU1qzy3fq.png"/&gt;&lt;/p&gt;
&lt;p&gt;I’ve designed a programming font, which has stood the test of time (with me) for about a couple of months now. My starting point was Nitti (Light and Medium), a very elegant and little known monospace font. I went on to make a myriad of changes to ensure the font meets certain stylistic requirements for programming purposes. For example, the signs ‘&amp;lt;’ and ‘-’ need to be vertically centered (with respect to each other) so that pointer dereferences ‘-&amp;gt;’ (say in C/C++) and channel sends ‘&amp;lt;-’ (say in Go) appear pleasing and non-disturbing. &lt;/p&gt;
&lt;p&gt;I’ve attached a screenshot from my machine, which features the font in use in a Go program inside Vim at 19px size. If you are lusting after my creation, do let me know. My codename for this font is Nitti Pear.&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/18458933385</link><guid>http://popalg.tumblr.com/post/18458933385</guid><pubDate>Tue, 28 Feb 2012 18:00:00 -0500</pubDate></item><item><title>MapReduce &lt; GraphLab &lt; Pregel</title><description>&lt;a href="http://graphlab.org/"&gt;MapReduce &lt; GraphLab &lt; Pregel&lt;/a&gt;: &lt;p&gt;GraphLab is a programming abstraction which is more general than MapReduce (Google) and less general then Pregel (Google). It is easier to parallelize than Pregel and allows for much natural and flexible implementation of modern machine learning and graph manipulation algorithms. In addition to that, it beats both frameworks in allowing vertex-level asynchrony.&lt;/p&gt;</description><link>http://popalg.tumblr.com/post/18450148159</link><guid>http://popalg.tumblr.com/post/18450148159</guid><pubDate>Tue, 28 Feb 2012 15:34:07 -0500</pubDate></item><item><title>Testing global graph properties via few parallelizable samples</title><description>&lt;a href="http://cs.haifa.ac.il/~ilan/online-papers/testing_hyperfinite_stoc_11.pdf"&gt;Testing global graph properties via few parallelizable samples&lt;/a&gt;: &lt;p&gt;This paper demonstrates how one can compute non-trivial global graph properties by a small number of vertex samples. While it does not directly meet a specific need in the social graph business, it is exemplary of a class of similar algorithms which are efficient to parallelize in the &lt;a href="http://graphlab.org" title="GraphLab" target="_self"&gt;GraphLab&lt;/a&gt; computational model and are likely very practical for huge social networks.&lt;/p&gt;
&lt;p&gt;This paper’s introduction is, perhaps, more informative than its results in that it contains references to good reads in this field (of testing/exploring graph properties using this highly-parallelizable sampling paradigm), e.g. &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Hassidim, Kelner, Nguyen, Onak, &lt;em&gt;Local graph partitions for approximation and testing&lt;/em&gt;, FOCS 2009&lt;/li&gt;
&lt;li&gt;Nguyen, Onak, &lt;em&gt;Constant-time approximation algorithms via local improvements&lt;/em&gt;, FOCS 2008&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;</description><link>http://popalg.tumblr.com/post/18439927626</link><guid>http://popalg.tumblr.com/post/18439927626</guid><pubDate>Tue, 28 Feb 2012 11:15:00 -0500</pubDate></item></channel></rss>
