<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>mindlab</title>
	<atom:link href="http://www.mindlab.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mindlab.com</link>
	<description>science &#38; art</description>
	<lastBuildDate>Mon, 03 May 2010 04:59:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What is java.lang.OutOfMemoryError: PermGen space</title>
		<link>http://www.mindlab.com/softwareeng/java/java-lang-outofmemoryerror/</link>
		<comments>http://www.mindlab.com/softwareeng/java/java-lang-outofmemoryerror/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 20:00:36 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mindlab.com/?p=1158</guid>
		<description><![CDATA[While developing an Eclipse based application I encountered a troubling error java.lang.OutOfMemoryError: PermGen space.
It doesn&#8217;t help to allocate more more heap memory with -Xmx.
This error is caused when the Garbage collector&#8217;s Permanent Generation fills up. The garbage collector first fills up the Young Generation and then a Minor Collection is done, some objects that were not [...]]]></description>
			<content:encoded><![CDATA[<p>While developing an Eclipse based application I encountered a troubling error java.lang.OutOfMemoryError: PermGen space.</p>
<p>It doesn&#8217;t help to allocate more more heap memory with -Xmx.</p>
<p>This error is caused when the Garbage collector&#8217;s Permanent Generation fills up. The garbage collector first fills up the Young Generation and then a Minor Collection is done, some objects that were not collected are put in next generation, the Tenured Generation. After it fills up a Major Collection is performed. Then there is the third generation which is the Permanent Generation. Especially applications with a lot of classes may fill up this part of the heap.</p>
<p>To fix this problem the default permanent generation heap segment can be increased from 64M to something else. I used 128M which worked great.</p>
<p><strong>-XX:MaxPermSize=128m</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mindlab.com/softwareeng/java/java-lang-outofmemoryerror/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cisco VPN Error 51: Unable to communicate with the VPN subsystem</title>
		<link>http://www.mindlab.com/softwareeng/mac-os-x/cisco-error-unable/</link>
		<comments>http://www.mindlab.com/softwareeng/mac-os-x/cisco-error-unable/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 17:24:05 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://www.mindlab.com/?p=1118</guid>
		<description><![CDATA[<a href="http://www.mindlab.com/posts/#post-1118" class="more-link">Read the rest of this entry »</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mindlab.com/blog/wp-content/uploads/2010/01/Picture-3-e1264613224855.png"><img class="aligncenter size-full wp-image-1119" title="VPNClient error dialog" src="http://www.mindlab.com/blog/wp-content/uploads/2010/01/Picture-3-e1264613224855.png" alt="" width="400" height="91" /></a></p>
<p>You may get this error with a Cisco VPN client on a Mac when network adapters disappear and reappear. To fix it run the following:</p>
<p><code>sudo SystemStarter restart CiscoVPN</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mindlab.com/softwareeng/mac-os-x/cisco-error-unable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to force Eclipse app to pick Java version on Mac?</title>
		<link>http://www.mindlab.com/softwareeng/java/eclipse/force-eclipse-version/</link>
		<comments>http://www.mindlab.com/softwareeng/java/eclipse/force-eclipse-version/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 18:51:43 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.mindlab.com/?p=1109</guid>
		<description><![CDATA[In a situation where the Mac OS X default Java is not the one you need for your app to use there is a way to force it to pick the version you want.
* Right click on your Eclipse.app in the Finder
* Select &#8220;Show Package Contents&#8221;
* Go to Contents/
* Open Info.plist in an editor
* Add [...]]]></description>
			<content:encoded><![CDATA[<p>In a situation where the Mac OS X default Java is not the one you need for your app to use there is a way to force it to pick the version you want.</p>
<p>* Right click on your Eclipse.app in the Finder<br />
* Select &#8220;Show Package Contents&#8221;<br />
* Go to Contents/<br />
* Open Info.plist in an editor<br />
* Add the line<br />
&lt;string&gt;-vm&lt;/string&gt;&lt;string&gt;/System/Library/Frameworks/<br />
JavaVM.framework/Versions/1.6.0/Commands/java&lt;/string&gt;</p>
<p>for setting Java 6</p>
<p>Otherwise you can change the default version of java as well in the Java properties. I have noticed a bug in it. I had the right setting, but it only took effect after I moved the versions around a bit . On one MacBook it still didn&#8217;t open the application with the right Java version so it had to be forced like described above.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mindlab.com/softwareeng/java/eclipse/force-eclipse-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to determine Java version from .class file</title>
		<link>http://www.mindlab.com/softwareeng/java/determine-version-class/</link>
		<comments>http://www.mindlab.com/softwareeng/java/determine-version-class/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 17:20:15 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mindlab.com/?p=1105</guid>
		<description><![CDATA[The first 4 bytes is the magic number CAFEBABE. Then comes 2 bytes with the minor version and then the major version.
The major version number means:
J2SE 6.0 = 50 (0&#215;32 hex),
J2SE 5.0 = 49 (0&#215;31 hex),
JDK 1.4 = 48 (0&#215;30 hex),
JDK 1.3 = 47 (0&#215;2F hex),
JDK 1.2 = 46 (0&#215;2E hex),
JDK 1.1 = 45 (0&#215;2D [...]]]></description>
			<content:encoded><![CDATA[<p>The first 4 bytes is the magic number CAFEBABE. Then comes 2 bytes with the minor version and then the major version.</p>
<p>The major version number means:<br />
J2SE 6.0 = 50 (0&#215;32 hex),<br />
J2SE 5.0 = 49 (0&#215;31 hex),<br />
JDK 1.4 = 48 (0&#215;30 hex),<br />
JDK 1.3 = 47 (0&#215;2F hex),<br />
JDK 1.2 = 46 (0&#215;2E hex),<br />
JDK 1.1 = 45 (0&#215;2D hex).</p>
<p>For example if the byte code Hex starts with</p>
<p>CAFEBABE00000032</p>
<p>it means it is J2SE 6</p>
<p>For more details see <a href="http://en.wikipedia.org/wiki/Class_(file_format)" target="_blank">http://en.wikipedia.org/wiki/Class_(file_format)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mindlab.com/softwareeng/java/determine-version-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X commands</title>
		<link>http://www.mindlab.com/softwareeng/shell-commands/</link>
		<comments>http://www.mindlab.com/softwareeng/shell-commands/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 21:18:55 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.mindlab.com/?p=1101</guid>
		<description><![CDATA[Here follows an incomplete collection of a couple Mac OS X commands. Just open up Terminal.app, and try them out.
If you are familiar with UNIX you are lucky since most UNIX commands work.
ifconfig lists the IP address and a lot more network information. To keep the output shorter try ifconfig &#124; grep inet.
locate finds files
pico [...]]]></description>
			<content:encoded><![CDATA[<p>Here follows an incomplete collection of a couple Mac OS X commands. Just open up Terminal.app, and try them out.</p>
<p>If you are familiar with UNIX you are lucky since most UNIX commands work.</p>
<p><strong>ifconfig </strong>lists the IP address and a lot more network information. To keep the output shorter try ifconfig | grep inet.</p>
<p><strong>locate</strong> finds files</p>
<p><strong>pico</strong> opens a text editor in the shell</p>
<p><strong>df</strong> displays how much free disk space is available</p>
<p><strong>mkdir</strong> -p x/y/z creates all directories at once</p>
<p><strong>pkgutil &#8211;pkgs</strong> list installed packages, to get details use pkgutil &#8211;pkg-info &lt;package-name&gt;</p>
<p><strong>!$</strong> refers to the last parameter and can be reused in the next command</p>
<p><code><strong>find . -name *.xml | xargs grep MyString</strong></code> finds a string &#8220;MyString&#8221; in files in or below the current dir</p>
<p><code><strong>find . -type f -print0 | xargs -0 chmod a-w</strong></code> changes write permissions recursively. Works if the files contain spaces slashes etc. Use -type d if you need to change the dirs instead.</p>
<p>Here are some additional commands: <a href="http://ss64.com/osx/" target="_blank">http://ss64.com/osx/</a></p>
<p>Non shell commands:</p>
<p>Capture a screen shot:</p>
<div id="abw">
<div id="abm">
<div id="abc">
<div id="articlebody">
<ol>
<li>To capture the entire desktop, press <strong>Command-Shift-3</strong>. The screen shot will be automatically saved as a <a href="http://graphicssoft.about.com/od/formatspng/">PNG</a> file on your desktop</li>
<li>To copy the entire desktop, press <strong>Command-Control-Shift-3</strong>. The screen shot will be placed on your clipboard for you to paste into another program.</li>
<li>To capture a portion of the desktop, press<strong>Command-Shift-4</strong>. A cross-hair cursor will appear and you can click and drag to select the area you wish to capture. When you release the mouse button, the screen shot will be automatically saved as a PNG file on your desktop. (The file is saved as PDF in Mac OS 10.3 and earlier.)</li>
<li>More screen shot possibilities: <a href="http://graphicssoft.about.com/od/screencapturemac/ht/macscreenshot.htm" target="_blank">here</a> and <a href="http://graphicssoft.about.com/od/screencapturemac/Screen_Capture_Utilities_for_Macintosh.htm" target="_blank">here</a></li>
</ol>
</div>
<p>Show hidden files like files starting with a dot</p>
<p><code><strong>defaults write com.apple.finder AppleShowAllFiles TRUE</strong></code><strong></strong></p>
<p><code><strong>killall Finder</strong></code><strong></strong></p>
<p>And to revert back set it to FALSE</p>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mindlab.com/softwareeng/shell-commands/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What is Google Goggles?</title>
		<link>http://www.mindlab.com/softwareeng/google-goggles/</link>
		<comments>http://www.mindlab.com/softwareeng/google-goggles/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 22:32:58 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[feature]]></category>

		<guid isPermaLink="false">http://www.mindlab.com/?p=858</guid>
		<description><![CDATA[<a href="http://www.mindlab.com/posts/#post-858" class="more-link">
<p>Google Goggles uses pictures taken with an Android phone to search the web.</p>
<p>Read the rest of this entry »</p>
</a>]]></description>
			<content:encoded><![CDATA[<p>Google Goggles uses pictures taken with an Android phone to search the web.</p>
<p>It uses Google&#8217;s image search and OCR for text. Using the text if it is available it makes a google search. Otherwise it uses an image search. It uses GPS data to enhance the accuracy for outdoor photos.</p>
<p>It doesn&#8217;t even need to take a photo for local business information. Just point the phone at a store and it will display it&#8217;s name on the screen in real time. Then you can click on the displayed name to get the search results. It uses GPS and Compass to enhance the search.</p>
<p>This is available in the Nexus One phone and as a free app at the Android marketplace.</p>
<p>It is said to work well with objects like business cards, paintings, landmarks, wine, books, and logos, but it&#8217;s not great with things like food, animals, and plants.</p>
<p>I&#8217;m just waiting for when it will allow you to contribute to a 3D model of the world. This 3D model should of course be integrated with Google Earth and Street View and allow a first person navigation with a game engine. One step further is to add real time video input to the model and even output from the model or virtual world (Hello Matrix). Imagine a virtual world interacting with the real. People could see into the virtual world for example if it is projected on a real wall and interact with the avatars <img src='http://www.mindlab.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><a href="http://www.mindlab.com/blog/wp-content/uploads/2010/01/Google-Goggles-1.jpg"><img class="size-full wp-image-870 aligncenter" title="Google-Goggles-1" src="http://www.mindlab.com/blog/wp-content/uploads/2010/01/Google-Goggles-1.jpg" alt="" width="480" height="193" /></a></p>
<p><a href="http://www.mindlab.com/blog/wp-content/uploads/2010/01/google-goggles.jpg"><img class="aligncenter size-full wp-image-873" title="google-goggles" src="http://www.mindlab.com/blog/wp-content/uploads/2010/01/google-goggles.jpg" alt="" width="451" height="282" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mindlab.com/softwareeng/google-goggles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is TCP/IP?</title>
		<link>http://www.mindlab.com/softwareeng/what-is-tcpip/</link>
		<comments>http://www.mindlab.com/softwareeng/what-is-tcpip/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 05:57:40 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[feature]]></category>

		<guid isPermaLink="false">http://www.mindlab.com/?p=738</guid>
		<description><![CDATA[<a href="http://www.mindlab.com/posts/#post-738" class="more-link">
<p>TCP/IP is a large collection of different communication protocols based upon the two original protocols TCP and IP.</p>
<p>Read the rest of this entry »</p>
</a>]]></description>
			<content:encoded><![CDATA[<p>TCP/IP is a large collection of different communication protocols based upon the two original protocols TCP and IP:</p>
<ul>
<li>TCP (Transmission Control Protocol) communication between applications</li>
<li>UDP (User Datagram Protocol) simple communication between applications</li>
<li>IP (Internet Protocol) communication between computers</li>
<li>ICMP (Internet Control Message Protocol) for errors and statistics</li>
<li>DHCP (Dynamic Host Configuration Protocol) for dynamic addressing</li>
<li>HTTP (Hyper Text Transfer Protocol) web browser to server</li>
<li>SNMP (Simple Network Management Protocol) administration of networks</li>
<li>NTP (Network Time Protocol) synchronize the time between  computers</li>
<li>SMTP (Simple Mail Transfer Protocol) transmission of e-mails</li>
<li>IMAP (Internet Message Access Protocol) storing and retrieving e-mails</li>
<li>POP (Post Office Protocol) downloading e-mails</li>
</ul>
<p>TCP Uses a Fixed Connection and IP is Connection-Less. When an IP packet is sent from a computer, it arrives at an IP <strong>router</strong>. The IP router is responsible for &#8220;routing&#8221; the packet to the  correct destination,  directly or via another router.</p>
<p>TCP/IP is TCP and IP working together. TCP takes care of the communication between your application software (i.e.  your browser) and your network software. IP takes care of the communication with other computers. TCP is responsible for breaking data down into IP packets before they are  sent, and for assembling the packets when they arrive. IP is responsible for sending the packets to the correct destination.</p>
<p>Each computer must have a unique 4 byte  IP address. A <strong>domain name</strong> corresponds to an IP address and makes it easier to remember. It is translated by a <strong>DNS </strong>to an IP address.</p>
<p>A browser uses TCP/IP to access a server. A server uses TCP/IP to send HTML back to a browser. An e-mail program uses TCP/IP to connect to the Internet before sending and receiving e-mails using POP, SMTP and IMAP.</p>
<p>IP is at layer 3 in the OSI stack:</p>
<table border="1">
<tbody>
<tr>
<td>7.Application</td>
<td></td>
</tr>
<tr>
<td>6.Presentation</td>
<td></td>
</tr>
<tr>
<td>5.Session</td>
<td></td>
</tr>
<tr>
<td>4.Transport</td>
<td>TCP, UDP</td>
</tr>
<tr>
<td>3.Network</td>
<td>IP</td>
</tr>
<tr>
<td>2.Datalink</td>
<td>Ethernet</td>
</tr>
<tr>
<td>1.Physical</td>
<td></td>
</tr>
</tbody>
</table>
<p>There are two sets of rules for subnetting TCP/IP networks. The original set of rules can be found in RFC 950, and the new set of rules can be found in RFC 1812.</p>
<p>A good analogy for IP addressing and packet forwarding (routing) is the snail mail analogy. Consider an IP packet to be an envelope containing data, and having an address on the front. Every TCP/IP-enabled network interface can be compared to a mailbox. Every mailbox (interface) has an IP address. The four bytes of an IP address can be compared to the state, city, street, and house number fields on the front of a snail mail envelope. A router in this analogy is a post office, that sorts and forwards mail based on the address on the envelope (packet header.) If the address is on the same street (based on the subnet mask,) the envelope (packet) is sent directly to the destination mailbox (interface) via local courier (Ethernet?). If the address is determined to be on another street, or in another city or state, the envelope (packet) is delivered via local courier (Ethernet?) to the street&#8217;s post office (router), where the postal workers (routing software) sort and forward mail based on established post office sorting procedures (routing tables.)</p>
<p>References:</p>
<p>http://www.w3schools.com/tcpip/tcpip_intro.asp</p>
<p>http://www.ipprimer.com/section.cfm</p>
<p>http://encyclopedia2.thefreedictionary.com/OSI+model</p>
<p>http://www.faqs.org/rfcs/rfc1812.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mindlab.com/softwareeng/what-is-tcpip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is x86 virtualization?</title>
		<link>http://www.mindlab.com/softwareeng/virtualization-2/</link>
		<comments>http://www.mindlab.com/softwareeng/virtualization-2/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 03:58:37 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.mindlab.com/?p=701</guid>
		<description><![CDATA[x86 virtualization is a software based emulation of x86 processor hardware. On some hardware there is installed some OS, for example 32 bit Linux. Then there is a virtualization program that runs on it that emulates another OS, for example Windows XP.
There are a number of available virtualization programs, for example:

VMware was the first but [...]]]></description>
			<content:encoded><![CDATA[<p>x86 virtualization is a software based emulation of x86 processor hardware. On some hardware there is installed some OS, for example 32 bit Linux. Then there is a virtualization program that runs on it that emulates another OS, for example Windows XP.</p>
<p>There are a number of available virtualization programs, for example:</p>
<ul>
<li>VMware was the first but has some performance overhead</li>
<li>Virtual Server, VirtualPC and Hyper-V is by Microsoft</li>
<li>KVM is open-source and uses hardware-assisted virtualization</li>
<li>Xen uses paravirtualization or hardware-assisted virtualization</li>
</ul>
<p>Paravirtualization means that the guest OS is ported and some hard parts skipped.</p>
<p>Hardware-assisted virtualization assumes that the host system supports it, which for example AMD-V and Intel VT does and can give very high performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mindlab.com/softwareeng/virtualization-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How do I get Java 6 for Mac OS X?</title>
		<link>http://www.mindlab.com/softwareeng/java/how-get-java-for-mac/</link>
		<comments>http://www.mindlab.com/softwareeng/java/how-get-java-for-mac/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 05:55:50 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[feature]]></category>

		<guid isPermaLink="false">http://www.mindlab.com/blog/?p=590</guid>
		<description><![CDATA[<a href="http://www.mindlab.com/posts/#post-701" class="more-link">
<p>For a PowerPC you can't.</p>
<p>Read the rest of this entry »</p>
</a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_1239" class="wp-caption alignnone" style="width: 193px"><a href="http://www.mindlab.com/?attachment_id=1239"><img src="http://www.mindlab.com/blog/wp-content/uploads/2010/04/javacoffeecup.png" alt="" title="java" width="183" height="141" class="size-full wp-image-1239" /></a><p class="wp-caption-text">Unfortunately decaf for your old Power PC Mac</p></div>
<p>For a PowerPC you can&#8217;t.</p>
<p>For Snow Leopard you just get it from Apple at  <a href="http://support.apple.com/downloads/Java_for_Mac_OS_X_10_5_Update_1" target="_blank">http://support.apple.com/downloads/Java_for_Mac_OS_X_10_5_Update_1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mindlab.com/softwareeng/java/how-get-java-for-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
