Saturday, November 22, 2014

Pioneer A4 Airplay Speaker: Fixing The "Too Much Bass" Issue

Here's how you fix the "boomy bass" issue on your Pioneer A4. This is a method I haven't seen recommended elsewhere.

Background

From 2012 to 2013, Pioneer manufactured a line of fantastic network speakers: the A1, A2, A3, and A4. The top-of-the-line A4 model has fantastic sound and received rave reviews everywhere, and it was The Wirecutter's pick for Best Airplay Speaker until Pioneer discontinued it. The Pioneer A4 supports Apple's AirPlay as well as HTC Connect, DLNA, Spotify Connect, and and of course your standard 1/8" headphone jack audio input as well.

There's one drawback to the A4: while it does have best-in-class sound, the bass can be overpowering, as Amazon reviewers have noted.

Most people recommend fixing the problem by adjusitng iTune's audio EQ settings, or by simply stuffing a sock in the bass ports in the A4's rear. Those methods both work but rob you of the A4's full potential.

A Better Solution

You can acoustically isolate your A4 by placing energy-absorbing rubber or foam feet between the speaker and the surface it rests upon. This gives you crystal-clear, powerful sound including bass that I wouldn't have thought possible from a unit this size.

My favorite material for this job is Sorbothane, which is specifically designed to absorb vibrations. It's the same material some people place under their washing machines. Other types of foam may work as well, but you're on your own.

  1. Get some Sorbothane. For the most value, you can buy it in sheets and trim it however you like. Or you can buy it in pre-cut discs or bumpers.
  2. Place the Sorbothane between your A4 and the surface it's resting upon.
  3. How much Sorbothane? Depends on the surface. I used four 1" square pieces of 1/4" thick Sorbothane.

Ideally, you should be able to place your hand on the surface next to your speaker, play a song with powerful bass, and not be able to feel any vibrations. If you do, consider adding more Sorbothane until you're happy with the sound.

Wednesday, October 22, 2014

Apple Recap

How'd I do with those predictions?

The big surprise, to me, was that the "It's Been Way Too Long" teaser image appears to have been nothing but a red herring. It doesn't seem to match up with any of the things they actually announced. It makes me wonder if perhaps they had to shelve a planned announcement.

The iPad Air and iPad Mini received incremental updates. The star of the show, obviously, was the Retina iMac.

As Marco Ament notes:

According to early Geekbench reports, the 4 GHz, 4-core Retina iMac appears to be 25% faster than the 6-core Mac Pro in single-threaded tasks and only about 15% slower in multi-threaded tasks...

...The Mac Pro is still more expandable than the iMac in some ways. It has 6 Thunderbolt ports across 3 buses for more monitors and high-bandwidth external storage capacity, and it supports up to 64 GB of RAM instead of the iMac’s 32 GB ceiling. Otherwise, the differences are small.

Retina iMac with 4 GHz, 16 GB, 512 GB SSD, M295X: $3500
Mac Pro with 6-core, 16 GB, 512 GB SSD, D500: $4300

But that's a bit like saying a $70,000 Corvette is cheaper than a $250,000 Ferrari. Sure it is, but it's way more than I could ever realistically spend. My most realistic hope involves my boss buying himself a Retina iMac so I can at least check it out.

Biggest Letdown. The Mac Mini's update was more of a downgrade, going from a quad-core CPU to a dual-core CPU, losing its second drive slot, and losing user-upgradable RAM. That's a real bummer, because Mac Minis make pretty good servers and you can host them very cheaply at hosts like MacMiniVault or MacMiniColo. I'd also been considering getting an 2014 Mini I could use for development work, since you can plug a couple of 27" monitors into one -- but the new Mini is just too lackluster.

Thursday, October 9, 2014

Apple's October 16 Event: "It's Been Way Too Long"

Apple invite 1014

That's an interesting tease for an Apple event. What could be they be referring to?

Not the Mac Mini. It's one of my favorite Apple things, but it's also their least important (to them) product. There is zero chance it's headlining an event.

As everybody else has noted, the logo appears to be a throwback to the classic rainbow-colored Apple logo from the 70s, 80s, and 90s. It'd be cool if they were refreshing their branding. I give that possibility a "maybe," though I also don't think they'd throw a press party for that alone.

My guess is that the colors are a reference to colored Apple products. I'm almost embarrassed to admit that I hope this is true, but... I do. The colored aluminum on the iPods of yore was cool; imagine a colored anodized MacBook in your color of choice.

Things I Predict We'll See

  • OSX Yosemite, obviously.
  • Updated iPad Air, obviously.
  • Colored MacBook Pros and/or MacBook Airs.
  • Retina Thunderbolt Displays and/or iMacs.
  • Minor Mac Mini refresh. This might be a "silent" update where they don't mention it in the presentation, but it gets rolled out in the online store after the event.

Wish List

  • A "real" server-oriented Mac Mini. Max of 32-64GB of RAM instead of the current 16GB. ECC RAM for increased reliability. Lights-out management. Aside from a bump to 32GB I don't think these are even possible; the Mac Mini's form factor means it's pretty much always going to have "laptop guts" and not one of Intel's bona fide server-oriented chipsets.
  • Some possible way that a Retina Thunderbolt Display could work with my 2011 MacBook Pro @ 60hz. Again, I don't think this one is physically possible.
  • Free hookers, world peace, pizza.
  • A revelation that the A7/A8/A9 chips are somehow hardware-optimized to run their Swift programming language at obscene speeds, faster than C or hand-tuned assembly, and that they're turning this feature on for everybody today. Yeah, this is even less likely than the hookers, peace, and pizza.
  • Some kind of renewed Free / open source software commitment.

Tuesday, June 3, 2014

Apple's 2014 WWDC Announcements

WWDC 2014 logo

I like that there were no hardware announcements. Nice that this one was just for the developers. Even if I just write code on Macs without targeting OSX or iOS.

Swift Programming Language. If you're a programmer, you have pretty much the same schizophrenic reaction to any new language announcement. One half of your brain is excited about a new programming language, and the other half of your brain is screaming oh God, yet another programming language.

It's great that there's an official script-ish alternative to Objective-C for iOS development. That is, I think, objectively a good thing. Especially when you can mix and match Obj-C and Swift in a single project, which is the single most important thing about this announcement; it means you can upgrade your old Obj-C projects in a piecemeal way, or quickly write something in Swift and replace bits of it with Obj-C if you need to, and so on.

But why a new language? Why not adopt Ruby or Python or Lua or...?

At the very least, I hope the Light Table-ish live preview thing finds a niche in education. Maybe it's the Logo for our generation.

Metal Graphics API. What is this, 1997? Think about how badly OpenGL would have to drop the ball for a couple of decades in order for people to even think about going back to the bad old days of every piece of graphics hardware having its own proprietary, incompatible API. Well, that's how badly OpenGL dropped the ball. Everybody point at OpenGL and laugh.

What I found unclear is what Metal is actually is. iOS only? iOS and maybe OSX someday? iOS devices have a wide range of graphics hardware. So Metal lets you code "close to the metal," but which metal? All of them?

It would be nice if Metal is an alternative to DirectX or OpenGL, in the sense that it's hardware agnostic, but provided an approach that's a little more in tune with how modern graphics hardware actually functions. I don't think that's what it is, though.

Edit: It looks like all iOS devices have used PowerVR graphics. I don't know how similar they are, but I'm assuming there's a fair bit of commonality. So I guess that's what Metal targets, specifically.

HomeKit Yawn. Cool in theory, but in reality, there's just not really that much I want to automate in my home. We have pets, so I can't really let the house go down to 40F in the winter or let it get up to 90F in the summer to save a few pennies while we're at work.

Tuesday, February 4, 2014

"I'd Like To Learn To Code!"

So, you'd like to learn to code.

First things first: that's great news!

Making software is one of the more meritocratic pursuits we have going right now and, if your goal is to make it into a career, you can do it as a self-taught coder without a formal degree. Better yet, many of the tools and learning resources are free... and amazing.

What Do I Need?

You need to be smart, although not necessarily scary-smart.

You need to enjoy this stuff. And you need to enjoy staying on top of it because things change really, really quickly... usually in fun and awesome ways, but usually at a relentless pace. We are a young industry; just a few decades old.

If you don't want to constantly change and adapt, consider something like furniture making. I do not mean that as an insult. Making furniture is awesome and takes a lifetime to master. Your children are more likely to fight over a piece of furniture you made than some code you wrote. What I mean is that the basic practices of furniture making haven't changed much in centuries.

I am serious: for anything other thing doing this on a hobby basis, you really need to enjoy the "constant change" part!

You Don't Need To Be Good At Math

It helps, of course! There are coding jobs that require it. If you're doing number-crunching for scientists, you'll need to know statistics. If you're doing 3D game programming you'll need to know matrix math and such. And so forth. And in general there are quite a few parallels between the thinking one needs for math and programming.

But generally speaking, there's usually not any math involved.

The Thing Nobody Tells You

If you plan on making this into a career, you probably need to be good with people. I know -- nobody ever says this, right? I truly believe this, though. You will be working with others and your job is to understand what they want and translate the needs of non-coders into code.

What Language Should I Learn?

Practically speaking, you'll need a few.

The good news is that most programming languages follow the same basic principles. Programmers move between them fairly easily... and we generally find this process pretty fun!

The reason why we have lots of programming languages is because different languages are suited to different tasks. Just like in the real world where we have a "language" to describe music (sheet music) and another "language" to describe math and so forth.

For example, web application developers are at least conversant in...

  • HTML, CSS, and JavaScript+jQuery to describe web pages.
  • A language like Java, PHP, Ruby, Python, Javascript, or C# that runs on the server and talks to the web browser
  • Some tools to store data have their own language like SQL, though often you can do this right from Java/PHP/Ruby/Python/C#/etc.

There are plenty of other paths one can take. For example, complex games are usually written in a mix of a nitty-gritty language like C or C++ and a "scripting" language like Lua. Web games are usually JavaScript. iOS applications are written in Objective-C. Android applications are written in Java.

Where Do I Start Learning?

There are so many possible answers here!

I'm not going to pretend to have a comprehensive knowledge of every resource, because nobody does.

I'd recommend the following as a first step. These online courses run in your browser; you don't have to buy or install anything on your computer. These are good for discovering if you're good at this stuff and find it fun.

http://tryruby.org/
http://try.jquery.com/
http://www.trypython.org/
http://railsforzombies.org/

One that I personally use and recommend is: https://www.codeschool.com

They offer a lot of free resources and if you enjoy them, you can access all of their material for $29 a month. Their "courses" are split into short, fun videos. You watch a few minutes of video, do a coding exercise in your browser, and then move on to the next lesson.

I also recommend Code School because their courses are organized into various "paths" - they have a Ruby Path, a Javascript Path, an HTML/CSS path, and so forth. If you complete all or most of them, you'll be pretty darn ready to develop web applications.

How Do I Actually Get a Job?

Coding is great hobby, obviously... doesn't need to be a job. But if you are trying to get paid for it...

Well, you could make a great application and sell it.

If you want somebody to hire you to write code the best way to get your foot into the door (when you have no prior experience) is to write some sample applications. Put them online and then put the code on GitHub, which is kind of like Facebook for writing code. Or contribute code to others' open-source applications... most of which are on GitHub these days.

One other thing to keep in mind is that your choice of languages will influence your employability a bit. For example, Microsoft's C# and Sun/Oracle's Java tend to be used in corporations. Open-source languages like Ruby and Python are more likely to be used at smaller companies and start-ups. Don't take my word for it; check the local job listings on Craigslist and see what's in demand in your area.

Tuesday, September 17, 2013

Technology: It's About Empathy, Dummy

In the real world, technology and software development are about empathy as much as they're about engineering chops.

Writing successful software, even if you're just writing an API or component for another coder, requires an understanding of your users' wants and needs.

The typical real world IT project goes something like this: something is going wrong, and you're asked to fix it with software. The people asking you for these solutions frequently have no idea what they want, and wouldn't have the technical vocabulary to describe it to you even if they knew. Worse, sometimes they think they know exactly what they want, and you need the finesse to tell them why their idea is wrong and suggest a better one ...all while helping them to feel as though they're playing an important role in the process, which they actually are, just not in the ways they're intending to.

And that's fine, actually, because if they know how to describe and write their own code they wouldn't need you. That's why you have a job.

There are certainly engineering jobs where empathy plays less of a direct role. If you're designing processors at Intel, or writing software to sift through telescope data to discover asteroids, you will perhaps be less concerned with others' needs.

Know, however, that those kinds of jobs represent a very small portion of the opportunities out there in this amazing field.

Also remember this: if you're just a "good coder" your job can be fairly easily outsourced. What they can't outsource so easily is your empathy and your understanding of intangibles.

Tuesday, March 26, 2013

Hey, Men! Let's Be Awesome.

There's been much talk about the role and treatment of women in the tech industry lately.

Let's step away from the cesspit of online debate and focus on some positive things we can do. There is a time and place for pointing out what others have done wrong. Since the rest of the Internet has that covered already, let's focus on awesome things we can do.

As men, let's:

  • Recognize that we have a position of privilege and power in the overwhelmingly male technology industry. "Privilege" doesn't mean you haven't worked hard and earned your achievements. I believe you when you say you've worked your butt off.
  • Recognize that, particularly if you're a white male, you may have never experienced what it's like to be in the minority. Let's not tell women or anybody else how they should feel about it. This does not mean you are bad because you are a white male! I'm a white male; I think I'm pretty alright.
  • Realize that a lot of women don't appreciate sexual jokes and conversation from men they don't know. Some enjoy it, some don't care, and many dislike it. They may even find it threatening. Even if you think this is dumb (it's not) then simply accept that a lot of women feel that way. We would not want our mothers, sisters or wives subjected to unwanted sexual conversations from strangers.
  • Realize we can still make jokes about boobs and penises. Nobody is taking that away from us. Let's save it for our friends (of any gender) who enjoy those kinds of jokes.
  • Realize that engineering is the art of creative problem-solving, and we benefit from others' perspectives. Solving problems involves understanding them. Often, this means understanding people. We need more perspectives, not less.
  • Realize that accepting women into our industry means accepting women. Not just accepting women as long as they "think like men."

This industry is important; I really believe in it. If you're reading this, I think you believe in it. We really hurt this industry when we exclude bright minds and new perspectives from our field.

So, let's be awesome.