At the Forge - Sunbird and iCalendar
When I first started to write server-side software, I laughed at the thought that I was writing applications. After all, I was writing only small bits of code; nothing I did could hold a candle to what a real program, running on the desktop of someone's computer, could do.
Of course, things have changed quite a bit in the computer industry since those early days. Today, Web-based applications are not only an established fact of life, but they seem to be playing an increasingly prominent role in our daily lives. Recently, I began to look into software that I could use to prepare my US income taxes. I shouldn't have been surprised to discover that many companies now are offering Web-based tax calculation programs. The term ASP, or application service provider, was hot several years ago, when it seemed as if all software would work over the Web. Although there have been some obvious success stories, there also were many failures, for technical and business reasons alike.
It's easy to understand why Web-based applications are attractive to a business: you no longer have to test your software on every platform but instead only on a handful of browsers. You no longer need to support many different versions of the software, because only one version is accessible at any given time. Bug fixes and software updates can be integrated into the system almost continuously. The software is available from anywhere with an Internet connection, instead of only on the computer on which it was installed. The list goes on and on. From many perspectives, this approach makes more sense than stamping out thousands of CDs, testing the software on hundreds of configurations and staffing a large call center to support all of those configurations.
But for all of the hoopla, Web applications still are limited compared to their desktop counterparts. Because all serious processing is done on the server, including writing to and reading from databases and files, instantaneous feedback from the interface is almost impossible. Even with the fastest servers and a lot of clever magic, such programs still can seem somewhat tedious. Google's new maps system (see the on-line Resources), for example, demonstrates that it is possible, albeit difficult, to create Web applications that feel much like their desktop counterparts.
Those of us without Google's resources increasingly are turning to another solution, namely using hybrid software—desktop applications that rely heavily on Web technologies. It used to be that Web technology could be described, with a fair degree of precision, as HTML-formatted documents retrieved by way of HTTP using a URL. Web browsers were, for a long time, the only programs that made serious use of these standards.
Today, however, a growing number of desktop programs make use of HTML, HTTP and URLs, even though they aren't Web browsers. They use URLs to locate remote resources, HTML for its simple, universally understood method of creating hyperlinked documents and HTTP because it is reliable, simple, universal and cacheable. There aren't too many examples of word processors and spreadsheets using these protocols—at least, not that I'm aware of—but one hybrid program has been playing an increasingly prominent role in my life, Mozilla Sunbird.
Sunbird (Figure 1) is the standalone version of the calendar extension that can be installed along with either Firefox or Thunderbird. Integration with these two programs is far from perfect, and I sometimes want to run or restart one without the other. So I installed Sunbird over the summer and have been pleased with each new release as it is made available.
Now, you might think there is nothing inherently useful about having a calendar use Web technologies. But in the case of Sunbird and the iCalendar standard, there is a major benefit—namely, the ability to create calendars for public consumption. This month, we begin a several-month journey through the creation, distribution and sharing of calendars based on the iCalendar standard. Along the way, we'll see not only how to work with iCalendar, but how the hybrid applications can provide a powerful combination of features and an enhanced user experience.
iCalendar is an Internet standard for sharing calendar information across different computers. The basic idea is simple: if everyone at my office keeps track of their schedules on their own computers, it makes things efficient for those individuals but no better for the group than if everyone were using a pocket diary. Scheduling meetings still would be a hassle. Moreover, group events would have to be entered once on each person's calendar—meaning that when a meeting moves from Monday to Wednesday, each of the people on the team needs to adjust their individual calendars accordingly.
iCalendar was designed to solve this problem by standardizing the calendar files themselves such that those files can be transferred from one program to another. The original vision, as far as I can tell, pictured everyone using programs that implement iCalendar on their computers and sharing that information with others by way of the network and Internet. The reality has taken some time to catch up with this theory, but a variety of programs now are available that do implement parts of the iCalendar suite.
I should note that the entire iCalendar Project has been the victim of some bad and unlucky naming problems. The file in which data is stored and that can be used to interchange information is called vCalendar, just as the electronic business-card format is known as vCard. But many people and applications, including Sunbird, refer to the file format as iCalendar, even though the file identifies itself as vCalendar. As you can imagine, the term iCalendar has been shortened to iCal, which is especially unfortunate, given that Apple's Mac OS X operating system comes with a program called iCal that uses the vCalendar file format. Because the use of vCalendar to describe these files seems to have gone the way of the dodo, I simply use the word iCalendar to refer to both the file format and the overall standard.
Download and install the appropriate version of the Sunbird standalone calendar program; see Resources for the URL. If you're a bit more daring, you can install one of the nightly builds; I actually am using Sunbird as my primary calendaring application, so I have been using the official builds. If you prefer to have your calendar integrated into either Firefox or Thunderbird, go to the main download page and choose the appropriate extension and version that you would like to install. If you install an extension to Firefox or Thunderbird, you need to restart the host program before continuing.
Sunbird allows you to create two types of items, events and tasks. Events normally appear on the calendar itself and can include holidays and meetings. Tasks normally appear on the left side of the screen and indicate things that you should get done, with an optional starting and ending date. Sunbird changes the color of tasks according to how soon they need to be done; overdue tasks are in red, current ones are in blue and future ones are in green. Gray tasks are in the far-off future, and crossed-out ones—if you choose to display them—are completed tasks.
Both events and tasks can be repeating, meaning we can schedule a meeting for every Wednesday at 4 pm over the next ten weeks rather than entering ten individual events in the calendar. We can enter exceptions to such recurring events as needed, and we can set them to recur every few days, months or years, with “every few” being user-definable.
Practical Task Scheduling Deployment
July 20, 2016 12:00 pm CDT
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.Register Now!
- SUSE LLC's SUSE Manager
- My +1 Sword of Productivity
- Returning Values from Bash Functions
- Tech Tip: Really Simple HTTP Server with Python
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- Managing Linux Using Puppet
- Non-Linux FOSS: Caffeine!
- Doing for User Space What We Did for Kernel Space
- Parsing an RSS News Feed with a Bash Script
- Rogue Wave Software's Zend Server
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide