While I was at the Velocity conference in San Jose, I spent daily time in the very well equipped gym at the Fairmont Hotel (at the urging of the ultra fit Mike Brunt). In a few short days of daily regular exercise, I could feel the difference. Returning back to Raleigh-Durham, I thought I'd go get a Gym membership and make regular workouts part of my daily life.
I decided one reason I was a faithful attender of the hotel gym was its proximity to my room. I could be in the gym in 2 minutes, so I figured whatever gym I chose back home should have reasonable proximity to my house. Luckily, there were two well equipped gyms within a 3 mile radius. I set out to visit each.
Between the two gyms, there was no real difference. One was 1 mile from the house, but older. The other was 3 miles from the house but newer. In the end, I could have cared less which. Both would work.
The sticking point came to the contract. A Gym contract is a lot like a cell phone contract or like buying a used car. For some reason a gym really really wants you to sign a year long contract, with checking account auto-draft and littered with all sorts of strange clauses compounding the difficulty in fulfilling the terms of the contract. For example, auto-draft. I'd rather not pass over my checking account information to a gym so they can take money out whenever they want. I use credit cards because there is liability protection. A checking account is real money! Secondly, there was a proximity clause stating I could cancel the contract if I moved 30 miles from the gym. The proximity clause was the deal-breaker.
Proximity Clause, you ask?
In the contract is clause stating you can get out of your contract if you move 30 miles from the gym. Frankly, Shannon and I have been actively looking for houses since February and there is a fair percentage we'll actually find something we like and want to live in. This process could take a few more months, or might not happen at all (I hear the economy sucks). I've not wanted to use the 'we are house shopping' as Yet Another Reason To Avoid Going To The Gym, but the fact of the matter is, moving is on the table and our target area is about 20 miles away.
Should we end up moving, we'd be expected to still attend the gym (or at least, keep paying for it). Frankly, I'm very uninterested in driving 20 miles in the wrong direction through traffic for a gym. So what do I do? They did offer me a 'month to month' membership for 3 times the cost, but my health really isn't worth 90$ monthly, now is it? So I'm stuck. Is this a normal gym membership experience? Do I have options?
I am on a lot of mailing lists. "How many?" You ask? I'm on 27 mailing lists as of right now. Most are low traffic so I can quickly scan the headlines and decide whether to read or remove. Some mailing lists are higher traffic and prone to extremely long (100 message) threads. These threads are rarely useful to me mostly because this exceptionally long thread count is pretty much only reached when 2 strong, anti-social personalities engage in a meaningless form of combat called Message of Attrition. Message of Attrition is like the arm-punch game you played as a kid. You know, the one where you punch someone in the arm, then they punch you in the arm. The cycle continues until one person realizes the sheer stupidity of the exercise and quits. The quitter walks away feeling intellectually superior. The 'winner' walks away feeling physically superior.
Is this the first you've heard of Message of Attrition? Can't say I blame you, I made up the term a few moments ago, mostly because I had a sentence that needed a clever ending.
So anyways, I used to get really annoyed by these long pointless message exchanges, mostly because I'm afflicted by a form of neurosis called InboxMustBeAtZeroitis. This condition affects countless numbers of our society and causes them to occasionally trigger a compulsion to unread/delete/read all email the second it comes in. We're doing a fund raiser right now to help those poor souls with the condition. To donate, please hold your credit card up to the screen...
Thankfully, the GMail folks have provides a calming balm for InboxMustBeAtZeroitis in the form of Mute. Have you ever wished your remote control worked in real life? Have you fantasized at pointing your remote control at a stubborn red light when no one is using the green side? If so, then Mute is for you. Here's how it works:
- Simply open a message (or use the checkboxes to select several messages)
- Drop down the More Actions control
- Select Mute
- Say "serenity now" three times, and feel the calming peace return to your body...
There, wasn't that easy?
Douglas Knudsen is talking about Drag and Drop in Flex tonight on the Flex Meetup. If you are a Flex developer or want to learn about Flex development you should go watch his presentation.
You might remember Douglas from our interview on the CFConversations Podcast where Douglas shared lots of good information about how to hook up ColdFusion to Flex. He is an interesting guy, excellent presenter and really knows his stuff!
See you there!
Planning for the NC ColdFusion conference is in high gear. We got excellent feedback on the conference dates/details from both speakers and from attendees. Most importantly, we realized our proposed date accidentally collided with the BFusion/BFlex conference. The Bfusion/BFlex conference is our inspiration for the NC conference. Bob Flynn, conference organizer, and others, have been very supportive of the NC Conference and we want to show our respect by not scheduling on the same day as them. Thus, after much discussion, consultation of calendars and the like, the new proposed schedule is Oct. 17-18th.
If we can make Oct. 17-18th work for the community, then we'll move ahead with that. Our next chance would be to do something in the Spring. (Or raise the price and do it in the Bahamas in winter :) )
The other option on the table is whether to provide a second day of training on the Adobe Flex framework. We propose a 6 hour Bring Your Own Laptop session targeted at beginner level Hands On Flex training. If you have some programming experience and want a hand making your first (or second) Flex application, this is for you. We're looking for responses from the community of whether or not this is interesting.
So if you are considering attending/speaking, please let us know how you feel on the following:
- Does Oct. 17th - 18th work for your schedule?
- Are you interested in attending/speaking/teacher assisting the Oct. 18th 6 hour Bring Your Own Laptop session targeted at beginner level Hands On Flex training?
- Are you interested in more ColdFusion sessions on Oct 18th instead of Flex training?
Thanks for sharing your opinions and helping us tune this conference for the good of the community.
North Carolina Conference?
Hi Folks, we've been working pretty hard to line up a good ColdFusion conference for North Carolina and the surrounding areas. The original idea was to have a 1 day conference with 6 sessions and a lunch. All this for 50$.
Tell me more...
Thanks to some generous sponsors, we may even be able to drop the price a little, offer a conference T-Shirt and let the State employees attend for free, since they work so hard to keep this state going.
Where/When would the conference be held?
We propose to hold the conference in Raleigh, North Carolina on Oct 24th. We'd like to get an idea of the number of attendees and the number of interested speakers for this date/location combination.
If you are interested, please leave a comment below and let us know whether you are interested in any of the following:
- State Employee
Thanks for reading and thanks to all the people who have helped us get this far in planning. We appreciate the support!
Kunal Saini, an Adobe employee, recently posted an article on Adobe Developer Connection about Performance tuning for ColdFusion applications. This is a well written article full of useful tips and practices and should be a must read on the topic.
I will raise a counter point to one of the minor tips Kunal raised. He says:
compare() and compareNoCase()
Use compare() or compareNoCase() instead of the is not operator to compare two items. They are a bit faster.
I trust Kunal has insider knowledge about the implementations of these two compare functions, because I fail to see how a straight evaluation (<cfif dan IS 1337>) can be slower than a function call ( compare(dan, 1337) IS 0 ). Maybe it has to do with the type inference and type conversion ColdFusion does as a dynamically typed language, maybe it is something else. Regardless I avoid using compare() and compareNoCase() because both functions reduce the readability of the code.
Whereas all boolean comparisons in ColdFusion treat 1 as true and 0 as false, the compare and compareNoCase functions return 0 if the comparison is true. This means compare( 1, 1) will return 0, which doesn't follow the boolean rules. Since this does not follow the rules, code using compare and compareNoCase is harder to read, harder to follow, and generally uglier than straight comparisons.
So Kunal, I don't take anything away from your statements and I appreciate you writing the article. I want to point out that software isn't all about micro-performance, it is also about long-term maintainability. Always write your code to be readable by others.
Of course, if you happen to write the next Facebook and you need to squeeze every possible fraction of a millisecond out of a routine, then throw this advice right out the window. But then again, you'd have already tuned every single query permutation, added a clustered caching layer, offloaded your static files to a Content Delivery Network and clustered your infrastructure Horizontally and Vertically, haven't you?
I'm using the power of the pen to located a flash designer that can help me fulfill a quirky task. See, I'm no flash designer. Not at all. I do need one to make a SWF for me, the details of which are a little odd.
We need a picture of an animated, stylized monkey in a resizable window no smaller than 100x100 and needing to scale to 500x500.
The cursor, when hovered on the SWF, should appear as a boxing glove and when the mouse button is clicked, should punch the monkey in the face from whatever logical angle relative to the mouse cursor position and the monkey. The monkey should react as appropriate, meaning if punched from the left, the monkey should absorb the blow and move to the right.
I do want to stress the animated nature of this monkey and of the interactions. We aren't looking for realism, rather sophmoric humor.
Bonus points if the monkey takes on visual damage like a black eye, bloody nose or other results of cursor violence.
This gig does pay a fee to the designer and is of low budget, ideally suited for someone who thinks this might be a fun project (or who hates monkeys). Please send me your initial thoughts with a price range and some samples.
Note: No monkeys were harmed in the making of this post
I live and die by bluetooth headsets. Holding the phone up to my ear during a long conversation is as annoying as being covered in sugar water and buried in a Fire Ant hill. I'm just not very happy doing it.
I loved the Aliph Jawbone Headset. Apart from some issues with the charger, that was the most perfect headset ever invented. The Aliph Jawbone 2 was demonstrably worse in all ways, including call quality. I've been on the hunt for a new headset ever since.
Today I found the Plantronics Voyager Pro and am ordering it right now. Rather than bore you with the details of how the Plantronics Voyager Pro deals with a barrage of noise, a cacophony of wind and other call quality reducers, I'll leave it to you to watch this simple video demonstration of the Plantronics Voyager Pro Bluetooth Headset.
It seems Best Buy is the exclusive source right now. Amazon shows a month back order. I'm going to get mine from Best Buy today. If there is enough interest from the readers of this blog, I'll post periodic reviews of the Plantronics Voyager Pro Bluetooth Headset. Whaddya say? Do you guys/girls care about what I think of this product?
I write from time to time on code quality and structure because it is a topic of interest to me. Clean code and well named logical structures, methods and objects really pay off during the infinitely long Support And Maintenance phase of software development.
Some could accuse me of having too many opinions on the topic, and I'd guess they could be on to something. Heck, I'll probably disagree with something I've said today, tomorrow, just because I'm always refining and learning.
While some of what I think/advocate/do is opinions, and could be subjective, I'd like to share some code I found on a project today and talk about the importance of method names.
A method should describe it's intent or behavior at the level of where it is inside the program. For example, a method named load() might be sufficiently descriptive to represent the behavior and be flexible enough to withstand a refactor or two. In other places in the program, perhaps the right method name is loadShippedOrders() since there will always be the concept of a shipped order in our proverbial system.
You get the point, right? There is a wide range of OK-ness for method names, with behavioral descriptiveness and refactorability as being two made up words that really judge the method name quality.
I found code today that really flies in the face of any of these principles. The names of these methods do not in any way describe any behavior of any system I've ever written, nor will probably be lucky enough to write.
method bodies removed to protect client interests
Be the Judge Yourself:
<cffunction name="phoneHome" output="yes">
Before you ask, this code was found in a production eCommerce system that is currently running that has nothing to do with Phasers, Energization nor beaming anything to any location.
I was emailing back and forth with a very smart group of people this morning and had a thought that seemed worth repeating. ColdFusion is the most elegant language to express business solutions.
Need charts for your dashboard? No problem.
Want to export a report to PDF? No problem.
Want to intake data via PDF forms and generate Presentations with the data? No problem.
Want to write a Flex application that adds meetings to Microsoft Exchange servers? No problem.
ColdFusion is often lumped in with PHP and other general web scripting languages, and it can certainly fit there. However, the ColdFusion team over the years has worked very hard to put useful, relevant functionality for business applications. As a result, ColdFusion is the most elegant expression of business solutions on the market today!