|How To Improve the Admin Experience|
Speeding Up Arcane Admin Functions
| 1:03 am on Jun 7, 2010 (gmt 0)|
Everyone constantly worries about how to improve the "user experience" but nobody every discusses how to improve the Admin experience.
Today I was doing the same old mundane maintenance tasks on a site that is a grueling task of stepping through thousands of pieces of data, back and forth, extra windows opening and closing, a real tiresome bunch of clicking and waiting.
Then it struck me, FRAMES!
I quickly whipped out a frameset, put the admin code in a navigation column, changed all the links in the various pages to target the various frames instead of opening up in the same or a new window, and VOILA! had a high speed control panel that sped up the process almost 300%.
Now I can update 100 items in just a few minutes when previously it would've taken forever.
Imagine for instance with ecommerce you have a 3 column frameset with column 1 being all your categories, column 2 being the products for the selected category, then column 3 is a multi-row frame that contains the product (or category) edit frame and a frame below that could optionally show product options, shipping, or a product preview.
You can blaze through a catalog in just a few mere clicks vs. back and forth between a few various pages.
Bottom line is, if you're stuck working on some grueling admin task, could you improve the process with FRAMES?
The hour I spent making the admin process use FRAMES will probably save me over a hundred hours a year easily, maybe more.
| 1:33 am on Jun 7, 2010 (gmt 0)|
While we're at it, here's another tip to improve the ADMIN experience - add a TRASH CAN to your database!
How many people delete something just to go "Awww, I didn't mean to do that!" which I do that a lot less than other people do that work on my database.
Additionally, deleting 1 record at a time from a rather large database is much slower than a simple record update.
Recently I decided to address both issues so I added an ACTIVE/INACTIVE field to several large databases which get a lot of updates and removals.
Then I changed the DELETE function to merely update the record to inactive, and changed the main list view to only show ACTIVE records.
Not deleting in real-time saves a lot of time previously just waiting for the action to complete and being able to simply reactivate inadvertently deleted information can often be a life saver when it happens.
BTW, don't forget to create an "EMPTY TRASH" function so you can purge all your inactive records with a single click later.
| 2:21 am on Jun 7, 2010 (gmt 0)|
Thanks for bringing the subject up. Those who try it might be pleasantly surprised. I've been using frames for years for much the same reason: ease of use.
| 3:43 am on Jun 7, 2010 (gmt 0)|
Frames were always regarded as bad practice, but mainly because of their bad SEO behavior. In practice they are just as useful as AJAX, but much less complicated to program and maintain.
That database method with active/inactive fields is how good old dBase used to work. Just mark the data fields as invalid and once in a while compress the data file. I use that process still on a high-speed application where real-time response is needed. Admitted, not with some sort of SQL mastodon but with a light-weight Codebase library.
| 5:58 am on Jun 7, 2010 (gmt 0)|
Bill, the way you describe it is how I coded all my admin sections on all sites since I started out, everything is always only one click away.
Instead of using classic frames (with scroll bars) I use "include file" as I write asp pages but that is merely a different look for the same purpose.
| 5:57 pm on Jun 7, 2010 (gmt 0)|
I love the trashcan option. Gonna do that tonight.
| 9:58 pm on Jun 7, 2010 (gmt 0)|
Seems a few people didn't "get" why I used old school framesets.
Mainly, because I was trying to quickly retrofit old code.
The purpose wasn't to be fancy, validate, be crawled, no SEO purpose since it's an Admin tool.
The purpose was to add the functionality in mere minutes with little change to the existing application without programming or breaking anything because in the absence of frames, the missing target frame doesn't cause any problems, the pages continue to work as-is just like they did before you touched them.
Obviously if I was building a fancy new tool for mass distribution I might use other methods, but for a quick and dirty retrofit on existing code, it was brilliant.
Just remember to work smarter, not harder, and ignore people with irrational HTML tag phobias ;)
| 2:07 am on Jun 8, 2010 (gmt 0)|
I also found the trashcan option to be useful since it's generally less annoying to be able to undo a delete than it is to have to confirm every delete you make. Using Mysql I just add a "Delete" field, if it's 0 then the entry is not deleted. When they delete it I either set it to a 1 or I set it to a timestamp with a future date. If it's a 1 it means it's deleted but I don't want it to automatically purge, and if it's a timestamp the script will automatically clean it up once the date is reached. It can be a pain to add it to all your SQL queries, but it's generally worth it in the end... especially for the IT admins that would have to restore a previous backup to restore the data without it.
| 7:50 am on Jun 8, 2010 (gmt 0)|
Few tech tips: remember to add index for your active/inactive flag, otherwise your product list queries may significantly slow down. Also check your unique constraints as admin control panel may disallow adding active product if there is inactive product matching some criteria
| 1:34 pm on Jun 8, 2010 (gmt 0)|
Maybe a dumb question: when you talk about Admin tools and adding frames and trash can, which Admin tool are you talking about? Is it a custom tool or is it a cPannel style tool?
| 9:13 pm on Jun 8, 2010 (gmt 0)|
Nice. Frames make work easier sometimes.
Also consider leaving the common used links together. Sometimes I end up with designs that are not so catchy at first but reduce the mouse movements a lot improving efficiency and making the admin (me) or the client very happy.
| 6:01 am on Jun 9, 2010 (gmt 0)|
I create an HTML page on my work machine called "stuff.html", (it can be named anything ".html")
It has links, (top level and deep links), to everything I use daily or frequently on the web.
As soon as I install a browser I make that page my "home page".
Using a local HTML page for a browser "home page" lets you jump directly to "My Threads" on WebmasterWorld by clicking [HOME] (on browser) and "My Threads" in the WebmasterWorld block, (which also contains links to other stuff I browse often)..
<!-- =================================== -->
<!-- START: WebmasterWorld Content-->
<!-- =================================== -->
<a href="http://www.webmasterworld.com/stickymailv4.cgi?action=controlpanel">Control Panel</a><br>
<a href="http://www.webmasterworld.com/stickymailv5.cgi?action=mymsgs&imode=16">My Threads</a><br>
<a href="http://www.webmasterworld.com/active.htm">Recent Posts</a><br>
Since clicking HOME on the browser only loads a local page, then clicking a link and going directly to the content I want, this also saves bandwidth and time. (Otherwise Brett would have to pay for me to load "Control Panel" then click "My Threads" -- I save my time and both of our bandwidth).