Those, like me, that put in the position of managing a SharePoint Team Site without SharePoint Designer access (or indeed without the ability to install development software of any kind) are forced to get creative sometimes. Leveraging the many rich (but annoying inscrutable) web services available offers a lot of interesting possibilities but adds significant challenges. Most people will start with getting data from lists.
Category: Development
Various articles, public code and other developer resources.
In defense of Comic Sans
Kelsey Campbell-Dollaghan has an excellent overview of several UI innovations that have later taken bad raps, “Who Designed Clippy? The History Behind Four Legends of Early UI“. It reminded me of one of my pet peeves: the ridiculously emotional modern response to the font Comic Sans.
I started authoring websites way back in the history-times of the early 90’s. My future bride and I had moved to Boston several years earlier and as I was teaching myself HTML I created a website dedicated to Boston, “Virtually Boston”. It had the basics: pictures, visitor information and historical data. (Although I still own the domain name, vboston.com, the site had been defunct for years but you can still explore it, more or less, on the Internet Archive Way Back Machine.)
I’ve GitHubbed! GitHubbled? GitHubliered?
I’ve finally gotten with the times and moved my JavaScript libraries and utilities to GitHub. You can find me at https://github.com/kiwidust. My components are old (and, if I must admit it, old-fashioned) and I had never really considered them much beyond my own needs but since it seems a few other have found some of them useful I decided it was time become a little more formal.
The following components have been moved – feel free to fork ’em!
- DP_DateExtensions
- DP_Debug
- DP_AJAX
- DP_PanelManager
- DP_QueryString
- DP_Cookies
- DP_ObCollectionOrdered
- DP_ObCollection
- DP_AlphaWords
I’ll be maintaining the documentation here at DepressedPress.com, for now at least, and the examples will still be hosted at Comcast (as I’ve found no other viable options). I’m open to any other suggestions to make working with my stuff easier.
TiVo Sucks, Part 2
As I’ve written before: TiVo sucks. In that first article I lamented the lack of innovation and features for this premium product. The worse thing I can say is that now, over a year later, every single one of my issues still exist. In fact there hasn’t been a single truly significant upgrade. Nothing that screams, “you can only get this here!” The service today is, for all intents, the same service I challenged as not advanced enough for premium pricing then. Hell, it’s been two years and they still haven’t completed the HD interface.
Now that my contract has ended I’m considering dropping Tivo and reverting to the stock offering from Comcast. I went to the Tivo site to allow it to convince me not to. I got the following “10 reasons you’ll love Tivo”.
Personal Archaeology: Using a GIF as a Data Pipe
Way back in the history-times, in August of the year 2000, I authored an article detailing a technique that allowed for bi-directional communication between a server and a web browser without a page refresh. The technique was, if I do say so myself, pretty clever in a primitive, kludgy, clunky kind of way. I have no idea if I was really the “first” to come up with this but I do know that the rise of standardized AJAX a few short years later completely and deservedly eclipsed it.
What I’ve recently realized is that a lot of traffic still points to that article. I, in fact, get nearly as many 404 errors for people looking for this article as I do legitimate hits to the site (“popular” I am not). It’s listed in the Wikipedia article on Remote Scripting and in many blogs, forums and resource sites. For the curious various versions of it are available on the Internet Archive.
Now it’s nothing more than a weird little historical artifact that I’ll keep here on the digital mantle for posterity.
Lotus Notes Tribunal, Exhibit 001-M: “Notes Is a Bad Neighbor”
Lotus Notes is a crime against humanity. In exhibit 001-M we see that Notes simply can’t meet even the simplest requirements of community.
Notes, like any business software, has a straightforward responsibility to at least attempt to play nicely with others. One of the more fundamental courtesies is to honor the formatting of common business software – or at least to try. Notes, however, is so pathologically anti-social that it features multiple distinct ways to completely ignore what you need.
To the right is a relatively simple form created in Word (click to enlarge). It features some basic border options, comfortable text spacing and some cosmetic coloring choices. Although tastes vary most would agree it’s a fairly attractive template.
DP_DateExtensions vs Excel: Fight!
I recently received a request for assistance with my JavaScript date extensions, DP_DateExtensions. In part it says:
I need to simulate the MS Excel networkdays() function. Excel would count 10th Jan 2013 midnight to 15th Jan 2013 midnight as 4 working days (6 days in total) but DP_DateExtension.js does not count the 10th so outputs 3 working days (5 total).
The Excel NetworkDays() function returns “business days” (removing Saturday and Sunday and optionally holidays from the calculation). In this case passing the function January 10th (a Thursday) to January 15 (a Tuesday) results in “4”. This makes it clear that Excel is doing this calculation inclusively by date and obviously not from “midnight to midnight”.
Lotus Notes Tribunal, Exhibit 001-L: “Notes Exercises Its Right to Remain Silent”
Lotus Notes is a crime against humanity. In exhibit 001-L we see that Notes will stand quietly by while you suffer.
I tried to open a memo. I’ve done it before. I’ve even had errors before… but as cryptic as they normally are can anything be more cryptic than nothing? At best we might consider this some kind of tough-love – like a heartless father throwing his terrified child into the deep end to teach them how to swim. At worst it’s outright passive-aggressive.
I feel strongly however that it’s just simple apathy. Notes doesn’t care about you or your pain.
Friday Development Anecdote
[I was reminded of my favorite “Point-haired boss” anecdote today. Thought some of you might be able to relate.]
It was ’97 or ’98. Netscape 2.0 (and the first iteration of JavaScript) were only a few months old. I had designed a (then) novel inter-page server communication technique using graphics and cookies. For the time it was, if I do say so myself, pretty remarkable (there are still links out there claiming it as a precursor to modern AJAX).
I explained how the new financial goal planning system we developed dynamically reacted to user data during a questionnaire to both dramatically improve performance and customize presentation zones with contextual, meaningful information during an interaction. Income bracket, number of dependents, current savings, etc – it would all feed into a dynamic, context-sensitive system that presented tailored information and products. Initial human factors work indicated orders-of-magnitude increases in user acceptance and confidence in the system.
After a 30 minute presentation about the business opportunities the new technique presented the lead executive in the room thought long and hard, nodded and then said “Can we make it blue?“
Update of DP_DateExtensions to add First-Day-of-Week Option
A slight update to my JavaScript date extensions, DP_DateExtensions, is now available for download. This release adds the ability to specify which day of week is considered the first day of the week when using the date math functions. (Thanks to Neil Cresswell of cresswell.net for suggesting this addition.)
JavaScript itself considers Sunday (denoted as zero) the first day of the week by default. This update provides access to a new property of the Date object, Date.FirstDayOfWeek, that can be set to any day from Sunday (zero) to Saturday (six). This setting will then affect date math in the round(), ceil(), floor() and diff() functions when the specified date part is “weeks”.
// Set first day of week to Monday ("1") Date.FirstDayOfWeek = 1 // Create a new date CurDate = new Date(); // Perform some date math RoundedWeek = CurDate.round("weeks"); FloorWeek = CurDate.floor("weeks") CeilWeek = CurDate.ceil("weeks")
Personally I’ve not needed to leverage this yet, but I can definitely see it coming in handy.