25 Feb 2016
Back in September, Codinghorror wrote a popular post on the state of android Javascript performance on Discourse’s Meta forum. It drew a lot of attention, and led to some fascinating discussions on our forum and behind the scenes with browser engineers. The poor performance of Discourse on Android was already old news to us at that point: we started paying…
23 Feb 2016
Again, I've seen it somewhere on the internet and recreated it. This one uses jQuery, although I plan to rewrite it to vanilla JavaScript. It switches between two sides of the cube, every time you hover. Depending from which side cursor entered the cube, it will rotate in opposite direction. It is fully responsive, and on touch devices, direction depends…
If you know some Sass, you're probably a lot further than you think to understanding and diving into the world of modern JavaScript. This post showcases some of the similarities.
22 Feb 2016
This has caught me by surprise. After studying the Kotlin language to learn about how to best leverage this interesting new language for jOOQ, I stumbled upon this puzzler. What do you think the following program will print? fun main(args: Array) { (1..5).forEach { if (it == 3) return print(it) } print("done") } Well… You … Continue reading A Very…
Please note that I'm not using Jekyll anymore, so this post might be outdated. Jekyll comes with simple pagination which has only Newer and Older links. I wanted a little bit more, now pagination shows at least five pages, with current in the middle. On the larger screens there are also first and last page links. Newer and Older links…
Well I saw a pretty nice mockup on Dribbble and decided to make it for fun. It didn't include a mobile/responsive solution, so I came up with my own. Check the demo. This is a pure CSS solution - it uses the :target selector for changing states. Find more about :target on MDN. This is neat, as it also can…
21 Feb 2016
Everything starts with a Hello World so does this blog. In the first couple of weeks, everything will be under heavy development, until I get it the way I want. As I really enjoy making stuff, I decided to try to make small JavaScript or CSS (SASS) plugin/script every week. Those are going to be both big and small, proof…
19 Feb 2016
Anmol combines NASA data with MapBox and PubNub to build a real-time map showing the location and path of the ISS, in real time.
Recently I became enamored with The Witness and after thinking about the game for a long time decided to sit down and record a little essay about it. Check it out below!
18 Feb 2016
Have you been writing a lot of code following the Mute-Design-Pattern™ lately? E.g. There’s an easier way with Java 8! Just add this very useful tool to your Utilities or Helper class: Now you can wrap all your logic in this nice little wrapper: Done! Even better, in some cases, you can use method references
DEAR SIR, I HAVE THE BELIEVE YOU ARE A REPUTABLE AND RESPONSIBLE AND TRUSTWORTHY PERSON I CAN DO BUSINESS WITH FROM THE LITTLE INFORMATION SO FAR I GATHERED ABOUT YOU DURING MY SEARCH FOR A PARTNER AND BY MATTER OF TRUST I MUST NOT HESITATE TO CONFIDE IN YOU FOR THIS SIMPLE AND SINCERE BUSINESS. […]
Surprisingly, I don’t have any backups of my stuff. Apart from my Microserver Gen8 FreeNAS replication project which was necessary for my photos and personal media I don’t have any backups of my VM hosts, laptops or machines I use everyday which is very, very bad. A lot of my stuff is stored on RAID or RAID-like systems which I…
17 Feb 2016
This is #1 in a very long series of posts on Stack Overflow’s architecture. Welcome. Previous post (#0): Stack Overflow: A Technical Deconstruction Next post (#2): Stack Overflow: The Hardware - 2016 Edition To get an idea of what all of this stuff “does,” let me start off with an update on the average day at Stack Overflow. So you…
16 Feb 2016
Before I move on with the actual article, I’d like to give credit to Daniel Dietrich, author of the awesome vavr library, who has had the idea before me: @lukaseder try with a static method <T, T1 extends T, … Tn extends T> Seq<T> toSeq(T1 t1, …, Tn tn) { … } (from my mobile … Continue reading An Ingenious…
Welcome to the jOOQ Tuesdays series. In this series, we’ll publish an article on the third Tuesday every other month where we interview someone we find exciting in our industry from a jOOQ perspective. This includes people who work with SQL, Java, Open Source, and a variety of other related topics. I’m very excited to … Continue reading jOOQ Tuesdays:…
15 Feb 2016
We’ve all encountered it at one point or another: poor customer support. And it seems to get worse on a weekly basis. “Poor” has many flavors: Not understanding what you want (well, this is actually the better case; the worse The post The Problem with Customer Support appeared first on FullStack - Ofer Zelig's Blog.
I'm often asked by other developers about parts of the pixel workflow, and what fires when and why, so I figured it might be worth putting up a little reference for what's involved in shipping pixels to screen.
14 Feb 2016
We explore two approaches to support both callbacks and promises in async JavaScript modules: 1) promisify callback functions, 2) make callback optional and return promise. The second allows flexible use of callbacks or promises.
Introduction In proposition 58 Chapter 1 in the excellent book O’Neill (1983), the author demonstrates that the Lie derivative of one vector field with respect to another is the same as the Lie bracket (of the two vector fields) although he calls the Lie bracket just bracket and does not define the Lie derivative preferring … Continue reading The Lie…
12 Feb 2016
This is a pretty common task: encode JSON and send it to a server, decode JSON on the server, and vice versa. Amazingly, the existing resources on how to do this aren't very clear. So let's walk through each case, for the following simple User object: type User struct{ Id string Balance uint64 } Sending […]
11 Feb 2016
Some APIs are set in stone. For instance, the JDK’s. Or public APIs, like the one between a database and a database client (e.g. JDBC). This makes designing such APIs rather difficult as a lot of thinking needs to be done prior to publishing an API. Which means that being defensive when designing the API … Continue reading Dear API…
CSS Filters are awesome, but you can't do individual channel manipulation with them. Enter: feColorMatrix, SVG filter effect method that allows for really in-depth pixel value manipulation for even better image filters.
10 Feb 2016
booleans, am I right? What a wonderful piece of technology! They help us solve so many problems…
9 Feb 2016
This is usually a tech blog, but every now and then, we make an exception when there’s something important to say. Today, I’m going to criticise a lot of our industry’s understanding of support. Who is this article for? It’s for every software engineer giving support to users and/or customers, and every manager who works … Continue reading The 5…
You might want/need to check out repos locally as several different Github users. For example, my Github account is kevinburke, but I push code at work as kevinburkeshyp. If I could only commit/push as one of those users on each machine, or I had to manually specify the SSH key to use, it would be […]
8 Feb 2016
One of the most awesome features of the Oracle database is Oracle AQ: Oracle Database Advanced Queuing. The AQ API implements a full fledged, transactional messaging system directly in the database. In a classic architecture where the database is at the center of your system, with multiple applications (some of which written in Java, others … Continue reading Using Oracle…
Data is abundant, data is big, and big is a problem. Let me start with an example. Let’s say you have a list of movie titles and you want to learn their genre: romance, action, drama, etc. And maybe in this scenario IMDB doesn’t exist so you can’t scrape the answer. Well, the title alone is almost never enough information.…
7 Feb 2016
You may have already heard that InfluxDB 0.10 GA has been published a few days ago. In my case the most interesting improvement are the much higher compression rates: At the moment my co-workers of NeosIT and I are collecting performance data from four internal virtual machines. Have been running […] The post Migrating InfluxDB from 0.9.6 to 0.10.0 GA…
6 Feb 2016
Sandi Metz’s post on abstraction struck a chord with me recently. I was working with a piece of code which looked like this (in pseudo code): func Start() { const filename = "..." createOuputFile(filename) go run(filename) } It turned out that createOutputFile was written in an obscure way which first caused me to look at […]
3 Feb 2016
Amit Singhal just announced that he’s retiring toward the end of the month. Amit has been a formative part of Google’s search team, but he’s also a good friend. Last year, after he marked 15 years with Google, I wrote this about Amit’s contributions: Amit Singhal, one of the unsung heroes of Google, just celebrated […]
As new posts in the series appear, I’ll add them here to serve as a master list: Stack Overflow: The Architecture - 2016 Edition Stack Overflow: The Hardware - 2016 Edition Stack Overflow: How We Do Deployment - 2016 Edition Stack Overflow: How We Do Monitoring - 2018 Edition Stack Overflow: How We Do App Caching - 2019 Edition One…
2 Feb 2016
Build an application to video chat with friends and watch YouTube at the same time, using WebRTC and PubNub
31 Jan 2016
30 Jan 2016
Hi. In this post I will share a git pre-commit hook I created for aiding with code beautification. In Linux, I work in two different coding styles: User space and Kernel. The Linux kernel has a very specific coding style and every commit to kernel must adhere to that style. The Linux kernel provides a […]
28 Jan 2016
This is so cool I can hardly stand it. In Docker 1.10, the awesome libnetwork team added the ability to specify a specific IP for a container. If you want to see the pull request it’s here: docker/docker#19001. I have a IP Block on OVH for my server with 16 extra public IPs. I totally use these for good and…
Just now, we implemented a nice little feature in jOOQ’s code generator: https://github.com/jOOQ/jOOQ/issues/4974 It detects whenever the jOOQ code generator runs a slow query to reverse engineer schema meta information. Why? In our development and integration test environment, we don’t have huge schemas with all the different performance edge cases put in place. For instance, … Continue reading How to…
27 Jan 2016
Surprisingly I’m working on HookRace again. I might share a few interesting code snippets and thoughts in this blog along the way. I’m still going with Nim as the programming language. For an easy start let’s write a logging module that can be used everywhere in the game’s server as well as client. There are mostly three aspects that I…
Delegating event listeners in JavaScript is generally a good practice. It allows us to create only one event listener for events that might be triggered on a variety of nodes and across multiple contexts. If we're just looking to listen for any given click on a page it would be
26 Jan 2016
Recently, we’ve published our article about the awesome window function support in jOOλ 0.9.9, which I believe is some of the best additions to the library that we’ve ever done. Today, we’ll look into an awesome application of window functions in a use-case that is inspired by this Stack Overflow question Sean Nguyen: How to … Continue reading How to…
Here’s the thing: I have this sweet pair of headphones that I got from a friend a gazillion years ago. I’ve always liked them because they were free and they look super quirky but it turns out they were a limited edition done for Ed Banger Records, which is the label that produces Justice and Mr. Oizo. It also turns…
Icons are essential to most pattern libraries and web design systems. Let's take a look at a scalable approach!
25 Jan 2016
Image decoding can be a source of checkboarding and jank. What if there was a way to work around it without resorting to a cluster of horror hacks? Step right up and meet my new friend createImageBitmap!
24 Jan 2016
Perf is probably the most widely used general purpose performance debugging tool on Linux. There are multiple contenders for the #2 spot, and, like perf, they're sampling profilers. Sampling profilers are great. They tend to be easy-to-use and low-overhead compared to most alternatives. However, there are large classes of performance problems sampling profilers can't debug effectively, and those problems are…
21 Jan 2016
The latest xcode beta is available for downloading. There are many improvements, and the usual problems with stuff that stops working… Ah the love of Apple for it’s developers :). But I want to tell you about a feature that caught my attention: New analyzer settings! New analyzer settings From the release notes: The static analyzer warns when nil is…
20 Jan 2016
Introduction The equation of motion for a pendulum of unit length subject to Gaussian white noise is We can discretize this via the usual Euler method where and The explanation of the precise form of the covariance matrix will be the subject of another blog post; for the purpose of exposition of forward filtering / … Continue reading Particle Smoothing
Sometimes, when we get pull requests for jOOQ or our other libraries, people change the code in our unit tests to be more “idiomatic JUnit”. In particular, this means that they tend to change this (admittedly not so pretty code): … into this, “better” and “cleaner” version: What have we gained? Nothing! Sure, we already … Continue reading Use JUnit’s…
I’m hacking on an assembly project, and wanted to document some of the tricks I was using for figuring out what was going on. This post might seem a little basic for folks who spend all day heads down in gdb or who do this stuff professionally, but I just wanted to share a quick intro to some tools that…
19 Jan 2016
GitKraken is a new cross-platform graphical interface for Git currently in private beta. It has useful features like interactive commit graph visualization, easy branching/stashing, and GitHub integration. The post shares invites to try the private beta version of GitKraken.
Almost exactly a year ago, I wrote a post about running Docker Containers on the Desktop. Well it is a new year, and I have ended up converting all my docker containers to runc configs, so it’s the perfect time for a new blog post. For those of you unfamiliar with the Open Container Initiative you should check out opencontainers.org.…
I solved a problem today and figured that I’d document it for the rest of the world. Every time someone left me a voicemail on Verizon, I would get a cryptic text from Verizon at 900080006202 that looked like “//VZWVVM:SYNC:ev=NM;id=1;c=1;t=v;s=1XXXXXXXXXX;dt=18/01/2016 13:40-0900;l=13;dev_t=5” or “//VZWVVM:SYNC:ev=MBU;dev_t=5”. Here’s what happened. It turns out that Verizon has three kinds of […]
18 Jan 2016
Gulp-cozy is an experimental NPM package that allows you to separate Gulp tasks into small modules inside a dedicated folder, making them easier to maintain. It brings Node.js modularity principles into your Gulp workflow.
I’ve recently encountered a very interesting question on Stack Overflow by an unnamed user. The question was about generating a table of the following form in Oracle, using a table valued function: Description COUNT ------------------- TEST1 10 TEST2 15 TEST3 25 TEST4 50 The logic that should be implemented for the COUNT column is the … Continue reading Impress Your…
Today we’ll talk about unary operators, namely unary plus (+) and unary minus (-) operators. A lot of today’s material is based on the material from the previous article, so if you need a refresher just head back to Part 7 and go over it again. Remember: repetition is the mother of all learning. Having said that, this is what…
Sergey shows you how to build a real-time voting app with clients for iOS, Mac OS X, and new to PubNub: native Apple Watch support.
To steal a quote from JWZ, Some people, when confronted with a problem, think “I know, I’ll use cgo.” Now they have two problems. Recently the use of cgo came up on the Gophers’ slack channel and I voiced my concerns that using cgo, especially on a project that is intended to showcase Go inside […]
Ever since I started Splice, I’ve been really eager to experiment and adapt our process to be able to be as efficient as possible while still pleasant. Setting up a process that works is hard because it depends on the size of your company, the team members and the leadership style. We tried many things as we grew and lots…
15 Jan 2016
Introduction The equation of motion for a pendulum of unit length subject to Gaussian white noise is We can discretize this via the usual Euler method where and The explanation of the precise form of the covariance matrix will be the subject of another blog post; for the purpose of exposition of using Stan and, … Continue reading Inferring Parameters…
14 Jan 2016
Recently there's been a trend in API's to return more than one error, or to always return an array of errors, to the client, when there's a 400 or a 500 server error. From the JSON API specification: Error objects MUST be returned as an array keyed by errors in the top level of a […]
Notice that the examples in this article may be outdated, as Typesafe’s Activator works differently now. The blog post will not be maintained to provide up-to-date Activator examples. We’re very happy to continue our a guest post series on the jOOQ blog by Manuel Bernhardt. In this blog series, Manuel will explain the motivation behind … Continue reading Reactive Database…
13 Jan 2016
I wrote about how I began to code for the new publishing platform SuperYesMore. TL;DR — cartoon dolls and Flash.
12 Jan 2016
Embracing the future: A quick guide to systemd for modern daemon management.
Java has come a long way. A very long way. And it carries with it all the “junk” from early day design decisions. One thing that has been regretted time and again is the fact that every object (potentially) contains a monitor. This is hardly ever necessary and this flaw was corrected, finally, in Java … Continue reading If Java…
11 Jan 2016
So far in this series we’ve seen a lot of motivation and defined basic ideas of what a quantum circuit is. But on rereading my posts, I think we would all benefit from some concreteness. “Local” operations So by now we’ve understood that quantum circuits consist of a sequence of gates $ A_1, \dots, A_k$, where each $ A_i$ is…
Have you ever stopped to think how software could improve your accountancy practice? Our free e-Guide discusses how FinTech add-ons can help your practice become efficient.
10 Jan 2016
We saw some really bad Intel CPU bugs in 2015 and we should expect to see more in the future
Dan Luu2015 was a pretty good year for Intel. Their quarterly earnings reports exceeded expectations every quarter. They continue to be the only game in town for the serious server market, which continues to grow exponentially; from the earnings reports of the two largest cloud vendors, we can see that AWS and Azure grew by 80% and 100%, respectively. That growth…
9 Jan 2016
Last night I had an idea and implemented it, soo let’s see what will happen. But first, the idea: Have a livestream [1] of DDNet running non-stop [2] that always shows some interesting [3] players on the server. The resulting livestream is running on Twitch. All the scripts are on Github 1. Livestream It’s surprisingly simple to livestream from Linux…
8 Jan 2016
Before I begin this post a few caveats: I'm kind of a resume and interview nerd. I like helping friends fix their resumes and write amazing cover letters. In the past year I've helped a few (non-Mozilla) friends fix up their resumes, write cover letters, prepare for interviews as they search for new jobs. This post will discuss some things…
If you weren’t aware user namepace support was added to Docker awhile back in the “Experimental” builds. But with the upcoming release of Docker Engine 1.10.0, Phil Estes is working on moving it into stable. Now this is all super exciting and blah blah blah, but what I am going to talk about today is how I started running all…
Today I’ve been reviewing the ECMA-334 C# specification, and in particular the section about class instance constructors. I was struck by this piece in a clause about default constructors: If a class contains no instance constructor declarations, a default instance constructor is automatically provided. That default constructor simply invokes the parameterless constructor of the direct … Continue reading To base()…
6 Jan 2016
You heard right. Up until now, the awesome window functions were a feature uniquely reserved to SQL. Even sophisticated functional programming languages still seem to lack this beautiful functionality (correct me if I’m wrong, Haskell folks). We’ve written tons of blog posts about window functions, evangelising them to our audience, in articles like: Probably the … Continue reading 2016 Will…
I love really Amazon EMR. Over the years it’s grown from being “Hadoop on-demand” to a full-fledged cluster management system for running OSS big-data apps (Hadoop MR of course, but also Spark, Hue, Hive, Pig, Oozie and more). While Hadoop out of the box supports reading from S3, EMR has a proprietary implementation called EMRFS that has some nice features.…
In a brief video, Jordan Zucker shows how to set up PubNub with Cocoapods.
5 Jan 2016
jOOQ is an internal domain-specific language (DSL), modelling the SQL language (external DSL) in Java (the host language). The main mechanism of the jOOQ API is described in this popular article: The Java Fluent API Designer Crash Course. Anyone can implement an internal DSL in Java (or in most other host languages) according to the … Continue reading A Curious…
4 Jan 2016
In case you missed it, we recently merged a default seccomp profile for Docker containers. I urge you to try out the default seccomp profile, mostly so we can rest easy knowing the defaults are sane and your containers work as before. You can download the master version of Docker Engine from master.dockerproject.org or experimental.docker.com. We even have a doc…
Problem: Estimate the number of distinct items in a data stream that is too large to fit in memory. Solution: (in python) import random def randomHash(modulus): a, b = random.randint(0,modulus-1), random.randint(0,modulus-1) def f(x): return (a*x + b) % modulus return f def average(L): return sum(L) / len(L) def numDistinctElements(stream, numParallelHashes=10): modulus = 2**20 hashes = [randomHash(modulus) for _ in range(numParallelHashes)]…
1 Jan 2016
In this post we will create a new page table to map the kernel sections correctly. Therefore we will extend the paging module to support modifications of inactive page tables as well. Then we will switch to the new table and secure our kernel stack by creating a guard page. As always, you can find the source code on GitHub.…
31 Dec 2015
30 Dec 2015
Like many old databases, Oracle has legacy data types, which are rather nasty to work with in every day SQL. Usually, you don’t run into wild encounters of LONG and LONG RAW data types anymore, but when you’re working with an old database, or with the dictionary views, you might just have to deal with … Continue reading Oracle LONG…
29 Dec 2015
I understand the idea of Java-the-language being rather hard to maintain in a backwards-compatible way. I understand the idea of JDK API, such as the collections, to be rather tough not to break. Yes. I don’t understand why Java still doesn’t have multiline string literals. How often do you write JDBC code (or whatever other … Continue reading Please, Java.…
Have you ever mentioned something that seems totally normal to you only to be greeted by surprise? Happens to me all the time when I describe something everyone at work thinks is normal. For some reason, my conversation partner's face morphs from pleasant smile to rictus of horror. Here are a few representative examples. There's the company that is perhaps…
28 Dec 2015
Here’s a bit of folklore I often hear (and retell) that’s somewhere between a joke and deep wisdom: if you’re doing a software interview that involves some algorithms problem that seems hard, your best bet is to use hash tables. More succinctly put: Google loves hash tables. As someone with a passion for math and theoretical CS, it’s kind of…
It's time for my annual reflection and goal resetting! It's been a crazy year for sure.
27 Dec 2015
I recently finished reading Ghost in the Wires by Kevin Mitnick. It is the story of Mitnick’s hacking career, from the start in his teens, through becoming the FBI’s most wanted hacker, to spending years in jail before finally being … Continue reading →
This past week the team at Shyp decided to fork the framework we use (Sails.js) and the ORM it uses (Waterline). It was an interesting exercise in JS tooling, and I wasted a lot of time on busywork, so I thought I'd share a little bit about the process. Why Fork? We've been on an […]
I’ve been wanting to write this for a long time, just to clarify my thoughts on the subject. Now, on vacations, I took a couple of days and finally did it. This is a personal opinion based on my personal experience and tons of books I have read, and I am not, by any means, the supreme holder of the…
24 Dec 2015
Preparing for the Holiday season is a year round task for all of us here at Bazaarvoice. This year we saw many retailers extending their seasonal in-store specials to their websites as well. We also saw retailers going as far as closing physical stores on Thanksgiving (Nordstrom, Costco, Home Depot, etc.) and Black Friday (REI). Regardless […]
22 Dec 2015
Maintaining APIs is hard. We’re maintaining the jOOQ API which is extremely complex. But we are following relatively relaxed rules as far as semantic versioning is concerned. When you read comments by Brian Goetz and others about maintaining backwards-compatibility in the JDK, I can but show a lot of respect for their work. Obviously, we … Continue reading JEP 277…
You might have heard that a few days ago, Juniper Systems announced the discovery of “unauthorized code” in the ScreenOS software that underlies the NetScreen line of devices. As a result of this discovery, the company announced a pair of separate vulnerabilities, CVE-2015-7755 and CVE-2015-7756 and urged their customers to patch immediately. The first of these CVEs (#7755) was ……
I’ve never really done a year in review. One day, I’d like to open source my goals, but since I’m still a chicken, this is a baby step towards that. Plus, this is one of the first years I’m really proud of, and things that you’re proud of tend to live on the Internet, for posterity. Here’s what my GitHub…
21 Dec 2015
The deadline is getting ever closer... you'll need to upgrade unless your software supports the new security standard.
20 Dec 2015
My previous post showed a very simple Scalding workflow. Apache Flink is a real time streaming framework that’s very promising. It also supports running Cascading workflows with very little modification. Surely there must be some way to run a Scalding job on top of Flink? Turns out… YES! In a nutshell Here are the high-level things we need to solve…
I’ve been using Scalding for the last few years and really love how simple it makes writing scalalbe data processing jobs. I think many of the issues beginners have with Scalding relate to project setup. I hope this post simplifies things for people so they can started with less hassle. Building your project with SBT The official getting started guide…
18 Dec 2015
17 Dec 2015
Josh interviews Circuitbeard, the creator of Petduino, an Arduino based electronic pet
The following is a very common problem in all data related technologies and we’re going to look into two very lean, SQL-based solutions for it: How do I fill the cells of a sparse data set with the “previous non-empty value”? The problem The problem is really simple and I’m reusing the example provided by … Continue reading How to…
There's a meme that's been going around for a while now: you should join a startup because the money is better and the work is more technically interesting. Paul Graham says that the best way to make money is to "start or join a startup", which has been "a reliable way to get rich for hundreds of years", and that…