<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Terminal.app</title>
	
	<link>http://terminalapp.net</link>
	<description>All computers should be destroyed. And flies too.</description>
	<lastBuildDate>Mon, 15 Feb 2010 02:11:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Terminalapp" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="terminalapp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Retrospect w8</title>
		<link>http://terminalapp.net/retrospect_w8/</link>
		<comments>http://terminalapp.net/retrospect_w8/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 02:11:02 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=145</guid>
		<description><![CDATA[There&#8217;s a rule of thumb for software development: make it, make it good, make it fast. For those unfamiliar with it, this means you should first build the core functionality of the software. Then, fix it&#8217;s bugs and make it as reliable as you can. Finally, optimize it to make it fast enough for your [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a rule of thumb for software development: make it, make it good, make it fast. For those unfamiliar with it, this means you should first build the core functionality of the software. Then, fix it&#8217;s bugs and make it as reliable as you can. Finally, optimize it to make it fast enough for your needs.</p>
<p>Retrospect 6 was a very good backup software, but its age was showing up. It was still fundamentally a Mac OS 9 app running on top of OS X Carbon API. The worst part about this was the need to launch the application in Finder, forcing you to have automatic login configured and remote-acess your backup machine via Remote Desktop or VNC, assuming it was running on a data center. Despite that, it was very reliable (I had two situations where Retrospect complained about corrupted data, and both situations were caused by faulty hardware). Also, it was not the fastest software I had seen, but it was good enough. Keep in mind Retrospect was designed when file systems had hundreds or a few thousand files on them, not a million or more like it&#8217;s normal today (I have about 1.5 million files on my laptop drive).</p>
<p>Facing the unavoidable, EMC decided to re-write Retrospect from the ground up as a modern OS X product, using Cocoa APIs and changing it&#8217;s architecture to a proper UNIX daemon (with a remote graphic console). Besides theoretically solving all the version 6 downfalls, they added some nice goodies, like AES 256 encryption, grooming, and some details. A nice one is that the disk backups are now stored in 100 MB files instead of a unique, giant file. This solves a lot of problems related to NAS systems.</p>
<p>Assuming you need backup software, you would think this were great news, right? Well, so did I. However, reality seems to be a lot worse than the perfect scenery I described above. EMC worked a lot of time on this version, and you would think they had made it, made it good and made it fast, right? Well, they decided to stop somewhere in the &#8220;Make it good&#8221; part. The problem is, rules of thumbs are nice, but common sense helps. If you launch a product that is simply too slow to be useful, people won&#8217;t use it.</p>
<p>Our backup machine at the university is an old G4, dual CPU (1 Ghz, I guess). Yes, it&#8217;s not exactly a screamer, but what the hell, we are talking about copying and storing files. It&#8217;s not exactly rocket science, and if the machine was up to the task when it was new, it should be up to the task now. We upgraded the RAM to a decent amount, of course.</p>
<p>So, last week I needed to recover the /etc directory of a colleague&#8217;s laptop to recover some apache and PHP settings that Snow Leopard installer happily overwrote. We&#8217;re talking about 3 MB of data, something that should be as simple as pressing a few buttons and get the data back. The laptop had about 750 thousand files on it, which, in my opinion, is not that many for today&#8217;s standards. So, why the hell took me about <strong>3 hours</strong> to recover those files? Loading the catalog into the UI took almost 2 hours. Deselecting the whole file tree took almost 1 hour. The rest was the recovery process itself.</p>
<p>Ok, EMC. I know this stuff is optimized for Intel, and you do a lot of byte-order swapping on PowerPC. I know I&#8217;m using an old machine. But for god sake. What the hell are you doing to my CPU that needs 3 god damn hours to load a 750 000 files catalog into memory? And what&#8217;s the story with deselecting all the files? Are you telling me that, when I press the checkbox on the file root, you REALLY go trough the entire file tree and deselect each individual file? (In a rather inefficient way, because changing 750 000 booleans would take about&#8230; what? 1 millisecond on a 1 Ghz CPU?)</p>
<p>Well, I have at home a Dual 2 Ghz PowerPC machine that acts as backup storage, among other things. I have an AES 256 encrypted disk image (note that, at the university, I&#8217;m not using encryption, or else it would render things unbearable), served by AFP, acting as the time machine target for my laptop. When I installed Snow Leopard, I also had to recover some stuff from the /etc directory. Do you know how long it took? About 5 freaking seconds! And please, don&#8217;t tell me it&#8217;s because the G5 is faster!</p>
<p>Enough is enough, and 3 hours to recover a few files is ridiculous. I&#8217;ll study the possibility of migrating backups to Time Machine. Yes, space management is worse. Yes, client machines have to access the server, making the whole setup less secure than Retrospect where the server accesses the clients. But people won&#8217;t have to stop working for hours waiting for some files to be recovered.</p>
<p>Lesson for you, EMC: I&#8217;m not asking for you to make it fast before making it good, but at least make performance acceptable before releasing the product. Specially after taking so many years to build it.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/qliHiODUaPA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/retrospect_w8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My walkman</title>
		<link>http://terminalapp.net/my-walkman/</link>
		<comments>http://terminalapp.net/my-walkman/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 16:38:56 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Generic]]></category>
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=130</guid>
		<description><![CDATA[Some of its features:

Unlimited songs!
No DRMs! Listen and record to whatever you want, legal or not! Just play it. Or record it!
Social features: Share your music! Plug two headphone sets, enjoy your favorite tunes with a friend, in stereo! Or switch tapes with your mates. No complicated wireless setup, no waiting for files to be [...]]]></description>
			<content:encoded><![CDATA[<p>Some of its features:</p>
<ul>
<li>Unlimited songs!</li>
<li>No DRMs! Listen and record to whatever you want, legal or not! Just play it. Or record it!</li>
<li>Social features: Share your music! Plug two headphone sets, enjoy your favorite tunes with a friend, in stereo! Or switch tapes with your mates. No complicated wireless setup, no waiting for files to be transfered, no internet access required. The best social experience ever!</li>
<li>Built-in stereo microphone and line in. Records full quality sounds for as long as you want (with short breaks every 45 minutes)</li>
<li>Advanced space duplication algorithm: when you think the media is full, just warp it around and you have 100% more space!</li>
<li>No desktop, laptop, tablet, super-computer or any other damn thing with transistors in it required. No software. No platforms. No broadband internet connection. Nothing. It just works.</li>
<li>Strong, hard, heavy-duty case. Won&#8217;t break, period.</li>
<li>Very reliable, can work for decades, even under rough usage (trust me).</li>
<li>Replaceable built-in batteries. Can also be powered by external batteries or power supply.</li>
</ul>
<p>Some photos:</p>

<a href='http://terminalapp.net/my-walkman/img_0151/' title='Main controls'><img width="150" height="150" src="http://terminalapp.net/wp-content/uploads/2010/01/IMG_0151-150x150.jpg" class="attachment-thumbnail" alt="" title="Main controls" /></a>
<a href='http://terminalapp.net/my-walkman/img_0152/' title='Controls view, and stereo built-in mic'><img width="150" height="150" src="http://terminalapp.net/wp-content/uploads/2010/01/IMG_0152-150x150.jpg" class="attachment-thumbnail" alt="" title="Controls view, and stereo built-in mic" /></a>
<a href='http://terminalapp.net/my-walkman/img_0153/' title='Front view'><img width="150" height="150" src="http://terminalapp.net/wp-content/uploads/2010/01/IMG_0153-150x150.jpg" class="attachment-thumbnail" alt="" title="Front view" /></a>
<a href='http://terminalapp.net/my-walkman/img_0154/' title='Headphone and mic jacks, volume control, mechanical counter and operation led'><img width="150" height="150" src="http://terminalapp.net/wp-content/uploads/2010/01/IMG_0154-150x150.jpg" class="attachment-thumbnail" alt="" title="Headphone and mic jacks, volume control, mechanical counter and operation led" /></a>
<a href='http://terminalapp.net/my-walkman/img_0155/' title='Model label and power switch'><img width="150" height="150" src="http://terminalapp.net/wp-content/uploads/2010/01/IMG_0155-150x150.jpg" class="attachment-thumbnail" alt="" title="Model label and power switch" /></a>
<a href='http://terminalapp.net/my-walkman/img_0156/' title='Tape compartment'><img width="150" height="150" src="http://terminalapp.net/wp-content/uploads/2010/01/IMG_0156-150x150.jpg" class="attachment-thumbnail" alt="" title="Tape compartment" /></a>

<p>(Unfortunately, I forgot to remove the batteries about 15 years ago&#8230; there&#8217;s a huge mess inside the battery compartment)</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/X5mnIM3Rrrk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/my-walkman/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WebObjects, PostgreSQL and DB growing, and growing, and growing…</title>
		<link>http://terminalapp.net/webobjects-postgresql-and-db-growing-and-growing/</link>
		<comments>http://terminalapp.net/webobjects-postgresql-and-db-growing-and-growing/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 22:20:46 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[WebObjects]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=112</guid>
		<description><![CDATA[One of the databases that support our application has some tables where data is updated very frequently. In PostgreSQL world, this means the table must be vacuumed very frequently to remove the old versions of the updated rows, clearing up space for new rows or new versions of existing rows. On very frequently updated tables, [...]]]></description>
			<content:encoded><![CDATA[<p>One of the databases that support our application has some tables where data is updated very frequently. In PostgreSQL world, this means the table must be vacuumed very frequently to remove the old versions of the updated rows, clearing up space for new rows or new versions of existing rows. On very frequently updated tables, where insertions occur occasionally, but updates very often (several per second), recent versions of PostgreSQL should trigger their auto-vacuum daemon at a very high rate, like every 2 or 3 minutes, for those tables.</p>
<p>Despite this, our database kept growing like crazy, with no apparent reason. I decided to investigate what was going on.</p>
<p>The <code>vacuum verbose</code> is a neat command you can use in the PostgreSQL console to check what&#8217;s going on with the built-in cleaning service. This will run a vacuum on every table, giving you extensive report on how many used and unused rows exist in each table, and how many of the unused were deleted and their space reclaimed by PostgsreSQL.</p>
<p>The most interesting output of this command are the lines (one per table) like: <code>DETAIL: 2942 dead row versions cannot be removed yet.</code>. This means you have, in this example, 2942 rows on that table that are not used any more, but for some reason, vacuum was not able to delete them.</p>
<p>Browsing the web, I found out the most probable cause of this issue is the existence of a transaction that started a long time ago, and never finished. PostgreSQL will only delete rows older than the start timestamp of the oldest transaction still running. Newer versions might be needed by those transactions, so they are kept in place, even if their death sentence is already declared.</p>
<p>So, I started looking at what was going on inside the database engine, searching for those pending transactions. A lot of useful information about the current status of a PostgreSQL database can be found in many tables that exist in memory during PostgreSQL execution, that can be queried as any regular table. The one that was important for me was <code>pg_stat_activity</code>, which contains a list of all the current transactions.</p>
<p>By running the <code>select * from pg_stat_activity;</code> SQL command, I saw that each instance of my application had create two database connections, and for each instance, one of the connections had a transaction that started at the time the application instance was launched, but never committed or rolled back.</p>
<p>After some time of poking around, reading code, and talking to the right people, the problem was revealed. By default, WebObjects applications will open two connections to each database they talk to. One for the actual data queries, and the other to ask the database, at startup time, for what&#8217;s called the jdcb2info. This is a bunch of information needed to map between PostgreSQL and Java data types. And, due to one of those very old bugs that strangely nobody fixed yet that make WO fun, the transaction where that information is requested is never committed. So, the transaction will remain open, and PostgreSQL won&#8217;t vacuum a thing until you quit your application.</p>
<p>Although there&#8217;s not yet a solution for the problem itself (hopefully there will be, as I filled a bug in Radar), you can avoid it, by using the jdcb2info bundled in the PostgreSQL plugin instead of requesting it from the DB. To do this, simply append <code>?useBundledJdbcInfo=true</code> to your DB connection URL, like <code>jdbc:postgresql://localhost/dbname?useBundledJdbcInfo=true</code>. This way, the second connection is not created at all, and no pending transaction will occur.</p>
<p>And of course, after doing this, the DB happily vacuumed hundreds of thousands of dead rows and stopped growing like crazy. Also, a tip: if you really need to vacuum the database right now, but you can&#8217;t stop your apps and interrupt service, simply obtain the pids of the PostgreSQL processes that are maintaing the offending connections from the <code> pg_stat_activity</code> table, and kill them, using the unix command <code>kill &lt;pid&gt;</code> command. The connections will die, but your apps will not.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/zcOqS7g9QvQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/webobjects-postgresql-and-db-growing-and-growing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WWDC 2009</title>
		<link>http://terminalapp.net/wwdc-2009/</link>
		<comments>http://terminalapp.net/wwdc-2009/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 20:55:11 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Generic]]></category>
		<category><![CDATA[wwdc]]></category>
		<category><![CDATA[wwdc 2009]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=105</guid>
		<description><![CDATA[Contrarily to WOWODC, I didn&#8217;t like WWDC at all this year. Some reasons for that were:

The IT track (the one that is of most interest for me) was very poor on this WWDC edition. There were a few talks about OS X Server and some of it&#8217;s new technologies, and that was it.
There was one [...]]]></description>
			<content:encoded><![CDATA[<p>Contrarily to WOWODC, I didn&#8217;t like WWDC at all this year. Some reasons for that were:</p>
<ul>
<li>The IT track (the one that is of most interest for me) was very poor on this WWDC edition. There were a few talks about OS X Server and some of it&#8217;s new technologies, and that was it.</li>
<li>There was one (yes, one) talk about Java. This is ridiculous, specially if you consider that, a few years ago, Apple was selling the Mac as the best platform for developing and deploying Java applications. The first time I was at WWDC, 2006, there were a few Java sessions with interesting content. Don&#8217;t get me wrong, I love Cocoa, but some people need decent Java support to work.</li>
<li>No WebObjects content at all. The only official note about WebObjects was an announcement of an announcement that should happen within weeks. I don&#8217;t have any more details (and if I had, they would be under NDA, of course). This is sort of understandable, as they focused their attention on WOWODC, but it makes WWDC kind of pointless for people working on WebObjects projects in full time.</li>
<li>They somehow managed to serve even worse food than last year. Those guys must have some special talent, I thought it could not get worse than last years, buy they crossed that barrier at full speed. Also, there was no food on monday of tuesday evening, making it a little hard to eat and get back to watch the Apple Design Awards ceremony on time.</li>
<li>There were attendees distributing flyers and merchandising material inside the Moscone, despite the fact that doing that is clearly against the conference rules. Many people that attend WWDC work for some company, but a large part of the attendees own their own business, and everyone would love to promote it. But this is not a consumer exhibition, it&#8217;s a developer conference, with well defined rules, and people must respect them. What pissed me even more was the fact that the same flyers were distributed every day, by the same people, and no one from security kicked those guys out. It kinda looked like Portugal, where people break the laws with no apparent consequences.</li>
<li>Moscone center was at the limit of it&#8217;s capacity, and that showed. Although they could arrange the room sizes and session schedule way better than last year (I could attend all the sessions I wanted, which didn&#8217;t happen last year due to some of the rooms being full), there were not enough seats (either on the round tables, or the sofas) on the halls. On the first days it was really hard to find a place to rest for a while, or to write some lines of code.</li>
</ul>
<p>I think Apple should seriously consider moving to a larger space, or breaking the WWDC in two separate conferences. Maybe one for newbies and another one for advanced users, or one for iPhone OS and another one for Mac and IT. I believe the WWDC is becoming less interesting every year, and the numbers back me up.</p>
<p>Apple claims that 60% of the attendees at WWDC 09 were first timers. Given that they sold out in 2008 and 09, and the Moscone capacity was the same on both events (around 5200 attendees), clearly a lot of people that came to 08 didn&#8217;t find it very interesting to come back this year. The fact that they sold out is based on the iPhone SDK hype, but people seem to be not coming back on the next year. I know I won&#8217;t, unless something deeply changes about WWDC.</p>
<p>I could not finish, of course, without congratulating João Pavão and the Sofa team for their well-deserved Apple Design Award on Versions, their SVN client. Really good job, guys! :)</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/P6wThwQ2PWc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/wwdc-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WWDC 2009 (Keynote)</title>
		<link>http://terminalapp.net/wwdc-2009-keynote/</link>
		<comments>http://terminalapp.net/wwdc-2009-keynote/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 09:25:25 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Generic]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[keynote]]></category>
		<category><![CDATA[MacBook]]></category>
		<category><![CDATA[MacBook Air]]></category>
		<category><![CDATA[MacBook Pro]]></category>
		<category><![CDATA[wwdc]]></category>
		<category><![CDATA[wwdc 2009]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=102</guid>
		<description><![CDATA[I found most of the keynote announcements interesting.
The hardware upgrades on the MacBook Pros were cool. First, Apple seemed to acknowledge that the difference between the unibody MacBook and the MacBook Pro was not strong enough, so the MacBook is dead, long live MacBook Pro. This means the 13 inch laptop has now some of [...]]]></description>
			<content:encoded><![CDATA[<p>I found most of the keynote announcements interesting.</p>
<p>The hardware upgrades on the MacBook Pros were cool. First, Apple seemed to acknowledge that the difference between the unibody MacBook and the MacBook Pro was not strong enough, so the MacBook is dead, long live MacBook Pro. This means the 13 inch laptop has now some of the Pro features, namely Firewire was brought back, in it&#8217;s 800 Mbps version. Other nice stuff, like the non-removable high capacity battery and the back-lighted keyboard made their way to the MacBook Pro 13&#8221;. The usual CPU speed bumps were there, of course. The only decision that left people a bit confused was the introduction of the SD-card reader. Not only it seems useless (because you may plug any SD-card enabled device to your Mac using USB) but because it kicked out some old features on the Macs that got it. The Express card slot went away on the MacBook 15&#8221;, and the Audio in port on the MacBook (now Pro) 13&#8221; was replaced by an Audio in/out jack found on the iPhones. Although you can buy an Apple headset to plug there, there&#8217;s an obvious question not yet answered, how to record audio from the line in?</p>
<p>The MacBook Air also got some CPU upgrades, and very interesting price cuts. Finally they are not ridiculously overcharging (at least, not as much as they did) the MacBook Air form factor, despite the fact that the machine specs were disappointing. I think they should ship them with 4 GB of RAM instead of 2 (specially because it&#8217;s not upgradable), but despite that it&#8217;s becoming a really interesting machine to buy if you travel a lot. The only feature I miss (and I was hoping to find it on this new machines) is a 3G modem, which would avoid carrying one more USB dongle. But they may be because of&#8230;</p>
<p>&#8230; the iPhone. Apple surprised me with the new iPhone 3GS and the 3.0 version of the OS. Despite the ugly name, the 3GS is a really nice improvement to the old model, and the differences are in the details. Among all, we have:</p>
<ul>
<li>(3GS only) Hardware encryption of all your data. That&#8217;s really cool on a device that can easily be lost or stolen. This helps keeping your data private, but it&#8217;s not all.</li>
<li>Find my iPhone. Every mobile phone user went trough this at least once. You look for your iPhone, but it seems to be nowhere. If it&#8217;s somewhere around your house, you just grab the landline phone, call it, and follow the ringtone. But sometimes, no ringtone will sound, and that&#8217;s the time you start panicking. Did you left it in the car? Or maybe in a restaurant? Or, worse, someone stole it without you even noticing? Now, if you subscribe MobileMe, you can simply access the service, and ask for the current localization of the phone. If it&#8217;s turned on, the iPhone will report it&#8217;s current position (based on the usual localization facilites, like GPS or WiFi triangulation) that will be presented on a map. But there&#8217;s more: you may ask the phone to make some noise, and display a message with your landline phone number and address, and with luck, someone will pick it up and return it to you, or deliver it to a local police station. There&#8217;s the nice detail that the phone <em>will</em> make noise even if it&#8217;s set to silent. But, even better, if your phone is lost forever, you can still keep your data private. Just beam it an order to wipe all the data on it, and the phone will start erasing your stuff. If it&#8217;s encrypted, the wipe is immediate. Later, if you get back your iphone, just plug it to your Mac, and the content will be restored from your backups (which can also be encrypted, for extra protection).</li>
<li>Tethering. This one is big, at least for me. iPhone will share it&#8217;s 3G connection either trough the USB cable or Bluetooth. This is awesome, allowing you to pay only one 3G subscription instead of two (one for the phone, and one for the laptop). Also, no more crappy 3G modems with questionable quality drivers.</li>
</ul>
<p>There are also some nice details, like the faster CPU on the 3GS, MMS support, better camera, etc. The iPhone is becoming more and more interesting, and I may find myself finally getting one, if the portuguese operators manage to sell them for decent (or not very indecent) prices.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/FMDc0tX1cw8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/wwdc-2009-keynote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WOWODC 2009</title>
		<link>http://terminalapp.net/wowodc-2009/</link>
		<comments>http://terminalapp.net/wowodc-2009/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 08:02:26 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[WebObjects]]></category>
		<category><![CDATA[gianduja]]></category>
		<category><![CDATA[wonder]]></category>
		<category><![CDATA[wowodc]]></category>
		<category><![CDATA[wowodc 2009]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=99</guid>
		<description><![CDATA[So, it&#8217;s time to wrap up the annual crazy week in San Francisco. This year, we had a two days conference entirely dedicated to WebObjects (WOWODC 2009) on the weekend right before the week-long WWDC. As I had about 12 hours with nothing to do inside two US Airways planes, I wrote quite a bit [...]]]></description>
			<content:encoded><![CDATA[<p>So, it&#8217;s time to wrap up the annual crazy week in San Francisco. This year, we had a two days conference entirely dedicated to WebObjects (WOWODC 2009) on the weekend right before the week-long WWDC. As I had about 12 hours with nothing to do inside two US Airways planes, I wrote quite a bit of text, that I&#8217;ll split into 3 different posts. Here&#8217;s the first one, about WOWODC.</p>
<p><strong>WOWODC</strong></p>
<p><a href="http://www.wocommunity.org/wowodc09/">WOWODC 2009</a> was, by far, the best WOWODC ever. Last year&#8217;s WOWODC was good, but a large part of the content, although interesting, was stuff not used for the majority of WebObjects developers. This year, the organizers and speakers have decided to talk about stuff used daily by most of the WO developers to get their work done, covering from some nice EOF details to the WO 5.4 templating system, and of course, new Wonder stuff.</p>
<p>But that was not everything. Apple was there too. 16 of the slightly over 100 attendees were Apple employees. One talk (the WO 5.4 templating system) was given by Drew Davidson, from Apple. But, there&#8217;s even more: Mike presented Gianduia, a stunning technological preview of a new framework the Apple guys are working on, with an amazing approach to handling Ajax and client-side programming in a logical and powerful way. This is the framework already being used internally by Apple on the One to One application (for those who don&#8217;t know, the One to One is a service provided by Apple on it&#8217;s stores, with the purpose of assisting users with their computer usage).</p>
<p>Watching Apple employees attending and presenting on non-Apple events is rare, and public previews of what they are working on is almost unimaginable. Yet, it did happen, and it shows how committed Apple is to WebObjects and it&#8217;s community. </p>
<p>One interesting detail was the fact that Mike, due to medical reasons, could not be there, so he did his presentations (three of them) using iChat audio conference and screen sharing. It was amazing how well it did go (specially with the crappy network the hotel provided us). Mike did an amazing job on this, and it really seemed like he was there with us.</p>
<p>Above all, I want to thank all speakers, all the Apple people who went there (including Pierre who is making an important effort inside Apple to push WebObjects forward), and above all, Pascal Robert, and he&#8217;s incredible personal (and financial) effort that, once again, made WOWODC happen, and in style.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/mrMW2gfMjWo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/wowodc-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FireFox 3: the evaluation order bug is back</title>
		<link>http://terminalapp.net/firefox-3-the-evaluation-order-bug-is-back/</link>
		<comments>http://terminalapp.net/firefox-3-the-evaluation-order-bug-is-back/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 01:20:04 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[AJAX and Javascript]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[No-Cache]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=88</guid>
		<description><![CDATA[A few months ago, I wrote about a Javascript evaluation order bug I hit on Firefox 3. I managed to create a workaround and everything was going fine. I assumed the bug had been fixed on the subsequent minor releases of Firefox.
Some time ago, that same page started to be the target of some bug [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago, I wrote about a <a href="http://terminalapp.net/firefox-3-javascript-evaluating-order-problems/">Javascript evaluation order bug I hit on Firefox 3</a>. I managed to create a workaround and everything was going fine. I assumed the bug had been fixed on the subsequent minor releases of Firefox.</p>
<p>Some time ago, that same page started to be the target of some bug reports stating that users would occasionally get a blank page when accessing it, and the only way to get the page back was to hit reload. This was happening on Firefox 3.0.7 and newer.</p>
<p>As I wrote on the previous post, our page does an RPC call while loading the header scripts, like this:</p>
<pre>
&lt;script src="/some/path/prototype.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/effects.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/wonder.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/english.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/combo.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/feedback.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/jsonrpc.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var jason = new JSONRpcClient("proxyUrl");
&lt;/script&gt;
&lt;script src="/some/path/comboboxes.js"&gt;&lt;/script&gt;
...
</pre>
<p>After poking around with Firebug, I discovered that all the code below the call was being ignored by the Firefox parser. That would naturally result in an empty body, which lead to a blank page.</p>
<p>I started googling around, and I found two interesting Firefox bug reports, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=444322">444322</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=478277">478277</a>.</p>
<p>The first of those bugs mentions the original Javascript evaluating order issue I wrote about before (which was not, in fact, a JavaScript evaluating order, but an issue where the parser would not wait for the result of the RPC call to continue parsing). They also mention the Firefox team released a &#8220;fix&#8221; for it in 3.0.6, but people kept reporting the issue was not yet fixed (some claimed it in fact got worse), which lead to opening the second bug report. Also, an important fact about this bug is that it seems to happen only when all the page resources are already cached locally by the browser. This includes all the resources loaded in the page header (usually, JavaScript and CSS files).</p>
<p>A few interesting comments (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=444322#c30">#30</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=444322#c34">#34</a>) clarify what&#8217;s causing this, and mentions this is a piece of &#8220;fragile code&#8221;. I don&#8217;t know enough about the Firefox code base (which is a nice way to say I know nothing at all) to be sure about this, but I believe the &#8220;fix&#8221; caused an even bigger problem, where, in some conditions, the parser will enter a state where it will simply eat all the input without parsing it. This leads to the blank page problem.</p>
<p>Well, this is all very interesting, but I had a problem that needed to be solved. So, I hacked. On of the things that avoid this bug to be triggered is at least one of the page resources to not exist on the local cache when the page is loaded. So, I forced this situation to happen. I picked up a small JS file that is loaded before the Ajax call, and configured Apache to add all the necessary headers for browsers to not cache it. This is done with something like this:</p>
<pre>
&lt;Files "somefile.js"&gt;
	Header set Cache-Control: "private, pre-check=0,
post-check=0, max-age=0"
	Header set Expires: 0
	Header set Pragma: no-cache
&lt;/Files&gt;
</pre>
<p>This will prevent browsers from caching the file. Remember to to this on a small file, or you&#8217;ll be wasting bandwidth and causing the page load time to increase.</p>
<p>Now if only someone would really fix that bug&#8230; :)</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/zjTOSgYZEPE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/firefox-3-the-evaluation-order-bug-is-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple: be decent</title>
		<link>http://terminalapp.net/apple-be-decent/</link>
		<comments>http://terminalapp.net/apple-be-decent/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 00:33:32 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[WebObjects]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[ranting]]></category>
		<category><![CDATA[wwdc]]></category>
		<category><![CDATA[wwdc 2009]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=82</guid>
		<description><![CDATA[Dear Apple:
When you acquired NeXT, you gained access to two powerful and sibling technologies: Cocoa and WebObjects. Both are built upon stunning and advanced architectural principles, and share many concepts.
A few years later, when you introduced OS X, you promoted Cocoa as the way to build software for Mac. That&#8217;s great, because it in fact [...]]]></description>
			<content:encoded><![CDATA[<p>Dear Apple:</p>
<p>When you acquired NeXT, you gained access to two powerful and sibling technologies: Cocoa and WebObjects. Both are built upon stunning and advanced architectural principles, and share many concepts.</p>
<p>A few years later, when you introduced OS X, you promoted Cocoa as <em>the</em> way to build software for Mac. That&#8217;s great, because it in fact was a breakthrough compared to what we had to do before (I still remember WaitNextEvent()&#8230; ).</p>
<p>Probably because the web was not then what it is now, you decided to not publicly advertise and promote WebObjects, although you saw enough potential on the technology to make it the technical base for all your business. From numerous internal applications to popular industry leading services like Apple Store or iTunes Store, every dollar than gets in or out your company goes trough, at least, one WebObjects app.</p>
<p>This lead to a situation where you made WebObjects evolve according to your needs, barely maintaining a public functional version of the framework. Although the framework by itself is still the one with the most advanced and powerful concepts one can find, the feature gap started to show. This lead to an incredible, amazing, dedicated community to grab the task for themselves and make the work Apple should be doing, adding features, some of them essential for the success of the framework, like XHTML support or Ajax.</p>
<p>So, you&#8217;ve just announced WWDC 2009 today. I&#8217;m not asking for 18 WebObjects-related sessions like you had in WWDC 2000, because I know that&#8217;s unimaginable, given the importance (or lack of it) you attribute to promoting WebObjects. I know there will be one, maybe two, and if we are really lucky, three WebObjects sessions on WWDC 2009. It&#8217;s the same every year since I attend WWDC.</p>
<p>But, Apple, you have to tell me&#8230; <strong>how hard is to respect an entire community, of highly competent and dedicated professionals, who use your technology for years, who kept it alive, who built extensions and IDEs that <em>yourselves are using internally</em>, and adding at least one fucking little reference to WebObjects on the <a href="http://developer.apple.com/wwdc/it/">WWDC 2009 IT page</a>?</strong> Is it really that hard to do, specially considering you mention other web technologies that are not even made by you?</p>
<p>Or it&#8217;s just the iPhone that matters now?</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/_-IfSuH4Jhc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/apple-be-decent/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WebObjects, SSL, Apache 2.2, FreeBSD problems</title>
		<link>http://terminalapp.net/webobjects-ssl-apache-22-freebsd-problems/</link>
		<comments>http://terminalapp.net/webobjects-ssl-apache-22-freebsd-problems/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 22:40:01 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[WebObjects]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=78</guid>
		<description><![CDATA[I still didn&#8217;t have time to investigate this deeply, but here goes anyway, as I didn&#8217;t find the answer to this anywhere.
I had the problem described in the Apache 2.2 adaptor: SSL fails on FreeBSD amd64 thread in the WebObjects-Deploy mailing list. As the thread suggests, the problem is not related to 64 bits at [...]]]></description>
			<content:encoded><![CDATA[<p>I still didn&#8217;t have time to investigate this deeply, but here goes anyway, as I didn&#8217;t find the answer to this anywhere.</p>
<p>I had the problem described in the <a href="http://lists.apple.com/archives/Webobjects-deploy/2007/Jul/msg00000.html">Apache 2.2 adaptor: SSL fails on FreeBSD amd64</a> thread in the <a href="http://lists.apple.com/mailman/listinfo/webobjects-deploy">WebObjects-Deploy mailing list</a>. As the thread suggests, the problem is not related to 64 bits at all, but with a problem related to the SSL client certificate becoming corrupted somewhere between an SSL request entering apache and leaving to the selected WebObjects application instance.</p>
<p>The thread suggests a little hack in the Wonder&#8217;s Adaptor code to ignore the SSL client certificate stuff, but I found that to be a little too dirty. So I dug this as much as time allowed.</p>
<p>I found the adaptor will forward all the SSL http headers it has to the application. This allows the application to analyse the SSL information (like the certificates themselves, the certificate information, etc) if, for some reason, that&#8217;s needed. However, the SSL client certificate information is becoming corrupted, and screws up the request, making it invalid. As the application will not reply to what it believes to be an invalid http request, the adaptor thinks the application is non-responsive, and considers it invalid for some minutes. That&#8217;s why the user starts to get the infamous &#8220;No instance available&#8221; message.</p>
<p>I still don&#8217;t know if this is an Apache, mod_ssl, WO Adaptor or whatever bug. But I know how to work around it, avoiding this error. As the problem is related to providing the SSL information to the adaptor, I chose to simply block it. This can be done in the Apache configuration. Just add this to the right context (usually the SSL virtual host configuration block):</p>
<p><code><br />
SSLOptions -FakeBasicAuth -ExportCertData -StrictRequire -StdEnvVars<br />
</code></p>
<p>This will hide all the SSL information from the adaptor, avoiding the error. I&#8217;ll try to dig this a little more if I have some free time and update this post.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/3kNK_kP4vo8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/webobjects-ssl-apache-22-freebsd-problems/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apple 2009 wish list</title>
		<link>http://terminalapp.net/apple-2009-wish-list/</link>
		<comments>http://terminalapp.net/apple-2009-wish-list/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 00:31:09 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Generic]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mac OS X Server]]></category>
		<category><![CDATA[WebObjects]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=70</guid>
		<description><![CDATA[It&#8217;s a brand new year. So here&#8217;s my wish list for Apple:

Please fix the wireless driver that causes my Mac to crash about 10% of the times I turn Airport off.
Please fix the trackpad driver, or whatever is causing the trackpad to behave strongly erratic during about 30 seconds after waking the Mac up.
Please fix [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a brand new year. So here&#8217;s my wish list for Apple:</p>
<ul>
<li>Please fix the wireless driver that causes my Mac to crash about 10% of the times I turn Airport off.</li>
<li>Please fix the trackpad driver, or whatever is causing the trackpad to behave strongly erratic during about 30 seconds after waking the Mac up.</li>
<li>Please fix the damn copy/paste bug that makes the paste command paste the previously copied object and not the most recent one. This is specially irritating when you cut a piece of text, paste and you realize you are pasting something else, and that your supposedly cut piece of text is lost forever, unless you can undo and get it back.</li>
<li>Please fix the irritating bug that causes an iChat window to keep being the active one even after I click Safari, making its window go in front of iChat&#8217;s. That&#8217;s specially annoying when I type apple-W to close the Safari window, and the ichat one goes away.</li>
<li>Please provide replacement keyboards for people who has pre-unibody MacBook Pros that, you know, actually sense a keystroke every time the key goes all the way down, without the need to almost punch the key.</li>
<li>Please fix whatever is causing my father&#8217;s MacBook Pro to keep waking up and going back to sleep when the lid is closed and the charger on, despite I had already turned off every god damn thing that could wake it up, including the lid open event.</li>
<li>Speaking about the charger, please provide chargers where the charge light doesn&#8217;t go off for some unknown reason. It still works, but it doesn&#8217;t inspire a lot of confidence in it ans it&#8217;s safety.</li>
<li>Please provide granular updates to Mac OS X Server. Please please please pretty please.</li>
<li>Please care a little more about the entreprise and IT markets, namely your own web application technology (WebObjects, of course).</li>
</ul>
<p>Thank you, guys! You must hate me but you&#8217;re nice people anyway. Sometimes.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/W24EFQJMYdo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/apple-2009-wish-list/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stardom SOHORAID review</title>
		<link>http://terminalapp.net/stardom-sohoraid-review/</link>
		<comments>http://terminalapp.net/stardom-sohoraid-review/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 00:22:32 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[eSATA]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[SOHORAID]]></category>
		<category><![CDATA[Stardom]]></category>
		<category><![CDATA[USB]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=60</guid>
		<description><![CDATA[Backups are vital for keeping your data safe, but keeping them in the same physical place as the backed up data has some drawbacks. If your house or office catches fire, or some natural disaster occur, you loose all your data anyway. If the place is robbed, there&#8217;s a high probability that the burglars take [...]]]></description>
			<content:encoded><![CDATA[<p>Backups are vital for keeping your data safe, but keeping them in the same physical place as the backed up data has some drawbacks. If your house or office catches fire, or some natural disaster occur, you loose all your data anyway. If the place is robbed, there&#8217;s a high probability that the burglars take all the hardware they can find, backup disks included (and it happens to many people, unfortunately, including some indie mac developers).</p>
<p>Facing that, and having the possibility of easily keeping a backup media offsite, I started looking for a solution. My requirements were simple: it had to be fully automatic and give me zero work, besides the obviously needed physical transportation. As I already had a backup system in place (using Retrospect and a backup disk) it was easy to conclude that a nice solution would be a RAID system with swappable drives. This way I could have two mirrored drives online, and a third one offsite. Every time I switch drives, it&#8217;s just a matter of taking out one of the drives and later inserting the one that was kept away. The RAID system will rebuild the mirror and, most important, I would have to do nothing!</p>
<p>After searching for a while, I was recommended the <a href="http://www.stardom.com.tw/sohoraid_feature.htm">Startdom SOHORAID</a> line of products. Don&#8217;t be fooled by the crappy site, because, as we are about to see, the product actually surprised me for it&#8217;s quality.</p>
<p>There are two models, the SR3610 and the SR3620. The SR3610 is actually the best one, including an LCD display for easy configuration and system monitoring. The SR3620 only has one option, USB2 + external SATA interface, while the SR3610 comes in two options, USB2 + external SATA or USB2 + Firewire 800</p>
<p> As the machine that is driving the system is a PowerMac G5, my first idea was to buy the firewire 800 model. But I ended up getting the USB + eSATA SR3610 option due to a mix of reasons. The first one, the price. The Firewire 800 model was much more expensive (about 70 euros). Also, facing the fact that Apple is moving away from Firewire and that the reliability of firewire controllers is not that great, I ended up opting for the USB + eSATA model. This model has an additional fan to help keeping the system cooler.</p>
<p>I decided that, as the RAID would be only used for backups, USB would be enough. But the Stardom came with an <a href="http://www.digitaldingus.com/reviews/vizo/ura350sa/ura_esata_bracket.jpg">eSATA to SATA bracket</a> that allowed me to turn an internal SATA port in an external one. As I would not need the internal backup disk any more, I got a free SATA port on the G5 and used this bracket to plug the RAID directly to the SATA interface. It was a nice way of adding an eSATA port to the Mac without having to buy a PCI eSATA card.</p>
<p>Stardom sells their RAIDs under OEM to many manufactures, including WiebeTech. As there&#8217;s already an extensive and incisive<a href="http://www.amug.org/amug-web/html/amug/reviews/articles/wiebetech/silver2/"> review of a WiebeTech SilverSATA II Dual Bay SATA Enclosure</a> online (which is exactly the same product as Stardom&#8217;s) I won&#8217;t reinvent the wheel. Instead, I&#8217;ll add some points to Arthur&#8217;s great work:</p>
<p><strong>Power supply</strong></p>
<p>One thing that surprised me in the Stardom system was the quality of the power supply. As you can see in <a href="http://www.amug.org/amug-web/html/amug/reviews/articles/wiebetech/silver2/inside.jpg">this Arthur&#8217;s photo</a>, the power supply is not an external made-in-china low quality brick, but it&#8217;s built in the case itself. And those big capacitors are actually making great work there. Remember on the old Macs where you would turn off their switch, and they would take about half a second to actually power down? Well, here is the same thing. After cutting off the power, the system will still work for about the same time. This is great to avoid quick power cuts, and shows the power supply appears to be relatively immune to bad quality mains power.</p>
<p><strong>Interface</strong></p>
<p>The LCD panel + control buttons were actually a deception (the only one). First, the menu system is complicated and non-intuitive to use. A good example is the RAID mode, that can be switched between 0 and 1. When you get to the RAID mode menu, it will display one of the modes&#8230; that is actually the mode the system is <em>not</em> in. The idea is that, if you want the RAID mode to be that one, you press the ENT button. Well&#8230;</p>
<p>But there&#8217;s worse. The LCD display, during normal operation, displays the status of both drives. If you try to do anything else, including monitoring the system temperature of fan speed, the RAID operation will stop. The LCD will display a warning about this, and if you confirm, no disk activity will occur while you are on the menu system. This is pretty bad, because you won&#8217;t be able to constantly monitor the system health during operation.</p>
<p>Also, I have noticed that, sometimes during the internal controller initialization, after powering on or resetting, the LCD panel will display random characters. Despite being scary, it has no apparent side effects related to the data consistency and disk operation.</p>
<p>Finally, I also don&#8217;t get what the drive leds are supposed to mean. Each drive has an operation led on it. When writing data, the leds on both drives will light up. When reading, sometimes only the upper drive led lights up, and sometimes no led lights up at all. At first I thought the system was only reading from one drive, but according to the speed tests I made, both drives must be in usage, as a single disk cannot sustain the +70 MB/s I got (you can see more speed tests in Arthur&#8217;s review). So I suppose this is just a controller bug, again, without any visible harmfull effect on the data reliability or normal RAID operation.</p>
<p>Bottom line, this is something that Stardom needs to improve.</p>
<p><strong>RAID reliability</strong></p>
<p>As I intend to keep removing and inserting drives in this thing, I wanted to be sure how reliable the RAID system was. To test that, I created a RAID mirror using two disks, and copied some big video files to it. To test the consistency during the tests I describe next, I used the command line md5 tool to create a hash of the original file (on the G5&#8217;s internal drive) and the files in the RAID. As long as both hashes are the same, the files are not corrupt.</p>
<p>First, I did the obvious: removed a drive. A very loud &#8220;beep&#8221; started sounding from inside the box, and the status led turned yellow. I pressed the mute button to bring back the peace, and tested consistency. Everything OK. Then I inserted the drive I had just removed. The system started rebuilding the RAID. I did consistency checks during and after the RAID rebuilding process, and everything was OK.</p>
<p>But this is lame. The system did what is supposed to do. Big deal. Next test was a little more agressive. I removed a drive again, and reinserted it. The rebuilding operation started as expected. Then, at about 2% of the rebuilding process, I turned the system off, to simulate a power failure. As this is not exactly a high-end expensive RAID system, I expected a disaster. Well, much to my surprise, not only the system started rebuilding the RAID mirror immediately after being powered on again, as it actually knew where it was before being turned off, and resumed the process from there! Again, consistency checks were done during and after the process, and everything was fine. Thumbs up for the Stardom people!</p>
<p><strong>Noise</strong></p>
<p>This thing has two hard drives, a RAID controller and a power supply inside it, so it really needs to cool itself down. Cooling down means generally fans, and fans mean noise. On of the great things I felt when I upgraded from a PowerMac G4 to a G5 was how silent my office become. The PowerMac G5 has very high-quality fans that turn only as fast as needed, which means they turn very slowly and quietly most of the time. I was afraid the Stardom enclosure would bring the noise back.</p>
<p>To my surprise, it&#8217;s much more silent than I expected. Arthur told that in his review, and I do the same: you&#8217;ll hear mostly the air flow through the enclosure and not the fans themselves. Of course, it makes noise, and it&#8217;s clearly louder than the G5, but it&#8217;s not that bad. To get an idea of it, if you play some game on a MacBook Pro and bring its fans up to full speed, the MacBook Pro becomes much more noisier than the Stardom RAID.</p>
<p><strong>Conclusion</strong></p>
<p>The Stardom SOHORAID seems to be a great system, specially being cheaper than most concurrent products. It&#8217;s very reliable, and seems to be made out of quality components. It&#8217;s also fast (if used through the eSATA interface) and quiet. The only bad thing about it is the user interface, specially the fact that using it will halt the normal RAID operation.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/mtAhHSgj8SI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/stardom-sohoraid-review/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Versions is out</title>
		<link>http://terminalapp.net/versions-is-out/</link>
		<comments>http://terminalapp.net/versions-is-out/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 02:19:50 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[subversions]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Versions]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=53</guid>
		<description><![CDATA[
Versions is finally out! :) João Pavão, together with the Sofa team, released their new Subversion client. It&#8217;s a really powerful application made by people who deeply understand how a Mac application should be. In a world full of dubious software, it&#8217;s good to see that some people still care a lot about their code [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><a href="http://versionsapp.com"><img src="http://terminalapp.net/wp-content/uploads/2008/11/versions.png" alt="" title="Versions Icon" width="158" height="140" class="size-full wp-image-54" /></a></p>
<p><a href="http://versionsapp.com">Versions</a> is finally out! :) <a href="http://picodev.com/">João Pavão</a>, together with the <a href="http://www.madebysofa.com/">Sofa</a> team, released their new Subversion client. It&#8217;s a really powerful application made by people who deeply understand how a Mac application should be. In a world full of dubious software, it&#8217;s good to see that some people still care a lot about their code quality and the detail. I feel honored for having been one of the few who saw this application being born and getting mature enough to be released in the wild. Congratulations, João! :)</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/fPga5cQ2I6s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/versions-is-out/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Promise UltraTrak woes</title>
		<link>http://terminalapp.net/promise-ultratrak-woes/</link>
		<comments>http://terminalapp.net/promise-ultratrak-woes/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 02:07:34 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Generic]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[PATA]]></category>
		<category><![CDATA[promise]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[SCSI]]></category>
		<category><![CDATA[UltraTrak]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=52</guid>
		<description><![CDATA[So, we have in your department a Promise UltraTrak SX8000 RAID system that we use for backups. This mother can drive 8 PATA hard drives in several RAID modes, and expose them through a SCSI interface. We currently have a RAID 5 array using 4 500 GB Hitachi hard drives and a fifth hard drive, [...]]]></description>
			<content:encoded><![CDATA[<p>So, we have in your department a <a href="http://www.promise.com/product/product_detail_eng.asp?product_id=90">Promise UltraTrak SX8000</a> RAID system that we use for backups. This mother can drive 8 PATA hard drives in several RAID modes, and expose them through a SCSI interface. We currently have a RAID 5 array using 4 500 GB Hitachi hard drives and a fifth hard drive, similar to the other 4, to be used as hot swap if one of the other drives commits suicide during the night. This is plugged to a PowerMac G4 that has the boring task of carrying up all our backups while we are all sleeping like babies.</p>
<p>This is a pretty old product, and it was never tested with drives this big, but the fact is that it has been working flawlessly for months now (since we upgraded the original 120 GB drives). Until last week. As I had some empty bays and unused small drives, I thought about doing a second array to store some archive stuff, as the RAID 5 array is getting pretty full.</p>
<p>I remembered that the case controller reboots itself when the user creates a new array, so I opted for turning off the Mac and the Promise itself, and install the disks with everything shut down. You know, this thing has hot swap, but it&#8217;s getting old, and we don&#8217;t want to push it too far. So let&#8217;s play it safe. Big mistake. Big big mistake.</p>
<p>I pop in the drives, press the power switch. Controller boots itself up and, as Steve Jobs would say, boom! The first two drives had the red led of death glowing. I spent a quite dramatic few minutes looking at the damn thing, and thinking that <em>it</em> happened. The least likely, the most feared of all things that could happen on a RAID 5 system had just happened. Two drives failed. At the same time. All the backups, some of them more than one year old, lost. Forever.</p>
<p>I got rational again and thought, no, this can&#8217;t happen, this thing did not boot correctly, there is something with the drives I&#8217;ve just inserted that is screwing this up. I powered down the case, removed the drives I had just inserted, and powered on again, this time carefully watching all the lights and bells. The Promise RAID, when booting, scans all the bays to see what&#8217;s going on there. You can see that happening by watching the drive lights, all of them blink quickly in a slow sequence. Well, the first two weren&#8217;t blinking.</p>
<p>I thought, hum, bigger drives then expected, too much time to spin up, the controller is testing them too soon. I powered off the damn thing, removed the first two drives, and reinserted them on lower bays. Another big mistake. The array disappeared. It was lost forever. Looks like the drive position is crucial for the arrays to be recognized. I had just killed what was left of it.</p>
<p>After some moments of desolation, I went to recreate the array again, assuming that the backups were lost I had to start from the ground up. I started the process of creating the array, and then I saw the light. On the little LCD display, the controller had the best of the words I could see on it&#8217;s first line: INITIALIZE. It allowed me to choose Yes and No. I stopped for a while, and though, if the hard drives are OK, and if I can create an array without any kind of initialization&#8230; all my data will be there! Right?</p>
<p>Power off, insert the drives on the original positions, power on, create array, RAID 5, default block size, initialization OFF, gigabyte boundary on, and GO. The array was created. No activity on the drives whatsoever. Perfect. Reboot. I fired up the G4 and run to the KVM console. OS took ages to boot (actually it took as long as every other time, but the adrenaline was all around). The desktop appeared and&#8230; YES! There was the RAID volume, as if nothing had ever happened. I did some quick tests, but that was it. The RAID was back in all it&#8217;s glory. Months of backups, saved.</p>
<p>Knowing this, I decided to push my luck a little further and turn the RAID off again. After powering up, the history repeated, first two drives were &#8220;dead&#8221;. I simply destroyed the array, created a new one without initialization, and I was back in business. Then I turned it off and quickly on again, not allowing the drives to spin down to a full stop. That time, the controller booted up correctly and the array was online.</p>
<p>I went to Promise site to check on this issue, and I see they had released a new firmware that announced to support some newer drives. I installed it (and it was a terrible experience, it started by having to download an older firmware to get the updater software, as Promise forgot to pack the software together with the new firmware on the ZIP archive, and ended up with an old PC with a serial cable plugged to the RAID, two floppy disks &#8211; yes, two floppy disks, and yes, we are in late 2008 -, one with DOS, another with the software, and about 30 tries &#8211; power cycles on the Promise RAID and software reloads on the PC &#8211; to get the serial communication working). After that, I powered off the RAID, waited for complete spin down, powered up again, and everything worked fine. Although I&#8217;m not trusting it fully, it looks like the problem might be solved.</p>
<p>So, lessons to learn: if this happens to you, 1) Do not panic (yet); 2) Do not change the order of the drives; 3) Use the LCD display and the buttons to obtain all the settings of the array (block size, gigabyte boundary status, etc); 4) Delete the array; 5) Create a new array with the same settings and initialization off. You should be off the hook by now, unless the problem WAS in fact two drives dying at the same time. Which, you know, doesn&#8217;t happen. It just can&#8217;t. Really.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/5xZSES04X2o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/promise-ultratrak-woes/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Making an invisible overlay layer work on IE</title>
		<link>http://terminalapp.net/making-an-invisible-overlay-layer-work-on-ie/</link>
		<comments>http://terminalapp.net/making-an-invisible-overlay-layer-work-on-ie/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 00:14:11 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[AJAX and Javascript]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[onClick]]></category>
		<category><![CDATA[overlay]]></category>
		<category><![CDATA[transparent]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=50</guid>
		<description><![CDATA[It&#8217;s becoming more and more common on the web to create pages that, on some situations, display some object over the page content. This could be a photo (using LightBox), a movie (like Apple does on their trailers site for non-HD trailers), a dialog, a color-picker, etc. In that situation, you often want to make [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s becoming more and more common on the web to create pages that, on some situations, display some object over the page content. This could be a photo (using <a href="http://www.huddletogether.com/projects/lightbox/">LightBox</a>), a movie (like Apple does on <a href="http://www.apple.com/trailers/">their trailers site</a> for non-HD trailers), a dialog, a color-picker, etc. In that situation, you often want to make the object go away when the user clicks anywhere on the page but the object.</p>
<p>One technique I use often is to create a DIV with no content or background that covers the entire page, place it on the page with z-index above the page content and below the displayed object, and bind it&#8217;s onClick event handler to a method that hides the object and the DIV itself. Something like this:</p>
<p><a href='http://terminalapp.net/wp-content/uploads/2008/10/blog-layers.png'><img src="http://terminalapp.net/wp-content/uploads/2008/10/blog-layers.png" alt="Overlay layer with an object above" title="Layers" width="493" height="234" class="alignnone size-full wp-image-51" /></a></p>
<p>As you can see, the transparent layer (represented here in blue) gets between the object to float above the page content (here, in red) and the page itself.</p>
<p>So, how hard can it be, right? Just do some quick Javascript code or use CSS to set the DIV properly, handle onClick, and you are done&#8230; or not. Yes, IE. IE will screw this all up.</p>
<p>When I implemented this recently, I noticed that, on IE, the mouse click would go through the overlay to the page itself, clicking on links or buttons, or simply not hiding the floating object because the layer onClick was never triggered. Even weird, on some areas of the page it worked, and on other areas it didn&#8217;t. It depended on what was below it.</p>
<p>After gooling and trial-and-error for a while, I found the solution. The problem is that IE doesn&#8217;t like handling clicks on transparent objects, like DIVs with no content or background. So, the solution is&#8230; add a background. But wait, if you add a background, it won&#8217;t be transparent any more, right? Wrong. There&#8217;s a neat trick you can use: create a transparent GIF file with about 200*200 and use it as the background of the DIV (the size is irrelevant for this, but if it&#8217;s too small, it will make browsers on old computers slow when reproducing it to fill all the background). IE will work, because from it&#8217;s point of view, there is SOMETHING there belonging to the DIV (even if it&#8217;s a transparent GIF) and the onClick will be triggered as expected.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/iA3d8AEAO5A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/making-an-invisible-overlay-layer-work-on-ie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Granular updates, please!</title>
		<link>http://terminalapp.net/granular-updates-please/</link>
		<comments>http://terminalapp.net/granular-updates-please/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 20:26:29 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Mac OS X Server]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=49</guid>
		<description><![CDATA[Today was update day for our Mac OS X Server machine. The story is quick: installed Mac OS X Server 10.5.5 update, fixed WebObjects to go back to 5.3.3, rebooted. Surprise: my customized version of PHP was replaced by a new version! Why was it a surprise? Because neither the Mac OS X Server 10.5.5 [...]]]></description>
			<content:encoded><![CDATA[<p>Today was update day for our Mac OS X Server machine. The story is quick: installed Mac OS X Server 10.5.5 update, fixed WebObjects to go back to 5.3.3, rebooted. Surprise: my customized version of PHP was replaced by a new version! Why was it a surprise? Because neither the <a href="http://support.apple.com/kb/HT2406">Mac OS X Server 10.5.5 Update notes</a>, nor the <a href="http://support.apple.com/kb/HT2405">Mac OS X (Client) 10.5.5 Update notes</a>, nor even<a href="http://support.apple.com/kb/HT3137"> the security notes about the 10.5.5 updates</a> mention PHP anywhere.</p>
<p>Apple, please, can we have granular updates for Mac OS X Server, like we do on basically any other decent server OS? Can we, system administrators, have the privilege to <strong>make decisions</strong> on what and when we want to update? Why don&#8217;t you finally understand that the needs of the IT people are a little bit different than the average consumer? Because, you know, the feeling I get is that you are completely clueless about the IT needs and the way things work. Really.</p>
<p>I like FreeBSD more and more&#8230;</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/3uqazFLogys" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/granular-updates-please/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PGP Desktop 9.9 mini-review</title>
		<link>http://terminalapp.net/pgp-desktop-99-mini-review/</link>
		<comments>http://terminalapp.net/pgp-desktop-99-mini-review/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 01:16:37 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=48</guid>
		<description><![CDATA[Introduction
As I previously wrote in my blog, I was waiting for a whole disk encryption solution to be made available for Mac OS X. Some months ago, Checkpoint released what I believe was the first solution ever to support full disk encryption on the Mac, including the boot disk. Recently, as I noted before, PGP [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>As I previously wrote in my blog, I was waiting for a whole disk encryption solution to be made available for Mac OS X. Some months ago, <a href="http://www.checkpoint.com/">Checkpoint</a> released what I believe was <a href="http://www.checkpoint.com/products/datasecurity/pc/index.html">the first solution ever</a> to support full disk encryption on the Mac, including the boot disk. Recently, <a href="http://terminalapp.net/pgp-desktop-99-released/">as I noted before</a>, <a href="http://www.pgp.com/">PGP Corporation</a> release <a href="http://www.pgp.com/products/wholediskencryption/index.html">PGP Desktop 9.9 for Mac OS X</a>, supporting full boot-disk encryption for the first time on this platform. I opted for trying PGP, as they made a demo version available (that will work for 30 days) and it&#8217;s possible to buy a license online. Checkpoint, on the other hand, doesn&#8217;t seem to have a downloadable demo, and doesn&#8217;t sell the product online. This was enough for me to forget Checkpoint solution at all, specially having the PGP demo ready to be downloaded from their site and installed. So, PGP it is.</p>
<p><strong>Why should you care?</strong></p>
<p>Today, you easily buy a laptop with a large hard drive. That drive will quickly be full of important data. Many people consider &#8220;important data&#8221; to be private emails, trip photos, holiday movies, and such. But that&#8217;s just the tip of the iceberg. Letting anyone read your email or pick at your photos can be a problem, but it&#8217;s nothing compared to <em>really</em> important data. I&#8217;m talking about company reports. Source code. Data about your customers. Intelectual property. Financial data. Anything that keeps your business going, and that can put it in a very delicate position if it gets to the wrong hands.</p>
<p>Also, there&#8217;s an even more important fact you should take into account: some data you are carrying on your laptop is not yours, but other people&#8217;s data. Confidential emails with clients or business partners. Marketing and product information that should not be disclosed before a certain date. Governmental and military information, including private data from citizens (as an example, recently some events like this one happened in UK, where <a href="http://news.zdnet.co.uk/itmanagement/0,1000000308,2077931,00.htm">laptops with sensitive official information were stolen or lost</a>). This means that you are no longer responsible just for your data security, but also for other people&#8217;s. </p>
<p>On top of this, you must think about the consequences of letting this information be revealed to the wrong persons. Important information about your clients may leak. Intelectual property that keeps your company ahead of the concurrency may become public, destroying your company advantage or, in the worst case, destroying the company itself. Governmental agencies may be placed in the hot seat for letting private information about the citizens be stolen and accessed.</p>
<p>All this together should be more than enough to make you worry about your computer&#8217;s data security and convincing you to do something about it.</p>
<p><strong>Whole disk encryption</strong></p>
<p>Computer security is a very wide subject, and there are a lot of things to consider. Network security, host security, etc. In this article, I&#8217;m covering whole disk encryption. So, what is whole disk encryption?</p>
<p>Whole disk encryption is a technique where all the drive contents are encrypted using a secret key (which can be a password, a key stored in a USB dongle, etc). When I say &#8220;all the drive contents&#8221;, I mean it. Even the operating system is encrypted. This means that you will only be able to access that drive&#8217;s contents if you have the key to access them, and this includes booting the computer from that drive. If you don&#8217;t have the key, you won&#8217;t be able to read the data whatever you try. Mounting it on other computers of physically installing it on a different computer won&#8217;t work. For anyone who doesn&#8217;t have the key, the drive will be as good as an empty one. All the contents will appear to be random garbage.</p>
<p>For those who have the right key, the main advantage of whole disk encryption is that it won&#8217;t affect the computer usage at all. The only thing you have to do is to type in the password right after powering up your machine. After you type the password, the OS will boot normally and the machine will work as if nothing special was happening. The secret is that PGP runs between the hardware and the OS itself, intercepting all the data input and output from and to the hard drive. All the applications, and even the OS itself won&#8217;t even realize that the hard drive is encrypted because the PGP layer will decrypt data requested by the applications on the fly. This is great, because it makes very unlikely that some application won&#8217;t work because of the disk encryption process. All the magic happens below the OS itself, as close to the hardware as it can be.</p>
<p>This will protect your data against one of the attack vectors that is most hard to defend yourself against: someone having physical access to (and some time alone with) your machine. This included the machine being stolen (which is very likely to happen at some point to laptop computers), someone entering your home or office and remove a hard drive from a computer, and even accessing data centers and stealing hard drives or entire servers (and if you think that doesn&#8217;t happen&#8230; think again, it&#8217;s more frequently that what most people believe).</p>
<p>I want to make clear that this will <strong>not</strong> protect your mac against other types of attacks. As I stated before, the OS and the applications will run in the same way they did before. So, if you have a virus or a trojan horse on your system, the virus or trojan will work. If you have a compromised network service, hackers will be able to get in using it. If you download an application that erases all your files, all the files will be erased. The whole disk encryption system has the only purpose to keep all the data on your hard drive protected when the system is not running. As long as you type in the password and boot the OS, all the OS-level security weaknesses that were there before will be there again. PGP Desktop has some more security features but I won&#8217;t cover them here.</p>
<p><strong>What about Apple&#8217;s File Vault?</strong></p>
<p>Apple provides you with some &#8220;transparent&#8221; data encryption features on Mac OS X, namely File Vault. File Vault will encrypt all the files in your home directory and store them on an encrypted disk image. You will always be able to turn the Mac on, but you must provide your account password on the login for that disk image to be accessed. As with PGP, data will be encrypted and decrypted on the fly. So, why not use it? There are many reasons why using File Vault is impractical:</p>
<ol>
<li>It&#8217;s not <strong>whole</strong> disk encryption, only home directory encryption. One may argue that all the important files are in the home directory, but that&#8217;s not entirely true. Many applications write temporary files to directories outside of your home directory, like /tmp. This files may contain sensitive information, and that information will be recorded unencrypted on your drive. Also, software like databases of other kind of servers store their data outside of user&#8217;s home directories, and that data will also be stored in clear.</li>
<li>It conflicts with some applications, specially backup solutions. For any application executed by another user, including the OS itself, a user home directory will be a single, huge file, the encrypted disk image. The backup software will not be able to peek inside your home and only backup the files you changed since the last backup operation, so it will try to copy the entire file. Worse yet, if you change the file during the backup, you can corrupt the backup, making it hard or impossible to restore it if needed.</li>
<li>For the same reason, remote services will not work because they won&#8217;t be able to decrypt your home directory. This is the case of a remote shell, for instance. If you ssh to a Mac with your home directory under the domain of File Vault, you won&#8217;t be able to access your files.</li>
<li>It&#8217;s slow an unreliable. File Vault works by creating an encrypted virtual file system inside a file that grows and shrinks as needed that is itself stored in the real file system on your drive. There&#8217;s a huge load of things that can go wrong with this. This is corroborated by the fact that every time I tried to create disk images with many (hundreds of thousands) of files, the disk image inevitably corrupted and I could not access it&#8217;s content any more. Don&#8217;t forget that your entire home directory will be really a single huge file with some complex data and mechanisms that make it work. Now compare this with the simplicity of the PGP solution: just insert a layer between the OS and the drive, and don&#8217;t ever think about it again. It just works, it doesn&#8217;t need to care about files, folders, file systems, or anything else. It&#8217;s just raw data. OS asks it to write a sector on the drive, PGP layer encrypts the sector, and the sector goes to the drive. No complex processing, no complex data modeling, no complex code to fail. The PGP layer doesn&#8217;t even need to know what&#8217;s doing, it blindly encrypts and decrypts data on the fly. The OS will know what to do with that data.</li>
</ol>
<p>For these reasons, I believe whole disk encryption is a much better solution than File Vault. I strongly believe Apple should provide this with their Macs right out of the box, but judging by the way the company handles security issues, I don&#8217;t believe that will happen any time soon.</p>
<p><strong>PGP</strong></p>
<p>What can you say when a product that is supposed to do what it does in the background and be totally transparent to the user actually works fine? Well, nothing. That&#8217;s precisely the point &#8211; providing security without being a pain to the user. So far, that&#8217;s my experience with PGP. I really have nothing much to say, except that it works.</p>
<p>I installed PGP, rebooted and typed in my demonstration registration key, valid for 30 days. Then, I read the manual, skipped all the &#8220;please verify your file system consistency before proceeding&#8221; warnings (what could go wrong?), set a password for my MacBook Pro drive, and fired up the encryption. You can use your mac normally while the initial encryption is done, as PGP is smart enough to know what disk sectors are already encrypted and which ones are not, allowing the system to work normally during the whole process. You will probably notice a very high loss of performance during the initial encryption process because the hard drive will be in really heavy usage (after all, PGP has to read and rewrite the entire disk surface).</p>
<p>After that, you won&#8217;t notice a thing. The only signs your mac will show you related to PGP are the small PGP icon on the menu bar, and, of course, the password window before the system boot. You won&#8217;t notice any performance degradation due to the real time encryption, at least I didn&#8217;t. Based on the UNIX &#8220;top&#8221; tool, it appears that PGP doesn&#8217;t use more than 2 or 3 percent of the CPU, which is negligible (remember that we are talking about 100% <em>per CPU</em>, which means that in a modern laptop with a Core 2 Duo processor, PGP is using 3%&#8230; of 200%).</p>
<p>You can create several &#8220;users&#8221; for your hard drive, with different passwords for each one. Please keep in mind this is only a way to avoid sharing the passwords. This is NOT a real accounting feature like in a normal UNIX system, where each user has different permissions and credentials to (supposedly) access only what he should. Here, any password will provide access to the entire drive contents. The normal access permissions will be granted by Mac OS X, of course, but PGP offers no data protection as soon as someone &#8211; whoever it is &#8211; types in a valid password.</p>
<p><strong>Side notes</strong></p>
<p>There are some important things to keep in mind when using PGP to encrypt your drive:</p>
<ul>
<li>PGP asks for the password on system boot, but not on system awake. So, make sure to turn on the system awake password in the System Preferences, or you can allow a burglar to access your data if he stoles your Mac while it&#8217;s sleeping (and at least I always carry my laptop in sleep mode). If you want absolute security, turn off your mac before taking it with you.</li>
<li>Target mode (using your mac as a firewire drive) will work, but the drive contents will not be decrypted on the fly by the machine in target mode itself. You have to install PGP on the host machine so that it&#8217;s able to decrypt the contents of the target disk.</li>
<li>You have to be careful if you need to clone an encrypted drive. The most reliable way to do it is to decrypt it before cloning. If you want to clone an encrypted drive, check <a href="http://forum.pgp.com/pgp/board/message?board.id=48&#038;thread.id=1609&#038;view=by_date_ascending&#038;page=1">this thread in the PGP Forum</a> for more details.</li>
<li>I haven&#8217;t tested this, but from what I recall from the manual, you may install PGP on a machine and use it unlicensed to read the contents of an encrypted drive (assuming you know the password, of course).</li>
<li>BootCamp won&#8217;t work. If you need Windows, you have to run Parallels, VMWare or any other virtual machine software. Those will work fine, providing that the Windows disk image is a file on the OS X file system, and not a dedicated Windows-formatted partition.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/OvZ6XQ0zGxw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/pgp-desktop-99-mini-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PGP Desktop 9.9 released</title>
		<link>http://terminalapp.net/pgp-desktop-99-released/</link>
		<comments>http://terminalapp.net/pgp-desktop-99-released/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 23:47:24 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=47</guid>
		<description><![CDATA[PGP finally released the 9.9 version of it&#8217;s PGP Desktop product I had mentioned before, featuring full boot-disk encryption for OS X (Intel only). The demo version is not yet available, but I can hardly wait to try it. I hope they handle correctly booting in target mode and verbose or single user mode.
]]></description>
			<content:encoded><![CDATA[<p>PGP finally released the <a href="http://www.pgp.com/products/wholediskencryption/index.html">9.9 version</a> of it&#8217;s PGP Desktop product <a href="http://terminalapp.net/pgp-whole-disk-encryption-for-mac-os-x/">I had mentioned before</a>, featuring full boot-disk encryption for OS X (Intel only). The demo version is not yet available, but I can hardly wait to try it. I hope they handle correctly booting in target mode and verbose or single user mode.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/4PkJBIy_hnY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/pgp-desktop-99-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox 3 javascript evaluating order problems</title>
		<link>http://terminalapp.net/firefox-3-javascript-evaluating-order-problems/</link>
		<comments>http://terminalapp.net/firefox-3-javascript-evaluating-order-problems/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 21:36:09 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[AJAX and Javascript]]></category>
		<category><![CDATA[WebObjects]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=46</guid>
		<description><![CDATA[I found out the hard way the recently released third main version of Firefox has a serious issue related to the order in which the Javascript code is executed in a page. The bug is somehow related to the files being, or not, cached on the browser.
Wonder Ajax framework adds a lot of Ajax goodies [...]]]></description>
			<content:encoded><![CDATA[<p>I found out the hard way the recently released third main version of Firefox has a serious issue related to the order in which the Javascript code is executed in a page. The bug is somehow related to the files being, or not, cached on the browser.</p>
<p>Wonder Ajax framework adds a lot of Ajax goodies to a standard WebObjects applications. The way a page is built is by placing on the page header all the calls to load Javascript files. There&#8217;s a special case, which is when you need a JSON proxy. That is useful if you need to write more powerful Ajax behaviour than all the component trickery Wonder offers you. The JSON proxy will not only load the necessary Javascript file, but run one code line to create the actual proxy and establish the communication with the server. So the page header will have something that looks more or less like this:</p>
<pre>
&lt;script src="/some/path/prototype.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/effects.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/wonder.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/english.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/combo.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/feedback.js"&gt;&lt;/script&gt;
&lt;script src="/some/path/jsonrpc.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var jason = new JSONRpcClient("proxyUrl");
&lt;/script&gt;
&lt;script src="/some/path/comboboxes.js"&gt;&lt;/script&gt;
...
</pre>
<p>When the page loads, all those scripts will be loaded and the new JSONRpcClient() method will be executed during the page load, as expected.</p>
<p>The problem starts when you have a javascript method associated with the onLoad window event. This is done by using the onload attribute in the body element:</p>
<pre>
&lt;body onLoad="initPage();"&gt;
</pre>
<p>The onLoad function should be triggered when the page finishes loading. This, implicitly, means that the onLoad will be run only after all the inline javascript code (in the page header or body) be run, because that is still considered to be part of the page loading process. So, in our case, first, load all the JS and create the JSON proxy, and then run the onLoad method.</p>
<p>This works on every browser, and also on Firefox 3 on the first page load. The problem is that most of the subsequent page loads on Firefox 3 won&#8217;t work, at least if your onLoad method depends on the existence of the JSON proxy. For some reason, when Firefox 3 has all the Javascript files already in the local cache, the onLoad event is triggered too soon, namely before the header scripts are executed and the proxy has been created. This will break all your code executed by the onLoad method that assumes the proxy is already ready to work.</p>
<p>I have tried several solutions for this. The only one I had success with is the following. It&#8217;s kind of dirty, but it works. The idea is simple: if the onLoad method is to be executed before the proxy exists, than we wait some miliseconds and try again later until the proxy is ready to be used. So, if your method is like this:</p>
<pre>
function myOnloadMethod() {
  runInitStuff();
}
</pre>
<p>Change it to:</p>
<pre>
function myOnloadMethod() {
  if( window.jason ) {
    runInitStuff();
  } else {
    setTimeout( 'myOnloadMethod();', 10 );
  }
}
</pre>
<p>This will check every 10 milliseconds if the proxy is already there. If it is, your method will be run. If not, it will keep trying.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/GdBJXyb_WyU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/firefox-3-javascript-evaluating-order-problems/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MacBook Pro 17 vertical blue line</title>
		<link>http://terminalapp.net/macbook-pro-17-vertical-blue-line/</link>
		<comments>http://terminalapp.net/macbook-pro-17-vertical-blue-line/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 22:58:04 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=44</guid>
		<description><![CDATA[I&#8217;m really pissed off. Short story: MacBook Pro 17, HD display, bought this February. Blue line appeared today. I still remember when Apple hardware would work for more than six months.

]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m really pissed off. Short story: MacBook Pro 17, HD display, bought this February. Blue line appeared today. I still remember when Apple hardware would work for more than six months.</p>
<p><a href='http://terminalapp.net/wp-content/uploads/2008/07/blueline.jpg'><img src="http://terminalapp.net/wp-content/uploads/2008/07/blueline-300x225.jpg" alt="" title="Blue line" width="300" height="225" class="alignnone size-medium wp-image-45" /></a></p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/O78Hb2jSTEA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/macbook-pro-17-vertical-blue-line/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>iPhone: why I don’t care</title>
		<link>http://terminalapp.net/iphone-why-i-dont-care/</link>
		<comments>http://terminalapp.net/iphone-why-i-dont-care/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 18:50:20 +0000</pubDate>
		<dc:creator>Miguel Arroz</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Generic]]></category>

		<guid isPermaLink="false">http://terminalapp.net/?p=43</guid>
		<description><![CDATA[So, this has been the iPhone week. It started right on monday, with Vodafone and Optimus, the two portuguese carriers that sell the iPhone, announcing their pretty ridiculous price plans. Then, the iPhone was launched, together with the App Store and a barely functional activation site. And I couldn&#8217;t care less. Why? Many reasons, some [...]]]></description>
			<content:encoded><![CDATA[<p>So, this has been the iPhone week. It started right on monday, with Vodafone and Optimus, the two portuguese carriers that sell the iPhone, announcing their pretty ridiculous price plans. Then, the iPhone was launched, together with the App Store and a barely functional activation site. And I couldn&#8217;t care less. Why? Many reasons, some of them are Apple&#8217;s fault, some of them are consequences of the wildly spread stupidity that exists in my country. If you are one the 4 regular readers of my blog, you know that most of my articles are techie-focused, and not opinion-based. This one is an exception.</p>
<p><strong>The iPhone itself</strong></p>
<p>So, what&#8217;s wrong with the iPhone? What should have been made much better in the most popular gadget of the week? A lot.</p>
<p>First, the phone itself. I never had a smartphone. I don&#8217;t know how does the phone part operate in a smartphone. But I know how it works on a regular phone, say, a Nokia phone. And, pick up any Nokia and it will tear the iPhone apart in what relates to be a phone, you know, something to make calls with. My first complain is something really obvious: it&#8217;s hard or impossible to use the iPhone with just one hand. Of course it depends on how large your hand is, and how much are you willing to risk dropping the iPhone on a hard ground in the middle of a street (that glass keeps shouting &#8220;break me!&#8221;). But personally, I find it a challenge, specially if I&#8217;m walking in a hurry in the middle of the street carrying stuff in one hand, which seems to be the preferred time for people to call me. I never tried to operate one while driving but it should be a real pain (I know it&#8217;s illegal to make calls while driving without a loudspeaker, I just receive or start the call and turn on my Nokia&#8217;s built-in loudspeaker, so it&#8217;s not that bad). On top of this, you have to do all that scrolling-trough-the-alfabet, and then scrolling-trough-the-names-on-the-selected-letter, and finally call the person. That sucks, because not only it&#8217;s slow, but it also requires you to actually look to what you are doing and wait for the visual feedback. On a normal phone, with a numeric keypad, if I want to call John, I press the 5 key (jkl) once and I&#8217;m already on the J. If I want to call Fred, I press the 3 key (def) three times. No feedback needed, I know where I&#8217;ll end up. I just then need to scroll (with a key, thank god!) and push the green button. You are free to disagree, but I think Nokia is so much better.</p>
<p>Second, the keyboard. Yuck. It&#8217;s true that I never set it to portuguese, but even when I try to write in english, it SUCKS. Man, it sucks big time. I rarely can get the word I actually want. The phone suggest wrong things. It&#8217;s hard to understand how to NOT accept the suggestion. I actually think that removing all the &#8220;intelligent&#8221; guess-what-the-user-is-trying-to-write stuff would actually improve the usage a lot, because most of the times I screwed up writing on an iPhone keyboard was actually not because I placed my finger on the wrong &#8220;key&#8221;, but because iPhone decided that I pressed a key that I actually didn&#8217;t. And of course, not having the physical feedback of a real keyboard is also bad, but I can understand that as a compromise between size and functionality.</p>
<p>Third, Safari. I do believe iPhone&#8217;s Safari is the best web browsing experience in the mobile market, I really do. But it sucks. It&#8217;s painfully slow. And I don&#8217;t mean the network. I mean the CPU of that thing. Even with a high-speed WiFi network, it&#8217;s slow. Rendering is slow. Panning is slow (hate that checkerboard pattern). Zooming is slow. Argh. I don&#8217;t know exactly how to make this better, but having a faster CPU would be a nice start. Yes yes, I know that faster CPU = less battery time, but as a client, I can demand! :)</p>
<p>Fourth, the GPS. Are you kidding?! What&#8217;s the use of a GPS if it doesn&#8217;t support turn-by-turn mode? I usually know where I am, thank you. My problem is knowing how to get to where I want while driving. If the iPhone GPS can&#8217;t do it, it&#8217;s useless. It&#8217;s worth zero for me. Now is the part you say, hey, but iPhone is an open platform, so someone will develop a better GPS software, right? Who cares. First, it won&#8217;t be free. I don&#8217;t understand why I&#8217;m buying a device with a GPS receiver and then I have to pay more for something that will actually make it work as expected. And second, and worse, it probably will not happen. Why? Because on the iPhone development SDK agreement, there&#8217;s a clause that explicitly forbiddens you from doing it: &#8220;Applications may not be designed or marketed for real time route guidance&#8221;. Period. (Waiting to be processed by Apple for copying that sentence from the SDK)</p>
<p>Fifth, it doesn&#8217;t work as a modem/router for a laptop. I need mobile internet access in my laptop. That comes with a monthly payment. But hey, if I have an iPhone, that means TWO monthly payments for the same service. Now wait a minute. I said &#8220;same service&#8221;! So why can&#8217;t I share it? Well&#8230; because the iPhone won&#8217;t do it. Any other phone can be used as a modem, via bluetooth, so that you can access the Internet from your laptop using the phone connection. Nokia. Sony. You name it. But hey, not Apple. So, as I don&#8217;t like to give away my money to the phone carriers for a stupid reason, iPhone is a no-go.</p>
<p>Sixth, the bluetooth implementation is totally crippled. It will only power your headset, and nothing else. No vCard sharing via bluetooth with nearby phones. And worse, no synching with your mac via any wireless means. Yes, that&#8217;s right. Remember using iSync with your Nokia or Sony or whatever phone? Forget it with the iphone. You have to carry the USB cable with you all the time. Which is actually a good thing, because battery life time seems to be not that great, so you&#8217;ll often need to pump in some juice to keep it going.</p>
<p>So, the iPhone, as a device, sucks. But it&#8217;s a good mobile platform, and platform means really great third party software to use. Or doesn&#8217;t it?</p>
<p><strong>The app store</strong></p>
<p>It&#8217;s 1984. Apple will introduce Macintosh. And what better way to do it than with the famous 1984 commercial, where IBM is pictured as the evil Big Brother and Apple as the liberating force that will provide everyone with their deserved freedom from the evil empire?</p>
<p>It&#8217;s 2008. Reality check. Apple is the Big Brother.</p>
<p>The app store seems to be a great ideia. An organized, controlled, easy to use place for users to go and buy the apps they want to use. But what does it mean for the developers?</p>
<p>Big Brother is what it means. Apple reserves the right to accept, or not, your application to be on selling on the App Store. Also, it imposes some very strict guidelines on what you can actually do, like the GPS example I stated above, and also VoIP and other stuff. Even worse, the App Store is the <strong>only</strong> way to publicly distribute applications for the iPhone, assuming you didn&#8217;t jailbreak it, and most people didn&#8217;t. So, Apple has the power to decide that you are out of business if they decide so. The only way to reach your customers is trough Apple.</p>
<p>In my opinion, this is not only ridiculous, but also a very dangerous precedent. If I buy an iPhone, it&#8217;s mine. I should be able to do whatever I want with it. And if I&#8217;m a developer, I should be able to reach my clients directly. It&#8217;s very dangerous to have someone saying what is OK to run on your phone and what&#8217;s not. Some claim it&#8217;s a security issue. After all, you don&#8217;t want your software to call people on foreign countries without your knowledge, because those calls will be billed on you. Bah. What about computers? Don&#8217;t we have really important information on them? Information that can compromise much more than just your phone bill? Why don&#8217;t we create a desktop App Store, to control everything you have on your Mac? It&#8217;s simply ridiculous. And what pisses me off about this is watching developers and users accepting this without a single complaint. What&#8217;s next? All the books you buy must be approved? All the movies you see must be &#8220;decent&#8221;? All the music you hear must be controlled? It&#8217;s ridiculous. And dangerous. It&#8217;s Apple totally forgetting about 1984, totally forgetting about it&#8217;s roots, and going totally Big Brother, totally enterprise-who-wants-to-make-money-no-matter-what. As someone who entered the Apple world in 1987, with the Mac PLUS, it&#8217;s really, really sad to see this.</p>
<p><strong>The plans and the hype</strong></p>
<p>This next subject depends, of course, where you are. I live in Portugal, and as I said, we have ridiculous data plans for the iPhone. Vodafone&#8217;s plans were all limited to 250 MB per month, and of course, they will charge the hell out of you for every extra bit. After some complaints, they bumped the limit on the most (and ridiculously) expensive plan to&#8230; 500 MB. Optimus&#8217; plans are not better. It&#8217;s sad to compare this to other countries like Netherlands, where all the plans include unlimited data, and, depending on the plans, you can get your phone for 1 euro. The problem is that the carriers didn&#8217;t really understand what this product is about (or they pretend to not understand while they happily rip you off). The iPhone is a mobile platform. It depends on the Internet for most of it&#8217;s features. The fact that the iPhone is a phone, and allows you to make calls, is a minor detail. The iPhone depends on the Internet, so it&#8217;s ridiculous to sell data plans as if it would be just another phone with internet access. It&#8217;s a completely different product, and should be looked to by the carriers as what it is. Unfortunately, portuguese carriers didn&#8217;t go along with this vision, and are happily raping their clients.</p>
<p>To conclude, something that makes me really pissed off and sad is all the hype, and the way the iPhone was promoted here. In San Francisco, lines were formed near the stores, and you could see geeks, with their eyes shinning about the new stuff they would be able to do with this new platform. Here, lines and launch parties were constituted mostly by VIPs. Most didn&#8217;t even know what the iPhone was, they just wanted one because they have money and it&#8217;s cool to have the latest Apple gadget. Carriers wanted those people to be there because they are famous. Because, even being incredibly stupid and ignorant, they have big (sometimes artificial) half-naked boobs they show to the TV cameras resulting in more attention in the news reports. Because they think they are funny comedians, making jokes about knowing nothing about technology, being proud of their ignorance. It&#8217;s sad to see a new piece of technology being used as a glamour toy, a coolness factor, and not as a new device that will allow new and incredible stuff to be made. Oh well. It&#8217;s Portugal.</p>
<img src="http://feeds.feedburner.com/~r/Terminalapp/~4/ELvGezKxTdQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://terminalapp.net/iphone-why-i-dont-care/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
