Wordle

Standard

Everybody else is doing it, so:

Seems like I’m into politics lately, as many others have been.

Marriage should fall under the First Amendment

Standard

A core principle for our government is the separation of church and state. Tuesday many states showed that the American people believe that it is acceptable to single out a group of people and deny them equal rights. They are wrong.

The ballot measures passed this Tuesday make the election bittersweet. The right person was elected president, and America showed their distrust and disgust with the way things have gone in Washington.

Why, then, such a backwards-facing and hateful election in the state arena? Keep in mind that 50% of the United States was voting for McCain. This after terrorist accusations, false socialism fear mongering, blatant hypocrisy and political scandal all at the forefront of their campaign. For me, in hindsight, the question isn’t why Obama won, but why wasn’t this race a landslide in the popular vote?

Racism? Ignorance? Intolerance? Fear? Discrimination? Fox News?!

They are alive and well in America. Americans everywhere made it clear that they don’t understand the difference between a Muslim and a terrorist. They made it clear that honesty is low on their list of priorities when it comes to choosing a presidential candidate. We learned that the content of someone’s character still competes with the color of their skin or their sexual orientation. And we learned that 50% of this nation is pretty easy to mislead if you say the right lies.

Yet we claim to be ready for change. Yeah, right. Maybe when it’s convenient for us.

We still have a lot of work to do. We have a lot to answer for and a lot to live up to. The conservative movement has damaged us, and tricked this country into abandoning two key values in many areas – separation of church and state and equality.

How can we claim to be REAL Americans when we try to create laws that impose religious beliefs on others? The constitution doesn’t say all are created equal with an asterisk. You aren’t exempt for your rights as an American if you’re Muslim or gay. You don’t make exceptions to these ideals when it suits your homophobia or religious intolerance.

Even in the highest court of our land, Larry Flynt was defended for freedom of speech. Even a pig has rights. And he said something very important that we should remember: “Majority rule only works if you’re also considering individual rights. Because you can’t have five wolves and one sheep voting on what to have for supper.”

States should not have the power to trample individual rights. States with homogenized demographics and little or no minority representation should not have the power to amend their constitutions to deprive people of their right to life, liberty or the pursuit of happiness.

So with this marriage thing — what is considered by most to be a religious institution should not be influenced by laws. State and federal rights for married couples should be completely blind to religion or value systems. In fact, in many countries such as Germany this is a clear and obvious line that has to be drawn.

What if someone belonged to a religion where it was common practice to support gay marriage, and it was a part of the beliefs of that church? Would it still be okay to prevent members of that religion from getting married?

The laws passed in Arizona, Arkansas, Florida and California are not really American at all. They subscribe to the same old beliefs that our ancestors ran from when they escaped religious persecution in England. They perpetuate the same hate and discrimination found at the center of our last civil war. These laws tear the fabric of freedom and what our country was founded on.

No matter which way you cut it, those ballot measures are being used to divide us and take rights away from a group of people who should be considered equal.

It’s bullshit.

Tabbing Through Elements in Firefox on Mac

Standard

This weekend my laptop decided to die after the latest batch of Apple system updates. Not sure why, but on the first startup after the update, it wanted to randomly shut off (hard power-down) and could not get out of that cycle. Thanks, Apple.

So I did my first successful restore from a Time Machine backup. However, while I was waiting, I used a vanilla install of Firefox. I noticed that I couldn’t tab through form elements and it would jump straight from the page to the address bar. WTF?

Here is how you enable this tab behavior that you’re used to on Windows:

  1. Go to System Preferences… in the apple menu
  2. Open Keyboard & Mouse
  3. Go to the Keyboard Shortcuts tab
  4. Check All controls

This will let you tab through individual web elements normally. Screenshot below, in case it helps.

screenshot of keyboard pref pane in mac os x

Update: Alex Faaborg noted that you can track Bug 437296 if you’d like to follow overriding OS keyboard settings to maintain a consistent user experience in the browser across platforms.

Update: Chris Ilias pointed out so kindly that this is already in the Mozilla Knoledge base.

Man Shoots Lawn Mower… and… ?!

Standard

So apparently this is news in America and also, it’s against the law to shoot your own property now.

This guy essentially went Office Space on his own lawn mower and now he’s going to get an 11k fine? Give me a fucking break. No harm, no foul. Find something else to waste taxpayer money on, and also:

Dear CNN,

Please stop posting stupid bullshit stories like this that make me question the worth of my own country. Make me believe in the free press again.

Thanks,
Mike

30 is the new 20

Standard

Michael and I

My 30th birthday was one to remember, for sure. I wanted to thank everyone for coming and share some thoughts about it all.

First, Jaime is amazing — she put this all together and… wow. Just, wow. ❤

Second, I realized that I didn’t give any sort of speech or say anything monumental to everyone there. I was sort of speechless and made a point to move from table to table, so didn’t really give a speech or anything.

But I thought about this a bit afterwards, and if given another chance, I probably would have said something like:

You’re only as good as the people who support you. When you stumble, they help you pick yourself up. When you succeed, you succeed together. I’ve had the luxury of friends who tell you the truth even if they know it hurts. I’ve been lucky enough to have the loyalty and love of my friends (real friends, not Facebook friends), and as I get older I value them more and more. You’ve made my first 30 years amazing, and I’m guessing life will continue to be one hell of a ride.

Cheesy, but true. Anyway, here are some of my favorite moments:

  • The confused blonde greeter who had no idea what was going on and almost blew Jaime’s cover
  • Imagining Jaime beating that person up right there near the front door
  • Following Jaime and this other girl to the basement of the Lucia, wondering where the hell we were going
  • Walking into a room filled with most of my closest friends
  • My balloons were cool
  • Great food — drunken noodles, red curry and some steak stuff. Yum!
  • Getting back the same tube of Preparation-H I gave Chris for his 30th
  • Reading all the signatures on my basketball
  • Riding with Cameron, Jaime and Erin trying to find a parking space
  • Fun times at the Marathon Taverna
  • Playing pool and watching Cameron sing along with Journey (with fist-pumping)
  • Dancing with Cameron
  • Mario Kart with Jon
  • Hugging Jaime once I had processed all of it
  • Feeling like the luckiest guy on earth

Finally, about birthdays — and many of you know this about me — I’m not generally a huge fan. Mainly because I don’t think it’s super fun to have people kiss your ass on your birthday if they don’t care about you the rest of the year.

This was different, of course — it was a time to stop and appreciate relationships, and I can roll with that. This meant a lot to me — just seeing everybody there made me think about all the things we’ve done together and how crazy life has been. It was just really special, and I was totally blown away. I’ll never forget it.

And even though there’s so much I can’t even fit it all into my head, it’s really just a start. We’ve got more memories to make and more things to do. So I guess the ending to this blog post is: To be continued… 🙂

Firefox Keeps You Safe In Ways Other Browsers Don’t

Standard

You might know about some of the more glamorous Firefox 3 security features, but behind the scenes Firefox is protecting you from malicious extensions and plugins through its blocklisting service.

Depicted below is a diagram of how Firefox talks to its blocklist service. This is how it works:

  1. Every day Firefox downloads an XML document from our blocklist service.
  2. This tells Firefox if there are any malicious plugins or extensions out there.
  3. If Firefox detects any of these items on your system, it disables them so you can surf the web safely.

Flow chart for Firefox's blocklist service

What is remarkable about this is that it covers you from things Mozilla doesn’t even release. One of the things I’ve always been proud of is Mozilla’s dedication to its users, and I think this is a good illustration of how we’re finding ways to make the web better and safer. We don’t just care about Firefox, we care about you — and if you are put in a bad position because of poor security in a third-party plugin, we will be there to cover for you — on our dime.

Extension blocklisting has been available since Firefox 2, and we’ve used it in the past to blocklist extensions that cause major crashes or have security problems. Plugin blocklisting is new in Firefox 3, and this is a pretty big feature given recent security news involving plugins.

All major plugins have had arbitrary code execution issues at some point. Plugins like Quicktime or Flash have had some popular cases where hackers could execute code on your system just by having you load a corrupted Flash object or Quicktime movie. Usually vendors are pretty good about updating once these exploits are disclosed, but with Firefox 3 we’ve added plugin blocklisting so we can protect you if vendors aren’t quick enough to respond or don’t provide an easy way for you to upgrade.

Screenshot of a blocklisted item.

Mozilla doesn’t want to leave you out in the cold, and Firefox’s blocklist service is another tool we can use to look out for you.

It’s important to use this tool responsibly so we have discussed a policy for quite some time. The blocklist policy is in our public wiki, and we welcome any questions about it. Any time we consider blocklisting, we contact the vendor or author of the add-on in question to encourage a quick update and let them know we are considering blocklisting. Decisions to blocklist are made by committee to make sure we are not using this service incorrectly or blocklisting things prematurely without just cause.

To show you what the XML document looks like, here is an example of what we are currently serving:

<?xml version="1.0"?>
<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
  <emitems>
    <emitem id="fdm_ffext@freedownloadmanager.org">
      <versionrange minVersion="1.0" maxVersion="1.3.1">
        <targetapplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionrange minVersion="3.0a1" maxVersion="*"/>
        </targetapplication>
      </versionrange>
    </emitem>
  </emitems>
  <pluginitems>
    <pluginitem>
      <match name="name" exp="Yahoo Application State Plugin"/>
      <match name="description" exp="Yahoo Application State Plugin"/>
      <match name="filename" exp="npYState.dll"/>
    </pluginitem>
  </pluginitems>
</blocklist>

What this does:

  • Tells firefox to blocklist the Free Download Manager extension, versions 1.0 thru 1.3.1 for Firefox 3.0a1 and higher.
  • Tells firefox to blocklist the Yahoo Application State plugin, for all Firefox versions loading npYState.dll.

Information about the blocklist is always found on mozilla.com’s blocklist info page. To learn more about the service itself, feel free to read more about its specifications.

Overall, the blocklist service is another way Firefox is watching out for you, and even though it doesn’t get much press coverage, it’s a remarkable thing and speaks volumes about how serious we are about keeping Firefox users safe — even from stuff that wasn’t Mozilla’s fault.

Profiling PHP with Xdebug and Webgrind

Standard

Using Webgrind and Xdebug, you to tack on ?XDEBUG_PROFILE=true to any URL and view profiling information for that particular URL instantly.

One of the main criticisms of profiling PHP applications has been how difficult it is to manage different kcachegrind or wincachegrind windows — assuming you’re a pro at pointing them to your Xdebug output directory and all that good stuff. I am excited about how easy webgrind makes things because easier profiling will help prevent a lot of stupid performance mistakes (for those of us not using the Zend IDE and its sexy profiler, which is a lot of people).

Webgrind screenshot.

This is really quite simple to set up, and is best used on a dev box behind a firewall with port 80 closed. People can file surf your web server if you leave webgrind on an open port, don’t do it.

So, you’ve read the last paragraph, right? Ok, good. Let’s go.

Use pecl to install the json and xdebug packages

pecl install json
pecl install xdebug

You’ll run into a possible missing phpize issue, in which case you’d need the php-devel package for building PHP extensions.

Configure Xdebug

A simple configuration to get you what you need is below. Read the Xdebug docs if you want to get crazy.

; Enable xdebug extension module
zend_extension=xdebug.so

; Turns it off by default
xdebug.profiler_enable=0 

; Turns xdebug on when ?XDEBUG_PROFILE=true is in GET or POST
xdebug.profiler_enable_trigger=1

; Your output directory - you'll eventually point webgrind at this
xdebug.profiler_output_dir=/tmp/xdebug

If you’re not on PHP 5.2.x, you’ll also need the json extension.

; Enable json extension module
extension=json.so

Restart Apache.

Download and install webgrind

Webgrind is easy to setup, download it and follow the instructions. The main thing you’ll want to do is make sure your Xdebug directories are the same. In this case, it’s /tmp/xdebug

Load any PHP app with ?XDEBUG_PROFILE=true

Now you’ll want to hit your web server with the appropriate GET argument set up. So, you could hit localhost/helloworld?XDEBUG_PROFILE=true and it’d create a new cachgrind.out for that request.

Open up a tab with webgrind in it and enjoy

Webgrind will do a find on your Xdebug output directory and have a list of all your cachegrind.out files up on the top right. Now all you have to do is choose one. Webgrind’s use of jQuery and AJAX makes the app a great example of what you can do with JavaScript and a little motivation. Check it out.

Update: You should use “zend_extension” in your .ini file, not extension. I had a typo above, but it’s corrected.