JQuery Lightbox Plugin available on github.com

I recently needed a jQuery lightbox plugin to my Github account. I needed to add some functionality to it, so I added three options that can be set in the options hash that is sent to the lightbox() function call. They are displayed below with option name and parameter type:

  • onClose( function ) - A callback function that is called when the lightbox closes.
  • onOpen ( function ) - A callback function that is called when the lightbox opens.
  • top ( integer ) - An integer which acts as "top" on the lightbox container.

The repo is available on GitHub; any feedback or enhancements are appreciated. My next steps will include:

  • Integrating documentation from the site
  • Adding tests
  • Include a minimize mechanism in the project

I've tried contacting the owner of the original project, but I haven't heard anything. I'm going to maintain the Creative Commons license which allows sharing, as well as commercial use. 

 

Happy Thanksgiving, and enjoy!

7 ways my wireless service would get worse if I became an AT&T Wireless customer today

I'm currently a T-Mobile customer. I heard about the AT&T/T-Mobile merger, and like all the customers on the T-Mobile forums, I'm not a fan of this development. Although the press release has promised that all existing contracts would be maintained, and that T-Mobile will function as an independent company, I don't expect that to last much longer than it takes for the merger to be pushed through a compliant government regulatory agency, so I decided to think through the ways that my cell phone service would be affected if I were an AT&T wireless customer today. Here's what I came up with, offhand.

  1. I will pay more for less. My current T-Mobile plan is $70/month for 1000 minutes + unlimited text + unlimited web. The nearest compatible AT&T no Contract plan is for unlimited talk & unlimited text, but 200 MB/data for $75/month. I used 700MB last month, which is low for me, but still 3 times the cap on the AT&T plan. I don't need unlimied minutes on my phone; I need a reasonable data plan. My cell minute usage has gone down.
  2. I can no longer pay for my phone in installments. The Equipment Installment Plan allowed one to pay for their phone in 20 installments, as opposed to one lump sum, with no finance charges. 
  3. I will lose my unlimited data plan. T-Mobile has a data plan that is officially unlimited, but unofficially would throttle usage at 5GB. I pay $30/month for this service. The closest match AT&T has data wise is a $45/month 4GB data plan + tethering, which brings me to my next point.
  4. I will pay to use tethering, if it is enabled at all. With T-Mobile, I can just turn on tethering on my G2 and create a mobile hotspot when needed. This has saved me money and time in airports when I do business. If I were on AT&T, I would have to:
    1. Pay extra for a tethering plan (I'd need to pay extra anyway, just to approximate the data cap (see #3))
    2. Hope that AT&T allows tethering on the phone (but given the experience from AT&T customers trying to tether with their Samsung Captivate, I am not very hopeful)
  5. I will not be able to load third party apps onto my phone. I develop software for a living. Mobile software is a lucrative space. Without the ability to try my software out on my phone, it becomes more difficult for me to develop & test software.
  6. I will not have support if I root my phone. I got an Android phone, in part, for the ability to customize the phone, root it if need be to try out features. With AT&T, rooting my phone automatically invalidates any warranty and service. Contrast that with T-Mobile. Once, when I had the G1, I contacted customer service. The agent asked me if I had rooted my phone (which I actually hadn't). When I told him that, he responded that he had rooted his phone, he recommended that I do it, and that T-Mobile would still support the phone.  This brings me to my final point:
  7. I will have worse customer service. Both J.D. Power and Consumer Reports (subscription may be required) have rated T-Mobile above AT&T for customer service. So when things go wrong (as they may, sooner or later), I will be more likely to be dissatisfied with the outcome of my call.

So there it is, in a nutshell. To get comparable service on AT&T, I would have to pay $5/month more for a lot less data service and no tethering. Even if I could add an unlimited data plan to the no-contract plan, that would result in me paying $20/month more for less available data, worse customer service, and a more restrictive environment. To be clear, this speaks to my particular experience. Everyone who's concerned should take a look and see how their service would be impacted.

Some free marketers would say "Well, if you don't like the offerings, then change providers". The one problem with that is, with T-Mobile gone, there are no other major carriers for those who use GSM (which most of the world uses, instead of CDMA; I haven't even gone into those ramifications because I only travel outside the country sporadically, for now).

Luckily, I found this list of MVNOs on Wikipedia, and plan on asking each of those that run on T-Mobile's network how their services will be affected by the merger. If they can promise good service without contracts, I'll switch over as soon as the undesireable aspects of AT&T start seeping over into T-Mobile. I fired off an email to the customer support at Simple Mobile. Hopefully, I'll get good news. 

S3 Bucket Viewer from someone else besides Amazon

It turns out Amazon has created a nice web based app for viewing content within s3 buckets. Just go to https://s3.amazonaws.com/s3fm/index.html , enter your s3 key and id, and up pops a nice file manager interface for your buckets. Especially good for bucket owners who are not coders.

Update: Turns out this is not an Amazon based app, which brings up questions of security regarding people's S3 authentication info. I've posted something to the app makers and will update with the response.

Using debugger with Passenger

I recently (as in 9 months ago) upgraded my dev environment from using Thin to Passenger, which has been helpful in terms of having a dev environment match staging and production environments more closely. The one thing missing from the equation is the debugger. I'm a big fan of using the debugger to inspect code (for those who think they're above such things, many of the illustrious coders in Coders at Work happen to be big fans of using the debugger. I'd try telling any of those coders that they're using bad coding techniques ;)

In any case, I found a solution provided by Adam Meehan, who runs the Duck Punching blog. The specific post is here. One enhancement I used from the comments is to create a bash alias instead of using a Rake task to run 'touch'.

 

Asshole Driven Development

I came across this post this morning on Skott Berkun's home page (via @scobelizer). It's a funny post describing unhealthy development processes that almost anyone in technology has had to embrace at some point in their careers. Some of the gems include:

Asshole Driven development (ADD) – Any team where the biggest jerk makes all the big decisions is asshole driven development. All wisdom, logic or process goes out the window when Mr. Asshole is in the room, doing whatever idiotic, selfish thing he thinks is best. There may rules and processes, but Mr. A breaks them and people follow anyway.

Development By Denial (DBD) - Everybody pretends there is a method for what’s being done, and that things are going ok, when in reality, things are a mess and the process is on the floor. The worse things get, the more people depend on their denial of what’s really happening, or their isolation in their own small part of the project, to survive.

Learned Helplessness Development — in which team members have been beaten down for so long that they assume that no matter what they do, they’ll suffer because of it. It’s the result of frequent and random negative reinforcement combined with infrequent and random positive reinforcement.

Decapitated Chicken Process – A time honored micromanagement technique where each day managers identify a drastic emergency and require developers drop what they are doing (and whatever process they are using) and immediately attend to the latest conflagration. Since this does the double duty of creating new bugs and making other tasks fall behind, fires become easier and easier for managers to spot and then freak out about. Practically a standard in the games industry.

FUD Development (FUDD) – implementing the feature the right way is huge and scary and bad in every way imaginable, therefore this other way is good and we started working on it while you were at lunch.

If someone started  this post in 2009 as opposed  to 2007, it might be a trending topic.

Check the post (and comments) for the full list, but some of these definitely brought a reuful grin to my face as I looked back in time.

My Life-Work Balance

I recently came by a post by DHH, the inventor of Rails titled Step One Is Admitting You Have A Problem. This is a rebuttal to a post by a Jason Cohen, maker of a code review tool named Code Collaborator. In this post, Jason finds examples of people who manage to create a work-life balance, but then follows up with an argument that basically says "but most people don't to it that way". The knowledge that he seems to want people to take away is highlighted in bold on his post:

How much time does a bootstrapped company take? All of it.

It takes obsession to make a little company go.

Every successful bootstrapper I know puts work before self.

I've run into other people in the business with similar ideas. I've had a knowledgeable friend in the tech industry once tell me that "there is no four hour work week" and if I wanted to make a company work, it would take lots of long, hard work in order to get things done properly. The implicit impression I'd have to sacrifice my life in order to get a company off the ground, or be successful.

It's not the first time I'd heard that line of reasoning. I've come across it many times as a result of working in the tech industry for 14 years. It has influenced how I've chosen to work over the years. It's also resulted in a bit of cognitive dissonance on my part, in addition to significant amount of stress. In fact, a sentence from DHH's post describing Jason could also apply to me: "He talks the talk of reason and but walks the walk of an addict".

I've ranted about "working smarter, not harder" in the office. I've directed people to sites like Zen Habits and the Four Hour Work Week when they're too stressed about their workload and I'm in a relatively peaceful place.

At the same time, I've also bragged about "not needing to sleep much". I generally sleep between five and seven hours per night, only crossing that 8 hour per night threshold when my day is full of exercise (rollerblading 8 miles to work, or dancing for 4 hours). I've worked 16 hour days for weeks at a time, both in startups and in Fortune 500 companies. I like the idea of taking on difficult challenges and coming away with a "victory". I've been happy to receive the nods and pats on the back for "a job well done" when I worked myself to the bone. I've drank enough of the industry Kool-Aid to recognize that I am an addict. I also recognize that I need to change that behavior. I mean, I'm writing this blog entry at 5:00 AM after sleeping 4 hours after working an 11 hour day. Really.

Well, here is where I admit that I have a problem, just as Adam Milligan did in his blog entry, Programmers Anonymous. I have put my work before my life. Many people in this country do, which is one reason the topic is usually raised as Work-Life Balance. I've internalized this promulgated meme that dictates that a certain level and amount of work is "necessary" in order to succeed (Jason Cohen won't be the first or last to spread it).

The good news is, that with any meme, I as a fully functioning human adult being have the right to analyze, criticize and rebut it if it does not agree with the desired path for my life. I do not need to blindly accept any tenets placed before me. So, I'm deciding to put my life first. I'm going to have a "Life-Work" balance, because my life is more important than my work. Work is still important, so if I work with you, do not take this as an intent to slack off, or not take care of responsibilities, or do bad work.

I just choose to put my life first.This will, incidentally, probably result in better work.

Now, back to bed to catch some sleep.