|
At AdRoll, we have a lot of data to deal with. As we keep accumulating all of this data, our scaling issues become more complicated, and even something as simple as counting becomes a bit of a chore. After using Bloom filters to count uniques, we eventually wanted to find something more space efficient. We started researching, and implemented a form of HyperLogLog, which gives us the ability count uniques with good accuracy, do it in a....
|
|
Someone asked a question on the forum today on how to gain the benefits of inheritance without embedding. It is really important for everyone to think in terms of Go and not the languages they are leaving behind. I can’t tell you much code I removed from my early Go implementations because it wasn’t necessary. The language designers have years of experience and knowledge. Hindsight is helping to create a language that is fast, lean and real..
|
|
In the past two posts , we created and validated a decoder for genome data in 2bit format. Let’s start actually looking at the human and yeast genomes per se . First, if you haven’t downloaded it yet, you’ll need a copy of the human genome data file: cd /tmp wget http://hgdownload.cse.ucsc.edu/goldenPath/hg19/bigZips/hg19.2bit (Depending on your local bandwidth conditions, this can take quite awhile.) Again we def....
|
|
In the past two posts , we created and validated a decoder for genome data in 2bit format. Let’s start actually looking at the human and yeast genomes per se . First, if you haven’t downloaded it yet, you’ll need a copy of the human genome data file: cd /tmp wget http://hgdownload.cse.ucsc.edu/goldenPath/hg19/bigZips/hg19.2bit (Depending on your local bandwidth conditions, this can take quite awhile.) Again we def....
|
|
In the past two posts , we created and validated a decoder for genome data in 2bit format. Let’s start actually looking at the human and yeast genomes per se . First, if you haven’t downloaded it yet, you’ll need a copy of the human genome data file: cd /tmp wget http://hgdownload.cse.ucsc.edu/goldenPath/hg19/bigZips/hg19.2bit (Depending on your local bandwidth conditions, this can take quite awhile.) Again we def....
|
|
Part of me think that an entry level iPhone will be very much like an iPod touch with an antenna, with hardware that’s capable enough to run all of iOS 7’s features, is better than the any last generation iPhone, but won’t compare to what’s inside Apple’s flagship offering.” Permalink.
|
|
Marco Arment, writing in response to a Hacker News commenter questioning the effectiveness of Apple punditry changing minds within the corporation: “I’ve heard a number of times in the last few years that something I wrote was circulated within Apple or brought up in an internal discussion, usually to support one side of a debate. And it’s very unlikely that Marco.org is the only site that Apple employees read.” That’s pretty awesom..
|
|
It’s been a while since I linked to post on Cabin Porn, but this beautiful cabin was just too good to pass up. Permalink.
|
|
Copying iOS 7 is going to be a big problem for cheap hardware. iOS 7’s appearance and dynamics require a powerful GPU and advanced, finely tuned, fully hardware-accelerated graphics and animation APIs. This will hurt web imitators most, but it’s also going to be problematic for Android: while high-end Android phones have mostly caught up in GPU performance, and recent Android versions have improved UI acceleration, most Android devices sold..
|
|
My second foray into the world of Apple speculation. In my first, which I titled Apple’s Wildcard , I spoke to the possibility of Tim Cook announcing an iPone 6 and budget iPhone this fall: while I consider neither particularly likely, leaning more towards an iPhone 5S as the continuation of Apple’s apparent tick-tock cycle and disappointment for those waiting on a budget iPhone, I hedged my bets with Tim Cook’s “Can’t innovate, my ass” ..
|
|
We're more than halfway through the #1GAM year! What I've made so far.
-
liza.io
-
12 years ago
-
eng
I looked at my One Game a Month profile just now and realized that we are halfway through the year. That’s six games made so far! I’ve tried to pick projects that will help me learn something new each month. I figured I’d do a quick recap of what I’ve done so far:
|
|
A simple hack to add a user type to my puppet-ipa module turned out to cause quite a stir. I’ve just pushed these changes out for your testing: 3 files changed, 1401 insertions(+), 215 deletions(-) You should now have a highly capable user type, along with some quick examples . I’ve also done a rewrite of the difference engine , so that it is cleaner and more robust. It now uses function decorators and individual function co..
|
|
A simple hack to add a user type to my puppet-ipa module turned out to cause quite a stir. I’ve just pushed these changes out for your testing: 3 files changed, 1401 insertions(+), 215 deletions(-) You should now have a highly capable user type, along with some quick examples . I’ve also done a rewrite of the difference engine , so that it is cleaner and more robust. It now uses function decorators and individual function co..
|
|
If you work a lot on the command line you are probably familiar with the top utility to see what process is taking the most CPU or memory. There’s a similar utility called htop, which is an advanced, interactive system-monitor utility that can be used as a replacement tool for the default process monitoring command ‘top’ on a Linux ecosystem. This interactive process viewer provides a real-time, dynamic view of what’s happening on your Rasp..
|
|
The first Music Hack Day — organized by our very own Dave Haynes — was held in July 2009 in London, UK. Since then there have been over 3…
|
|
Aswin Natarajan is an associate at TechStars, one of the worlds leading startup accelerators He is also the cofounder of Startup Exchange…
|
|
The first Music Hack Day — organized by our very own Dave Haynes — was held in July 2009 in London, UK. Since then there have been over 3…
|
|
Try this out for fun. int[] i = new int[]{1, 2, 3}; System.out.println(Arrays.asList(i).size()); Integer[] ii = new Integer[]{1, 2, 3}; System.out.println(Arrays.asList(ii).size()); Output: 1 3 What the hell, Java? This is totally unexpected behaviour! In this case Java is being a bit pedantic. See, Collections can contain only contain Objects, and an int is not an Object but int[] is an Object, so that’s why you get a list wi..
|
Recently, we launched our first ever animated guide to A/B testing which made it to the top of HN homepage (Yay!). In this post, I'll go…
|
|
Chocolatey, Remote PowerShell and Azure IAAS - automating dev box creation
-
blog.gripdev.xyz
-
12 years ago
-
eng
Hi All, Recently I’ve needed a throw away environment and so turned to Azure IAAS to get a nice VM up and running quickly. To do this I’ve turned to Chocolatey, its a great utility for installing application and I’d been using it to install simple bits and bobs on my local machine. I fell in love, there are some caveats to be aware of but in short its awesome.
|
|
Computed Properties By design, Handlebars templates don’t allow complex expressions. You are given an {{#if}} block helper, but it can only evaluate whether something is “truthy” (aka true, a non-empty string or array or other value that is not undefined or null.) For example, you can’t do something like this: {{ #if ( eyes.length == 1 ) && ( horns.length == 1 ) && flies && ( color == 'purple' ) && ea..
|
|
Today we’ll validate the genome decoder we described yesterday , once again with our friend the yeast Saccharomyces cerevisiae (you may want to enjoy a slice of freshly-baked bread and a stein of Pilsner with this post). We are aided in this case by the availability of the SacCer3 genome in both 2bit and FASTA formats. We can get the FASTA version in the same place we got the 2bit file : mkdir /tmp/sacCer3_fasta cd /tmp/sac....
|
|
Today we’ll validate the genome decoder we described yesterday , once again with our friend the yeast Saccharomyces cerevisiae (you may want to enjoy a slice of freshly-baked bread and a stein of Pilsner with this post). We are aided in this case by the availability of the SacCer3 genome in both 2bit and FASTA formats. We can get the FASTA version in the same place we got the 2bit file : mkdir /tmp/sacCer3_fasta cd /tmp/sac....
|
|
Today we’ll validate the genome decoder we described yesterday , once again with our friend the yeast Saccharomyces cerevisiae (you may want to enjoy a slice of freshly-baked bread and a stein of Pilsner with this post). We are aided in this case by the availability of the SacCer3 genome in both 2bit and FASTA formats. We can get the FASTA version in the same place we got the 2bit file : mkdir /tmp/sacCer3_fasta cd /tmp/sac....
|
|
Hi all, A while back I did a talk @wpug about the work I’d done when I re-wrote one of my apps with a new shared core. One of the things I did in the talk was compare the stats from my code before and after the move. In short I had a play around with the “Analyze” menu in VS2013 - looking at complexity, lines of code and the dependency graphs.
|
|
Hi All, I’ve put a Preview release of PaperBoy on the store, for those who want to test it out (WP8 only atm) you can download it here: http://www.windowsphone.com/s?appid=9f384907-62df-4d4d-ae10-f69ccdbf1ddf Let me know your feedback via: @lawrencegripper on twitter https://gripdev.uservoice.com/or via UserVoice
|
|
For the most part I try to stay away from Apple speculation: quite simply, I neither know enough about the company’s past and present situation nor do I pay close enough attention to pick up on the subtleties of this practice. Then I read an interesting article speculating about Apple’s Fall hardware announcements, and I decided to give it a try. Permalink.
|
|
Multi-threaded applications are very complicated, especially when your code is not organized and consistent with how resources are accessed, managed and maintained. If you want to minimize bugs you need philosophies and rules to live by. Here are some of mine: Resource allocation and de-allocation should be abstracted and managed within the same type. Resource thread safeness should be abstracted and managed within the same type. A publ....
|
|
The entire human genome is available as a single .2bit file here (click on “Full Data Set”, then download hg19.2bit). Unlike the stellar signal in His Master’s Voice , the 2bit format is reasonably clearly documented. We want to write Clojure code to: Provide base pairs in symbolic (rather than raw binary) form as lazy sequences – i.e., sequences which need not all fit in memory at once, but can be consumed and processed as needed....
|
|
The entire human genome is available as a single .2bit file here (click on “Full Data Set”, then download hg19.2bit). Unlike the stellar signal in His Master’s Voice , the 2bit format is reasonably clearly documented. We want to write Clojure code to: Provide base pairs in symbolic (rather than raw binary) form as lazy sequences – i.e., sequences which need not all fit in memory at once, but can be consumed and processed as needed....
|
|
The entire human genome is available as a single .2bit file here (click on “Full Data Set”, then download hg19.2bit). Unlike the stellar signal in His Master’s Voice , the 2bit format is reasonably clearly documented. We want to write Clojure code to: Provide base pairs in symbolic (rather than raw binary) form as lazy sequences – i.e., sequences which need not all fit in memory at once, but can be consumed and processed as needed....
|
|
Compressing Limited Colour PNG images Most of the . PNG files on this site are the ‘blueprint’ style diagrams, like this one: Figure 1. This illustration is a large 5. 6MB SVG file, mostly because of the very detailed paisley pattern that I used. Exported to PNG - and then compressed using the process below, you can get this down to 118.5kB. I create these in Inkscape as vector . SVG files & export them to bitmap . PNG files.....
|
|
Problem: Given a data stream of unknown size $ n$, pick an entry uniformly at random. That is, each entry has a $ 1/n$ chance of being chosen. Solution: (in Python) import random def reservoirSample(stream): for k,x in enumerate(stream, start=1): if random.random() < 1.0 / k: chosen = x return chosen Discussion: This is one of many techniques used to solve a problem called reservoir sampling. We often encounter data sets that we’d like to s..
|
|
Problem: Given a data stream of unknown size $ n$, pick an entry uniformly at random. That is, each entry has a $ 1/n$ chance of being chosen. Solution: (in Python) import random def reservoirSample(stream): for k,x in enumerate(stream, start=1): if random.random() < 1.0 / k: chosen = x return chosen Discussion: This is one of many techniques used to solve a problem called reservoir sampling. We often encounter data sets that we’d like to s..
|
|
Problem: Given a data stream of unknown size $ n$, pick an entry uniformly at random. That is, each entry has a $ 1/n$ chance of being chosen. Solution: (in Python) import random def reservoirSample(stream): for k,x in enumerate(stream, start=1): if random.random() < 1.0 / k: chosen = x return chosen Discussion: This is one of many techniques used to solve a problem called reservoir sampling. We often encounter data sets that we’d like to s..
|
|
I got into an ironic conversation the other day over the usefulness of having multiple languages in the world. I am of the opinion that languages are redundant and they only exist for being the most usable mechanism we have invented for communication so far.
|
|
Since I started writing code in Go it has been a mystery to me how best to organize my code and use the package keyword. The package keyword is similar to using a namespace in C#, however the convention is to tie the package name to the directory structure. Go has this web page that attempts to explain how to write Go Code. http://golang.org/doc/code.html When I started programming in Go this was one of the first documents....
|
|
Every time I work with MQ and Spring JMS I want to poke my eyes out with a dull instrument. It’s always a pain in the neck. My most recent challenge was trying to get the JMSXUserID field to flow through to the application on the other side of MQ. First, I created a MessagePostProcessor to add the JMS header public class MyMessagePostProcessor implements MessagePostProcessor { private String userId; @Override public Message postProce..
|