An inside look at the new GOP.com

Filed under: PHP, Web/Tech | No Comments »

The new pretty much been a disaster. This project started poorly and never caught up. In any event, here’s a look at the technology behind the site.

Hosting

Hosting is through a firm called Airnet that operates hosting services its SMARTTech brand. If you haven’t heard of them, you aren’t the only one. They host only a few thousand domains and primarily serve GOP political interests (most famously the gwb43.com email server). The site is hosted on Windows, using IIS 7 and PHP 5.2.11. Curiously they didn’t spring for the dedicated IP address, GOP.com is sharing an IP with domains like georgebush.com and the venerable flippercam.com.

CMS

ExpressionEngine is the content management system. This is easily confirmed by the presence of a text file you typically delete before launching a site (in case it’s deleted, it says “Welcome to ExpressionEngine!”. Looking for files like this is a great way to see how a site works—WordPress can often be confirmed along with its version number by looking for readme.html on the root level).

ExpressionEngine is a fine CMS and is in use for other political sites on both sides of the aisle. The performance issues were more likely due to poor planning than anything with ExpressionEngine. One example of said poor planning is the Expires header sent is set 12 years in the past.

Libraries / Tools

There’s lots of social media API integration which is pretty typical these days. Facebook loads JS on every page load for example. SWFObject is used throughout. The main Javascript library used is MooTools and MooTools More, which are embedded in a single JS file that also does the other sitewide scripting.

Shadowbox.js is also embedded in that file though without any attribution.

Speed

Speed is being kind, the site is dog slow. For good reason too, all the previously mentioned social media integration makes for a huge number of requests. I just loaded the home page and Firebug says: 194 requests, 2.02MB and an amazing 83 seconds for full completion. Compare this to Democrats.org which has 69 requests, 900KB and loads in under 4 seconds (not a speed demon in its own right, but not insane).

No CDN is used and far in the future expires headers aren’t used for navigational elements.

Safari using HTML 5 for MP3s

Filed under: Apple | No Comments »

I just noticed that the latest Safari (at least on Snow Leopard) is loading MP3 files natively through HTML5. When you go directly to an MP3 file it shows a player widget that I hadn’t seen before and if you inspect the element it contains the new <video> tag. Pretty neat!

It would have been great if the widget included a download option (even Save is disabled), but option-clicking on the link works well enough.

Snow Leopard HTML 5 and Safari

Christopher Kimball on the Internet, Gourmet

Filed under: Food | No Comments »

Chris Kimball memorialized Gourmet in a NY Times op-ed and had a striking point towards the end:

Google “broccoli casserole” and make the first recipe you find. I guarantee it will be disappointing. The world needs fewer opinions and more thoughtful expertise — the kind that comes from real experience, the hard-won blood-on-the-floor kind. I like my reporters, my pilots, my pundits, my doctors, my teachers and my cooking instructors to have graduated from the school of hard knocks.

He’s right. Not that Gourmet was the only publication who could publish a good recipe, but in the age of everyone being an expert quality has suffered. The first hit for broccoli casserole includes brozen broccoli, canned soup, a pound of cheese and a package of Ritz crackers. No thanks.

I subscribe to Kimball’s wonderful Cook’s Illustrated website and you should too.

Work for free. Serious candidates only.

Filed under: Rant | No Comments »

As seen on Craigslist:

Seeking iPhone Application Developer ASAP. Project details will be provided upon acceptance. MUST be willing to sign a Non-Disclosure contract as this is a SERIOUS project. Payment will be deferred as percentage of profits as this will be an on-going project. Please reply with relevant experience, credits, and contact information. Please not that we are NOT accepting bids at this time as we are looking for a long-term developer.

It’s refreshing to see a project that is so SERIOUS that they are unwilling to pay for labor. At least it’s an ongoing project, because free work doesn’t come around often.

Update: Another gem from later in the day. I’d love to see who replies to these sort of things… Full text with emphasis added:

I am a senior in college looking for a great web programmer with amazing vision. I need ONLY PEOPLE IN THE TAMPA BAY AREA! This project requires regular meetings and so you would need to be in the vicinity. I have an amazing idea for a website and I am offering NO PAY but PART OWNERSHIP of the site in return for your work, which if it is a success can be lucrative. Think facebook or myspace value. If you are someone that has the drive and patience to build this site, please contact me. I need someone with experience in PHP and database programming. I will do the advertising explain my concept to you provided you sign a non-disclosure form and we will go from there. This site can be done in a month tops with hard work…Facebook was built in a week for crying out loud.

So, if you have ever wanted to start something of your own this is the time. Nothing ventured, Nothing gained.

PHP class to write CSV files

Filed under: PHP, Web/Tech | No Comments »

After coming across invalid CSV export files from QuickPayPro I did a bit of searching and found that PHP surprisingly does not have a function to output CSV to the browser. PHP has a function for everything, I would have lost money on this bet. PHP 5 introduced fputcsv() which outputs CSV data to a file, but there’s no support for simply outputting to the browser. Additionally fputcsv() is weak and requires you to wrap your values with quotes yourself.

As this comes up from time to time and I’m sure not just for me, I put together a class that solves both of these problems. I may update it one day to add support for writing to files, but for now it’s just to send CSV data right to the browser. There’s an optional method to make the data an attachment with a custom name. Usage is a piece of cake, especially if your data is already organized in an array of associative arrays:

$data = array(array("one","two","three"), array(4,5,6));
$csv = new CSV_Writer($data);
$csv->headers('test');
$csv->output();

The client will be prompted to download a file called “test.csv” that has properly escaped CSV data. The full class is below.
(more…)

The most uninstalled applications

Filed under: Web/Tech | No Comments »

With help from Google Suggestions, here are the most uninstalled applications. I would have guessed many of these, but there are some surprises (Firefox?!).

  1. Internet Explorer 8
  2. Internet Explorer 7
  3. Personal Antivirus (this is what’s behind those fake “you’re computer is infected” popups and is extortion-malware)
  4. McAfee
  5. Yahoo! Toolbar
  6. Norton
  7. iTunes
  8. Windows Live Messenger
  9. FireFox
  10. Flash Player

I have kept track of internet trends before–most recently to find that the most popular question was “What is Twitter?”.

Uninstalling PDF Services (AKA Yojimbo, Evernote, Paperless and Journler)

Filed under: Apple | 3 Comments »

I recently went through and tried lots of Getting Things Done type applications and after deleting the losers noticed I still had options to Print to PDF to these now deleted apps. It’s a great feature if you’re using the app, but has zero use after the app is gone. Mac apps are pretty good about being able to get rid of by dumping the .app package, but not perfect. A little investigating gave the answer–these are called PDF Services and are easily deletable. Simply check your user library for a folder called PDF Services (~/Library/PDF Services) and delete the offenders. I dumped “Save PDF to Journler” and the rest and all was well:

Before:

PDF Services before deleting

After:

PDF Services after deleting

QuickPayPro is awful

Filed under: Rant | 2 Comments »

A new day, a new amazing awful eCommerce CRM known as QuickPayPro. I was tasked with moving customer data out of QuickPayPro for general awfulness and was pleasantly surprised with a very visible “export” feature. Easy I thought.

My first hint that this was going to suck was the form to select date bounds for export data…

QuickPayPro export sucks

Exactly what I wanted–two ways to choose 2009 and an ability to export data from the future! No sorting to boot.

QuickPayPro’s actual export data is a simple CSV format which would be great, but they break one of only a handful of real rules in CSV files–escaping data with contained commas (all it takes is wrapping it in quotes). Address is just one field in their sytem, so for all the records that have something like “123 Main St, Suite X” the contained comma starts a new column and that record will be one column longer than the rest. Bush league.

To top it all off, the export file is riddled with duplicates. The web interface shows X contacts and the export file contains 2X. Joy.

What a load. If you want to move your business off of QuickPayPro let me know. If they can’t master the very basics of CSV they shouldn’t be handling your revenue.

George Sodini’s deranged suicide journal

Filed under: News | No Comments »

George Sodini plotted a suicide rampage for nearly a year and unfortunately carried out his plan yesterday. Sodini was a .NET programmer by trade and according to his writings was a very lonely man who felt anger because women didn’t want to have sex with him (he hadn’t gotten laid since 1990–one hell of a drought). He documented his rage and posted it hidden on his website, to read the page you needed to know the date of his death. The last posting in his suicide journal was the day before his massacre.

His website has been taken down thanks to a surge in requests (despite being around since 2000, his website had no incoming links and was hosted on a shared account). What he did was inexcusable, but what he wrote is still worth reading. I have archived his journal in its original form (I saved the HTML file when I first accessed it as these things have a way of disappearing).

There’s an included comment on the page that is especially depressing:

At the gym I saw a woman I like. I see her at the park and ride sometimes, so she isn’t a stranger. Occationaly she makes good eye contact and smiles, etc. She is maybe 40ish, and attractive to me. I made brief conversation to her and a younger woman she was with today. To get a friend like her (and for night time action) I would cancel this plan, or put on hold, at least for a while.

If you’re suicidal please talk to someone, no matter what you think there are people out there that will listen.

Good luck with that Associated Press

Filed under: funny | No Comments »

Hard to believe the suits at the Associated Press don’t have a competent web developer they can bounce questions off of. Their big new idea is impossible and laughably misguided:

Each article — and, in the future, each picture and video — would go out with what The A.P. called a digital “wrapper,” data invisible to the ordinary consumer that is intended, among other things, to maximize its ranking in Internet searches. The software would also send signals back to The A.P., letting it track use of the article across the Web.

They will apparently attempt to use this vaporware to send invoices to search engines and bloggers for using their headlines. Good luck with that boys. I wonder how much they spent developing this solution.

« Previous PageNext Page »