Jul 27

using UltraVNC Single-Click. This is clearly the coolest invention to come from the web since the Hamster Dance back in ’99. Basically if you’re running Windows and you need tech support from me, I point you to an executable on my site and it gives me VNC control over your system. What this means is no more 30min tech support sessions with relatives walking them through the process of troubleshooting a faulty device driver or some other obscure problem over the phone (“what do you see now?”). No matter what computer they’re working on you send them to a URL and take control of their system remotely and let them watch how you fix it. And if you want to take it a step further and preserve the solution as a movie so they can reference it later, use this cross-platform VNC2SWF screen recorder (like camtasia only for a VNC session). Single-Click VNC works just like regular VNC only with some additional benefits:

  1. No software to install on the recipient’s machine
  2. They run an executable which they can close down at anytime and it removes itself when the session ends
  3. It works through every firewall I’ve tested so far
  4. It works on computers that are running behind a NAT router
  5. It makes you look slick because you can private-label the launch screen and make it seem like a proprietary helpdesk technology you developed

Just like UltraVNC, it’s free, supports 128-bit encryption and now it allows direct file transfer. It was fairly easy to setup, the only requirements are that you have a static IP on which to install the listener (and actually, you could still run Dynamic DNS from a dynamic IP and it should work). Follow the instructions on their setup page. Basically, you’ll modify a config file, add your custom logos, generate a shared key and then zip/upload the files to this cgi script that then creates a custom exe for you which you can host, email or distribute however you like. I did encounter one gotcha that took some digging to figure out. For whatever reason they just don’t explain in the setup instructions that when adding the files to the zip that enable encryption in your exe, you need to rename MSRC4Plugin_NoReg.dsm file to MSRC4Plugin.dsm. This forum post explains the process clearly. Once I cleared that hurdle, I found this program works and it’s fast with no noticeable latency over residential broadband and I did sniff the packets with Ethereal and verified that they are in fact encrypted. The way I do my setup is to run the listener from my dedicated server and RDP into that and control other machines from there.

I had setup regular VNC in the past on my brother’s computer and used it to remote into his machine but it only worked on his personal computer, wouldn’t work through a firewall because I was initiating the connection and he had to learn how to start windows services. This solves all of that for him and the rest of my relatives that call me for support.

On a completely unrelated note, I’m finally into using Subversion for source control and I LIKE it. I successfully ported my blog code over to the latest release of Camden’s BlogCFC. It took a few hours because I’ve tweaked things and applied the aura skin but the whole process went smoothly. I’ll be versioning all my projects from now on. The next step is to setup OpenSSH on my server and then integrate my Tortoise SVN client w/ Putty to tunnel the connection to the repository. I’m setting this all up in anticipation of a surprise venture that is launching soon for developers called Grid 7. Stay tuned…

© 2005 Lights Out Production – All Rights Reserved Worldwide

Jul 12

Sounds like the final CS Lewis Narnia Chronicle… it’s the most cliched phrase in corporate america today. I refuse to even write it and I cringe every time I hear it come up in speech- “think outside the b*x!” It’s the flagship phrase on the armada of corporate crap-speak, but do you know the etymology of this phrase? It was coined by Mike Vance in 1995 in his book “Think Out of the box” (coincidently his son, John Vance was fraternity brothers w/ my brother at Santa Clara). The whole notion stems from this puzzle where you are supposed to try and connect a grid of dots with a series of four pen strokes without lifting your pen from the page. Most people get 8 of 9 dots connected but struggle with connecting that last dot because they are focused on “coloring within the lines” of the grid. The solution comes when you are able to realize that the page is larger than the grid and you can overstep the boundaries of the grid. The solution may be common knowledge to everyone now but I want to give my own take on this whole “boundary-less thinking” as it relates to programming and more generically, problem solving. I will illustrate with a brief story from my high school days.

Abe Lincoln once made the statement to the effect of “If I had eight hours to fell a tree, I would spend seven of them sharpening the axe.” With the advent of chainsaws, it’s rare that people now have the occasion to actually chop down a tree by hitting it with a sharp piece of metal. While Abe’s words of wisdom are still very relevant and powerful, until you’ve actually had to try and hack down a tree with an axe, you just don’t get the same visceral identification with his words. Back in the summer of ’93 shortly after my 18th birthday (and this is crucial because it meant I could no longer be tried as a minor), my friend Wayne and I were busted for underage drinking by rent-a-cops in his girlfriend’s parents’ backyard. Our sentence was deferred and instead of doing time in juvy, we were given 32hrs of community service beautifying our community. Those guys on the side of the road in the orange vests picking up trash… yeah, it’s about as fun as it looks especially during the summer in AZ. One of the many sisyphean tasks we were given during our stint at the Paradise Valley Police Dept. was to chop down a 25′ poplar tree that was growing in the median of their parking lot. The tools we were given: a rusty pickaxe each. If you’ve ever seen the gnarled roots of a mature poplar tree then you know this task is about as feasible as giving someone a pair of chopsticks and telling them to empty a swimming pool one water droplet at a time.

Now Wayne is no dummy (in fact he’s currently a rockstar lawyer with one of NYC’s top law firms) and I have an utter distaste for tedious, mindless work. While the other laborers launched into their own chores, Wayne and I took a few swings and then sat there staring at the tree, examining our puny tools and thinking to ourselves, “there has got to be a better way to do this.” Fortunately the week before my S10 mini blazer had been outfitted with a trailer hitch. It was parked in the space next to the tree and, like one of those cheesy movie scenes, the hitch glistened in the 120 degree Arizona sun and the light bulb hit us both simultaneously. We rummaged around the yard for a sturdy rope and found one immediately. It took us all of about three minutes to back my truck up to the tree, fasten the rope to the tree’s trunk and then to the hitch. In a glorious moment I will never forget as long as I live, I threw my truck into 4wheel-low and slowly plogged forward ripping this massive tree out of the ground while Wayne stood watching and chuckling in his classic half-smile “awww jeahh” look. I remember making my victory lap through the PVPD parking lot dragging this enormous mess behind my truck trailing dirt clods everywhere knowing that we would of course later be tasked with cleaning up the mess we created, but sweeping was WAAAAY better than swinging a pickaxe in noonday sun!

How does this story relate to programming, web development or problem solving in general? Think how many times have you been handed a project that felt similar to this. I’m sure we’ve all been given a mindless piece of work at one point or another- I know I have and I loathe doing these types of projects. The key is how you choose to solve it, though. Do you put your head down and start immediately start hacking away with your pickaxe or do you take a few steps back and see what other tools are potentially at your disposal? Can you write a routine to automate the mindless portion? Has someone else already created a component that does 95% of what you’re trying to do? Are there tools perhaps written in other languages that accomplish the same thing but might be out of your periphery because they don’t end in “.cfm?” Depending where you fall on the continuum of corporate vs. independent consultant, your tool belt may be constrained by various factors (namely monetary and political), but with so many kickass opensource tools for other languages available, as well as ones like CFOPEN, CFCZONE and the newest addition COAL for CF- you really have no excuse for claiming that you don’t have the appropriate tools for the job. And if by chance you are operating under some draconian corporate policy of not being able to install apps on your own machine, then run them from a USB drive. The point here is that it is SOOOO much more satisfying to spend a little time sharpening the axe and solving the problem creatively rather than launching into a brute force attempt with crappy tools- not only does it grow your skill set, expand your confidence as a developer but it also makes the job like a treasure hunt or a good MacGyver episode.

*UPDATE – I just found this picture of Wayne and myself doing our “hula hoe” chores in front of PVPD- awesome.

Jul 03

Awhile back, Tim Buntel called for some real resons why people wanted to see interfaces added to ColdFusion. At CFUNITED the debate raged on… I was feeling relatively smart until I stumbled into this conversation between developers Max Porges and Barney Boisvert on the patio after the conference. I had been talking with the others but I realized when the conversation leaped 40,000 feet above my head it was time to shut up and press the record button. I managed to capture a riveting 20min debate on “how OO Coldfusion should really strive to be.” Also present were developers: Jared Rypka-Hauer, Paul Kenny, Simeon Bateman and two other guys whose names I’ve since forgotten (need that CFUNITED yearbook). If you can ignore the smooth jazz in the background and the occasional city bus that tramples the audio, it’s actually a very good debate. Feel free to chime in here and contribute your thoughts. Total Time= 18:46min. Listen to the audio here.

Tagged with:
Jul 01

Well CFUNITED is over and all I can say is “wow.” Having helped staff large conferences in the past I can vouch that it is a colossal undertaking to coordinate every detail of an event like this and Michael Smith and his crew did a superb job. The content was outstanding and the execution was flawless. I’m back at my buddy’s house in Arlington, VA with a backpack full of schwag, a wallet full of business cards and a head full of some very actionable ideas I plan to implement. The best way I think I can condense what I learned and summarize it is to do it in a 3-part series of posts over the next few days (i’m staying here so I can do DC on July 4th – i imagine that has to be the epicenter of the fiesta for this holiday). So I’ll do a braindump here on my take on the general aspects of the conference and save a summary of what I took from the sessions and hallway discussions for tomorrow.

What worked well

  1. Registration – went off without a hitch and that’s tough to do.
  2. Schedule / room allocation / logistics- great job juggling disparate topics and using the concept of “tracks” to keep attractive options for different folks at every session time. In talking w/ Michael afterwards, I learned that Teratech used online pre-surveys to determine what sessions attendees wanted in order to decide which topic would get the larger room on each time slot- genius. The breakdown/setup of the rooms itself was quite a feat to watch- the hotel staff would move these enormous partitions around and create individual rooms or collapse them to form one ginormous room for the keynotes.
  3. Speeches – the content and delivery of the presentations was top notch. I was a Joel Spolsky fan before the show having listened to his talk on ITconversations.com and followed his blog for months so it was a treat to see him from the first row doing his thing live. There was not one presentation that I regretted attending and I went to all but two of the sessions.
  4. BoF – the “Birds of a Feather” informal discussions at night worked really well. Sitting in the back of the room at the Model-Glue/Fusebox/Mach-ii discussion, I have to admit I felt a bit like being back at the 2001 World Series watching this historical interaction of all the great players in one room. To be sitting there in front of the Macromedia dev team and witness the direct honest communication with the community they serve was an honor. I swear, the mental firepower in that room…if I ever have the ducats to afford a crazy mansion, I’ll just hire that room of people instead and make amazing things. What a fun team that would be to be a part of.
  5. Ubiquitious WiFi – the conference hall area had an open connection and at least 30% of the attendees could be seen at any given time huddled near an electrical outlet checking email, posting and reading blogs. It also meant you could load the CD of presentations on your laptop and follow along while the presenter was talking or even be researching the sites and concepts while they spoke. At one point I was talking with a lady and she pointed out something which is very true: “at these conferences wifi has come to be as expected an ammenity as drinking water” and it was true. The connection had problems the first day with either oversaturation or due to the login, but the Marriot promptly opened up another connection and al was well. I did consider busting out Whoppix to see exactly how many cleartext passwords were flying around the airwaves, but i decided against it
  6. Paperback schedule guide – the thick paperback index of all speakers, topics and presentations that was distributed at registration was sheer genius. When I first got it I thought “what a waste, why wouldn’t they just leave this on CD?” But having a physical paper guide which you could flip through between sessions to review the slides of the potential presenters was just a great decision making tool. There was a few toss-ups where I wish I could have attended two sessions occurring simultaneously but the speakers were very approachable and most understood and offered to send any extra materials upon request. I think every speaker I saw left his/her email on the powerpoint for attendees to contact them if they had questions.
  7. Good feedback mechanisms – the hotel staff were meticulous in distributing and collecting surveys after each presenter and Liz summarized the results of the surveys on stage in the wrap-up session reading back comments that testified to the quality of the speakers. This kind of feedback capture (and redistribution) is critical in order to know how to adjust for future shows and reinforce the speakers with praise. I did not realize that speakers were NOT paid for their talks- like college ball “every was there for the love of the game.” Really a good vibe.
  8. Accessibility – I had a one-hour commute everyday on the metro to Arlington which meant I actually had to use an alarm clock for the first time in about a year. Whether intentional or not, it was great that they chose a hotel with a metro stop just a block away.

What was lacking (and this is a much shorter list)

  1. Depth and detail on many talks – I realize it’s difficult to present topics to an audience of varying skill levels and try to roll day’s worth of material into 50min but I found a lot of the presentations to be good overviews but lacking in depth and useable “next steps” type suggestions. On more than one occasion I found the preso getting really interesting about the time the hall monitor would step in and signal the wrapup.
  2. AZCFUG Model-Glue breezo – It’s a shame but Joe Rinehart’s breeze preso on Model-Glue just didn’t do justice to his talk the day before or even the actual live event itself. In Joe’s defense, it’s VERY difficult to juggle both a live audience and a remote one. The faces in front of you tend to take precedence. As far as the lack of planning- I think Joe had quite a bit on his plate having done an all-day class the day before (which was excellent). I checked out the breezo and quality is crappy but sh*t happens- just download the framework and tinker. I’m sure he’ll do another one soon.
  3. Conference fatigue – I don’t know how you solve this one because the alternative means you don’t cram as much valuable stuff in, but I was pretty fried by 5pm on the second day and ended up leaving a little early. You’re just barraged with so much dense valuable info and surrounded by droves of people, combined w/ the lack of sleep, it grinds you down by the end of the day. To their credit, they did have a maseuse in the hallway giving massages. I think the solution is to avoid extended stays w/ fellow developers at the bar late night…<!– READ: not really, just drink 2 redbulls after lunch –>

Suggestions for improving things

  1. Archive the follow-up discussions- by far the most “meaty” part of the talks was the 5min after the presenter had finished and the room was clearing out when a small swarm of the people that had lightbulbs going off were asking questions. This fertile discussion should be archived whether via iPod or video. I caught a fantastic 20min discussion on my iTalk out on the hotel patio afterwards amongst some really bright guys. I’ll try and get it posted here soon.
  2. Conference “Yearbook” – at my University freshman year, when we arrived on the first day, we were given essentially a pre-yearbook with pictures of our freshman class that everyone had submitted. I thought it was great because you are blitzed with all these familiar names and a lot of times your putting a face to that name for the first time. I will never forget a face but I’m terrible with remembering everyone’s name. It would be great to have a way to leaf through a document that matched the face from the conference w/ that familiar name. When I did Proscout events, we had a webacm at registration and snapped a photo and quickly named it with the participant’s ID number on their badge. It worked well and similar thing could be done here for those that wished to participate. Taking it a step further, they could integrate it into Jared’s login for his “interest matching app” and make it so you could view this online, fix your picture if you didn’t like it and even expose a webservice to display a tiny face thumbnail when people comment on blogs. Don’t underestimate the value of faces in this industry
  3. Visual Likert Scale on Feeedback forms – I screwed up on the first day and gave a bunch of 1’s and 2’s on my ratings of speakers cause (stupidly) I didn’t read the directions and thought “1” was the best rating to give. The guys at 37signals would say do something simple- a scale that looks like this:
    :-( 1 2 3 4 5 :-)
    I talked with a guy who had made the same mistake and corrected me after seeing me circle all one’s on Simon Horwith’s preso. As simple as it is, a visual likert scale would have cleared up that confusion easily.
  4. Easier way to lookup slides in paperback book by timeslot – this is a small detail but it would have been nice to have either the page number of the slides right on each timeslot in the schedule or some crossreference to make looking this up a little easier.

I’ll do a summary of all my takeaways I gleaned tomorrow. I took six pages of notes and have a lot of things I want to tinker with. Kudos Teratech and all speakers on an excellent event. Being an independent consultant, I have to pay my own way to these things but I felt I got more than my money’s worth at this event. cheers

Tagged with:
Jun 12

I have a client that requires an Enterprise Resource Planning system in order to comply with an upcoming FDA audit. In searching for an acceptable solution I ran across systems that cost hundreds of thousands of dollars (aparently some of the larger companies like Dell pay millions of dollars for their ERP systems). How is the little guy to enter the fray which such prohibitive barriers to entry bar the way? The answer I discovered was in an opensource project on sourceforge.net called “Compiere” (which apparently in Italian means “to accomplish, fulfill or deliver” – very appropriate). This particular project has consistently been in the top four active projects on sourceforge which bodes well as it has a huge developer community and is growing rapidly with plenty of new modules and features to accomodate every conceivable business need. I was stoked to find such a system that was: 1) free 2) cross-platform 3) very much alive 4) and has no shortage of consultants to help in a bind. The only problem was that it requires Oracle 10g database to run on – and everyone knows Oracle licensing ain’t cheap.

I hunted around and found something called CODAF (Compiere and Daffodil db) which sounded promising but after tinkering with it for about an hour and digging through their site grappling w/ various problems getting the database working, I realized it wasn’t truly a free solution after all so I kept up the search. Then I discovered a database called Fyracle which promised to emulate Oracle closely enough to where Compiere wouldn’t know the difference. Their install instructions for Windows were very straightforward and I ran into only a few rough spots before I had the whole thing setup and running on XP. I was tempted to try their install for linux but they were pretty involved, about 3pgs long and I’m honestly not comfortable w/ linux and the command-line yet. I gotta say both installers ran flawlessly and so far so good- I had it up and running in less than an hour.

Even with a fairly-simple install process, I thought making a video tutorial with RoboDemo would help give people a good overview to see what’s involved before actually diving into the specifics and plus it might clear up some of the minor weirdness I discovered in the docs (like having the compiere install dir default to the D: drive which on most machines is the CD-ROM). For me, learning how to use this ERP system is the next step in this project but if the Compiere user guide is anything like install documentation I’ve seen so far, it should be fairly smooth to pickup. I would really like to see some tutorials like this one made by some of the more experienced Compiere users to show how the software is used for common daily tasks like inventory control, supply chain tracking, accounting integration and CRM functions. Perhaps someone at Compiere will dig this method of teaching and adopt this idea of producing some video tutorials. Enjoy!

Watch video tutorial on Compiere ERP setup on Fyracle databse and Windows XP in five minutes
7.1MB ~5min

PS. I know my blog is now syndicated from a couple different sources ranging from ColdFusion to legal technology-related. I generally post about whatever “ah-ha” moments I have and stuff that I find useful and interesting to myself. I have my feet in both the legal and CF swimming pools – hopefully peripheral topics like this one do not alienate either camp by falling on the side of being too technical or not technical enough. My rule of thumb for writing here has always been “stuff I wish someone would have told me in the first place” and that continues to be the compass by which I align my postings here.

Tagged with:
Jun 02

I’m pretty sure that K2 was that insane mountain that John Cusack tried to ski down in Better Off Dead (“have you any idea of the street value of this mountain it’s pure snow!!”). Well the “street value” of Verity K2 is no less amazing. It’s not often you have the opportunity to improve your application’s performance by10,000% through an hour’s-worth of work. In migrating an application to a new server tonight I was reminded of just how much better verity k2 server is than the standard VDK version that comes bundled with CF and yet not everyone is utilizing this feature. VDK apparently is a file-based approach for indexing while K2 is a server-based approach to do the same thing. If you’re on windows you can (and should) set it up to run as a service. I would say anyone running CF enterprise who is doing any type of searching with verity would strongly benefit from the hour or so investment it takes to get going w/ K2. There is a good tutorial here that walks you through the process of switching modes. I’m using Verity now to index a giant application-scoped query of 5000 contacts against which I compare a user-submitted list of names in my Sentinel Application. My app literally performs 100x faster with K2 than it did with the vanilla install of verity. Just look at the speed comparison using the getTickCount() function:

The only gotcha I ran into in migrating this app to a new server is that you can’t create a k2 index without first creating your standard verity collection. Once you have your regular VDK collection running successfully, follow the steps in the tutorial above to make it hum w/ K2. Also, when moving from one server to another, simply copying the collection files does not work, you need to create the collection through the administrator from scratch. Performance gains on the order of 20% are generally impressive but 100-fold improvements are unheard of. Chalk one up for CF.

Tagged with:
preload preload preload