No, Windows 8.1, I do NOT want to use my account to handle my computer credentials

I upgraded to Windows 8.1 a few weeks back, and I didn’t really have an issue with it till I had to log in to my computer.

The password I had been using failed, and I don’t remember ever changing it.

I thought it was odd that the lock screen was displaying my e-mail address, so I tried that password instead. It worked.

God damn.

I would prefer not to tie those credentials together, and when I attempted to create a local account with the same user name I had used before, I was greeted with the helpful error message, “That name is already taken”.

During the update process, the installer forces you to create or log in to your Microsoft account. When I realized my mistake with my desktop update, I hoped to avoid the same fate with my laptop. The installer provides no such option.

As a result, my login became tied to my Microsoft account, thus forcing me to use my online credentials locally. I didn’t want to relinquish the use of my full name to my Microsoft account.

So on the advice of an article that I can no longer find (otherwise I would link to it), I logged into my Microsoft account and went to the settings where I temporarily changed my display name. Then I went back into Windows 8.1 and created a local account using my full name. Once it was created, I changed the display name of my Microsoft account back to my real name.

I was concerned that creating a local account would mean creating a duplicate of my User folder, but that didn’t happen. All my settings remained. I just had to trick my Microsoft account for a bit to reclaim my login name for my local account.

Till then, I hadn’t minded the update, and in fact, I found some of the UI tweaks nice. Of course, Microsoft had to ruin the mood with its strong-arm tactics.

Notes on a migration: From Movable Type to WordPress/Drupal

I think it’s been more than a year now since I switched from Movable Type as my primary content store.

For more than a decade, I would treat Movable Type as a repository. It would handle search and syndication, but the presentation layer would be built by me with a PHP framework, most recently CodeIgniter. It’s an architectural decision I made in the days of Movable Type 2.5, when its schema wasn’t as robust as my demands required.

Fast forward to the present day when I took a job that required me to support WordPress and Drupal, and I knew nothing of these systems.

I had also been feeling disenchanted with my setup. I wanted to spend more time creating content than maintaining the system to manage it, and the few customizations made to my Movable Type installation became daunting as my PERL skills have atrophied.

So I adopted WordPress as a blogging platform and deployed Drupal for my music projects.

They’ve been working out well so far, and the crash course in getting them running certainly helped in the office.

Continue reading

Windows 8 FUD: A whole lot of exaggeration

In 2011, I upgraded from Windows XP to Windows 7. In 2012, I switched from Windows 7 32-bit to Windows 7 64-bit. Neither upgrade was easy.

I pretty much had to do clean installations in both cases. That meant reinstalling all my software and recreating all my settings.

So it was with great trepidation that I approached my upgrade to Windows 8. I was expecting a similar arduous process, and all the press I’d been reading made the paradigm shifts in Windows 8 seem larger than life.

I took the plunge this past weekend and installed my upgrade. (I bought the licenses before the end of the promotional discount.)

I was up and running in about an hour. I had to reinstall Sony SoundForge on my desktop machine, but aside from that, it was pretty anticlimactic.

I tooled around the Windows 8 interface for about an hour and reoriented myself with where things were located. The lack of the Start button is still an adjustment, but I like the amount of control I have over the Start Screen. So much so, I pretty much wiped out all the default panels and refashioned it as a more streamlined and organized Start Menu.

When I’m in the desktop, I sometimes forget I’m running Windows 8. That duality seems like a double-edged sword, though. It’s wise for Microsoft to slowly ease its user base into a different operating paradigm by splitting the environment. But it may also encourage some complacency when it comes to dealing with the newer user interfaces.

I imagine over time, the desktop paradigm will cede further real estate to panels, and that would be quite a disruptive change if not handled smartly.

I’m not sure what I was expecting with this upgrade. Total discombobulation over the UI changes? Angst and anguish over reinstallations? Fear, uncertainty and doubt?

As it turned out, it was probably the smoothest upgrade and transition I’ve gone through with a Microsoft OS.

The changes are significant, but they weren’t difficult to surmount. A whole swath of the OS is still pretty much Windows 7, and everything bad I expected to happen just … didn’t.

Maybe over time, I’ll discover a whole new set of annoyances, but for now, I’m pretty glad this upgrade turned out to be no big deal.



What I learned: WAMP and Composer use different php.ini files

I learned about Composer a few months ago but didn’t really try it out till yesterday.

My development environment is WAMP on Windows 7. The Composer installer for Windows prompts for the location of PHP, so I pointed to PHP in the WAMP directory.

When I attempted to install the Amazon SDK for PHP, I encountered an error saying the cURL extension was not installed.

I didn’t think it was likely since I used cURL quite a bit on my last big project, but various web searches told me the obvious — cURL was not enabled in the php.ini file.

Then I remembered the various locations where WAMP stores php.ini files. WAMP, for some reason, configures PHP from the Apache directory, not from the PHP directory.

cURL was working fine for Apache, but not for Composer because it wasn’t reading from the same php.ini file.

So I checked the php.ini file in the PHP directory, and sure enough, cURL was not enabled. Once it was, Composer worked its magic.


What I learned: How to pull remote branches in Git vs. How to pull remote branches in Mercurial

At work, I use Mercurial. At home, I use Git. Both are distributed source control systems, and both are systems I hadn’t yet used till this year. (A previous job had me working with Perforce, while I was still muddling through Subversion and CVS before that.)

I got familiar with Mercurial before I did any extensive work with Git, so I approached Git with the mindset of “How is this done in Mercurial?” That works for some functions better than others.

Take the notion of pulling remote branches. In Mercurial, you do this:

hg pull -b <remote-branch-name> <repo-name>

This command will create that new branch in your clone of that repository. Git has a similar command:

git fetch origin <remote-branch-name>

This command retrieves information about a remote branch, but it won’t create that branch in your clone. Rather, the new branch needs to be created in the clone first before remote changes are pulled in.

git checkout -b <remote-branch-name>
git pull origin <remote-branch-name>

I could be wrong about that, but so far, it’s been working for me.

UPDATE, 9/29/2014, 12:33: While git pull might work, it’s actually a somewhat redundant step. git pull is really a combination of git fetch and git merge FETCH_HEAD. So if I were to spell out all the commands in this example, it would look something like the following:

git fetch origin <remote-branch-name>
git checkout -b <remote-branch-name>
git fetch origin <remote-branch-name>
git merge FETCH_HEAD

In essence, we’ve called git fetch twice. The net effect is the same. It’s just not … as correct as it should be. So what should really happen is …

git fetch origin <branch-name> --tags
git checkout -b <branch-name>
git merge FETCH_HEAD

… or …

git checkout -b <branch-name>
git pull origin <branch-name> --tags

How to delete a URL from the address bar in Chrome so that it stays deleted

Do a search on how to remove a URL from the Chrome address bar, and you’ll find a lot of confused Firefox users who follow the instructions of experienced Chrome users and get nowhere.

In Firefox, deleting a URL from the address bar is actually a very simple task — highlight the address, press delete (or SHIFT+DEL on a Mac.)

In Chrome, it’s pretty much the same in abstract. But in detail? The experiences are vastly different.

That’s because in Chrome, the address bar isn’t just an address bar — it’s a search interface as well. And the result you see isn’t just an address history … it’s a whole bunch of other stuff, including shortcuts, search results and addresses.

Search results can’t be deleted, and sometimes, those results look exactly the same as your address history. So the Chrome user experience designers have to devise ways to distinguish what you can remove from what you are removing.

(Search results have a magnifying glass icon next to them. You want to delete addresses with the page icon next to them.)

In Firefox, the experience was direct and immediate — type in an address, highlight the address with your mouse, press delete, and the address disappears. You didn’t even need to finish typing the address — if Firefox found a match, it would highlight it for you.

Where Chrome differs is the highlighting — you cannot delete an address in your history if it’s partially highlighted. You must finish typing the complete address before you can highlight it. After it’s highlighted, you may delete it — but don’t expect it to disappear from your interface!

The only indication that an address has been deleted from the address bar history is the removal of the title text next to the highlighted address. If that title text does not disappear, the address was not deleted. To confirm the address has been removed, type it in again — it should no longer appear as a drop-down option.

One thing Chrome makes consistent is the deletion keystroke — it’s SHIFT+DEL on either Windows or Mac.

 These subtleties make deleting a URL from the Chrome address bar much more of a chore than in Firefox, but it is possible.


That wasn’t a sprint — it was marathon

In the last six weeks, I’ve launched or relaunched a bunch of sites.

I dove into Drupal for the first time. I waded further into making WordPress themes. I immersed myself into the workflow of Git, coming from a CVS/Perforce/Subversion background. Heck, I’ve even started tracking bugs and mapping out releases.

I’ve even gone so far as to open up the source to all the sites I maintain.

Part of it is necessity. My workplace uses Drupal and WordPress, and I’ve been called on to support these applications without knowing a thing about them. So what better way to learn them than to use them myself?

It helps that I’m pretty much tired of maintaining my hodge-podge system that puts a PHP layer over Movable Type. I’ve always been reluctant to hand over control of my sites entirely to a management system, and a long time ago, I decided to give Movable Type some responsibilities over my site — building syndication feeds, providing search mechanisms — but I wanted to control the presentation of the content.

I’m at an age where I don’t have patience to build infrastructure any more. So the past month and a half has been spent setting up the management systems to take care of that for me.

I also wanted to give my sites a bit of a makeover. The designs have been stuck in 2003 for a while now, so it’s time  to embrace rounded corners, gradients and imported fonts.

One thing I wish I could have done during this marathon was write about it. But when you’re busy doing, you don’t want to kill that momentum. It’s probably why developers hate writing documentation so much.

But I would like to reflect on a few of the things I encountered, and I hope to do so over the next few entries.


Chrome annoyances

Well, I guess it’s not much of an experiment if I’ve already missed three Firefox releases. So let’s make it official — Chrome is now my default browser.

There is no laundry list to explain the shift. In fact, there’s just one reason for the switch: Chrome gets out of the way of my browsing experience.

A few weeks ago, tech news sites were abuzz by a former Mozilla developer criticizing Firefox’s rapid release schedule. I have to agree that broken extensions fed into my discontent about Firefox, since the one extension that broke so often was one I really, really liked.1

On the whole, the browsing experience between Chrome and Firefox doesn’t differ much. It’s not the same jarring experience between those browsers and Internet Explorer 8. Sometimes when I have both Chrome and Firefox open for some cross-browser testing, I’ll forget which one I’m using.

Ultimately, I’ve stayed with Chrome because of the subtleties. Chrome seems just slightly more responsive than Firefox, enough to be noticeable over time. If something goes awry with my browsing experience, it’s mostly the page I’m visiting, not the browser itself intruding on my experience.

That’s not to say the transition has been entirely smooth. Perhaps it’s because I had been using Firefox for so long — back when it was still called Mozilla Firebird —  that I’m accustomed to some of its paradigms. Still, this list of Chrome annoyances is small and hasn’t made me defect back to Firefox.

  • Recently closed tabs is a better user experience in Firefox. I guess it must be some form of OCD on my part, but I’m particular about how my tabs are arranged. I have a series of evergreen tabs that I keep open and placed in a specific order. When I reopen a previously-closed tab in Firefox, the tab is placed at the point where it was closed. I like that experience because it triggers muscle memory. Yes, it was right around there that I saw whatever it was I was looking at before that tab was closed. In Chrome, you open a New Tab page, pick from a list of recently-closed tabs, and the previously-closed tab opens right then and there. I lose that muscle memory because the tab isn’t where I expect it to be.
  • Inability to stop animated GIFs using the ESC key. Firefox trained me to stop animated GIFs by hitting the ESC key. When I tried that with Chrome, the animation just kept going. I’ve since discovered an add-on to mimic that behavior, but why is there no default method in Chrome to stop animations?
  • Deleting a URL from the address bar is temperamental. In Firefox, you can remove a URL from the auto-complete history of its address bar by hovering over the URL and pressing DELETE. (Or SHIFT+DELETE on a Mac.) The same functionality exists in Chrome, but it requires a very specific set of circumstances to work correctly. In fact, it’s so cumbersome, I’ll split my findings out to a separate blog entry. Let’s just say that in Chrome, what you think is deleted may not be deleted, and it’s annoying when it pops up as a suggestion.
  • No way to set a default page for a new tab. I usually set my default home page to something I host myself — either locally or on my own website. In Firefox, I’ve come to expect an option that sets the default page of a new tab to something I choose. Chrome has no such setting. Google calls it the New Tab page, but I’d rather call it the Bullshit Page. It contains links to things I pretty much don’t need, except perhaps the Recently-Closed tabs. Alas, Firefox decided once again to do as Chrome does and created its own version of the Bullshit Page. Thankfully, I can go into about:config and set browser.newtab.url to something I choose. Chrome gives me no such option.


1So much so, I would wish someone would rescue Foxytunes from the neglectful clutches of YAHOO! and port it to Chrome.

What I learned: 16-bit applications don’t run on Windows 7 64-bit

The transition to a 64-bit operating system is the gift that just keeps on giving.

This past week, I decided to reconstruct a track I recorded in 1991. Back then, my studio setup consisted of a Kawai K4 synthesizer and a Kawai Q-80 sequencer. Both were stolen in a burglary in 1998, but I went on eBay and bought a used K4 many, many years back.

Compared to today’s hardware synths, the K4 is clunky, but I have it around because some of my demos used presets that are indelibly tied to that music. It would sound weird to me to substitute those sounds.

So I switched it on to discover that the internal battery has once again drained. I changed that battery a few months back, so I resigned myself to spending an evening digging into the K4’s internals to switch it out.

Of course, that kind of change means all the presets were lost, which wasn’t a problem since I have MIDI system exclusive files containing the patch information. All I have to do is transmit that back-up file to the synth through my MIDI interface, and I’d be done.

I use a program called K4Win to edit those system exclusive files and to send them to the synth. I tried to fire it up only to be informed that “The version of this file is not compatible with the version of Windows you’re running.”


Being new to the world of 64-bit, I was unaware that 64-bit Windows does not support 16-bit applications. Luckily, I have Windows 7 Professional with XP Mode, so all I had to do was spin up a virtual instance of XP and launch the K4Win with no problem.

But that doesn’t strike me as a viable long-term solution.

In fact, I ended up launching XP Mode a number of times in the same evening because I would discover a settings change that wasn’t reflected in the backup, but I wouldn’t know it till I started working on a track.

I bought a license for Visual Studio 2010 a few months back, but I haven’t done anything with it. I’ve been wanting to build a desktop application, but I wanted to build something useful that someone hasn’t already done better.

After scouring the Internet for a K4Win replacement, I reached the conclusion that the synth is so old, all the software built to support it pretty much froze at Windows 3.1. So I guess I have to build it myself.

This will be an adventure, surely.


Native Instruments and Windows 7: Better hardware means a smaller buffer

Although my post-upgrade problems with Cakewalk SONAR X1 had nothing to do with the upgrade itself, it didn’t mean I was problem-free.

I bought my external sound card — an M-Audio Delta 44 — back in 2005, set it up once and didn’t really think about it ever again. The custom Windows 7 installations I’ve put my machine through meant updating the drivers, and I usually went with the default settings, which were appropriate for 2005.

The 64-bit upgrade, however, resulted in some serious latency issues with Native Instruments Battery 3. When I would bounce the MIDI to audio, the latency was  significant enough to make the bounced track nearly half a beat off. It took me a while to find the right search terms to return this page: Windows 7 Tuning Tips for Audio Processing. It’s a knowledge-base article from Native Instruments itself, detailing what off-the-shelf or custom-built computers need to consider when dealing with audio for music production.

The third item in the article solved my latency issue, but it also revealed the blind spot in my studio setup. While I pay a lot of attention to upgrading the software components of my studio, the hardware (aside from my computer) hasn’t changed since, well, 2005. So it was easy for me to fall into a perception trap — just update the drivers, set it up the way it was before, and it should work fine. Plug and play, indeed.

That might work for printers and scanners, but for audio hardware, the Native Instruments article points outs:

The rule of thumb is, the faster the computer, the more calculations it can handle every second and the smaller the audio buffer can be. A smaller audio buffer is preferable because there is a direct relation between the “audio buffer size” and the resulting “latency.”

In 2005, my computer had a single processor. I replaced it 2010 with a computer with four processors but saddled it with a 32-bit operating system. After the switch to 64-bit, the latency issue made itself known, and what worked before did not work now.

The article goes on to suggest setting the buffer size on my sound card to 512 or lower, which I did.