<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-31847778</id><updated>2010-02-09T15:56:10.966+01:00</updated><title type='text'>Nifty Box News</title><subtitle type='html'>News concerning the Mac tagging application "Nifty Box"</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nifty-box.com/blog/feed/atom.xml'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-31847778.post-5673322051530380812</id><published>2009-08-09T21:02:00.003+02:00</published><updated>2009-08-09T21:08:46.479+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenMeta'/><title type='text'>OpenMeta Exporter</title><content type='html'>I've just released the new OpenMeta exporter for Nifty Box. This is a stand-alone tool for exporting file-tags from Nifty Box to OpenMeta.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/openmeta/"&gt;OpenMeta&lt;/a&gt; is an open tagging format initially created by &lt;a href="http://www.yepsoftware.com/"&gt;ironic software&lt;/a&gt; and now a &lt;a href="http://code.google.com/p/openmeta/wiki/OpenMetaApplications"&gt;couple&lt;/a&gt; of applications support OpenMeta.&lt;br /&gt;&lt;br /&gt;How to use the OpenMeta Exporter: Unzip the application, start it and follow the instructions. After the completion of the export every OpenMeta-aware application should be able to access the file-tags from Nifty Box.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nifty-box.com/downloads/OpenMeta_Exporter.zip"&gt;download link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-5673322051530380812?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/5673322051530380812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/5673322051530380812'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2009/08/openmeta-exporter.html' title='OpenMeta Exporter'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-7795541483748141944</id><published>2009-06-26T21:21:00.009+02:00</published><updated>2009-08-09T21:14:15.786+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>The Future of Nifty Box</title><content type='html'>Today I am releasing an update for Nifty Box. It introduces an enhanced mechanism to semi-automatically relocate lost file links. Usually Nifty Box will have no problems accessing files using Apple's alias technology, but this is true only if the files stay on the same hard-drive. If you move them to another hard-drive Nifty Box might need some help to correctly find the files at their new location. With version 1.3 a new assistant as well as a new library view ("Lost Links") have been included. You will find more information about this in Nifty Box's help documentation.&lt;br /&gt;&lt;br /&gt;Some time has passed since version 1.2 and I have to admit that the development process of Nifty Box has been rather slow. This is because I was very busy doing freelance IT consulting. Slowly I became kind of detached from Nifty Box and lost the passion to keep on working on it as a side project. In the last couple of months I thoroughly pondered what my real interests are and made a decision to start a career in the space industry. If you look at the old screenshots on the Nifty Box homepage you might have guessed that I had this fascination all along.&lt;br /&gt;&lt;br /&gt;Beginning with July 1st I am starting a new job and because of that &lt;u style="font-style: italic;"&gt;I will stop the further development of Nifty Box&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;What does this mean?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First of all, this new version (1.3) is a free release and I will stop selling Nifty Box. From now on Nifty Box will be &lt;span style="font-style: italic;"&gt;freeware&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Of course there will be bug-fix releases if needed, but I am not planning to implement new features for Nifty Box.&lt;br /&gt;&lt;br /&gt;The old contact channels will be kept open for you: you can either use the &lt;a href="http://www.nifty-box.com/contact/"&gt;contact form&lt;/a&gt; or simply use the email address given on the contact page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Transition: What to do with your data?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Needless to say, Nifty Box will continue working: there is no expiration date built in. But in case you want to use another tagging application in the future there are several ways you could extract the tagging data from Nifty Box and use it in the other  tagging application:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Spotlight Comments&lt;/span&gt;&lt;br /&gt;This is perhaps the easiest way to extract tags from Nifty Box. Just set "Export tags to Spotlight" in the preferences and all tags will be written to the Finder's Spotlight Comment field. Find out if the target application needs a special tag prefix (like e.g. "@") and set the tag prefix accordingly.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;AppleScript&lt;/span&gt;&lt;br /&gt;You can very easily transfer the tags for all Nifty Box items using AppleScript (if the target application does support AppleScript too). Please find information about Nifty Box's AppleScript interface &lt;a href="http://www.nifty-box.com/applescript_an.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;XML Export&lt;/span&gt;&lt;br /&gt;Nifty Box offers an export of the complete tagging database in XML format. You can access this feature via "File &gt; Export Database…". The format of the resulting XML file is explained in the Nifty Box help file.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;OpenMeta&lt;/span&gt; (unsupported)&lt;br /&gt;&lt;a href="http://code.google.com/p/openmeta/"&gt;OpenMeta&lt;/a&gt; is a new tagging standard proposed by &lt;a href="http://www.ironicsoftware.com/"&gt;Ironic Software&lt;/a&gt;. There are quite a couple of applications that support OpenMeta. Currently Nifty Box does not support OpenMeta and I am not planning to implement a complete interface for it. So OpenMeta will not be officially supported in Nifty Box. That's the bad news.&lt;br /&gt;&lt;br /&gt;The good news is, that I am working on a simple stand-alone extract utility. It will help you to move Nifty Box tagging data to OpenMeta. Once this utility is finished it will be released via this blog (so please subscribe to the feed in case you not already have!).&lt;br /&gt;&lt;br /&gt;[edit 2009-08-10: I have completed the OpenMeta exporter. Please see details in &lt;a href="http://nifty-box.com/blog/2009/08/openmeta-exporter.html"&gt;this&lt;/a&gt; blog posting.]&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Finally...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So at this point I want to like to say a big &lt;span style="font-weight: bold;"&gt;"Thank You!"&lt;/span&gt; to all the customers and users of Nifty Box! I hope that Nifty Box indeed does help you to organise your stuff and you keep on having fun using the application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-7795541483748141944?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/7795541483748141944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/7795541483748141944'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2009/06/future-of-nifty-box.html' title='The Future of Nifty Box'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-1150680263777282814</id><published>2009-05-19T17:10:00.008+02:00</published><updated>2009-05-19T18:43:00.400+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><category scheme='http://www.blogger.com/atom/ns#' term='AppleScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Spotlight Importer</title><content type='html'>Many people asked for an easy way to automatically import files into Nifty Box by using their Spotlight comments. I have created a small tool that will do just that:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nifty-box.com/blog/uploaded_images/screenshot-789294.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 362px;" src="http://nifty-box.com/blog/uploaded_images/screenshot-789290.jpg" alt="" border="0" /&gt;&lt;/a&gt;First you choose a folder to import from (the original files wont be moved. Only aliases will be added to Nifty Box that will link to them). Here you can specify if subfolders will be imported too.&lt;br /&gt;&lt;br /&gt;As a second step you can specify a tag prefix ("&amp;amp;" or "@") or leave it blank ("none"). If a tag prefix is specified, only tags will be imported having this prefix.&lt;br /&gt;&lt;br /&gt;After clicking "Start Import" the importer will scan the Spotlight comments of all files in the given folder (and its subfolders if specified). If it finds relevant tags (taking into account the optional tag prefix) the tool will import the files into Nifty Box and set the tags in Nifty Box accordingly.&lt;br /&gt;&lt;br /&gt;During the operation log messages are written to the text window at the bottom of the importer.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nifty-box.com/downloads/Spotlight_Importer.zip"&gt;download Nifty Box Spotlight Importer now&lt;/a&gt;&lt;br /&gt;(Note: This tool only works on Leopard. )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Programmer's note:&lt;br /&gt;&lt;br /&gt;The importer is a cocoa application. But the cocoa "application" is just a wrapper for a python script that itself is just a wrapper for a couple of applescript functions. I've chosen to do it in such a rather odd way, because I had to use applescript as it can talk to Nifty Box and the Finder.&lt;br /&gt;&lt;br /&gt;But applescript is rather a mess to deal with [&lt;a href="#f1n"&gt;1&lt;/a&gt;]. So for all the infrastructure I've used python. (I know, I could have taken the "appscript" module from python and get rid of all the applescript stuff, but that would have been just half the fun...)&lt;br /&gt;&lt;br /&gt;If you like, take a look at the python  &lt;a href="http://www.nifty-box.com/source/tiny_ascript.py"&gt;source file&lt;/a&gt;. It contains a very, very basic python-to-applescript value converter (for strings and lists).&lt;br /&gt;&lt;br /&gt;Included is a small replacement for the split() method of the string class, which can handle quotation marks.&lt;br /&gt;&lt;br /&gt;If you have for example a string like:&lt;br /&gt;&lt;pre&gt;    a = 'aa "bb cc"'&lt;/pre&gt;The standard split function would yield:&lt;br /&gt;&lt;pre&gt;    a.split() -&gt; ['aa', '"bb', 'cc"']&lt;/pre&gt;The function words() parses the quoted string as a single entity:&lt;br /&gt;&lt;pre&gt;    words(a) -&gt; ['aa', 'bb cc']&lt;/pre&gt;&lt;br /&gt;The module is released as open source under the BSD license, so feel free to copy, rip apart, whatever.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[&lt;a name="f1n"&gt;&lt;font color=#000000&gt;1&lt;/font&gt;&lt;/a&gt;] As Joshua Hart &lt;a href="http://twitter.com/Golabutron/status/1342940949"&gt;tweeted:&lt;/a&gt; "AppleScript is easy to read but difficult to write.  I call it the Anti-Perl." This sums up my experiences pretty well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-1150680263777282814?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/1150680263777282814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/1150680263777282814'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2009/05/spotlight-importer.html' title='Spotlight Importer'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-1521437363582444383</id><published>2008-08-07T13:08:00.003+02:00</published><updated>2008-08-07T13:15:57.148+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>Bug-Fix 1.2.1</title><content type='html'>There has been a nasty bug in version 1.2 that would sometimes cause Nifty Box on Leopard to use 100% CPU time after closing a window, but leaving Nifty Box running. This has been due to a bug in a NSObject category I implemented for dealing with delayed messages (I've written about this &lt;a href="http://nifty-box.com/blog/2006/12/nsinvocation-cleans-code.html"&gt;here&lt;/a&gt; and gave a brief explanation for those interested in Objective-C).&lt;br /&gt;For all those not interested in the details: The bug has been fixed and using the new version is recommended.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-1521437363582444383?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/1521437363582444383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/1521437363582444383'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2008/08/bug-fix-121.html' title='Bug-Fix 1.2.1'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-4908378957475880157</id><published>2008-08-01T10:02:00.003+02:00</published><updated>2008-08-01T10:10:33.073+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><category scheme='http://www.blogger.com/atom/ns#' term='AppleScript'/><title type='text'>Nifty Box 1.2</title><content type='html'>Nifty Box version 1.2 is ready for download!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This release adds AppleScript support to Nifty Box. Now you can access your Nifty Box tagging database through AppleScript or tag new items automatically. You can find some examples &lt;a href="http://www.nifty-box.com/applescript_an.html"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-4908378957475880157?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/4908378957475880157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/4908378957475880157'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2008/08/nifty-box-12.html' title='Nifty Box 1.2'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-5652518058736959283</id><published>2008-05-15T16:08:00.007+02:00</published><updated>2008-05-15T18:24:40.822+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><category scheme='http://www.blogger.com/atom/ns#' term='AppleScript'/><title type='text'>AppleScript for Nifty Box</title><content type='html'>&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/span&gt;There is a new beta version of Nifty Box available for testing.&lt;br /&gt;&lt;br /&gt;This version introduces AppleScript support for Nifty Box. Now you can tag files and web bookmarks automatically via AppleScript and much more. Just take a quick look at &lt;a href="http://www.nifty-box.com/applescript_an.html"&gt;brief tour&lt;/a&gt; of the Nifty Box AppleScript interface!&lt;br /&gt;&lt;br /&gt;If you are interested in testing the new beta version: download the beta from &lt;a href="http://www.nifty-box.com/apps/Nifty_Box_1.1.7BETA.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Please bear in mind that this version is beta quality&lt;/span&gt;!&lt;br /&gt;So please make a backup copy of your Nifty Box database located in ~/Library/Application Support/Nifty Box/NiftyBoxDB.sqlite before running the beta version.&lt;br /&gt;&lt;br /&gt;If you have any questions please do not hesitate to use the &lt;a href="http://nifty-box.com/contact/"&gt;contact page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-5652518058736959283?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/5652518058736959283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/5652518058736959283'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2008/05/applescript-for-nifty-box.html' title='AppleScript for Nifty Box'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-4332063608321307703</id><published>2007-11-05T14:00:00.000+01:00</published><updated>2007-11-08T21:14:51.661+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Switching Hoster</title><content type='html'>In the next days I will be switching the hoster for nifty-box.com.&lt;br /&gt;&lt;br /&gt;Update Nov. 8: Now the migration is finished. Everthing seems to be running alright.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-4332063608321307703?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/4332063608321307703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=4332063608321307703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/4332063608321307703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/4332063608321307703'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2007/11/switching-hoster.html' title='Switching Hoster'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-1717942661428502343</id><published>2007-10-26T13:05:00.001+02:00</published><updated>2007-11-05T14:34:05.957+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>New Nifty Box version for Leopard</title><content type='html'>Today is the day of the Leopard.&lt;br /&gt;&lt;br /&gt;I made some small fixes so that Nifty Box plays well with the new Mac OS X release. There are no new features in this release (sorry for that), only one small added choice in the "View Options" for triggering what to display in the item table tool tips.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-1717942661428502343?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/1717942661428502343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=1717942661428502343' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/1717942661428502343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/1717942661428502343'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2007/10/new-nifty-box-version-for-leopard.html' title='New Nifty Box version for Leopard'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-2486469514968147134</id><published>2007-08-25T12:37:00.000+02:00</published><updated>2007-08-25T12:43:51.241+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Lost Mail</title><content type='html'>I am very sorry, but it looks like I lost messages sent through the web contact formular. If you've sent some inquiry using the web formular and did not receive a response it's because of that. I am very, very sorry for that. Now everything should be fixed again.&lt;br /&gt;&lt;br /&gt;In the meantime I did move to a new flat in Düsseldorf, Germany. Now I will have to set up everything and start working again on Nifty Box, especially making NB ready for Leopard. More about that later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-2486469514968147134?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/2486469514968147134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=2486469514968147134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/2486469514968147134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/2486469514968147134'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2007/08/lost-mail.html' title='Lost Mail'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-8539763305014853544</id><published>2007-07-02T19:34:00.000+02:00</published><updated>2007-07-02T19:46:56.975+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Killing bugs...</title><content type='html'>Yesterday I released a new bug fix for Nifty Box 1.1.2. Details can be found &lt;a href="http://www.nifty-box.com/changes/whatsnew.html"&gt;here&lt;/a&gt;. A big thanks to all who reported bugs and helped with the beta testing for this release!&lt;br /&gt;&lt;br /&gt;Currently I am not making as much progress with NB 1.2 as I wish. This is mainly due to a new consulting job I've been working on since April, which takes up most of my time. Additionally I am looking for a new flat, so things are a bit chaotic right now. I hope that I will be able to work more constantly on NB 1.2 soon.&lt;br /&gt;&lt;br /&gt;The feature set for 1.2 has not been decided yet, but I think the two most important features will be Spotlight import and AppleScript support. Spotlight import will help you to more-or-less automatically import new files into NB if they were tagged via the Spotlight comment field. This way you can import files, tagged by other tagging application as long as they also use the Spotlight comment field.&lt;br /&gt;&lt;br /&gt;Making NB AppleScript-able is something I've always wanted to do, but I somehow did not find the time for it. Now I am going to do my homework and make NB a good mac citizen. This way you can use NB for an even better organization of your documents.&lt;br /&gt;&lt;br /&gt;The 1.2 release is planned for autumn this year. I know, I've been quite lazy updating this blog for some time. In the future I will write more frequently and let you know how the development of NB 1.2 is getting on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-8539763305014853544?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/8539763305014853544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=8539763305014853544' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/8539763305014853544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/8539763305014853544'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2007/07/killing-bugs.html' title='Killing bugs...'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-7149067612708921539</id><published>2007-03-19T19:08:00.000+01:00</published><updated>2007-03-19T19:20:24.492+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Nifty Box update</title><content type='html'>Today I released I small update for Nifty Box, now version 1.1.1.&lt;br /&gt;&lt;br /&gt;Nothing much has changed: You now can choose the "&amp;amp;" symbol as a prefix in the Spotlight comments, which should be more convient when using the Spotlight quick search (at least in Tiger).&lt;br /&gt;&lt;br /&gt;As a second addition you are now free to choose the side for the tag index drawer: left or right (adjustable in "View options").&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-7149067612708921539?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/7149067612708921539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=7149067612708921539' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/7149067612708921539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/7149067612708921539'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2007/03/nifty-box-update.html' title='Nifty Box update'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-4701696200505619300</id><published>2007-03-13T15:29:00.000+01:00</published><updated>2007-03-13T15:34:50.130+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Nifty Box 1.1 is here</title><content type='html'>Finally Nifty Box 1.1 is ready for &lt;a href="http://www.nifty-box.com/downloads/Nifty_Box_1_1.dmg"&gt;download&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are some couple of new things, most of all &lt;a href="http://nifty-box.com/blog/2007/02/tag-clouds-everywhere-nifty-box-11.html"&gt;tag clouds&lt;/a&gt; and &lt;a href="http://nifty-box.com/blog/2006/12/new-feature-for-11-spotlight-export.html"&gt;Spotlight export&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As you might notice I've also changed the design of the homepage. I hope you like it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-4701696200505619300?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/4701696200505619300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=4701696200505619300' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/4701696200505619300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/4701696200505619300'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2007/03/nifty-box-11-is-here.html' title='Nifty Box 1.1 is here'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-205315393780933674</id><published>2007-02-24T18:20:00.000+01:00</published><updated>2007-03-13T15:25:01.200+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Tag Clouds everywhere (Nifty Box 1.1)</title><content type='html'>I am proud to announce, that finally Nifty Box 1.1 is ready and will be released next week (if all goes to plan). Version 1.1 will not only feature &lt;a href="http://nifty-box.com/blog/2006/12/new-feature-for-11-spotlight-export.html"&gt;Spotlight export&lt;/a&gt;, but it will also include tag clouds and a hierarchical tag organisation.&lt;br /&gt;&lt;br /&gt;One reason I wrote Nifty Box was, that I thought a hierarchical file structure, where every file has to be put into a tree-like folder/directory path, should be a thing of the past. Tags could be a good way to "put" a file into more than one category. But a pure &lt;span style="font-style: italic;"&gt;flat&lt;/span&gt; tag organization might throw away useful information about the relationship between the tags/categories. So now NB 1.1 will feature tag folders: you put the tags into a hierarchical tree (if you want to), but not the files.  So you can construct a tree like "Science -&gt; Space -&gt; Mars", where "Science" and "Space" are folders and "Mars" is the actual tag. If you then select for example "Science" Nifty Box will show you all items, that have a tag from the "Science" tree. More or less this works like folders and playlists in iTunes.&lt;br /&gt;&lt;br /&gt;But this is just &lt;span style="font-style: italic;"&gt;organization&lt;/span&gt;, now the &lt;span style="font-style: italic;"&gt;visualization&lt;/span&gt;: Everyone who uses tags knows that after some time the number of tags grows quite fast and browsing them in a list can be quite confusing. Therefore some wise people have created the so called tag clouds, which were one ingredient of web 2.0 right from the beginning. Now - to help you managing your tags - Nifty Box will also feature tag clouds in the tag tree. This is how it will look like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nifty-box.com/blog/uploaded_images/screenshot-788113.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 355px; height: 229px;" src="http://nifty-box.com/blog/uploaded_images/screenshot-785670.jpg" alt="" border="0" /&gt;&lt;/a&gt;But if you are confused by all these clouds and don't like modern things, you can still use the traditional list view for the tags:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nifty-box.com/blog/uploaded_images/screenshot_list-737796.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://nifty-box.com/blog/uploaded_images/screenshot_list-735598.jpg" alt="" border="0" /&gt;&lt;/a&gt;I still have to do some final adjustments, but I hope Nifty Box 1.1 will be ready by the end of next week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-205315393780933674?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/205315393780933674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=205315393780933674' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/205315393780933674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/205315393780933674'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2007/02/tag-clouds-everywhere-nifty-box-11.html' title='Tag Clouds everywhere (Nifty Box 1.1)'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-6839126762799635542</id><published>2007-02-03T12:41:00.001+01:00</published><updated>2007-02-03T19:35:21.371+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Sorry for the delay...</title><content type='html'>I know, I am really behind schedule for the 1.1 release of Nifty Box. The two main new features took much more time than I thought, but I think most of 1.1 will be ready in the next days for the beta testers. After that I only have to update my web-site (the current design really sucks) and adjust the help file.&lt;br /&gt;&lt;br /&gt;I am looking forward to releasing 1.1 later in February, because I think this release will be a huge step forward. In the next days I will write a bit more about the new tag organization feature of Nifty Box 1.1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-6839126762799635542?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/6839126762799635542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=6839126762799635542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/6839126762799635542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/6839126762799635542'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2007/02/sorry-for-delay.html' title='Sorry for the delay...'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-3913523964064524749</id><published>2006-12-27T17:34:00.000+01:00</published><updated>2006-12-27T17:45:42.438+01:00</updated><title type='text'>MacSanta is over</title><content type='html'>A huge THANKS to the guys at &lt;a href="http://www.rogueamoeba.com/"&gt;Rogue Amoeba&lt;/a&gt; for organizing the  &lt;a href="http://www.macsanta.com/"&gt;MacSanta&lt;/a&gt; sales! It's been a great opportunity for me and  other small developers out there. When you start as a new developer it's kind of hard to get the word out and make people notice your app.&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-3913523964064524749?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/3913523964064524749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=3913523964064524749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/3913523964064524749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/3913523964064524749'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/12/macsanta-is-over.html' title='MacSanta is over'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-244910919621373490</id><published>2006-12-21T12:24:00.000+01:00</published><updated>2006-12-21T12:29:37.920+01:00</updated><title type='text'>My Own Head</title><content type='html'>How about getting your self-named Cocoa notepad application with your own icon? Then visit this new site &lt;a href="http://www.myownhead.com/"&gt;myownhead&lt;/a&gt;!&lt;br /&gt;And yes, you can win a copy of Nifty Box!&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-244910919621373490?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/244910919621373490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=244910919621373490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/244910919621373490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/244910919621373490'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/12/my-own-head.html' title='My Own Head'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-9099323828428587472</id><published>2006-12-20T12:55:00.000+01:00</published><updated>2006-12-20T13:10:48.664+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Worker Thread - NSInvocation Part 2</title><content type='html'>NSInvocation is not only nice to &lt;a href="http://nifty-box.com/blog/2006/12/nsinvocation-cleans-code.html"&gt;post delayed multi-argument messages&lt;/a&gt;, you can also use it for constructing a lightweight worker thread implementation.&lt;br /&gt;&lt;br /&gt;Sometimes it happens that your app has to do lot of work, that you would like to do it in the background as you think it would be a nice thing if the gui would stay responsive to the user actions. Sometimes invoking a NSThread is a valid solution, but if you want to schedule many tiny tasks to the background creating a new thread for each of them might not be the best idea.&lt;br /&gt;&lt;br /&gt;Another possibility is using &lt;a href="http://developer.apple.com/documentation/Cocoa/Conceptual/DistrObjects/index.html?http://developer.apple.com/documentation/Cocoa/Conceptual/DistrObjects/DistrObjects.html"&gt;Distributed Objects (DO)&lt;/a&gt;. But DO for intra-application communication might be a bit of an overkill and during my experimenting I experienced, that outsourcing a working thread via DO and using the NSRunLoop is not the ideal solution: if the runloop of the worker thread is currently busy working on a past message you have to wait on the main thread if you want to post a new DO message until the worker thread's runloop is free again.&lt;br /&gt;&lt;br /&gt;So a solution I am using for the background &lt;a href="http://nifty-box.com/blog/2006/12/new-feature-for-11-spotlight-export.html"&gt;Spotlight export&lt;/a&gt; of my app is based on the &lt;a href="http://www.cocoadev.com/index.pl?ProducersAndConsumerModel"&gt;producers and consumer model&lt;/a&gt;: I create a thread safe queue in which the producer (main) thread posts new tasks and a consumer thread performs these tasks. This is very lightweight and the main thread does not block during the posting of the tasks.&lt;br /&gt;&lt;br /&gt;How does it work? Again using NSInvocations. The tasks, that are written to the queue are just NSInvocations, so you can post any message the target object understands.&lt;br /&gt;&lt;br /&gt;So here's an example:&lt;br /&gt;&lt;br /&gt;In the main thread you initialize NBInvocationQueue and start the worker thread&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;NBInvocationQueue *finderEventQueue = [[NBInvocationQueue alloc] init];&lt;br /&gt;[NSThread detachNewThreadSelector:@selector(runQueueThread) toTarget:finderEventQueue withObject:nil];&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now the NBInvocationQueue is ready to take messages. You post them like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[[finderEventQueue performThreadedWithTarget:spotlightExporter]&lt;br /&gt;    exportFinderCommentAtPath:path&lt;br /&gt;                         tags:tagArray&lt;br /&gt;                      comment:comment]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This will invoke [spotlightExporter exportFinderCommentAtPath:...] on the worker thread.&lt;br /&gt;&lt;br /&gt;The methods to queue messages are:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-(id)performThreadedWithTarget:(id)target;&lt;br /&gt;-(id)performThreadedWithTarget:(id)target afterDelay:(NSTimeInterval)delay;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you want to stop the worker thread you can use the method:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-(void)stopThreadWaitUntil:(BOOL)wait;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;which waits until all open tasks have been de-queued if the flag "wait" is set.&lt;br /&gt;&lt;br /&gt;The source code is here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nifty-box.com/source/NBInvocationQueue.h"&gt;NBInvocationQueue.h&lt;/a&gt; and &lt;a href="http://www.nifty-box.com/source/NBInvocationQueue.m"&gt;NBInvocationQueue.m&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Feel free to use this class as you like, NO WARRANTY!&lt;br /&gt;&lt;br /&gt;Inspiration for this class has been &lt;a href="http://www.cocoadev.com/index.pl?ProducersAndConsumerModel"&gt;producers and consumer model&lt;/a&gt; and &lt;a href="http://toxicsoftware.com/blog/grab-that-invocation/"&gt;CInvocationGrabber&lt;/a&gt; from ToxicSoftware.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-9099323828428587472?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/9099323828428587472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=9099323828428587472' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/9099323828428587472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/9099323828428587472'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/12/worker-thread-nsinvocation-part-2.html' title='Worker Thread - NSInvocation Part 2'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-3255033047466128352</id><published>2006-12-19T21:38:00.000+01:00</published><updated>2006-12-20T00:03:33.375+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>MacSanta</title><content type='html'>Maybe you've already heard about the latest Mac software promotion &lt;a href="http://www.macsanta.com/"&gt;MacSanta&lt;/a&gt; organised by &lt;a href="http://www.rogueamoeba.com/"&gt;Rogue Amoeba&lt;/a&gt;. This is a great idea and I am happy to join the crowd with Nifty Box.&lt;br /&gt;&lt;br /&gt;Purchase Nifty Box with a 20% discount through December 25: just enter the promotion code "MACSANTA" in the purchase process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-3255033047466128352?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/3255033047466128352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=3255033047466128352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/3255033047466128352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/3255033047466128352'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/12/macsanta.html' title='MacSanta'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-7874358197756969066</id><published>2006-12-12T11:27:00.003+01:00</published><updated>2008-08-07T13:21:28.360+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>NSInvocation cleans code</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Update: (2008-08-07)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;There's been a small (but potent) bug in the given implementation. I somehow move the release of the invocation:&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;[myInvocation release]; myInvocation = nil;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;into the dealloc method of the _UFLatePerformer class. This is bollocks, because the invocation contains _UFLatePerformer as target itself. Therefore I have to release the invocation as soon as it has been invoked. Otherwise there is a retain-cycle and the dealloc-method of _UFLatePerformer is never called.&lt;br /&gt;The code below has been updated accordingly.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;During the development of Nifty Box I've grown to use NSInvocations more and more. One thing I am using this class especially for is a wrapper for NSObject's &lt;code&gt;performSelector:withObject:afterDelay:&lt;/code&gt;. This method invokes the selector with &lt;b&gt;one&lt;/b&gt; argument after a specified delay. My problem was that I can only pass one argument for the selector, but it often happens that I want to invoke a method with more than one argument. So I had to pack all the arguments into a NSDictionary, write a proxy method, inside this proxy function unpack the arguments from the dictionary and invoke the original method. This is messy.&lt;br /&gt;&lt;br /&gt;For this I have written a small category add-on for NSObject:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;@interface _UFLatePerformer : NSObject {&lt;br /&gt;NSInvocation *myInvocation;&lt;br /&gt;id target;&lt;br /&gt;}&lt;br /&gt;-(id)initWithTarget:(id)theTarget;&lt;br /&gt;-(void)performLate;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;@interface NSObject (NSObject_laterInvocation)&lt;br /&gt;-(id)performAfterDelay:(NSTimeInterval)delay;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;@implementation _UFLatePerformer&lt;br /&gt;&lt;br /&gt;- (id) initWithTarget:(id)theTarget {&lt;br /&gt;[super init];&lt;br /&gt;if (self != nil) {&lt;br /&gt;   target = theTarget;&lt;br /&gt;   [target retain];&lt;br /&gt;}&lt;br /&gt;return self;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (void) dealloc {&lt;br /&gt;[target release]; target = nil;&lt;br /&gt;&lt;br /&gt;[super dealloc];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-(void)forwardInvocation:(NSInvocation *)invocation;&lt;br /&gt;{&lt;br /&gt;myInvocation = invocation;&lt;br /&gt;[myInvocation retain];&lt;br /&gt;[myInvocation retainArguments];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(BOOL)respondsToSelector:(SEL)aSelector;&lt;br /&gt;{&lt;br /&gt;BOOL result = [super respondsToSelector:aSelector];&lt;br /&gt;if (result == NO)&lt;br /&gt;   result = [target respondsToSelector:aSelector];&lt;br /&gt;return result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(NSMethodSignature*)methodSignatureForSelector:(SEL)aSelector;&lt;br /&gt;{&lt;br /&gt;NSMethodSignature *result = [super methodSignatureForSelector:aSelector];&lt;br /&gt;if (!result)&lt;br /&gt;   result = [target methodSignatureForSelector:aSelector];&lt;br /&gt;return result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-(void)performLate;&lt;br /&gt;{&lt;br /&gt;[myInvocation invokeWithTarget:target];&lt;br /&gt;[myInvocation release]; myInvocation = nil;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@implementation NSObject (NSObject_laterInvocation)&lt;br /&gt;&lt;br /&gt;-(id)performAfterDelay:(NSTimeInterval)delay;&lt;br /&gt;{&lt;br /&gt;_UFLatePerformer *latePerformer = [[_UFLatePerformer alloc]&lt;br /&gt;       initWithTarget:self];&lt;br /&gt;[latePerformer performSelector:@selector(performLate)&lt;br /&gt;       withObject:nil afterDelay:delay];&lt;br /&gt;[latePerformer release];&lt;br /&gt;return latePerformer;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@end&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This basically works like the NSUndoManager's &lt;code&gt;[[undoManager prepareWithInvocationTarget:self] myMethod:someArgument anotherArgument:secondArgument]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You use this new method like that:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[[myObject performAfterDelay:0.0] someMehodWithArgument1:argument1 argument2:argument2]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is an implementation of the &lt;a href="http://www.cocoadev.com/index.pl?TrampolineObject"&gt;Trampoline Object&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Feel free to use this snippet as you wish. No warranty however.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-7874358197756969066?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/7874358197756969066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=7874358197756969066' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/7874358197756969066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/7874358197756969066'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/12/nsinvocation-cleans-code.html' title='NSInvocation cleans code'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-8192816983833919730</id><published>2006-12-10T12:56:00.000+01:00</published><updated>2006-12-10T14:37:14.087+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>New feature for 1.1: Spotlight export</title><content type='html'>The last couple of weeks I've working on the export of tags and comments to Spotlight. This has been much more complicated than I expected. Nifty Box now writes the tags or comments to the Spotlight Comment field in the Finder's "Get Info..." window (for file items). This is a bit tricky.&lt;br /&gt;&lt;br /&gt;First of all only the Finder can edit this field, which means one has to use AppleScript or AppleEvents. This is ok, there exists some source code from Apple (MoreFinderEvents) to do this. But during the testing sometimes strange things happened: for long comments written to this field it seems, that the Finder looses information about all the comments and icon positions in the folder of the changed item. After some experimenting I found, that the Spotlight Finder comment is written to the hidden .DS_Store file in the folder of the specific file. The .DS_Store contains all specific Finder information (like icon position and Spotlight comments) of all the files in the folder. But this information is somehow coded in blocks, which means that there is a maximum length set implicitly for the Spotlight comments. If you try to save a longer comment, the .DS_Store gets corrupted. By trial-and-error I concluded, that the combined length of the comment plus the length of the filename must not be greater than 1012 UTF-16 characters. Nifty Box will deal with this. For web bookmarks I dont use the Spotlight comment field, but provide an own Spotlight importer, which is much more convenient.&lt;br /&gt;&lt;br /&gt;The way the Spotlight finder comments are used by Nifty Box is as follows: first all tags are written into the field, whereby these can be prefixed by a special character like "|" or "&amp;". If you choose to use such a prefix, the Spotlight search can be narrowed down only to the Nifty Box items. An example: if you like to search in Spotlight for items tagged with "Apple" you would get a zillion hits if you just type in "Apple" in the search field, because - as you might guess - the word "Apple" can be found quite a lot on the mac. But if you only want to view the Nifty Box items, tagged with "Apple", you can define just a tag prefix like "|" and search in Spotlight for "|Apple" which should only give you the Nifty Box items.&lt;br /&gt;&lt;br /&gt;After the tags you can choose to export your notes too. At the end a marker "_nybx_" is inserted into the comment field. After this marker the original comment from the Spotlight comment field is preserved. If the complete string (Nifty Box additions plus original comment) gets too long for the .DS_Store file, the Nifty Box additions will be shortened leaving the original comment complete.&lt;br /&gt;&lt;br /&gt;Just to give you an impression, here is the new preferences tab for the Spotlight Export settings:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nifty-box.com/blog/uploaded_images/preferences-734231.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://nifty-box.com/blog/uploaded_images/preferences-726963.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This will export a Spotlight Finder comment like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nifty-box.com/blog/uploaded_images/get_info-727860.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://nifty-box.com/blog/uploaded_images/get_info-723658.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here is an example Spotlight search for the tag "Mars": (please note the prefix "|")&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nifty-box.com/blog/uploaded_images/spotlight_mars-704489.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://nifty-box.com/blog/uploaded_images/spotlight_mars-700935.png" alt="" border="0" /&gt;&lt;/a&gt;In the screenshot you can also see the tagged web bookmarks at the top, which are provided by an Spotlight importer and not via the Finder's Spotlight comment field.&lt;br /&gt;&lt;br /&gt;Using the Finder's Spotlight comment field for the file items also gives you information directly in the Finder if a file is tagged by Nifty Box: you can activate the "Comments" table column in the Finder window, which will show you the tag information for all files in a given folder:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nifty-box.com/blog/uploaded_images/finder-701824.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://nifty-box.com/blog/uploaded_images/finder-798564.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So this export functionality is now implemented and in beta test. I am now working on the second new feature for version 1.1. I hope I will finish the development in December such that the new version can be released at the beginning of the new year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-8192816983833919730?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/8192816983833919730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=8192816983833919730' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/8192816983833919730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/8192816983833919730'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/12/new-feature-for-11-spotlight-export.html' title='New feature for 1.1: Spotlight export'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-116281816673369335</id><published>2006-11-06T13:57:00.000+01:00</published><updated>2006-11-06T14:02:46.750+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Just a small bug fix release</title><content type='html'>This (1.0.1) is just a small bug fix release. Nothing new has been introduced. The bugs have not been severe: a couple of annoyances in the main menu, some problems with icon display in the item table, and strange behaviour with the toolbar. &lt;br /&gt;Now I can focus on new features for 1.1. One thing I will definitely do is an export of the Nifty Box tags to the Spotlight comment field. This should make smart Finder folders even smarter. What other things will go into 1.1 I have not decided yet. I'll keep you informed on this blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-116281816673369335?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/116281816673369335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=116281816673369335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/116281816673369335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/116281816673369335'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/11/just-small-bug-fix-release.html' title='Just a small bug fix release'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-116194461805612951</id><published>2006-10-27T12:08:00.000+02:00</published><updated>2006-10-27T16:49:00.186+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Nifty Box 1.0</title><content type='html'>Ok, this is 1.0. &lt;br /&gt;It was hard to stay away from implementing new features and just to work on the payment and licensing stuff. I have some nice ideas for improvement of Nifty Box but these will all go into version 1.1 (at least some of them), which should be ready in December, I think.&lt;br /&gt;&lt;br /&gt;That's all for now.&lt;br /&gt;Have fun with NB 1.0!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-116194461805612951?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/116194461805612951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=116194461805612951' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/116194461805612951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/116194461805612951'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/10/nifty-box-10.html' title='Nifty Box 1.0'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-116135176184399155</id><published>2006-10-20T15:42:00.000+02:00</published><updated>2006-10-20T16:02:24.646+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>Preparing 1.0</title><content type='html'>I've finished most of the stuff for the first commercial release of Nifty Box right now. If all goes to plan it will be released by the end of next week. Although I said that I wont change the design I made some slight changes (rounded rects!) that should make the look of NB nicer - at least I think so.&lt;br /&gt;&lt;br /&gt;For the registration stuff I included Lucas Newman's nice &lt;a href=" http://www.aquaticmac.com/"&gt;AquaticPrime&lt;/a&gt; framework and the auto update &lt;a href="http://andymatuschak.org/pages/sparkle"&gt;Sparkle&lt;/a&gt; from Andy Matuschak. Thanks!&lt;br /&gt;&lt;br /&gt;All this was quite simple and fun. But right now I am reluctant to start the worst part of the job: updating the help file! I've always been a bad writer. Especially if you do not write in your native language it is quite a slow process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-116135176184399155?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/116135176184399155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=116135176184399155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/116135176184399155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/116135176184399155'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/10/preparing-10.html' title='Preparing 1.0'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-115961453797396198</id><published>2006-09-30T12:49:00.000+02:00</published><updated>2006-09-30T15:27:21.803+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NiftyBox'/><title type='text'>The last beta</title><content type='html'>Today I released version 0.999 of Nifty Box. I hope this will be the last beta version and that I can ship the first commercial 1.0 version in October. &lt;br /&gt;&lt;br /&gt;This whole process has taken much longer than I thought. More than half of September I've been working on improving the old import window with nice animations and stuff. But in the end I threw it all away, because an import window makes things only more complicated than necessary. I put the whole import functionality into the main window, which makes much more sense now. &lt;br /&gt;&lt;br /&gt;If you are experimenting with the design of an application it's a lot of trial and error. In the end you look at your product and say: "Man, I could have coded that in a couple of weeks - not months!", because all these wrong ways and bad ideas in the design process cost much more time than the pure coding. But that's common knowledge for everyone being creative in one way or the other.&lt;br /&gt;&lt;br /&gt;That said, I will stick to the current design until version 1.0. So for the first commercial release I will only do slight changes (if at all) and bug fixes. Version 0.999 is now pretty much, what v 1.0 will be. In the next weeks I will be quite busy setting up the payment process and license mechanism.&lt;br /&gt;&lt;br /&gt;So, that's it. Please try out the &lt;a href=http://www.nifty-box.com/downloads/Nifty_Box_Public_Beta_0.999.dmg&gt;last beta version&lt;/a&gt; and have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-115961453797396198?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/115961453797396198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=115961453797396198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/115961453797396198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/115961453797396198'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/09/last-beta.html' title='The last beta'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31847778.post-115893169775096001</id><published>2006-09-22T15:20:00.000+02:00</published><updated>2006-09-22T15:31:23.866+02:00</updated><title type='text'>They found me!</title><content type='html'>Ok, they found my  &lt;a href="http://www.nifty-box.com/contact/index.html")&gt;contact CGI form&lt;/a&gt;: Today somebody used my python cgi contact script for a &lt;a href="http://www.anders.com/projects/sysadmin/formPostHijacking/"&gt;Form Post Hijacking&lt;/a&gt; attack and sent spam using nifty-box.com. I changed my script to handle that and I hope not too much harm has been done by the unknown attackers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31847778-115893169775096001?l=nifty-box.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/115893169775096001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31847778&amp;postID=115893169775096001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/115893169775096001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31847778/posts/default/115893169775096001'/><link rel='alternate' type='text/html' href='http://nifty-box.com/blog/2006/09/they-found-me.html' title='They found me!'/><author><name>Tim Scheffler</name><uri>http://www.blogger.com/profile/00287780663826424312</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08442658440779170676'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>