How to identify and cure MySQL replication slave lag

Here on the Percona MySQL Support team, we often see issues where a customer is complaining about replication delays – and many times the problem ends up being tied to MySQL replication slave lag. This of course is nothing new for MySQL users and we’ve had…

An Opinionated Guide to Modern Java Development, Part 1

An Opinionated Guide to Modern Java Development, Part 1

This is part 1 in a three-part series: part 2, part 3 More working, useful code has been written in the Java programming language than in any other in history, with the possible exceptions of C and COBOL. When Java was released almost 20 years ago, it…

Consul 0.2 UI Demo

Please enable JavaScript in your web browser to use Consul UI.

Kwikset Kevo: Using your iPhone to lock and unlock doors

Kwikset Kevo: Using your iPhone to lock and unlock doors

Life just got a little easier for iPhone owners. Imagine that you're trying to get into your house while carrying a few bags of groceries. Wouldn't it be nice to be able to simply tap the deadbolt lock with a finger to get it to unlock instead of...

Symptoms of Dysfunction in Software Teams

Once you’ve been in the industry for a decade or so you start to get a sixth sense of when things aren’t right. However even when your sixth sense isn’t working here are some signals that should raise alarm bells. Every time you ask someone how something…

OOM relation to vm.swappiness=0 in new kernel

I have recently been involved in diagnosing the reasons behind OOM invocation that would kill the MySQL server process. Of course these servers were primarily running MySQL. As such the MySQL server process was the one with the largest amount of memory…

Removing unused CSS

Removing unused CSS

It seems as if all web developers are lately aiming at reducing the size of the content delivered to the browser. It is in fact a big challenge and optimizing a web site content delivery might imply a great deal of tweaks and tricks to be successfully…

How I used Heartbleed to steal a site’s private crypto key

How I used Heartbleed to steal a site’s private crypto key

By now everyone knows about the OpenSSL Heartbleed vulnerability: a missing bounds check in one of the most popular TLS implementations has made millions of Web servers (and more) leak all sorts of sensitive information from memory. This can leak login…

Extending JavaScript Maps (or other built-in objects)

Finally another technical post, this one is about my adventures in attempting to extend the built-in Map object in JavaScript to extend the functionality. As background, there are two reasons we'd want this: 1. In the chat backend we currently use…

Better JavaScript Promises

If you ever had to port localStorage based code to IndexedDB you have been confronted to Javascript's biggest flaw; its asynchronous system is leaky. Once you have an asynchronous method, every other method that calls it must be asynchronous as well. You…

Using Facebook Notes to DDoS any website

Using Facebook Notes to DDoS any website

Facebook Notes allows users to include tags. Whenever a tag is used, Facebook crawls the image from the external server and caches it. Facebook will only cache the image once however using random get parameters the cache can be by-passed and the feature…

Managing farms of MySQL servers with MySQL Fabric

While built-in replication has been a major cause for MySQL’s wide adoption, official tools to help DBAs manage replication topologies have typically been missing from the picture. The community has produced many good products to fill in this gap, but…

Encrypted and incremental MySQL backups with Percona XtraBackup

We’ve recently received a number of questions on how to implement incremental MySQL backups alongside encryption with Percona XtraBackup. Some users thought it was not initially possible because with the default [crayon-5358bbab35256083738255-i/] options…

TDD is dead. Long live testing.

Test-first fundamentalism is like abstinence-only sex ed: An unrealistic, ineffective morality campaign for self-loathing and shaming. It didn't start out like that. When I first discovered TDD, it was like a courteous invitation to a better world of…

Face Recognition Algorithm Finally Outperforms Humans

KentuckyFC (1144503) writes "Face recognition has come a long way in recent years. In ideal lighting conditions, given the same pose, facial expression etc, it easily outperforms humans. But the real world isn't like that. People grow beards, wear make up…

Create a Fusion Drive with a Recovery Partition

There are many step-by-step guides on the internet that explain how to add an SSD to an existing Mac, and create a 'Fusion Drive' that has the speed of an SSD, but also the capacity of a Hard Drive. All these guides fall short in one way that was important…

Debugging Asynchronous JavaScript with Chrome DevTools

A powerful feature that makes JavaScript unique is its ability to work asynchronously via callback functions. Assigning async callbacks let you write event-driven code but it also makes tracking down bugs a hair pulling experience since the JavaScript…

Docker Helped Us Achieve the (Near) Impossible

Ever since we started Iron.io, we’ve been trying to solve a problem: how to keep our IronWorker containers up to date with newer language runtimes and Linux packages. For the past two years, IronWorker has been using the same, unchanged run-time…

Coding Standards Revisited

I’ve been in the technology industry for 14+ years mostly as a Software Developer. I've worked on projects ranging from a Ruby on Rails Portal, a high performance/low latency .NET search stack, R&D for building infrastructure in the cloud including…

A guide for programming in style

Guides for getting things done, programming well, and programming in style. * A reason is good when you can convince a teammate. * "Avoid" means don't do it unless you have good reason. * "Prefer" indicates a better option and its alternative to…

Mario Limonciello: Ambilight clone using Raspberry Pi

Mario Limonciello: Ambilight clone using Raspberry Pi

Recently I came acrosswww.androidpolice.com/2014/04/07/new-app-huey-synchronizes-philips-hue-lights-with-your-movies-and-tv-shows-for-awesome-ambient-lighting-effects/and thought it was pretty neat. The lights were expensive however, and it required your…

Postman: a powerful HTTP client (for Chrome) to test web services

Get easy, API-First solutions with the industry's only complete API Development Environment. Postman is the only complete API development environment, and flexibly integrates with the software development cycle. Postman's built-in tools offer solutions…

A Solution For Graphene Production

Graphene is easy to acquire, at least in small amounts. The first scientists to isolate the strong, two-dimensional carbon material simply pressed a piece of Scotch tape to a chunk of graphite and peeled it off. But mass production of graphene for…

Zsh history as it should be (per directory)

zsh-directory-history is a zsh plugin giving you a history which is sensitive to the directory you are in. It implements forward/backward navigation as well as substring search in a directory sensitive manner. Since zsh-directory-history includes zsh…

Write Better JavaScript with Promises

You've probably heard the talk around the water cooler about how promises are the future. All of the cool kids are using them, but you don't see what makes them so special. Can't you just use a callback? What's the big deal? In this article, we'll look at…

What does Docker add to just plain LXC?

Let's take a look at the list of Docker's technical features, and check which ones are provided by LXC and which ones aren't. 2) Resource isolation: system resources like cpu and memory can be allocated differently to each process container, using…

Mitigate TCP SYN Flood Attacks with Red Hat Enterprise Linux 7 Beta

Mitigate TCP SYN Flood Attacks with Red Hat Enterprise Linux 7 Beta

Distributed Denial of Service (DDoS) attacks are becoming increasingly commonplace as business becomes more and more dependent on delivering services over the Internet. One of the most common types of DDoS attacks is the well-known SYN-flood attack. It is…

JQuery Gantt editor. Open source, SVG based.

JQuery Gantt editor. Open source, SVG based.

After a long period of hard work we have just released version 5.4 of our beloved project management tool Twproject, and I had finally found the time to upgrade jQuery Gantt editor. This component is gaining lot of visibility day by day and I’d like to…

Reeder 2 for Mac Public Beta

A news reader for Feedbin, Feedly, Feed Wrangler, FeedHQ, NewsBlur, The Old Reader, Inoreader, Minimal Reader, BazQux Reader, Fever, Readability and Instapaper. Download on the Mac App Store Requires OS X 10.10 or later Reeder fails to…

Heartbleed: Separating FAQ From FUD

If you’ve been following this blog (my colleague, David Busby, posted about it yesterday) or any tech news outlet in the past few days, you’ve probably seen some mention of the “Heartbleed” vulnerability in certain versions of the OpenSSL library. So what…

Julien Danjou: Doing A/B testing with Apache httpd

Julien Danjou: Doing A/B testing with Apache httpd

When I started writing the landing page for The Hacker's Guide to Python, I wanted to try new things at the same time. I read about A/B testing a while ago, and I figured it was a good opportunity to test it out. If you do not know what A/B testing is…

Halide, a language for image processing and computational photography

Halide is a programming language designed to make it easier to write high-performance image and array processing code on modern machines. Halide currently targets: Rather than being a standalone programming language, Halide is embedded in C++. This means…

Progress Button Styles

Without support for transform-style: preserve-3d you will see the fallback style (fill horizontal). If you enjoyed these effects you might also like:

Building a Software Deployment Pipeline

Building a Software Deployment Pipeline

When the engineering team at Digg was acquired into SocialCode, we had a generous supply of technical and cultural puzzles to think through, but the most immediate challenge was scaling process for an engineering team whose membership doubled overnight. …

A collection of JavaScript asynchronous patterns

All the projects below are based on Emitter in order to be consistent and easy to use and learn. An implementation of the publish/subscribe pattern similar to the EventEmitter of nodejs. An emitter is really great to decouple your code. It allows you to…

Rotating an image with OpenCV and Python

John Fremlin's blog: Rotating an image with OpenCV and Python OpenCV is the most widely used open-source vision library. It lets you detect faces in photographs or video feeds with very little code. There are a few tutorials on the Internet explaining…

Learn C and build your own Lisp

Learn C and build your own Lisp

If you're looking to learn C, or you've ever wondered how to build your own programming language, this is the book for you. In just a few lines of code, I'll teach you how to use C, and together, we'll start building your very own language. Along the way…

CSS Preprocessors to Speed Up Your Coding

CSS Preprocessors to Speed Up Your Coding

Most of the developers generate CSS style sheets using a CSS preprocessor, such as Sass, Less, or Stylus. Because the CSS files are generated, editing the CSS files directly is not as helpful. For preprocessors that support CSS source maps, DevTools lets…

7 Things You Should Never Say to Your Employees

7 Things You Should Never Say to Your Employees

When managing employees, sometimes your patience is tested by a lack of motivation, a resistance to what you’re asking or one or more ‘problem’ workers. And just because you’re the boss does not mean you're perfect. Sometimes we all say things we regret…

A/B Testing Significance Calculator

What is this? Let's say you've run an a/b or split test and now have result data. How do you know if your results statistically significant? To answer this question, use the a/b testing calculator. It will allow you to have confidence that your results…

Facebook’s Yoshinori Matsunobu on MySQL, WebScaleSQL & Percona Live

Facebook’s Yoshinori Matsunobu on MySQL, WebScaleSQL & Percona Live

I spoke with Facebook database engineer Yoshinori Matsunobu here at Percona Live 2014 today about a range of topics, including MySQL at Facebook, the company’s recent move to WebScaleSQL, new MySQL flash storage technologies – and why attending the Percona…

Memory Diag monitors and cleans up your RAM usage on Mac OS X

Memory Diag is a nice free utility app available on the Mac App Store. Like a lot of memory utilities (including the OS X Activity Monitor), it will analyze your RAM usage, tell you what applications are using the most resources, and offer to clean...

curl and proxy headers

Starting in the next curl release, 7.37.0, the curl tool supports the new command line option –proxy-header. (Completely merged at this commit.) It works exactly like –header does, but will only include the headers in requests sent to a proxy, while the…

The reason Angular JS will fail

Another reason why Angular js will fail. Not even a year later and the 4th version is already being discussed and developed. Are these guys morons? I suppose angular 1, 1.5 and 2 has failed so badly, that they made an even worse version that was never even…

A Better Way to Track JavaScript Errors

A Better Way to Track JavaScript Errors

JavaScript is amazing; you are building amazing and creative web applications that no-one conceived a few years ago (except maybe Jeff). But as our webapps get larger, they get more complex, harder to debug, and difficult to reason about. Combine that with…

A List of JavaScript Tools and Libraries

A List of JavaScript Tools and Libraries

Thinking about enrolling in a coding bootcamp to give your skills an upgrade and boost your career? To help answer some of your questions about what to expect at Code Fellows—both before you apply, during the program, and after you graduate—we’ve…

This Is What You Build to Juggle 6,000 Tweets a Second

This Is What You Build to Juggle 6,000 Tweets a Second

When you open the Twitter app on your smartphone and all those tweets, links, icons, photos, and videos materialize in front of you, they're not coming from one place. They're coming from thousands of places.

Value types in JavaScript

Here is the current state of my thinking with respect to value types and value objects. Some of you may have seen Brendan’s slides where he discusses value objects. This post is about the same topic, but it is focused on just the initial part of the work…

Marco d'Itri: Real out of band connectivity with network namespaces

This post explains how to configure on a Linux server a second and totally independent network interface with its own connectivity. It can be useful to access the server when the regular connectivity is broken. This can happen thanks to network…

Introducing FarmHash

The latest news from Google on open source releases, major projects, events, and student outreach programs.

A conversation with 5 Facebook MySQL gurus

A conversation with 5 Facebook MySQL gurus

Facebook, the undisputed king of online social networks, has 1.23 billion monthly active users collectively contributing to an ocean of data-intensive tasks – making the company one of the world’s top MySQL users. A small army of Facebook MySQL experts…

Cloud Competition

Mary Jo Foley reported yesterday that Windows Azure will be renamed as Microsoft Azure. Google Cloud just dropped prices dramatically. (Via @justin.) > We think cloud pricing should track Moore’s Law, so we’re simplifying and reducing prices for our…

Splitting a Git commit into two

Oftentimes I make a big commit that I later realize should be split into two commits/patches. I think the usual way to split a Git commit is the reset/“add -p”/commit sequence, like this, # assuming HEAD is the commit to split, git reset HEAD^ # first undo…

RoomScan creates floor plans automatically

Now here's a clever idea for an app: using the position sensors in your iPhone, the free RoomScan app creates a pretty accurate floor plan (within a foot or so) of any room. When you launch the app you'll see some help screens, and there are links...

How to log slow queries on Slave in MySQL 5.0 with pt-query-digest

Working as a Percona Support Engineer, every day we are seeing lots of issues related to MySQL replication. One very common issue is slave lagging. There are many reasons for slave lag but one common reason is that queries are taking more time on slave…

Facebook Introduces Hack: Statically Typed PHP

alokmenghrajani (2602135) writes with news of Facebook's new Open Source language, Hack. Quoting: "Today we're releasing Hack, a programming language we developed for HHVM that interoperates seamlessly with PHP. Hack reconciles the fast development cycle…

Routing and DNS Security Ignored By ISPs

Bismillah (993337) writes "The re-routing of Google's public DNS servers last weekend was yet another example of how easy it is to 'steal the Internet' by abusing today's trust-based networks. Problem is, ISPs don't seem to care about that, or securing…

Percona Server with TokuDB: Packing 15TB into local SSDs

Two weeks ago we released an Alpha release of Percona Server with TokuDB. Right now I am on a final stage of evaluation of TokuDB for using in our project Percona Cloud Tools and it looks promising. What is the most attractive in TokuDB? For me it is…

JSON Pattern

I’m not sure I have the best pattern for serializing and de-serializing model objects as JSON. I’ll describe what I have. QSAPIOBJECT PROTOCOL Some (but not all) of my model objects can be represented as JSON. Those model objects are not subclasses of…

A Case for Subclassing?

The other day I mentioned that I’m not a fan of subclassing my own classes. But I may have a case where it’s the least-bad option. Vesper’s timeline view controller has three configurations: all notes, notes for a specific tag, and archived notes. There…

Tools and tips for analysis of MySQL’s Slow Query Log

Tools and tips for analysis of MySQL’s Slow Query Log

MySQL has a nice feature, slow query log, which allows you to log all queries that exceed a predefined about of time to execute. Peter Zaitsev first wrote about this back in 2006 – there have been a few other posts here on the MySQL Performance Blog since…

Management is hard

I have been a manager within the A*Team for 6 months now and I wanted to share what I have learnt in that time. The main thing that I have learnt is being a manager is hard work. WHY HAS IT BEEN HARD? Well, being a manager is requires a certain amount of…

Monitoring MySQL with MONyog

Monitoring MySQL and effectively managing it can be challenging. Identifying issues before they grow into performance problems that impact end users can be crucial. Knowing which tools to use, which key metrics to monitor, and how to resolve issues can be…

what’s –next for curl

curl is finally getting support for doing multiple independent requests specified in the same command line, which allows users to make even better use of curl’s excellent persistent connection handling and more. I don’t know when I first got the question…

Introducing backup locks in Percona Server

TL;DR version: The backup locks feature introduced in Percona Server 5.6.16-64.0 is a lightweight alternative to FLUSH TABLES WITH READ LOCK and can be used to take both physical and logical backups with less downtime on busy servers. To employ the feature…

Make Time Machine use a Local Volume as a Network Volume

This procedure shows you how to prevent Time Machine from using all available free space on a local volume by backing up to a sparse disk image bundle stored on a shared folder on a local volume. Time machine uses a feature of the HFS+ filesystem that was…

New mydumper 0.6.1 release offers performance and usability features

One of the tasks within Percona Remote DBA is to ensure we have reliable backups with minimal impact. To accomplish this, one of the tools our team uses is called mydumper. We use mydumper for logical backups because of several nice features. Some of them…

http2 in curl

While the first traces of http2 support in curl was added already back in September 2013 it hasn’t been until recently it actually was made useful. There’s been a lot of http2 related activities in the curl team recently and in the late January 2014 we…

Q&A: Common (but deadly) MySQL Development Mistakes

Q&A: Common (but deadly) MySQL Development Mistakes

On Wednesday I gave a presentation on “How to Avoid Common (but Deadly) MySQL Development Mistakes” for Percona MySQL Webinars. If you missed it, you can still register to view the recording and my slides. Thanks to everyone who attended, and especially to…

Enumerating Strings by Sentence

Copyright © 2019 - K Harrison Privacy and Cookies Terms of Use, In order to properly test Table View Cells With Varying Row Heights I needed a good source of input text. My intention was to have some suitable text that I could feed into the table view…

Many-table joins in MySQL 5.6

I recently worked on an uncommon slow query: less than 100 rows were read and returned, the whole dataset was fitting in memory but the query took several seconds to run. Long story short: the query was a join involving 21 tables, running on MySQL 5.1. But…

Getty Images Makes 35 Million Images Free For Non-Commercial Use

kc123 writes "In an effort to deal with copyright infringement Getty Images is launching a new embedding feature that will make more than 35 million images freely available to anyone for non-commercial usage. Anyone will be able to visit Getty Images'…

Imagining a Node Blogging System for Geeks

I’ve written three blogging systems. At UserLand I wrote Manila, which powered editthispage.com and a few other sites way back in the ’90s and early ’00s. I’ve written two more just for my own use. The first, PHP/MySQL-based, powered this site for seven…

Github Pull Request Triage tool

Github Pull Request Triage tool

Last week I built a little tools called github-pr-triage. It's a single page app that sits on top of the wonderful GitHub API v3. Its goal is to try to get an overview of what needs to happen next to open pull requests. Or rather, what needs to happen…

Mario Lang: Personal mail server

I used to use Fetchmail and Gnus with its mail splitting capabilites and nnml backend to handle my private mail setup for many years. This worked pretty fine since I am used to accessing my home server through SSH. I have Gnus running inside of a GNU…

How to avoid common (but deadly) MySQL development mistakes

How to avoid common (but deadly) MySQL development mistakes

MySQL software developers are under pressure to do more in less time and create applications that adapt to ever-changing requirements. And it’s true that some of a developer’s time is wasted when his or her method of optimizing involves trying every…

DBA 101: Sometimes forgotten functionality in the MySQL client

The MySQL client has some functionalities some of us never use. Why would you use them and what is the added value of this? Every DBA and developer has had a moment when he or she needs to connect to a MySQL database using the command line tool. Therefore…

Yes, You Too Can Be an Evil Network Overlord With OpenBSD

badger.foo writes "Have you ever wanted to know what's really going on in your network? Some free tools with surprising origins can help you to an almost frightening degree. Peter Hansteen shares some monitoring insights, anecdotes and practical advice in…

Video of my YUIConf talk about open web app development

Video of my YUIConf talk about open web app development

The YUIConf folks have just posted their recording of a talk I gave there last year. I had planned to talk generally about the Firefox Marketplace, how it differs from other app stores, and how those differences create an overall … Continue reading →