Not sure what a BOF is? Jason Dean has a great description on his blog. And since this BOF would really be a micro-hackathon, I'll add this: They're scheduled to be after dinner, so you'll be well fed and happy, possibly a little inebriated if that's your thing. The plan is: gather, talk about which tags we're most interested in writing, and simply sit down and code them up... in the company of your fellow community members. That's it. That's what a Hackathon is. At the end of the night, or whenever you're finished, you can submit a pull request to the project on GitHub, and I will be forever in your debt. (Maybe not forever. I couldn't do that for certain people... like Jason Dean.)
So if you've ever thought that you might want to contribute a tag or two, but you don't know the first thing about Git, this is a good opportunity. We can either give you a crash course in just enough git to participate, or just set it up for you. Either way, we'll try to make it as low-friction as possible and get out of your way so you can make script happen!
But of course, this is predicated on the BOF being selected. Please go to the CFObjective site (you'll have to login with your twitter account) and vote for this BOF (and any others you find interesting); and hey, if the urge strikes you, submit one of your own!
I'll be presenting an early sneak peak at one of my two cf.Objective 2012 presentations at my local CFUG on April 12th. The title of the presentation is, "Hidden Gems in Browser Tools" (Hopefully Charlie doesn't mind my borrowing the concept), and the idea is to show off lots of little features of Firebug, Chrome Developer Tools, etc, that most people don't realize are available to them, and a few tricks to become just a little bit more productive.
If you're in the area, and you want to get some tips that will help you be more productive at debugging JavaScript and CSS in Chrome, Firefox, and Internet Explorer (even Safari & Opera get a few mentions), I would encourage you to attend.
You can get all of the meeting details on the Philly CFUG website, and if you're planning to attend, please RSVP so that we can get an accurate head-count for food.
With IIS7, Microsoft has finally baked URL Rewriting into the core. Actually, that's a lie -- one I believed to be true until I tried to use it myself, in fact -- but at least the extra install is provided by Microsoft, so most development shops and hosting providers can be persuaded into installing it.
For me, it wasn't plainly obvious how to use it; and finding the details required more digging than I would have if I were using Apache and mod_rewrite, so It thought I would share what I found.
First, you obviously need to be running IIS7 and a modern version of the .Net framework. Then, you need to install the plugin that handles the rewriting. Make sure you get the right version -- there's one for x86 and one for x64.
Next add a web.config file to your application. In the case of Mango Blog, that would either be the folder that contains it, or the web root. I haven't tested it exhaustively, but it should work in a sub-folder.
If you didn't already have a web.config file, this is all you need. If you already had one, just copy in the relevant sections.
You can customize the URLs a bit to your liking, just be sure to update the setting table in your Mango database so that it generates links that will match your rewrite rules.
While I'm always pushing myself to try new things and find ways to be more productive, over time I've developed a sort of "home base" for the tools that I use to get my work done. I thought I would start by describing what that home base is:
ColdFusion Builder 2
Chrome & FireFox (latest stable builds) and their respective developer tools
Samsung Galaxy Tab 10.1"
Android Smartphone (currently a Motorola DroidX)
LESS CSS
jQuery
Bootstrap (most especially for the responsive css grids)
And yes, while the last three are technically "frameworks", I consider them an indispensable part of my tool belt. It is the exception, not the rule, when I find myself starting a green-field project and NOT using one of them.
For months now I've been a true believer in at least "always mobile" if not "mobile first". The percentage of consumption being done on phones and tablets is already astonishing and still on an upward trend, so if your websites aren't optimized for mobile screens you're already at a disadvantage. So I test everything that I work on with both my tablet and my phone.
If you don't have a tablet I would recommend you get one, if only for this purpose. They can be pricey, so if you're on a limited budget my advice would be to keep your eye on Woot -- they seem to have tablets on sale at least 2-3 times a month. Subscribe to the daily email and watch for a deal on the tablet you want. I got mine at a really nice discount, and it's been worth every penny, even if just for testing purposes. The fact that my kids and I then have it to play with in leisure time is all bonus.
And of course whatever toolkit I'm using has to have good support for ColdFusion. Not just syntax highlighting, but real productivity features.
I spent some time trying to use TextMate as my primary IDE (during my time also learning Ruby on Rails for a few projects at Wharton), but constantly found myself hitting Alt+⬆/Alt+⬇ to move lines up/down, or hitting the CFB keyboard shortcuts and then frustratingly typing out things like <!--- ---> and <cfdump var="##" />... As tiny and insignificant as these types of shortcuts are, if you use them 100 times in a day, you're going to miss them when they're gone. And this doesn't even account for things like code insight and CFB Extensions. Neither of these is a constant fixture in my process, but when they do pop up, I'm incredibly thankful for them.
So what's inspired me to write this post? Three new (to me) things:
I've been using LESS ever since I saw Nathan Strutz demo it at MAX 2011. That does not make me an early adopter. I consider myself late to this party. Lucky for me, the party is still raging on at 3am. And it's a damn fine party.
But, because I'm lazy, I was taking the lazy route. I would directly include my .less files in-page, and the less JavaScript library, and it would be converted on the fly. This way I didn't have to add any steps to my development process to compile LESS to CSS for testing. Granted, it seemed fast as hell, but even fast as hell is greater than zero milliseconds, and in this game every millisecond counts.
This week I stumbled on Less.app, which is an OSX application (There's a Cross-platform port using AIR, but the native one's better looking on OSX) that you leave running in the background, and it auto-compiles your .less files into css, optionally minifying in the process, instantly when you save a change to a .less file. Practically, this means that I write LESS code, and by the time I Cmd+Tab over to Chrome and refresh the page, the css file has been updated with my changes.
And even better? On the off chance that I make a syntax error, like forgetting a closing } brace, Less.app immediately alerts me to that fact. (The messaging could be clearer, but once I figured out what was going on, it started being easy to spot my mistakes.)
Sublime Text 2
I totally get why some people don't dig Sublime. It's definitely not for everyone, and to be honest I'm still not 100% sold on it. But it definitely has some features that I'm growing used to and will be adding as feature requests for CFBuilder. I've been using it off and on for a month or two, and then last week I decided to try and use it as my only IDE. I survived, but I think ultimately I'll end up with CFBuilder keeping the top spot in my tool belt. If I just need to edit 1 or 2 files, and I know I won't need the more advanced features of builder, then I'll use Sublime for its lightning fast startup and file-loading times.
In particular, my favorite sublime feature is Cmd+D. Highlight a variable and press this key combo. Each time you press it, Sublime highlights the next occurrence of the same word... but the trick is that it doesn't un-highlight any as it goes. It uses multiple-selection, so after you've selected each of these occurrences, just start typing and you'll replace them all at once. I don't know exactly why I like this better than a search/replace. Maybe it's that I get to see each instance as I add it to the collection. But it just feels so much more natural.
Adobe Shadow
Shadow is a great little tool that was just released last Wednesday. It's actually not entirely new technology. It's based on an existing project that accomplishes the same thing, but the difference is that Shadow is easy to setup and use, where the original project (Weinre, which stands for Web Inspector Remote, and is pronounced "winery" (or "wiener"? who knows...)) was complicated and difficult to get running, or so I'm told. Right now it's what's called an "MVP", or Minimum Viable Product. This means that Adobe has lots of ideas and plans for where they could take this, but right now its features are limited to just enough to get the point across and make an impression. The limitation is that currently it only watches for URL changes and follows them. You can't submit forms/etc. But it has made an impression on me!
There are 3 components to Shadow: A desktop app, a Chrome extension, and a native app that you install on your (iOS and Android) phones and tablets. You turn them all on and enter a couple of numeric passcodes to connect the devices to the desktop, and from then on, the devices open whatever web address you have open in Chrome. They... shadow... you. Get it? Not only that, but you can do what's called Remote Debugging. If you're familiar with Chrome Dev Tools, which allow you to tweak the HTML, CSS, and JavaScript of a live page and see the effect -- that's what remote debugging is. Except you're doing it directly on the selected device, from your computer. I can pretty much say, this is the best thing to happen to front-end web development since CSS.
It's interesting to note that for the most part my tool belt isn't changing, I'm just adding to it. Sublime isn't really replacing my CFBuilder usage, but rather complementing it in a few cases where I would have previously used Notepad++ or something along that line.
UPDATE: It's come to my attention that Invisible Children, the organization that created the film below and that organizes this whole movement against Joseph Kony, is perhaps not as innocent and well run as we might like to believe. This is not to say that the man is not evil, or that he should not be removed from power, but just that funneling money and support through Invisible Children may not be the best way to do it. Grant Oyston, author of VisibleChildren.tumblr.com, has done much more research and explained it much more thoroughly than myself. Please read his post here, and I encourage you to think critically. Don't take his word for it either -- but do take his account into consideration and think for yourself.
I'm uncertain of exactly where I stand on Invisible Children for now, but that uncertainty is enough for me to temporarily withdraw my support for the Kony 2012 movement. At a minimum, though, they've done some good because of the sheer number of people like myself that are just now finding out about Kony. Hopefully this will garner some more mainstream media coverage and the general public can be informed of the whole story, not just a (really good) filmmaker's (biased) account.
I go to great lengths not to get political on this blog, but I feel that this issue transcends politics. This is basic human rights.
Watch this video. It's a half hour long, but it's important. A man has been kidnapping children, forcing them to kill their own parents and fight in his army, and if you can imagine it, much more despicable things -- and not even for a cause, but just to keep his power. And he's been doing it for almost 30 years.
Watching him explain the situation to his son really drives home how awful the situation is. I can't believe we live in a world that has let this go on for so long. I'm embarrassed for us, and I hope future generations will forgive us.
Please, if you can, donate a few dollars and help spread the word.