Archive for the ‘Development’ Category

Heads Up!

Monday, January 16th, 2006

It looks like the WebKit folks just checked in a cool new tool for browsing the DOM. It looks to be a slick and infinitely useful utility for web developers, but what struck me the most was that the HUD-style window and widgets would be open source for all Cocoa developers to use! Well, I thought wrong, most of the HUD interface was done in HTML (WebKit/WebInspector.subproj/webInspector/inspector.html), but the artwork would probably provide someone a good starting point for developing HUD (sub)classes.

TabMark: “if I had a dime for every NetNewsWire tab…”

Wednesday, October 26th, 2005

Space, Return, Space, Space, Space, Space, Return, Space, Space, Space, Return

The preceding was an example of how I use NetNewsWire. Space moves to the next unread item, and return will open a new browser tab in NetNewsWire that will load its associated web page. When I am finally done scanning through all unread items, I’ll then go through the browser tabs I’ve opened and read the article. Or, so I try.

Often I will be too busy, too distracted, or too lazy to read all the pages I have opened. A blessing or a curse, NetNewsWire’s persistent tabs pile up to an insurmountable stack. This eventually reaches the point where it begins to slow down NetNewsWire’s launch time, and in the case of syncing to another machine, the entire app grinds to a halt as it attempts to load every new tab it has discovered.

It was such a situation I was in tonight, when trying to sync 87 browser tabs to my 800 Mhz iBook. After about 5 minutes of waiting, I decided it would be best to offload the browser tabs so I wouldn’t be in the same position again. I started a race to see if I could create an app that would import my NetNewsWire tabs into Safari bookmarks before my iBook finished loading.

I lost the battle, but won the war (in only 62 lines of code, no less). Say hello to TabMark:


most boring UI evar

Here’s how you use it:

  1. Open a bunch o’ tabs in NetNewsWire
  2. Launch TabMark
  3. Optionally remove or rename the bookmarks
  4. Click “Export…” and choose a location for the file
  5. Either open the file to view your bookmarks, or import them into Safari through the “Import Bookmarks…” item in the File menu.
  6. Option-click a tab’s close button in NetNewsWire to close all tabs

Like all good Web 2.0 software, TabMark is in an eternal beta, and is provided “as is” with no guarantees.

Download TabMark

HyperEdit 1.5 Released!

Monday, June 20th, 2005

Today I released HyperEdit 1.5! HyperEdit is my live HTML and PHP editor with W3C validation. The new version has the following changes:

  • New color swatches palette allows inserting colors and saving favorites
  • The web preview can be torn off into a separate window
  • The document can be previewed in different browsers
  • Linked files for a document are preserved
  • Dragging images into the editor will generate an HTML image tag
  • Snippets can be dragged to and from the editor
  • Validation errors can be skimmed with control-up/down
  • Preference to not create blank documents automatically
  • Preference to not load the web preview when a file is opened
  • Find/replace correctly updates the web preview
  • Resizing the document will only resize the web preview
  • Disabled “smart delete” when pasting
  • Fixed bug where the Validator would think the user was not an administrator
  • Fixed hangs and crashes related to Mac OS X 10.4 Tiger
  • Other bug fixes and minor performance improvements

Overall, I think it is a great release which adds many requested features and fixes lots of bugs. Please contact me if you run into any problems with the new version.

Mixed Reality Tabletop

Sunday, April 3rd, 2005

Andrew Wooster, Minister of Search:

The projection map table was basically a large touch screen table which allowed people to manipulate a globe-like map by touch, zooming in and out and overlaying different satellite and topographical data sets.

It seems that Northrup Grumman put together an interactive tabletop for military cartography and simulations. There’s a pretty cool demo video on their site.

This reminded me of my research at Purdue: the Mixed Reality Tabletop (MRT for short). The main difference between the two setups is that the Northrup Grumman table uses touch sensitivy on the table itself, wheras we opted to used a camera mounted overhead and analyzed the video to detect actions. This meant we had to worry about lighting conditions, shadows, and camera calibrarion. Our system was really designed to be a collaborative medium where two people could share the same tabletop, so the camera was a natural choice to use for such purposes. I think the videos on our site show that the image detection method can work well and allow users to perform advanced operations such as drag-and-drop of virtual objects (due to Dan Belkins’ great work). Of course, the other real advantages of MRT is that it costs 100 times less than the Northrup Grumman system, and you can play games such as Networked Tic-Tac-Toe and Pong on ours (my work!).

Hearts and Minds

Friday, April 1st, 2005

In light of WordPress controversy, I have come to realize that conducting business ethically is truly in the best interest of the business itself. The WordPress community has suffered a serious blow, one that could have easily been averted if the founder would have been more upfront about his revenue streams. I do not want to see HyperEdit tarnished in the same matter, so I’m going to be upfront about one of the slightly-less-than-ethical techniques I use to increase HyperEdit sales. People often tell me how much they love HyperEdit. While I’m definitely flattered, this comes as no surprise to me.

Anyone who has seen Saved By The Bell knows of the episode where Zack puts a subliminal message in a tape for Kelly Kapowski to try to convince her to go to a dance with him. The point of a subliminal message is to use the power of suggestion in a way not conscious to the person, but that still gets processed by their brain. Zack used a frequency spectrum that went unnoticed because the brain receives the signal, but filters it out.

HyperEdit uses a similar technique, but with vision. In order to increase sales and win the hearts and minds of my users, I have embedded an image in the preview pane of HyperEdit that says, “I love HyperEdit!” (”I,” instead of “you,” because studies show the message should be written in a way that the user would say it themselves). Because of how it is displayed, the brain filters it out, but the suggestion still gets embedded in the subconscious. Here’s a snapshot of what it looks like:

As you can see, the image is very light and blurry — barely noticeable. It actually only gets displayed for one frame every 5 minutes, and is synced to the monitor’s refresh rate. Thus, if your monitor has a vertical refresh rate of 75 hz, this image will be displayed once every 22,500 frames in a span of 5 minutes. Since the human eye cannot perceive much beyond 60 hz, the small flash gets filtered out by the brain. The risk of people noticing it is further diminished by the fact that most people when using HyperEdit focus on the editor pane, thus the preview pane is still slightly out of focus.

So, if after using HyperEdit, found yourself in love with the little app, I’m sorry to say it isn’t because of its usefulness, but because of my unethical business practices. Depending on how the community reacts, I may remove this feature from the next version. Hopefully being upfront about this will avert any crisis.

del.ico.us Smart Tagging Version 1.1

Wednesday, February 16th, 2005

As you may be able to see from looking at my blog, I’ve finally gotten around to making some improvements to the del.icio.us Smart Tagging Plugin for WordPress. Version 1.1 of the plugin has the following changes:

  • Link image is less saturated, unless you are mousing over the link (Daniel J. Wilson’s suggestion)
  • It only links to the first occurrence of a particular tag per post (Jason’s suggestion)
  • It does not link inside <a> tags.
  • The cache file for tags is simply called “deliciousTagCache.txt” now.
  • Other parsing fixes.

I think it works a lot better and is much less visually distracting. This version is a little slower than the previous version, however. Also a word of warning: if del.icio.us happens to go down, then your blog may become inaccessible once the tag cache expires. It may also take a while to build the tag cache if you have lots lof links/tags. You can always disable the plugin from the wp-admin interface if this happens for an extended period of time.

Installation Instructions

  1. Download deliciousTagging.zip.
  2. Edit lines 12 and 13 of deliciousTagging.php so it has your del.icio.us username and password.
  3. Place the contents (not the folder itself) of the deliciousTagging folder in your wp-content/plugins. This is 5 files.
  4. Make sure the deliciousTagCache.txt file has write permissions. If you have command-line access, you can type:
    chmod 766 deliciousTagCache.txt
  5. Activate the plugin in Wordpress through the Plugins tab of the wp-admin interface!

As always, feedback is welcome!

del.icio.us Smart Tagging Plugin for WordPress

Sunday, December 5th, 2004

As you may have noticed, there are lots of little checkered images in my blog now. These are links to my del.icio.us tags. I decided it would be interesting if my blog was smart tagged so people who read entries on this blog could visit my del.icio.us links on the subject to learn more about what I am discussing. So now, if I discuss programming, Cocoa, or Smalltalk, there will be some personally-picked references to visit. Hopefully this will be useful and not distracting.

If you’d like to add this capability to your WordPress blog (or modify it to another other system), here is the source code:

deliciousTagging.zip (view source)
deliciousIcon.gif

Place these files in wp-content/plugins. In deliciousTagging.php, make sure to set the del.icio.us login and password, and also check to make sure the cache directory has proper write permissions. The code isn’t perfect — the regular expressions for identifying when to tag needs to be improved and the links aren’t aligned properly when viewing in NetNewsWire. Feel free to fix it and send me the new code.

UPDATE: Version 1.1 and better installation instructions are available here.

Rich Text Plugin for SourceTab

Saturday, November 13th, 2004

One of my experiments for SourceTab is to have an open plugin architecture that allows heterogeneous types of tabs. Types go beyond C, C++, Perl, HTML, etc. files — I want source editors alongside web browsers, image viewers, or whatever other plugin someone would like to add to SourceTab. I’ve already created the basic source code and web browser plugins. Having a web browser right next to the editor is extremely useful for looking up documentation.

After being told that SourceTab was used for taking notes in class, I realized plain text notes must suck, so tonight I wrote a plugin for editing rich text documents in SourceTab!


click for a larger view

You can open and edit RTF and Microsoft Word files. The Word formatting is of course messed up a bit on complex documents since it uses Cocoa’s .doc handling, but gets the job done. Adding rich text support only took an hour and about 40 lines of new code.

Now back to work on HyperEdit!