14 Jun 2013
13 Jun 2013
Besides 3 months interrupted to finish degree requirements, and including an internship, I’ve been at Mozilla for about 8 months now. After reading a blog post of another software engineer’s experience at Microsoft, I count my blessings. Reading that article set off too many alarms in my head. It was well written, and I sugguest you go read it, but…
11 Jun 2013
10 Jun 2013
There has been a lot of news recently on government surveillance of its citizens. The biggest two that have pervaded my news feeds are the protests in Turkey, which in particular have resulted in particular oppression of social media users, and the recent light on the US National Security Agency’s widespread “backdoor” in industry databases at Google, Verizon, Facebook, and…
6 Jun 2013
5 Jun 2013
4 Jun 2013
This tutorial shows you how to build responsive UI, this this case for a chat application. We'll also show you how to make your desktop app, mobile.
3 Jun 2013
I’ve been spending a little less time on my blog recently then I’d like to, but for good reason: I’ve been attending two weeks of research conferences, I’m getting ready for a summer internship in cybersecurity, and I’ve finally chosen an advisor. Visions, STOC, and CCC I’ve been taking a break from the Midwest for the last two weeks to…
Incredible. These tech whiz-kids get younger every year!
I work in a company that has an entirely MS-based network, which means, all that domain login crap and everything that comes with it: outlook, MS Communicator, proxies, monitoring and etc.
1 Jun 2013
Last time we defined and gave some examples of rings. Recapping, a ring is a special kind of group with an additional multiplication operation that “plays nicely” with addition. The important thing to remember is that a ring is intended to remind us arithmetic with integers (though not too much: multiplication in a ring need not be commutative). We proved…
I really enjoyed Sam Saffron's post about eliminating trivial inconveniences in his development process. This resonated with me as I tend to get really distracted by minor hiccups in the development process (page reload taking >2 seconds, switch to a new tab, etc). I took a look at my development process and found a few […]
31 May 2013
This tutorial shows you how to build a real-time stats streaming server for the purpose of multiplayer games or anything that involves statistics.
Introduction Neural networks are a method for classifying data based on a theory of how biological systems operate. They can also be viewed as a generalization of logistic regression. A method for determining the coefficients of a given model, backpropagation, was developed in the 1970’s and rediscovered in the 1980’s. The article “A Functional Approach … Continue reading Neural Networks…
30 May 2013
Last summer I was given an internship opportunity in the R&D department of Bazaarvoice as a software engineer. Having only finished my freshman year in college, I had no idea what to expect from a tech company of this size. I would have never guessed that on my first day I would be handed a […]
29 May 2013
This tutorial shows how to add chatroom features including user detection with presence, message persistence and multiple chatrooms.
27 May 2013
Sneezes, not buses: The hidden threat to your team's productivity.
26 May 2013
Trade offs As a developer you’re constantly faced with issues of choice: What library is best? What framework is best? What platform should we deploy on? Most of the time there isn’t a clear winner. The decision you make comes down to a series of trade offs. Do you want to optimize for developer happiness or performance? Do you care…
24 May 2013
Previously in this series we’ve seen the definition of a category and a bunch of examples, basic properties of morphisms, and a first look at how to represent categories as types in ML. In this post we’ll expand these ideas and introduce the notion of a universal property. We’ll see examples from mathematics and write some programs which simultaneously prove…
This tutorial walks you through building a basic chatroom layout, publish and receiving messages, and setting up jQuery mobile for simple chat.
23 May 2013
We started rolling out the next generation of the Penguin webspam algorithm this afternoon (May 22, 2013), and the rollout is now complete. About 2.3% of English-US queries are affected to the degree that a regular user might notice. The change has also finished rolling out for other languages world-wide. The scope of Penguin varies […]
20 May 2013
Resources: Amazon, Barnes and Noble, Play Books The book’s web site (O’Reilly) – downloads, errata etc A while ago I was attending one of the Developer, Developer, Developer conference in Reading, and I heard Alex Davies give a talk about actors and async. He mentioned that he was in the process of writing a short … Continue reading Book Review:…
17 May 2013
This tutorial (broken into 4 parts) shows you how to build a fully-featured web and mobile group chat app with JavaScript.
16 May 2013
Mozilla is engaged in a broad, deep conversation about Internet privacy. We believe in putting users in control of their online experience, and we want a healthy, thriving web ecosystem — we do not see a contradiction. However, sometimes a crucial experiment is required to prove it. To this end, we are testing a patch … Continue reading "C is…
15 May 2013
This post is mainly mathematical. We left it out of our introduction to categories for brevity, but we should lay these definitions down and some examples before continuing on to universal properties and doing more computation. The reader should feel free to skip this post and return to it later when the words “isomorphism,” “monomorphism,” and “epimorphism” come up again.…
13 May 2013
We just recently taped a new round of webmaster videos, and I thought this video deserved a full-fledged blog post. This is my rough estimate (as of early May 2013) of what search engine optimizers (SEOs) and webmasters should expect in the next few months: Bear in mind that this is a very rough estimate, […]
This is a “hairball” post you can ignore. However, this post does trace my thinking about how to scale webmaster communication. Part of me wants to start answering questions I get via email by stripping out the identifying information and then replying with a blog post. Instead of one person getting a single reply, everybody […]
A quick “hairball” post about how sometimes it’s better to just go with the flow. I like how xkcd made this point with a chart of whether it’s worth the time to fix something that’s bugging you. I have a friend who is mechanical engineer. A few years ago he took me for a tour […]
This is a harmless “hairball” post I had as a draft. Me: Hey, they added me to popurls.com! My wife: Never heard of it. (pause) Had you heard of it before? Me: Yeah. Wife: Really? Me: Yeah! Wife: (with an extra helping of sarcasm) Really? Me: Yes! Wife: (dripping with condescension) You’re a very important […]
This is the last half-finished “hairball” blog post about USB devices on Linux. I actually did manage to get a working program that controlled a USB foam missile launcher. Unfortunately, I didn’t document all the steps, so this blog post just sort of stops at some point. I got a USB Missile Launcher for Christmas. […]
What, *another* half-finished blog post about Linux USB drivers? Yup. Suppose you have a device and want a Linux device driver for it. There are a few steps you’ll need to take. One of the heroes in this area is Greg Kroah-Hartman. Greg wrote USBView, which is a Linux tool to enumerate a list of […]
Here’s another “hairball” post about USB devices and drivers on Linux. I wish some expert would write the definitive “here’s how to reverse-engineer a USB device and write a new USB driver” guide. I am definitely not that expert. Once you reverse engineer a Windows USB device enough to know how it works, you’re ready […]
For a while, I was really into reverse-engineering USB drivers. Don’t ask why. The heart wants what the heart wants. I didn’t finish this “hairball” post, but it has some info in it that still might be good. I recently stumbled across this post and it inspired me. I decided to try to reverse engineer […]
Over the years I’ve written a lot of blog posts to debunk misconceptions or claims that weren’t true. Sometimes I publish the blogs posts but often I don’t. This is a pretty typical example post. Someone claimed that Google was evil for removing a particular domain, when in fact the domain had been removed from […]
I started this blog post of Chrome tips in 2008. Even though this is a “hairball” post, some of these tips still work. – control-shift-V will paste your selection as plain text – control-shift-T will re-open the last tab you closed. You can repeat that to keep re-opening previously closed tabs. – Hover over a […]
This “hairball” post about Cuil isn’t really snarky, so I’ll post it. Cuil is no longer around, but it did spawn a funny post on Reddit about Cuil Theory. Cuil launched this week. For a search engineer, a new search engine is like a Christmas present: you can’t wait to play with it. Most search […]
You can ignore this ancient “hairball” blog post. Gather round, kids, and witness this blog post from a time *before internet-connected scales*. That’s right. Back then, we had to hack our Wii balance boards to connect them to the internet. Of course now you can buy wifi-connected scales from Fitbit and Withings. But in a […]
You can ignore this “hairball” blog post. This post dates back to a time when people actually curated, saved, and managed their bookmarks.html file. Then Google Chrome introduced the ability to save and sync all your bookmarks, extensions, etc. in the cloud. Now I sign in to Chrome and everything is synced in the cloud. […]
What’s that? You’ve never heard of an XMPCR? Don’t worry, the rest of the world hasn’t either. You can ignore this “hairball” post as I do spring cleaning on my blog. TimeTrax was a program that allowed XMPCR owners to listen to XM Radio on their computer. Even nicer, the program would “time shift” the […]
Note: this is a “hairball” post and you can ignore it. I was so proud of my first one million steps with a pre-Fitbit pedometer. Now I’ve done 13 million steps and it’s just kind of normal. For the record, the Fitbit is a great little pedometer, but I tend to lose one every few […]
This “hairball” post is ancient and unfinished. Would anyone care about this now? Probably not. Maybe some future data archaeologist will care. In my previous post I covered what a toolchain is and why you need one to cross-compile applications for the iPhone. I’ve seen rumors that there will be a Windows toolchain soon, and […]
My blog is almost eight years old, and I’ve published just under a thousand blog posts in that time. Along the way, I wrote about 100 draft notes that I never published. Sometimes I just didn’t finish the posts. Sometimes I thought they were too boring. Sometimes I wrote a blog post to debunk a […]
11 May 2013
Pablo Picasso Simplicity and the Artist Some of my favorite of Pablo Picasso’s works are his line drawings. He did a number of them about animals: an owl, a camel, a butterfly, etc. This piece called “Dog” is on my wall: Dachshund-Picasso-Sketch (Jump to interactive demo where we recreate “Dog” using the math in this post) These paintings are extremely…
9 May 2013
How to turn regular HTML5 games into a multiplayer HTML5 games. This tutorial covers multiplayer HTML5 game development with a tutorial.
7 May 2013
The other day I was thinking about the function for performing dynamic memory allocation in the C standard library, malloc. From the manual pages, If successful, the malloc() function returns a pointer to allocated memory. If there is an error, it returns a NULL pointer and sets errno to ENOMEM. One of the most common errors when using malloc is…
5 May 2013
All programs need some form of logging built in to them, so we can observe what it is doing. This is especially important when things go wrong. One of the differences between a great programmer and a bad programmer is … Continue reading →
This is a very informal blog of the Cabal hacking team at OdHac: Sasha Manzyuk, Bram Schuur and me (Dominic Steinitz). I really enjoyed pair programming with both of them and I certainly wouldn’t have tracked down the bug I investigated without their help. Also a big thank you to Roman Cheplyaka for organising a … Continue reading Cabal Hacking…
4 May 2013
In this post we’ll get a quick look at two ways to define a category as a type in ML. The first way will be completely trivial: we’ll just write it as a tuple of functions. The second will involve the terribly-named “functor” expression in ML, which allows one to give a bit more structure on data types. The reader…
This morning, Mozilla and OTOY made an announcement: Mozilla and OTOY deliver the power of native PC applications to the Web, unveil next generation JavaScript video codec for movies and cloud gaming What this means: ORBX.js, a downloadable HD codec written in JS and WebGL. The advantages are many. On the good-for-the-open-web side: no encumbered-format … Continue reading "Today I…
3 May 2013
Recently someone on twitter complained that Chrome was labeling their site as malware: http://Dvorak.org site blocked by Chrome browser after I wrote negative commentary about Google. I took a few minutes to compose a reply, so I’ll go ahead and post it here: Just to summarize: Chrome’s warning is correct. Your blog is hacked and […]
2 May 2013
This tutorial shows you how to use the geo coordinates API to stream geo coordinate data from MongoDB to an application using PubNub
From serious to scripting: The evolution of programming languages.
30 Apr 2013
Previously on this blog, we’ve covered two major kinds of algebraic objects: the vector space and the group. There are at least two more fundamental algebraic objects every mathematician should something know about. The first, and the focus of this primer, is the ring. The second, which we’ve mentioned briefly in passing on this blog, is the field. There are…
Introduction Having shown how to use automated differentiation to estimate parameters in the case of linear regression let us now turn our attention to the problem of classification. For example, we might have some data about people’s social networking such as volume of twitter interactions and number of twitter followers together with a label which … Continue reading Logistic Regression…
Trello has been out for less than two years and it’s been growing like wildfire. We recently hit 1.5 million members, of whom about 1/3 perform some… Read more "Free as in Fortune Cookies"
29 Apr 2013
I would like to die on Mars… Elon Musk Elon Musk, the 21st Century Industrialist, Bloomberg Well, isn’t that forward thinking? Granted, the full quote I would like to die on Mars, just not on impact is meant to sound hopeful of his company, SpaceX. I agree that some day, humans will be buried on Mars. But is it forward…
26 Apr 2013
"From Rust rookie to pro: A comprehensive guide for beginners"
Introduction Automated differentiation was developed in the 1960’s but even now does not seem to be that widely used. Even experienced and knowledgeable practitioners often assume it is either a finite difference method or symbolic computation when it is neither. This article gives a very simple application of it in a machine learning / statistics … Continue reading Regression and…
25 Apr 2013
Late last year, six women crowded in to a Mitte cafe booth and listened to Berlin Geekettes founder Jess Erickson share her idea: Berlin’s first all-women hackathon. With SoundCloud’s Amelie Anglade the then newly-appointed the Berlin Geekettes Tech Ambassador, we agreed that it was a great idea to produce the hackathon as a partnership between the Geekettes and the women…
24 Apr 2013
For a list of all the posts on Category Theory, see the Main Content page. It is time for us to formally define what a category is, to see a wealth of examples. In our next post we’ll see how the definitions laid out here translate to programming constructs. As we’ve said in our soft motivational post on categories, the…
21 Apr 2013
18 Apr 2013
A little while ago I was contacted about a new merge tool from the company behind PlasticSCM. (I haven’t used Plastic myself, but I’d heard of it.) My initial reaction was that I wasn’t interested in anything which required me to learn yet another source control system, but SemanticMerge is independent of PlasticSCM. My interested … Continue reading New tool…
17 Apr 2013
Update September, 1st 2014 The newer versions of port does not include the ssh-copy-id package anymore, but you can still use it cloning this repo from Github: https://github.com/beautifulcode/ssh-copy-id-for-OSX Hello everybody! I have some servers and always I have to login using SSH, but some passwords is very complex. So, you must copy your public key … Continue reading Installing ssh-copy-id…
16 Apr 2013
Perhaps primarily due to the prominence of monads in the Haskell programming language, programmers are often curious about category theory. Proponents of Haskell and other functional languages can put category-theoretic concepts on a pedestal or in a mexican restaurant, and their benefits can seem as mysterious as they are magical. For instance, the most common use of a monad in…
The endpoint has traditionally accepted an parameter for ordering results by either creation date or ‘hotness’. The method for calculating…
15 Apr 2013
Probabilistic arguments are a key tool for the analysis of algorithms in machine learning theory and probability theory. They also assume a prominent role in the analysis of randomized and streaming algorithms, where one imposes a restriction on the amount of storage space an algorithm is allowed to use for its computations (usually sublinear in the size of the input).…
10 Apr 2013
Update: the mistakes made in the code posted here are fixed and explained in a subsequent post (one minor code bug was fixed here, and a less minor conceptual bug is fixed in the linked post). In our last post in this series on topology, we defined the homology group. Specifically, we built up a topological space as a simplicial…
7 Apr 2013
In this post we will assume the reader has a passing familiarity with some of the basic concepts of functional programming (the map, fold, and filter functions). We introduce these topics in our Racket primer, but the average reader will understand the majority of this primer without expertise in functional programming. Follow-ups to this post can be found in the…
I recently got an e-mail from Michael Sherman, a teacher in New York. He had developed a variation of the card game Set called Complementary Pairs. This is how he described it: “We have Set competitions at the school where … Continue reading →
4 Apr 2013
It all started way too early for our taste, but we made it to Berlin Expert days in time! We’re looking forward to the talks, and to meeting tons of nerdy Java developers! If you have any questions about our job offers, don’t hesitate to bump into us. Spot us by looking for our T-Shirts, […]
[air.mozilla.org video] [slideshare.net link] Disrupt any enterprise that requires new clothes. — Thoreau (abridged) adjusted for Mozilla by @lawnsea. I gave a brief talk last night at the Mozilla Research Party (first of a series), which happened to fall on the virtual (public, post-Easter-holiday) celebration of Mozilla’s 15th anniversary. I was a last minute … Continue reading "Mozilla at 15…
3 Apr 2013
This series on topology has been long and hard, but we’re are quickly approaching the topics where we can actually write programs. For this and the next post on homology, the most important background we will need is a solid foundation in linear algebra, specifically in row-reducing matrices (and the interpretation of row-reduction as a change of basis of a…
Ever since I learned about Just In Time Compilation from the various Ruby VMs and JavaScript VMs, I’ve been inspired. I could tell you all about how just in time (JIT) compilation worked, and how it could give your interpreted language a speed boost. It was so cool. Well, it still is! There’s a ton of research going on around…
2 Apr 2013
In my previous post on what programmers want, I ranked working from home low on the list. Several commenters value working from home higher, and K (not his real name) added a link to a great TED talk given by … Continue reading →
The fastest growing industry in the US right now, even during this time of slow economic growth, is probably the patent troll protection racket industry. Lawsuits surrounding… Read more "The Patent Protection Racket"
1 Apr 2013
You may have heard of my 30 day challenges, where I try something new for 30 days. Those challenges are great to try out a new habit and see how you like it. But I’m also a big believer in picking out really big goals too. In 2010 I trained for a few months so […]
29 Mar 2013
This week, a number of Mozillians attended the annual Game Developers Conference in San Francisco to demonstrate how the Web is a competitive platform for gaming and game development. We’ve worked very hard over the past couple of months on technologies used to speed up the Web for game development, including asm.js, a JavaScript optimization … Continue reading "The Web…
28 Mar 2013
One of the main areas of difficulty in elementary probability, and one that requires the highest levels of scrutiny and rigor, is conditional probability. The ideas are simple enough: that we assign probabilities relative to the occurrence of some event. But shrewd applications of conditional probability (and in particular, efficient ways to compute conditional probability) are key to successful applications…
This American Life is an excellent podcast, but occasionally puts out episodes on subjects I don't care for - fiction, reminisces about home life, etc. There is one heuristic you should use for filtering American Life podcasts: listen to the podcasts they release that tell one story for the whole hour. Example whole-hour podcasts, that […]
26 Mar 2013
Unlock Python's potential with these must-watch PyCon 2013 talks!
I got an e-mail last week from three students at Halmstad University doing a three month project on what programmers want in a job, and how companies can attract talented programmers. Here are my answers to their questions, in order … Continue reading →
24 Mar 2013
23 Mar 2013
Update May 26, 2014 The concepts in this article are still true, but I’ve recorded a screencast showing how to use ember without ember data using ember-cli and the latest version of Ember. It goes beyond the contents of this article, showing how to create an adapter, store and even your own identity map. Check it out! Ember Data is…
21 Mar 2013
In this final post on the basic four methods of proof (but perhaps not our last post on proof methods), we consider the proof by induction. Proving Statements About All Natural Numbers Induction comes in many flavors, but the goal never changes. We use induction when we want to prove something is true about all natural numbers. These statements will…
19 Mar 2013
Momentan befindet sich die NeosIT GmbH in der Situation, dass wir zum 1.8.2013 zwei neue Azubis suchen. Nachdem wir vor einigen Wochen die Ausschreibung beim Arbeitsamt aufgegeben hatten, kamen viele Bewerbungen herein. Als Ausbilder bin ich der direkte Ansprechpartner für potenzielle Auszubildende und dementsprechend stark in den Auswahlprozess involviert. Einige […] The post Eine interessante Bewerbung zum Beruf des Fachinformatikers…
15 Mar 2013
Email from my alma mater: Dear Members of the Claremont McKenna College Community, I am writing to update you on an important action taken by the Board of Trustees at its meeting on March 9, 2013. In particular, the Board acted to end the College’s “No Packaged Loan” financial aid policy. Beginning with the fall […]
11 Mar 2013
This is an article about the nice and mostly the ugly parts of customizing websites for print via CSS. During the work on our new design for Small Improvements I had to create CSS for print for the first time, following are the experiences I made, summarized in a way I think it would have […]
The team at Fog Creek is releasing a major new version of Kiln today. Kiln is a distributed version control system. One of the biggest new features… Read more "Town Car Version Control"
7 Mar 2013
At Stripe, we rely heavily on ruby and EventMachine to power various internal and external services. Over the last several months, we’ve known that one such service suffered from a gradual memory leak, that would cause its memory usage to gradually balloon from a normal ~50MB to multiple gigabytes. It was easy enough to work around the leak by adding…
Hi everybody! Today I’ll write about how you can contribute with PHP community creating packages (or updating your’s) using Composer and Packagist. First, if you’re a PHP developer and don’t know yet what is Composer, take a look on the post Why you should use Composer and how to start using it to get more … Continue reading Creating your…
Last week started with a bang, with Mozilla’s Firefox OS launch at Mobile World Congress 2013. We announced that Firefox OS had won the support of 18 carriers, four device manufacturers, and a major chipset company (Qualcomm) at a barn-burner of a press conference in Barcelona on Sunday night. Pictures (the first shows the room … Continue reading "MWC 2013,…
5 Mar 2013
Charting a young reader's journey through chapter books.
this is an archive of an old article by John Carmack which seems to have disappeared off of the internet Abstract Virtual reality (VR) is one of the most demanding human-in-the-loop applications from a latency standpoint. The latency between the physical movement of a user’s head and updated photons from a head mounted display reaching their eyes is one of…
Ruby 2.0 has a cool new feature that many people talk about: TracePoint. TracePoint essentially allows you to hook into Ruby’s events and listen for events. Being curious and since I just started a brand new Rails 4/Ruby 2 app, I decided to write a little middleware and see what Rails is up to when handling incoming requests. Here is…
4 Mar 2013
The Problem with Cropping Every programmer or graphic designer with some web development experience can attest to the fact that finding good images that have an exactly specified size is a pain. Since the dimensions of the sought picture are usually inflexible, an uncomfortable compromise can come in the form of cropping a large image down to size or scaling…