Light Table's numbers 15 Apr 2012 EDIT: Light Table is now on kickstarter! EDIT: oh, and I set up a mailing list to keep informed. All I can say is "wow"! The response to Light Table has been far more positive and far greater than I could've imagined. To put it into perspective, here are some aggregated numbers at the time of this writing: There were 105,872 unique visits to the post, just shy of 200,000 pageviews and 80,000 video plays.It has been viewed in 163 countries (there are only 204 total)The post on HN stayed on the front page for more than 48 hours (It's actually still there now) and has amassed more than 1400 points. So the big question on most people's minds is "Now what?". I was surprised at the number of people who cried out for a Kickstarter for the project. What languages will it support? The first two languages it will support are Javascript and Clojure, but the application will be written in such a way that adding new languages can happen through plugins. Can I script/extend it?
Exponential smoothing Exponential smoothing is a technique that can be applied to time series data, either to produce smoothed data for presentation, or to make forecasts. The time series data themselves are a sequence of observations. The observed phenomenon may be an essentially random process, or it may be an orderly, but noisy, process. Whereas in the simple moving average the past observations are weighted equally, exponential smoothing assigns exponentially decreasing weights over time. Exponential smoothing is commonly applied to financial market and economic data, but it can be used with any discrete set of repeated measurements. The raw data sequence is often represented by {xt}, and the output of the exponential smoothing algorithm is commonly written as {st}, which may be regarded as a best estimate of what the next value of x will be. where α is the smoothing factor, and 0 < α < 1. Background[edit] The simple moving average[edit] where the choice of an integer k > 1 is arbitrary. such that where
10 Online Coding Contests For Programmers! These sites have their sets of practice problems, practice sessions and competition rounds. Major of the competitions are sponsored by some big shot companies and they also keep a keen eye on the contests, so who knows you might just one lucky person to be selected for a big internship or for a big job. Some of these competitions are held on weekly, monthly or yearly basis where as others have specific dates for competitions. Topcoder TopCoder is indeed the world’s largest competitive software development community where developers from all over the world take part in. CodeChef CodeChef is a non-commercial organization operated by DirectI, an Indian software company based in Mumbai, India. Sphere online judge (SPOJ) Sphere online judge is one of the earliest competitions, with support for more than 40 programming languages and compilers. CodingBat CodingBat is a live coding site, which offers problems to build coding skills in Java and Python. Google Code Jam Dream in Code Codeforces
Clojure 1.4.0, clj-time, congomongo April 15, 2012 · No Comments Clojure 1.4.0 has been released and it includes several nice enhancements and some bug fixes. Everyone will have their favorites but mine include (in no particular order): mapv and filterv (which return vectors) and reduce-kv (can treat a vector as a collection of indexed pairs)require can take :refer and a list of symbols - or :all - so you no longer need to blanket 'use' a namespace*compiler-options* so you can disable locals clearing to improve the debugging experience= on char arguments, removing the reflection warning and improving performancewrapping exceptions in RuntimeException no longer happens so you can catch the underlying exception more easilysyntactically broken tests using clojure.test/are no longer silently pass - this bit me with a patch submitted to CongoMongo! So, yes, it's a small release (I didn't mention the new reader literals - I'm not ready to use those yet but I'm sure some people will find them very useful). Tags: clojure
A set of top Computer Science blogs they are written by computer scientists and focus on computer science research;they are of consistently high quality;I regularly read them. N.B. I have deliberately excluded blogs primarily focusing on computer science education (for another time). The Endeavour by John D. Clearly this set is incomplete — please post your computer science research blog recommendations in the comments below; I’d be particularly interested in blogs covering compilers, concurrency and computer architectures. Like this: Like Loading... 7 Steps to a Cheaper Hotel Room Photo There are so many ways to wrangle deals on hotel rooms these days that no matter how great a bargain you find, it’s not uncommon to worry you missed a better one. The most obvious method to suss out savings is to explore the pricing and inventory differences among standard booking sites like Hotels.com and Orbitz. But dig a little deeper and there are countless ways to find “unpublished” rates, typically on excess rooms hoteliers think they won’t be able to sell at full or even publicly discounted prices. To tame this wild world into submission, I designed a five-step process (with a two-step bonus round) and tested it out by planning an imaginary four-night trip to Paris over Labor Day Weekend. This guide, of course, is for budget travelers. But if you’re looking for a decent, well-located room — maybe even one with a little style — this system should come close to finding you the best deal possible. 1) Get the lay of the land 2) Price check (and search again) 3) Seek hidden rates
Clojure1.4のReader Literalsで遊んでみた Clojure 1.4が出ました! 前々から話題になっていたReader Literalsが使えるようになったので ちょっと遊んでみました。 まずは下準備† 基本はこちらに書いてある通りです。 $ lein new myreader $ cd myreader $ vi project.clj (defproject myreader "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.4.0"]]) ; 1.4.0 readerの定義は src ディレクトリ直下に data_readers.clj というファイルを作り、そこに定義します。 src/data_readers.clj { upper myreader.core/upper-case } src/myreader/core.clj (ns myreader.core) (defn upper-case [s] `(.toUpperCase s)) ここまで書いたらreplで試してみましょう。 $ lein repl #upper"hello, world";=> "HELLO, WORLD" なおreaderの定義は data-readers にbindingすることでも定義できます。 (defn upper-case2 [s] `(str "_" (.toUpperCase ~s) "_"));=> #'fuga.core/upper-case2(binding [*data-readers* {'upper fuga.core/upper-case2}] (println #upper"hello") ;=> HELLO (println (eval (read-string "#upper\"hello\"")))) ;=> _HELLO_ Gaucheのデバッグプリント† 少し使えそうなものとしてGaucheのデバッグプリント? { ? (ns myreader.core) (defn debug-print [x] `(let [res# ~x] (println "? こんなものを定義してあげると以下のようなことができます。 (map inc #? 文字列中の式を展開† イイネ! 最後に†
Smooth Voxel Terrain (Part 2) « 0 FPS Last time we formulated the problem of isosurface extraction and discussed some general approaches at a high level. Today, we’re going to get very specific and look at meshing in particular. For the sake of concreteness, let us suppose that we have approximated our potential field by sampling it onto a cubical grid at some fixed resolution. generalization of Minecraft-style voxel surfaces. ). Marching Cubes By far the most famous method for extracting isosurfaces is the marching cubes algorithm. Much of the popularity of marching cubes today is due in no small part to a famous article written by Paul Bourke. Paul Bourke’s exposition is really good. This last point needs some explaining, Conceptually, marching cubes is rather simple. different possibilities, each of which is determined by the sign of the function at the 8 vertices of the cube: Some of the marching cubes special cases. Even worse, some of these cases are ambiguous! Marching Tetrahedra The Primal/Dual Classification S.F. T. .
Keypress: A Javascript library for capturing input The first thing to do is include the JavaScript file in your page. Once you've got that loaded in, you'll want to start by instantiating a listener: var listener = new window.keypress.Listener(); Once you've done that you can register combos with that listener you've created. listener.simple_combo("shift s", function() { console.log("You pressed shift and s"); }); listener.counting_combo("tab space", function(e, count) { console.log("You've pressed this " + count + " times."); }); listener.sequence_combo("up up down down left right left right b a enter", function() { lives = 30; }, true); If you only want to use Keypress for some very simple keyboard shortcuts, that's all you need to know! If you want to use some of the more advanced features of Keypress, you can use the register_combo API and supply an object with any number of options described below. listener.unregister_combo("shift s"); listener.unregister_many(my_registered_combos); listener.reset();
Mocking out in Clojure with with-redefs-fn (no Midje this time) | Japila :: verba docent, exempla trahunt I made some changes in a Clojure project – librarian-clojure. The changes revolved around security in a Compojure web application. What I needed was to check whether they’re correct and hence I needed some tests with mocking involved because the functions the changes were introduced to used external sources – MongoDB and an encryption library. I didn’t mean to set up the environment, but just enough to get the task done. And it should be fast and quick. The functions are used in a web application, but neither a web container nor a Request object was necessary since Ring turns HTTP requests into…maps. I’ve been doing Java programming for years, but only recently have I been exposed to the aspects of Test-Driven Development (TDD). I’ve also been leaning quite recently towards believing that despite repeated assurances of TDD applicability to and increased quality of applications developed in Java or any object-oriented languages, TDD was simply too laborious. Be Sociable, Share! Like this:
Vim, you complete me Ever watch someone else type at a shell, spelling out every filename, even making typos and fixing them, very slowly? "Hit tab!", you yell, helpfully. I do that when watching someone use vim. The Quick Rundown Play with these to get a feel for them. imap <Tab><C-P> The Keyboard Details When using completion, a helpful menu pops up, showing all the potential matches. When you're happy with the selected word you can press ^Y; to give up entirely, press ^E. You can also insert the tokens after a completion, which is useful for when you forget that we invented abstractions 40 years ago. Scenario: paint a wall blue Given I have some paint And I have a white wall When I paint the wall blue Then I should see "success" And now you want to make a similar scenario, but for red: Scenario: paint a wall red G^X^L^X^L^X^L^Wred T^X^L The Configurations You can change all of this. set complete=. set wildmode=longest,list:longest How vim should go about replacing your text. set completeopt=menu,preview Be Smarter
Tourist Places in Karnataka Light Table by Chris Granger Here's a much higher quality video: Despite the dramatic shift toward simplification in software interfaces, the world of development tools continues to shrink our workspace with feature after feature in every release. Even with all of these things at our disposal, we're stuck in a world of files and forced organization - why are we still looking all over the place for the things we need when we're coding? Why is everything just static text? Bret Victor hinted at the idea that we can do much better than we are now - we can provide instant feedback, we can show you how your changes affect a system. We can do better, and to that end, light table is the redefinition of how we develop. Light Table is based on a very simple idea: we need a real work surface to code on, not just an editor and a project explorer. Light table is based on a few guiding principles: Let's take a look at how these things manifest themselves in Light Table. Docs everywhere Instant feedback Yes.
New Project :: Fluidui.com FluidUI.com (Fluid UI) uses cookies and saves data on our servers in order to provide the Fluid UI service. This data is gathered in order to provide the relevant functionality for your account. The purpose of this article is to inform you what information we store, when we request it and why we need it. Your email address is used to create a unique identifier for your account when you sign up. Third party services providers Fluid UI also uses a number of third party services providers in order to provide the Fluid UI service: Google Google Analytics is used to anonymously track who is visiting our site, how long they are staying and where they are coming from in order to allow us to improve how we sell the Fluid UI service. Accessing or deleting your data