This page lists every article published on IBM developerWorks, in (roughly) reverse chronological order.

  • Real time visual effects Real time visual effects, Use EffecTV and Simple DirectMedia Layer (SDL) to create your own real-time visual effects on live video. Learn how to integrate geometric primitives, bitmap image loading, and simple motion tracking to create your own games, leading-edge user interfaces, or immersive environments. Explore the EffecTV and SDL architectures, and learn how to harness the power of open source video processing on Linux. Local cached text. Future versions to be published here shortly include more advanced manipulations of the video input to make interesting games. version 0.1 is a simple "ball falling down the screen game" where you have to jump around and duck and dodge. versions 0.2 adds shrinking of your image on the video screen, and occlusion of your head with funny images. Mentioned in the crazy ideas section of Gnome Cheese project. Actual proof that some of these articles are being read.

  • how-to article for distributed multi-head X windows support How-to article for distributed multi-head X windows support, Learn about the tools available to develop your own multiscreen configuration and physical layout to enhance your computing experience. You can use Linux and Xdmx to create one contiguous desktop across multiple display devices attached to separate computers. Combine your available laptop and desktop computers running Linux to create one large display for enhanced productivity. Explore large-scale display-wall setups and the creation of multihead setups without purchasing graphics cards. Local cached text.
  • Photo mosaics with Perl and ImageMagick Photo mosaics with Perl and ImageMagick, use simple Perl scripts to automate the image manipulation, text creation, and compositing of arbitrary mosaic images. Learn how to use ImageMagick, GD, and The Gimp to create your own mosaic images suitable for static display and dynamic content. Explore the capabilities of ImageMagick and open source graphical editing tools. Local cached text.

  • Knock based commands for linux laptops Knock based commands for linux laptops, for the first time, you can hit your computer and get a meaningful response! Using Linux and the Hard Drive Active Protection System (HDAPS) kernel drivers, you can access the embedded accelerometers on IBM and Lenovo ThinkPads, then process the accelerometer data to read specific sequences of "knocking" events -- literally rapping on the laptop case with your knuckles - and run commands based on those knocks. Give your computer a double tap to lock the screen, and knock in your secret code to unlock. Tap the display lid once to move your mp3 player to the next track -- the possibilities are endless. Local cached text. IBM developerWorks podcast with Scott Laningham. (local copy of podcast) On youtube.com and video.google.com. News article on newscientist.com. Slashdot discussion, if only for the e.a. poe homage. Among the Top 10 IT Stories of the week at cio.com. Entry in the Make blog.

  • Movie mosaics with Perl, ImageMagick and mplayer Movie mosaics with Perl, ImageMagick and mplayer, building on the photo mosaic article above, use Perl, ImageMagick and mplayer to create photo mosaic movies. Local cached text.



  • Let system events kick off on-screen alerts displaying text and images Let system events kick off on-screen alerts displaying text and images, Use Perl, Ghosd, and some network programming to display on-screen overlays of text and graphics based on messages from your local system and remote computers. Define custom images, font sizes, and colors to convey information integrated with your desktop. Local cached text.

  • Control your computer with tones and patterns Control your computer with tones and patterns, Use Linux or Microsoft Windows, the open source sndpeek program,and a simple Perl script to read specific sequences of tonal events - literally whistling, humming, or singing at your computer -- and run commands based on those tones. Give your computer a short low whistle to check your e-mail or unlock your your screensaver with the opening bars of Beethoven's Fifth Symphony. Whistle while you work for higher efficiency. Local cached text. O'Reilly Radar Release 2.0 'magic' link. Cached copy. Coverage and comments from Lifehacker.com. Interesting implementation example at: perlmonks.org Demonstation video of raising and lowering windows on video.google.com and youtube.com. IBM developerWorks podcast with Scott Laningham. (local copy of podcast)

  • Make incoming e-mail play custom tunes Make incoming e-mail play custom tunes, Use SoX, and a Perl script to do simple keyword matching and create sound files played back upon receipt of e-mail. No more simple ding to indicate the arrival of an e-mail regardless of recipient, sender, or subject. You can now hear a ding-bang-whoosh signifying an e-mail from your manager, or a bell-squawk-chirp to let you know your bank statement is available. Local cached text. Audio example with glasses, sparcle, space2.Another example with glasses, laser, space3.

  • frustration communication for your linux laptop Frustration communication for your linux laptop, Modify the kernel to automatically reset your linux laptop when shaken during a kernel panic. Implement a shake detection algorithm in the kernel and user space to perform automatic shutdowns and restarts when certain kinetic conditions are met. Place your computer on the leading edge of cathartic interfaces. Local cached text. Videos: On youtube.com and video.google.com

  • Monitor your computing environment with machine generated music Monitor your computing environment with machine generated music, Use Perl and fluidsynth to create a real-time musical composition of your system status. Learn how to integrate various system monitoring data into a harmony producing, midi controlled audio synthesis. Explore audible information methods and configurations to help you monitor and manage your computing environment. Local cached text Audio example with Hammered Instruments (think dulcimer, not intoxicated saxophone), another example with Electronic Sounds, and another with Simple Orchestral instruments. Slashdot discussion


  • Explore relationships among Web pages visually Explore relationships among Web pages visually, The Graphviz program from AT&T Research and others is a fantastic tool for automating the visualization of complicated link sets. This article shows how to combine the Graphviz tool set with Web-page thumbnail generators to create new ways of visualizing any Web page's link structures. You can use these techniques and descriptions to refine your display logic, and create directed and undirected Graphviz charts to enhance your understanding of organizational, software, and other complex linked data sets. Local cached text.

  • Create custom data charting tools using Perl and GD Create custom data charting tools using Perl and GD, Create professional-looking charts for data visualization using Perl and GD. Move beyond standard pie charts to incorporate annotations, indicators, and layering for enhanced informational delivery. Local cached text.

  • Custom cartographics with CAIDA's plot-latlong Custom cartographics with CAIDA's plot-latlong, Using world and custom U.S. maps, Perl, GD, and the Cooperative Association for Internet Data Analysis (CAIDA) plot-latlong tool, this article demonstrates how to create your own effective data visualizations in the spirit of Google maps and the U.S. national atlas. Local cached text.

  • Use Perl and a regular-expression generator to search for and display LDAP database records (part 1) Use Perl and a regular-expression generator to search for and display LDAP database records (part 1), Find out how to use Perl and a regular-expression generator to search and display records from your Lightweight Directory Access Protocol (LDAP) database using simple keyword-type searches. Search and process your LDAP data without knowing precisely which field the data is in or how it is formatted. Part 2 of this "LDAP search engines" series introduces scoring and metaphone suggestions to the code. Local cached text. IBM developerWorks podcast with Scott Laningham. (local copy of podcast)

  • Use Perl and a regular-expression generator to search for and display LDAP database records (part 2) Use Perl and a regular-expression generator to search for and display LDAP database records (part 2), Learn how to add a scoring system to the search engine described in Part 1 of this "LDAP search engines" series. Develop your own metaphone-matching techniques for spelling corrections, query suggestions, and effective display of search results. Local cached text. IBM developerWorks podcast with Scott Laningham. (local copy of podcast)

  • Search structured LDAP data with a vector-space engine Search structured LDAP data with a vector-space engine, Use Perl and a vector-space search engine to search and display records from your Lightweight Directory Access Protocol (LDAP) database. Use inflected letters and numbers to create a useful vector space from structured LDAP data. Compensate for typographical and spelling errors automatically while showing the most appropriate match for any query entered. Local cached text. IBM developerWorks podcast with Scott Laningham. (local copy of podcast)

  • Make your 404 pages smarter with metaphone matching Make your 404 pages smarter with metaphone matching, Create your own 404 error-message handler to provide useful links and redirects for the contents of your site. Use metaphone matching and a simple weighted score file to make typographical, spelling, and bad-link redirect suggestions. Customize the suggestions based solely on your Web site's content and preferred redirection locations. Catch multiple errors in incoming URL requests and process them for corrections in directory, script, and HTML page names. Local cached text.

  • Map places, people, and relationships inside a building. Map places, people, and relationships inside a building, Google and MapQuest do a great job of creating maps of the outside world on the fly. But what about our workspaces? This article shows how to define and map places and people inside a building. Search, track, and plot individual cubicles, rooms, employees, or assets. Graph the location of individuals or groups of employees based on job function, or track unused office space visually. Local cached text.

  • Precipitation proximity alerts using WSR-88D radar data Precipitation proximity alerts using WSR-88D radar data, Traditional weather reports will give notice of vague forecasts and severe weather alerts in your general area. The code and tools presented in this article will allow you to create precise detection zones so you can receive a page, SMS, or e-mail a few minutes before a precipitation event is likely to occur at the monitored location. Use GD and Perl for image processing of the NOAA WSR-88D radar data to create your own precipitation alerts for precise areas. Choose your notification method and let users know when the rain will begin and when it will clear. Local cached text.

  • Take your ThinkPad out for a walk to create wireless site surveys Take your ThinkPad out for a walk to create wireless site surveys, Use the accelerometer embedded in a ThinkPad to record your movements while monitoring your network connectivity. Use custom algorithms to extract footstep features from the recorded data, then automatically plot signal strengths on a floor-plan map to determine the best areas of coverage. Local cached text.

  • Expand your text entry options with keystroke dynamics Expand your text entry options with keystroke dynamics, Measure the total time of entry and verify the time between keystrokes to help authenticate a user regardless of the data being entered. Require nonprintable characters, such as backspace and break, in the password to enable new levels of password obfuscation. Learn how to apply the open source tools xev and Perl in keystroke dynamics to measure the more-subtle characteristics of human-computer interaction. Local cached text.

  • Create automated verbal conversation annotations Create automated verbal conversation annotations, Use the open source Sphinx-4 speech-recognition package to capture letters and numbers from spoken conversations in near real time to create notes. Employ a custom Sphinx-4 dictionary file to extract likely matches to spoken letters and numbers. Process the text for higher order values such as phone numbers and acronyms, and create a meeting annotator through search-engine lookups and local databases. Local cached text.

  • Add multitouch gesture support to a TouchPad-equipped laptop Add multitouch gesture support to a TouchPad-equipped laptop, published on IBM developerWorks. Implement swipe and pinch gestures for Linux applications by analyzing tools and code needed to add some of this new gesture support on older Linux-enabled hardware. Building on the output of the synclient program, the Perl code presented here allows you to assign specific application functions to "Three-Finger Swipe," as well as Open- and Close-Pinch gestures. Local cached text. Demonstration video at youtube.com Comments on digg. Writeup at hackszine and lwn.net.

  • Identify speakers with sndpeek Identify speakers with sndpeek, Use sndpeek and custom algorithms to match voices to a pre-recorded library. Create applications to let you know who is speaking in teleconferences, podcasts, and live media events. Build basic assistance programs to help the hearing-impaired identify speakers in a bandwidth-limited context. Local cached text. Demonstration video at youtube.com

  • Identify and verify users based on how they type Identify and verify users based on how they type, Modify the GNOME Display Manager (GDM) to support user verification through keystroke-dynamics processing. Create and store a one-way encrypted hash of your keystroke patterns when entering your user name. Add code to GDM to read current keystroke patterns and permit a user to log in when the characteristics are a match. Local cached text. Slashdot discussion. Writeup at hackszine

  • ThinkPad aerobics: Rotate and shake your laptop to control applications ThinkPad aerobics: Rotate and shake your laptop to control applications, Use synthetic X Window System events and embedded accelerometers to control applications by the movement of a laptop computer. Translate gestures, such as shaking, into mode-switching commands with detection algorithms to interact with applications in new ways. Develop tools to help build the next generation of interfaces that use accelerometers, such as applications for laptops and iPhones. Local cached text. Demonstration video at youtube.com

  • Create time-availability maps with Perl and Google Earth Create time-availability maps with Perl and Google Earth, Time-availability maps provide a listing of who is most likely to be available for a certain hour in a certain location. Find out how to use Google Earth and a log of your communications to map and identify the time and place when availabilities match. Local cached text. Featured in an IBM developerWorks podcast with Scott Laningham. (local copy of podcast)

  • Beef up the Find command in Firefox Beef up the Find command in Firefox, The Find command in Firefox locates the user-specified text in the body of a Web page. The command is an easy-to-use tool that works well enough for most users most of the time. Sometimes, however, a more powerful Find-like tool would make locating text easier. This article shows how to build a tool that isolates relevant text in Web pages faster by detecting the presence and absence of nearby words. Local cached text.

  • Integrate encryption into Google Calendar with Firefox extensions Integrate encryption into Google Calendar with Firefox extensions, Provide basic encryption support for user data in one of the most popular online calendar applications. Building on the incredible flexibility of Firefox extensions and the Gnu Privacy Guard, this article shows you how to store only encrypted event descriptions in Google's Calendar application, while displaying a plain text version to anyone with the appropriate decryption keys. Local cached text, Slashdot Discussion

  • Visualizing time-dependent data with distortion portals Visualizing time-dependent data with distortion portals, Create an SDL-enabled application that allows you to create distortion portals in sequential image frames to explore the relationship of data sets through time. This article demonstrates code and techniques to create "animated distortion portals" in the data to provide time-dependent visualizations of various parts of the image. Additionally, certain aspects of the code are presented that allow for effective visualization on slower-computing platforms without sacrificing usefulness. Local cached text, Demonstration video at youtube.com

  • Write a Firefox extension to rotate images in online mapping applications Write a Firefox extension to rotate images in online mapping applications, Most online mapping applications assume that the desired view is always north at the top of the image. This article presents tools and code that show how to replace the map image with an inverted copy, where south is at the top. Using a Firefox extension and the Imager Perl module, each tile that comprises the full image is extracted, rotated, and placed back in the image at the appropriate spot. cached text.

  • Create a continuous keystroke-dynamics monitor with Perl and xev Create a continuous keystroke-dynamics monitor with Perl and xev, Keystroke dynamics is a relatively new field that enables identification of individuals through statistical analysis of their typing patterns. Previously published articles on developerWorks have shown how to integrate the concept of keystroke dynamics into your applications, as well as a real-world example of modifying Gnome Display Manager (GDM) to require a correct password and a "correctly typed" password. This article presents tools and code allowing you to move beyond a single application of keystroke dynamics, and monitor your entire X Window System environment continuously for characteristic patterns of the typist. Local cached text.

  • Creating altitude attribute-enhanced image overlay maps in Google Earth Creating altitude attribute-enhanced image overlay maps in Google Earth, Recent applications have greatly increased the ease of development and ubiquity of 2-D maps. Tools like Microsoft® Live Search Maps and Google Maps offer a wealth of tools for enhancing these single-plane maps, but often ignore altitude as the third dimension of information. This article presents tools and code to allow you to extract height information based on pixel colors, and apply that height information across the mapping context. The end result is a third dimension of data, showing more information in the same space and opening up new methods of visualization for your map users. Local cached text.

  • Improve focus tracking indicators across multiple monitors Improve focus tracking indicators across multiple monitors, Unlike traditional single-screen setups, multi-screen display systems require special consideration for user interfaces (UIs). This article presents tools and code designed to address the acquisition and change of input focus across multiple displays. By enhancing existing X Window System focus information using Ghosd displays and the Synergy debug-level output, multi-screen users can know precisely where their input focus is even on displays 4200x3150 pixels and larger. Local cached text.

  • Shut do
wn idle computers on your network automatically Shut down idle computers on your network automatically, recent pushes for "green" technology focus mostly on talk, with little action for the typical home- or small-office environment. Many users leave their systems online continuously through laziness or ignorance, resulting in a significant source of power consumption, as well as an additional vector for malware propagation. The tools and code presented here allow you to find those inactive systems and securely start the shutdown process. With a Linux® box monitoring your network connections using Argus and some custo Perl code, any system that supports Perl can be set to be remotely shut down when a centralized set of inactivity rules are m et. Local cached text.

  • Reduce your PC's power consumption through smart activity monitors Reduce your PC's power consumption through smart activity monitors, Monitor application usage, system attributes, and user activity to more effectively use the power-management systems of your laptop or desktop computer. This article provides tools and code to build on existing power-saving measures by monitoring your application-usage patterns. Use the techniques presented here to change your power settings based on the application in focus, user activity, and general system performance. Local cached text. IBM developerWorks podcast with Scott Laningham (Local copy of podcast)

  • Expand your user-authentication options with mouse dynamics Expand your user-authentication options with mouse dynamics, Use Perl, cnee, and custom algorithms to measure how specific users move the mouse and click buttons. In this article, we discuss how mouse-click hold times, or a combination of keyboard and mouse activity can enable new levels of access-requirements obfuscation. Learn how to apply the open source tools cnee and Perl in applications to measure the characteristic attributes of how users manipulate the mouse. Local cached text.

  • Ho
w to ungrab Firefox hotkeys from Flash players How to ungrab Firefox hotkeys from Flash players, Flash players and o ther embedded applications in Firefox require their own hooks for keyboard and mouse input . For years, Flash has grabbed Firefox keypresses, which stops people from using the keybo ard for navigation, creating new tabs, or even exiting the Flash focus. Learn how to creat e a Perl program that communicates with a Firefox extension and cnee to restore your keybo ard functionality, Local cached text.

  • Social-networking open source visualization aids Social-networking open source visualization aids, Social-networking data analysis can help you understand content, connections, and opportunities for your personal and business associations. This article presents tools and code to extract key components of your social network using the Twitter API to chart, geolocate, and visualize your social-networking data. Local cached text. IBM developerWorks Podcast with Scott Laningham. Local copy of Podcast.