How one way mirrors work at lateSEOrush

Today I found out how one-way mirrors work (also known as “two-sided” mirrors).Interestingly, there is no such thing as a true one way mirror.  This would actually violate the laws of physics (for more on that see theBonus Factoids below).  What’s actually going on here with one-way mirrors is that we have a piece of glass with an extremely thin coating of some reflective material like silver (as is often used on normal mirrors).  Unlike normal mirrors though, the silver layer is so thin that it only actually reflects about half the light back.  The other half passes through the glass.  This layer is actually so thin, that if you were to look at it at a molecular level, you’d see that only about half the glass was actually coated with the silver; the silver would appear to be speckled on the glass more or less evenly.

The problem with allowing half the light through though is that you would normally still be able to see either way through the glass; it would just appear tinted.  Not only that,  the half of the light being reflected is being reflected back on both sides.  So either side could be the reflective side or the “see through” side.  The variable here is only the light levels in the two rooms which determines which side seems see-through and which side seems reflective.

If the lighting in both rooms is close to equal, the strong mirroring effect won’t happen because the light being passed from one side to the other is roughly equal.  It will then just be very similar to a normal window, though with the windows seeming slightly tinted.  However, if you turn off the lights on the one side and make the lights on the other side very bright, then the mirroring effect will kick in quite strongly, effectively stopping someone from seeing what’s on the other side of the window.  What you’ve done here is create an imbalance of light traveling between the rooms.

If it seems confusing why creating this imbalance should make a difference, think about if you had the volume of your radio turned up really loud in one room and another radio set really softly in an adjacent room.  The person in the loud room would not be able to hear the quite radio in the adjacent room as it is drowned out by the loud radio.  If your volumes are set at roughly equal decibel levels, then you’ll both be able to hear each others radios.

You can see a similar effect even with a normal window in your house that contains no reflective coating.  When it is dark outside and bright in the room you are in, the window ends up showing a strong reflection on the light side while people on the dark side can see inside just fine.  The same type of thing is happening with one-way mirrors, except they’ve added a thin reflective coating in order to make the effect even stronger.

Of course, an easy way to get around this problem is to simply approach the window and block out the light on the bright side with your hands.  You’ll then be able to see through the window or one-way mirror just fine.


Sherlock is back this summer for lateSEOrush



It may be frustrating for Sherlock fans to have to wait two years between new episodes of the incredibly popular BBC show – thanks to the success of its stars, Benedict Cumberbatch (Doctor Strange) and Martin Freeman (The Hobbit) – but there’s something about waiting so long that kicks the anticipation up a notch or two. New Sherlock episodes have becomes something of an event experience, not unlike new installments of a major movie franchise – your Star Wars or your Harry Potters or your Lord of the Rings, for example.

Filming is currently taking place for the next Sherlock episode – believed to be a Christmas special airing at the end of 2015 – and it features Cumberbatch and Freeman looking much the same as they did in the previously released official image (above). As you can see, Sherlock and Watson are wearing Victorian attire that harkens back to the Sherlock Holmes adaptations of yore – the Basil Rathbone movies, the Peter Cushing movie, the Jeremy Brett TV series, among others.

The Sherlock special episode – probably a Christmas special – will debut near the end of 2015.

India suffer crushing loss against Australia at lateseorush

In another unrelated news, India suffer crushing loss against Australia at lateseorush



Explosive centuries by David Warner and Glenn Maxwell helped Australia gallop to their latest comfortable win over a lacklustre India, this time in a World Cup warm-up match at Adelaide Oval.

Warner’s innings provided the platform for Maxwell to launch from at the back end of the innings in a fixture that was not an official ODI. Less fluent was the acting captain George Bailey, who played in fits and starts during his 44. He grows more likely to be the man to make way when Michael Clarke is passed fit after hamstring surgery.

India’s reply was notable only for a return to runs from Shikhar Dhawan, who showed improved balance and intent while making 59, and another useful innings from Ajinkya Rahane. Otherwise MS Dhoni’s men showed little sign of escaping the torpor that has seen them fail to win a single match on the tour so far – the flight home presently appears more tempting than the prospect of a successful Cup defence.

Tips on blogging to help in lateSEOrush

Some tips on blogging to help in lateSEOrush

The three basic steps of brand building are consistency, persistence, and restraint, and you need to use all three to communicate your brand image and identity on your blog. Your brand is a promise to your audience, and you need to keep that promise through every part of your blog. If you fail to keep your brand promise, visitors will turn away from your brand and your blog in search of one that does consistently meet their expectations.

Building a brand is a multi-step process, and it starts with developing a foundation. Your blog is a fundamental part of that foundation, because it’s one of the places where you can control your brand image and identity while connecting with a large audience. Build it with your brand in mind using the tips below..

1.  Colors

Is your blog about babies or the stock market? Is your target audience women or men? Is your brand playful, cutting-edge, sophisticated, or highly professional?

Your answers to these questions will help you choose the best color palette for your blog that represents your brand personality while appealing to the right target audience. For example, a blog about baby products would work well using pastel pinks and blues, but the same color palette would not communicate the highly-professional image that a stock trader’s blog should.

Consider color psychology as you choose your brand and blog color palette. Follow brand design tips which say you should choose one or two primary colors and one or two secondary colors. Sticking to three colors in the design of your main blog elements will allow you to call attention to important areas of your blog without cluttering the page and making it confusing for visitors.

Save Your Baby’s Umbilical Cord With Lifecell Now at Only Rs 19,990
Master the Skills Employers Want. Earn a Nanodegree-Enroll by Feb 10

2.  Images

Just as colors can communicate your brand image, so can the images that you use on your blog. Of course, you need to chooseimages that you’re legally allowed to use on your blog, but you also need to think about how images affect your audience’s perceptions of your brand.

Cute cartoons wouldn’t work on a legal blog while photos of people in suits and ties wouldn’t work on a blog about gardening. Those images would be inconsistent with what the audience expects from the brand.

3.  Fonts

Fonts are tricky because making a mistake and choosing a font that doesn’t match your brand could negatively affect the user experience on your blog. For example, a blog about preschool education might use a fun font that looks like chalkboard writing, handwriting, or cartoon writing. However, those creative fonts are very difficult to read in long blocks of text and can be particularly illegible at small sizes, which people will see when they view your blog on mobile devices.

Save the highly stylized fonts for special headers and stick with web-friendly, easy-to-read fonts within your content.

Start Earning from First Month! Low Investment High Return.
Reliable & Secure-Free 24/7 Support Free Phone Support, Setup & More
[-Oxford-/E+/Getty Images].

4.  Layout and Navigation

Blog design offers a great deal of flexibility in terms of layout and navigation, but the most important thing to remember is that you need to balance your brand image with user experience.

For example, infinite scroll is very popular on blogs these days, but for the wrong brand, infinite scroll could frustrate visitors. Similarly, your brand might be cutting-edge, but visitors to your blog still have basic expectations for where they’ll find common elements such as your About page, Contact page, and so on. Meet their expectations so they don’t get confused or frustrated and leave your blog never to return again.

Also, pay close attention to your blog’s sidebar and footer. These are perfect places to inject your brand personality through not only the type of content you offer in these areas but also how you offer it. For example, you can create images to promote popular posts in your sidebar rather than simply offering a list of popular post titles. You can create a feed subscription sign up form that uses the colors, fonts, and images that match your brand rather than just embedding a standard subscription icon.

Sidebars, footers, and headers can be used to highlight your brand image, so be sure to leverage them for that purpose!

[LdF/E+/Getty Images].

5.  Content

Your blog’s colors, fonts, images, and layout offer a first impression of your brand that is critical to attract, engage, and keep visitors, but none of that will matter if your content is inconsistent and confusing to them based on the expectations that your colors, fonts, images, and layout have created in their minds.

Your content, your voice, and your style are equally important, and they must consistently communicate your brand promise and image. There are a lot of blogs out there that can meet their needs and expectations, so don’t let your audience get away by confusing, frustrating, or disappointing them.

Your blog’s brand extends beyond your blog design. It lives within your content as well. Be consistent, be persistent, and exercise restraint so your brand and your blog have a chance to grow and thrive.

How much money do engineers make at lateSEOrush

So so much money do engineers make at lateSEOrush?



Wrong question.  The right question is “What kind of offers do engineers routinely work for?”, because salary is one of many levers that people can use to motivate you.  The answer to this is, less than helpfully, “Offers are all over the map.”

In general, big companies pay more (money, benefits, etc) than startups.  Engineers with high perceived value make more than those with low perceived value.  Senior engineers make more than junior engineers.  People working in high-cost areas make more than people in low-cost areas.  People who are skilled in negotiation make more than those who are not.

We have strong cultural training to not ask about salary, ever.  This is not universal.  In many cultures, professional contexts are a perfectly appropriate time to discuss money.  (If you were a middle class Japanese man, you could reasonably be expected to reveal your exact salary to a 2nd date, anyone from your soccer club, or the guy who makes your sushi.  If you owned a company, you’d probably be cagey about your net worth but you’d talk about employee salaries the way programmers talk about compilers — quite frequently, without being embarrassed.)   If I were a Marxist academic or a conspiracy theorist, I might think that this bit of middle class American culture was specifically engineered to be in the interests of employers and against the interests of employees.  Prior to a discussion of salary at any particular target employer, you should speak to someone who works there in a similar situation and ask about the salary range for the position.  It is <%= %>; you can find these people online.  (LinkedIn, Facebook, Twitter, and your (non-graph-database) social networks are all good to lean on.)

Anyhow.  Engineers are routinely offered a suite of benefits.  It is worth worrying, in the United States, about health insurance (traditionally, you get it and your employer foots most or all of the costs) and your retirement program, which is some variant of “we will match contributions to your 401k up to X% of salary.”  The value of that is easy to calculate: X% of salary.  (It is free money, so always max out your IRA up to the employer match.  Put it in index funds and forget about it for 40 years.)

There are other benefits like “free soda”, “catered lunches”, “free programming books”, etc.  These are social signals more than anything else.  When I say that I’m going to buy you soda, that says a specific thing about how I run my workplace, who I expect to work for me, and how I expect to treat them.  (It says “I like to move the behavior of unsophisticated young engineers by making this job seem fun by buying 20 cent cans of soda, saving myself tens of thousands in compensation while simultaneously encouraging them to ruin their health.”  And I like soda.)  Read social signals and react appropriately — someone who signals that, e.g., employee education is worth paying money for might very well be a great company to work for — but don’t give up huge amounts of compensation in return for perks that you could trivially buy.

lets review Docker at lateSEOrush



This is the lateSEOrush docker

It’s been just over a year since my last review of Docker, heavily criticising it’s flawed architectural design and poor user experience. The project has since matured into 1.0 and gained some notoriety from Amazon, but has suffered growing user frustration, hype accusations and even breakout exploits leading to host contamination. However the introduction of private repos in Docker Hub, which eliminated the need to run your own registry for hosted deployments, coupled with webhooks and tight Github build integrations, looked to be a promising start.

So I decided to give Docker another chance and put it into production for 6 months. The result was an absolute shit show of abysmal performance, hacky workarounds and rage inducing user experience which left me wanting to smash my face into the desk. Indeed performance was so bad, that disabling caching features actually resulted in faster build times.

[edit]: On the surface, Docker has a lot going for it. It’s ecosystem is encouraging developers towards a mindset of immutable deployments, and starting new projects can be done quickly and easily, something which many people find useful. However it’s important to note that this article focuses on the daily, long term usage of Docker, both locally and in production. If you expect anything positive from Docker, or its maintainers, then you’re shit outta luck.


Dockerfile has numerous problems, it’s ugly, restrictive, contradictory and fundamentally flawed. Lets say you want to build multiple images of a single repo, for example a second image which contains debugging tools, but both using the same base requirements. Docker does not support this (per #9198), there is no ability to extend a Dockerfile (per #735), using sub directories will break build context and prevent you using ADD/COPY (per #2224), as would piping (per #2112), and you cannot use env vars at build time to conditionally change instructions (per #2637).

Our hacky workaround was to create a base image, two environment specific images and some Makefile automation which involved renaming and sed replacement. There are also some unexpected “features” which lead to env $HOME disappearing, resulting in unhelpful error messages. Absolutely disgusting.

Docker cache/layers

Docker has the ability to cache Dockerfile instructions by using COW (copy-on-write) filesystems, similar to that of LVM snapshots, and until recently only supported AuFS, which has numerous problems. Then in release 0.7 different COW implementations were introduced to improve stability and performance, which you can read about in detail here.

However this caching system is unintelligent, resulting in some surprising side effects with no ability to prevent a single instruction from caching (per #1996). It’s also painfully slow, to the point that builds will be faster if you disable caching and avoid using layers. This is exacerbated by slow upload/download speeds performance in Docker Hub, detailed further down.

These problems are caused by the poor architectural design of Docker as a whole, enforcing linear instruction execution even in situations where it is entirely inappropriate (per #2439). As a workaround for slow builds, you can use a third party tool which supports asynchronous execution, such as Salt Stack, Puppet or even bash, completely defeating the purpose of layers and making them useless.

Docker Hub

Docker encourages social collaboration via Docker Hub which allows Dockerfiles to be published, both public and private, which can later be extended and used by other users via FROM instruction, rather than copy/pasting. This ecosystem is akin to AMIs in AWS marketplace and Vagrant boxes, which in principle are very useful.

However the Docker Hub implementation is flawed for several reasons. Dockerfile does not support multiple FROM instructions (per #3378, #5714 and #5726), meaning you can only inherit from a single image. It also has no version enforcement, for example the author of dockerfile/ubuntu:14.04 could replace the contents of that tag, which is the equivalent of using a package manager without enforcing versions. And as mentioned later in the article, it has frustratingly slow speed restrictions.

Docker Hub also has an automated build system which detects new commits in your repository and triggers a container build. It is also completely useless for many reasons. Build configuration is restrictive with little to no ability for customisation, missing even the basics of pre/post script hooks. It enforces a specific project structure, expecting a single Dockerfile in the project root, which breaks our previously mentioned build workarounds, and build times were horribly slow.

Our workaround was to use CircleCI, an exceptional hosted CI platform, which triggered Docker builds from Makefile and pushed up to Docker Hub. This did not solve the problem of slow speeds, but the only alternative was to use our own Docker Registry, which is ridiculously complex.