<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Zetetic Blog</title>
    <link>http://zetetic.net/rss/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Zetetic Software Design and Development Blog</description>
    
    
        <item>
          <title>Coming Soon: Strip Sync</title>
          <description>&lt;p&gt;&lt;img src=&quot;/page_attachments/0000/0474/strip-icon-zetetic-site.gif&quot; style=&quot;float:right; margin-left:1em; padding: 0.5em;&quot; /&gt;We&amp;#8217;ve been getting a ton of mail lately about Strip, mostly along the lines of, &amp;#8220;when will the desktop client be ready?&amp;#8221; We&amp;#8217;ve made a ton of progress over the last few weeks, and we really appreciate the various letters of encouragement and everyone&amp;#8217;s enthusiasm.&lt;/p&gt;
&lt;h3&gt;Strip Sync&lt;/h3&gt;
&lt;p&gt;We are calling the initial desktop client &lt;strong&gt;Strip Sync&lt;/strong&gt;. It provides some really critical functionality for the Strip platform going forward, and it will be offered for free here on our website. It runs on Mac OS X 10.5 and later, and most modern versions of Windows (although &amp;#8220;modern&amp;#8221; feels like a weird term, given &lt;a href=&quot;http://stevenf.tumblr.com/post/359224392/i-need-to-talk-to-you-about-computers-ive-been&quot;&gt;the leap into the future&lt;/a&gt; that seems to be taking place at the moment). It&amp;#8217;s really two separate, native applications that provide the same excellent and much-needed features:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Import from &lt;span class=&quot;caps&quot;&gt;CSV&lt;/span&gt;&lt;/strong&gt; &amp;#8211; with files from Palm Strip Exporter or any other resource.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Synchronization with the iPhone&lt;/strong&gt; &amp;#8211; you&amp;#8217;ll be able to bring over your old Palm data.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Independent back-up&lt;/strong&gt; &amp;#8211; for many people, &lt;a href=&quot;http://www.zetetic.net/products/strip/faq/general/how-do-i-backup-my-data/&quot;&gt;the iTunes backup&lt;/a&gt; just isn&amp;#8217;t enough.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At some point soon Strip Sync will also provide handy export and printing capabilities, but we&amp;#8217;re really eager to get these much-asked-for features out there already, so export and print may not be introduced in the initial version. We&amp;#8217;ll see soon.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re about ready to start looking for beta testers, we&amp;#8217;ll post a notice here on the blog soon and send out a message to the mailing list. If you&amp;#8217;d like to be added to our mailing list, send us an email, or just fill out the form over &lt;a href=&quot;http://www.zetetic.net/products/strip&quot;&gt;on the Strip product page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once Strip Sync is out the door we&amp;#8217;re going to use it as the basis of the full-featured desktop version of Strip, which will allow you to enter and edit your data from the desktop, as opposed to having to slowly tap away with your thumbs on the iPhone.&lt;/p&gt;
&lt;h3&gt;What About Android?&lt;/h3&gt;
&lt;p&gt;We&amp;#8217;ve been getting a lot of queries asking for a version of Strip for Android, but this one really jumps out:&lt;/p&gt;
&lt;blockquote&gt;Hi,&lt;br /&gt;
&lt;br /&gt;
Years ago, around the turn of the century, I used to work as an&lt;br /&gt;
engineer at Palm Digital Media (eBook division of Palm); all of the&lt;br /&gt;
devs and admins in our group worshipped your Strip app.&lt;br /&gt;
&lt;br /&gt;
I have recently acquired an Android device (Nexus One). Please release&lt;br /&gt;
a version for Android.&lt;br /&gt;
&lt;br /&gt;
Thanks for making one of the most useful applications ever,&lt;/blockquote&gt;
&lt;p&gt;We&amp;#8217;d really love to do this, I mean, really, love. Right now our hands are a bit full with those two aforementioned native desktop applications! Once we have the desktop component firmly in place, we can begin to explore other platforms like Android, but for now it&amp;#8217;s going to have to wait. We do expect to see an explosion of Android devices over the next year or so, and it would be a fantastic addition to the Strip platform.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;ve just got to have Strip on your platform of choice, please let us know, &lt;a href=&quot;mailto:support@zetetic.net&quot;&gt;we&amp;#8217;re listening&lt;/a&gt;.&lt;/p&gt;</description>
          <pubDate>Fri, 29 Jan 2010 12:40:13 GMT</pubDate>
          <guid>http://zetetic.net/blog/2010/01/29/coming-soon-strip-sync/</guid>
          <link>http://zetetic.net/blog/2010/01/29/coming-soon-strip-sync/</link>
        </item>
    
        <item>
          <title>Co-working Open House in Brooklyn 1/29</title>
          <description>&lt;p&gt;My co-working space, The Change You Want To See, in North-side Williamsburg, is hosting &lt;a href=&quot;https://jellynyc.pbworks.com/Jelly+Brooklyn-2010-1-29&quot;&gt;our monthly open house event this Friday&lt;/a&gt;, the 29th of January. Anybody is welcome to drop in our space during normal hours, but our open-house event is a great time to meet other local professionals and free-lancers. People tend to be very focused during the day, and then at 5pm we do our happy hour (&amp;#8220;beer o&amp;#8217;clock&amp;#8221;).&lt;/p&gt;
&lt;p&gt;So, if you&amp;#8217;re thinking of checking out co-working, or you just want to chew my ear off about one of our products, you&amp;#8217;ll be most welcome. Do check the link and &lt;a href=&quot;https://jellynyc.pbworks.com/Jelly+Brooklyn-2010-1-29&quot;&gt;add your name&lt;/a&gt; if you plan on coming.&lt;/p&gt;</description>
          <pubDate>Tue, 26 Jan 2010 16:23:41 GMT</pubDate>
          <guid>http://zetetic.net/blog/2010/01/26/co-working-open-house-in-brooklyn-129/</guid>
          <link>http://zetetic.net/blog/2010/01/26/co-working-open-house-in-brooklyn-129/</link>
        </item>
    
        <item>
          <title>Tempo API Mailing List</title>
          <description>&lt;p&gt;Our time-tracking service Tempo has &lt;a href=&quot;http://keeptempo.com/help/tempo-api-reference/&quot;&gt;an &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; available&lt;/a&gt; (an Application Programming Interface) that allows our customers to integrate their own software with Tempo directly. In the interests of fostering discussion, sharing tips, and providing another vector for making announcements directly to consumers of the &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;, I&amp;#8217;ve created a mailing list on Zed Shaw&amp;#8217;s new service &lt;a href=&quot;http://librelist.com&quot;&gt;Librelist&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To sign up, simply send any old email to: &lt;a href=&quot;mailto:tempo.api@librelist.com&quot;&gt;tempo.api@librelist.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You will receive a confirmation message, and once you are all confirmed, you should be good to go. If you are running code that integrates with our service, or are building something now, I encourage you to join the list and to share with us any difficulties you experience, that we might share knowledge that so often gets trapped in our &amp;#8220;support&amp;#8221; email box.&lt;/p&gt;
&lt;p&gt;That said, if you want to address an issue privately, you&amp;#8217;re always welcome to &lt;a href=&quot;http://www.zetetic.net/contact&quot;&gt;get in touch with us directly&lt;/a&gt;.&lt;/p&gt;</description>
          <pubDate>Fri, 15 Jan 2010 14:52:31 GMT</pubDate>
          <guid>http://zetetic.net/blog/2010/01/15/tempo-api-mailing-list/</guid>
          <link>http://zetetic.net/blog/2010/01/15/tempo-api-mailing-list/</link>
        </item>
    
        <item>
          <title>MTA NYC Transit Opens Data</title>
          <description>&lt;p&gt;As a New Yorker and a firm believer in mass transit and open data policies, I am happy to see &lt;a href=&quot;http://www.streetsblog.org/2010/01/13/mta-unveils-open-data-policy-clearing-a-path-for-nyc-transit-apps/&quot;&gt;the big news&lt;/a&gt; that came with yesterday&amp;#8217;s unveiling of the new &lt;span class=&quot;caps&quot;&gt;MTA&lt;/span&gt; website:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The agency&amp;#8217;s new policy does away with time-consuming data-sharing procedures and burdensome licensing requirements. As of today, schedule, route and fare information are available directly from the &lt;span class=&quot;caps&quot;&gt;MTA&lt;/span&gt; website in a standard format, and the data will be updated whenever service changes. Similar set-ups have allowed developers to create scores of transit applications for cell phones and web browsers in other cities, giving riders convenient access to up-to-date information.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Amen! Visit the new &lt;a href=&quot;http://mta.info/developers/&quot;&gt;developer access page&lt;/a&gt; to sign up for accessing to the MTA&amp;#8217;s data. Looking forward to seeing what evolves, as I&amp;#8217;m sure that apps like &lt;a href=&quot;http://www.acrossair.com/&quot;&gt;Across Air&lt;/a&gt; and &lt;a href=&quot;http://www.exitstrategynyc.com/&quot;&gt;Exit Strategy&lt;/a&gt; are only the beginning. I&amp;#8217;ve come to use Exit Strategy a lot, more often for the built-in Subway map than for the nearest door to the &lt;span class=&quot;caps&quot;&gt;NQRW&lt;/span&gt; stairway. Maybe I&amp;#8217;m a touch old-skool, but I prefer a well-designed map to the augmented reality thing. Get off my lawn! &lt;a href=&quot;http://magnetismstudios.com/CityTransit&quot;&gt;City Transit&lt;/a&gt; apparently provides you with a lot of similar getting-around features, plus service advisories, which is handy.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m guessing the developers at iTrans really love dynamic programming, because the shortest-path problem is not an easy one, but they&amp;#8217;re &lt;a href=&quot;http://www.itrans.info/&quot;&gt;not content to leave it up to Google&lt;/a&gt;, as their app provides this offline, running its calculations on your phone. I need to give that a shot. This particular app is nice because it provides you further info outside the Subway, like &lt;span class=&quot;caps&quot;&gt;PATH&lt;/span&gt; and NJTransit (although how accurate that data can be is questionable, as there has been no sign of opening up coming from either NJTransit or the Port Authority).&lt;/p&gt;</description>
          <pubDate>Thu, 14 Jan 2010 10:08:07 GMT</pubDate>
          <guid>http://zetetic.net/blog/2010/01/14/mta-nyc-transit-opens-data/</guid>
          <link>http://zetetic.net/blog/2010/01/14/mta-nyc-transit-opens-data/</link>
        </item>
    
        <item>
          <title>Cocoa: SQLCipher Manager Available</title>
          <description>&lt;p&gt;We&amp;#8217;ve posted a new project to Github: &lt;a href=&quot;http://github.com/billymeltdown/SQLCipher-Manager&quot;&gt;SQLCipher Manager&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve got to make this brief because I have a ton of work to do, but we&amp;#8217;ve recently split out a few chunks of re-usable code from our iPhone application Strip in order to facilitate sharing that code across multiple projects, both for the iPhone and for Mac OS X development. Most of that stuff will be staying internal, and wouldn&amp;#8217;t be of much use to others anyway, but we decided to make SQLCipher Manager available as open source software under the same &lt;span class=&quot;caps&quot;&gt;MIT&lt;/span&gt;-style license as SQLCipher itself.&lt;/p&gt;
&lt;p&gt;The project on Github is an XCode project that builds a static library. You can use cross-project references to utilize this code from other XCode projects and to link against the static lib (required by Apple for us iPhone developers). There&amp;#8217;s a great reference on doing this &lt;a href=&quot;http://www.mobileorchard.com/code-sharing-via-static-libraries-and-cross-project-references/&quot;&gt;over at Mobile Orchard&lt;/a&gt;, so I&amp;#8217;ll refrain fro going into the process here.&lt;/p&gt;
&lt;p&gt;In short, it provides a singleton that handles your database connection to SQLCipher, keying, re-keying, notifying your app when the database has been created or opened, etc. This sounds like a no-brainer, but you end up re-using this code quite a bit, so it only made sense to define it and a delegate protocol:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
@protocol SQLCipherManagerDelegate &amp;lt;NSObject&amp;gt;
@optional
- (void)didOpenDatabase;
- (void)didCreateDatabase;
- (void)didEncounterRekeyError;
- (void)didEncounterDatabaseError:(NSString *)error;
@end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This means you&amp;#8217;d do something like this in your app delegate, to initialize the manager for your application, and handle schema events:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
	NSLog(@&quot;Setting up sqlcipher manager, and ourself as delegate...&quot;);
	// setup the db manager register as the delegate
	SQLCipherManager *dm = [SQLCipherManager sharedManager];
	[dm setDelegate:self];
	// set the databasePath property (required), use default iphone app documents directory
	NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
	NSString *saveDirectory = [paths objectAtIndex:0];
	NSString *databasePath = [saveDirectory stringByAppendingPathComponent:CONFIG_DBNAME];
	NSLog(@&quot;setting db path to %@&quot;, databasePath);
	[dm setDatabasePath:databasePath];

	[self launchLoginView];
}

# pragma mark -
# pragma mark SQLCipherManagerDelegate

- (void)didOpenDatabase {
	NSLog(@&quot;Database opened&quot;);
	SQLCipherManager *dm = [SQLCipherManager sharedManager];
	NSUInteger schemaVersion = [dm getSchemaVersion];
	if (schemaVersion != CONFIG_SCHEMAVERSION) {
		NSLog(@&quot;handing off to schema manager, found old version %d&quot;, schemaVersion);
		StripSchemaManager *schemaManager = [[StripSchemaManager alloc] initWithSQLCipherManager:dm];
		[schemaManager migrate:CONFIG_SCHEMAVERSION];
		[schemaManager release];
	}
}

- (void)didCreateDatabase {
	NSLog(@&quot;Database created, migrating&quot;);
	SQLCipherManager *dm = [SQLCipherManager sharedManager];
	StripSchemaManager *schemaManager = [[StripSchemaManager alloc] initWithSQLCipherManager:dm];
	[schemaManager migrate:CONFIG_SCHEMAVERSION];
}

- (void)didEncounterDatabaseError:(NSString *)error {
	NSLog(@&quot;Database error! %@&quot;, error);
	SQLCipherManager *dm = [SQLCipherManager sharedManager];
	[dm closeDatabase];
	abort(); // ouch, yo, but it leaves us a crash log for later
}

- (void)didEncounterRekeyError {
	[self lockApplication];
	[self presentError:[NSError errorUsingDatabase:@&quot;An error occured rekeying the database. Please login again using your original password&quot; reason:@&quot;&quot;]];
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your login view controller (or whatever you are passing control to as the application sets up) would actually do the opening, or creating, of the database. Ours looks something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
- (IBAction)submit {
  SQLCipherManager *dm = [SQLCipherManager sharedManager];
  BOOL databaseExists = [dm databaseExists];
  
	// just bail if the submitted password is invalid
	if (![dm passwordIsValid:passwordField.text]) {
		errorLabel.text = @&quot;Invalid password&quot;;
		self.passwordConfirm = nil;
		passwordField.text = nil;
		return;
	}
	
	// if this is the first time through, require confirmation
  if(databaseExists == NO &amp;amp;&amp;amp; !self.passwordConfirm) {
		self.passwordConfirm = passwordField.text;
		passwordField.text = nil;
		passwordField.placeholder = @&quot;Confirm your password&quot;;
		[passwordField becomeFirstResponder];
		return;
	}
	
	loadingImage.hidden = NO;
  CFRunLoopRunInMode (kCFRunLoopDefaultMode, 0, true);

	// seed OpenSSL RAND (removed)
	
	SecureAppDelegate *appDelegate = (SecureAppDelegate *) [[UIApplication sharedApplication] delegate];
	if (databaseExists) { // what mode are we in?
		// attempt login, we only have passwordField present on screen
		if ([dm openDatabaseWithPassword:passwordField.text]) {
			[passwordField resignFirstResponder];
			[appDelegate launchAppView]; // push new view controller, etc... wait we have no navigation controller...
		} else {
			errorLabel.text = @&quot;Incorrect password&quot;;
			[passwordField becomeFirstResponder];
		}
	} else {
		if ([self passwordIsConfirmed]) {
			[passwordField resignFirstResponder];
			[dm createDatabaseWithPassword:passwordField.text];
			[appDelegate launchAppView]; // here again we need to get our navigation controller going
		} else {
			errorLabel.text = @&quot;Passwords didn't match&quot;;
			[passwordField becomeFirstResponder];
		}
	}	
	passwordField.placeholder = @&quot;Access password&quot;;
	self.passwordConfirm = nil; // wipe fields
	passwordField.text = nil;
	loadingImage.hidden = YES;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Those are the basics of using SQLCipher in a Cocoa Touch application, and the approach is easily ported to Mac OS X. Can&amp;#8217;t go into the various details right now, hopefully it&amp;#8217;s explanatory enough. Questions should be posed on &lt;a href=&quot;http://groups.google.com/group/sqlcipher&quot;&gt;the SQLCipher-Users mailing list&lt;/a&gt;. Bugs and enhancement requests should be filed using the Issues tracker on &lt;a href=&quot;http://github.com/billymeltdown/SQLCipher-Manager&quot;&gt;the Github project&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;inline-callout&quot;&gt;
Zetetic is the creator of the encrypted iPhone data vault and password manager &lt;a href=&quot;/products/strip/its-strip&quot;&gt;Strip&lt;/a&gt; and the open source encryption-enhanced database engine &lt;a href=&quot;/software/sqlcipher&quot;&gt;SQLCipher&lt;/a&gt;.
&lt;/div&gt;</description>
          <pubDate>Wed, 06 Jan 2010 11:49:50 GMT</pubDate>
          <guid>http://zetetic.net/blog/2010/01/06/cocoa-sqlcipher-manager-available/</guid>
          <link>http://zetetic.net/blog/2010/01/06/cocoa-sqlcipher-manager-available/</link>
        </item>
    
        <item>
          <title>Announcing the Palm Strip Export Utility</title>
          <description>&lt;p&gt;Back in 1997 we released the first version of our mobile password manager and data vault Strip (Secure Tool for Recalling Important Passwords) for PalmOS. It quickly grew to be one of the best and most widely recognized security applications for the platform, gathering accolades from the likes of ZDNet and &lt;span class=&quot;caps&quot;&gt;CNN&lt;/span&gt;. A few years ago we dropped support for PalmOS Strip after the decline of the Palm platform. Then, last year, we resurrected Strip by bringing a &lt;a href=&quot;http://www.zetetic.net/products/strip&quot;&gt;completely redesigned system to the iPhone&lt;/a&gt; sporting a flexible data model and &lt;a href=&quot;http://www.zetetic.net/software/sqlcipher&quot;&gt;new open-source encrypted database engine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Yet, many former PalmOS Strip users have let us know that they are still trapped on their old devices, in dire need of a way to export information from their Palm databases. Some people have switched to &lt;a href=&quot;http://www.zetetic.net/products/strip&quot;&gt;Strip for iPhone&lt;/a&gt;, others just want to back up their information in case of device failure.&lt;/p&gt;
&lt;p&gt;Today we are pleased to release a free utility that can export your legacy PalmOS Strip databases out to a simple &lt;a href=&quot;http://en.wikipedia.org/wiki/Comma-separated_values&quot; title=&quot;CSV&quot;&gt;Comma Separated Value&lt;/a&gt; file. Once your databases are exported you can print them, open them in Excel or import them into a separate program. Most importantly, these export files will be directly importable to the iPhone when we release our first Strip desktop sync tool in the coming months.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/page_attachments/0000/0472/palm-strip-export.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How To Export&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note: This exporter only works with Palm Strip 2.0 Databases. If you are not running Palm Strip 2.0 you should upgrade to the latest version first. This utility is not intended for use with the iPhone version of Strip (we will be releasing a iPhone sync package soon that will provide similar functionality).&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Start off by downloading the exporter program:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.zetetic.net/files/palm-strip-export.exe&quot;&gt;Download Palm Strip Export for Windows&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.zetetic.net/files/palm-strip-export.zip&quot;&gt;Download Palm Strip Export for Mac OS X&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Save the program to your computer and then run it:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Enter the password for your Palm-Strip database. This is the same password you would enter into the program normally.&lt;/li&gt;
	&lt;li&gt;Click the &amp;#8220;Choose Directory&amp;#8221; button, and navigate to the location of your Strip Databases. These will usually be in your Palm desktop install folder, usually something like &lt;code&gt;C:\Program Files\palm\&amp;lt;username&amp;gt;\backups&lt;/code&gt;.&lt;/li&gt;
	&lt;li&gt;Click the &amp;#8220;Save As&amp;#8221; button to choose the location to export the file.&lt;/li&gt;
	&lt;li&gt;Click the &amp;#8220;Export To File&amp;#8221; button.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The system will then export your entire database out to a &lt;span class=&quot;caps&quot;&gt;CSV&lt;/span&gt; file at the selected location. Your data will be left intact, with the exception that line breaks will be removed from Note fields to allow the export. Open your file in a spreadsheet like Excel or in a text editor like Notepad to verify the results.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Credits &amp;amp; Code&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This new exporter tool is based on the pioneering work by &lt;a href=&quot;http://www.dribin.org/dave/software/perl-strip/&quot;&gt;David Dribin&amp;#8217;s perl-strip&lt;/a&gt;, an early exporter for Strip databases. We&amp;#8217;ve taken his great Palm::Zetetic::Strip module and &lt;a href=&quot;http://github.com/sjlombardo/Palm-Zetetic-Strip&quot;&gt;forked it on GitHub&lt;/a&gt;. Our updates include the use of newer digest libraries and updates to support the full Strip 2.0 database format (including service types). We&amp;#8217;ve also released the source to the &lt;a href=&quot;http://github.com/sjlombardo/palm-strip-export&quot;&gt;palm-strip-export application on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;inline-callout&quot;&gt;
Zetetic is the creator of the encrypted iPhone data vault and password manager &lt;a href=&quot;/products/strip/its-strip&quot;&gt;Strip&lt;/a&gt; and the open source encryption-enhanced database engine &lt;a href=&quot;/software/sqlcipher&quot;&gt;SQLCipher&lt;/a&gt;.
&lt;/div&gt;</description>
          <pubDate>Wed, 30 Dec 2009 12:56:51 GMT</pubDate>
          <guid>http://zetetic.net/blog/2009/12/30/announcing-the-palm-strip-export-utility/</guid>
          <link>http://zetetic.net/blog/2009/12/30/announcing-the-palm-strip-export-utility/</link>
        </item>
    
        <item>
          <title>Gone Nomading? Try Coworking</title>
          <description>&lt;p&gt;Terralien&amp;#8217;s Nathaniel Talbott has &lt;a href=&quot;http://terralien.com/blog/articles/2009/12/22/gone-nomading&quot;&gt;an interesting article&lt;/a&gt; up on their blog about an activity they&amp;#8217;ve termed nomading, or &lt;a href=&quot;http://matthewbass.com/2008/06/13/nomadic-programming/&quot;&gt;nomadic programming&lt;/a&gt;. Basically, Terralien is what you might call a remote company, in that a good number of their people work from geographically distinct locations, often not meeting in person but keeping in touch and coordinating their projects and work over the Internet. We work this way, too, so we&amp;#8217;re always interested when other firms write about their experiences.&lt;/p&gt;
&lt;p&gt;Talbott&amp;#8217;s article is interesting in that Terralien is using this concept of nomading to help mitigate the problem of isolation one can experience remoting:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But no matter how much we appreciate the flexibility of working from wherever, we still often feel the need to spend some time in the same place with fellow geeks. The wife and kids can only take so many explanations of the latest cool hack we pulled off, and a change of scenery can really help get the creative juices flowing. As with so many other remote workers, we started heading out to a coffee shop on occasion, which was fun, but still didn’t quite cut it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can tell you from first hand experience that a year and a half of working out of my apartment was a pretty isolating and eventually depressing thing. I&amp;#8217;m sure it&amp;#8217;s not a problem for some people, but I think most people who try it for any considerable length of time run up against this problem. It comes down to a pretty simple notion &amp;#8212; you need to get out of the house, and by the end of your work day, you&amp;#8217;d ideally want to enjoy being home.&lt;/p&gt;
&lt;p&gt;Terralien&amp;#8217;s Matthew Bass, who coined the term nomading, describes how he &lt;a href=&quot;http://matthewbass.com/2008/06/13/nomadic-programming/&quot;&gt;arrived at his solution&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I don’t mind being alone to a certain extent, but after a few straight weeks it can get pretty lonely. Recently, I’ve started doing what I’ve termed “nomadic programming.” Namely, spending the day roaming between various wi-fi hotspots instead of working from home. This has worked really well for me. So well, in fact, that I think the concept needs to start spreading.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I actually disagree, having tried nomading when I started to get stir-crazy. While I do think it&amp;#8217;s a good first step for anybody who&amp;#8217;s been working in isolation, you quickly run into some problems doing this that make it a somewhat incomplete solution to the problem. There&amp;#8217;s really nothing that comfortable about hanging out in one or more coffee shops all day long, buying obligatory coffees and snacks, using their power outlets under the glare of the manager, not being welcome for quite so long, flakey network connections, and finally, do you really want to leave that $2000 computer alone by itself in Cafe Grumpy while you go to the bathroom? Do you want to take it in there with you, for that matter?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Coworking&lt;/strong&gt; has been the ideal solution for us here at Zetetic, as we&amp;#8217;re now working out of two coworking locations, &lt;a href=&quot;http://thechangeyouwanttosee.com/coworking&quot;&gt;Williamsburg Coworking&lt;/a&gt; in Brooklyn, NY and &lt;a href=&quot;http://www.indyhall.org/&quot;&gt;Indy Hall&lt;/a&gt; in Philadelphia. One of our guys is planning to open a new space soon with some partners (so I can&amp;#8217;t reveal any details), and our founder Stephen Lombardo has been thinking for some time of starting one in central NJ (if you&amp;#8217;re in central NJ and you are interested, get in touch!). It makes us really happy, keeps us extremely productive, and we can&amp;#8217;t recommend it enough.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/page_attachments/0000/0466/coworking_NYPost.jpg&quot;&gt;&lt;img src=&quot;/page_attachments/0000/0468/coworking_NYPost_300.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We pay monthly fees to use our spaces &amp;#8212; it&amp;#8217;s a lot cheaper than renting commercial office space. We have ergonomic chairs, we have personal storage areas where we can keep keyboard trays and the like. We have a fridge, a kitchen, wifi, and a really fantastic social group of thinkers, artists, programmers, writers, you name it. Distractions are low, productivity is high, we have people to bounce ideas off of who&amp;#8217;ve become our friends, we even prepare lunches together sometimes to save money (and because it&amp;#8217;s fun, Zane&amp;#8217;s a great cook). We even have an excellent library of somewhat &amp;#8220;alternative&amp;#8221; reading materials.&lt;/p&gt;
&lt;p&gt;When I started working here, my productivity shot up like woah. In addition, I&amp;#8217;ve learned how to screen print and pickle vegetables. I&amp;#8217;ve made some great friends and I get to bounce ideas off extremely smart people. And this is a very large community &amp;#8212; our space is part of a network of locations all over the world, and any of us is welcome at those spaces if we&amp;#8217;re traveling (read more about &lt;a href=&quot;http://coworking.pbworks.com/CoworkingVisa&quot;&gt;Coworking Visa&lt;/a&gt;). I think the main reason people here get along so well is that there&amp;#8217;s no one here who doesn&amp;#8217;t want to be here, it&amp;#8217;s the total opposite of being trapped in an office. And having done a bit of nomading myself, it&amp;#8217;s a lot less stressful.&lt;/p&gt;
&lt;p&gt;These coworking spaces are popping up all over the country, the world, and they work. They&amp;#8217;re even potentially lucrative businesses, although I prefer our space&amp;#8217;s non-profit setup. If you&amp;#8217;re considering nomading, we encourage you to try coworking as well, you can find many locations &lt;a href=&quot;http://coworking.pbworks.com/&quot;&gt;by searching the wiki&lt;/a&gt;.&lt;/p&gt;
&lt;div style=&quot;background: #e5eadf url(/img/icon-confirm.png) no-repeat 10px 10px; padding: 10px 10px 10px 35px; color: #323232; margin-bottom: 15px; font-weight: bold; line-height: 1.3em; border-top: 5px solid #708b90;&quot;&gt;
Zetetic is the creator of the super-flexible &lt;a href=&quot;http://keeptempo.com&quot;&gt;Tempo Time Tracking&lt;/a&gt; system.
&lt;/div&gt;</description>
          <pubDate>Wed, 30 Dec 2009 11:52:47 GMT</pubDate>
          <guid>http://zetetic.net/blog/2009/12/30/gone-nomading-try-coworking/</guid>
          <link>http://zetetic.net/blog/2009/12/30/gone-nomading-try-coworking/</link>
        </item>
    
        <item>
          <title>How to encrypt a plaintext SQLite database to use SQLCipher</title>
          <description>&lt;p&gt;We&amp;#8217;ve fielded several questions on the &lt;a href=&quot;http://groups.google.com/group/sqlcipher&quot;&gt;SQLCipher mailing list&lt;/a&gt; recently about how to convert a standard SQLite database to an encrypted SQLCipher database. This is a pretty common requirement for applications with existing databases that need to be converted to use &lt;a href=&quot;http://www.zetetic.net/software/sqlcipher&quot;&gt;SQLCipher full database encryption&lt;/a&gt;. Right now there are two options to meet these needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option 1: Experimental Rekey&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We’ve done some work on an experimental branch of the SQLCipher repository to add a function to rekey plaintext databases. This version is based on an older version of SQLite (3.1.17), but it allows you to open a standard database and run “PRAGMA rekey=’passphrase’;” or call sqlite3_rekey() to encrypt it. The code is up under the “rekey-plaintext branch in GitHub&amp;quot;:http://github.com/sjlombardo/sqlcipher/tree/rekey-plaintext.&lt;/p&gt;
&lt;p&gt;The main drawback to this approach is that it is brittle. The current rekey functionality essentially relies on a modified vacuum command. Unfortunately this approach is not easily portable between versions. The code is out there, but your mileage may vary.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option 2: Attached Database (Recommended)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SQLCipher 1.1.1 added support for attaching an encrypted database to an unencrypted database to copy data between them. For instance, assume you have an standard unencrypted SQLite database called unencrypted.db with a single table, t1(a,b). To create an encrypted copy you could open up the databases and run the following:&lt;/p&gt;
&lt;pre&gt;
ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'secret'; -- create a new encrypted database
CREATE TABLE encrypted.t1(a,b); -- recreate the schema in the new database (you can inspect all objects using SELECT * FROM sqlite_master)
INSERT INTO encrypted.t1 SELECT * FROM t1; -- copy data from the existing tables to the new tables in the encrypted database
DETACH DATABASE encrypted;
&lt;/pre&gt;
&lt;p&gt;It is fairly trivial to get a list of all schema objects from the sqlite_master table you would just repeat the &lt;span class=&quot;caps&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;TABLE&lt;/span&gt; / &lt;span class=&quot;caps&quot;&gt;INSERT&lt;/span&gt; cycle once for each table. Then you can delete the unencrypted database and re-open the encrypted version with the sqlite3_key or &lt;span class=&quot;caps&quot;&gt;PRAGMA&lt;/span&gt; key. This approach requires more work that just calling rekey, but it is be much more stable across versions.&lt;/p&gt;
&lt;p&gt;In the mean time, we are working on finding a way to improve the built in rekey functionality in future versions. Keep an eye out here, or join the &lt;a href=&quot;http://groups.google.com/group/sqlcipher&quot;&gt;SQLCipher mailing list&lt;/a&gt; to keep up to date on the latest development.&lt;/p&gt;
&lt;div class=&quot;inline-callout&quot;&gt;
Zetetic is the creator of the encrypted iPhone data vault and password manager &lt;a href=&quot;/products/strip/its-strip&quot;&gt;Strip&lt;/a&gt; and the open source encryption-enhanced database engine &lt;a href=&quot;/software/sqlcipher&quot;&gt;SQLCipher&lt;/a&gt;.
&lt;/div&gt;</description>
          <pubDate>Tue, 29 Dec 2009 09:18:17 GMT</pubDate>
          <guid>http://zetetic.net/blog/2009/12/29/how-to-encrypt-a-plaintext-sqlite-database-to-use-sqlcipher/</guid>
          <link>http://zetetic.net/blog/2009/12/29/how-to-encrypt-a-plaintext-sqlite-database-to-use-sqlcipher/</link>
        </item>
    
        <item>
          <title>Improvements to SQLCipher - cross platform SQLite Encryption</title>
          <description>&lt;p&gt;We&amp;#8217;ve been really busy over the past week finishing up some big enhancements to &lt;a href=&quot;http://www.zetetic.net/software/sqlcipher&quot;&gt;SQLCipher&lt;/a&gt;, the open-source full-database SQLite encryption extension that powers &lt;a href=&quot;http://www.zetetic.net/products/strip&quot;&gt;Strip, our Data Vault for the iPhone&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The latest version SQLCipher 1.1.1, is based on the most recent release of &lt;a href=&quot;http://www.sqlite.org&quot;&gt;SQLite&lt;/a&gt; (3.6.21), which has a many improvements and bug fixes. In addition the new SQLCipher features include:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Code clean up to allow compilation with VS.&lt;span class=&quot;caps&quot;&gt;NET&lt;/span&gt; on windows.&lt;/li&gt;
	&lt;li&gt;Enhancements to the codebase to allow encrypted databases to be attached to unencrypted database for the purpose data migration&lt;/li&gt;
	&lt;li&gt;Resolution of a minor memory leak in the pager subsystem&lt;/li&gt;
	&lt;li&gt;Documentation and test enhancements&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The newest build makes SQLCipher truly cross-platform &amp;#8211; it&amp;#8217;s now been used successfully under Mac OS X, iPhone, Linux, and Windows (across MinGW, Cygwin, and native VS.&lt;span class=&quot;caps&quot;&gt;NET&lt;/span&gt;). The new version is a drop in replacement for previous releases, so we&amp;#8217;re recommending that all SQLCipher users upgrade to the latest.&lt;/p&gt;
&lt;p&gt;Check out &lt;a href=&quot;http://github.com/sjlombardo/sqlcipher&quot;&gt;SQLCipher on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;inline-callout&quot;&gt;
Zetetic is the creator of the encrypted iPhone data vault and password manager &lt;a href=&quot;/products/strip/its-strip&quot;&gt;Strip&lt;/a&gt; and the open source encryption-enhanced database engine &lt;a href=&quot;/software/sqlcipher&quot;&gt;SQLCipher&lt;/a&gt;.
&lt;/div&gt;</description>
          <pubDate>Mon, 28 Dec 2009 11:10:04 GMT</pubDate>
          <guid>http://zetetic.net/blog/2009/12/28/improvements-to-sqlcipher---cross-platform-sqlite-encryption/</guid>
          <link>http://zetetic.net/blog/2009/12/28/improvements-to-sqlcipher---cross-platform-sqlite-encryption/</link>
        </item>
    
        <item>
          <title>Vote for Strip in Best App Ever Awards!</title>
          <description>&lt;p&gt;Today and tomorrow I&amp;#8217;ll be bringing you some news and updates related to &lt;a href=&quot;/products/strip&quot;&gt;Strip&lt;/a&gt;, answering some common email queries, and providing an overdue update on where we&amp;#8217;re at with the desktop version. Before I get into the upcoming stuff, however, we could use your help! Strip for iPhone been nominated in the Best App Ever awards, under the Best Productivity Enhancer category. As I know there are a lot of you out there who have quite an affinity for Strip, mind clicking over to the page and voting for us?&lt;/p&gt;
&lt;div style=&quot;margin-right: auto;margin-left: auto;width: 160px;background-color: #242426;padding: 5px;border: 3px solid #731616;&quot;&gt;&lt;center&gt;&lt;a href=&quot;http://bestappever.com/c/papp/316817719/nom&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;padding:10px; background-color: #242426;&quot; src=&quot;http://bestappever.com/images/bae-small_2009.png&quot; border=0&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;font-size: 10pt; line-height: 12pt; text-align:center;color: #d9d9d9;&quot;&gt;Nominate&lt;br&gt;&lt;b&gt;Strip &amp;#8211; Password Manager &amp;amp; Data Vault&amp;#8230;&lt;/b&gt;&lt;br&gt;for&lt;br&gt;&lt;b&gt;Best Productivity Enhancer&lt;/b&gt;&lt;br&gt;&lt;a href=&quot;http://bestappever.com/c/papp/316817719/nom&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;padding:0px;&quot; src=&quot;http://bestappever.com/images/button_nominate.png&quot; border=0&gt;&lt;/a&gt;&lt;/center&gt;&lt;/div&gt;
&lt;p&gt;We really appreciate your continued support and enthusiasm for the platform. Stay tuned for updates!&lt;/p&gt;</description>
          <pubDate>Tue, 22 Dec 2009 12:31:33 GMT</pubDate>
          <guid>http://zetetic.net/blog/2009/12/22/vote-for-strip-in-best-app-ever-awards/</guid>
          <link>http://zetetic.net/blog/2009/12/22/vote-for-strip-in-best-app-ever-awards/</link>
        </item>
    
    
  </channel>
</rss>

