rc3.org

Strong opinions, weakly held

Author: Rafe (page 13 of 989)

So if your answer started with “because in C…”, you’ve been repeating a good story you heard one time, without ever asking yourself if it’s true.

Mike Hoye digs into the history of zero-indexed arrays in Citation Needed. Fantastic walk through the history of computing, and a fun reminder of how comfortable it is to leave our beliefs unexamined.

It’s not Obamacare, it’s supply and demand

A number of my Republican friends love to bring up the negative effect that Obamacare is having on workers. If you like theoretical arguments, there’s CKE Restaurants CEO Andrew Puzder arguing that Obamacare inevitably brings about a shift of full time workers to part time work. In a poll of 603 smallish business owners, 41% said they had frozen hiring because of Obamacare. For people who prefer to stick with anecdotal evidence, there’s a guy who owns Five Guys restaurants that says burger prices are going up because of Obamacare.

The counterargument relies on basic microeconomics. In a rational market, businesses will hire the number of employees that enables them to maximize their profits. If you are a profit maximizing home builder and you can profitably build and sell 100 homes a year, you’ll hire enough people to build 100 homes, spending as little on labor as you can. If you choose to build only 50 homes because you are afraid of the mandate in Obamacare, some other business will build the remaining 50 homes, and hire the people needed to do so. For an individual businesses, Obamacare will almost certainly have some effect on labor costs. For some, it may raise them, and for others, it may lower them. Economically speaking, though, there’s nothing special about it. Costs may go up due to higher fuel prices, or increased costs of lumber, or go down due to purchasing new equipment that makes home building more efficient. Operating a business is about understanding and managing costs.

As Mr. Puzder argues, one way to reduce costs is to shift full time workers to part time to avoid the requirement to provide employees with health insurance. While Obamacare may present business owners with another incentive to do so, this is hardly a new approach to cutting labor costs. There’s a lot of information in Fast Food Nation (published in 2001) about how fast food restaurants take advantage of a variety of labor regulations to save money, including keeping employees on part time status. What’s important is that the opportunity to switch employees from full time to part time is a luxury afforded to employers by the bad job market.

Obviously workers can quit their jobs any time and pursue better opportunities. The reason companies can cut their employees’ hours is that those opportunities are not available. Likewise, in a robust job market, replacing departing full time workers with part time workers would be much more difficult if the job market were better. Imagine what would happen if Google decided tomorrow to switch all of its engineers to part time positions with no benefits. They’d all have different jobs in no time and Google wouldn’t be able to find anyone to take their place.

Finally there’s the argument that Obamacare, and by that I mean providing health insurance for full time employees, will force companies to raise their prices. This is not how pricing works. Five Guys will charge as much as it can for a burger and fries, minimize its costs, and try to make a profit. Clearly higher costs that result from Obamacare (or anything else) may threaten the profitability of a business, but the idea of the new costs being passed directly on to the customers is just a scare tactic.

The economy has been in a sputtering recovery since it pulled out of the great recession of 2008. The result has been persistently high unemployment numbers and an epidemic of underemployment, along with a large migration of the long-term unemployed to long-term disability. For various reasons, the Federal Reserve, Congress, and even the White House have failed to come up with a coordinated response that has any hope of accelerating the recovery.

Most Republicans don’t even believe it’s possible for the government to address these kinds of economic problems in any effective way, and certainly aren’t open to supporting policies that might prove them wrong. In the end, they find it easier to scapegoat Obamacare rather than taking responsibility for their lack of a jobs policy of any kind.

The reason I bring this up is that being a free-market capitalist should be as much about understanding the free market as it is about yelling at the government to stop interfering with business. Convincing people that Obamacare is killing jobs is a huge obstacle to building a consensus for actually taking on our economic problems head on.

Lambdas arrive in Java

Turns out Java is not just going to sit there and let Scala eat its lunch. Java 8 will have lambdas:

Before lambdas, developers often used a poor “beef to bun ratio” to express ideas, often with inner classes.

How Google plays hardball with Android

I wanted to link to this Ars Technica post on Google’s levers of control over the Android ecosystem by Ron Amadeo, mainly because it’s a really nice piece of reporting. He explains how Google has reduced the open source footprint of Android and migrated to closed source versions of many of the key applications and services that Android users expect. Google then uses bars Android handset makers from making non-approved Android devices in exchange for licensing these closed-source applications.

This answers the question of why there aren’t more Android forks floating around, and sheds an interesting light on the Kindle Fire:

This makes life extremely difficult for the only company brazen enough to sell an Android fork in the west: Amazon. Since the Kindle OS counts as an incompatible version of Android, no major OEM is allowed to produce the Kindle Fire for Amazon. So when Amazon goes shopping for a manufacturer for its next tablet, it has to immediately cross Acer, Asus, Dell, Foxconn, Fujitsu, HTC, Huawei, Kyocera, Lenovo, LG, Motorola, NEC, Samsung, Sharp, Sony, Toshiba, and ZTE off the list. Currently, Amazon contracts Kindle manufacturing out to Quanta Computer, a company primarily known for making laptops. Amazon probably doesn’t have many other choices.

I actually don’t think this is particularly evil, but I do think it gives lie to the claim that Android is really an open platform.

The argument for the Java ecosystem

There’s a lot to hate about Cade Metz’s article on server-side Java from last month’s Wired magazine. For one thing, Java has been more successful on the server than on the client for at least 15 years. The fact that you can use it to build large-scale Web applications is not news, nor is the fact that the JVM is a great host for languages other than Java.

That said, the tradeoffs that go into choosing a software development platform are interesting. The Wired article is mostly concerned with scaling at levels that are unrealistic for nearly anyone to plan for. And indeed, platform is only a small part of the scaling discussion. I’m sure that most of the software written for Healthcare.gov was written in Java, and it didn’t solve any of the problems that are endemic to that sort of project (about which more some other time).

In the early stages, any Web company should focus almost solely on developer productivity. The hard part is building software people want to use, and iterating rapidly on your ideas. (I think everybody already knows this.) You’ll probably have rewritten everything by the time you even start to approach scaling issues of the kind face by companies like Pinterest or Twitter, to say nothing of the really big companies like Facebook and Google. Just choose whatever helps you build software as efficiently as possible.

If it were up to me, though, I’d build software using a JVM-based language, for reasons that the Wired article doesn’t really get into. The fact that Java and the JVM are heavily used at big companies like Google and a lot of others that are significantly more boring means that the platform will continue to grow and evolve. In that sense, it’s an incredibly safe choice.

Java also has an incredibly robust open source ecosystem, and mature libraries for almost everything. Non-Java languages that run on the JVM can make use of these libraries as well. One of the first things Java developers notice when they move to non-Java platforms is that the key libraries that you take for granted in the Java ecosystem tend to be immature or completely missing.

Another key advantage is that the world of Big Data is built to a huge degree on Java. Hadoop is written in Java, as are most Hadoop jobs. Storm, Hadoop’s realtime processing cousin, is also written in Java. One key advantage here is that if you’re already writing your software in Java or some other JVM-based language, you can transfer those skills to start writing Hadoop jobs. More importantly, you can share library code between your standard software and your Big Data jobs. This can be a huge advantage. Again, in the early stages of a company, your “Big Data” can easily be processed using R or Python and you won’t need Hadoop at all, but it’s likely you will eventually.

Finally, all businesses eventually have to integrate with “enterprise” software to some degree. Maybe you’re experimenting with the Community Edition of Vertica for data warehousing, or your HR department has purchased some special software for managing benefits. The bottom line here is that every enterprise software package integrates Java (and Microsoft) first. In many cases, those are the only options for integration. If you’re not on one of those platforms, you’re stuck with awful options like the Unix ODBC implementations. This isn’t reason enough to choose Java on its own, but it’s something you get for free.

Every company of significant size is eventually going to find its way to supporting some JVM-based software. Maybe they’re running Hadoop, or they use Solr for search, or Cassandra as a data store. Why resist?

There are a lot of other advantages to choosing the JVM. There are lots of developers out there who know Java. The Java development tools are very mature. Write once/run anywhere was always overstated, but it’s still very easy to write your code on OS X or Windows, and then deploy and run it on Unix servers without any tweaks or even making a new build. Because Java is so heavily used by big companies, and API stability over time is valued, so you don’t often have to do much work to upgrade to newer versions of the JVM when they arrive. Indeed, I’ve worked on projects where my development JVM was different from the production JVM and never ran into problems.

There are great arguments to be made for all of the other popular platforms. I’ve built software using PHP, Ruby on Rails, Python and Django, and plenty of other languages and libraries, and they all have real strengths. However, I think that the advantages of betting on the JVM outweigh the alternatives in most cases.

The Russians didn’t just use a pencil

You’ve probably heard the old story that ends with, “The Russians were faced with the same dilemma. They used a pencil.” As is always the case, the story is a lot more interesting and complex than is usually portrayed. Jason Kottke has the details.

How to treat email subscribers

Today I spent some time going through the huge number of unread emails in my inbox and found that most of them were from a bunch of mailing lists that I’ve been subscribed to for donating money, buying things, or otherwise submitting forms on the Internet that happened to have my email address in them. I then went about unsubscribing from dozens of marketing email lists and had some thoughts on the experience.

I understand why everybody wants to send me email. It’s a way to reach out to me that I may actual pay attention to, even if I never go back to the Web site. Digital marketing people will tell you that email marketing is very effective, much more so than other paid advertising campaigns. I may hate all that email, but I’m lazy about unsubscribing. Since I’ve been working in analytics, I have also become more sympathetic to marketers, mainly because math behind marketing is cruel.

If you want to grow your business on the Web, you have to increase engagement with your existing audience or you have to add new people to your audience. There are costs associated with either option. Increasing engagement usually means paying people to improve the experience of using the Web site — engineers, designers, product managers, customer support people, and so on. Sending email to people who have already given you their email address is a comparatively cheap way to reengage them.

Growing your audience is even more difficult, because there are no sure things. You can pay for traffic (ads), you can work on search engine optimization, or you can try even more speculative approaches. This is how companies get into businesses like paying bloggers to talk about their products. Even if you take it as a given that the most important component of success is making awesome things people want, there’s still the matter of telling people about it. Just assuming that “If you build it, they will come” is a luxury few companies can afford.

Given that email marketing isn’t going away, here are a few tips to make it suck less. First, how to keep me from unsubscribing in the first place.

Your best shot is to make your email really interesting. I almost never visit Quora, but I do read the Quora Weekly Digest, and often click through. They do a great job of sending me an email every week that has a few really interesting links in it. I kept that subscription.

This demand that email marketers produce interesting stuff goes for nonprofits I’ve donated to as well. Your email should consist of more than a guilt trip.

Your next best shot is to let me know how I can buy things I want at a discount. This works best for specialty retailers who don’t offer discounts frequently. I may hate your emails, but if I can occasionally get a really good deal on an item I want, I’ll stick around, probably.

Nothing else is likely to keep me on your mailing list.

Now let’s talk about unsubscribing. There are tons of blog posts about unsubscribe best practices. Here’s one from Marco Marini, the CEO of ClickMail Marketing. Here’s another one by an important sounding fellow who works in direct marketing. The most important advice in both of them is to accept that people will unsubscribe and to make the process of unsubscribing straightforward.

I’m glad to see people in the industry strongly encouraging email marketers to make unsubscribing easy. Many email marketers have not taken this advice. One charitable organization required me to submit my zip code in order to unsubscribe. Many others require you to reenter your email address, or specify which emails you don’t want any more. Some use dark patterns to trick you into staying on their lists at the last minute. Other emails don’t even include an unsubscribe link, which is illegal these days, I think.

That said, the industry recommendations are still too mild. Here’s how it should actually work:

  1. There should be a clearly labeled unsubscribe link in every email.
  2. When you click on the link, you should be removed from the mailing list in question immediately without taking any further action.
  3. That’s it.

As an email marketer, it behooves you to include a form on the confirmation page that suggests to the user that they stick around, while making it clear that if they do nothing else, they won’t get any more email. You can ask them why they unsubscribed if you think that’s useful, but I would recommend using analytics to measure the effectiveness of your emails rather than asking people. The point is, this may be your last chance to reengage this user, make it count and don’t try to trick them.

If your company has multiple mailing lists, you do have some thinking to do about UI, because you have to figure out whether your unsubscribe link should remove the user from all email lists, or just the list associated with the email. You should probably err on the side of removing them from everything, because unsubscribing from a list and getting email from that sender later is frustrating and raises the likelihood that your email will be reported as spam.

Aside from the fact that as a marketer, frustrating your customers is a bad idea, getting your emails reported as spam can prevent your email from getting delivered at all. Making it painless to unsubscribe is ultimately a way to improve your email delivery rates, which enables you to make sure your email gets to people who actually want it.

Chances are, more engineers than marketers read my blog. The message to you is that your employer is probably producing marketing emails, and you should do a bit of research and make sure that it doesn’t suck at email. The job you save may ultimately be your own.

The details on ARM64

Mike Ash: ARM64 and You

I’m linking to this, because it’s first class nerdery, giving real insight into CPU design and performance. I always operate many layers of abstraction above this, but I find it absolutely fascinating. By the way, the comments on this post are a tonic against the general pessimism about blog comments.

The security lesson of Touch ID

Today’s big news is that the Chaos Computer Club has broken Apple’s Touch ID fingerprint security feature on the iPhone 5s. First, you have to define broken. They have shown that you can unlock the phone using a copy of an authorized fingerprint. How do you do it? Take a 2400 DPI image of the fingerprint, print it out at 1200 DPI, and then use glue to create a model of the fingerprint.

This reminds me of the fantastic review of bike locks that ran on The Sweethome this week. In the end, the reviewer found that any decent U-lock will deter the casual, opportunistic bike thief and that no lock will deter a professional thief who wants to steal your bike specifically.

Security is a concept with no meaning outside the context of specific threats. Touch ID is meant as a security measure for people who don’t have a passcode on their phone because it’s too much of a hassle. It may also be sufficient for some people who use passcodes. In 2011 Daniel Amitay found that 10% of iPhones are locked using the codes 0000 or 1234.

If you ride a $2,000 bike in New York, it’s eventually going to get stolen if you lock it in the same place every night, no matter which bike lock you buy. If a knowledgeable attacker with unlimited physical access to your phone wants to unlock it, they’ll succeed. Most people don’t need to worry about such attacks. They can probably get away with using Touch ID and a $40 bike lock.

Security has costs, usually in terms of both price and convenience. I already think that tapping in my four digit passcode sucks, I can’t imagine having a longer one. I’m also too lazy to memorize a random passcode, or ever change it. That’s my security posture. Needless to say, I’m not worried about this Touch ID exploit. You probably shouldn’t be, either. If you are, be glad that it’s optional and that you can turn off Simple Passcodes and pick a really good password to unlock your iPhone.

The show must go on

What’s the meaning of life? I really liked the suggestion from Samuel Scheffler in today’s New York Times that it is furthering the human project. He focuses on our belief that human life will continue once we are gone:

Yet I think that this belief plays an extremely important role in our lives, quietly but critically shaping our values, commitments and sense of what is worth doing. Astonishing though it may seem, there are ways in which the continuing existence of other people after our deaths — even that of complete strangers — matters more to us than does our own survival and that of our loved ones.

I think we all know that we confront problems that we will not live to see solved. Believing that society and civilization will go on after we die means enables us to live lives of significance in the face of problems we cannot personally solve. We can proceed with the knowledge that we’re contributing to the project.

Older posts Newer posts

© 2024 rc3.org

Theme by Anders NorenUp ↑