helpspot update mail integration

HelpSpot Update: Mail integration

Now that we’ve got the general application framework in place, things like authentication, error handling, etc we’re moving on to some of the core functionality. The ability to pull messages in from multiple mailboxes is a primary feature of HelpSpot. We have to reliably pull in messages from multiple mailboxes and then have those messages be posted as requests to the general help desk queue or optionally be assigned directly to a particular person. For example, I may have a mailbox called [email protected] Since I know Phil always answers desktop questions I can avoid having messages in this box go in the general help desk queue and instead assign them immediately to Phil. This has a huge impact on response speeds. Not only does the question get to Phil faster, but it’s also one less request the help desk team needs to review and forward.

This sounds fairly easy to do but it gets complicated fast. The mailbox itself might be pop3 or imap, it could be over a secure connection perhaps it’s not always available. We need to write code for all these situations. Once a connection is established the fun really begins. Actually working at this low level with email gives me new found respect for dedicated mail applications like Thunderbird and Outlook. There are just so many pitfalls and possibilities to consider. Of primary concern are determining if the message body is HTML or text, are there attachments, if there are attachments what mime type are they, are they nested, are there inline mime objects as well, etc. Whew.

As I mentioned the other day, PHP could use a little more abstraction in this area. The IMAP extension which handles all this stuff works reliably but it still leaves you with alot of code to write to implement these things and since almost everyone working with mail wants to do the same things it would be better done if pushed down into the C library. Anyway, I’ll leave you with a sample of the code you would need to pull out email with attachments in ColdFusion:


<cfpop server="mail.company.com"
username=#myusername#
password=#mypassword#
action="GetAll"
attachmentpath="c:tempattachments"
name="Sample">

a short review of textmate

A short review of Textmate

Textmate has taken the OSX coding world by storm over the past few weeks so I thought I’d download it and give it a go. I’ve been using BBEdit for a long time however I wasn’t too impressed with version 8 (especially the terrible alphabetically ordered drawer implementation) and it’s really freaking expensive, so I was open to trying something new. So here’s my really short review:

Likes:

                    <br /> <ul>
                      <br /> <li>
                        The project drawer. Makes finding and working with your files super easy and logical. A thousand times better than BBEdit 8's.
                      </li>
                      <br /> <li>
                        PHP syntax highlighting. It's doesn't yet cover all the syntax (like the imap library), but it looks great out of the box.
                      </li>
                      <br /> <li>
                        Tabs
                      </li>
                      <br /> <li>
                        Price
                      </li>
                      <br /> <br /> <li>
                        Soon to have svn integration
                      </li>
                      <br />
                    </ul>

                    <br /> <h3>
                      Dislikes
                    </h3>

                    <br /> <ul>
                      <br /> <li>
                        Logo, come on that thing is terrible. How can I set it to be the default app for my text files if I'm going to have to look at folders full of that icon? It's waaay to busy.
                      </li>
                      <br /> <li>
                        UI needs some work. Many options are only available by digging around in text files and making config changes. Ugh. Who has time for that? Put everything in the menu's. Also can I have a preferences option? What kind of app doesn't have a preferences option?
                      </li>
                      <br /> <li>
                        The find and replace is almost silly compared to BBEdit. Nowhere near enough power. The box is too small, no ability to search outside of the project across other folders, etc etc
                      </li>
                      <br />
                    </ul>

                    <br /> <br /> Overall I like it, especially at the $40 price point. I'm pretty sure most of the problems will be addressed in future versions. I'm going to start using it for development, though I'll still keep BBEdit 7 around for large global replaces or file searching.

hd stories the interview

HD Stories: The Interview

                    <i>Still helpdesk and it'll still *SUCK* profusely</i>" - from <a href="http://www.livejournal.com/users/alysania/64011.html">Shades of Grey</a>

choosing a development lang php vs cf vs py

Choosing a development lang: PHP vs CF vs Py

Though I’ve already made up my mind as to which language I’m going to use for my companies new software product I thought working through my thought process might be helpful for others. First let me describe the technical requirements.

My software, HelpSpot, is a help desk application for small to medium help desks. As such the applications primary technical specification is that it be flexible. Help desk managers will usually not have alot of say as to what platform their support software runs on. So HelpSpot MUST run cross platform. Now my preferred database would be MySQL, however, MySQL is not nearly as popular on Windows as Linux/Unix/Mac so we need to support SQL Server as well and while we’re there supporting Access is probably necessary. So we’re up to 4 operatings systems and 3 database servers. Whew.

mac setup

OK. Let’s move through these:

Python, Ah this is a beautiful thing isn’t it? Alas though I’ve purchased many books on it and done some small apps I just don’t know it well enough to use it for a professional piece of software. It’s fantastic to program in but I find it’s just always out of reach. Perhaps for the next project.

ColdFusion. I looove CF. Nothing is faster to develop in. Don’t let anyone tell you otherwise, it’s simply the most productive web application programming language available. Need full database abstraction? No problem, need an interactive flash graph with drill down capabilities? How about doing that in 1 line of code! Contact a mail server with 1 line of code and get a query object back with all the message info. What about integration with a bad ass Verity search engine for FREE. Good localization support, utf-8, etc. But……

HelpSpot is going to be download software. HelpSpot needs to run everywhere and CF is a big ticket item. The base version is about $1000 and the J2ee is up to $6K. Hmm. So now the price goes from sub $200/user to $200+$1000 for a 1 user installation. That’s not going to happen. Not to mention that the poor Help Desk managers not going to get the “server guys” to install and support a new app server (at least not without about 400 meetings, which also won’t happen). Limiting the product to existing CF installations takes a big huge chunk out of the potential customer base, which is death for a product like this. Also the CF market doesn’t contain much in the way of downloadable feature rich software. Mostly it’s code widgets or a few general things like forum software. So in the end I have to turn away from CF as well.

This leaves us with PHP. PHP is certainly hot right now and it’s probably the language I’m most proficient in. I’ve used it almost exclusively over the past 2 years. It doesn’t have great localization support, no one line of code to connect to a pop mailbox, no built in fancy flash widgets. It is however very flexible, relatively quick to code in and is installed everywhere. It’s free, at least in the marketing sense if not in the TCO sense and most “server guys” I know will balk less at getting it up and running. It runs cross platform fairly well and supports the necessary DB’s.

I was somewhat hesitant at using PHP because of the current state of the app server. Being as this is a transitional period between version 4 and version 5 that makes things a little more complex. But after reading up on it I think we’ll be able to produce solid code that runs on both 4 and 5 effeciently.

Well I’ve gone on too long. Tune back in as I plan to update the development of HelpSpot as I go. I hope to learn a thing or two from your feedback and comments.

development tips

Development Tips

Alex King posted a nice tip I use alot about imploding an array to make a separated string without having to worry about having an extra separator left on the end.

One thing I’ve noticed alot in PHP is people not initializing their variables. I’m not sure why this is but it’s really important to do. Coming from a CF background before PHP I grew very used to doing this with the extremely easy tag. My replacement for this in PHP is to put the following code at the top of my scripts for each variable, especially ones coming from an external source:

$page = isset($_GET[‘page’]) ? $_GET[‘page’] : ‘home’;

So if the variable page is set then place it in the local $page variable otherwise set it to some default. It’s also possible to expand on this and do some other types of data checking right here, for instance:

<br />
$id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? $_GET['id'] : 0;<br />

Here we’re checking to see both if $_GET[‘id’] is set and if it is numeric. If it isn’t we set to the default of zero.

dual samsungs

Dual Samsungs

Umm I love my dual Samsungs (see below). If your a programmer go out right now and get a dual monitor setup. I just purchased the 2 screens and the G5 about a month ago and it’s best money I’ve ever spent. I’d say my productivity is about double using the new setup. I like to have alot of applications open so having the 2 screens is a real time saver.

I also purchased the AlchemyTV DVR which is great for watching the playoffs while I’m working 😉
—–

gds

GDS

“The only advantage Google has over other desktop search is tight integration with their website. While some people seem to be impressed with seeing the word ‘Desktop’ added to the Google homepage, I think the tight integration and blurring of the line between the Web and the desktop will result in confusion and concerns with little gain for Google.” Don Park. I couldn’t agree more.
—–

motivation

Motivation


Well I had a big spiel all planned out for my first posting, but then I read Adam Curry’s latest post (go ahead and read it, I’ll wait. You may need to get caught up on Podcasting if for some reason you haven’t heard about it yet)

I realized right then I had to scrap the entire thing. Why? Because it’s so damn inspirational that I just need to dedicate my first post to him. Which is rather funny in it’s own right, who would think the big hair dude from my youth would be my technology inspiration?

Anyway, alot of this weblog is going to be about working in technology, developing applications for small business, being a small ISV and all that happy stuff. To be successful you need to LOVE what your doing, you need to be motivated, you need to be willing to drive to a local high school and steal (uh borrow) their bandwidth to upload your latest work of art. That’s what it’s all about! If I can move forward with half as much heart and dedication in the projects I’m working on it will be a stupendous achievement. Thanks Adam!
—–