…I’ve observed that as authentication systems develop they gradually merge with other abuse-fighting systems dealing with various forms of spam (email, account creation, link, etc.) and phishing. Authentication eventually loses its binary nature and becomes a fuzzy classification problem.
Via Chas Emerick.
…It’s time to deprecate Noir and ask that people focus on Compojure instead…
For new websites, please use Compojure and lib-noir. This is pretty much just as batteries included as Noir itself ever was! You just have to learn how to write routes with Compojure. It’s easy and just as concise as it was in Noir. You don’t have to use ring-jetty-adapter and stuff, just use the lein-ring plugin to start your server. Also, if you took advantage of Noir including hiccup by default, you’ll have to have an explicit dependency on it now. No biggy, right? Right!
[Logic programming is] an incredibly rich field with decades worth of research that’s still being actively explored from many different perspectives. The following list will reflect my biases - I’m as interested in implementation as I am in its practical use.
A cool little turtle graphics app running in the browsers, powered by Roy, by Juha Paananen.
There are a few different types of space leak here, but they are quite different and a visitor would do well not to confuse them (the methods for handling them if encountered in the wild vary, and using the wrong technique could exacerbate the situation).
A taxonomy of memory consumption bugs specifically in terms of Haskell, but many apply to other garbage collected languages as well.
@supports takes the form of an at-rule block, which performs a test and then executes normal CSS rules placed inside the block depending on whether the test returns true or not. In this case, the test is always one or more CSS declarations, and the browser returns true if it supports the indicated declaration(s)
Luca Bolognese on representing errors in programs. Via Ivan Towlson.
The old way to write Java Servers is New again (and way better)
Via David Herman.
At this point, you wouldn't think there was anything left to say about FizzBuzz. Turns out Haskell programmers have a different opinion.
There are actually significant, effectively fatal performance problems (such as 30-second loading delays, or longer) on mobile devices when using optimizeLegibility for long pages…
A guide in slideshow form.
And from the comments:
“…I grind with a Harrio hand crank burr grinder modified to accept an electric screwdriver. I got tired of cranking by hand.…”
Cabel Sasser on the music he created for the faux-8bit iOS game The Incident.
To match the 8-bit visuals, I returned to my roots: I plopped out a Bootcamp partition with Windows XP, installed a copy of Famitracker — a music app that emulates the original Nintendo sound chip — and started typing…
…It was nerdy-cool to think that this music could actually be compiled and played on an original Nintendo if someone so desired. In other words, there’s no post-production trickery here…
The acoustic guitar cover of the theme, Incidente y El Tema del Amor, is particularly excellent.
Dependant Types are something I keep hearing of, but almost never about. This article is fairly abstract but explains loosely how dependant types are related to logic via the Curry-Howard Isomorphism and goes on to explain some potential advantages of the model.
Dominik Dabrowski has compiled a list of less well known, but useful, Python libraries.
Written? Kitten! is an amusing, browser based, writing productivity tool. Every 100 (configurable) words you write, you are rewarded with a new picture of a kitten that is displayed beside the text field. I tried it out briefly, and its surprisingly effective; I spent more time producing words and less time fussing about editing myself.
Monads are highly useful for some aspects of programming work, but they are certainly not an essential or core part. You will probably find that most large, well-written Haskell programs contain about 50-80% code that does not involve monads at all—the bulk is just pure data manipulation. Of the remainder, the monad use is mostly straightforward and follows certain common idioms. Real scary stuff is pretty rare.
A great, and clear, introduction to monads from the ground up, without resorting to category theory or math along the way. Via Tavis Rudd.
Blues guitarist Charlie Hunter plays a few songs and talks about guitar at Premier Guitar. I had never heard of him before and his playing (and guitar – bananas!) are amazing.
The key claim of this paper is that a range of important modern programming models can be encoded using a simple, retargetable and theoretically well founded extension.
Via Paul Nakata.
A parody video of the Gotye hit Somebody That I Used To Know. Via Ruth.
A remarkably simple optical tremelo instrument effect unit project from Make magazine. Includes a video showing how to build it, and all the plans and patterns required.
There seems to be a lot of confusion among developers on how garbage collectors actually work. They really aren’t as magical as some people think; in many ways, some garbage collectors are actually quite crude…
I’ll try to shed some light on how GCs work in a way that (hopefully) any developer can understand…
This is a nice high level look at the conceptual basics of Garbage Collection, general implementation strategies and pitfalls. It contrasts different platforms and languages throughout. Worth reading.
This article went past on twitter ages ago, but I've finally got round to reading it in my Instapaper queue. BitC is a systems programming language, and the Shapiro has an interesting perspective on programming language design and the needs of systems languages in particular.
A mind bogglingly large catalog of super powers. Via Douglas
John Tromp's amazing entry in the IOCCC. It implements a tiny interpreter for the Binary Lambda Calculus (also invented by Tromp). I particularly like the Hilbert curve implementation.
See also: The interpreter's source.
John Carmack of id Software writes about functional programming. He talks specifically about C++ but his comments are equally valid in other imperative languages. This is a really good read on why functional programming is valuable from a pragmatic point of view.
Source Code Pro is an open sourced monospaced typeface from Adobe designed for source code. I've switched to it in all my text editors and I have been very impressed with how crisp it renders, and the clarity of the glyphs. Via Matt Wilson.
The Webkit project recently got a 3.7X speedup in their parallel garbage collector by removing a call to
sleep(). Nerds being nerds, a big deal was made of this. As you might expect for a project that is so performance and benchmark sensitive, this is more complex that it first appears. This article goes into detail about why the call was added in the first place, and the fix. Short version: concurrency is still hard.
Dramatic characters retain control of their destinies until they activate them, by making crucial decisions they can’t take back. Then the narrative machinery kicks into place, carrying them toward inevitable realization…
This idea contravenes a central roleplaying assumption, that players must retain control and freedom of action for their characters at all times.…
Robin Laws' looks at the role of consequences and character control in RPGs. Definately worth a read.
Via Stephen Bier.
There is a new revision of the venerable Call of Cthulhu RPG underway, and surprisingly it looks like the rules are actually getting revised! The authors, Mike Mason and Paul Fricker, did a seminar on the that was recorded by yog-sothoth.com, and Shane Ivey at The Unspeakable Oath has gone through and compiled a comprehensive summary for the hour or so of audio.
“It’s still Cthulhu as you know it,” Mike says. “It still plays the same, in a sense. What we’ve done is hung some bells and whistles, and tweaked some bits that we felt didn’t work so well. It’s the same game. We didn’t set out to write a new rulebook. We set out to refresh the rulebook.”
Interesting responses from CoC luminaries such as Dan Harms and John Scott Tynes in the comments too. The changes made to the game might be small compared to the typical revisions RPGs recieve, but the CoC community is relatively conservative and isn't fond of anyone messing with their game. It will be interesting to see how this revision is recieved.
An interesting article about (and brief interview with )one of the most recognised people in comics. The 1990 Comics Journal Jack Kirby interview mentioned in the article is worth reading too.
A PC from Orange Amps. Are they having a laugh? It doesn't look like it.
A McSweeny's list.
Another great article for Call and Trail of Cthulhu from Adam Gauntlett.
Most Cthulhu adventures, whether Trail or Call, assume that the events the protagonists are meant to be investigating are all basically true. Very rarely adventures … tackle the fraudulent side of hauntings and occult phenomena…
This looks at using fraudulant occultists and materials in your Cthulhu game, with a particular focus on Bookhounds of London.
Typekit is a great servive, but apparently it has the potential to kill your site if it is ever unreachable due to the suggested synchronous loading of it's scripts. This article suggests a nice solution that uses Modernizr.
Typekit have their own solution, but its frankly a bit squirrelly if you already use modernizr.
Via Tim Kelleher.
A fascinating article about using computer vision to process rain radars for making predictions about rain from the makers of Dark Sky, an app I would love to be able to use.
The Onion reports. Apparently not part of their comics issue. Tip of the hat: Gary Fredericks.
An overview of tuning the Java garbage collector.
animate function. JSTween provides more fine grained control without much extra verbosity, as well as significantly better performance. Via Matt Wilson.
Another interesting perspective on Prometheus. Be sure to check out the whole series. Via Kenneth Hite.
HitFix dig deep into spoilers and questions about Prometheus. They come up with some different answers to me. Via Simon Hansman.
Raptor is an interesting looking, and relatively contemporary, rich text editor for embeding into a webpage, e.g. like TinyMCE or other horrors. From brief experimentation it appears to be a reasonable candidate.
Typotheque has a detailed article about coming high and low level opentype features support in CSS, along with compatibility tables. It looks like significantly more advanced web typography is just around the corner. I get all my links from Tim Kelleher.
A neat trick using SASS 3.2's improved
mixin support to simplify handling media queries. Hat tip: Tim Kelleher.
Scott Lowe has written an article about L-Systems in Clojure and using Quil (a Processing wrapper) for the drawing. Much nicer than a direct Java 2D turtle. Via David Nolan.
A good indepth article about the implications of various font rendering systems across multiple OSes and the impact of different font formats with respect to webfonts. Via Tim Kelleher.
Jim Duey's latest Monads in Clojure post looks at writing a parser for JVM bytecodes. This is a great practical example of using the state monad as the basis for a DSL. Don't miss the Performance note at the bottom.
A huge (35 minute) video where Nels Cline runs through his touring rig including a billion guitars, his amp, and effects.
A series of articles by Karloff discusses ghost stories in the context of the Trail of Cthulhu RPG, specifically for the Bookhounds of London campaign frame. via Kenneth Hite.
Fogus's suggestions on how to improve your reading throughput. The suggestion to “Be willing to abandon bad books” is something I need to get better at.
On headlines that end in question marks.
I've added a recipe for implementing a basic MetaWeblog server endpoint in Clojure to the necessary-evil github wiki. It's bare bones and uses a dummy store that does the bare minimum. Because so much of the detail of MetaWeblog is dependant on the backend and model you use, it's not much more than the public interface.
The Think Relevance podcast interviews Brenton Ashworth about the ClojureScript One project.
Clojure/core have released a guide and sample project for producing web applications based on Clojure and ClojureScript. As a bonus the project is an excellent example of using Marginalia for documentation.
The Games The Thing podcast interviews Kenneth Hite about his upcoming GUMESHOE vampire spy thriller RPG.
Matt Gemmell recently kicked the discussion around blog comments back to life, first by disabling comments on his own site and then by posting a short followup piece. He has now compiled a comprehensive set of the responses to his initial post. The cloud of discussion around this issue has generated a broad range of points of view that are worth the time to read.
I discarded comments here on A Lazy Sequence back in 2009 and have no regrets. I have found that Twitter, Hacker News, and Reddit provide much better forums for discussing articles I have posted than I could have provided here.
Mercury is a statically typed Logical programming language. It's type system includes agebraic data types, “modes” (whether an predicates parameters may be inputs or outputs), and definitions of the determinism a predicate provides (the number of values it generates on outputs).