<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8194035553301014782</id><updated>2026-07-24T08:05:52.417+02:00</updated><category term="rfc"/><category term="rtfm"/><title type='text'>Thijs&#39; today</title><subtitle type='html'>whatever I find on my pasteboard.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>207</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-1705476595605951072</id><published>2013-10-22T09:35:00.001+02:00</published><updated>2013-10-22T09:35:31.544+02:00</updated><title type='text'></title><content type='html'>[admin@srv1 ~]$ cat .screenrc&lt;br /&gt;startup_message off&lt;br /&gt;hardstatus alwayslastline&lt;br /&gt;hardstatus string &#39;%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]&#39;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/1705476595605951072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2013/10/adminsrv1-cat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1705476595605951072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1705476595605951072'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2013/10/adminsrv1-cat.html' title=''/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-8166089167705056442</id><published>2013-05-08T23:01:00.002+02:00</published><updated>2013-05-08T23:01:37.288+02:00</updated><title type='text'>Reserved Top Level DNS Names http://tools.ietf.org/html/rfc2606</title><content type='html'>                                                                        Request for Comments: 2606                                  A. Panitz &amp;nbsp;BCP: 32                                                     June 1999&lt;br /&gt;Category: Best Current Practice&lt;br /&gt;
Reserved Top Level DNS Names&lt;br /&gt;
[...]
&lt;br /&gt;&amp;nbsp; &amp;nbsp;To safely satisfy these needs, four domain names are reserved as&lt;br /&gt;   listed and described below.&lt;br /&gt;&lt;br /&gt;                   .test&lt;br /&gt;                .example&lt;br /&gt;                .invalid&lt;br /&gt;              .localhost&lt;br /&gt;&lt;br /&gt;      &quot;.test&quot; is recommended for use in testing of current or new DNS&lt;br /&gt;      related code.&lt;br /&gt;&lt;br /&gt;      &quot;.example&quot; is recommended for use in documentation or as examples.&lt;br /&gt;&lt;br /&gt;      &quot;.invalid&quot; is intended for use in online construction of domain&lt;br /&gt;      names that are sure to be invalid and which it is obvious at a&lt;br /&gt;      glance are invalid.&lt;br /&gt;&lt;br /&gt;      The &quot;.localhost&quot; TLD has traditionally been statically defined in&lt;br /&gt;      host DNS implementations as having an A record pointing to the&lt;br /&gt;      loop back IP address and is reserved for such use.  Any other use&lt;br /&gt;      would conflict with widely deployed code which assumes this use.&lt;br /&gt;&lt;br /&gt;3. Reserved Example Second Level Domain Names&lt;br /&gt;&lt;br /&gt;   The Internet Assigned Numbers Authority (IANA) also currently has the&lt;br /&gt;   following second level domain names reserved which can be used as&lt;br /&gt;   examples.&lt;br /&gt;
&lt;br /&gt;
example.com&lt;br /&gt;        example.net&lt;br /&gt;        example.org&lt;br /&gt;&lt;br /&gt;4. IANA Considerations&lt;br /&gt;&lt;br /&gt;   IANA has agreed to the four top level domain name reservations&lt;br /&gt;   specified in this document and will reserve them for the uses&lt;br /&gt;   indicated.&lt;br /&gt;&lt;br /&gt;5. Security Considerations&lt;br /&gt;&lt;br /&gt;   Confusion and conflict can be caused by the use of a current or&lt;br /&gt;   future top level domain name in experimentation or testing, as an&lt;br /&gt;   example in documentation, to indicate invalid names, or as a synonym&lt;br /&gt;   for the loop back address.  Test and experimental software can escape&lt;br /&gt;   and end up being run against the global operational DNS.  Even&lt;br /&gt;   examples used &quot;only&quot; in documentation can end up being coded and&lt;br /&gt;   released or cause conflicts due to later real use and the possible&lt;br /&gt;   acquisition of intellectual property rights in such &quot;example&quot; names.&lt;br /&gt;&lt;br /&gt;   The reservation of several top level domain names for these purposes&lt;br /&gt;   will minimize such confusion and conflict.&lt;br /&gt;&lt;br /&gt;References&lt;br /&gt;&lt;br /&gt;   [RFC 1034] Mockapetris, P., &quot;Domain names - concepts and facilities&quot;,&lt;br /&gt;              STD 13, RFC 1034, November 1987.&lt;br /&gt;&lt;br /&gt;   [RFC 1035] Mockapetris, P., &quot;Domain names - implementation and&lt;br /&gt;              specification&quot;, STD 13, RFC 1035, November 1987.&lt;br /&gt;&lt;br /&gt;   [RFC 1591] Postel, J., &quot;Domain Name System Structure and Delegation&quot;,&lt;br /&gt;              RFC 1591, March 1994.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Eastlake &amp;amp; Panitz        Best Current Practice                  [Page 3]&lt;br /&gt; &lt;br /&gt;RFC 2606              Reserved Top Level DNS Names             June 1999&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Authors&#39; Addresses&lt;br /&gt;&lt;br /&gt;   Donald E. Eastlake 3rd&lt;br /&gt;   IBM&lt;br /&gt;   65 Shindegan Hill Road, RR #1&lt;br /&gt;   Carmel, NY 10512&lt;br /&gt;&lt;br /&gt;   Phone: +1 914-276-1668(h)&lt;br /&gt;          +1 914-784-7913(w)&lt;br /&gt;   FAX:   +1 914-784-3833(3)&lt;br /&gt;   EMail: dee3@us.ibm.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   Aliza R. Panitz&lt;br /&gt;   500 Stamford Dr. No. 310&lt;br /&gt;   Newark, DE 19711 USA&lt;br /&gt;&lt;br /&gt;   Phone: +1 302-738-1554&lt;br /&gt;   EMail: buglady@fuschia.net&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Eastlake &amp;amp; Panitz        Best Current Practice                  [Page 4]&lt;br /&gt; &lt;br /&gt;RFC 2606              Reserved Top Level DNS Names             June 1999&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Full Copyright Statement&lt;br /&gt;&lt;br /&gt;   Copyright (C) The Internet Society (1999).  All Rights Reserved.&lt;br /&gt;&lt;br /&gt;   This document and translations of it may be copied and furnished to&lt;br /&gt;   others, and derivative works that comment on or otherwise explain it&lt;br /&gt;   or assist in its implementation may be prepared, copied, published&lt;br /&gt;   and distributed, in whole or in part, without restriction of any&lt;br /&gt;   kind, provided that the above copyright notice and this paragraph are&lt;br /&gt;   included on all such copies and derivative works.  However, this&lt;br /&gt;   document itself may not be modified in any way, such as by removing&lt;br /&gt;   the copyright notice or references to the Internet Society or other&lt;br /&gt;   Internet organizations, except as needed for the purpose of&lt;br /&gt;   developing Internet standards in which case the procedures for&lt;br /&gt;   copyrights defined in the Internet Standards process must be&lt;br /&gt;   followed, or as required to translate it into languages other than&lt;br /&gt;   English.&lt;br /&gt;&lt;br /&gt;   The limited permissions granted above are perpetual and will not be&lt;br /&gt;   revoked by the Internet Society or its successors or assigns.&lt;br /&gt;&lt;br /&gt;   This document and the information contained herein is provided on an&lt;br /&gt;   &quot;AS IS&quot; basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING&lt;br /&gt;   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING&lt;br /&gt;   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION&lt;br /&gt;   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF&lt;br /&gt;   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;&lt;br /&gt;Acknowledgement&lt;br /&gt;&lt;br /&gt;   Funding for the RFC Editor function is currently provided by the&lt;br /&gt;   Internet Society.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Eastlake &amp;amp; Panitz        Best Current Practice                  [Page 5]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Html markup produced by rfcmarkup 1.102.p1, available from http://tools.ietf.org/tools/rfcmarkup/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--
map{ map{tr|10|# |;print} split//,sprintf&quot;%.8b\n&quot;,$_}
unpack&#39;C*&#39;,unpack&#39;u*&#39;,&quot;5`#8</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/8166089167705056442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2013/05/reserved-top-level-dns-names.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/8166089167705056442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/8166089167705056442'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2013/05/reserved-top-level-dns-names.html' title='Reserved Top Level DNS Names http://tools.ietf.org/html/rfc2606'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-5490805705795470571</id><published>2012-10-30T10:12:00.002+01:00</published><updated>2012-10-30T10:12:04.915+01:00</updated><title type='text'>http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx</title><content type='html'>&lt;h5 class=&quot;posthead pageTitle&quot;&gt;
Remotely managing your Server Core using WinRM and WinRS &lt;/h5&gt;
I&#39;ve already shown you how to remotely manage your Server Core installations of Windows Server Core &lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/01/23/remotely-managing-your-server-core-using-rdp.aspx&quot; mce_href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/01/23/remotely-managing-your-server-core-using-rdp.aspx&quot;&gt;using the Remote Desktop Protocol&lt;/a&gt;, but using Windows Remote Management (WinRM, Microsoft implementation of &lt;a href=&quot;http://en.wikipedia.org/wiki/WS-Management&quot; mce_href=&quot;http://en.wikipedia.org/wiki/WS-Management&quot;&gt;WS-Management&lt;/a&gt;) in combination with WinRS might prove to be even more useful for day to day administration.&lt;br /&gt;
&lt;h3&gt;
About WS-Management&lt;/h3&gt;
WS-Management is a specification of a &lt;a href=&quot;http://en.wikipedia.org/wiki/SOAP&quot; mce_href=&quot;http://en.wikipedia.org/wiki/SOAP&quot;&gt;SOAP&lt;/a&gt;-based protocol for the management of servers, devices, applications and more. The specification is based on &lt;a href=&quot;http://en.wikipedia.org/wiki/DMTF&quot; mce_href=&quot;http://en.wikipedia.org/wiki/DMTF&quot;&gt;DMTF&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Open_standard&quot; mce_href=&quot;http://en.wikipedia.org/wiki/Open_standard&quot;&gt;open standards&lt;/a&gt; and Internet standards for Web Services and was published in March, 2005 by a group of companies, including &lt;a href=&quot;http://en.wikipedia.org/wiki/AMD&quot; mce_href=&quot;http://en.wikipedia.org/wiki/AMD&quot;&gt;AMD&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Dell%2C_Inc.&quot; mce_href=&quot;http://en.wikipedia.org/wiki/Dell%2C_Inc.&quot;&gt;Dell&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Intel&quot; mce_href=&quot;http://en.wikipedia.org/wiki/Intel&quot;&gt;Intel&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Microsoft&quot; mce_href=&quot;http://en.wikipedia.org/wiki/Microsoft&quot;&gt;Microsoft&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Sun_Microsystems&quot; mce_href=&quot;http://en.wikipedia.org/wiki/Sun_Microsystems&quot;&gt;Sun Microsystems&lt;/a&gt; and others.&lt;br /&gt;
WS-Management provides a common way for systems to access and exchange management information across the IT infrastructure. The specification is quite rich, supporting much more than get/set of simple variables, and in that it is closer to &lt;a href=&quot;http://en.wikipedia.org/wiki/Web-Based_Enterprise_Management&quot; mce_href=&quot;http://en.wikipedia.org/wiki/Web-Based_Enterprise_Management&quot;&gt;WBEM&lt;/a&gt; or &lt;a href=&quot;http://en.wikipedia.org/wiki/Netconf&quot; mce_href=&quot;http://en.wikipedia.org/wiki/Netconf&quot;&gt;Netconf&lt;/a&gt; than to &lt;a href=&quot;http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol&quot; mce_href=&quot;http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol&quot;&gt;SNMP&lt;/a&gt;. A mapping of the &lt;a href=&quot;http://en.wikipedia.org/wiki/DMTF&quot; mce_href=&quot;http://en.wikipedia.org/wiki/DMTF&quot;&gt;DMTF&lt;/a&gt;-originated &lt;a href=&quot;http://en.wikipedia.org/wiki/Common_Information_Model_%28computing%29&quot; mce_href=&quot;http://en.wikipedia.org/wiki/Common_Information_Model_%28computing%29&quot;&gt;Common Information Model&lt;/a&gt; into WS-Management was also defined.&lt;br /&gt;
&lt;h3&gt;
Remote Shell&lt;/h3&gt;
One of the most common uses for Windows Remote Management is the Remote Shell, (WinRS) that can be used to execute a program on a remote host. &lt;br /&gt;
&lt;h3&gt;
Other uses&lt;/h3&gt;
Windows Remote Management is not a stranger to this blog. I wrote a blogpost 6 months ago on &lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2007/09/02/handling-server-core-events.aspx&quot; mce_href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2007/09/02/handling-server-core-events.aspx&quot;&gt;event forwarding&lt;/a&gt; and already looked into WinRM. You might find your Windows Remote Management is already enabled after following those directions.&lt;br /&gt;
This blog post will be focusing on using WinRM, combined with WinRS.&lt;br /&gt;
   &lt;br /&gt;
&lt;h1&gt;
WinRM&lt;/h1&gt;
Windows Remote Management is the server part answering the Remote Shell. In Windows Server 2008 it is not enabled by default, which is good from a security point of view. &lt;br /&gt;
&lt;h3&gt;
Determining whether WinRM is configured or not&lt;/h3&gt;
Windows Remote Management is installed by default on Windows Server 2008 and the WinRM service is set to start (delayed) automatically. The only way to determine whether Windows Remote Management is installed is by examining the output of the following command:&lt;br /&gt;
&lt;blockquote&gt;
&lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;WinRM enumerate winrm/config/listener&lt;/span&gt;&lt;/strong&gt;&lt;/blockquote&gt;
or (shorter, but with the same effect)&lt;br /&gt;
&lt;blockquote&gt;
&lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;WinRM e winrm/config/listener&lt;/span&gt;&lt;/strong&gt;&lt;/blockquote&gt;
When this command has no output, it means no listeners are configured and Windows Remote Management is not configured.&lt;br /&gt;
&lt;h2&gt;
Enabling Windows Remote Management&lt;/h2&gt;
&lt;h3&gt;
Using the command line&lt;/h3&gt;
To enable Windows Remote Shell on a server running a Server Core installation, type the following command at the command prompt of the Server Core box:&lt;br /&gt;
&lt;blockquote&gt;
&lt;b&gt;&lt;span style=&quot;color: grey;&quot;&gt;WinRM quickconfig&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
or (shorter, but with the same effect)&lt;br /&gt;
&lt;blockquote&gt;
&lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;WinRM qc&lt;/span&gt;&lt;/strong&gt;&lt;/blockquote&gt;
The command questions whether you really want to enable Windows Remote Management:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: grey;&quot;&gt;WinRM is not set up to allow remote access to this machine for management. &lt;br /&gt;The following changes must be made: Create a WinRM listener on HTTP://* to accept WS-Man requests to any IP on this machine &lt;br /&gt;Make these changes [y/n]?&lt;/span&gt;&lt;/blockquote&gt;
Press &lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;y&lt;/span&gt;&lt;/strong&gt; to continue or &lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;n&lt;/span&gt;&lt;/strong&gt; to cancel.&lt;br /&gt;
This command will perform a couple of actions. First of all it will check whether the Windows Remote Management service is started and set to start automatically. After that it creates listeners for all the network connections to accept Windows Remote Shell connections with default settings. It will also open up port 80 in the Windows Firewall.&lt;br /&gt;
If configuration is successful, the following output is displayed:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: grey;&quot;&gt;WinRM has been updated for remote management. WinRM service type changed to delayed auto start. WinRM service started. Created a WinRM listener on HTTP://* to accept WS-Man requests to any IP on this machine.&lt;/span&gt; &lt;/blockquote&gt;
&lt;h3&gt;
Using Group Policies&lt;/h3&gt;
When you place Server Core boxes in a separate Organizational Unit in your Active Directory environment you can manage Windows Remote Management centrally. &lt;br /&gt;
Look for the Windows Remote Management and Windows Remote Shell Group Policy Objects (GPOs) under Administrative Templates and Windows Components. &lt;br /&gt;Do not forget to also open up TCP 80 on the firewall.&lt;br /&gt;
&lt;h2&gt;
Default settings&lt;/h2&gt;
The default settings of Windows Remote Management might not suit your needs. You can change on which network interfaces Windows Remote Management listens, change the URI&#39;s and change whether WinRM will use HTTP (TCP 80) or HTTPS (TCP 443) &lt;br /&gt;
While WinRM listens on port 80 by default, it doesn&#39;t mean traffic is unencrypted. Traffic by default is only accepted by WinRM when it is encrypted using the Negotiate or Kerberos SSP. Enabling HTTPS is not a security measure persé. It is needed when you want to use the Windows Remote Shell (WinRS) from a host that is not in the same domain as the Server Core box. (unless you use the trick below)&lt;br /&gt;
Windows Remote Shell is enabled by default within Windows Remote Management. For Windows Remote Shell the default settings are:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Maximum of 5 concurrent users &lt;/li&gt;
&lt;li&gt;Maximum of 2 shells per user &lt;/li&gt;
&lt;li&gt;Maximum of 80MB memory usage per shell &lt;/li&gt;
&lt;li&gt;Maximum of 5 processes per shell &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Disabling Windows Remote Management&lt;/h2&gt;
To disable Windows Remote Management you need to remove the listener. The following command can be used:&lt;br /&gt;
&lt;blockquote&gt;
&lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;WinRM delete winrm/config/listener?IPAdress=*+Transport=HTTP &lt;/span&gt;&lt;/strong&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;h1&gt;
WinRS&lt;/h1&gt;
On another computer, at a command prompt, use WinRS.exe to run commands on a server running a Server Core installation. For example, type:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&lt;b&gt;winrs -r:&lt;/b&gt;ServerName&lt;b&gt; cmd.exe&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
Where &lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;ServerName&lt;/span&gt;&lt;/strong&gt; is the name of the server running a Server Core installation with Windows Remote Management. This will result in a remote prompt where you can happily type away your commands.&lt;br /&gt;
   &lt;br /&gt;
&lt;h1&gt;
Tips and tricks&lt;/h1&gt;
&lt;h2&gt;
&lt;strong&gt;Workaround for non-domain situations&lt;/strong&gt;&lt;/h2&gt;
When the Server Core box and the remote host are not members of the same domain you can&#39;t connect to the Server Core box using WinRS, because of the built-in security measures. Run the following commands to lower security:&lt;br /&gt;
&lt;blockquote&gt;
&lt;strong&gt;&lt;u&gt;&lt;span style=&quot;color: red;&quot;&gt;Note:&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;You seriously cripple the built-in security of Windows Server 2008 after running the following commands. Only apply these commands to test situations.&lt;/blockquote&gt;
&lt;h3&gt;
On the Windows server Core box&lt;/h3&gt;
Run the following commands on the console of the Server Core box to lower security:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&lt;strong&gt;WinRM set winrm/config/service/auth @{Basic=&quot;true&quot;} &lt;br /&gt;WinRM set winrm/config/client @{TrustedHosts=&quot;&lt;local&gt;&lt;/local&gt;&lt;/strong&gt;&lt;strong&gt;&quot;} &lt;br /&gt;WinRM set winrm/config/client @{TrustedHosts=&quot;&lt;/strong&gt;RemoteHost&lt;strong&gt;&quot;}&lt;/strong&gt;&lt;/span&gt;&lt;/blockquote&gt;
Where &lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;RemoteHost&lt;/span&gt;&lt;/strong&gt; is the host you want to be able to connect to the server.&lt;br /&gt;
&lt;h3&gt;
On the remote host&lt;/h3&gt;
Start the Command Prompt with elevated privileges. On machines with User Account Control enabled this is easily achieved by pressing the Start button, typing cmd and press CTRL and SHIFT together with Enter to run the command.  Run the following commands on the remote host to lower security:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&lt;strong&gt;WinRM set winrm/config/service/auth @{Basic=&quot;true&quot;} &lt;br /&gt;WinRM set winrm/config/client @{TrustedHosts=&quot;&lt;local&gt;&lt;/local&gt;&lt;/strong&gt;&lt;strong&gt;&quot;} &lt;br /&gt;WinRM set winrm/config/client @{TrustedHosts=&quot;&lt;/strong&gt;ServerName&lt;strong&gt;&quot;}&lt;/strong&gt;&lt;/span&gt;&lt;/blockquote&gt;
Where &lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;ServerName&lt;/span&gt;&lt;/strong&gt; is the name of the server running a Server Core installation with Windows Remote Management.&lt;br /&gt;
To open the Remote Shell use the following command:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&lt;strong&gt;winrs -r:&quot;&lt;/strong&gt;ServerName&lt;strong&gt;&quot;: –u:&lt;/strong&gt;Domain\Username&lt;strong&gt; –p:&lt;/strong&gt;Password&lt;strong&gt; cmd.exe&lt;/strong&gt;&lt;/span&gt;&lt;/blockquote&gt;
Where &lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;Domain\Username &lt;/span&gt;&lt;/strong&gt;is the name of an account with administrative rights on the server running a Server Core installation with Windows Remote Management and &lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;Password&lt;/span&gt;&lt;/strong&gt; is the password for the account.&lt;br /&gt;
&lt;h2&gt;
Trick to get the hostname displayed&lt;/h2&gt;
Using the Windows Remote Shell might get confusing pretty fast, since the prompt doesn&#39;t show where you&#39;re connected to or whether you&#39;re connected at all. There are some giveaways though:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;When you type exit your command window doesn&#39;t close&lt;/li&gt;
&lt;li&gt;The WinRS command is displayed in the title of your command prompt window&lt;/li&gt;
&lt;/ul&gt;
This can become very painful when you decide to shutdown a server and turn off the wrong server accidentally...&lt;br /&gt;
&lt;a href=&quot;http://blogs.technet.com/aralves/&quot; mce_href=&quot;http://blogs.technet.com/aralves/&quot;&gt;Arlindo Alves&lt;/a&gt;, the Belgian IT Pro Evangelist, has a good trick to display some extra information on the command prompt, which also works when using the Windows Remote Shell. I suggest you read &lt;a href=&quot;http://blogs.technet.com/aralves/archive/2008/02/01/windows-server-2008-server-core-change-default-prompt.aspx&quot; mce_href=&quot;http://blogs.technet.com/aralves/archive/2008/02/01/windows-server-2008-server-core-change-default-prompt.aspx&quot;&gt;his blog post on it&lt;/a&gt;. It entails adding an Extended String value named prompt to the following registry key:&lt;br /&gt;
&lt;blockquote&gt;
HKLM\System\CurrentControlSet\Control\Session Manager\Environment&lt;/blockquote&gt;
He fills his prompt with all kinds of stuff (which doesn&#39;t seem to get passed through completely using WinRS) but I simply add the following data to the value:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&lt;strong&gt;[&lt;/strong&gt;IdentificationString&lt;strong&gt;]$s$p$g&lt;/strong&gt;&lt;/span&gt;&lt;/blockquote&gt;
Where &lt;strong&gt;&lt;span style=&quot;color: grey;&quot;&gt;IdentificationString&lt;/span&gt;&lt;/strong&gt; is an identification string that accurately describes what the server is all about. (which in my case differs from the hostname) &lt;br /&gt;
   &lt;br /&gt;
&lt;h1&gt;
Concluding&lt;/h1&gt;
Windows Remote Management and the Windows Remote Shell are really good tools and can make your life as a systems administrators much easier. In the light of Server Core this combination of tools will not generate as much traffic as &lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/01/23/remotely-managing-your-server-core-using-rdp.aspx&quot; mce_href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/01/23/remotely-managing-your-server-core-using-rdp.aspx&quot;&gt;RDP&#39;ing into a Windows Server 2008 box&lt;/a&gt; and can be scheduled. This might make it the ideal solution for day to day system management.&lt;br /&gt;
Unfortunately security is a real pain in the behind if both machines aren&#39;t in the same Active Directory domain. You&#39;ll need to type away some commands to make it work.&lt;br /&gt;
Arlindo Alves&#39; tip to show the hostname of the server on both the console of the Server Core box and the remote shell might prove to be a real lifesaver.&lt;br /&gt;
&lt;h2&gt;
Further reading&lt;/h2&gt;
&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/aa384372.aspx&quot; mce_href=&quot;http://msdn2.microsoft.com/en-us/library/aa384372.aspx&quot;&gt;Installation and Configuration for Windows Remote Management&lt;/a&gt; &lt;br /&gt;&lt;a href=&quot;http://www.delta-solutions.co.za/Lists/Posts/Post.aspx?ID=5&quot; mce_href=&quot;http://www.delta-solutions.co.za/Lists/Posts/Post.aspx?ID=5&quot;&gt;Windows Remote Management (WinRM) for Powershell and CMD on Windows 2008 &lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://blogs.technet.com/aralves/archive/2008/02/01/windows-server-2008-server-core-change-default-prompt.aspx&quot; mce_href=&quot;http://blogs.technet.com/aralves/archive/2008/02/01/windows-server-2008-server-core-change-default-prompt.aspx&quot;&gt;Windows Server 2008 - Server Core - Change Default Prompt&lt;/a&gt;  &lt;br /&gt;&lt;a href=&quot;http://blogs.technet.com/keithcombs/archive/2008/02/11/will-the-real-core-please-stand-up.aspx&quot; mce_href=&quot;http://blogs.technet.com/keithcombs/archive/2008/02/11/will-the-real-core-please-stand-up.aspx&quot;&gt;Will the real Core please stand up?&lt;/a&gt;   &lt;br /&gt;&lt;a href=&quot;http://blog.netnerds.net/2008/01/winrs-microsofts-disappointing-answer-to-ssh-for-remote-administration/&quot; mce_href=&quot;http://blog.netnerds.net/2008/01/winrs-microsofts-disappointing-answer-to-ssh-for-remote-administration/&quot;&gt;WinRS: Microsoft&#39;s Disappointing Answer to SSH for Remote Administration&lt;/a&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.request-response.com/blog/PermaLink,guid,e4ad0d8c-6fb6-40b8-9b52-7ab9092ccc7c.aspx&quot; mce_href=&quot;http://www.request-response.com/blog/PermaLink,guid,e4ad0d8c-6fb6-40b8-9b52-7ab9092ccc7c.aspx&quot;&gt;WS-Management: Windows Vista and Windows Server 2008&lt;/a&gt;  &lt;br /&gt;&lt;a href=&quot;http://redmondmag.com/columns/article.asp?EditorialsID=2262&quot; mce_href=&quot;http://redmondmag.com/columns/article.asp?EditorialsID=2262&quot;&gt;RedmondMag October 2007 - First Look: WinRM &amp;amp; WinRS&lt;/a&gt;  &lt;br /&gt;&lt;a href=&quot;http://understandingwindows.blogspot.com/2007/10/configuring-windows-server-2008-server.html&quot; mce_href=&quot;http://understandingwindows.blogspot.com/2007/10/configuring-windows-server-2008-server.html&quot;&gt;Configuring Windows Server 2008 Server Core Basic Networking Settings&lt;/a&gt; &lt;br /&gt;&lt;a href=&quot;http://weblogs.foxite.com/stuartdunkeld/archive/2006/05/01/1462.aspx&quot; mce_href=&quot;http://weblogs.foxite.com/stuartdunkeld/archive/2006/05/01/1462.aspx&quot;&gt;Connecting to WinRM with Windows Vista&lt;/a&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.windowsitpro.com/article/articleid/97237/how-can-i-remotely-run-commands-on-a-windows-vista-or-windows-server-2008-box.html&quot; mce_href=&quot;http://www.windowsitpro.com/article/articleid/97237/how-can-i-remotely-run-commands-on-a-windows-vista-or-windows-server-2008-box.html&quot;&gt;How can I remotely run commands on a Windows Vista or Windows Server 2008 box?&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;postfoot&quot;&gt;
&lt;span class=&quot;em&quot;&gt;Posted:&lt;/span&gt; Saturday, February 23, 2008 11:19 PM  by  &lt;a href=&quot;http://blogs.dirteam.com/user/Profile.aspx?UserID=2127&quot; id=&quot;ctl00___ctl00___ctl02___Entry___AuthorLink&quot;&gt;Sander Berkouwer&lt;/a&gt;&lt;div&gt;
&lt;span id=&quot;ctl00___ctl00___ctl02___Entry___InlineTagEditorPanel&quot;&gt;Filed under: &lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/tags/System+Administration/default.aspx&quot; rel=&quot;tag&quot;&gt;System Administration&lt;/a&gt;, &lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/tags/Microsoft+Windows+Vista/default.aspx&quot; rel=&quot;tag&quot;&gt;Microsoft Windows Vista&lt;/a&gt;, &lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/tags/Microsoft+Windows+Server+2008/default.aspx&quot; rel=&quot;tag&quot;&gt;Microsoft Windows Server 2008&lt;/a&gt;, &lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/tags/Server+Core/default.aspx&quot; rel=&quot;tag&quot;&gt;Server Core&lt;/a&gt;&lt;/span&gt;&lt;input id=&quot;ctl00___ctl00___ctl02___Entry___InlineTagEditorPanel_State&quot; name=&quot;ctl00$_$ctl00$_$ctl02$_$Entry$_$InlineTagEditorPanel&quot; type=&quot;hidden&quot; value=&quot;nochange&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;comments&quot;&gt;
&lt;h2&gt;
 Comments&lt;/h2&gt;
&lt;div class=&quot;CommentArea&quot;&gt;
&lt;h4 class=&quot;CommentTitle&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/utility/Redirect.aspx?U=http%3a%2f%2fblogs.dirteam.com%2fblogs%2fsanderberkouwer%2farchive%2f2008%2f03%2f24%2fsc-enario-the-kitchen-cupboard-server.aspx&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl00_NameLink&quot; rel=&quot;nofollow&quot; title=&quot;TrackBack&quot;&gt;The things that are better left unspoken&lt;/a&gt;     said:    &lt;img align=&quot;absbottom&quot; class=&quot;CommentArrow&quot; src=&quot;http://blogs.dirteam.com/Themes/Blogs/unspoken/images/spacer.gif&quot; /&gt;&lt;/h4&gt;
&lt;div class=&quot;CommentText&quot;&gt;
&lt;div class=&quot;CommentText2&quot;&gt;
&lt;div class=&quot;CommentText3&quot;&gt;
Server Core installations can be specifically targeted at situations where single server roles are needed. Combining some of these roles on one server might also be very powerful, as I will show you in this post of my Easter SC&#39;enarios series, where I&#39;ll try to construct the ultimate Branch Office server using Server Core roles. The roles and features I&#39;ll be using are:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Active Directory Read Only Domain Controller &lt;/li&gt;
&lt;li&gt;Active Directory Integrated Dynamic DNS Server and DHCP Server &lt;/li&gt;
&lt;li&gt;File Server with Distributed File System and Bitlocker Drive Encryption &lt;/li&gt;
&lt;li&gt;Windows Backup&lt;/li&gt;
&lt;/ul&gt;
This will result in a headless server, that can be safely stored in a kitchen cupboard of a remote location of your company.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentFooter&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx#2582&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl00_PermaLink&quot; title=&quot;permalink&quot;&gt;#&lt;/a&gt; March 24, 2008 1:42 AM &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentArea&quot;&gt;
&lt;h4 class=&quot;CommentTitle&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/utility/Redirect.aspx?U=http%3a%2f%2fblogs.dirteam.com%2fblogs%2fsanderberkouwer%2farchive%2f2008%2f03%2f24%2fsc-enario-the-kitchen-cupboard-server.aspx&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl01_NameLink&quot; rel=&quot;nofollow&quot; title=&quot;TrackBack&quot;&gt;The things that are better left unspoken&lt;/a&gt;     said:    &lt;img align=&quot;absbottom&quot; class=&quot;CommentArrow&quot; src=&quot;http://blogs.dirteam.com/Themes/Blogs/unspoken/images/spacer.gif&quot; /&gt;&lt;/h4&gt;
&lt;div class=&quot;CommentText&quot;&gt;
&lt;div class=&quot;CommentText2&quot;&gt;
&lt;div class=&quot;CommentText3&quot;&gt;
Server Core installations can be specifically targeted at situations where single server roles are needed. Combining some of these roles on one server might also be very powerful, as I will show you in this post of my Easter SC&#39;enarios series, where I&#39;ll try to construct the ultimate Branch Office server using Server Core roles. The roles and features I&#39;ll be using are:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Active Directory Read Only Domain Controller &lt;/li&gt;
&lt;li&gt;Active Directory Integrated Dynamic DNS Server and DHCP Server &lt;/li&gt;
&lt;li&gt;File Server with Distributed File System and Bitlocker Drive Encryption &lt;/li&gt;
&lt;li&gt;Windows Backup&lt;/li&gt;
&lt;/ul&gt;
This will result in a headless server, that can be safely stored in a kitchen cupboard of a remote location of your company.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentFooter&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx#2585&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl01_PermaLink&quot; title=&quot;permalink&quot;&gt;#&lt;/a&gt; March 24, 2008 1:51 AM &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentAreaOwner&quot;&gt;
&lt;h4 class=&quot;CommentTitle&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/utility/Redirect.aspx?U=http%3a%2f%2fwindowsnetworking.com%2farticles_tutorials%2fhow-windows-server-2008-winrm-winrs.html&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl02_NameLink&quot; title=&quot;TrackBack&quot;&gt;TrackBack&lt;/a&gt;     said:    &lt;img align=&quot;absbottom&quot; class=&quot;CommentArrow&quot; src=&quot;http://blogs.dirteam.com/Themes/Blogs/unspoken/images/spacer.gif&quot; /&gt;&lt;/h4&gt;
&lt;div class=&quot;CommentText&quot;&gt;
&lt;div class=&quot;CommentText2&quot;&gt;
&lt;div class=&quot;CommentText3&quot;&gt;
To use WinRM, the hosts communicating with it will need to be members of the same domain as the WinRM host. If this is not the case, I recommend you consult the different WinRM security scenarios in the article “Remotely managing your Server Core using WinRM and WinRS”. &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentFooter&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx#3051&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl02_PermaLink&quot; title=&quot;permalink&quot;&gt;#&lt;/a&gt; August 23, 2008 2:56 PM &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentArea&quot;&gt;
&lt;h4 class=&quot;CommentTitle&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/utility/Redirect.aspx?U=http%3a%2f%2fblogs.technet.com%2fjonjor%2farchive%2f2009%2f01%2f09%2fwinrm-windows-remote-management-troubleshooting.aspx&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl03_NameLink&quot; rel=&quot;nofollow&quot; title=&quot;TrackBack&quot;&gt;Jonathan&#39;s Virtual Blog - Thinking Outside the Physical Box&lt;/a&gt;     said:    &lt;img align=&quot;absbottom&quot; class=&quot;CommentArrow&quot; src=&quot;http://blogs.dirteam.com/Themes/Blogs/unspoken/images/spacer.gif&quot; /&gt;&lt;/h4&gt;
&lt;div class=&quot;CommentText&quot;&gt;
&lt;div class=&quot;CommentText2&quot;&gt;
&lt;div class=&quot;CommentText3&quot;&gt;
What is WinRM. What&#39;s new in Windows Vista, Windows Server 2003 R2, Windows Server 2008 (and Server 2008 Core)&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentFooter&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx#3528&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl03_PermaLink&quot; title=&quot;permalink&quot;&gt;#&lt;/a&gt; January 9, 2009 2:44 PM &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentAreaOwner&quot;&gt;
&lt;h4 class=&quot;CommentTitle&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/utility/Redirect.aspx?U=http%3a%2f%2foszone.net%2f7389%2fwinrm_winrs_windows_server_2008&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl04_NameLink&quot; title=&quot;TrackBack&quot;&gt;TrackBack&lt;/a&gt;     said:    &lt;img align=&quot;absbottom&quot; class=&quot;CommentArrow&quot; src=&quot;http://blogs.dirteam.com/Themes/Blogs/unspoken/images/spacer.gif&quot; /&gt;&lt;/h4&gt;
&lt;div class=&quot;CommentText&quot;&gt;
&lt;div class=&quot;CommentText2&quot;&gt;
&lt;div class=&quot;CommentText3&quot;&gt;
Для использования WinRM все узлы, взаимодействующие с ним, должны быть членами того же домена, что и узел с WinRM. Если в вашем случае это не так, рекомендую ознакомиться с различными сценариями безопасности в статье ‘Remotely managing your Server Core using WinRM and WinRS‘.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentFooter&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx#3533&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl04_PermaLink&quot; title=&quot;permalink&quot;&gt;#&lt;/a&gt; January 12, 2009 11:41 AM &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentArea&quot;&gt;
&lt;h4 class=&quot;CommentTitle&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/utility/Redirect.aspx?U=http%3a%2f%2fblogs.dirteam.com%2fblogs%2fsanderberkouwer%2farchive%2f2009%2f04%2f12%2fchoosing-the-right-server-core-remote-management-method.aspx&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl05_NameLink&quot; rel=&quot;nofollow&quot; title=&quot;TrackBack&quot;&gt;The things that are better left unspoken&lt;/a&gt;     said:    &lt;img align=&quot;absbottom&quot; class=&quot;CommentArrow&quot; src=&quot;http://blogs.dirteam.com/Themes/Blogs/unspoken/images/spacer.gif&quot; /&gt;&lt;/h4&gt;
&lt;div class=&quot;CommentText&quot;&gt;
&lt;div class=&quot;CommentText2&quot;&gt;
&lt;div class=&quot;CommentText3&quot;&gt;
Looking for a complete resource on remotely managing your Server Core box? Look no further! I&#39;ve done&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentFooter&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx#3813&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl05_PermaLink&quot; title=&quot;permalink&quot;&gt;#&lt;/a&gt; April 12, 2009 4:50 AM &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentArea&quot;&gt;
&lt;h4 class=&quot;CommentTitle&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/utility/Redirect.aspx?U=http%3a%2f%2fwww.winclient.cn%2f%3fp%3d106&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl06_NameLink&quot; rel=&quot;nofollow&quot; title=&quot;TrackBack&quot;&gt;?????????????????? » Windows Server 2008 WinRM???WinRS?????????????????????&lt;/a&gt;     said:    &lt;img align=&quot;absbottom&quot; class=&quot;CommentArrow&quot; src=&quot;http://blogs.dirteam.com/Themes/Blogs/unspoken/images/spacer.gif&quot; /&gt;&lt;/h4&gt;
&lt;div class=&quot;CommentText&quot;&gt;
&lt;div class=&quot;CommentText2&quot;&gt;
&lt;div class=&quot;CommentText3&quot;&gt;
为了使用WinRM，与之连接的主机必需与WinRM主机是相同域的成员。 &lt;span id=&quot;TR_2_16&quot;&gt;如果情况不是这样，我建议你参考文章“&lt;span style=&quot;color: #2970a6;&quot;&gt;Remotely managing your Server Core using WinRM and WinRS&lt;/span&gt;里描述的不同安全情况。&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentFooter&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx#4061&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl06_PermaLink&quot; title=&quot;permalink&quot;&gt;#&lt;/a&gt; July 22, 2009 1:13 PM &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentArea&quot;&gt;
&lt;h4 class=&quot;CommentTitle&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/utility/Redirect.aspx?U=http%3a%2f%2fhelpforsure.wordpress.com%2f2011%2f01%2f23%2fwinrm-windows-remote-management-architecture-troubleshooting%2f&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl07_NameLink&quot; rel=&quot;nofollow&quot; title=&quot;TrackBack&quot;&gt;WinRM (Windows Remote Management) Architecture | Troubleshooting « Helpforsure&lt;/a&gt;     said:    &lt;img align=&quot;absbottom&quot; class=&quot;CommentArrow&quot; src=&quot;http://blogs.dirteam.com/Themes/Blogs/unspoken/images/spacer.gif&quot; /&gt;&lt;/h4&gt;
&lt;div class=&quot;CommentText&quot;&gt;
&lt;div class=&quot;CommentText2&quot;&gt;
&lt;div class=&quot;CommentText3&quot;&gt;
PingBack from &lt;a href=&quot;http://helpforsure.wordpress.com/2011/01/23/winrm-windows-remote-management-architecture-troubleshooting/&quot; rel=&quot;nofollow&quot; target=&quot;_new&quot;&gt;http://helpforsure.wordpress.com/2011/01/23/winrm-windows-remote-management-architecture-troubleshooting/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentFooter&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx#5523&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl07_PermaLink&quot; title=&quot;permalink&quot;&gt;#&lt;/a&gt; January 23, 2011 1:38 PM &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;CommentArea&quot;&gt;
&lt;h4 class=&quot;CommentTitle&quot;&gt;
&lt;a href=&quot;http://blogs.dirteam.com/utility/Redirect.aspx?U=http%3a%2f%2fblogs.technet.com%2fb%2fitaly%2farchive%2f2011%2f11%2f21%2fhyper-v-gestione-dell-hypervisor-da-remoto-tramite-remote-desktop-winrm-e-winrs.aspx&quot; id=&quot;ctl00___ctl00___ctl02___Comments___Comments_ctl08_NameLink&quot; rel=&quot;nofollow&quot; title=&quot;TrackBack&quot;&gt;Blog Team TechNet Italia&lt;/a&gt;     said:    &lt;img align=&quot;absbottom&quot; class=&quot;CommentArrow&quot; src=&quot;http://blogs.dirteam.com/Themes/Blogs/unspoken/images/spacer.gif&quot; /&gt;&lt;/h4&gt;
&lt;div class=&quot;CommentText&quot;&gt;
&lt;div class=&quot;CommentText2&quot;&gt;
&lt;div class=&quot;CommentText3&quot;&gt;
Buon inizio di settimana a tutti. Oggi vi propongo la seconda parte della guida che Ermanno Goletto&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
--
map{ map{tr|10|# |;print} split//,sprintf&quot;%.8b\n&quot;,$_}
unpack&#39;C*&#39;,unpack&#39;u*&#39;,&quot;5`#8</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/5490805705795470571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2012/10/httpblogsdirteamcomblogssanderberkouwer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/5490805705795470571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/5490805705795470571'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2012/10/httpblogsdirteamcomblogssanderberkouwer.html' title='http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/02/23/remotely-managing-your-server-core-using-winrm-and-winrs.aspx'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-7361370996916719120</id><published>2012-08-26T04:50:00.000+02:00</published><updated>2012-08-26T04:50:00.693+02:00</updated><title type='text'>cross platform midi network sync  between linux, windows and mac</title><content type='html'>&lt;div style=&quot;white-space:pre;font-family:sans-serif;line-height:1.3em;&quot;&gt;Some pages about cross platform midi synchronisation between apple mac linux windows and arbitrary devices ( dsmidi, ios, ipads, androids, .... )

let them all play together :D




http://nerds.de/en/loopbe1.html
LoopBe1 
A Free Virtual MIDI Driver 
LoopBe1 is an internal MIDI device for transferring MIDI data between computer programs. 



Basically LoopBe1 is an &quot;invisible cable&quot; to connect a MIDI outport of an application to any other application´s MIDI inport.
All MIDI data sent to the program´s output is channeled to the receiving applications in realtime.
You may connect up to 8 applications to LoopBe&#39;s inport and up to 8 applications to the outport, all sending and receiving at the same time


dsmidiwifi dsmi

http://dsmi.tobw.net/

DSMI consists of 
libdsmi
An open source library for the DS (using devkitARM and libnds) and the iPhone (using XCode) that makes it easy to write software that acts as a MIDI controller or MIDI client.

DSMIDIWiFi Server
An application that runs on the computer and forwards the MIDI messages received via Wifi to MIDI applications. The DSMIDIWiFi server is open source and is available for


MacOS X (intel/ppc) 
Linux 

Windows (guess who&#39;s the ugliest) 



http://www.tobias-erichsen.de/software/rtpmidi.html
rtpMIDIdownload rtpMIDI
rtpMIDI tutorial

Network MIDI driver for Windows XP up to Windows 7, 32 and 64 bit.  Compatible to the network MIDI included in Apple OS-X and iOS 4.2




http://wifimidi.com/
The Missing Link OSC/MIDI Translator is a standalone hardware device which contains its own WiFi radio, and translates specially-coded OSC messages sent from your mobile device or computer into standard MIDI messages to control synthesizers, drum machines, mixers, digital audio workstations, or anything which responds to MIDI commands. It does this with low latency, high flexibility and configurability, and without the need for a computer anywhere in the control chain. Multiple wireless OSC devices may connect simultaneously to The Missing Link, making collaboration easy.




http://opensoundcontrol.org/
OSCulator is needed for Mac OSX and LoopBe1 (or another virtual MIDI driver) is needed for Windows OS.

http://www.osculator.net/
&quot;OSCulator connects your devices transforming them into powerful instruments&quot; 

http://nerds.de/en/loopbe1.html
A Free Virtual MIDI Driver 
LoopBe1 is an internal MIDI device for transferring MIDI data between computer programs. Basically LoopBe1 is an &quot;invisible cable&quot; to connect a MIDI outport of an application to any other application´s MIDI inport.
All MIDI data sent to the program´s output is channeled to the receiving applications in realtime.
You may connect up to 8 applications to LoopBe&#39;s inport and up to 8 applications to the outport, all sending and receiving at the same time.




http://www.iannix.org/documentation/EN/intro.html
IanniX is a graphical open-source sequencer, based on Iannis Xenakis works, for digital art. IanniX syncs via Open Sound Control (OSC) events and curves to your real-time environment.



http://www.nerds.de/en/ipmidi.html
MIDI over Ethernet ports - send MIDI over your LAN.
You can route MIDI over your Ethernet network, using ipMIDI ports to send and receive MIDI data between computers connected to your LAN. For example, if you have a m
usic studio with several computers connected via MIDI interfaces and MIDI cables, ipMIDI will replace them all.
Any MIDI application on the LAN can communicate with any other without any new physical connections, eliminating separate MIDI cables and additional hardware interfaces and if you are running a wireless IP network (i.e. 802.11 g/n) you don’t need any cables at all! This is becoming more in demand, the ability to just establish a temporary local wireless network 



http://midiio.sapp.org/
The Cross-platform MIDI software interface for C++ programming. 


http://jackaudio.org/download

http://jackaudio.org/netjack
netJACK1, also known as &quot;netone&quot; 
Designed and implemented primarily by Torben Hohn, this is the most widely used JACK-over-a-network system. Exists for Linux, OS X and Windows. Can be run with and without data compression. 
netJACK2 
Designed and implemented primarily by Romain Moret at GRAME. Exists for Linux, OS X and Windows. No data compression. 
jack.trip 
Designed and implemented by the Soundwire group at CCRMA at Stanford University. Exists for Linux, and OS X. No synchronization, variable data compression. 

http://www.humatic.de/htools/nmj/
nmj - Network MIDI for Android™ &amp;amp; desktop Java
nmj is a pure Java MIDI over ethernet solution for Android™ and desktop Java on all major operating systems, compatible with 
RTP MIDI (as specified in RFC 4695 and implemented in Apple&#39;s Network MIDI in OS X) 
ipMIDI (and other &quot;raw&quot; solutions like Midi2Net) 
nmj provides a user defineable number of MIDI channels and is fully configureable through a simple java api. 

http://mac.freecode.com/projects/multimidicast
multimidicast sends and receives MIDI from ALSA sequencers over the network. It uses UDP multicast datagrams, and is thus subscriptionless and plug&#39;n&#39;play. It is designed to interoperate with the Windows software ipMIDI.



http://www.rncbc.org/drupal/node/13
Projects
http://sourceforge.net/projects/qjackctl
http://jackaudio.org
24 January, 2007 - 23:14 — rncbc QjackCtl - JACK Audio Connection Kit Qt GUI Interface 
QjackCtl is a simple Qt application to control the JACK sound server daemon, specific for the Linux Audio Desktop infrastructure. Written in C++ around the Qt4 toolkit for X11, most exclusively using Qt Designer. Provides a simple GUI dialog for setting several JACK daemon parameters, which are properly saved between sessions, and a way control of the status of the audio server daemon. With time, this primordial interface has become richer by including a enhanced patchbay and connection control features.
 
http://sourceforge.net/projects/qsynth
http://www.fluidsynth.org

Qsynth - A FluidSynth Qt GUI Interface 
Qsynth is a FluidSynth GUI front-end application written in C++ around the Qt4 toolkit using Qt Designer. Eventually it may evolve into a softsynth management application allowing the user to control and manage a variety of command line softsynth but for the moment it wraps the excellent FluidSynth. FluidSynth is a command line software synthesizer based on the Soundfont specification.
 
http://sourceforge.net/projects/qsampler
http://www.linuxsampler.org

Qsampler - A LinuxSampler Qt GUI Interface 
QSampler is a LinuxSampler GUI front-end application written in C++ around the Qt4 toolkit using Qt Designer. At the moment it just wraps as a client reference interface for the LinuxSampler Control Protocol (LSCP). LinuxSampler is a work in progress. The goal is to produce a free, open source pure software audio sampler with professional grade features, comparable to both hardware and commercial Windows/Mac software samplers. The initial platform will be Linux because it is one of the most promising open source multimedia operating systems. Thanks to various kernel patches and the Jack Audio Connection Kit, Linux is currently able to deliver rock solid sub-5 millisecond MIDI-to-Audio response.
 
http://sourceforge.net/projects/qtractor

Qtractor - An Audio/MIDI multi-track sequencer 
Qtractor is an Audio/MIDI multi-track sequencer application written in C++ with the Qt4 framework. Target platform is Linux, where the Jack Audio Connection Kit (JACK) for audio, and the Advanced Linux Sound Architecture (ALSA) for MIDI, are the main infrastructures to evolve as a fairly-featured Linux desktop audio workstation GUI, specially dedicated to the personal home-studio.
 
http://sourceforge.net/projects/qxgedit

QXGEdit - Qt XG Editor 
QXGEdit is a Qt GUI for editing MIDI System Exclusive files for XG devices (eg. Yamaha DB50XG).
 

http://sourceforge.net/projects/qmidictl
http://garage.maemo.org/projects/qmidictl

QmidiCtl - A MIDI Remote Controller via UDP/IP Multicast 
QmidiCtl is a MIDI remote controller application that sends MIDI data over the network, using UDP/IP multicast. Inspired by multimidicast (http://llg.cubic.org/tools) and designed to be compatible with ipMIDI for Windows (http://nerds.de). QmidiCtl has been primarily designed for the Maemo enabled handheld devices, namely the Nokia N900 and also being promoted to the Maemo Package repositories. Nevertheless, QmidiCtl may still be found effective as a regular desktop application as well.
 

http://sourceforge.net/projects/qmidinet
QmidiNet - A MIDI Network Gateway via UDP/IP Multicast 
QmidiNet is a MIDI network gateway application that sends and receives MIDI data (ALSA Sequencer) over the network, using UDP/IP multicast. Inspired by multimidicast (http://llg.cubic.org/tools) and designed to be compatible with ipMIDI for Windows (http://nerds.de).
 

http://llg.cubic.org/tools/
multimidicast sends and receives MIDI from Alsa sequencers over network.


http://portawiki.abnoctus.com/view/MidiOverIP.html
Linux has a couple of options that work fine, multimidicast is nice and simple and does exactly what I wanted it too.  Trouble is, the Windows side is a pay tool to be found at http://nerds.de, not free software.


https://github.com/teknopaul/midiOverIP
At the end of the day I have got somewhere, I now have Linux and Windows talking happily over midi. I can plug the hardware device in either PC and bang the keys and make that trigger whatever I like. Latency in Linux is exceptionally low, not so in Windows. Tomorrow&#39;s job is to get Windows midi to play the note when I tell it to not 100ms after.

http://openmuse.org/transport/mip_oview.html
Overview of Current Activity in MIDI Over IP
Significant current efforts include MWPP, DMIDI, NetMIDI, MIDIOverLAN+ and iMIDI:







-- echo -e &quot;\e#8&quot;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/7361370996916719120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2012/08/cross-platform-midi-network-sync.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/7361370996916719120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/7361370996916719120'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2012/08/cross-platform-midi-network-sync.html' title='cross platform midi network sync  between linux, windows and mac'/><author><name>Eliza</name><uri>http://www.blogger.com/profile/05155578998862492969</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-3114819599633167688</id><published>2011-05-11T10:59:00.002+02:00</published><updated>2011-05-11T10:59:18.953+02:00</updated><title type='text'>http://remysharp.com/2010/10/08/what-is-a-polyfill/</title><content type='html'>A polyfill, or polyfiller, is a piece of code (or plugin) that  provides the technology that you, the developer, expect the browser to  provide &lt;em&gt;natively&lt;/em&gt;. Flattening the API landscape if you will.&lt;br /&gt;
&lt;span id=&quot;more-628&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://alexsexton.com/&quot; title=&quot;AlexSexton.com&quot;&gt;Alex Sexton&lt;/a&gt; also &lt;a href=&quot;http://twitter.com/SlexAxton/status/25600963629&quot;&gt;classifies polyfilling as a form of Regressive Enhancement&lt;/a&gt;. I think that sums it up nicely.&lt;br /&gt;
&lt;a href=&quot;http://paulirish.com/&quot;&gt;Paul&lt;/a&gt; also &lt;a href=&quot;http://paulirish.com/i/7570.png&quot;&gt;defines it as&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;   A shim that mimics a future API providing fallback functionality to older browsers.&lt;br /&gt;
&lt;/blockquote&gt;&lt;h1&gt;Some Examples&lt;/h1&gt;Here&#39;s an example: &lt;code&gt;&lt;span class=&quot;pln&quot;&gt;sessionStorage&lt;/span&gt;&lt;/code&gt; is available in all the latest browsers (IE8 and upwards) but isn&#39;t in IE7 and below. &lt;br /&gt;
A polyfill can be used to &lt;a href=&quot;http://gist.github.com/350433&quot;&gt;plug the support&lt;/a&gt; for older browsers that don&#39;t provide &lt;code&gt;&lt;span class=&quot;pln&quot;&gt;sessionStorage&lt;/span&gt;&lt;/code&gt;. &lt;br /&gt;
Now with the polyfiller in place, as a developer I can rely on using  the Web Storage API (for sessions) and not have to feature test in my  code or fork to handle different situations. &lt;br /&gt;
Another example is providing canvas support in IE. This is really where the &lt;em&gt;poly&lt;/em&gt; part can be seen. If there&#39;s no native canvas, we can provide &lt;a href=&quot;http://blogs.msdn.com/b/delay/archive/2009/08/24/using-one-platform-to-build-another-html-5-s-canvas-tag-implemented-using-silverlight.aspx&quot;&gt;canvas support using Silverlight&lt;/a&gt;. If Silverlight isn&#39;t available, we can drop down to using VML using &lt;a href=&quot;http://code.google.com/p/explorercanvas/&quot;&gt;excanvas&lt;/a&gt;  (note that excanvas actually does also include a Silverlight bridge  which I&#39;d expect it would try first anyway). Using these two scripts  provides the developers with (faily) solid canvas backup should it not  be native in the browser. &lt;br /&gt;
&lt;h1&gt;Where it&#39;s from and where it&#39;s going&lt;/h1&gt;Earlier on this year I co-authored &lt;a href=&quot;http://introducinghtml5.com/&quot;&gt;Introducing HTML5&lt;/a&gt;  with Bruce Lawson. During the R&amp;amp;D time I was looking at shims and  techniques to plug missing APIs but they weren&#39;t quite progressive  enhancement. I wanted a single word that represented this idea that  there was a &#39;thing&#39; that could plug browsers but wasn&#39;t progressive  enhancement but wasn&#39;t graceful degradation either. &lt;br /&gt;
Polyfilling seemed to fit what I wanted to say (in my head!).&lt;br /&gt;
Ployfilla is a UK product known as Spackling Paste in the US. With  that in mind: think of the browsers as a wall with cracks in it. These  polyfillers help smooth out the cracks and give us a nice smooth wall of  browsers to work with. &lt;br /&gt;
I tentatively used the new term during my &lt;a href=&quot;http://remysharp.com/talks/#2010_html5conf&quot;&gt;HTML5 talk&lt;/a&gt; for &lt;a href=&quot;http://thinkvitamin.com/online-conferences/html5/&quot;&gt;ThinkVitamin&lt;/a&gt;  back in June, but I didn&#39;t want to push it for fear of trying too hard  to push a new term out. However I did sneak it in to Introducing HTML5,  which I can only assume lead to what happened recently. &lt;br /&gt;
Recently at &lt;a href=&quot;http://jsconf.us/2010/&quot;&gt;JS Conf&lt;/a&gt;, &lt;a href=&quot;http://paulirish.com/&quot; title=&quot;Paul Irish&quot;&gt;Paul Irish&lt;/a&gt; released a &lt;a href=&quot;http://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills&quot;&gt;list of polyfills and shims&lt;/a&gt; - an awesome resource list to save us developers the pain of older browsers. &lt;br /&gt;
It looks like polyfilling has some legs, so let&#39;s start using them,  and dragging older (and even the newer) browsers up to our expectations.</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/3114819599633167688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2011/05/httpremysharpcom20101008what-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/3114819599633167688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/3114819599633167688'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2011/05/httpremysharpcom20101008what-is.html' title='http://remysharp.com/2010/10/08/what-is-a-polyfill/'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-311140016302560106</id><published>2011-04-11T13:38:00.002+02:00</published><updated>2011-04-11T13:38:47.340+02:00</updated><title type='text'>sqlite</title><content type='html'>&lt;!--p &lt;--&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Create an SQLite DB in the file test.sqlite &lt;br /&gt;
&lt;br /&gt;
$db = new SQLiteDatabase(&quot;test.sqlite&quot;); &lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;query(&quot;BEGIN; &lt;br /&gt;
&lt;br /&gt;
CREATE TABLE dbtest(id INTEGER PRIMARY KEY, article CHAR(50),price FLOAT(10)); &lt;br /&gt;
&lt;br /&gt;
INSERT INTO dbtest (article,price) VALUES(&#39;Book1&#39;,&#39;12.99&#39;); &lt;br /&gt;
&lt;br /&gt;
INSERT INTO dbtest (article,price) VALUES(&#39;Book2&#39;,&#39;15.23&#39;); &lt;br /&gt;
&lt;br /&gt;
COMMIT;&quot;); &lt;br /&gt;
&lt;br /&gt;
$result = $db-&amp;gt;query(&quot;SELECT * FROM dbtest&quot;); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Read and show the DB we created &lt;br /&gt;
&lt;br /&gt;
echo &quot;&lt;br /&gt;
&lt;pre&gt;&quot;; 

printf(&quot;+------------+------------------------------------------+\n&quot;); 

printf(&quot;
Price 
Article 
\n&quot;); 

printf(&quot;+------------+------------------------------------------+\n&quot;); 

while ($result-&amp;gt;valid()) { 

$row = $result-&amp;gt;current(); 

printf(&quot;
%10s 
%-40s 
\n&quot;,$row[&#39;price&#39;],$row[&#39;article&#39;]); 

$result-&amp;gt;next(); 

} 

printf(&quot;+------------+------------------------------------------+\n&quot;); 

echo &quot;&lt;/pre&gt;&quot;; &lt;br /&gt;
&lt;br /&gt;
unset($db); &lt;br /&gt;
&lt;br /&gt;
phpinfo(); &lt;br /&gt;
&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- map{ map{tr|10|# |;print} split//,sprintf&quot;%.8b\n&quot;,$_} unpack&#39;C*&#39;,unpack&#39;u*&#39;,&quot;5`#8&amp;lt;3&#39;X`&#39;#8^-@`&amp;lt;-CPP`#8V/C8`&quot;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/311140016302560106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2011/04/sqlite.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/311140016302560106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/311140016302560106'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2011/04/sqlite.html' title='sqlite'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-1179037399938250264</id><published>2011-01-26T16:31:00.001+01:00</published><updated>2011-01-26T16:36:56.899+01:00</updated><title type='text'>phpack A simple archiver / packer base64 encoder for php</title><content type='html'>I needed some functions to &#39;zip&#39; a dir, or better unzip an inline dir from one script.&lt;br /&gt;
With these functions it became pretty trivial to take a directory, read all files from it and save them somewhere else.&lt;br /&gt;
&lt;br /&gt;
This to make it possible to have a sort of php installer that unarchives an inline directory structure into a real dir which can be distributed as a single .php file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;1 &lt;br /&gt;
2 $sourcedir = &#39;example/source&#39;;&lt;br /&gt;
3 $destdir = &#39;example/dest&#39;;&lt;br /&gt;
4 unpackdir(packdir($sourcedir),$destdir);&lt;br /&gt;
5 function packdir($td = &#39;.&#39;) {&lt;br /&gt;
6 $rv = array();&lt;br /&gt;
7 //print &quot;\ndoing $td&quot;;&lt;br /&gt;
8 foreach (scandir($td) as $tf) {&lt;br /&gt;
9 if ($tf != &#39;.&#39; &amp;amp;&amp;amp; $tf != &#39;..&#39;) {&lt;br /&gt;
10 if (is_dir($td.&#39;/&#39;.$tf)) {&lt;br /&gt;
11 $rv[$tf] = packdir($td.&#39;/&#39;.$tf);&lt;br /&gt;
12 } else {&lt;br /&gt;
13 $rv[$tf] = base64_encode(file_get_contents($td.&#39;/&#39;.$tf));&lt;br /&gt;
14 }&lt;br /&gt;
15 }&lt;br /&gt;
16 }&lt;br /&gt;
17 return($rv);&lt;br /&gt;
18 }&lt;br /&gt;
19 function unpackdir($filestruct,$cd = &#39;.&#39;) {&lt;br /&gt;
20 foreach ($filestruct as $fn =&amp;gt; $fv) {&lt;br /&gt;
21 if (is_array($fv)) {&lt;br /&gt;
22 createdir($cd.&#39;/&#39;.$fn);&lt;br /&gt;
23 unpackdir($fv,$cd.&#39;/&#39;.$fn);&lt;br /&gt;
24 }else{&lt;br /&gt;
25 unpackfile($fv,$cd,$fn);&lt;br /&gt;
26 }&lt;br /&gt;
27 }&lt;br /&gt;
28 }&lt;br /&gt;
29 function createdir($dirname) {&lt;br /&gt;
30 print &quot;\nCreating $dirname.&quot;;&lt;br /&gt;
31 mkdir($dirname);&lt;br /&gt;
32 }&lt;br /&gt;
33 function unpackfile($fv,$cd,$fn) {&lt;br /&gt;
34 $fh = fopen($cd . &#39;/&#39; . $fn,&#39;w+&#39;);&lt;br /&gt;
35 if ($fh) {&lt;br /&gt;
36 print_r($fh);&lt;br /&gt;
37 fwrite($fh,base64_decode($fv));&lt;br /&gt;
38 fclose($fh);&lt;br /&gt;
39 print &quot;\nUnpacked $cd/$fn into $cd with &quot;.strlen($fv).&quot; bytes of base64.\n&quot;;&lt;br /&gt;
40 } else {&lt;br /&gt;
41 print &quot;couldn&#39;t open $fn in write modus&quot;;&lt;br /&gt;
42 }&lt;br /&gt;
43 }&lt;br /&gt;
44&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/1179037399938250264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2011/01/phpack-simple-archiver-packer-base64.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1179037399938250264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1179037399938250264'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2011/01/phpack-simple-archiver-packer-base64.html' title='phpack A simple archiver / packer base64 encoder for php'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-5204923334028320435</id><published>2010-12-31T14:42:00.002+01:00</published><updated>2010-12-31T14:42:23.122+01:00</updated><title type='text'>openDNS pitfalls</title><content type='html'>Relayman writes &quot;Joe Mailer wanted to download an iTunes movie recently and his Apple TV told him it would take two hours. When he switched his DNS resolver settings, the download time dropped to less than 20 seconds. Apparently, iTunes content is served by Akamai which uses geolocation based on the IP address of the DNS request to determine which server should provide his content. When you use Google or Open DNS to resolve the Apple domain name, all the requests to Akamai appear to be coming from the same location and they&#39;re all directed to the same server pool, overloading that pool and causing the slow downloads. The solution: Be wary of using Google or Open DNS when downloading iTunes files or similar large files. Use your own ISP&#39;s DNS servers instead or run your own resolving DNS server.&quot;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/5204923334028320435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/12/opendns-pitfalls.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/5204923334028320435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/5204923334028320435'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/12/opendns-pitfalls.html' title='openDNS pitfalls'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-3225008397971146132</id><published>2010-12-29T03:48:00.000+01:00</published><updated>2010-12-29T03:48:34.419+01:00</updated><title type='text'>Better google sync by putting m.google.com as EXCHANGE (??!)</title><content type='html'>&lt;div id=&quot;wrapper&quot;&gt;&lt;div id=&quot;leaderboard&quot;&gt;&lt;br /&gt;
&lt;script src=&quot;http://static.fmpub.net/zone/3096&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
    (function(){
    var bsa = document.createElement(&#39;script&#39;);
    bsa.type = &#39;text/javascript&#39;;
    bsa.async = true;
    bsa.src = &#39;//s3.buysellads.com/ac/bsa.js&#39;;
    (document.getElementsByTagName(&#39;head&#39;)[0]||document.getElementsByTagName(&#39;body&#39;)[0]).appendChild(bsa);
    })();
    
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;masthead&quot;&gt;&lt;div id=&quot;navigation&quot;&gt;&lt;div id=&quot;main-nav&quot;&gt;&lt;div id=&quot;logo&quot;&gt;&lt;a href=&quot;http://cultofmac.com/&quot;&gt;&lt;img alt=&quot;Cult of Mac&quot; height=&quot;85&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/themes/cult2011/images/cult-of-mac-logo.png&quot; width=&quot;85&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div id=&quot;social-nav&quot;&gt;&lt;ul&gt;&lt;li id=&quot;sn-twitter&quot;&gt;&lt;a href=&quot;http://www.twitter.com/cultofmac&quot;&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;sn-facebook&quot;&gt;&lt;a href=&quot;http://www.facebook.com/cultofmac&quot;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;sn-rss&quot;&gt;&lt;a href=&quot;feed://feeds.feedburner.com/cultofmac/bFow&quot;&gt;RSS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;ul id=&quot;main-nav-bar&quot;&gt;&lt;li id=&quot;mn-home&quot;&gt;&lt;a href=&quot;http://www.blogger.com/&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;mn-news&quot;&gt;&lt;a href=&quot;http://www.blogger.com/category/news&quot;&gt;News&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;mn-reviews&quot;&gt;&lt;a href=&quot;http://www.blogger.com/category/reviews&quot;&gt;Reviews&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;mn-how-tos&quot;&gt;&lt;a href=&quot;http://www.blogger.com/category/how-to&quot;&gt;How-tos&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;mn-apps&quot;&gt;&lt;a href=&quot;http://apps.cultofmac.com/&quot;&gt;Apps&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;mn-deals&quot;&gt;&lt;a href=&quot;http://www.blogger.com/daily-deals-from-dealmaccom&quot;&gt;Deals&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;mn-forums&quot;&gt;&lt;a href=&quot;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;mn-groups&quot;&gt;&lt;a href=&quot;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;mn-register&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/wordpress/wp-login.php?action=register&quot;&gt;Register&lt;/a&gt; / &lt;a href=&quot;http://www.cultofmac.com/wordpress/wp-login.php&quot;&gt;Login&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;stories-nav&quot;&gt;&lt;div id=&quot;search-container&quot;&gt;&lt;form action=&quot;http://cultofmac.com/&quot; id=&quot;search-form&quot; method=&quot;get&quot; name=&quot;search-form&quot;&gt;&lt;input class=&quot;search-box&quot; id=&quot;s&quot; name=&quot;s&quot; onclick=&quot;(this.value=&#39;&#39;)&quot; type=&quot;text&quot; value=&quot;Search Cult of Mac...&quot; /&gt;&lt;/form&gt;&lt;/div&gt;&lt;div id=&quot;tip-box&quot;&gt;&lt;a href=&quot;mailto:news@cultofmac.com?subject=News%20tip&quot;&gt;» Send us a tip&lt;/a&gt;&lt;/div&gt;&lt;h2&gt;Top stories&lt;/h2&gt;&lt;br /&gt;
&lt;div id=&quot;top-stories-c&quot;&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-74946&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/sweet-japanese-iphone-cookies-selling-like-hotcakes/74946&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Sweet! Japanese iPhone Cookies Selling Like Hotcakes!&quot;&gt;Sweet! Japanese iPhone Cookies Selling Like Hotcakes!&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/sweet-japanese-iphone-cookies-selling-like-hotcakes/74946&quot; title=&quot;Sweet! Japanese iPhone Cookies Selling Like Hotcakes!&quot;&gt;&lt;img alt=&quot;Sweet! Japanese iPhone Cookies Selling Like Hotcakes!&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/icookie-250x150.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-73192&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/why-2010-was-the-year-mac-gaming-got-real/73192&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Why 2010 Was The Year Mac Gaming Got Real&quot;&gt;Why 2010 Was The Year Mac Gaming Got Real&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/why-2010-was-the-year-mac-gaming-got-real/73192&quot; title=&quot;Why 2010 Was The Year Mac Gaming Got Real&quot;&gt;&lt;img alt=&quot;Why 2010 Was The Year Mac Gaming Got Real&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/145949-valve_teaser_800-250x150.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-73656&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/15-of-our-favorite-mac-os-x-app-icons-in-2010-year-in-review/73656&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to 15 Of Our Favorite Mac OS X App Icons In 2010 [Year in Review]&quot;&gt;15 Of Our Favorite Mac OS X App Icons In 2010 [Year in Review]&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/15-of-our-favorite-mac-os-x-app-icons-in-2010-year-in-review/73656&quot; title=&quot;15 Of Our Favorite Mac OS X App Icons In 2010 [Year in Review]&quot;&gt;&lt;img alt=&quot;15 Of Our Favorite Mac OS X App Icons In 2010 [Year in Review]&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/Screen-shot-2010-12-18-at-19.52.00-250x150.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-74744&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/are-you-an-apple-fanboy-yet/74744&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Are You an Apple Fanboy Yet?&quot;&gt;Are You an Apple Fanboy Yet?&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/are-you-an-apple-fanboy-yet/74744&quot; title=&quot;Are You an Apple Fanboy Yet?&quot;&gt;&lt;img alt=&quot;Are You an Apple Fanboy Yet?&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/fans-250x150.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div id=&quot;tags-nav&quot;&gt;Filter posts by: &lt;a href=&quot;http://www.blogger.com/tag/Mac&quot;&gt;Mac&lt;/a&gt; &lt;a href=&quot;http://www.blogger.com/tag/ios&quot;&gt;iOS&lt;/a&gt; &lt;a href=&quot;http://www.blogger.com/tag/hardware&quot;&gt;Hardware&lt;/a&gt; &lt;a href=&quot;http://www.blogger.com/tag/software&quot;&gt;Software&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div id=&quot;content-c&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;single-article-page&quot; id=&quot;main-content&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;post&quot; id=&quot;post-33530&quot;&gt;&lt;h2&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to How To Get MobileMe For Free Using Google and Dropbox [How To]&quot;&gt;How To Get MobileMe For Free Using Google and Dropbox [How To]&lt;/a&gt;&lt;/h2&gt;&lt;div class=&quot;post-meta&quot;&gt;&lt;div class=&quot;fbshare_button&quot; id=&quot;fb_share_1&quot;&gt;&lt;a href=&quot;http://www.facebook.com/sharer.php&quot; name=&quot;fb_share&quot; share_url=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530&quot; type=&quot;button_count&quot;&gt;Share&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;script src=&quot;http://static.ak.fbcdn.net/connect.php/js/FB.Share&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;div class=&quot;tweetmeme_button&quot;&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;20&quot; scrolling=&quot;no&quot; src=&quot;http://api.tweetmeme.com/button.js?url=http%3A%2F%2Fwww.cultofmac.com%2Fhow-to-get-mobileme-for-free-using-google-and-dropbox-how-to%2F33530&amp;amp;style=compact&amp;amp;b=2&quot; width=&quot;90&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class=&quot;comments-link&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530#comments&quot; title=&quot;Comment on How To Get MobileMe For Free Using Google and Dropbox [How To]&quot;&gt;43 comments »&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;meta-author&quot;&gt;By Jose Gutierrez (7:00 am, Mar. 19, 2010)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/cultofmac-mm&quot; rel=&quot;attachment wp-att-33531&quot;&gt;&lt;img alt=&quot;MobileMe for Free.&quot; class=&quot;size-full wp-image-33531 alignnone&quot; height=&quot;463&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/uploads/2010/03/cultofmac-mm.jpg&quot; width=&quot;615&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
A couple of weeks ago I canceled my MobileMe account. Why? Because it didn’t do the one thing I wanted it to do: share my calendar with my wife so we could coordinate our busy lives. That’s all.&lt;br /&gt;
I love MobileMe’s email, calendar, contact syncing (especially on the iPhone) and even iDisk. I gave Apple a year to improve it, but nothing happpened, so I switched.&lt;br /&gt;
Here’s how to recreate all of MobileMe’s features for FREE (except one) and how I use it to sync my iMac, MacBook and two iPhones.&lt;br /&gt;
&lt;span id=&quot;more-33530&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h3&gt;Email&lt;/h3&gt;After 15 years of loyalty to Yahoo, I made the switch to the evil corporation known as Google. I had a &lt;a href=&quot;http://www.gmail.com/&quot;&gt;Gmail&lt;/a&gt; account before but decided to start fresh. I opened a new Google account and now use Gmail. My wife has been using Gmail for a while now so that part was previously done. Gmail is good, but then again, it’s hard to mess up email.&lt;br /&gt;
&lt;h3&gt;Contacts&lt;/h3&gt;Still in the beta phase, Google Contacts has worked wonders for me. I can edit contacts on my Macs and they show up within seconds on my iPhone. I tried editing on the iPhone but it doesn’t seem to like that. I recommend you DO NOT sync your contacts on your computers. Instead, export your contacts as a vCard and import them into Google Contacts. It will be much cleaner and easier that way.&lt;br /&gt;
First, export your contacts from Address Book (&lt;strong&gt;File&amp;gt;Export…&amp;gt;Export Group vCard&lt;/strong&gt;). This will create a vCard. Save it to the desktop.&lt;br /&gt;
&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/addressbook-export-2&quot; rel=&quot;attachment wp-att-33533&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-33533&quot; height=&quot;274&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/uploads/2010/03/addressbook-export1.png&quot; width=&quot;620&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Next, head over to Google Contacts so you can import that vCard. Look in the bottom right-hand corner and click on &lt;strong&gt;Import&lt;/strong&gt;.&lt;br /&gt;
&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/google-import&quot; rel=&quot;attachment wp-att-33534&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-33534&quot; height=&quot;144&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/uploads/2010/03/google-import.png&quot; width=&quot;266&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Clicking on Import will bring up an Import dialog as shown below. Click on &lt;strong&gt;Choose File&lt;/strong&gt; and select the vCard on your desktop. Voila! Now all of your contacts will be available via Google Sync. Winner, winner, chicken dinner!&lt;br /&gt;
&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/google-import&quot; rel=&quot;attachment wp-att-33534&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/contact-import&quot; rel=&quot;attachment wp-att-33535&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-33535&quot; height=&quot;253&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/uploads/2010/03/contact-import.jpg&quot; width=&quot;552&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Calendars&lt;/h3&gt;Google Calendar makes it so easy to share a calendar.  I made a calendar, sent an email to my wife, she added it to her account and presto: shared calendar. Now I can add an event from my work computer, iPhone or any of my Macs, and my wife will see it almost instantly on her iPhone. Magic!&lt;br /&gt;
Let’s setup iCal to make use of your brand-spanking-new shared calendar. Open iCal, click on the &lt;strong&gt;iCal menu&lt;/strong&gt; and select &lt;strong&gt;Preferences&lt;/strong&gt;. When the Preferences window comes up, click on &lt;strong&gt;Accounts&lt;/strong&gt; and then the &lt;strong&gt;plus symbol&lt;/strong&gt; to add an account. You should get the window shown below. Enter your Google account information and your Google calendar will be imported into iCal. It will sync automatically and you are ready to add events.&lt;br /&gt;
&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/ical-account&quot; rel=&quot;attachment wp-att-33536&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-33536&quot; height=&quot;431&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/uploads/2010/03/ical-account.png&quot; width=&quot;574&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Below is how your new Google calendar will look. Easy huh?&lt;br /&gt;
&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/ical-end&quot; rel=&quot;attachment wp-att-33537&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-33537&quot; height=&quot;106&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/uploads/2010/03/ical-end.png&quot; width=&quot;252&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;iDisk&lt;/h3&gt;While I barely used iDisk, I did want to keep its functionality for the rare times I need it. My solution is &lt;a href=&quot;http://www.dropbox.com/&quot;&gt;Dropbox&lt;/a&gt;, an online storage service that offers 2GB of space for free (the same as the basic MobileMe storage solution). Just &lt;a href=&quot;http://www.dropbox.com/install&quot;&gt;download the app to all your Macs&lt;/a&gt; and don’t forget to &lt;a href=&quot;http://www.dropbox.com/iphoneapp&quot;&gt;download the iPhone app&lt;/a&gt;. After that, the setup is a breeze. Dropbox adds a folder to the Finder that looks and works just like iDisk. Here it is below the Applications and Documents folder.&lt;br /&gt;
&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/dropbox-finder&quot; rel=&quot;attachment wp-att-33538&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-33538&quot; height=&quot;414&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/uploads/2010/03/dropbox-finder.png&quot; width=&quot;498&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Again, this 2GB solution is free. Need more space? Pay a small fee for more storage. A great application.&lt;br /&gt;
&lt;h3&gt;Get Everything In Sync&lt;/h3&gt;Next, I setup my iPhone to sync with all my Google applications and Dropbox. Dropbox was easy enough. I just downloaded the free app and that was done. As for Google, here is how to setup Google Sync on your iPhone:&lt;br /&gt;
1. Open the &lt;strong&gt;Settings&lt;/strong&gt; application on your iPhone’s Home screen.&lt;br /&gt;
&lt;br /&gt;
2. Open &lt;strong&gt;Mail, Contacts, Calendars&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
3. Tap &lt;strong&gt;Add Account…&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
4. Select &lt;strong&gt;Microsoft Exchange&lt;/strong&gt;.&lt;br /&gt;
&lt;img alt=&quot;settings mail calendar contacts on iphone&quot; src=&quot;http://www.google.com/help/hc/images/mobile_138740a_en.gif&quot; /&gt; &lt;img alt=&quot;add mail calendar contacts account on iphone&quot; src=&quot;http://www.google.com/help/hc/images/mobile_138740b_en.gif&quot; /&gt; &lt;img alt=&quot;microsoft exchange&quot; src=&quot;http://www.google.com/help/hc/images/mobile_138740c_en.gif&quot; /&gt;&lt;br /&gt;
5. In the &lt;strong&gt;Email&lt;/strong&gt; field, enter your full Google Account email address. If you use a Gmail address, you may see an “Unable to verify certificate” warning when you proceed to the next step. Just hit &lt;strong&gt;Accept/OK&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
6. Leave the &lt;strong&gt;Domain&lt;/strong&gt; field blank.&lt;br /&gt;
&lt;br /&gt;
7. Enter your full Google Account email address as the &lt;strong&gt;Username&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
8. Enter your Google Account password as the &lt;strong&gt;Password&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
9. Tap &lt;strong&gt;Next&lt;/strong&gt; at the top of your screen.&lt;br /&gt;
&lt;br /&gt;
9a. Choose &lt;strong&gt;Cancel&lt;/strong&gt; if the &lt;strong&gt;Unable to Verify Certificate&lt;/strong&gt; dialog appears.&lt;br /&gt;
&lt;br /&gt;
10. When the new &lt;strong&gt;Server&lt;/strong&gt; field appears, enter m.google.com.&lt;br /&gt;
&lt;br /&gt;
11. Press &lt;strong&gt;Next&lt;/strong&gt; at the top of your screen again.&lt;br /&gt;
&lt;img alt=&quot;exchange domain&quot; src=&quot;http://www.google.com/help/hc/images/mobile_138740h_en.gif&quot; /&gt; &lt;img alt=&quot;exchange server&quot; src=&quot;http://www.google.com/help/hc/images/mobile_138740d_en.gif&quot; /&gt;&lt;br /&gt;
12. Select the Google services (&lt;strong&gt;Mail, Calendar, and Contacts&lt;/strong&gt;) you want to sync. You want to use them all, trust me!&lt;br /&gt;
13. Choose to &lt;strong&gt;Delete Existing Contacts&lt;/strong&gt; during the Google Sync install when prompted. If you choose to keep existing contacts, it will sync the contents of the “All Contacts” group instead. That will just make a big mess. Remember, Google Contacts already has all the contacts you need since you imported them already.&lt;br /&gt;
&lt;img alt=&quot;iphone exchange mail calendars contacts&quot; src=&quot;http://www.google.com/help/hc/images/mobile_138740e_en.gif&quot; /&gt; &lt;img alt=&quot;exchange keep on my iphone&quot; src=&quot;http://www.google.com/help/hc/images/mobile_138740i_keep_content_en.gif&quot; /&gt;&lt;br /&gt;
14. Lastly, visit http://m.google.com/sync on your iPhone and login. You should see your device there. Select your device and then select which calendars you wish to sync (should be all). Select “&lt;strong&gt;Save&lt;/strong&gt;” and now you are done. Give your calendar a few minutes to fully sync before you check it. You should be good to go now on your iPhone.&lt;br /&gt;
Now you have all the functionality of MobileMe (with the exception of Find My iPhone) for FREE, thanks to Google and Dropbox!&lt;br /&gt;
It took me a couple of days to work out the bugs in my system but so far I have no regrets. It is even easier if you have an email forwarding system setup. Then all you have to do is change the email address you want your email forwarded to. Otherwise, you just have a lot of email settings to update.&lt;br /&gt;
If you have any problems, please post them in the comments below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;pages-box&quot;&gt;&lt;div class=&quot;next=box&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;category-data&quot;&gt;Posted in &lt;a href=&quot;http://www.cultofmac.com/category/how-to&quot; rel=&quot;category tag&quot; title=&quot;View all posts in How-To&quot;&gt;How-To&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/category/mobileme&quot; rel=&quot;category tag&quot; title=&quot;View all posts in MobileMe&quot;&gt;MobileMe&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/category/news&quot; rel=&quot;category tag&quot; title=&quot;View all posts in News&quot;&gt;News&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/category/tips-tricks&quot; rel=&quot;category tag&quot; title=&quot;View all posts in Tips &amp;amp; Tricks&quot;&gt;Tips &amp;amp; Tricks&lt;/a&gt; | Tagged: &lt;a href=&quot;http://www.cultofmac.com/tag/dropbox&quot; rel=&quot;tag&quot;&gt;dropbox&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/tag/gmail&quot; rel=&quot;tag&quot;&gt;gmail&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/tag/google&quot; rel=&quot;tag&quot;&gt;google&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/tag/google-calendar&quot; rel=&quot;tag&quot;&gt;google calendar&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/tag/google-contacts&quot; rel=&quot;tag&quot;&gt;google contacts&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/tag/ical&quot; rel=&quot;tag&quot;&gt;iCal&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/tag/imac&quot; rel=&quot;tag&quot;&gt;iMac&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/tag/iphone&quot; rel=&quot;tag&quot;&gt;iPhone&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/tag/macbook&quot; rel=&quot;tag&quot;&gt;Macbook&lt;/a&gt;, &lt;a href=&quot;http://www.cultofmac.com/tag/mobileme&quot; rel=&quot;tag&quot;&gt;MobileMe&lt;/a&gt; |  &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=8194035553301014782#single-ads-container&quot;&gt;&lt;strong&gt;Comment on this article&lt;/strong&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;subscribe-strap&quot;&gt;&lt;strong&gt;If you enjoyed this article&lt;/strong&gt;:&lt;br /&gt;
&lt;a class=&quot;linkRSS&quot; href=&quot;feed://feeds.feedburner.com/cultofmac/bFow&quot;&gt;Subscribe via RSS&lt;/a&gt; or &lt;a href=&quot;http://feedburner.google.com/fb/a/mailverify?uri=cultofmac&amp;amp;loc=en_US&quot;&gt;email&lt;/a&gt;, or follow us on &lt;a class=&quot;linkFacebook&quot; href=&quot;http://www.facebook.com/cultofmac&quot;&gt;Facebook&lt;/a&gt; and &lt;a class=&quot;linkTwitter&quot; href=&quot;http://www.twitter.com/cultofmac&quot;&gt;Twitter&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;similarPostsC&quot;&gt;&lt;h3&gt;Related posts from Cult of Mac&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-set-up-push-gmail-on-your-iphoneipod-touch/16966&quot; rel=&quot;bookmark&quot; title=&quot;September 22, 2009&quot;&gt;How-To: Set Up Push GMail On Your iPhone/iPod Touch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/email-on-the-ipad-the-good-the-bad-and-the-ugly/36689&quot; rel=&quot;bookmark&quot; title=&quot;April 4, 2010&quot;&gt;Email on the iPad: The Good, the Bad and the Ugly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/this-weeks-must-have-ios-apps-tango-video-calls-pdf-expert-plaintext/61499&quot; rel=&quot;bookmark&quot; title=&quot;October 2, 2010&quot;&gt;This Week’s Must-Have iOS Apps: Tango Video Calls, PDF Expert &amp;amp; PlainText!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/report-ios-4-0-and-ical-creating-date-headaches/48384&quot; rel=&quot;bookmark&quot; title=&quot;June 25, 2010&quot;&gt;Report: iOS 4.0 and iCal Creating Date Headaches&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/apple-updates-mobileme-idisk-app-to-include-multitasking-more/49654&quot; rel=&quot;bookmark&quot; title=&quot;July 6, 2010&quot;&gt;Apple Updates MobileMe iDisk App To Include Multitasking &amp;amp; More&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;bio-box&quot;&gt;&lt;h3 class=&quot;section-header&quot;&gt;About the author&lt;/h3&gt;&lt;img alt=&quot;jagphotog&quot; class=&quot;avatar&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/themes/cult2011/images/jagphotog.jpg&quot; /&gt;&lt;br /&gt;
&lt;strong&gt;Jose Gutierrez&lt;/strong&gt; is a San Diego-based photographer who loves technology, specifically anything Apple (yes, even the Apple TV, thanks to Boxee!). &lt;a href=&quot;http://www.twitter.com/Jose_Gutierrez&quot;&gt;Follow me on Twitter&lt;/a&gt;.&lt;br /&gt;
&lt;a href=&quot;mailto:jose@jagphotog.com&quot;&gt;Email the author&lt;/a&gt; | Read more posts by &lt;a href=&quot;http://www.cultofmac.com/author/jagphotog/&quot; title=&quot;Posts by Jose Gutierrez&quot;&gt;Jose Gutierrez&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;post-separator&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;mc-mpu-container&quot; id=&quot;single-ads-container&quot;&gt;&lt;br /&gt;
&lt;script src=&quot;http://static.fmpub.net/zone/3095&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;post-separator&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h2 class=&quot;com-h&quot;&gt;Comments for How To Get MobileMe For Free Using Google and Dropbox [How To]&lt;/h2&gt;&lt;br /&gt;
&lt;h3 id=&quot;comments&quot;&gt;43 comments&lt;/h3&gt;&lt;br /&gt;
&lt;div class=&quot;navigation&quot;&gt;&lt;div class=&quot;alignleft&quot;&gt;&lt;/div&gt;&lt;div class=&quot;alignright&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ol class=&quot;commentlist&quot;&gt;&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333647&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333647&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/2180933920cf517856f1dec760160832?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;PDM777&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333647&quot;&gt;&lt;br /&gt;
March 19, 2010 at 7:10 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I have Mobile Me and my wife and I share everything…contacts, calendar, files…I am running one computer with VISTA, one with Windows 7, one with XP and two iPhones and they are all synced together.  Not sure what you are talking about.  We even have reminder alarms go off simultaniuly on our iPhones if we so choose.  So to me mobile me is a little over priced, but worth every penny.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333649&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333649&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/a0358eaa16fabf96e7d14119624b2ffb?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Tom K&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333649&quot;&gt;&lt;br /&gt;
March 19, 2010 at 7:23 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
The ‘Find my iPhone’ feature alone is worth the 67 EUR I pay each year for MobileMe. Good guide though, thanks.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333652&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333652&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/d6b1441c2eb036f56bf5535cca14919d?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;KMW333&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333652&quot;&gt;&lt;br /&gt;
March 19, 2010 at 7:26 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Although I have moved my emails to Google and now use Google calendar for everything (which can be a bear to set up in iCal), the one thing that really keeps me hooked on MobileMe is iPhone insurance.  It is imperative to me that if I lose my iPhone that I can find it, lock it or erase it remotely.  That alone is worth the price (although I wish the price were less).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333654&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333654&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/d715acb8ef45e177303d9df1ef39cf8e?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Justin&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333654&quot;&gt;&lt;br /&gt;
March 19, 2010 at 7:32 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Let’s not forget about ALL of the web hosting/photo publishing/seemless integration with iWeb that MobileMe offers as well.  You seem to have totally disregarded those aspects of MM.  Plus, iDisk gives you loads more storage than 2gb.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333656&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333656&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/c8b470fa64b9ba5060048e7417467580?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Gregor&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333656&quot;&gt;&lt;br /&gt;
March 19, 2010 at 7:34 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
HI!&lt;br /&gt;
I believe that Jose had a mobileme family account and he used the main account and his wife an under account. These does not work with sharing the calendar.&lt;br /&gt;
And if the wife is using the same mobileme account the sharing of calendar works like charme – but there is no possibility to have own contacts for her – all is sharing now.&lt;br /&gt;
That is a little pitty on mobileme :-(&lt;br /&gt;
Cheers&lt;br /&gt;
&lt;br /&gt;
Gregor&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333657&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333657&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/1b8f2ab7d5716b5b7b3f7e558aa734bc?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Matt&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333657&quot;&gt;&lt;br /&gt;
March 19, 2010 at 7:35 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
OK..maybe it’s just me….but I already have an exchange account for work on my iPhone and it allows only one exchange account sync.&lt;br /&gt;
I want:&lt;br /&gt;
&lt;br /&gt;
- Exchange Mail&lt;br /&gt;
&lt;br /&gt;
- Exchange Calendar&lt;br /&gt;
&lt;br /&gt;
- Gmail&lt;br /&gt;
&lt;br /&gt;
- Google Contacts&lt;br /&gt;
Thoughts on how to do this?&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333662&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333662&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/377b11d50d4c360077956803b76bf8a9?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;&lt;a class=&quot;url&quot; href=&quot;http://theexperiment.ca/&quot; rel=&quot;external nofollow&quot;&gt;devo&lt;/a&gt;&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333662&quot;&gt;&lt;br /&gt;
March 19, 2010 at 7:53 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Not only is the “Find My iPhone” feature worth it (not to mention the sending of messages and remotely erasing the iPhone if it is stolen), but the Back to My Mac is amazing.&lt;br /&gt;
The ability to log into my Airport Extreme without having to worry about changing IP addresses, or logging into the computer at work from home and using the Share Screen feature is invaluable to me. I can even print documents from home on the office printer. &lt;br /&gt;
Despite it’s buggery, I’m sticking with MobileMe for these features alone.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333665&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333665&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/28ef7ef1d6b774ca2ab47f8b0f39c00b?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Celso Dantas&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333665&quot;&gt;&lt;br /&gt;
March 19, 2010 at 7:56 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
The problem that I had with gmail + iphone sync is that gmail don’t support photos. So when I synced everythig, I lost all my photos on my phone. =/&lt;br /&gt;
Problem nÂº2 is: gmail add to your contact everyone you make contact. At the and of the day my iPhone will be full of useless contacts.&lt;br /&gt;
And the only problem I don’t use mobile me is that the webmail doesn’t group e-mails by thread. I’m already addicted to gmail’s e-mails style and it’s hard to lose that.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333682&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333682&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/e169cbd21d87a4ec7caefda42d3fedd2?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;jmetts&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333682&quot;&gt;&lt;br /&gt;
March 19, 2010 at 8:46 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I have tried many ways to fully ditch MobileMe for my needs, and hoped this would be it, but it isn’t.  &lt;br /&gt;
I’m not a fan of Google Contacts, but love Gmail, and as the article says, do not allow Google Contacts to auto sync.  I have had so many pains with the auto syncing with Google Contacts.  &lt;br /&gt;
Also, since Google Contacts is 100% connected to Google Talk, you better never delete all Google Contacts to start from scratch with a fresh vCard import.  You will have to send authorization requests to all Gtalk friends again (which will annoy them), and at some point, it won’t simply re-add them until they actually communicate with you via email.&lt;br /&gt;
In any case, the address book syncing is the main use I get out of MobileMe and I have yet to find a good solution that mimics this part of MobileMe properly.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333683&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333683&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/0d368b33cd2fb610b56275e62a7016b3?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Derik&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333683&quot;&gt;&lt;br /&gt;
March 19, 2010 at 8:47 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Regarding Contacts: Or you could just turn on Google Contact syncing in Address Book.  Not only are your contacts in Google with far fewer steps, you can keep your Mac in sync with your iPhone.&lt;br /&gt;
Regarding Calendars: Yeah, that works great until you have more than a single calendar.  Take a screenshot of what iCal looks like after you start adding your other calendars.  It looks ridiculous.  This isn’t an iCal limitation as using Yahoo calendars over CalDAV doesn’t look this way.&lt;br /&gt;
You say you’ve recreated all the features except Find My Phone.  How about MobileMe syncing (in the raw)?  You can’t sync your preferences.  Yojimbo can’t be synced across machines (and no, using Dropbox is not an acceptable way to do that).&lt;br /&gt;
Also (and I’m not making a big deal about this because you can find replacements), what about photo publishing?  Website hosting?  Back to My Mac?&lt;br /&gt;
You might have been better served by keeping the scope of this a little more limited than claiming “ALL”.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333688&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333688&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/f70716adfd1aaf33d3675f8c30a8054e?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Maxx Wyler&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333688&quot;&gt;&lt;br /&gt;
March 19, 2010 at 9:02 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Scratching my head….I have been sharing calendars using Mobile me for years -and with users outside of my account.  Publish your cal from within ical – send the url to the person you want to share it with and they subscribe.  Pretty simple.  Nice guide though, but it is 14 steps I would rather not have to deal with. I prefer the flawless syncing of Mobile Me plus the find my phone feature is worth the price of mobile me. (I lost my phone at the mall once and retrieved it via Mobile Me)  The guide does not have any recommendations as to the  flawless syncing of iphoto, iweb and the iwork collaboration and back to my mac.  Then there is the fact that I really don’t want or trust Google with my information&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333692&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333692&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/cdf3203fe8b8e564567aa517195fa944?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;AdamBitTheApple&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333692&quot;&gt;&lt;br /&gt;
March 19, 2010 at 9:09 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
For syncing iCal and Address Book between two Macs, I finally decided on Fruux.com. Set it up last night actually. Easy and no problems so far. The only caveat is that it doesn’t sync to my iPhone yet, although it’s on their development roadmap. I sync my iPhone by USB often enough to update apps and music that this isn’t a big drawback for me.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333696&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333696&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/0bc2f2a3e5e479e3448c28e38f2acf11?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Don Pope&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333696&quot;&gt;&lt;br /&gt;
March 19, 2010 at 9:14 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I’ve been using this exact combination since last summer and it works great. &lt;br /&gt;
I’ve had no problems at all syncing my contacts, and I haven’t used the vCard method. I just synced the Mac Address Book to Google contacts and then the iPhone with Google Contacts. &lt;br /&gt;
@Celso&lt;br /&gt;
&lt;br /&gt;
I’m syncing my iPhone to “My Contacts” , not to “All Contacts”. I don’t know if this is the default or if there’s a setting to make it happen (it was a while ago) but I’m not getting all the junk that you mention.&lt;br /&gt;
@Derik&lt;br /&gt;
&lt;br /&gt;
For photos, Google has the excellent and free Picasa Web Albums. There’s a bunch of iPhone apps to upload and manage your albums (some free, some not).&lt;br /&gt;
TeamViewer is a free (for personal use) replacement for Back To My Mac. The best part is that it works with both Macs and PCs.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333712&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333712&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/f70716adfd1aaf33d3675f8c30a8054e?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Maxx Wyler&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333712&quot;&gt;&lt;br /&gt;
March 19, 2010 at 10:02 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
@Luke  Open Finder, Right click on the toolbar and select “Customize Toolbar” Drag the New Folder icon to the toolbar.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333716&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333716&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/9824b140a57d29ed50b36dcb10237dc1?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Wade&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333716&quot;&gt;&lt;br /&gt;
March 19, 2010 at 10:11 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
What about Back to my Mac? I know there are other free apps for accomplishing this same functionality. But many inexperienced users would balk at VNC and other solutions. MobileMe’s back to my Mac feature is seamless and elegant, and makes accessing files or sharing your screen on your home computer while at work child’s play.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333723&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333723&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/5f123b9a704506734cc67d3d5c3b88ed?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Nate&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333723&quot;&gt;&lt;br /&gt;
March 19, 2010 at 10:36 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Here is my dilemma, and it appears there are a lot of MobileMe users on here so I’m hoping someone can help.  &lt;br /&gt;
I’ve tried this Gmail method, and the calendar’s just don’t sync up reliably, and the contacts do if I edit them on the website, but not if I edit them on the phone (or maybe vise versa, but you get the point).  I want to switch fully over to MobileMe 1) B/c of the reliable syncing and 2) the Find My Iphone feature.  &lt;br /&gt;
But… for the life of me, I can’t get my contacts to import correctly into MobileMe – I’ve gone through my entire list in the .csv file to make sure everything is formatted correctly.  But when I export from Google (or Yahoo for that matter) to the vCard and import into MobileMe, it either leaves out all of the physical address, or more importantly all of the email addresses – depending on who I’m using to export.  If I could get that to work without having to re-enter 400 contacts manually into MobileMe, that would be the ultimate solution… also, I have a PC with Win7, not a Mac with iCal or Address Book or any of that.  &lt;br /&gt;
Good article for those that can get it to work reliably!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333726&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333726&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/b029af628a498a9418ac4d8c577de000?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;&lt;a class=&quot;url&quot; href=&quot;http://www.toxicspark.com/&quot; rel=&quot;external nofollow&quot;&gt;Andrew Macdonald&lt;/a&gt;&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333726&quot;&gt;&lt;br /&gt;
March 19, 2010 at 10:42 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I did try MobileMe for the three-month trial but ended up cancelling it. It wasn’t of real value to me. &lt;br /&gt;
The syncing of contacts etc was good. I don’t need calendar syncing, and I have 4 external hard-drives for backup plus i use Dropbox every now and again. &lt;br /&gt;
The ONLY thing i miss from the MobileMe service is the .me email address. But even then, it wasn’t all that valuable. &lt;br /&gt;
IF Apple still allowed people to pay for usage of a .mac email address, id have happily paid the price just for that, but since thats not an option, im not interested.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333751&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333751&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/6965225faaba8123e059eaac23570b59?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;TheDukester&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333751&quot;&gt;&lt;br /&gt;
March 19, 2010 at 11:32 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Mine runs out on March 31, and I won’t be renewing. I’ve been using the service forever â€” I was an iTools fanatic way back in the day â€” but it really has seemed like an Apple Tax for at least the last two or three years now.&lt;br /&gt;
Simply put: the service is WAY over-priced and is easily replicated with many FREE services that are readily available elsewhere. It’s really that simple. I really don’t even think I’ll miss it that much.&lt;br /&gt;
So long, MobileMe … chop your price by $75 and I might consider coming back.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333759&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333759&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/0d368b33cd2fb610b56275e62a7016b3?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Derik&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333759&quot;&gt;&lt;br /&gt;
March 19, 2010 at 11:49 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
@Don Pope, That is true, and hence why I said it was no big deal.  That said, this article glosses over that.  This is a guide to replacing Select parts of MobileMe, not all.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333772&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333772&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/7c4e659bfbcf3e8b7358a037df361794?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Manabenz&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333772&quot;&gt;&lt;br /&gt;
March 19, 2010 at 12:13 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I myself moved away from MobileMe to Google with pretty much exactly the same setup as you’ve outlined here. However, I ran into two problems which have forced me back into MobileMe’s arms:&lt;br /&gt;
- Eventually syncing contacts with Google will result in you losing any dates you have against any contact, for e.g. birthdays, anniversaries, etc.&lt;br /&gt;
- On the iPhone it uses up the 1 crucial account you can have for Exchange. I need the Exchange account for work stuff.&lt;br /&gt;
Manabenz&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333798&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333798&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/bcd58f3d8973dc8c83946b57f9ebd1da?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Ryan&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333798&quot;&gt;&lt;br /&gt;
March 19, 2010 at 1:04 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
My MobileMe account runs out in Sept. and unless Apple comes out with a price cut, or something to add significant value to it, I am going to let it go by the wayside.  I’ve been debating keeping it for the use with Iweb and starting a family blog, but that is down the road and there are plenty of free options like WordPress, etc… which will fit the bill.&lt;br /&gt;
Someone on here referred to it as an Apple tax, and I am starting to kind of feel the same way.  There is part of me wanting to switch to pages, numbers, keynote and use the iwork.com and mobile me, but why should I continue to fork over outrageous sums of money for what comparable products will do and sometimes do better with just another login.&lt;br /&gt;
I’m torn, but obviously not alone on thinking about ditching it.&lt;br /&gt;
The find my iphone was a cool feature, but we ditched T for Verizon and picked up Droids – pretty slick and I have not missed my iphone since.  Do that many people really lose track of their phones?  I have two kids, two jobs (own a business) and never managed to lose mine…  really?&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333817&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333817&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/5f123b9a704506734cc67d3d5c3b88ed?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Nate&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333817&quot;&gt;&lt;br /&gt;
March 19, 2010 at 1:53 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
@Ryan – I agree with you completely… honestly, the remote wipe feature seems more important to me than the find feature.  But, I’m sure the small percentage of people that have actually used the find feature and had success, they’d probably say it’s worth every penny!  &lt;br /&gt;
I think MobileMe is worth the cost if you have an iPhone AND a Mac desktop/laptop where everything truly syncs seemlessly.  You’re essentially paying $8 and change for 20 gb of web space, push syncing for contacts/calendars/email, “cloud” and desktop access to each of those, plus all the photo/video stuff, PLUS the Find my iphone/remote wipe features.  It’s really not a bad value at all, but nobody uses it to it’s fullest.  Maybe they need some tiered pricing… but that is definitely not Apple’s M.O.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-333844&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333844&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/c802c5261c0627e0a34e604d14b5e772?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Tyromind&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333844&quot;&gt;&lt;br /&gt;
March 19, 2010 at 2:58 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I’ve been using this setup for months now, and it works great. My wife and I share calendars and it all syncs through google. I make a change on my iPhone, and it’s on hers within seconds, I think I have the macs sync every 15 min so next time they sync it’s there as well.&lt;br /&gt;
Only reason I would get MobileMe is for the findmyiphone, but I’ve been unwilling to pay for it so far.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-333959&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-333959&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/950191564cbfcc143d855e51fa7cf4ac?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;marsha&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-333959&quot;&gt;&lt;br /&gt;
March 19, 2010 at 8:25 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
save for goog sych to iphone&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-334160&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-334160&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/997431672d9f2c1fd1427cdd64801c8b?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;DCJ001&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-334160&quot;&gt;&lt;br /&gt;
March 20, 2010 at 11:57 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
For those who have a preference for MobileMe, and would like to pay less than what Apple charges for it, it is available at Amazon.com for about $69 US, and about the same on eBay.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-334234&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-334234&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/fb7e440e888f81d09c994479a2e6a534?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;&lt;a class=&quot;url&quot; href=&quot;http://www.humanrightscity.com/&quot; rel=&quot;external nofollow&quot;&gt;Hugh M.&lt;/a&gt;&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-334234&quot;&gt;&lt;br /&gt;
March 20, 2010 at 5:20 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I am someone who uses his mobileme account a lot. An amateur, I am able to put up a usable website and have Apple host it (www.humanrightscity.com). I can put up photos and movies and files that can be downloaded easily. If you get the Amazon.com discount for MobileMe, it is a remarkable buy. But if one doesn’t need the website services, or the email…sure, it might be a waste of money.&lt;br /&gt;
&lt;br /&gt;
But as for me, I don’t think it is possible to get a better deal than MobileMe for those of us who use Apple’s integration to make sites.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-334249&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-334249&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/daf9db05bee952ed1a31115c902e27b4?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Jarrett&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-334249&quot;&gt;&lt;br /&gt;
March 20, 2010 at 6:11 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Gmail won’t be a viable option until they fix the issue with not being able search mail on the server.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-334532&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-334532&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/016fbe5e2e83d0be347b325b6510fbc2?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Steve K.&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-334532&quot;&gt;&lt;br /&gt;
March 21, 2010 at 2:23 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Well one thing MobileMe doesn’t give you is Google’s fantastic Gmail spam filter.  I still haven’t found anything that works as good – and it’s free.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-334784&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-334784&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/83c59c31587fcefd89d930b825f95a51?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Tom&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-334784&quot;&gt;&lt;br /&gt;
March 22, 2010 at 11:51 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I’m waiting for a solution to bookmark syncing over the air without MobileMe.  I can’t live without my bookmarks from my computers and iPhone being synched.  I know this may sound dumb to a lot of people, but that’s just what I’m used to and don’t want to go without it.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-334957&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-334957&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/339b5694c201925a06096ac8bc2958ec?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Don&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-334957&quot;&gt;&lt;br /&gt;
March 22, 2010 at 8:47 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Ok.. I’m loving it so far and am testing it out. &lt;br /&gt;
But.. If you are on your mac and add a contact to address book, how can you sync that up to google then your phone? &lt;br /&gt;
Also, iphone exchange is not mirroring what I do in Apple mail?? &lt;br /&gt;
Thanks for the help!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-334984&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-334984&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/4ab1e758a47eea0b4ba0f125bb5ecd82?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Tommy&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-334984&quot;&gt;&lt;br /&gt;
March 22, 2010 at 10:06 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
So what if the second computer is running OSX 10.5.8 on a PowerPC iBook G4? When I go into adding the calendar, I do not get the same options. I get&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
&lt;br /&gt;
Username:&lt;br /&gt;
&lt;br /&gt;
Password:&lt;br /&gt;
&lt;br /&gt;
Server Options:&lt;br /&gt;
How do I configure that, Mr. Wizard?&lt;br /&gt;
Thanks!!!&lt;br /&gt;
&lt;br /&gt;
Tommy&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-339778&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-339778&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/7f0e65b9265ad8c0169d94e8c5f54b46?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;tknice&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-339778&quot;&gt;&lt;br /&gt;
March 31, 2010 at 8:24 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Dropbox is awesome.  It’s one of those free things that you’ll wonder how you ever lived without.  I still have a few referrals left on my account for your free 250 megs.&lt;br /&gt;
&lt;a href=&quot;https://www.dropbox.com/referrals/NTI0MTY5ODc5&quot; rel=&quot;nofollow&quot;&gt;https://www.dropbox.com/referrals/NTI0MTY5ODc5&lt;/a&gt;&lt;br /&gt;
Thanks and have a great day!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-339974&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-339974&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/5678ad4c3d9abff97c3bb07b803639bf?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;jdc&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-339974&quot;&gt;&lt;br /&gt;
March 31, 2010 at 4:16 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
MM is always on sale. I bought it last year for $62 at Amazon, and Im pretty sure it hovers around $75ish the rest of the time — $100ish for the family pack.&lt;br /&gt;
$6 a month aint bad for all that it does and as easy as it makes those things to do&lt;br /&gt;
I have seen a few bits about a major overhaul for 2010, hope its everything and more.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-340102&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-340102&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/4a3bf89f8833d12cd713d8efbd3b7b83?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;hmurchison&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-340102&quot;&gt;&lt;br /&gt;
March 31, 2010 at 11:07 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I think the article would be more aptly named  “How to get a fraction of MobileMe features for free using Google and Dropbox” &lt;br /&gt;
It’s pretty simple really.  If you don’t use enough of the MobileMe features then don’t buy it.   Me personally I like having my bookmarks sync, web space to use with iWeb and iPhoto and knowing that I can locate and erase my phone if it gets lost/stolen. &lt;br /&gt;
With Mobileme reviews I keep seeing the same myopic view about how a few free tools will save me a whopping $6 a month.  Glad you guys’ free time comes cheap.  Mine doesn’t.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-354453&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-354453&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/000691499469aa8409b70457c3e56564?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;&lt;a class=&quot;url&quot; href=&quot;http://pttugasforum.co.cc/&quot; rel=&quot;external nofollow&quot;&gt;pttugas ultimate&lt;/a&gt;&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-354453&quot;&gt;&lt;br /&gt;
April 24, 2010 at 10:35 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Ah it is a good post your blog bring me a lot of good ideias.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-364164&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-364164&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/f160e1960d0daa828f9f9b027c41220b?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;&lt;a class=&quot;url&quot; href=&quot;http://nazarov.com/&quot; rel=&quot;external nofollow&quot;&gt;Sergey Nazarov&lt;/a&gt;&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-364164&quot;&gt;&lt;br /&gt;
May 11, 2010 at 7:20 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Apple may offer MobileMe for free… Wait&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.electronista.com/articles/10/05/10/mobileme.would.give.iphone.edge.over.android/&quot; rel=&quot;nofollow&quot;&gt;http://www.electronista.com/articles/10/05/10/mobileme.would.give.iphone.edge.over.android/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-366486&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-366486&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/7cced1b799ac94503dff61325789fd44?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Chris&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-366486&quot;&gt;&lt;br /&gt;
May 15, 2010 at 1:17 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I tried MobileMe but not being able to share (and by share I mean all parties not only being able to see each others calendars but also make changes) calendars was crucial. My wife and I are REALTORs and I needed for her to be able to update appointments on my calendar while I was out doing showings. Google Calendar was the only system that allowed this.&lt;br /&gt;
I have moved over to Google Apps for my email, contacts and calendar and it has worked perfect. For email I am able to search the server for emails. For contacts, it even syncs the photos from my iPhone to Google back to my MacBook. For calendars, our iPhones sync to each other in less than 1 minute.&lt;br /&gt;
Coming from an IT and Developer background working for a large corporation, not having an Exchange server was hard to deal with. I now have all the same features I used on the Exchange server for free with Google. Add all these features with Google Apps allowing you to have your own domain name with these features and life is good again.&lt;br /&gt;
As for remote wipe and location I use iLocalis. You can watch and control your phone remotely, send a text message to your phone and have it call you, route phone calls and text messages to your other phone incase it was stolen and wipe it. &lt;br /&gt;
You will need to Jailbreak your iPhone but really that’s what makes the iPhone so great. If Apple didn’t make us Jailbreak to get all these great features than there would really be no competition. Maybe one day they will realize it’s our damn phones and leave them alone after we pay for them. Can you imagine what would happen if Apple tried to pull the same crap on their computers of telling you what software you could or could not install on it. Someone needs to stand up for us when it comes to our iPhones.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-368219&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-368219&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/cb88f5285ec01591174ad6ae19a42525?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Bob S.&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-368219&quot;&gt;&lt;br /&gt;
May 18, 2010 at 8:40 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I currently sync contacts, calendars and email between an iMac and an iPod touch using MobileMe. What I would like to add is syncing my Outlook calendar (not email or addresses) from my work PC (Win XP). If that requires Google helping me out thats fine although if MobileMe can do it…even better. Anyone out there that can help with this?&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-376818&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-376818&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/2b2e68567a4199dc833667a869369930?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Paul g&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-376818&quot;&gt;&lt;br /&gt;
June 10, 2010 at 6:21 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
I don’t seem to get the ‘add account’ option when i click on iCal preferences?&lt;br /&gt;
All i have is a ‘general’ and ‘advanced’ icon………I’m currently using BusySync to sync iCal to Google Calendar&lt;br /&gt;
Letâ€™s setup iCal to make use of your brand-spanking-new shared calendar. Open iCal, click on the iCal menu and select Preferences. When the Preferences window comes up, click on Accounts and then the plus symbol to add an account. You should get the window shown below. Enter your Google account information and your Google calendar will be imported into iCal. It will sync automatically and you are ready to add events.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-379110&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-379110&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/9dc99051e6656949d2bc120b81a83c5a?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Earl&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-379110&quot;&gt;&lt;br /&gt;
June 17, 2010 at 12:02 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Love the instant/hassle free syncing of Mobile Me across all devices.  I also use a great program called Spanning Sync for getting my gmail and iCal calendars all in sync.  Make a change in iCal, it’s on my google calendar and vice versa.  It also allows contact sync/management between Address Book and Gmail contacts…pretty sure they have a free trial version.  For me, the combo of Mobile Me and Spanning Sync has worked wonderfully going on 2 years now&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-394858&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-394858&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://1.gravatar.com/avatar/b78435c69ff6927c135c294609021232?s=32&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;Augusto Sales&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-394858&quot;&gt;&lt;br /&gt;
July 29, 2010 at 1:16 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
MobileMe sucks!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment odd alt thread-odd thread-alt depth-1&quot; id=&quot;comment-407774&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-407774&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/cfd5e7304353d4e354e2d4ff7860d70d?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;prashant&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-407774&quot;&gt;&lt;br /&gt;
August 18, 2010 at 6:03 am&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
Am new to iphone. Thanks.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;comment even thread-even depth-1&quot; id=&quot;comment-422215&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;comment-body&quot; id=&quot;div-comment-422215&quot;&gt;&lt;div class=&quot;comment-author vcard&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;avatar avatar-32 photo&quot; height=&quot;32&quot; src=&quot;http://0.gravatar.com/avatar/29f21e4f97da75ba33c10f76f7504a9d?s=32&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&amp;amp;r=G&quot; width=&quot;32&quot; /&gt;  &lt;cite class=&quot;fn&quot;&gt;&lt;a class=&quot;url&quot; href=&quot;http://bakarichavanu.net/&quot; rel=&quot;external nofollow&quot;&gt;Bakari&lt;/a&gt;&lt;/cite&gt; &lt;span class=&quot;says&quot;&gt;says:&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;comment-meta commentmetadata&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-get-mobileme-for-free-using-google-and-dropbox-how-to/33530/comment-page-1#comment-422215&quot;&gt;&lt;br /&gt;
September 16, 2010 at 1:18 pm&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;
If you cancel your MobileMe, do you get to retain your MobileMe email address?&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;reply&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;div class=&quot;navigation&quot;&gt;&lt;div class=&quot;alignleft&quot;&gt;&lt;/div&gt;&lt;div class=&quot;alignright&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;sidebar&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;mpu-c sb-sc&quot;&gt;&lt;br /&gt;
&lt;script src=&quot;http://static.fmpub.net/zone/3094&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;apptap-box sb-sc&quot;&gt;&lt;h2&gt;Search for iPhone apps&lt;/h2&gt;&lt;form action=&quot;javascript:window.open( &#39;http://apps.cultofmac.com/search/&#39; + escape( document.appsearch.q.value ), &#39;_self&#39; );&quot; id=&quot;appsearch&quot; method=&quot;get&quot; name=&quot;appsearch&quot;&gt;&lt;input class=&quot;apptap-field&quot; id=&quot;query&quot; name=&quot;q&quot; type=&quot;text&quot; value=&quot;&quot; /&gt;&lt;input class=&quot;apptap-submit&quot; id=&quot;appsearch-submit&quot; type=&quot;submit&quot; value=&quot;Search&quot; /&gt;&lt;/form&gt;&lt;div class=&quot;apptap-linksPanel&quot;&gt;&lt;a href=&quot;http://apps.cultofmac.com/category/Popular&quot;&gt;Currently Most Popular&lt;/a&gt;&lt;span class=&quot;apptap-separator&quot;&gt;|&lt;/span&gt;&lt;a href=&quot;http://apps.cultofmac.com/&quot;&gt;All iPhone Apps&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;apptap-icon-row&quot;&gt;&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=0&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=1&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=1&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=2&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=2&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=3&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=3&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=4&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=4&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;apptap-icon-row&quot;&gt;&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=5&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=5&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=6&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=6&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=7&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=7&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=8&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=8&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;item=9&quot; rel=&quot;nofollow&quot;&gt;&lt;img class=&quot;apptap-icon&quot; src=&quot;http://apps.cultofmac.com/highlight?category=Popular&amp;amp;platform=iphone&amp;amp;safe=true&amp;amp;type=img&amp;amp;item=9&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;sb-sc&quot; id=&quot;ad-block-125&quot;&gt;&lt;div class=&quot;bsarocks bsap_dad59472b2fc15c41b4d9eafdbf9578b&quot; id=&quot;bsap_1248695&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;dealmac-widget sb-sc&quot;&gt;&lt;h2&gt;Money-saving deals from DealMac.com&lt;/h2&gt;&lt;script language=&quot;javascript&quot;&gt;
    &lt;!--
    var dealnews_vars = {
    iframe: 1,
    format: &quot;sidebar&quot;,
    site_id: 1,
    cats: &quot;41,144,254,384,491,528,574&quot;,
    refcode: &quot;cultofmac-sidebar&quot;,
    height: 400,
    width: 300,
    textsize: &quot;11px&quot;,
    color: &quot;#000000&quot;,
    bgcolor: &quot;#ffffff&quot;,
    titlesize: &quot;12px&quot;,
    linkcolor: &quot;#30309a&quot;,
    titleweight: &quot;normal&quot;,
    linkdeco: &quot;none&quot;,
    altcolor: &quot;#f0f0ff&quot;,
    seperatorcolor: &quot;#ccf&quot;,
    hide_snippet: 0,
    direct_links: 1,
    new_window: 0
    }
    //--&gt;
    
&lt;/script&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; src=&quot;http://content.dealnews.com/synd/2.1/deals.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;sb-sc&quot;&gt;&lt;h2&gt;Latest Cult of Mac reviews&lt;/h2&gt;&lt;div class=&quot;sidebar-loop-c&quot;&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-&amp;lt;?php the_ID(); ?&amp;gt;&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/elementcase-vapor4-for-iphone-4-style-over-substance-review/63986&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to ElementCase’s Vapor4 iPhone 4 Case Is Style Over Substance [Review]&quot;&gt;ElementCase’s Vapor4 iPhone 4 Case Is Style Over Substance [Review]&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/elementcase-vapor4-for-iphone-4-style-over-substance-review/63986&quot; title=&quot;ElementCase’s Vapor4 iPhone 4 Case Is Style Over Substance [Review]&quot;&gt;&lt;img alt=&quot;ElementCase’s Vapor4 iPhone 4 Case Is Style Over Substance [Review]&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/photo-250x150.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-&amp;lt;?php the_ID(); ?&amp;gt;&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/8mm-vintage-camera-app-brings-you-awesome-retro-video-effects-review/74758&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to 8MM Vintage Camera App Brings You Awesome Retro Video Effects [Review]&quot;&gt;8MM Vintage Camera App Brings You Awesome Retro Video Effects [Review]&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/8mm-vintage-camera-app-brings-you-awesome-retro-video-effects-review/74758&quot; title=&quot;8MM Vintage Camera App Brings You Awesome Retro Video Effects [Review]&quot;&gt;&lt;img alt=&quot;8MM Vintage Camera App Brings You Awesome Retro Video Effects [Review]&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/8mmappicon-250x150.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-&amp;lt;?php the_ID(); ?&amp;gt;&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/ceramic-speakers-by-joey-roth-a-porcelain-god-review/74648&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Ceramic Speakers by Joey Roth: A Porcelain God? [Review]&quot;&gt;Ceramic Speakers by Joey Roth: A Porcelain God? [Review]&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/ceramic-speakers-by-joey-roth-a-porcelain-god-review/74648&quot; title=&quot;Ceramic Speakers by Joey Roth: A Porcelain God? [Review]&quot;&gt;&lt;img alt=&quot;Ceramic Speakers by Joey Roth: A Porcelain God? [Review]&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/tony-speaker-16-250x150.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-&amp;lt;?php the_ID(); ?&amp;gt;&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/2010s-best-iphone-and-ipad-accessories-year-in-review/73759&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to 2010′s Best iPhone and iPad Accessories [Year in Review]&quot;&gt;2010′s Best iPhone and iPad Accessories [Year in Review]&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/2010s-best-iphone-and-ipad-accessories-year-in-review/73759&quot; title=&quot;2010′s Best iPhone and iPad Accessories [Year in Review]&quot;&gt;&lt;img alt=&quot;2010′s Best iPhone and iPad Accessories [Year in Review]&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/pogosylus-250x150.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ac&quot;&gt;&lt;a href=&quot;http://www.blogger.com/category/reviews/&quot;&gt;More reviews »&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;sb-sc&quot;&gt;&lt;h2&gt;Latest Cult of Mac how-tos&lt;/h2&gt;&lt;div class=&quot;sidebar-loop-c&quot;&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-&amp;lt;?php the_ID(); ?&amp;gt;&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/cure-what-ails-your-mac-best-of-macrx-year-in-review/73120&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Cure What Ails Your Mac – Best of MacRx [Year in Review]&quot;&gt;Cure What Ails Your Mac – Best of MacRx [Year in Review]&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/cure-what-ails-your-mac-best-of-macrx-year-in-review/73120&quot; title=&quot;Cure What Ails Your Mac – Best of MacRx [Year in Review]&quot;&gt;&lt;img alt=&quot;Cure What Ails Your Mac – Best of MacRx [Year in Review]&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/Best-of-MacRx-250x150.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-&amp;lt;?php the_ID(); ?&amp;gt;&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/mobileme-login-woes-change-expiring-apple-id-account-passwords-how-to/72635&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to MobileMe Login Woes — Change Expiring Apple ID Account Passwords [How To]&quot;&gt;MobileMe Login Woes — Change Expiring Apple ID Account Passwords [How To]&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/mobileme-login-woes-change-expiring-apple-id-account-passwords-how-to/72635&quot; title=&quot;MobileMe Login Woes — Change Expiring Apple ID Account Passwords [How To]&quot;&gt;&lt;img alt=&quot;MobileMe Login Woes — Change Expiring Apple ID Account Passwords [How To]&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/appleidreset-250x150.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-&amp;lt;?php the_ID(); ?&amp;gt;&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-disable-in-app-purchases/72481&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Save Yourself the Unwanted Bill and Disable In-App Purchases [How To]&quot;&gt;Save Yourself the Unwanted Bill and Disable In-App Purchases [How To]&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-disable-in-app-purchases/72481&quot; title=&quot;Save Yourself the Unwanted Bill and Disable In-App Purchases [How To]&quot;&gt;&lt;img alt=&quot;Save Yourself the Unwanted Bill and Disable In-App Purchases [How To]&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/In-App-Purchase-250x150.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;top-story-c&quot; id=&quot;post-&amp;lt;?php the_ID(); ?&amp;gt;&quot;&gt;&lt;h3&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-consolidate-your-iphoto-library-and-remove-duplicates-macrx/71987&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to How To Consolidate Your iPhoto Library and Remove Duplicates [MacRx]&quot;&gt;How To Consolidate Your iPhoto Library and Remove Duplicates [MacRx]&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;top-story-image-c&quot;&gt;&lt;a href=&quot;http://www.cultofmac.com/how-to-consolidate-your-iphoto-library-and-remove-duplicates-macrx/71987&quot; title=&quot;How To Consolidate Your iPhoto Library and Remove Duplicates [MacRx]&quot;&gt;&lt;img alt=&quot;How To Consolidate Your iPhoto Library and Remove Duplicates [MacRx]&quot; class=&quot;thumbnail &quot; src=&quot;http://images.cultofmac.s3.amazonaws.com/wordpress/wp-content/uploads/2010/12/iPhoto-Ad-Infinitum-250x150.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ac&quot;&gt;&lt;a href=&quot;http://www.blogger.com/category/how-to/&quot;&gt;More how-tos »&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;iphone-widget sb-sc&quot;&gt;&lt;object align=&quot;middle&quot; classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0&quot; height=&quot;220&quot; id=&quot;iphone_widget_cult_2&quot; width=&quot;300&quot;&gt;         &lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot;&gt;        &lt;param name=&quot;allowFullScreen&quot; value=&quot;false&quot;&gt;        &lt;param name=&quot;movie&quot; value=&quot;http://www.cultofmac.com/ads/iphone_widget_cult_2.swf&quot;&gt;        &lt;param name=&quot;quality&quot; value=&quot;high&quot;&gt;        &lt;param name=&quot;bgcolor&quot; value=&quot;#ffffff&quot;&gt;        &lt;embed src=&quot;http://www.cultofmac.com/ads/iphone_widget_cult_2.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#FFFFFF&quot; width=&quot;300&quot; height=&quot;220&quot; name=&quot;iphone_widget_cult_2&quot; align=&quot;middle&quot; allowscriptaccess=&quot;sameDomain&quot; allowfullscreen=&quot;false&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.adobe.com/go/getflashplayer&quot;&gt;       &lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;sb-sc aiso-ad&quot;&gt;&lt;h2&gt;We&#39;re 100% Solar Powered&lt;/h2&gt;Cult of Mac&#39;s website is 100% solar powered, thanks to green hosting from &lt;a href=&quot;http://www.aiso.net/&quot;&gt;AISO.net&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.aiso.net/index.html?af=lkahney&amp;amp;bn=36&quot;&gt;&lt;img alt=&quot;AISO.net - solar powered web hosting&quot; height=&quot;38&quot; src=&quot;http://www.cultofmac.com/ads/aiso-logo.gif&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;sb-sc fm-badge-ad&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;https://advertisers.federatedmedia.net/explore/view/cultofmac&quot;&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://static.fmpub.net/assets/badges/FM_Tech_Advertise_Vertical.jpg&quot; width=&quot;100&quot; /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div id=&quot;footer-c&quot;&gt;&lt;div id=&quot;footer&quot;&gt;&lt;div id=&quot;footer-header&quot;&gt;&lt;div id=&quot;footer-logo&quot;&gt;&lt;a href=&quot;http://www.blogger.com/&quot;&gt;&lt;img alt=&quot;Cult of Mac&quot; height=&quot;85&quot; src=&quot;http://www.cultofmac.com/wordpress/wp-content/themes/cult2011/images/footer-logo.png&quot; width=&quot;204&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div id=&quot;footer-search&quot;&gt;&lt;form action=&quot;http://cultofmac.com/&quot; id=&quot;footer-search-form&quot; method=&quot;get&quot; name=&quot;footer-search-form&quot;&gt;&lt;input class=&quot;search-box&quot; id=&quot;sf&quot; name=&quot;s&quot; onclick=&quot;(this.value=&#39;&#39;)&quot; type=&quot;text&quot; value=&quot;Search Cult of Mac...&quot; /&gt;&lt;/form&gt;&lt;/div&gt;&lt;div id=&quot;footer-social-nav&quot;&gt;&lt;ul&gt;&lt;li id=&quot;f-sn-twitter&quot;&gt;&lt;a href=&quot;http://www.twitter.com/cultofmac&quot;&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;f-sn-facebook&quot;&gt;&lt;a href=&quot;http://www.facebook.com/cultofmac&quot;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;f-sn-rss&quot;&gt;&lt;a href=&quot;feed://feeds.feedburner.com/cultofmac/bFow&quot;&gt;RSS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;footer-content-c&quot;&gt;&lt;div id=&quot;footer-site-info&quot;&gt;&lt;h2&gt;Cult of Mac&lt;/h2&gt;Cult of Mac is daily news website that tracks Apple and the people who use its products. Our goal is to provide timely news, insightful analysis, helpful how-tos and honest product reviews about Apple and Apple-related products. &lt;a href=&quot;http://www.blogger.com/about/&quot;&gt;Find out more about Cult of Mac&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Contact Cult of Mac&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;» &lt;a href=&quot;mailto:news@cultofmac.com&quot;&gt;Email a tip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;» &lt;a href=&quot;http://www.blogger.com/advertising-with-cultofmac-com&quot;&gt;Advertising info&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;» &lt;a href=&quot;mailto:webmaster@cultofmac.com&quot;&gt;Email the webmaster&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div id=&quot;footer-latest-news&quot;&gt;&lt;h2&gt;Latest news&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/report-apple-to-introduce-cdma-ipad-in-2011/74840&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Report: Apple to Introduce CDMA iPad in 2011&quot;&gt;Report: Apple to Introduce CDMA iPad in 2011&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/analyst-ipad-rules-the-holidays-as-the-only-game-in-town/74831&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Analyst: iPad Rules the Holidays as “The Only Game in Town”&quot;&gt;Analyst: iPad Rules the Holidays as “The Only Game in Town”&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/apple-yes-we-sold-1m-appletvs-last-week/74827&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Apple: Yes, We Sold 1M AppleTVs Last Week&quot;&gt;Apple: Yes, We Sold 1M AppleTVs Last Week&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/new-ios-app-will-help-the-speechless-speak/74816&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to New iOS App Will Help The Speechless Speak&quot;&gt;New iOS App Will Help The Speechless Speak&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div id=&quot;footer-latest-reviews&quot;&gt;&lt;h2&gt;Latest reviews&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/elementcase-vapor4-for-iphone-4-style-over-substance-review/63986&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to ElementCase’s Vapor4 iPhone 4 Case Is Style Over Substance [Review]&quot;&gt;ElementCase’s Vapor4 iPhone 4 Case Is Style Over Substance [Review]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/8mm-vintage-camera-app-brings-you-awesome-retro-video-effects-review/74758&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to 8MM Vintage Camera App Brings You Awesome Retro Video Effects [Review]&quot;&gt;8MM Vintage Camera App Brings You Awesome Retro Video Effects [Review]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/ceramic-speakers-by-joey-roth-a-porcelain-god-review/74648&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Ceramic Speakers by Joey Roth: A Porcelain God? [Review]&quot;&gt;Ceramic Speakers by Joey Roth: A Porcelain God? [Review]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cultofmac.com/2010s-best-iphone-and-ipad-accessories-year-in-review/73759&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to 2010′s Best iPhone and iPad Accessories [Year in Review]&quot;&gt;2010′s Best iPhone and iPad Accessories [Year in Review]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div id=&quot;footer-tags&quot;&gt;&lt;h2&gt;Top Cult of Mac tags&lt;/h2&gt;&lt;ul id=&quot;f-tags-l&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/category/news&quot;&gt;News&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/category/reviews&quot;&gt;Reviews&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/category/how-to&quot;&gt;How-tos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/category/daily-deals&quot;&gt;Deals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/category/opinions&quot;&gt;Opinions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/apple&quot;&gt;Apple&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/mac&quot;&gt;Mac&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/ios&quot;&gt;iOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/steve-jobs&quot;&gt;Steve Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul id=&quot;f-tags-r&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/iphone&quot;&gt;iPhone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/ipad&quot;&gt;iPad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/ipod&quot;&gt;iPod&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/macbook&quot;&gt;MacBook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/imac&quot;&gt;iMac&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/games&quot;&gt;Games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/apps&quot;&gt;Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/hardware&quot;&gt;Hardware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/tag/jailbreak&quot;&gt;Jailbreak&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;footer-copyright&quot;&gt;Cult of Mac © Cultomedia Corp 2009–2010. All rights reserved | &lt;a href=&quot;http://www.blogger.com/about/&quot;&gt;About us&lt;/a&gt; | &lt;a href=&quot;http://www.blogger.com/advertising-with-cultofmac-com&quot;&gt;Advertising&lt;/a&gt; | &lt;a href=&quot;http://www.blogger.com/privacy-policy&quot;&gt;Privacy&lt;/a&gt; | Powered by &lt;a href=&quot;http://www.wordpress.org/&quot;&gt;WordPress&lt;/a&gt; | Green hosting by &lt;a href=&quot;http://www.aiso.net/index.html?af=lkahney&amp;amp;bn=36&quot;&gt;AISO.net&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
_qoptions={
qacct:&quot;p-4bEZTZBVa48UQ&quot;
};
&lt;/script&gt;&lt;br /&gt;
&lt;script src=&quot;http://edge.quantserve.com/quant.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;noscript&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.quantcast.com/p-4bEZTZBVa48UQ&quot; id=&quot;quantcast&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Quantcast&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://pixel.quantserve.com/pixel/p-4bEZTZBVa48UQ.gif&quot; style=&quot;display: none;&quot; width=&quot;1&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/noscript&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://www.google-analytics.com/urchin.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
_uacct = &quot;UA-3875808-1&quot;;
urchinTracker();
&lt;/script&gt;&lt;br /&gt;
&lt;script charset=&quot;utf-8&quot; id=&quot;aptureScript&quot; src=&quot;http://www.apture.com/js/apture.js?siteToken=NYcHJGB&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;script src=&quot;http://wwwcultofmaccom.skimlinks.com/api/skimlinks.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var skimlinks_pub_id = &quot;3964X639382&quot;;
skimlinks();
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
(function(){
var wsc=document.createElement(&#39;script&#39;);
wsc.type=&#39;text/javascript&#39;;
wsc.src=document.location.protocol+&#39;//static.woopra.com/js/woopra.js&#39;;
wsc.async=true;
var ssc = document.getElementsByTagName(&#39;script&#39;)[0];
ssc.parentNode.insertBefore(wsc, ssc);})();
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://static.fmpub.net/site/cultofmac&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var dc_AdLinkColor = &#39;blue&#39; ; 
var dc_PublisherID = 141310 ; 
&lt;/script&gt;&lt;br /&gt;
&lt;script src=&quot;http://kona.kontera.com/javascript/lib/KonaLibInline.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var dexBaseURL=((&quot;https:&quot;==document.location.protocol) ? 
 &quot;https://a248.e.akamai.net/demdex.download.akamai.com/ziffdavis/29/&quot; : 
 &quot;http://cdn.demdex.net/ziffdavis/29/&quot;);
document.write(unescape(&quot;%3Cscript src=&#39;&quot;+ dexBaseURL + 
 &quot;demdex.js&#39; type=&#39;text/javascript&#39; %3E%3C/script%3E&quot;));
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/3225008397971146132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/12/better-google-sync-by-putting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/3225008397971146132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/3225008397971146132'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/12/better-google-sync-by-putting.html' title='Better google sync by putting m.google.com as EXCHANGE (??!)'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-6423614372782573553</id><published>2010-12-23T13:39:00.001+01:00</published><updated>2010-12-23T13:39:29.671+01:00</updated><title type='text'>VLC screen sharing</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;&quot;&gt;That screen you&#39;re looking at there? It&#39;s not my Mac. It&#39;s my Apple TV. TUAW reader James Low wondered if you could stream your OS X screen using the screen:// feature of VLC along the lines of&amp;nbsp;&lt;a href=&quot;http://ifoundthesolution.blogspot.com/2008/02/screencasting-using-vlc.html&quot; style=&quot;color: #7c8cc5;&quot; target=&quot;_blank&quot;&gt;the instructions found on this blog post&lt;/a&gt;. I decided to test it out using the same method I described in my&amp;nbsp;&lt;a href=&quot;http://www.tuaw.com/2010/12/21/dvds-are-playing-back-on-my-apple-tv-and-its-not-really-that/&quot; style=&quot;color: #7c8cc5;&quot; target=&quot;_blank&quot;&gt;earlier DVD-to-Apple TV post&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Instead of streaming from my DVD (namely via dvdread:///dev/rdisk5@1:3-), I substituted screen://, as follows.&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;/Applications/VLC.app/Contents/MacOS/VLC -vv screen:// --intf=rc &#39;--sout=#transcode{vcodec=h264,vb=2048,acodec=mp4a,ab=192}:standard{mux=ts,dst=-,access=file}&#39; | mediastreamsegmenter -f /Library/WebServer/Documents/stream -D&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
It worked. All other instructions remain the same as from the DVD post.&lt;br /&gt;
&lt;br /&gt;
So what are the downsides? First, the image was a bit blurry due to the H.264 transcoding and the limited bit rate, but it wasn&#39;t too bad. It remained reasonably readable at all times. Second, there was a distinct lag between what was going on at the Mac and what was being shown on the Apple TV. Pausing the stream, like I did to take this screen shot, slightly increased that lag.&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;&quot;&gt;&lt;br /&gt;
On the bright side? Screencasting. From your Mac. To your Apple TV.&lt;br /&gt;
&lt;br /&gt;
I think that&#39;s pretty cool.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/6423614372782573553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/12/vlc-screen-sharing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/6423614372782573553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/6423614372782573553'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/12/vlc-screen-sharing.html' title='VLC screen sharing'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-1478811790678294223</id><published>2010-12-22T15:36:00.001+01:00</published><updated>2010-12-22T15:36:28.716+01:00</updated><title type='text'>I think we could all probably use a rest.</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;&lt;p&gt;think we all probably rested enough. ;)&lt;br/&gt;&lt;br/&gt;Metababy was a wiki before the term was invented, a freeforall website where anyone could post, edit and update each others material. &lt;br/&gt;&lt;br/&gt;Very, very avant la lettre ;)&lt;/p&gt;verwijst naar: &lt;p&gt;&lt;blockquote&gt;&quot;think we could all probably use a rest.&quot;&lt;br/&gt;- &lt;a href=&#39;http://www.metababy.com/&#39;&gt;Metababy&lt;/a&gt; (&lt;a href=&#39;http://www.google.com/sidewiki/entry/108138470397889142974/id/qVUfv8axr8Kg65lkboIPfV3hoaQ&#39;&gt;bekijken via Google Sidewiki&lt;/a&gt;)&lt;/blockquote&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/1478811790678294223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/12/i-think-we-could-all-probably-use-rest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1478811790678294223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1478811790678294223'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/12/i-think-we-could-all-probably-use-rest.html' title='I think we could all probably use a rest.'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-7196887765519962791</id><published>2010-11-29T15:04:00.000+01:00</published><updated>2010-11-29T15:04:01.744+01:00</updated><title type='text'>google&#39;s 20thingsilearned.com</title><content type='html'>&lt;div&gt;&lt;h2&gt;Foreword to 20 Things&lt;/h2&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/cloud01.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;Many of us these days depend on the World Wide Web to bring the world’s information to our fingertips, and put us in touch with people and events across the globe instantaneously.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;These powerful online experiences are possible thanks to an open web that can be accessed by anyone through a web browser, on any Internet-connected device in the world.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-6 title-foreword page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;But how do our browsers and the web actually work? How has the World Wide Web evolved into what we know and love today? And what do we need to know to navigate the web safely and efficiently?&lt;/p&gt;   &lt;p&gt;“20 Things I Learned About Browsers and the Web” is a short guide for anyone who’s curious about the basics of browsers and the web.  Here’s what you’ll find here:&lt;/p&gt;   &lt;p&gt;First we’ll look at the Internet, the very backbone that allows the web to exist. We’ll also take a look at how the web is used today, through cloud computing and web apps.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;Then, we’ll introduce the building blocks of web pages like HTML and JavaScript, and review how their invention and evolution have changed the websites you visit every day.  We’ll also take a look at the modern browser and how it helps users browse the web more safely and securely.&lt;/p&gt;   &lt;p&gt;Finally, we’ll look ahead to the exciting innovations in browsers and web technologies that we believe will give us all even faster and more immersive online experiences in the future.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-7 title-foreword page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;p&gt;Life as citizens of the web can be liberating and empowering, but also deserves some self-education. Just as we’d want to know various basic facts as citizens of our physical neighborhoods -- water safety, key services, local businesses -- it’s increasingly important to understand a similar set of information about our online lives.  That’s the spirit in which we wrote this guide. Many of the examples used to illustrate the features and functionality of the browser often refer back to Chrome, the open-source browser that we know well. We hope you find this guide as enjoyable to read as we did to create.&lt;/p&gt;  &lt;p class=&quot;continuation&quot;&gt;Happy browsing!&lt;/p&gt;  &lt;div class=&quot;spacer&quot; /&gt;  &lt;p class=&quot;continuation&quot;&gt;&lt;em&gt;The Google Chrome Team, with many thanks to Christoph Niemann for his illustrations&lt;/em&gt;&lt;/p&gt;  &lt;p class=&quot;continuation&quot;&gt;&lt;em&gt;November 2010&lt;/em&gt;&lt;/p&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-7 title-what-is-the-internet page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;What is the Internet?&lt;/h2&gt;  &lt;h3&gt;or, “You Say Tomato, I Say TCP/IP”&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/internet01.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;What is the Internet, exactly? To some of us, the Internet is where we stay in touch with friends, get the news, shop, and play games. To some others, the Internet can mean their local broadband providers, or the underground wires and fiber-optic cables that&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;carry data back and forth across cities and oceans. Who is right?&lt;/p&gt;   &lt;p&gt;A helpful place to start is near the Very Beginning: 1974.  That was the year that a few smart computer researchers invented something called the Internet Protocol Suite, or TCP/IP for&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-5 title-what-is-the-internet page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;short. TCP/IP created a set of rules that allowed computers to “talk” to each other and send information back and forth.&lt;/p&gt;   &lt;p&gt;TCP/IP is somewhat like human communication: when we speak to each other, the rules of grammar provide structure to language and ensures that we can understand each other and exchange ideas. Similarly, TCP/IP provides the rules of communication that ensure interconnected devices understand each other so that they can send information back and forth. As that group of interconnected devices grew from one room to many rooms — and then to many buildings, and then to many cities and countries — the Internet was born.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;The early creators of the Internet discovered that data and information could be sent more efficiently when broken into smaller chunks, sent separately, and reassembled. Those chunks are called &lt;strong&gt;packets&lt;/strong&gt;.  So when you send an email across the Internet, your full email message is broken down into packets, sent to your recipient, and reassembled. The same thing happens when you watch a video on a website like YouTube: the video files are segmented into data packets that can be sent from multiple YouTube servers around the world and reassembled to form the video that you watch through your browser.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-what-is-the-internet page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;What about speed? If traffic on the Internet were akin to a stream of water, the Internet’s &lt;strong&gt;bandwidth&lt;/strong&gt; is equivalent to the amount of water that flows through the stream per second. So when you hear engineers talking about bandwidth, what they’re really referring to is the amount of data that can be sent over your Internet connection per second. This is an indication of how fast your connection is. Faster connections are now possible with better physical infrastructure (such as fiber optic cables that can send information close to the speed of light), as well as better ways to encode the information onto the physical medium itself, even on older medium like copper wires.&lt;/p&gt;   &lt;p&gt;The Internet is a fascinating and highly technical system, and yet for most of us today, it’s a user-friendly world where we don’t even&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;think about the wires and equations involved. The Internet is also the backbone that allows the World Wide Web that we know and love to exist: with an Internet connection, we can access an open, ever-growing universe of interlinked web pages and applications. In fact, there are probably as many pages on the web today as there are neurons in your brain, as there are stars in the Milky Way!&lt;/p&gt;   &lt;p&gt;In the next two chapters, we’ll take a look at how the web is used today through cloud computing and web apps.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-5 title-cloud-computing page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;h2&gt;Cloud Computing&lt;/h2&gt;   &lt;h3&gt;or, why it’s ok for a truck to crush your laptop&lt;/h3&gt;   &lt;p class=&quot;drop-cap&quot;&gt;Modern computing in the age of the Internet is quite a strange, remarkable thing. As you sit hunched over your laptop at home watching a YouTube video or using a search engine, you’re actually plugging into the collective power of thousands of computers that serve all this information to you from far-away rooms distributed around the world. It’s almost like having a massive supercomputer at your beck and call, thanks to the Internet.&lt;/p&gt;   &lt;p&gt;This phenomenon is what we typically refer to as cloud computing. We now read the&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/cloud03.png&quot; /&gt;&lt;/div&gt;   &lt;p class=&quot;continuation&quot;&gt;news, listen to music, shop, watch TV shows and store our files on the web. Some of us live in cities in which nearly every museum, bank, and government office has a website. The end result? We spend less time in lines or on the phone, as these websites allow us to do things like pay bills and make reservations. The movement of many of our daily tasks online enables us to live more fully in the real world.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-5 title-cloud-computing page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;  &lt;p&gt;Cloud computing offers other benefits as well. Not too long ago, many of us worried about losing our documents, photos and files if something bad happened to our computers, like a virus or a hardware malfunction. Today, our data is migrating beyond the boundaries of our personal computers. Instead, we’re moving our data online into “the cloud”. If you upload your photos, store critical files online and use a web-based email service like Gmail or Yahoo! Mail, an 18-wheel truck could run over your laptop and all your data would still safely reside on the web, accessible from any Internet-connected computer, anywhere in the world.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/cloud02.png&quot; /&gt;&lt;/div&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-5 title-web-apps page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;h2&gt;Web Apps&lt;/h2&gt;   &lt;h3&gt;or, “Life, Liberty and the Pursuit of Appiness”&lt;/h3&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/webapps01.png&quot; /&gt;&lt;/div&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;div class=&quot;image2&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/webapps02.png&quot; /&gt;&lt;/div&gt;   &lt;p class=&quot;drop-cap&quot;&gt;If you play online games, use an online photo editor, or rely on web-based services like Google Maps, Twitter, Amazon, YouTube or Facebook, then you’re an active resident in the wonderful world of web apps.&lt;/p&gt;   &lt;p&gt;What exactly &lt;i&gt;is&lt;/i&gt; a web app, anyway? And why should we care?&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-web-apps page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;&lt;i&gt;App&lt;/i&gt; is shorthand for an application. Applications are also called programs or software. Traditionally, they’ve been designed to do broad, intensive tasks like accounting or word processing.  In the online world of web browsers and smart phones, apps are usually nimbler programs focused on a single task. Web apps, in particular, run these tasks inside the web browser and often provide a rich, interactive experience.&lt;/p&gt;   &lt;p&gt;Google Maps is a good example of a web app. It’s focused on one task: providing helpful map features within a web browser. You can pan and zoom around a map, search for a college or cafe, and get driving directions, among other tasks. All the information you need is pulled into the web app dynamically every time you ask for it.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;This brings us to four virtues of Web Appiness:&lt;/p&gt;   &lt;h4&gt;1. I can access my data from anywhere.&lt;/h4&gt;   &lt;p class=&quot;continuation&quot;&gt;In the traditional world of desktop applications, data is usually stored on my computer’s hard drive. If I’m on vacation and leave my computer at home, I can’t access my email, photos, or any of my data when I need it. In the new world of web apps, my email and all my data are stored online on the web. I can get to it on a web browser from any computer that’s connected to the Internet.&lt;/p&gt;   &lt;h4&gt;2. I’ll always get the latest version of any app.&lt;/h4&gt;   &lt;p class=&quot;continuation&quot;&gt;Which version of YouTube am I using today? What about tomorrow? The answer: Always the latest. Web apps update themselves automatically, so there’s always just one version: the latest version, with all the newest features and improvements. No need to&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-web-apps page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;manually upgrade to a new version every time. And I don’t have to go through a lengthy install process to use my web apps.&lt;/p&gt;   &lt;h4&gt;3. It works on every device with a web browser.&lt;/h4&gt;   &lt;p class=&quot;continuation&quot;&gt;In traditional computing, some programs work only on particular systems or devices. For instance, many programs written for a PC won’t work on a Mac. Keeping up with all the right software can be time-consuming and costly. In contrast, the web is an open platform. Anyone can reach it from a browser on any web-connected device, regardless of whether it’s a desktop computer, laptop, or mobile phone. That means I can use my favorite web apps even if I’m using my friend’s laptop or a computer at an Internet cafe.&lt;/p&gt;   &lt;h4&gt;4. It’s safer.&lt;/h4&gt;   &lt;p class=&quot;continuation&quot;&gt;Web apps run in the browser and I never&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;have to download them onto my computer. Because of this separation between the app code and my computer’s code, web apps can’t interfere with other tasks on my computer or the overall performance of my machine. This means that I’m better protected from threats like viruses, malware and spyware.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-2 title-html page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;HTML, JavaScript, CSS and more&lt;/h2&gt;  &lt;h3&gt;or, this is not your mom’s AJAX&lt;/h3&gt;  &lt;p class=&quot;drop-cap&quot;&gt;Web pages are written in HTML, the web programming language that tells web browsers how to structure and present content on a web page. In other words, HTML provides the basic building blocks for the web. And for a long time, those building blocks were pretty simple and static: lines of text, links and images.&lt;/p&gt;  &lt;p&gt;Today, we expect to be able to do things like play online chess or seamlessly scroll around a map of our neighborhood, without waiting for the entire page to reload for every chess move or every map scroll.&lt;/p&gt;  &lt;p&gt;The idea of such dynamic web pages began&lt;/p&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/html01.png&quot; /&gt;&lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-4 title-html page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;p1 continuation&quot;&gt;with the invention of the scripting language JavaScript. JavaScript support in major web browsers meant that web pages could incorporate more meaningful real-time interactions. For example, if you’ve filled out an online form and hit the “submit” button, the web page can use JavaScript to check your entries in real-time and alert you almost instantly if you had filled out the form wrongly.&lt;/p&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/html02.png&quot; /&gt;&lt;/div&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;div class=&quot;image2&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/html03.png&quot; /&gt;&lt;/div&gt;   &lt;p&gt;But the dynamic web as we know it today truly came to life when XHR (XMLHttpRequest) was introduced into JavaScript, and first used in web applications like Microsoft Outlook for the Web, Gmail and Google Maps. XHR enabled individual parts of a web page — a game, a map, a video, a little survey — to be altered without needing to reload the entire page. As a result, web apps are faster and more responsive.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;br /&gt;
﻿&lt;section class=&quot;template-inner-4 title-html page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/html04.png&quot; /&gt;&lt;/div&gt;   &lt;p&gt;Web pages have also become more expressive with the introduction of CSS (Cascading Style Sheets). CSS gives programmers an easy, efficient way to define a web page’s layout and beautify the page with design elements like colors, rounded corners, gradients, and animation.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;Web programmers often refer to this potent combination of JavaScript, XHR, CSS and several other web technologies as AJAX (Asynchronous JavaScript and XML). HTML has also continued to evolve as more features and improvements are incorporated into new versions of the HTML standard.&lt;/p&gt;   &lt;p&gt;Today’s web has evolved from the ongoing efforts of all the technologists, thinkers, coders and organizations who create these web technologies and ensure that they’re supported in web browsers like Internet Explorer, Firefox, Safari and Google Chrome. This interaction between web technologies and browsers has made the web an open and friendly construction platform for web developers, who then bring to life many useful and fun web applications that we use daily.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-2 title-html5 page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;HTML5&lt;/h2&gt;  &lt;h3&gt;or, in the beginning there was no &amp;lt;video&amp;gt;&lt;/h3&gt;  &lt;p class=&quot;drop-cap&quot;&gt;More than two decades after HTML was introduced, we’re still asking questions about what the web is, and what it might become. What kinds of features and applications would we, as users, find fun, useful or even indispensable? What tools do developers need in order to create these great sites and apps? And finally, how can all this goodness be delivered inside a web browser?&lt;/p&gt;  &lt;p&gt;These questions led to the evolution of the latest version of HTML known as HTML5, a set of capabilities that gives web designers and developers the ability to create the next generation of great online applications.  Take the HTML5 &amp;lt;video&amp;gt; tag, for example. Video wasn’t a major (or, really, any) part of the early web;&lt;/p&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/html501.png&quot; /&gt;&lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-html5 page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;instead, internet users installed additional software called plug-ins, in order to watch videos inside their web browsers. Soon it became apparent that easy access to video was a much-wanted feature on the web. The introduction of the &amp;lt;video&amp;gt; tag in HTML5 allows videos to be easily embedded and played in web pages without additional software.&lt;/p&gt;   &lt;p&gt;Other cool HTML5 features include offline capabilities that let users interact with web apps even when they don’t have an internet connection, as well as drag-and-drop capabilities. In Gmail, for instance, easy drag-and-drop allows users to instantly attach a file to an email message by simply dragging the file from the user’s desktop computer into the browser window.&lt;/p&gt;   &lt;p&gt;HTML5, like the web itself, is in perpetual&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;evolution, based on users’ needs and developers’ imaginations.  As an open standard, HTML5 embodies some of the best aspects of the web: it works everywhere, and on any device with a modern browser.  But just as you can only watch HDTV broadcasts on an HD-compatible television, you need to use an up-to-date, HTML5-compatible browser in order to enjoy sites and apps that take advantage of HTML5’s features. Thankfully, as an Internet user, you have lots of choice when it comes to web browsers — and unlike TVs, web browsers can be downloaded for free.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-7 title-threed page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;3D in the Browser&lt;/h2&gt;  &lt;h3&gt;or, browsing with more depth&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/3d01.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;3D graphics and animation can be truly captivating with all the right details in place: details like lighting and shadows, reflections, and realistic textures. But until now, it has been hard to deliver a compelling 3D experience, particularly over the Internet.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;Why?  Mostly because creating a 3D experience in games and other applications requires data — lots and lots of data — to display intricate textures and shapes. In the past, these large amounts of data demanded more Internet bandwidth and more computing&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-6 title-threed page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;power than most common systems could handle. All that has changed very recently, and all for the better: browser-based 3D has arrived.&lt;/p&gt;   &lt;p&gt;Modern broadband helped solve bandwidth needs. Many homes and offices now have broadband speeds that dwarf the connections of even ten years ago. As a result, it’s possible to send large amounts of data over the Internet — data that is needed to display realistic 3D experiences in the browser. In addition, the computers we use today are so much more powerful than what we had in the past: processors and memory have improved such that even a standard laptop or desktop today can handle the complexity of 3D graphics.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;Neither broadband nor raw computing power would matter without substantial advancements in the web browser’s capabilities. Many modern browsers have adopted open web technologies like WebGL and 3D CSS. With these technologies, web developers can create cool 3D effects for their web applications, and we can experience them without needing additional plug-ins. On top of that, many modern browsers now take advantage of a technique known as hardware-acceleration. This means that the browser can use the Graphics Processing Unit, or GPU, to speed up the computations needed to display both 3D and everyday 2D web content.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-7 title-threed page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;So why is 3D in the browser a big deal? Because now it joins HTML5, JavaScript and other nifty new technologies in the toolkit that web developers can use to create a powerful new generation of web applications. For users, this means great new ways to visualize the information we find useful, and more fun online with engaging 3D environments and games.&lt;/p&gt;   &lt;p&gt;Most importantly, 3D in the browser comes with all the goodness of web apps: you can share, collaborate, and personalize the latest apps with friends all over the world.  Definitely more data and fun that &lt;i&gt;everyone&lt;/i&gt; can use.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-4 title-old-vs-new-browsers page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;A Browser Madrigal &lt;/h2&gt;  &lt;h3&gt;or, old vs. modern browsers&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/oldvsnewbrowsers01.png&quot; /&gt;&lt;/div&gt;  &lt;p&gt;&lt;span&gt;Crabbed old and modern browsers&lt;/span&gt;&lt;span&gt;Cannot live together:&lt;/span&gt;&lt;span&gt;The modern browser is faster, featureful, and more secure&lt;/span&gt;&lt;span&gt;The old browser is slow, and at worst, a dreadful danger&lt;/span&gt;&lt;span&gt;Malicious attacks it cannot endure.&lt;/span&gt;&lt;span class=&quot;reference&quot;&gt;(with apologies to Shakespeare)&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-6 title-old-vs-new-browsers page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;Most of us don’t realize how much an old and out-of-date web browser can negatively impact our online lives, particularly our online safety. You wouldn’t drive an old car with bald tires, bad brakes, and an unreliable engine for years on end. It’s a bad idea to take the same chances with the web browser that you use daily to navigate to every page and application on the web.&lt;/p&gt;   &lt;p&gt;Upgrading to a modern browser — like the latest version of Mozilla Firefox, Apple Safari, Microsoft Internet Explorer, Opera, or Google Chrome — is important for three reasons:&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;First, old browsers are vulnerable to attacks, because they typically aren’t updated with the latest security fixes and features. Browser vulnerabilities can lead to stolen passwords, malicious software snuck secretly onto your computer, or worse. An up-to-date browser helps guard against security threats like phishing and malware.&lt;/p&gt;   &lt;p&gt;Second, the web evolves quickly.  Many of the latest features on today’s websites and web applications won&#39;t work with old browsers. Only up-to-date browsers have the speed improvements that let you run web pages and applications quickly, along with support for modern web technologies such as HTML5, CSS3, and fast JavaScript.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-3 title-old-vs-new-browsers page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/oldvsnewbrowsers02.png&quot; /&gt;&lt;/div&gt;  &lt;p&gt;Third and last, old browsers slow down innovation on the web.  If lots of Internet users cling to old browsers, web developers are forced to design websites that work with both old and new technologies. Facing limited time and resources, they end up developing for the lowest common denominator — and not building the next generation of useful, groundbreaking web applications. (Imagine if today’s highway engineers were required to design high-speed freeways that would still be perfectly safe for a Model T.) That’s why outdated browsers are bad for users overall and bad for innovation on the web.&lt;/p&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-old-vs-new-browsers page-4&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;Not that anyone blames you personally for staying loyal to your aging browser. In some cases, you may be unable to upgrade your browser. If you find that you’re blocked from upgrading your browser on your corporate computer, have a chat with your IT administrator. If you can’t upgrade an old version of Internet Explorer, the Google Chrome Frame plug-in can give you the benefits of some modern web app functionality by bringing in Google Chrome’s capabilities into Internet Explorer.&lt;/p&gt;   &lt;p&gt;Old, outdated browsers are bad for us as users, and they hold back innovation all over the web. So take a moment to make sure that you’ve upgraded to the latest version of your favorite modern browser.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/oldvsnewbrowsers03.png&quot; /&gt;&lt;/div&gt;   &lt;p class=&quot;note continuation&quot;&gt;Editor’s note: At the time of publication, the latest stable versions of the major modern browsers are Firefox 3.6, Safari 5, Google Chrome 7, Internet Explorer 8, and Opera 10.63. To check which browser you’re using, visit &lt;a href=&quot;http://www.whatbrowser.org&quot;&gt;www.whatbrowser.org&lt;/a&gt;.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-7 title-plugins page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;Plug-ins&lt;/h2&gt;  &lt;h3&gt;or, pepperoni for your cheese pizza&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/plugins.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;In the early days of the World Wide Web, the first versions of HTML couldn’t deliver fancy content like videos. Text, images, and links were pretty much the limit.&lt;/p&gt;   &lt;p&gt;Plug-ins were invented to work around the limitations of early HTML and deliver more&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;interactive content. A plug-in is an additional piece of software that specializes in processing particular types of content. For example, users may download and install a plug-in like Adobe Flash Player to view a web page which contains a video or an interactive game.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-plugins page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;How much does a plug-in interface with a browser? Curiously, hardly at all. The plug-in model is a lot like picture-in-a-picture on TV: the browser defines a distinct space on the web page for the plug-in, then steps aside.  The plug-in is free to operate inside that space, independent of the browser.&lt;/p&gt;   &lt;p&gt;This independence means that a particular plug-in can work across many different browsers. However, that ubiquity also makes plug-ins prime targets for browser security attacks. Your computer is even more vulnerable to security attacks if you’re running plug-ins that aren&#39;t up to date, because out-of-date plug-ins don’t contain the latest security fixes.&lt;/p&gt;   &lt;p&gt;The plug-in model we use today is largely the one inherited from the web’s early days. But the web community is now looking at new&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;ways to modernize plug-ins — like clever ways to integrate plug-ins more seamlessly so that their content is searchable, linkable, and can interact with the rest of the web page. More importantly, some browser vendors and plug-in providers now collaborate to protect users from security risks. For example, the Google Chrome and Adobe Flash Player teams have worked together to integrate Flash Player into the browser. Chrome’s auto-update mechanism helps ensure that the Flash Player plug-in is never out-of-date and always receives the latest security fixes and patches.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-5 title-browser-extensions page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;h2&gt;Browser Extensions&lt;/h2&gt;   &lt;h3&gt;or, superpowers for your browser&lt;/h3&gt;   &lt;p class=&quot;drop-cap&quot;&gt;Browser extensions let you add new features to your browser — literally &lt;i&gt;extending&lt;/i&gt; your browser.&lt;/p&gt;   &lt;p&gt;This means that you can customize your browser with the features that are most important to you. Think of extensions as ways of adding new superpowers to what the browser can already do.&lt;/p&gt;   &lt;p&gt;These superpowers can be mighty or modest, depending on your needs. For example, you might install a currency converter extension that shows up as a new&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;button next to your browser’s address bar. Click the button and it converts all the prices on your current web page into any currency you specify. That’s helpful if you’re an avid backpacker who does most of your travel planning and booking online. Extensions like these let you apply the same kind of functionality to every web page you visit.&lt;/p&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/browserextensions.png&quot; /&gt;&lt;/div&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-5 title-browser-extensions page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;Browser extensions can also act on their own, outside of web pages. An email notifier extension can live on your browser toolbar, quietly check for new messages in your email account and let you know when one arrives. In this case, the extension is always working in the background no matter what web page you’re looking at — and you don’t have to log in to your email in a separate window to see if you have new messages.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;When browser extensions were first introduced, developers often had to build them in unusual programming languages or in heavy-duty mainstream languages like C++. This took a lot of work, time and expertise. Adding more code to the browser also added to security concerns, as it gave attackers more chances to exploit the browser. Because the code was sometimes arcane, extensions were notorious for causing browser crashes, too.&lt;/p&gt;   &lt;p&gt;Today, most browsers let developers write extensions in the basic, friendly programming languages of the web: HTML, JavaScript and CSS. Those are the same languages used to build most modern web apps and web pages, so today’s extensions are much closer cousins to the web apps and pages they work with. They’re faster and easier to build, safer, and get better and better right along with the web standards they’re built upon.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;br /&gt;
﻿&lt;section class=&quot;template-inner-2 title-browser-extensions page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;To discover new extensions, check out your browser’s extensions gallery. You’ll see thousands of extensions that can help make browsing more efficient or just plain fun — from extensions that let you highlight and scribble notes on web pages while you’re doing research, to those that show nail-biting, play-by-play sports updates from your browser’s interface.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;br /&gt;
&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-7 title-sync page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;Synchronizing the Browser&lt;/h2&gt;  &lt;h3&gt;or, why it’s ok for a truck to crush your laptop, part II&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/sync01.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;So you’re living in “the cloud”: congratulations! You use web apps for email, music, and almost everything. You save critical documents, photos, and files online where you can reach them from any Internet-connected computer, anywhere in the world.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;If an 18-wheel truck comes roaring down the road and crushes your laptop to bits, all is not lost. You just find another Internet-connected device and get back to working with all that vital information you so smartly saved online.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-sync page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;But wait: What about all the bookmarks, browser extensions, and browser preferences that you use daily? Did they get crunched into oblivion along with your laptop?&lt;/p&gt;   &lt;p&gt;The answer used to be “yes.”  You’d have to forage for your favorite extensions all over again and gather all the websites you had painstakingly bookmarked. But no more! Many of today’s browsers, such as Firefox and Chrome, have begun building in a feature known as &lt;strong&gt;synchronization&lt;/strong&gt; (“sync” for short). Sync lets you save your browser settings online, in the cloud, so they aren’t lost even if your computer melts down.&lt;/p&gt;   &lt;p&gt;Sync functionality also makes life simpler if you use multiple computers, say, a laptop at work and a family desktop at home. You don’t have to manually recreate bookmarks of your favorite websites or reconfigure the browser&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;settings on every computer you own. Any changes you make to your sync-enabled browser on one computer will automatically appear in all other synced computers within seconds.&lt;/p&gt;   &lt;p&gt;In Chrome, for example, sync saves all bookmarks, extensions, preferences and themes to your Google Account. Use any other Internet-connected computer, and all you need to do is fire up Chrome and log in to your Google Account through the browser’s sync feature. &lt;i&gt;Voila!&lt;/i&gt; All your favorite browser settings are ready to use on the new machine.&lt;/p&gt;   &lt;p&gt;Regardless of how many computers you need to juggle, as long as you have an Internet connection and a modern browser that’s synced to the cloud, you’re all set to go. Even if every one of them gets hit by the proverbial truck.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-5 title-browser-cookies page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;h2&gt;Browser Cookies&lt;/h2&gt;   &lt;h3&gt;or, thanks for the memories&lt;/h3&gt;   &lt;p class=&quot;drop-cap&quot;&gt;&lt;i&gt;Cookie&lt;/i&gt; seems like an unlikely name for a piece of technology, but cookies play a key role in providing functionality that Internet users may want from websites: a memory of visits, in the past or in progress.&lt;/p&gt;   &lt;p&gt;A cookie is a small piece of text sent to your browser by a website you visit. It contains information about your visit that you may want the site to remember, like your preferred language and other settings. The browser stores this data and pulls it out the next time you visit the site to make the next trip easier and more personalized. If you visit&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;a movie website and indicate that you’re most interested in comedies, for instance, the cookies sent by the website can remember this so you may see comedies displayed at the start of your next visit.&lt;/p&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/cookies01.png&quot; /&gt;&lt;/div&gt;   &lt;p&gt;Online shopping carts also use cookies. As you browse for DVDs on that movie shopping site, for instance, you may notice that you can add them to your shopping cart without&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-browser-cookies page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;logging in. Your shopping cart doesn’t “forget” the DVDs, even as you hop around from page to page on the shopping site, because they’re preserved through browser cookies. Cookies can be used in online advertising as well, to remember your interests and show you related ads as you surf the web.&lt;/p&gt;   &lt;p&gt;Some people prefer not to allow cookies, which is why most modern browsers give you the ability to manage cookies to suit your tastes. You can set up rules to manage cookies on a site-by-site basis, giving you greater control over your privacy. What this means is that you can choose which sites you trust and allow cookies only for those sites, blocking cookies from everyone else. Since there are many types of cookies — including “session-only cookies” that last only for a particular browsing session, or permanent cookies that last for multiple sessions — modern browsers&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;typically give you fine-tuned controls so that you can specify your preferences for different types of cookies, such as accepting permanent cookies as session-only.&lt;/p&gt;   &lt;p&gt;In the Google Chrome browser, you’ll notice a little something extra in the Options menus: a direct link to the Adobe Flash Player storage settings manager. This link makes it easy to control local data stored by Adobe Flash Player (otherwise commonly known as &quot;Flash cookies&quot;), which can contain information on Flash-based websites and applications that you visit. Just as you can manage your browser cookies, you should be able to easily control your Flash cookies settings as well.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-7 title-browser-privacy page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;Browsers and Privacy&lt;/h2&gt;  &lt;h3&gt;or, giving you choices to protect your privacy in the browser&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/browserprivacy01.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;Security and privacy are closely related, but not identical.&lt;/p&gt;   &lt;p&gt;Consider the security and privacy of your home: door locks and alarms help protect you from burglars, but curtains and blinds keep&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;your home life private from passersby.&lt;/p&gt;   &lt;p&gt;In the same way, browser security helps protect you from malware, phishing, and other online attacks, while privacy features help keep your browsing private on your computer.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-6 title-browser-privacy page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;Let’s look more closely at privacy. Here’s an analogy: Say you’re an avid runner who jogs a few miles every day. If you carry a GPS device to help you track your daily runs, you create a diary of running data on your device — a historical record of where you run, how far you run, your average speed, and the calories you burn.&lt;/p&gt;   &lt;p&gt;As you browse the web, you generate a similar diary of &lt;i&gt;browser&lt;/i&gt; data that is stored locally on your computer: a history of the sites you visit, the cookies sent to your browser, and any files you download. If you’ve asked your browser to remember your passwords or form data, that’s stored on your computer too.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;Some of us may not realize that we can clear all this browser data from our computers at any time. It’s easy to do through a browser’s Options or Preferences menu. (The menu differs from browser to browser.) In fact, the latest versions of most modern browsers also offer a “private” or “incognito” mode. For example, in Chrome’s incognito mode, any web page that you view won’t appear in your browsing history. In addition, all new cookies are deleted after you close all the incognito windows that you’ve opened. This mode is especially handy if you share your computer with other people, or if you work on a public computer in your local library or cybercafe.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-browser-privacy page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;All these privacy features in the browser give you control over the browsing data locally on your computer or specific data that are sent by your browser to websites. Your browser’s privacy settings do not control other data that these websites may have about you, such as information you previously submitted on the website.&lt;/p&gt;   &lt;p&gt;There are ways to limit some of the information that websites receive when you visit them. Many browsers let you control your privacy preferences on a site-by-site basis and make your own choices about specific data such as cookies, JavaScript, and plugins. For instance, you can set up rules to allow cookies only for a specified list of sites that you trust, and instruct the browser to block cookies for all other sites.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/browserprivacy02.png&quot; /&gt;&lt;/div&gt;   &lt;span class=&quot;image-description&quot;&gt;Example of privacy controls in the browser&lt;/span&gt;&lt;br /&gt;
  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-7 title-browser-privacy page-4&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;p&gt;There’s always a bit of tension between privacy and efficiency.  Collecting real-world aggregate data and feedback from users can really help improve products and the user experience. The key is finding a good balance between the two while upholding strong privacy standards.&lt;/p&gt;  &lt;p&gt;Here’s an example from the real world: browser cookies. On one hand, with cookies, a website you frequently visit is able to remember contents of your shopping cart, keep you logged in, and deliver a more useful, personalized experience based on your previous visits. On the other hand, allowing browser cookies means that the website is collecting and remembering information about these previous visits. If you wish, you can choose to block cookies at any time. So the next time you’re curious about fine-tuning your browser privacy settings, check out the privacy settings in your browser’s Options or Preferences menu.&lt;/p&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-2 title-malware page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;Malware, Phishing,&lt;br/&gt;and Security Risks&lt;/h2&gt;  &lt;h3&gt;or, if it quacks like a duck but isn’t a duck&lt;/h3&gt;  &lt;p class=&quot;drop-cap&quot;&gt;When you use an ATM downtown, you probably glance over your shoulder to make sure nobody is lurking around to steal your PIN number (or your cash). In fact, you probably first check to make sure that you’re not using a fake ATM machine. When you browse the web and perform transactions online, two security risks to be aware of are malware and phishing.  These attacks are perpetrated by individuals or organizations who hope to steal your personal information or hijack your computer.&lt;/p&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/malware01.png&quot; /&gt;&lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-5 title-malware page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;What exactly are phishing and malware attacks?&lt;/p&gt;   &lt;p&gt;Phishing takes place when someone masquerades as someone else, often with a fake website, to trick you into sharing personal information.  (It’s called “phishing” because the bad guys throw out electronic bait and wait for someone to bite.)  In a typical phishing scam, the attacker sends an email that looks like it’s from a bank or familiar web service you use. The subject line might say, “Please update your information at your bank!” The email contains phishing links that look like they go to your bank’s website, but really take you to an impostor website. There you’re asked to log in, and inadvertently reveal your bank account number, credit card numbers, passwords, or other sensitive information to the bad guys.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;Malware, on the other hand, is malicious software installed on your machine, usually without your knowledge.  You may be asked to download an anti-virus software that is actually a virus itself. Or you may visit a page that installs software on your computer without even asking. The software is really designed to steal credit card numbers or passwords from your computer, or in some cases, harm your computer. Once the malware is on your computer, it’s not only difficult to remove, but it’s also free to access all the data and files it finds, send that information elsewhere, and generally wreak havoc on your computer.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-malware page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;An up-to-date, modern web browser is the first line of defense against phishing and malware attacks.  Most modern browsers, for instance, can help analyze web pages to look for signs of lurking malware, and alert you when they find it.&lt;/p&gt;   &lt;p&gt;At the same time, an attacker may not always use sophisticated technical wizardry to hijack your computer, but could instead find clever ways to trick you into making a bad decision. In the next few chapters, we’ll look at how you can make wiser decisions to protect yourself when you’re online -- and how browsers and other web technologies can help.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-2 title-browser-protection page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;How Modern Browsers Help Protect You From Malware and Phishing&lt;/h2&gt;  &lt;h3&gt;or, beware the ne’er-do-wells!&lt;/h3&gt;  &lt;p class=&quot;drop-cap&quot;&gt;An up-to-date browser guards you from phishing and malware attacks when you’re browsing the web. It does so by limiting three types of security risk when you’re online:&lt;/p&gt;  &lt;h4&gt;Risk 1: How often you come into contact with an attacker&lt;/h4&gt;  &lt;p class=&quot;continuation&quot;&gt;You can be exposed to attackers through a malicious fake website, or even through a familiar website that has been hacked. Most modern browsers pre-check each web page you visit and alert you if one is suspected of being malicious. This lets you make an informed judgment about whether you really want to visit that page.&lt;/p&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/browserprotection01.png&quot; /&gt;&lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-6 title-browser-protection page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;For example, Google Chrome uses Safe Browsing technology, which is also used in several other modern browsers. As you browse the web, each page is checked quickly against a list of suspected phishing and malware websites. This list is stored and maintained locally on your computer to help protect your browsing privacy. If a match against the local list is found, the browser then sends a request to Google for more information. (This request is completely obscured and the browser does not send it in plain text.) If Google verifies the match, Chrome shows a red warning page to alert you that the page you&#39;re trying to visit may be dangerous.&lt;/p&gt;   &lt;h4&gt;Risk 2: How vulnerable your browser is if it’s attacked&lt;/h4&gt;   &lt;p class=&quot;continuation&quot;&gt;Old browsers that haven’t been upgraded are likely to have security vulnerabilities that attackers can exploit. All outdated software,&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;irrespective of whether it’s your operating system, browser, or plug-ins, has the same problem.  That’s why it’s important to use the very latest version of your browser and promptly install security patches on your operating system and all plug-ins, so that they’re always up-to-date with the latest security fixes.&lt;/p&gt;   &lt;p&gt;Some browsers check for updates automatically and install updates when initiated by the user. Chrome and some other browsers go one step further: they’re built with auto-update. The browser runs an update check periodically, and automatically updates to the latest version without disrupting your browsing flow. Furthermore, Chrome has integrated Adobe Flash Player and a PDF viewer into the browser, so that both these popular plug-ins are also auto-updated.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-browser-protection page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;h4&gt;Risk 3: How much damage is done if an attacker finds vulnerabilities in your browser&lt;/h4&gt;   &lt;p class=&quot;continuation&quot;&gt;Some modern browsers like Chrome and Internet Explorer are built with an added layer of protection known as a “sandbox.” Just as a real-life sandbox has walls to keep sand from spilling out, a browser sandbox builds a contained environment to keep malware and other security threats from infecting your computer. If you open a malicious web page, the browser’s sandbox prevents that malicious code from leaving the browser and installing itself to your hard drive. The malicious code therefore cannot read, alter, or further damage the data on your computer.&lt;/p&gt;   &lt;p&gt;In summary, a modern browser can protect you against online security threats by first, checking websites you’re about to visit for suspected malware and phishing; second, providing update notifications or auto-updating&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;when a newer, more secure version of the browser is available, and third, using the browser sandbox to curb malicious code from causing further damage to your computer.&lt;/p&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/browserprotection02.png&quot; /&gt;&lt;/div&gt;   &lt;p&gt;In the next few chapters, we’ll take a look at how a basic understanding of web addresses can help you make informed decisions about the websites you visit.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-7 title-url page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;Using Web Addresses to Stay Safe&lt;/h2&gt;  &lt;h3&gt;or, “my name is URL”&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/url01.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;A Uniform Resource Locator — better known as a URL — may sound like a complicated thing. But fret not: it’s simply the web address you type into your browser to get to a particular web page or web application.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;When you enter a URL, the website is fetched from its hosting server somewhere in the world, transported over miles of cables to your local Internet connection, and finally displayed by the browser on your computer.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-url page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;Here are a few examples of a URL:&lt;/p&gt;   &lt;div class=&quot;url-image&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/url_b1.png&quot; /&gt;&lt;/div&gt;   &lt;p class=&quot;continuation&quot;&gt;...to get to the news website for the British Broadcasting Corporation (“.co.uk” indicates registration in the United Kingdom)&lt;/p&gt;   &lt;div class=&quot;url-image&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/url_b2.png&quot; /&gt;&lt;/div&gt;   &lt;p class=&quot;continuation&quot;&gt;...to get to the search engine Google&lt;/p&gt;   &lt;div class=&quot;url-image&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/url_b3.png&quot; /&gt;&lt;/div&gt;   &lt;p class=&quot;continuation&quot;&gt;...to get to the website for Museo Nacional Del Prado, the Madrid-based art museum. (“.es” indicates registration in Spain)&lt;/p&gt;   &lt;div class=&quot;url-image&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/url_b4.png&quot; /&gt;&lt;/div&gt;   &lt;p class=&quot;continuation&quot;&gt;...to get to the online banking website for Bank of America (“https://” indicates an encrypted connection)&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-url page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;It’s easy to take URLs for granted, since we type them into our browsers every day.  But understanding the parts of a URL can help guard against phishing scams or security attacks.&lt;/p&gt;   &lt;p class=&quot;continuation&quot;&gt;Let’s look at what’s in a URL in this example:&lt;/p&gt;   &lt;div class=&quot;url-breakdown&quot;&gt;    &lt;span class=&quot;url&quot;&gt;http://www.google.com/maps&lt;/span&gt;&lt;br /&gt;
    &lt;span class=&quot;figure-1&quot;&gt;scheme&lt;/span&gt;&lt;br /&gt;
    &lt;span class=&quot;figure-2&quot;&gt;hostname&lt;/span&gt;&lt;br /&gt;
    &lt;span class=&quot;figure-3&quot;&gt;path&lt;/span&gt;&lt;br /&gt;
    &lt;span class=&quot;figure-4&quot;&gt;top level domain&lt;/span&gt;&lt;br /&gt;
   &lt;/div&gt;   &lt;p&gt;The first part of a URL is called the &lt;strong&gt;scheme&lt;/strong&gt;. In the example above, HTTP is the scheme and shorthand for HyperText Transfer Protocol.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;Next, “www.google.com” is the name of the &lt;strong&gt;host&lt;/strong&gt; where the website resides. When any person or company creates a new web site, they register this hostname for themselves. Only they may use it. This is important, as we’ll see in a moment.&lt;/p&gt;   &lt;p&gt;A URL may have an additional &lt;strong&gt;path&lt;/strong&gt; after the hostname, which sends you to a specific page on that host — like jumping right to a chapter or page in a book. Back to our example, the path tells the host server that you want to see the maps web application at www.google.com. (In other words, Google Maps.)  Sometimes that path is moved to the front of the hostname as a subdomain, such as “maps.google.com”, or “news.google.com” for Google News.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-6 title-url page-4&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;Now let’s talk safety.  One way to check if you’re surfing right into a phishing scam or an impostor website is by looking carefully at the URL in your browser’s address bar.  Pay particular attention to the hostname — remember, only the legitimate owner of that hostname can use it.&lt;/p&gt;   &lt;p&gt;For example, if you click on a link and expect to be directed to the Bank of America website:&lt;/p&gt;   &lt;h4&gt;LEGITIMATE:&lt;/h4&gt;   &lt;ul&gt;    &lt;li&gt;www.&lt;span class=&quot;highlight&quot;&gt;bankofamerica&lt;/span&gt;.com is a legitimate URL, since the hostname is correct.&lt;/li&gt;
    &lt;li&gt;www.&lt;span class=&quot;highlight&quot;&gt;bankofamerica&lt;/span&gt;.com/smallbusiness is also a legitimate URL since the hostname is correct. The path of the URL points to a sub-page on small business.&lt;/li&gt;
   &lt;/ul&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;h4&gt;SUSPICIOUS:&lt;/h4&gt;   &lt;ul&gt;    &lt;li&gt;&lt;span class=&quot;highlight&quot;&gt;bankofamerica&lt;/span&gt;.xyz.com is not Bank of America’s website. Instead, “bankofamerica” is a subdomain of the website xyz.com.&lt;/li&gt;
    &lt;li&gt;www.xyz.com/&lt;span class=&quot;highlight&quot;&gt;bankofamerica&lt;/span&gt; is still not Bank of America&#39;s website. Instead, “bankofamerica” is a path within www.xyz.com.&lt;/li&gt;
   &lt;/ul&gt;   &lt;p&gt;If you’re using a banking website or conducting an online transaction with sensitive information such as your password or account number, check the address bar first! Make sure that the scheme is “&lt;strong&gt;https://&lt;/strong&gt;” and there’s a padlock icon in your browser’s address bar. “https://” indicates that the data is being transported between the server and browser using a secure connection.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-url page-5&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;Through a secure connection, the full URL for Bank of America’s website should look like this: &lt;strong&gt;https://&lt;/strong&gt;www.bankofamerica.com. A secure connection ensures that no one else is eavesdropping or interfering with the sensitive information that you’re sending. So “https://” is a good sign. But remember, it’s still important to make sure that you’re actually talking to a legitimate website by checking the hostname of a URL. (It would defeat the purpose to have a secure connection to a bogus website!)&lt;/p&gt;   &lt;p&gt;In the next chapter, we’ll look at how a typed URL into the browser’s address bar takes you to the right web page.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/url02.png&quot; /&gt;&lt;/div&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-7 title-dns page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;IP Addresses and DNS&lt;/h2&gt;  &lt;h3&gt;or, the phantom phone booth&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/dns01.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;Do you wonder how your browser finds the right web page when you type a URL into its address bar?&lt;/p&gt;   &lt;p&gt;Every URL (say, “www.google.com”) has its own numbered Internet Protocol or IP address.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;An IP address looks something like this:&lt;/p&gt;   &lt;span class=&quot;ip-address&quot;&gt;&lt;strong&gt;74.125.19.147&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
   &lt;p&gt;An IP address is a series of numbers that tells us where a particular device is on the Internet network, be it the google.com server or&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-5 title-dns page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;your computer. It’s a bit like mom’s phone number: just as the phone number tells an operator which house to route a call to so it reaches your mom, an IP address tells your computer which other device on the Internet to communicate with — to send data to and get data from.&lt;/p&gt;   &lt;p&gt;Your browser doesn’t automatically know every IP address for the 35 billion (or more) devices on the planet that are connected on the Internet. It has to look each one up, using something called the Domain Name System. The DNS is essentially the “phone book” of the Web:  while a phone book translates a name like “Acme Pizza” into the right phone number to call, the DNS translates a URL or web address (like “www.google.com”) into the right IP address to contact (like “74.125.19.147”) in order to get the information that you want (in this case, the Google homepage).&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;So when you type in “google.com” into your web browser, the browser looks up google.com’s IP address through a DNS and contacts it, waits for a response to confirm the connection, and then sends your request for google.com’s web page to that IP address. Google’s server at that IP address will then send back the requested web page to your computer’s IP address for your browser to display.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-dns page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;In many ways, fetching and loading a web page in the browser is not unlike making a phone call. When you make a phone call, you’d probably look up the number, dial, wait for someone to pick up, say “hello,” and wait for a response before you start the conversation. Sometimes you have to redial if there are problems connecting. On the web, a similar process happens in a split-second; all you see is that you’ve typed “www.google.com” into the browser and the Google home page appears.&lt;/p&gt;   &lt;p&gt;In the next chapter, we’ll look at how we can verify the identity of a website that we fetch and load in the browser through the &lt;strong&gt;extended validation certificate&lt;/strong&gt;.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-5 title-identity page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;h2&gt;Validating Identities Online&lt;/h2&gt;   &lt;h3&gt;or, “Dr. Livingstone, I presume?”&lt;/h3&gt;   &lt;p class=&quot;drop-cap&quot;&gt;In the physical world, you can see the people you share information with. You talk to them face-to-face, or meet them in a trusted place like a bank branch. That’s how you make your first judgments about giving them your trust.&lt;/p&gt;   &lt;p&gt;But online, it can be hard to tell who’s behind any website. The visual cues we normally rely on can be faked. For example, a phony webpage could copy the logo, icon, and&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;and design of your own bank’s website — almost as if they had set up a fake storefront on your block.&lt;/p&gt;   &lt;p&gt;Fortunately, there are tools to help you determine if a website is genuine or not. Some websites have an &lt;strong&gt;extended validation certificate&lt;/strong&gt; that allows you to determine the&lt;/p&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/identity01.png&quot; /&gt;&lt;/div&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-5 title-identity page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;name of the organization that runs the web site. The extended validation certificate gives you the information you need to help ensure that you’re not entrusting your information to a fake website.&lt;/p&gt;   &lt;p&gt;Here’s an example of extended validation in action in the browser. On a bank’s website that has been verified through extended validation, the bank’s name is displayed in a green box between the lock icon and the web address in the address bar:&lt;/p&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/identity02.png&quot; /&gt;&lt;/div&gt;   &lt;span class=&quot;image-description&quot;&gt;Example of the extended validation indicator in Chrome&lt;/span&gt;&lt;br /&gt;
  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;On most browsers, the extended validation indicator can be found by looking for the name of the organization in the green section of the browser’s address bar. You can also click on the indicator to see the website’s security information and inspect its digital certificate.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-7 title-identity page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;p&gt;To receive extended validation certification, a website owner has to pass a series of checks confirming their legal identity and authority. In the previous example, extended validation on bankofamerica.com verifies that yes, the website is from the actual Bank of America. You can think of this certification as something that ties the domain name of the web address back to some real-world identity.&lt;/p&gt;  &lt;p&gt;It’d be wise to share sensitive information with a website only if you trust the organization responsible for the site. So the next time you’re about to perform a sensitive transaction, take a moment to keep a look out for the website’s security information.  You’ll be glad you did.&lt;/p&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-7 title-page-load page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;Evolving to a Faster Web&lt;/h2&gt;  &lt;h3&gt;or, speeding up images, video, and JavaScript on the web&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/pageload01.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;The web today is an amazing visual and interactive stew, teeming with images, photos, videos, and whizzy web apps. Some of the web’s most vivid experiences come from images and videos, from shared photo albums&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;of family vacations to online video coverage from journalists in war zones.&lt;/p&gt;   &lt;p&gt;It’s a far cry from the simple text and links that started it all. And it means that every time&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-6 title-page-load page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;your browser loads a web page, much more data and complex code needs to be processed.&lt;/p&gt;   &lt;p&gt;How much more, and how much more complex? A few astounding statistics:&lt;/p&gt;   &lt;ul&gt;    &lt;li&gt;Images and photos now make up about &lt;strong&gt;65% of the information&lt;/strong&gt; on a typical web page, in terms of bytes per page.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;24 hours of video&lt;/strong&gt; are uploaded to YouTube every minute of the day. (That’s like Hollywood releasing 130,000 new full-length movies every week, though with less popcorn.)&lt;/li&gt;
    &lt;li&gt;JavaScript programs have grown from a few lines to &lt;strong&gt;several hundred kilobytes&lt;/strong&gt; of source code that must be processed each time a web page or application loads.&lt;/li&gt;
   &lt;/ul&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;So won’t all these gushing floods of data slow down page loads on the browser? Will the Internet clog up and turn to molasses soon?&lt;/p&gt;   &lt;p&gt;Probably not. Images and photos became commonplace on the web when computer scientists found ways to compress them into smaller files that could be sent and downloaded more easily. GIF and JPEG were the most popular of those early file-compression systems. Meanwhile, plug-ins were invented to work around the early limitations of HTML so that video could be embedded and played in web pages.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-page-load page-3&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p&gt;Looking ahead, the &amp;lt;video&amp;gt; tag in HTML5 makes it easy for videos to be embedded and played in web pages. Google is also collaborating with the web community on WebM, an effort to build out a free, open-source video format that adapts to the computing power and bandwidth conditions on the web, so quality video can be delivered to a computer in a farm house in Nebraska or a smartphone in Nairobi.&lt;/p&gt;   &lt;p&gt;In the meantime, it’s true that web pages with lots of big photos or other images can still be very slow to load. That’s why a few engineers at Google have been experimenting with new ways to compress images even further while keeping the same image quality and resolution. The early results? Very promising. They’ve come up with a new image format called WebP that cuts down the average image file size by 39%.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;The engines that run JavaScript code in modern web browsers have also been redesigned to process code faster than ever before. These fast JavaScript engines, such as Google Chrome’s V8, are now a core part of any modern web browser. That means the next generation of fabulously useful JavaScript-based web applications won’t be hampered by the complexity of more JavaScript code.&lt;/p&gt;   &lt;p&gt;Another technique that modern browsers like Chrome use to fetch and load web pages much more quickly is called “DNS pre-resolution”. The process of translating a web address into an IP address through a DNS lookup, or vice versa, is often called “resolving.” With DNS pre-resolution, Chrome will simultaneously look up all the other links on the web page and pre-resolve those links into IP addresses in the background. So when&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-page-load page-4&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;you do actually click on one of the links on the page, the browser is ready to take you to the new page instantly. Over time, Chrome also learns from past visits so that the next time you go to a web page that you’ve previously visited, Chrome knows to automatically pre-resolve all the relevant links and elements on the web page.&lt;/p&gt;   &lt;p&gt;Someday, browsers might be able to predict, &lt;i&gt;before&lt;/i&gt; the page loads, not only which links to pre-resolve, but also which website elements (like images or videos) to pre-fetch ahead of time.  That will make the web even quicker.&lt;/p&gt;   &lt;p&gt;Soon enough, we hope, loading new pages on the browser will be as fast as flipping the pages of a picture book.&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-7 title-open-source page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;h2&gt;Open Source and Browsers&lt;/h2&gt;  &lt;h3&gt;or, standing on the shoulders of giants&lt;/h3&gt;  &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/opensource01.png&quot; /&gt;&lt;/div&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;drop-cap&quot;&gt;Today’s Internet stands on the shoulders of giants: the technologists, thinkers, developers, and organizations who continue to push the boundaries of innovation and share what they’ve learned.&lt;/p&gt;   &lt;p&gt;This spirit of sharing is at the very heart of&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;open-source software. “Open source” means that the inner workings (or “source code”) of a software are made available to all, and the software is written in an open, collaborative way. Anyone can look into the source code, see how it works, tweak it or add to it, and reuse it&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-open-source page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;in other products or services.&lt;/p&gt;   &lt;p&gt;Open-source software plays a big role in many parts of the web, including today’s web browsers. The release of the open-source browser Mozilla Firefox paved the way for many exciting new browser innovations. Google Chrome was built with some components from Mozilla Firefox and with the open-source rendering engine WebKit, among others. In the same spirit, the code for Chrome was made open source so that the global web community could use Chrome’s innovations in their own products, or even improve on the original Chrome source code.&lt;/p&gt;   &lt;p&gt;Web developers and everyday users aren’t the only ones to benefit from the faster, simpler, and safer open-source browsers. Companies like Google also benefit from sharing their ideas openly. Better browsers&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;mean a better web experience for everyone, and that makes happier users who browse the web even more.  Better browsers also let companies create web apps with the latest cutting-edge features, and that makes users happy, too.&lt;/p&gt;   &lt;p&gt;Browsers aren’t the only part of the web that can take the open-source approach. Talk to any group of web developers and you’re likely to hear that they use an open-source Apache HTTP Server to host and serve their websites, or that they developed their code on computers powered by the Linux open-source operating system — just to name a few examples. The good work of the open source community continues to help make the web even better: a web that can be the broad shoulders for the next generation.&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;﻿&lt;section class=&quot;template-start-5 title-conclusion page-1&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;h2&gt;19 Things Later...&lt;/h2&gt;   &lt;h3&gt;or, a day in the clouds&lt;/h3&gt;   &lt;p class=&quot;continuation&quot;&gt;...and here we are at Thing 20. Let&#39;s recap.&lt;/p&gt;   &lt;p&gt;Today’s web is a colorful, visual, practical, nutty, busy, friend-filled, fun and incredibly useful place.  Many of us now live a life of &lt;a href=&quot;/cloud-computing/1&quot;&gt;cloud computing&lt;/a&gt; on the &lt;a href=&quot;/what-is-the-internet/1&quot;&gt;Internet&lt;/a&gt;: we read the news, watch movies, chat with friends, and do our daily tasks online with web-based applications right the browser. &lt;a href=&quot;/web-apps/1&quot;&gt;Web apps&lt;/a&gt; let us do that from anywhere in the world, even if we left our laptops at home.&lt;/p&gt;   &lt;p&gt;It’s all possible thanks to the evolution of web standards like &lt;a href=&quot;/html/1&quot;&gt;HTML, JavaScript, and CSS&lt;/a&gt;,&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p class=&quot;continuation&quot;&gt;as well as &lt;a href=&quot;/plugins/1&quot;&gt;browser plug-ins&lt;/a&gt;. New capabilities in &lt;a href=&quot;/html5/1&quot;&gt;HTML5&lt;/a&gt; are helping developers create the next generation of truly inventive web apps.&lt;/p&gt;   &lt;div class=&quot;image1&quot;&gt;&lt;img src=&quot;http://www.20thingsilearned.com/media/illustrations/conclusion01.png&quot; /&gt;&lt;/div&gt;   &lt;p class=&quot;continuation&quot;&gt;What else is taking shape in the clouds?&lt;/p&gt;   &lt;ul&gt;    &lt;li&gt;It takes a &lt;a href=&quot;/old-vs-new-browsers/1&quot;&gt;modern browser&lt;/a&gt; to make the most of the web’s modern features.&lt;/li&gt;
   &lt;/ul&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;﻿&lt;section class=&quot;template-inner-2 title-conclusion page-2&quot;&gt;&lt;br /&gt;
 &lt;div class=&quot;page&quot;&gt;  &lt;div class=&quot;left&quot;&gt;   &lt;ul&gt;    &lt;li&gt;Modern browsers also &lt;a href=&quot;/browser-protection/1&quot;&gt;help protect&lt;/a&gt; against &lt;a href=&quot;/malware/1&quot;&gt;malware and phishing&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;/open-source/1&quot;&gt;Open-source&lt;/a&gt; sharing has given us better browsers and a faster, richer, more complex web. And open-source brainpower is making the future of the web even brighter.&lt;/li&gt;
    &lt;li&gt;What’s in that bright future? &lt;a href=&quot;/threed/1&quot;&gt;3D in the browser&lt;/a&gt;, &lt;a href=&quot;/page-load/1&quot;&gt;faster speeds&lt;/a&gt;, and &lt;a href=&quot;/sync/1&quot;&gt;sync&lt;/a&gt; across all devices, among other fine &lt;a href=&quot;/dns/1&quot;&gt;things&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Being an informed citizen of the web requires some self-education — for instance, learning to control your browser’s &lt;a href=&quot;/browser-privacy/1&quot;&gt;privacy settings&lt;/a&gt; for various types of content including &lt;a href=&quot;/browser-cookies/1&quot;&gt;cookies&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;You’re also safer on the web when you pay attention to visual cues in the browser, like checking the URLs you’re sent to, and looking for an “https://” &lt;a href=&quot;/url/1&quot;&gt;secure connection&lt;/a&gt; or &lt;a href=&quot;/identity/1&quot;&gt;extended validation&lt;/a&gt;.&lt;/li&gt;
   &lt;/ul&gt;   &lt;p&gt;The final takeaways?&lt;/p&gt;  &lt;/div&gt;  &lt;div class=&quot;right&quot;&gt;   &lt;p&gt;&lt;strong&gt;Use a modern browser,&lt;/strong&gt; first and foremost.  Or try a new one and see if it brings you happier browsing that’s better suited to your needs.&lt;/p&gt;   &lt;p&gt;&lt;strong&gt;The web will keep evolving — dramatically!&lt;/strong&gt;  Support cutting-edge web technologies like HTML5, CSS3 and WebGL, because they’ll help the web community imagine and create a future of great, innovative web apps.&lt;/p&gt;   &lt;p&gt;&lt;strong&gt;Lastly, try new things.&lt;/strong&gt; The web is a new and exciting place every day, so try tasks that you didn’t think could be done online -- such as researching your ancestry back ten generations, or viewing a real-time webcam image from a climbing basecamp in the Himalayas.  You might be surprised by what you find!&lt;/p&gt;  &lt;/div&gt; &lt;/div&gt;&lt;/section&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;&lt;/div&gt;﻿  &lt;br /&gt;
  &lt;footer&gt;&lt;br /&gt;
   &lt;p class=&quot;curator&quot;&gt;Published by Google 2010&lt;/p&gt;  &lt;/footer&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/7196887765519962791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/11/googles-20thingsilearnedcom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/7196887765519962791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/7196887765519962791'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/11/googles-20thingsilearnedcom.html' title='google&#39;s 20thingsilearned.com'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-4366294203022272019</id><published>2010-11-26T11:19:00.000+01:00</published><updated>2010-11-26T11:19:47.719+01:00</updated><title type='text'>Sams Teach Yourself C# in 24 Hours (Hour 1)</title><content type='html'>&lt;h1&gt;Sams Teach Yourself C# in 24 Hours&lt;/h1&gt;&lt;a href=&quot;http://www.blogger.com/title/9780672322877&quot;&gt;&lt;img alt=&quot;Sams Teach Yourself C# in 24 Hours&quot; class=&quot;product&quot; src=&quot;/ShowCover.aspx?isbn=9780672322877&amp;amp;type=d&quot; /&gt;&lt;/a&gt; &lt;div class=&quot;meta&quot;&gt;By &lt;a href=&quot;http://www.blogger.com/authors/bio.aspx?a=5bbc9678-6c95-44db-bdfe-6573b40d9af7&quot;&gt;James Foxall&lt;/a&gt;  and &lt;a href=&quot;http://www.blogger.com/authors/bio.aspx?a=c6fb19dd-7186-47e8-b260-42cfeeac5848&quot;&gt;Wendy  Haro-Chun&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://www.blogger.com/title/9780672322877&quot;&gt;More Information&lt;/a&gt;&lt;br /&gt;
Learn C#, Microsoft&#39;s newest programming language, one step at a time from  leading expert, James Foxall. ...&lt;br /&gt;
&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=2&quot;&gt;Copyright&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=3&quot;&gt;About the  Authors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=4&quot;&gt;Acknowledgments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=5&quot;&gt;Tell Us What You  Think!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=6&quot;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=7&quot;&gt;Audience and  Organization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=8&quot;&gt;Conventions Used  in This Book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=9&quot;&gt;Onward and  Upward!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=10&quot;&gt;Part I. The  Visual Studio Environment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=11&quot;&gt;Hour 1. A C#  Programming Tour&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=28&quot;&gt;Hour 2.  Navigating C#&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=39&quot;&gt;Hour 3.  Understanding Objects and Collections&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=49&quot;&gt;Hour 4.  Understanding Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=55&quot;&gt;Part II.  Building a User Interface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=56&quot;&gt;Hour 5. Building  FormsPart I&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=63&quot;&gt;Hour 6. Building  FormsPart II&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=73&quot;&gt;Hour 7. Working  with the Traditional Controls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=83&quot;&gt;Hour 8. Advanced  Controls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=92&quot;&gt;Hour 9. Adding  Menus and Toolbars to Forms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=100&quot;&gt;Hour 10.  Drawing and Printing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=112&quot;&gt;Part III.  Making Things HappenProgramming!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=113&quot;&gt;Hour 11.  Creating and Calling Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=123&quot;&gt;Hour 12. Using  Constants, Data Types, Variables, and Arrays&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=132&quot;&gt;Hour 13.  Performing Arithmetic, String Manipulation, and Date/Time Adjustments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=141&quot;&gt;Hour 14. Making  Decisions in C# Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=148&quot;&gt;Hour 15.  Looping for Efficiency&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=154&quot;&gt;Hour 16.  Debugging Your Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=162&quot;&gt;Hour 17.  Designing Objects Using Classes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=168&quot;&gt;Hour 18.  Interacting with Users&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=176&quot;&gt;Part IV.  Working with Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=177&quot;&gt;Hour 19.  Performing File Operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=184&quot;&gt;Hour 20.  Controlling Other Applications Using Automation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=191&quot;&gt;Hour 21.  Working with a Database&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=199&quot;&gt;Part V.  Deploying Solutions and Beyond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=200&quot;&gt;Hour 22.  Deploying a Solution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=207&quot;&gt;Hour 23.  Introduction to Web Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=216&quot;&gt;Hour 24. The  10,000-Foot View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;img alt=&quot;Expand&quot; src=&quot;/display/InformIT/images/icons/plus.png&quot; /&gt;&lt;a href=&quot;http://www.blogger.com/library/content.aspx?b=STY_Csharp_24hours&amp;amp;seqNum=226&quot;&gt;Appendix A.  Answers to Quizzes/Exercises&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Copyright&lt;/h2&gt;&lt;h3&gt;Copyright © 2002 by Sams Publishing&lt;/h3&gt;All rights reserved. No part of this book shall be reproduced, stored in a  retrieval system, or transmitted by any means, electronic, mechanical,  photocopying, recording, or otherwise, without written permission from the  publisher. No patent liability is assumed with respect to the use of the  information contained herein. Although every precaution has been taken in the  preparation of this book, the publisher and author assume no responsibility for  errors or omissions. Nor is any liability assumed for damages resulting from the  use of the information contained herein.&lt;br /&gt;
Library of Congress Catalog Card Number: 2001093572&lt;br /&gt;
Printed in the United States of America&lt;br /&gt;
First Printing: February 2002&lt;br /&gt;
05 04 03 02 4 3 2 1&lt;br /&gt;
&lt;h3&gt;Trademarks&lt;/h3&gt;All terms mentioned in this book that are known to be trademarks or service  marks have been appropriately capitalized. Sams Publishing cannot attest to the  accuracy of this information. Use of a term in this book should not be regarded  as affecting the validity of any trademark or service mark.&lt;br /&gt;
&lt;h3&gt;Warning and Disclaimer&lt;/h3&gt;Every effort has been made to make this book as complete and as accurate as  possible, but no warranty or fitness is implied. The information provided is on  an &quot;as is&quot; basis. The author and the publisher shall have neither liability nor  responsibility to any person or entity with respect to any loss or damages  arising from the information contained in this book.&lt;br /&gt;
&lt;h3&gt;Credits&lt;/h3&gt;&lt;blockquote&gt; &lt;strong&gt;Associate Publisher&lt;/strong&gt; &lt;br /&gt;
Linda Engelman&lt;br /&gt;
&lt;strong&gt;Acquisitions Editor&lt;/strong&gt; &lt;br /&gt;
Sondra Scott&lt;br /&gt;
&lt;strong&gt;Development Editor&lt;/strong&gt; &lt;br /&gt;
Ginny Bess&lt;br /&gt;
&lt;strong&gt;Managing Editor&lt;/strong&gt; &lt;br /&gt;
Charlotte Clapp&lt;br /&gt;
&lt;strong&gt;Project Editor&lt;/strong&gt; &lt;br /&gt;
Carol Bowers&lt;br /&gt;
&lt;strong&gt;Copy Editor&lt;/strong&gt; &lt;br /&gt;
Barbara Hacha&lt;br /&gt;
&lt;strong&gt;Indexer&lt;/strong&gt; &lt;br /&gt;
Erika Millen&lt;br /&gt;
&lt;strong&gt;Proofreader&lt;/strong&gt; &lt;br /&gt;
Jody Larsen&lt;br /&gt;
&lt;strong&gt;Technical Editors&lt;/strong&gt; &lt;br /&gt;
Joel Mueller&lt;br /&gt;
Deon Schaffer&lt;br /&gt;
&lt;strong&gt;Team Coordinator&lt;/strong&gt; &lt;br /&gt;
Lynne Williams&lt;br /&gt;
&lt;strong&gt;Media Developer&lt;/strong&gt; &lt;br /&gt;
Dan Scherf&lt;br /&gt;
&lt;strong&gt;Interior Designer&lt;/strong&gt; &lt;br /&gt;
Gary Adair&lt;br /&gt;
&lt;strong&gt;Cover Designer&lt;/strong&gt; &lt;br /&gt;
Aren Howell&lt;br /&gt;
&lt;strong&gt;Page Layout&lt;/strong&gt; &lt;br /&gt;
D&amp;amp;G Limited, LLC&lt;/blockquote&gt;&lt;h2&gt;Dedication&lt;/h2&gt;&lt;em&gt;To my children, Ethan and Tess.&lt;/em&gt; &lt;br /&gt;
&lt;em&gt;—James Foxall&lt;/em&gt; &lt;br /&gt;
&lt;em&gt;To my parents, Olga and Alfonso, and my love, Dave.&lt;/em&gt; &lt;br /&gt;
&lt;em&gt;—Wendy Haro-Chun&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;About the Authors&lt;/h2&gt;&lt;strong&gt;James Foxall&lt;/strong&gt; is Vice President of Development and Support  for Tigerpaw Software, Inc. (&lt;a href=&quot;http://www.tigerpawsoftware.com/&quot;&gt;www.tigerpawsoftware.com&lt;/a&gt;)—an Omaha,  Nebraska, Microsoft Certified Partner specializing in commercial database  applications. James manages a commercial suite of programs designed to automate  contact management, marketing, service and repair, proposal generation, and  inventory control and purchasing. James&#39;s experience in creating certified  Office-compatible software has made him an authority on application interface  and behavior standards of applications for the Microsoft Windows and Microsoft  Office environments.&lt;br /&gt;
James has personally written more than 150,000 lines of commercial production  code, both in single programmer and multiple programmer environments. He is the  author of numerous books, including &lt;em&gt;Practical Standards for Microsoft Visual  Basic&lt;/em&gt; and &lt;em&gt;MCSD in a Nutshell: The Visual Basic Exams&lt;/em&gt;, and he has  written articles for &lt;em&gt;Access-Office-VBA Advisor&lt;/em&gt; and &lt;em&gt;Visual Basic  Programmer&#39;s Journal&lt;/em&gt;. James is a Microsoft Certified Solution Developer and  an international speaker on Microsoft programming technologies. When not  programming or writing about programming, he enjoys spending time with his  family, playing guitar, doing battle over the chess board, listening to Pink  Floyd, playing computer games, and (believe it or not) programming! You can  reach James at &lt;a href=&quot;mailto:jamesf@tigerpawsoftware.com&quot;&gt;jamesf@tigerpawsoftware.com&lt;/a&gt;.&lt;br /&gt;
&lt;strong&gt;Wendy Haro-Chun,&lt;/strong&gt; MCSD, holds a B.S. in Computer Science and  an M.B.A. with an emphasis in International Business. She is Assistant Vice  President of Research and Development for SunGard Insurance Systems. Her areas  of technological expertise include .NET, C#, &lt;em&gt;ASP&lt;/em&gt;, DHTML, JavaScript,  &lt;em&gt;XML&lt;/em&gt;, COM, VB, &lt;em&gt;ADO&lt;/em&gt;, and Microsoft SQL Server. Wendy has also  served as technical editor and reviewer on numerous computer technology books.  She lives in Miami with her husband, Dave, and her two beagles, Buster and  Belle. She can be reached at &lt;a href=&quot;mailto:wharo@bellsouth.net&quot;&gt;wharo@bellsouth.net&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Acknowledgments&lt;/h2&gt;&lt;strong&gt;James&#39;s acknowledgements:&lt;/strong&gt; &lt;br /&gt;
To Sondra Scott, both for the opportunity to do this book as well as just  being a great person to work for!&lt;br /&gt;
To Wendy for her wonderful contributions, Carol Bowers, Ginny Bess, Joel  Mueller, Deon Schaffer, and everyone else that had a hand in this book—thanks  guys!&lt;br /&gt;
To Matt Wagner at Waterside Productions for all his help behind the  scenes.&lt;br /&gt;
To my wife and children for always supporting and encouraging me through  these projects. You are the best!&lt;br /&gt;
Finally, a special thanks to Mike Pizzo at Microsoft for his contributions to  the ADO.NET chapter.&lt;br /&gt;
&lt;strong&gt;Wendy&#39;s acknowledgements:&lt;/strong&gt; &lt;br /&gt;
I would like to thank Sondra Scott for giving me the opportunity to work on  this great project. I would also like to thank Ginny Bess and Carol Bowers for  making sure everything came together and technical editors Joel and Deon for  making sure this new technology worked the way I said it did. Also, special  thanks to Peter Farquharson, David Marcato, Deon Schaffer, and Larry Wall for  helping to get this project started on a good foundation.&lt;br /&gt;
To James Foxall, I have enjoyed reading your VB .NET book, and it has been a  great pleasure working with you on this C# book.&lt;br /&gt;
A big thanks goes out to my husband, Dave, for his constant support in all my  projects and for always believing in me.&lt;br /&gt;
To Olga and Alfonso, thank you for all the support, encouragement, and love  you have always given me.&lt;br /&gt;
Finally, thanks to all my relatives and friends for buying this book!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Tell Us What You Think!&lt;/h2&gt;As the reader of this book, &lt;em&gt;you&lt;/em&gt; are our most important critic and  commentator. We value your opinion and want to know what we&#39;re doing right, what  we could do better, what areas you&#39;d like to see us publish in, and any other  words of wisdom you&#39;re willing to pass our way.&lt;br /&gt;
As an Associate Publisher for Sams Publishing, I welcome your comments. You  can fax, e-mail, or write me directly to let me know what you did or didn&#39;t like  about this book—as well as what we can do to make our books stronger.&lt;br /&gt;
&lt;em&gt;Please note that I cannot help you with technical problems related to the  topic of this book, and that because of the high volume of mail I receive, I  might not be able to reply to every message.&lt;/em&gt; &lt;br /&gt;
When you write, please be sure to include this book&#39;s title and author as  well as your name and phone or fax number. I will carefully review your comments  and share them with the author and editors who worked on the book.&lt;br /&gt;
&lt;table&gt;&lt;thead&gt; &lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;Fax: &lt;/td&gt; &lt;td&gt;317-581-4770 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;E-mail: &lt;/td&gt; &lt;td&gt;&lt;a href=&quot;mailto:feedback@samspublishing.com&quot;&gt;feedback@samspublishing.com&lt;/a&gt;  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Mail: &lt;/td&gt; &lt;td&gt; Linda&amp;nbsp;Engelman&lt;br /&gt;
Sams&amp;nbsp;Publishing&lt;br /&gt;
201&amp;nbsp;West&amp;nbsp;103rd&amp;nbsp;Street&lt;br /&gt;
Indianapolis,&amp;nbsp;IN&amp;nbsp;46290&amp;nbsp;USA&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;With Microsoft&#39;s introduction of the .NET platform, a new, exciting  programming language was born. C# is the language of choice for developing on  the .NET platform, and Microsoft has even written a majority of the .NET  Framework using C#. C# is a modern object-oriented language designed and  developed from the ground up with a best-of-breed mentality, implementing and  expanding on the best features and functions found in other languages. C#  combines the power and flexibility of C++ with the simplicity of Visual  Basic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Audience and Organization&lt;/h2&gt;This book is targeted toward those who have little or no programming  experience. The book has been structured and written with a purpose, and that is  to get you productive as quickly and as smoothly as possible. I&#39;ve used my  experiences from writing large commercial applications to create a book that,  hopefully, cuts through the fluff and teaches you what you need to know. All too  often, authors fall into the trap of focusing on the technology rather than on  the practical application of the technology. I&#39;ve worked hard to keep this book  focused on teaching you practical skills that you can apply immediately toward a  development project. Please feel free to send me your suggestions or success  stories at &lt;a href=&quot;http://www.blogger.com/jamesf@tigerpawsoftware.com&quot;&gt;jamesf@tigerpawsoftware.com&lt;/a&gt;.&lt;br /&gt;
This book is divided into five parts, each of which focuses on a different  aspect of developing applications with C#. These parts generally follow the flow  of tasks you&#39;ll perform as you begin creating your own programs using C#. I  recommend that you read them in the order in which they appear.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Part I The Visual Studio Environment teaches you about the Visual Studio&#39;s  C# development environment, including how to navigate and access &#39;numerous  tools. In addition, you&#39;ll learn some key development concepts such as objects,  collections, and events.&lt;/li&gt;
&lt;li&gt;Part II Building a User Interface shows you how to build attractive and  functional user interfaces. In this part, you&#39;ll learn about forms and  controlsthe user-interface elements such as text boxes and list boxes.&lt;/li&gt;
&lt;li&gt;Part III Making Things HappenProgramming! teaches you the nuts and bolts of  C# programmingand there&#39;s a lot to learn. You&#39;ll discover how to create methods,  as well has how to store data, perform loops, and make decisions in code. After  you&#39;ve learned the core programming skills, you&#39;ll move into object-oriented  programming and debugging applications.&lt;/li&gt;
&lt;li&gt;Part IV Working with Data introduces you to working with a database and  shows you how to automate external applications such as Word and Excel. In  addition, this part teaches you how to manipulate a user&#39;s file system.&lt;/li&gt;
&lt;li&gt;Part V Deploying Solutions and Beyond shows you how to distribute an  application that you&#39;ve created to an end user&#39;s computer. Then, the focus is  brought back a bit to take a look at Web programming and Microsoft&#39;s .NET  initiative from a higher, less-technical level.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Conventions Used in This Book&lt;/h2&gt;This book uses several conventions to help you prioritize and reference the  information it contains:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Tips highlight information that can make your C# programming more  effective.&lt;/li&gt;
&lt;li&gt;Cautions focus your attention on problems or side effects that can occur in  specific situations.&lt;/li&gt;
&lt;li&gt;Notes provide useful sidebar information that you can read immediately or  circle back to without losing the flow of the topic at hand.&lt;/li&gt;
&lt;li&gt;New Term icons signal places where new terminology is first used and  defined. Such terminology appears in an italic typeface for emphasis.&lt;/li&gt;
&lt;/ul&gt;In addition, this book uses various typefaces to help you distinguish code  from regular English. Code is presented in a &lt;tt&gt;monospace&lt;/tt&gt; font.  Placeholderswords or characters used temporarily to represent the real words or  characters you would type in codeare typeset in &lt;tt&gt;&lt;em&gt;italic  monospace&lt;/em&gt;&lt;/tt&gt;.&lt;br /&gt;
Some code statements presented in this book are too long to appear on a  single line. In these cases, a line-continuation character (an underscore) is  used to indicate that the following line is a continuation of the current  statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Onward and Upward!&lt;/h2&gt;This is an exciting time to be learning how to program, and it&#39;s my sincerest  wish that when you finish this book, you will feel capable of creating,  debugging, and deploying modest C# programs using many C# and Visual Studio  tools. Although you won&#39;t be an expert, you&#39;ll be surprised at how much you&#39;ve  learned. And hopefully, this book will help you determine your future direction  as you proceed down the road to C# mastery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Part I: The Visual Studio Environment&lt;/h2&gt;Before you can begin to create C# applications for Windows and the Web, you  need to have a thorough grasp of the C# environment as well as some key  development concepts. In this part, you&#39;ll get an overview of developing a  project in C#, you&#39;ll learn all about the C# interface, and you&#39;ll learn about  objects, collections, and events—concepts that are critical to your success as a  C# developer.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Hour 1: A C# Programming Tour&lt;/li&gt;
&lt;li&gt;Hour 2: Navigating C#&lt;/li&gt;
&lt;li&gt;Hour 3: Understanding Objects and Collections&lt;/li&gt;
&lt;li&gt;Hour 4: Understanding Events&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;h2&gt;Hour 1. A C# Programming Tour&lt;/h2&gt;Learning a new programming language can be intimidating. If you&#39;ve never  programmed before, the act of typing seemingly cryptic text to produce sleek and  powerful applications probably seems like a black art, and you may wonder how  you&#39;ll ever learn everything you need to know. The answer is, of course, one  step at a time. The first step to learning a language is the same as that of any  other activity—building confidence. Programming is part art and part science.  Although it may seem like magic, it&#39;s more akin to illusion; after you know how  things work, a lot of the mysticism goes away, freeing you to focus on the  mechanics necessary to produce the desired result.&lt;br /&gt;
In this hour, you&#39;ll complete a quick tour that takes you step-by-step  through creating a complete, albeit small, C# program. I&#39;ve yet to see a &quot;Hello  World&quot; program that&#39;s the least bit helpful (they usually do nothing more than  print &quot;hello world&quot; to the screen—oh, fun). So instead, you&#39;ll create a  picture-viewer application that lets you view Windows bitmaps and icons on your  computer. You&#39;ll learn how to let a user browse for a file and how to display a  selected picture file on the screen, both of which are skills that will come in  handy in later applications that you create. Creating large, commercial  solutions is accomplished by way of a series of small steps. After you&#39;ve  finished creating this small project, you&#39;ll have an overall feel for the  development process.&lt;br /&gt;
The highlights of this hour include the following:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Building a simple, yet functional, C# application&lt;/li&gt;
&lt;li&gt;Letting a user browse a hard drive&lt;/li&gt;
&lt;li&gt;Displaying a picture from a file on disk&lt;/li&gt;
&lt;li&gt;Getting familiar with some programming lingo&lt;/li&gt;
&lt;li&gt;Learning about the Visual Studio—C# &lt;em&gt;IDE&lt;/em&gt; &lt;/li&gt;
&lt;/ul&gt;I hope that by the end of this hour, you&#39;ll realize just how much fun it is  to program using C#.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Starting C#&lt;/h2&gt;You must become familiar with a few terms before you begin to create programs  in C#:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Distributable Component The final, compiled version of a project. Components  can be distributed to other people and other computers and do not require C# to  run (although the .NET Framework is required, which you&#39;ll learn about in coming  hours). Distributable components are also called programs. In Hour 22,  &quot;Deploying a Solution,&quot; you&#39;ll learn how to distribute the Picture Viewer  program that you&#39;re about to build to other computers.&lt;/li&gt;
&lt;li&gt;Project A collection of files that can be compiled to create a distributable  component (program). There are many types of projects, and complex applications  may consist of many projects, such as a Windows Application project and support  DLL projects.&lt;/li&gt;
&lt;li&gt;Solution A collection of projects and files that compose an application or  component.&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;titlte&quot;&gt;NEW TERM&lt;/div&gt;C# is a complete development environment; every tool you&#39;ll need to create  your C# projects is accessed from within Visual Studio. The Visual Studio-C#  environment is called the &lt;em&gt;IDE&lt;/em&gt;, short for Integrated Development  Environment, and it is the design framework in which you build applications. To  work with C# projects, you must first start the Visual Studio  &lt;em&gt;IDE&lt;/em&gt;.&lt;/div&gt;Start the C# &lt;em&gt;IDE&lt;/em&gt; now by choosing Microsoft Visual Studio  &lt;strong&gt;.&lt;/strong&gt;NET from within the Microsoft Visual Studio .NET folder on  your Start menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Creating a New Project&lt;/h2&gt;When you first start Visual Studio .NET, you&#39;re shown the Visual Studio Start  Page tab within the &lt;em&gt;IDE&lt;/em&gt;. Using this page, you can open projects created  previously or create new ones (see &lt;a href=&quot;&quot;&gt;Figure  1.1&lt;/a&gt;). For this quick tour, you&#39;re going to create a new Windows application,  so click New Project to display the New Project dialog box shown in &lt;a href=&quot;&quot;&gt;Figure  1.2&lt;/a&gt;.&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig01.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig01.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.1&lt;/a&gt; You can open existing projects or create new projects from the Visual  Studio Start page.&lt;/div&gt;&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig02.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig02.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.2&lt;/a&gt; The New Project dialog box allows you to create many types of .NET  projects.&lt;/div&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;If you don&#39;t see the Visual Studio Start page, chances are that you&#39;ve  changed the default settings. Hour 2, &quot;Navigating C#,&quot; shows you how to change  them back. For now, be aware that you can create a new project from the File  menu in addition to using the techniques described in this hour.&lt;/div&gt;You can create many types of projects with C#, as well as with the other  supported languages of the .NET platform. The New Project dialog box is used to  specify the type of C# project you want to create. If the Visual C# Projects  folder isn&#39;t selected, click it to display the C# project types and then make  sure the Windows Application icon is selected (if it&#39;s not, click it once to  select it). At the bottom of the New Project dialog box is a Name text box, in  which you specify the name of the project you&#39;re creating; in the Location text  box, you can enter the location in which to save the project files.&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;You should always set these values to something meaningful before creating a  project, or you&#39;ll have more work to do later if you want to move or rename the  project.&lt;/div&gt;Type &lt;strong&gt;Picture Viewer&lt;/strong&gt; into the Name text box to name your  project. There&#39;s no need to change the location where the project files are to  be saved at this time, so go ahead and create the new Windows Application  project by clicking OK. C# creates the new project, complete with one form  (design window) for you to begin building the interface for your application  (see &lt;a href=&quot;&quot;&gt;Figure  1.3&lt;/a&gt;).&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig03.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig03.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.3&lt;/a&gt; New Windows applications start with a blank form; the fun is just  beginning!&lt;/div&gt;Your C# environment may look different from that shown in the figures of this  hour, depending on the edition of C# you&#39;re using, whether you&#39;ve already played  with C#, and other factors such as the resolution of your monitor. All the  elements discussed in this hour, however, exist in all editions of C#. (If your  &lt;em&gt;IDE&lt;/em&gt; doesn&#39;t have a window displayed that is shown in a figure, use the  View menu to display the window.)&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;To create a program that can be run on another computer, you start by  creating a project, and then you compile the project into a component, such as  an executable (a program a user can run) or a DLL (a component that can be used  by other programs and components). The compilation process is discussed in  detail in Hour 22, &quot;Deploying a Solution.&quot; The important thing to note at this  time is that when you hear someone refer to creating or writing a program, just  as you are creating the Picture Viewer program now, they&#39;re referring to the  completion of all steps up to and including compiling the project to a  distributable file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Understanding the C# Environment&lt;/h2&gt;The first time you run C#, you&#39;ll notice that the &lt;em&gt;IDE&lt;/em&gt; contains a lot  of windows, such as the Properties window on the right, which is used to view  and set properties of objects. In addition to these windows, the &lt;em&gt;IDE&lt;/em&gt;  contains a lot of tabs, such as the Toolbox tab on the left edge of the  &lt;em&gt;IDE&lt;/em&gt; (refer to &lt;a href=&quot;&quot;&gt;Figure  1.3&lt;/a&gt;). Clicking a tab displays an associated window. Try this now: click the  Toolbox tab to display the Toolbox window. You can also hover the mouse over a  tab for a few seconds to display the window. To hide the window, simply move the  mouse off the window. To close the window completely, click the Close (X) button  in the window&#39;s title bar.&lt;br /&gt;
You can adjust the size and position of any of these windows, and you can  even hide and show them at will. You&#39;ll learn how to customize your design  environment in Hour 2, &quot;Navigating C#.&quot;&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;Unless specifically instructed to do so, do not double-click anything in the  C# design environment. Double-clicking most objects produces an entirely  different outcome than single-clicking does. If you mistakenly double-click an  object on a form, a code window is displayed. At the top of the code window is a  set of tabs: one for the form design and one for the code. Click the tab for the  form design to hide the code window and return to the form.&lt;/div&gt;The Properties window at the right side of the design environment is perhaps  the most important window, and it&#39;s the one you&#39;ll use most often. If your  computer&#39;s display is set for 640x480, you can probably see only a few  properties at this time. This makes it difficult to view and set properties as  you create projects. I highly recommend that you don&#39;t attempt development with  Visual Studio at a resolution below 800x600. Personally, I prefer 1024x768  because it offers plenty of work space. To change your display settings,  right-click your desktop and select Properties.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Changing the Characteristics of Objects&lt;/h2&gt;Almost everything you work with in C# is an object. Forms, for instance, are  objects, as are all the items you can put on a form to build an interface, such  as list boxes and buttons. There are many types of objects (Hour 3,  &quot;Understanding Objects and Collections,&quot; discusses objects in detail). Objects,  in turn, are classified by type. For instance, a form is a Form object, whereas  items you can place on a form are called Control objects, or controls. Some  objects don&#39;t have a physical appearance, but exist only in code. You&#39;ll learn  about these kinds of objects in later hours.&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;NEW TERM&lt;/div&gt;Every object, regardless of whether it has a physical appearance, has a  distinct set of attributes known as &lt;em&gt;properties.&lt;/em&gt; You have certain  properties about you, such as your height and hair color, and C# objects have  properties as well, such as Height and BackColor. Properties define the  characteristics of an object. When you create a new object, the first thing you  need to do is set its properties so that the object appears and behaves in the  way you desire. To display the properties of an object, click the object in its  designer. Click the form now to ensure that its properties are displayed in the  Properties window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Naming Objects&lt;/h2&gt;The property you should set first for any new object is the Name property.  Press F4 to display the Properties window (if it&#39;s not already visible), and  notice the Name given to your default form (the first property listed in the  Properties window)—Form1. When you first create an object, C# gives the object a  unique, generic name based on the object&#39;s type. Although these names are  functional, they aren&#39;t very descriptive. For instance, C# named your form  Form1, but it&#39;s common to have dozens of forms in a project, and it would be  extremely difficult to manage a complicated project if all forms were  distinguishable only by a number (Form2, Form3, and so forth).&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;In actuality, what you&#39;re creating is a form &lt;em&gt;class,&lt;/em&gt; or template,  that will be used to create and show forms at runtime. For the purpose of this  quick tour, I simply refer to it as a form. See Hour 5, &quot;Building Forms—Part I,&quot;  for more information.&lt;/div&gt;To better manage your forms, you should give each one a descriptive name. C#  gives you the chance to name new forms as they&#39;re created. Because C# created  this default form for you, you didn&#39;t get a chance to name it, so you must  change both the filename and name of the form. Change the name of the form now  by clicking the Name property and changing the text from Form1 to  &lt;strong&gt;fclsViewer.&lt;/strong&gt; Notice that this did not change the filename of the  form as it is displayed in the Solution Explorer window. Change the filename now  by right-clicking Form1.cs in the Solution Explorer window, choosing Rename from  the context menu, and changing the text from Form1.cs to  &lt;strong&gt;fclsViewer.cs.&lt;/strong&gt; In future examples, I won&#39;t have you change the  filename each time because you&#39;ll have enough steps to accomplish as it is. I do  recommend, however, that you always change your filenames to something  meaningful in your &#39;real&#39; projects.&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;I use the fcls prefix here to denote that the file is a form class. There are  different types of classes, so using a prefix helps differentiate the classes in  code. You&#39;re not required by C# to use object prefixes, but I highly recommend  that you do so. In Hour 12, &quot;Using Constants, Data Types, Variables, and  Arrays,&quot; you&#39;ll learn the benefits of using a naming convention as well as the  standard prefixes for many .NET objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Setting the Text Property of the Form&lt;/h2&gt;Notice that the text that appears in the form&#39;s title bar says Form1. This is  because C# sets the form&#39;s title bar text to the name of the form when it is  first created, but doesn&#39;t change it when you change the name of the form. The  text in the title bar is determined by the value of the Text property of the  form. Click the form once more so that its properties appear in the Properties  window. Use the scrollbar in the Properties window to locate the Text property  in the Properties window and then change the text to &lt;strong&gt;Picture  Viewer.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&amp;nbsp;&lt;/strong&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Giving the Form an Icon&lt;/h2&gt;Everyone who has used Windows is familiar with icons, which are the little  pictures used to represent programs. Icons most commonly appear in the Start  menu next to the name of their respective programs. In C#, you not only have  control over the icon of your program file, you can also give every form in your  program a unique icon if you want to.&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;The instructions that follow assume you have access to the source files for  the examples in this book. They are available at &lt;a href=&quot;http://www.samspublishing.com/detail_sams.cfm?item=0672320800&quot;&gt;www.samspublishing.com/detail_sams.cfm?item=0672320800&lt;/a&gt;.  You don&#39;t have to use the icon I&#39;ve provided for this example; you can use any  icon of your choice. If you don&#39;t have an icon available, you can skip this  section without affecting the outcome of the example.&lt;/div&gt;To give the form an icon, follow these steps:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;In the Properties window, click the Icon property to select it. &lt;/li&gt;
&lt;li&gt;When you click the Icon property, a small button with three dots appears to  the right of the property. Click this button. &lt;/li&gt;
&lt;li&gt;To locate the HourOne.ico file or another ico file of your choice, use the  Open dialog box that appears. When you&#39;ve found the icon, double-click it, or  click it once to select it and then click Open. &lt;/li&gt;
&lt;/ol&gt;After you&#39;ve selected the icon, it appears in the Icon property along with  the word (Icon). A small version of the icon appears in the upper-left corner of  the form, as well. Whenever this form is minimized, this is the icon that&#39;s  displayed on the Windows taskbar. (Note: This doesn&#39;t change the icon for the  project as a whole. In Hour 22, you&#39;ll learn how to assign an icon to your  distributable file.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Changing the Size of the Form&lt;/h2&gt;Next, you&#39;re going to change the Width and Height properties of the form. The  Width and Height values are shown collectively under the Size property; Width  appears to the left of the comma, Height to the right. You can change the Width  or Height by changing the corresponding number in the Size property. Both values  represent the number of pixels of the dimension. To display and adjust the Width  and Height properties separately, click the small plus sign (+) next to the Size  property (see &lt;a href=&quot;&quot;&gt;Figure  1.4&lt;/a&gt;).&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig04.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig04.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.4&lt;/a&gt; Some properties can be expanded to show more specific  properties.&lt;/div&gt;Change the Width property to &lt;strong&gt;400&lt;/strong&gt; and the Height to  &lt;strong&gt;325.&lt;/strong&gt; To commit a property change, press Tab or click a  different property or window. Your screen should now look like the one in &lt;a href=&quot;&quot;&gt;Figure  1.5&lt;/a&gt;.&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig05.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig05.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.5&lt;/a&gt; A change in the Properties window is reflected as soon as the change is  committed.&lt;/div&gt;When you first created this project, C# saved a copy of the source files in  their initial state. The changes you&#39;ve made so far exist only in memory; if you  were to turn your computer off at this time (don&#39;t do this), you would lose any  and all work up to this point. You should get into the habit of saving your work  frequently. Save the project now by choosing Save All from the File menu or by  clicking the Save All button on the toolbar (it has a picture of stacked disks  on it).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Adding Controls to a Form&lt;/h2&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;NEW TERM&lt;/div&gt;Now that your form has its properties set, you need to add objects to the  form to produce a user interface. Objects that can be placed on a form are  called &lt;em&gt;controls.&lt;/em&gt; Some controls have a visible interface with which a  user can interact, whereas others are always invisible to the user. You&#39;ll use  controls of both types in this example. On the left side of the screen is a tab  titled Toolbox. Click the Toolbox tab now to display the Toolbox window shown in  &lt;a href=&quot;&quot;&gt;Figure  1.6&lt;/a&gt;. The toolbox contains all the controls available in the project, such as  labels and text boxes.&lt;/div&gt;&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig06.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig06.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.6&lt;/a&gt; The toolbox is used to select controls to build a user  interface.&lt;/div&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;You can add a control to a form in three ways, and Hour 5 explains them in  detail. In this hour, you&#39;ll use the technique of double-clicking a tool in the  toolbox.&lt;/div&gt;The toolbox closes itself soon after you&#39;ve added a control to a form and the  pointer is no longer over the toolbox. To make the toolbox stay visible, click  the little picture of a pushpin located in the toolbox&#39;s title bar.&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;Refer to Hour 2, &quot;Navigating C#,&quot; for more information on customizing the  design environment.&lt;/div&gt;Your Picture Viewer interface will consist of the following controls:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Two Button controls&lt;/li&gt;
&lt;li&gt;A PictureBox control&lt;/li&gt;
&lt;li&gt;An OpenFileDialog control&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Designing an Interface&lt;/h2&gt;It&#39;s generally best to design the user interface of a form and then add the  code behind the interface that makes the form functional. The user interface for  your Picture Viewer program will consist of a View Picture button, a Close  button, and a PictureBox in which to display a picture.&lt;br /&gt;
&lt;h4&gt;Adding a Visible Control to a Form&lt;/h4&gt;Start by adding a Button control to the form. Do this by double-clicking the  Button item in the toolbox. C# then creates a new button and places it in the  upper-left corner of the form (see &lt;a href=&quot;&quot;&gt;Figure  1.7&lt;/a&gt;).&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig07.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig07.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.7&lt;/a&gt; When you double-click a control in the toolbox, the control is added to  the upper-left corner of the form.&lt;/div&gt;Using the Properties window, set the button&#39;s properties as follows (note  that you may want to change the Properties list to alphabetical, if it is not  already, to make it easier to find these properties by name):&lt;br /&gt;
&lt;table&gt;&lt;thead&gt;
&lt;tr&gt; &lt;td&gt;&lt;em&gt;Property&lt;/em&gt; &lt;/td&gt; &lt;td&gt;&lt;em&gt;Value&lt;/em&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Name&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;btnSelectPicture&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Text&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;Select Picture&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Location&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;301&lt;/tt&gt;,&lt;tt&gt;10&lt;/tt&gt; (Note: 301 is the x coordinate, 10 is the y  coordinate.) &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Size&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;85,23&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;You&#39;re now going to create a button that the user can click to close the  Picture Viewer program. Rather than adding a new button to the form, you&#39;re  going to create a copy of the button you&#39;ve already defined. To do this,  right-click the button on the form and choose Copy from its shortcut menu. Next,  right-click anywhere on the form and choose Paste from the form&#39;s shortcut menu.  The new button appears over the button you copied, and it is selected by  default. Change the properties of the new button as follows:&lt;br /&gt;
&lt;table&gt;&lt;thead&gt;
&lt;tr&gt; &lt;td&gt;&lt;em&gt;Property&lt;/em&gt; &lt;/td&gt; &lt;td&gt;&lt;em&gt;Value&lt;/em&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Name&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;btnQuit&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Text&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;Quit&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Location&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;301&lt;/tt&gt;,&lt;tt&gt;40&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;The last control you need to add to the form is a PictureBox control. A  PictureBox has many capabilities, but its primary purpose is to show  pictures—which is precisely what you&#39;ll use it for in this example. Add a new  PictureBox control to the form and set its properties as follows:&lt;br /&gt;
&lt;table&gt;&lt;thead&gt;
&lt;tr&gt; &lt;td&gt;&lt;em&gt;Property&lt;/em&gt; &lt;/td&gt; &lt;td&gt;&lt;em&gt;Value&lt;/em&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Name&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;picShowPicture&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;BorderStle&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;FixedSingle&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Location&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;8&lt;/tt&gt;,&lt;tt&gt;8&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Size&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;282&lt;/tt&gt;, &lt;tt&gt;275&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;After you&#39;ve made these property changes, your form will look like the one in  &lt;a href=&quot;&quot;&gt;Figure  1.8&lt;/a&gt;. Click the Save All button on the toolbar to save your work.&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig08.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig08.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.8&lt;/a&gt; An application&#39;s interface doesn&#39;t have to be complex to be useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Adding an Invisible Control to a Form&lt;/h2&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;NEW TERM&lt;/div&gt;So far, all the controls that you&#39;ve used sit on a form and have a physical  appearance. However, not all controls have a physical appearance. Such controls,  referred to as &lt;em&gt;invisible-at-runtime&lt;/em&gt; &lt;em&gt;controls,&lt;/em&gt; aren&#39;t designed  for user interactivity, but they&#39;re designed to give you, the programmer,  functionality beyond the standard features of C#.&lt;/div&gt;To allow the user to select a picture to display, you need to give her the  capability to locate a file on her hard drive. You&#39;ve probably noticed in the  past that whenever you choose to open a file from within any Windows  application, the dialog box displayed is almost always the same. It doesn&#39;t make  any sense to force each and every developer to write the code necessary to  perform standard file operations. Instead, Microsoft has exposed the  functionality via a control that you can use in your project. This control is  called the OpenFileDialog control, and it will save you dozens of hours that you  would otherwise spend trying to duplicate common functionality.&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;Other controls besides the OpenFileDialog control give you file  functionality. For example, the SaveFileDialog control provides features for  enabling the user to save a file.&lt;/div&gt;Scroll the toolbox until you can see the OpenFileDialog control, and then  double-click it to add it to your form. (You may have to scroll the toolbox,  which is done by clicking the up arrow toward the top of the window or the down  arrow toward the bottom.) Note that the control isn&#39;t placed on the form, but it  appears in a special area below the form (see &lt;a href=&quot;&quot;&gt;Figure  1.9&lt;/a&gt;). This happens because the OpenFileDialog control has no interface to  display to a user. It does have an interface, a dialog box that you can display  as necessary, but it has nothing to display directly on a form.&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig09.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig09.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.9&lt;/a&gt; Controls that have no interface appear below the form  designer.&lt;/div&gt;Select the OpenFileDialog control and change its properties as follows:&lt;br /&gt;
&lt;table&gt;&lt;thead&gt;
&lt;tr&gt; &lt;td&gt;&lt;em&gt;Property&lt;/em&gt; &lt;/td&gt; &lt;td&gt;&lt;em&gt;Value&lt;/em&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Name&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;ofdSelectPicture&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Filter&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;Windows Bitmaps|*.BMP|JPEG Files|*.JPG&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;tt&gt;Title&lt;/tt&gt; &lt;/td&gt; &lt;td&gt;&lt;tt&gt;Select Picture&lt;/tt&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;The Filter property determines the filtering of the control. The text that  appears before the pipe symbol (&lt;tt&gt;|&lt;/tt&gt;) is the descriptive text of the file  type, whereas the text after the pipe symbol is the pattern to use to filter  files; you can specify more than one filter type. Text entered into the Title  property appears in the title bar of the Open File dialog box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Coding an Interface&lt;/h2&gt;The graphical interface for your Picture Viewer program is now complete, so  click the pushpin in the title bar of the toolbox to close it. Now, you have to  write code for the program to be capable of performing actions. C# is an  event-driven language, which means that code is executed in response to events.  These events may come from users, such as a user clicking a button, or from  Windows itself (see Hour 4, &quot;Understanding Events,&quot; for a complete explanation  of events). Currently, your application looks nice but it won&#39;t do a darn thing.  The user can click the Select Picture button, for example, until the cows come  home, but nothing will happen because you haven&#39;t told the program what to do  when the user clicks the button.&lt;br /&gt;
You&#39;re going to write code to accomplish two tasks. First, you&#39;re going to  write code that lets the user browse his or her hard drives to locate and select  a picture file and then display the file in the picture box (this sounds a lot  harder than it is). Second, you&#39;re going to add code to the Quit button that  shuts down the program when the user clicks the button.&lt;br /&gt;
&lt;h4&gt;Letting a User Browse for a File&lt;/h4&gt;The first bit of code you&#39;re going to write will allow the user to browse his  or her hard drives, select a file, and then show the selected picture in the  PictureBox control. This code will execute when the user clicks the Select  Picture button; therefore, it&#39;s added to the Click event of that button (you&#39;ll  learn all about events in later hours). When you double-click a control on a  form in Design view, the default event for that control is created and displayed  in a code window. The default event for a Button control is its Click event,  which makes sense because clicking a button is its most common purpose.  Double-click the Select Picture button now to access its Click event in the code  window (see &lt;a href=&quot;&quot;&gt;Figure  1.10&lt;/a&gt;).&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig10.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig10.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.10&lt;/a&gt; You will write all code in a window such as this.&lt;/div&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;NEW TERM&lt;/div&gt;When you access an event, C# builds an &lt;em&gt;event handler,&lt;/em&gt; which is  essentially a template procedure in which you add the code that executes when  the event is fired. The cursor is already placed within the code procedure, so  all you have to do is add code. You will also notice that the open and closing  braces are preset for your new event procedure. The braces, in this case, define  the beginning and end of your procedure. You will soon see that C# requires many  open and closing braces({ } ). By the time you&#39;re done with this book, you&#39;ll be  madly clicking away as you write your own code to make your applications do  exactly what you want them to do—well, most of the time. For now, just enter the  code as I present it here.&lt;/div&gt;It&#39;s very important that you get in the habit of commenting your code, so the  first line you&#39;re going to enter is a comment. Beginning a statement with the  characters &lt;tt&gt;//&lt;/tt&gt; designates the statement as a comment; the compiler won&#39;t  do anything with the statement, so you can enter whatever text you want after  the double slashes. Type the following statement exactly as it appears and press  the Enter key at the end of the line.&lt;br /&gt;
&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;For more information on creating good comments, see Hour 16, &quot;Debugging Your  Code.&quot;&lt;/div&gt;&lt;pre&gt;// Show the open file dialog box.&lt;/pre&gt;The next statement you&#39;ll enter triggers a method of the OpenFileDialog  control that you added to the form. You&#39;ll learn all about methods in Hour 3,  &quot;Understanding Objects and Collections.&quot; For now, think of a method as a  mechanism to make a control take action. The ShowDialog method tells the control  to show its Open dialog box and let the user select a file. The ShowDialog  method returns a value that indicates its success or failure, which we are then  comparing to a predefined result (&lt;tt&gt;DialogResult.OK&lt;/tt&gt;). Don&#39;t worry too  much about what is happening here, because you&#39;ll be learning the details of  this in later hours. In a nutshell, the ShowDialog method is called to let a  user browse for a file, and if the user selects a file, more code gets executed.  Of course, there is a lot more to using the OpenFileDialog control than I  present in this basic example, but this simple statement gets the job done.  Enter the following if statement followed by an open brace:&lt;br /&gt;
&lt;pre&gt;if (ofdSelectPicture.ShowDialog() == DialogResult.OK)
 {&lt;/pre&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;Open and closing braces are necessary for this if statement because they  denote that multiple lines will be part of this construct.&lt;/div&gt;Time for another comment. Enter this statement and remember to press Enter at  the end of each code line.&lt;br /&gt;
&lt;pre&gt;// Load the picture into the picture box.&lt;/pre&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;Don&#39;t worry about indenting the code by pressing the Tab key or using spaces.  C# .NET automatically indents code for you.&lt;/div&gt;You&#39;re now going to enter the next line of code. This statement, which  appears within the if construct, is the line of code that actually displays the  picture in the picture box. (If you&#39;re itching to know more about graphics, take  a look at Hour 10, &quot;Drawing and Printing.&quot;)&lt;br /&gt;
Enter the following statement:&lt;br /&gt;
&lt;pre&gt;picShowPicture.Image = Image.FromFile(ofdSelectPicture.FileName);&lt;/pre&gt;In addition to displaying the selected picture, your program is going to  display the path and filename of the picture in the title bar. When you first  created the form, you changed the Text property of the form using the Properties  window. To create dynamic applications, properties need to be constantly  adjusted at runtime, and this is done using code. Enter the following three  lines of code:&lt;br /&gt;
&lt;pre&gt;// Show the name of the file in the form&#39;s caption.
this.Text = String.Concat(&quot;Picture Viewer (&quot; + ofdSelectPicture.FileName + &quot;)&quot;);&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;C# is case sensitive! You must enter all code using the same case as shown in  the text.&lt;/div&gt;&lt;h4&gt;Checking Your Program Entry Point&lt;/h4&gt;All C# programs must contain an entry point. The Main() method is the entry  point. In this sample you need to change the reference from Form1 to  &lt;strong&gt;fclsViewer&lt;/strong&gt; (this is necessary because we renamed the form  earlier) . This statement will invoke the constructor on the form. C++  programmers will be familiar with the Main() entry point method, but they should  take notice of the capitalization of Main. We will talk a bit more about the  program entry point later in the book.&lt;br /&gt;
To update the entry point in this sample, press Ctrl+F to open the Find  window, enter &lt;strong&gt;Form1,&lt;/strong&gt; and click Find Next. Close the Find window  and replace the text Form1 with &lt;strong&gt;fclsViewer.&lt;/strong&gt; The updated  statement should now read:&lt;br /&gt;
&lt;pre&gt;Application.Run(new fclsViewer());&lt;/pre&gt;After you&#39;ve entered all the code, your editor should look like that shown in  &lt;a href=&quot;&quot;&gt;Figure  1.11&lt;/a&gt;.&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig11.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig11.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.11&lt;/a&gt; Make sure your code exactly matches the code shown here.&lt;/div&gt;&lt;h4&gt;Terminating a Program Using Code&lt;/h4&gt;The last bit of code you&#39;ll write will terminate the application when the  user clicks the Quit button. To do this, you&#39;ll need to access the Click event  handler of the btnQuit button. At the top of the code window are two tabs. The  current tab has the text fclsViewer.cs. Next to this is a tab that contains the  text fclsViewer.cs [Design]. Click this tab now to switch from Code view to the  form designer. If you receive an error when you click the tab, the code you  entered is incorrect, and you need to edit it to make it the same as I&#39;ve  presented it. After the form designer is displayed, double-click the Quit button  to access its Click event.&lt;br /&gt;
Enter the following code in the Quit button&#39;s Click event handler:&lt;br /&gt;
&lt;pre&gt;this.Close();&lt;/pre&gt;&lt;div class=&quot;sidebar&quot;&gt; &lt;div class=&quot;title&quot;&gt;&lt;strong&gt;Note&lt;/strong&gt; &lt;/div&gt;The Close statement closes the current form. When the last loaded form in a  program is closed, the application shuts itself down—completely. As you build  more robust applications, you&#39;ll probably want to execute all kinds of clean-up  routines before terminating your application, but for this example, closing the  form is all you need to do.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Running a Project&lt;/h2&gt;Your application is now complete. Click the Save All button (it looks like a  stack of disks) on the toolbar, and then run your program by pressing F5. You  can also run the program by clicking the button on the toolbar that looks like a  right-facing triangle and resembles the Play button on a VCR (this button is  also found on the Debug menu, and it is called Start). However, learning the  keyboard shortcuts will make your development process move along faster. When  you run the program, the C# interface changes, and the form you&#39;ve designed  appears floating over the design environment (see &lt;a href=&quot;&quot;&gt;Figure  1.12&lt;/a&gt;).&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig12.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig12.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.12&lt;/a&gt; When in Run mode, your program executes the same as it would for an end  user.&lt;/div&gt;You&#39;re now running your program as though it were a standalone application  running on another user&#39;s machine; what you see is exactly what someone else  would see if they ran the program (without the C# design environment in the  background, of course). Click the Select Picture button to display the Select  Picture dialog box (see &lt;a href=&quot;&quot;&gt;Figure  1.13&lt;/a&gt;). Use the dialog box to locate a picture file. When you&#39;ve found a  file, double-click it, or click once to select it and then click Open. The  selected picture is then displayed in the PictureBox control, as shown in &lt;a href=&quot;&quot;&gt;Figure  1.14&lt;/a&gt;.&lt;br /&gt;
&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig13.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig13.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.13&lt;/a&gt; The OpenFileDialog control handles all the details of browsing for  files. Cool, huh?&lt;/div&gt;&lt;div class=&quot;figure&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;img alt=&quot;01fig14.jpg&quot; src=&quot;/content/images/bok_0672322870/elementLinks/th01fig14.jpg&quot; /&gt;  &lt;/a&gt; &lt;a href=&quot;&quot;&gt;Figure  1.14&lt;/a&gt; C# makes it easy to display pictures with very little work.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Summary&lt;/h2&gt;When you&#39;re done playing with the program, click the Quit button and then  save your project by clicking Save All on the C# toolbar.&lt;br /&gt;
That&#39;s it! You&#39;ve just created a bona fide C# program. You&#39;ve used the  toolbox to build an interface with which users can interact with your program,  and you&#39;ve written code in strategic event handlers to empower your program to  do things. These are the basics of application development in C#. Even the most  complicated programs are built using this basic approach; you build the  interface and add code to make the application do things. Of course, writing  code to do things exactly the way you want things done is where the process can  get complicated, but you&#39;re on your way.&lt;br /&gt;
If you take a close look at the organization of the hours in this book,  you&#39;ll see that I start out by teaching you the C# environment. I then move on  to building an interface, and later I teach you all about writing code. This  organization is deliberate. You might be a little anxious to jump in and start  writing serious code, but writing code is only part of the equation. As you  progress through the hours, you&#39;ll be building a solid foundation of development  skills.&lt;br /&gt;
Soon, you&#39;ll pay no attention to the man behind the curtain—you&#39;ll be that  man (or woman)!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Q&amp;amp;A&lt;/h2&gt;&lt;ol&gt;&lt;li&gt; &lt;strong&gt;Can I show bitmaps of file types other than BMP and JPG?&lt;/strong&gt;  &lt;br /&gt;
Yes. The PictureBox supports the display of images with the extensions BMP,  JPG, ICO, EMF, WMF, and GIF. The PictureBox can even save images to a  file.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Is it possible to show pictures in other controls?&lt;/strong&gt; &lt;br /&gt;
The PictureBox is the control to use when you are just displaying images.  However, many other controls allow you to display pictures as part of the  control. For instance, you can display an image on a Button control by setting  the button&#39;s Image property to a valid picture&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Workshop&lt;/h2&gt;The Workshop is designed to help you anticipate possible questions, review  what you&#39;ve learned, and get you thinking about how to put your knowledge into  practice. The answers to the quiz are in Appendix A,&quot;Answers to  Quizzes/Exercises.&quot;&lt;br /&gt;
&lt;h4&gt;Quiz&lt;/h4&gt;&lt;/li&gt;
&lt;li&gt;What type of C# project creates a standard Windows program?&lt;/li&gt;
&lt;li&gt;What window is used to change the attributes (location, size, and so on) of  a form or control?&lt;/li&gt;
&lt;li&gt;How do you access the default event (code) of a control?&lt;/li&gt;
&lt;li&gt;What property of a PictureBox do you set to display an image?&lt;/li&gt;
&lt;li&gt;What is the default event for a Button control?&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;Exercise&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;Change your Picture Viewer program so that the user can also locate and  select GIF files. (Hint: Change the Filter property of the OpenFileDialog  control.)&lt;/li&gt;
&lt;li&gt;Alter the form in your Picture Viewer project so that the buttons are side  by side in the lower-right corner of the form, rather than vertically aligned in  the upper-right corner.&lt;/li&gt;
&lt;/ol&gt;&lt;ol&gt;&lt;li&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/4366294203022272019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/11/sams-teach-yourself-c-in-24-hours-hour.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/4366294203022272019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/4366294203022272019'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/11/sams-teach-yourself-c-in-24-hours-hour.html' title='Sams Teach Yourself C# in 24 Hours (Hour 1)'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-1743538300271264370</id><published>2010-11-05T17:37:00.000+01:00</published><updated>2010-11-05T17:37:32.904+01:00</updated><title type='text'>mauritius</title><content type='html'>Cool, kom al stukken verder met de&lt;a href=&quot;http://justmauritius.nl/hotel_booking/&quot;&gt; luxe hotel reservatie van justmauritius &lt;/a&gt;Benieuwd of dat wat gaat geven aan huwelijksreizen enzo. Hopelijk binnekort boekbaar. :D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- map{ map{tr|10|# |;print} split//,sprintf&quot;%.8b\n&quot;,$_} unpack&#39;C*&#39;,unpack&#39;u*&#39;,&quot;5`#8&amp;lt;3&#39;X`&#39;#8^-@`&amp;lt;-CPP`#8V/C8`&quot;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/1743538300271264370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/11/mauritius.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1743538300271264370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1743538300271264370'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/11/mauritius.html' title='mauritius'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-9085412051465391148</id><published>2010-11-05T16:47:00.000+01:00</published><updated>2010-11-05T16:47:50.572+01:00</updated><title type='text'>Exploring the Mac OS X Firewall</title><content type='html'>All Unix systems have a firewall. But on the Mac, it&#39;s installed by default and you can&#39;t turn it off. To keep things simple, and keep users from having to build their own firewall rules, OS X packages the firewall as a sub-menu of Sharing within System Preferences. The benefit of this approach is that the firewall can be tied to services. Turn on Personal Web Sharing, for example, and a new rule appears in the firewall to control access to the service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Presently, I have Personal Web Sharing turned on in the Services menu. The firewall is turned on. And in the Firewall menu, there&#39;s a checkbox to allow access to my web server. Opening a terminal and typing sudo ipfw list allows me to see the actual firewall rules that Mac OS X has created.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
02000 allow ip from any to any via lo*&lt;br /&gt;
&lt;br /&gt;
02010 deny ip from 127.0.0.0/8 to any in&lt;br /&gt;
&lt;br /&gt;
02020 deny ip from any to 127.0.0.0/8 in&lt;br /&gt;
&lt;br /&gt;
02030 deny ip from 224.0.0.0/3 to any in&lt;br /&gt;
&lt;br /&gt;
02040 deny tcp from any to 224.0.0.0/3 in&lt;br /&gt;
&lt;br /&gt;
02050 allow tcp from any to any out&lt;br /&gt;
&lt;br /&gt;
02060 allow tcp from any to any established&lt;br /&gt;
&lt;br /&gt;
02070 allow tcp from any to any 80 in&lt;br /&gt;
&lt;br /&gt;
02080 allow tcp from any to any 427 in&lt;br /&gt;
&lt;br /&gt;
12190 deny tcp from any to any&lt;br /&gt;
&lt;br /&gt;
65535 allow ip from any to any&lt;br /&gt;
&lt;br /&gt;
ipfw is the heart of the Macintosh firewall; the listing is the set of rules that Mac OS X built based on the services I wanted to run. Apache runs on port 80 (for http), while port 427 is the service locator protocol. The first column is the rule number, and the rest is the rule itself. I will go into greater detail later. But for the moment, I will turn on Remote Login. A quick glance at the Firewall menu reveals that the Remote Login rules have been turned on. Looking at the output of sudo ipfw list shows how the rules were changed to allow the new service to run.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
02000 allow ip from any to any via lo*&lt;br /&gt;
&lt;br /&gt;
02010 deny ip from 127.0.0.0/8 to any in&lt;br /&gt;
&lt;br /&gt;
02020 deny ip from any to 127.0.0.0/8 in&lt;br /&gt;
&lt;br /&gt;
02030 deny ip from 224.0.0.0/3 to any in&lt;br /&gt;
&lt;br /&gt;
02040 deny tcp from any to 224.0.0.0/3 in&lt;br /&gt;
&lt;br /&gt;
02050 allow tcp from any to any out&lt;br /&gt;
&lt;br /&gt;
02060 allow tcp from any to any established&lt;br /&gt;
&lt;br /&gt;
02070 allow tcp from any to any 22 in&lt;br /&gt;
&lt;br /&gt;
02080 allow tcp from any to any 80 in&lt;br /&gt;
&lt;br /&gt;
02090 allow tcp from any to any 427 in&lt;br /&gt;
&lt;br /&gt;
12190 deny tcp from any to any&lt;br /&gt;
&lt;br /&gt;
65535 allow ip from any to any&lt;br /&gt;
&lt;br /&gt;
The rules have been rewritten, and a new rule has been added to handle Remote Login. Remote Login is handled by ssh, which operates over port 22. I will turn the firewall off as a final test before I put everything back the way it was.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
65535 allow ip from any to any&lt;br /&gt;
&lt;br /&gt;
So even when we turn the firewall off, it is still running. It&#39;s just the rules that have changed. What I&#39;m going to do in this article is explore ipfw to see how I can use it to better secure my Macintosh and learn something of the threats that assail our computers every day. But first, a few words of caution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Don&#39;t Play with Fire&lt;br /&gt;
&lt;br /&gt;
The firewall that comes with the Mac is a good and robust tool and will protect you from many things, and you should have it turned on all the time. Just because we can handcraft rules does not mean that we should. If we get it wrong, we could stop our computer from functioning and create security holes. In this article, we&#39;re going to play with the firewall, learn a few things about our Mac, and then just let the System Preferences take care of things (in most cases).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is one area where a little knowledge can be dangerous. And it&#39;s important to remember that after reading this article you will not be an expert on firewalls.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Say Hello to ipfw&lt;br /&gt;
&lt;br /&gt;
To get a feel for what your firewall is having to deal with, you&#39;ll get it to log all the decisions that it makes over the course of a few hours. This will show you what&#39;s really happening. First, create a file that contains a copy of the rules you&#39;re running. Call this file rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IPFW=&#39;/sbin/ipfw -q&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$IPFW -f flush&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2000 allow ip from any to any via lo*&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2010 deny log ip from 127.0.0.0/8 to any in&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2020 deny log ip from any to 127.0.0.0/8 in&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2030 deny log ip from 224.0.0.0/3 to any in&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2040 deny log tcp from any to 224.0.0.0/3 in&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2050 allow log tcp from any to any out&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2060 allow log tcp from any to any established&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2070 allow log tcp from any to any 22 in&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2080 allow log tcp from any to any 80 in&lt;br /&gt;
&lt;br /&gt;
$IPFW add 2090 allow log tcp from any to any 427 in&lt;br /&gt;
&lt;br /&gt;
$IPFW add 12190 deny log tcp from any to any&lt;br /&gt;
&lt;br /&gt;
These rules are a copy of the rules that Mac OS X generated for Personal Web Sharing and Remote Login with logging turned on. You do not need to enter rule 65535 as this is hard-coded into the firewall and cannot be changed. To run the rules just type in sudo sh rules followed by sudo ipfw list to make sure that they have loaded correctly. The final step is to turn logging on. Despite the rules requiring that the output be logged, this only actually happens when it is turned on with sysctl.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo sysctl -w net.inet.ip.fw.verbose=1&lt;br /&gt;
&lt;br /&gt;
This might seem complicated, but it allows us to have logging permanently turned on in our rules, only writing to the log file when we want to. The logging is being written to /var/log/system.log. Logging can then be turned on and off without changing or even reloading the rules. To turn logging off, change the 1 to a 0. Leave this running for a few hours as we do all sorts of things that may generate traffic over the Internet. Just one little note of caution at this point: There will be one line in the log file for each packet processed by the firewall. The log file can get very large very quickly! Remember to come back and turn the logging off before your disk fills up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the Log Results&lt;br /&gt;
&lt;br /&gt;
/var/log/system.log now contains a large number of lines—one per packet that was handled by the firewall rules we created. Here is an example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nov 9 21:12:18 Peter-Hickmans-Computer kernel: ipfw: 2060&lt;br /&gt;
&lt;br /&gt;
Accept TCP 216.65.98.71:119 192.168.1.100:54609 in via en0&lt;br /&gt;
&lt;br /&gt;
After all the date and time cruft, we come to the action that was recorded, which says that rule number 2060 accepted an inbound TCP connection via the primary Ethernet interface from address 216.65.98.71 on port 119 to my computer (on address 192.168.1.100) port 54609. Port 119 is used to connect to Usenet news servers, and port 54609 was just a random port Mac OS X allocated for my program to make the connection. To make any sense of the 341,310 lines that the firewall logged while I had it turned on, we need a program to summarize the log. Let&#39;s call this program checkfw.pl.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/perl -w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my %connections;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while ( my $line = &amp;lt;&amp;gt; ) {&lt;br /&gt;
&lt;br /&gt;
next unless $line =~ m/ ipfw: /;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$line =~ s/.* ipfw: //g;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my ( $action, $from, $to, $direction ) &lt;br /&gt;
&lt;br /&gt;
= ( split( &#39; &#39;, $line, 7 ) )[ 1, 3, 4, 5 ];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if ( check_address($from) and check_address($to) ) {&lt;br /&gt;
&lt;br /&gt;
my $key = ( $direction eq &#39;out&#39; ) ? &lt;br /&gt;
&lt;br /&gt;
&quot;$from $to&quot; : &quot;$to $from&quot;;&lt;br /&gt;
&lt;br /&gt;
$connections{$action}-&amp;gt;{$key}-&amp;gt;{$direction}++;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
foreach my $action ( sort keys %connections ) {&lt;br /&gt;
&lt;br /&gt;
report( $action, %{ $connections{$action} } );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub report {&lt;br /&gt;
&lt;br /&gt;
my ( $action, %data ) = @_;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print &quot;$action\n&quot;;&lt;br /&gt;
&lt;br /&gt;
printf( &quot;%21s Dir %21s : %8s : %8s\n&quot;,&lt;br /&gt;
&lt;br /&gt;
&#39;Inside IP&#39;, &#39;Outside IP&#39;, &#39;In&#39;, &#39;Out&#39; );&lt;br /&gt;
&lt;br /&gt;
print &#39;-&#39; x 69 . &quot;\n&quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
foreach my $k ( sort keys %data ) {&lt;br /&gt;
&lt;br /&gt;
my ( $inside, $outside ) = split( &#39; &#39;, $k );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my $direction = &#39;--&amp;gt;&#39;;&lt;br /&gt;
&lt;br /&gt;
if ( $data{$k}-&amp;gt;{in} ) {&lt;br /&gt;
&lt;br /&gt;
$direction = ( $data{$k}-&amp;gt;{out} ) ? &#39;&amp;lt;-&amp;gt;&#39; : &#39;&amp;lt;--&#39;;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
printf( &quot;%21s %s %21s : %8d : %8d\n&quot;, &lt;br /&gt;
&lt;br /&gt;
$inside, &lt;br /&gt;
&lt;br /&gt;
$direction, &lt;br /&gt;
&lt;br /&gt;
$outside, &lt;br /&gt;
&lt;br /&gt;
$data{$k}-&amp;gt;{in} &lt;br /&gt;
&lt;br /&gt;
0, &lt;br /&gt;
&lt;br /&gt;
$data{$k}-&amp;gt;{out} &lt;br /&gt;
&lt;br /&gt;
0 );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print &quot;\n&quot;;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
## Filter the broken lines in the log&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub check_address {&lt;br /&gt;
&lt;br /&gt;
my $text = shift;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# There should only be 1 colon&lt;br /&gt;
&lt;br /&gt;
my $count = $text =~ tr/://;&lt;br /&gt;
&lt;br /&gt;
return undef if $count != 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# There should only be three .s&lt;br /&gt;
&lt;br /&gt;
$count = $text =~ tr/.//;&lt;br /&gt;
&lt;br /&gt;
return undef if $count != 3;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my ( $ip, $port ) = split( &#39;:&#39;, $text );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Is the port number sensible&lt;br /&gt;
&lt;br /&gt;
return undef if $port &amp;lt; 1 or $port &amp;gt; 65535;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Are the address digits sensible&lt;br /&gt;
&lt;br /&gt;
foreach my $x ( split( &#39;\.&#39;, $ip ) ) {&lt;br /&gt;
&lt;br /&gt;
return undef if $x &amp;lt; 0 or $x &amp;gt; 255;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# All is fine&lt;br /&gt;
&lt;br /&gt;
return 1;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
When run from the command line with the system.log file for input, it reads all the lines related to the firewall and extracts the action (Accept or Deny), from address, to address, and direction from the rule, then builds up a hash to summarize the data. The rules are always expressed as &quot;from address&quot; followed by &quot;to address,&quot; so we need to switch them around so that packets going from B to A inbound are correctly paired with lines for A to B outbound. The check_address function is to weed out the few lines that logging seems to screw up every now and then. Here&#39;s an edited sample of the output. Let&#39;s first look at the traffic we accepted:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Accept&lt;br /&gt;
&lt;br /&gt;
Inside IP Dir Outside IP : In : Out&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:22 &amp;lt;-&amp;gt; 192.168.1.1:1059 : 80 : 81&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:45632 &amp;lt;-&amp;gt; 66.98.246.15:80 : 1 : 1&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:54609 &amp;lt;-&amp;gt; 216.65.98.71:119 : 19768 : 13114&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:54788 &amp;lt;-&amp;gt; 216.65.98.71:119 : 15 : 17&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:54789 &amp;lt;-&amp;gt; 216.65.98.71:119 : 15 : 14&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:54790 &amp;lt;-&amp;gt; 216.65.98.71:119 : 24924 : 16792&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:54799 &amp;lt;-&amp;gt; 62.253.162.50:110 : 89 : 82&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:80 &amp;lt;-&amp;gt; 210.246.12.35:10611 : 11 : 6&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:80 &amp;lt;-&amp;gt; 210.246.12.35:11823 : 11 : 10&lt;br /&gt;
&lt;br /&gt;
First, an assumption: Any port number that is four or less digits long is a legitimate port. If it is five digits long, then it was just a port allocated to the process that initiated the connection. This is not always the case but it is a very useful rule of thumb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first line is a Remote Login connection (ssh on port 22) to my computer, and the next is a connection to a web site (http on port 80) from my computer. The next four are Usenet connections (nntp on port 119) from my computer followed by a connection from my computer to my ISP&#39;s mail server (pop3 on port 110). The next two are connections to the web server on my computer by another computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you see a port number and are not sure what it is used by, look in /etc/services where most of the legitimate port numbers are listed. If you can&#39;t find it there or feel that you are not using the service, then Google for &quot;port xxxx&quot;. Now let&#39;s look at the traffic we rejected:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Deny&lt;br /&gt;
&lt;br /&gt;
Inside IP Dir Outside IP : In : Out&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:1023 &amp;lt;-- 218.23.26.94:2385 : 1 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:1025 &amp;lt;-- 80.13.205.45:3369 : 1 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:1080 &amp;lt;-- 67.150.225.61:80 : 1 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:21 &amp;lt;-- 172.210.114.241:4535 : 2 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:25 &amp;lt;-- 222.156.17.50:2304 : 2 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:2745 &amp;lt;-- 80.108.169.225:1248 : 3 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:3127 &amp;lt;-- 24.48.194.98:4609 : 3 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:4000 &amp;lt;-- 159.226.150.135:1505 : 2 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:4899 &amp;lt;-- 80.200.148.8:4937 : 1 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:5554 &amp;lt;-- 200.28.99.6:4257 : 1 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:6112 &amp;lt;-- 211.138.113.23:57949 : 2 : 0&lt;br /&gt;
&lt;br /&gt;
192.168.1.100:9898 &amp;lt;-- 218.16.83.117:3700 : 1 : 0&lt;br /&gt;
&lt;br /&gt;
Related Reading&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Essential Mac OS X Panther Server Administration&lt;br /&gt;
&lt;br /&gt;
Integrating Mac OS X Server into Heterogeneous Networks&lt;br /&gt;
&lt;br /&gt;
By Michael Bartosh, Ryan Faas &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As these are all denied packets we are only interested in the port number that they were trying to connect to. Let&#39;s go over them:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1023 &lt;br /&gt;
&lt;br /&gt;
The Sasser worm runs an FTP server on port 1023 of infected machines. 218.23.26.94 is scanning for unpatched Windows machines still infected by the Sasser worm. &lt;br /&gt;
&lt;br /&gt;
1025 &lt;br /&gt;
&lt;br /&gt;
Officially the port used by blackjack servers but also used by a backdoor trojan called PWSteal.ABCHlp. Again, I am being scanned by a computer looking for a backdoor. &lt;br /&gt;
&lt;br /&gt;
1080 &lt;br /&gt;
&lt;br /&gt;
Officially used by the SOCKS proxy server. 67.150.225.61 is scanning me, hoping to find a proxy server that it can use to cover its tracks with. &lt;br /&gt;
&lt;br /&gt;
21 &lt;br /&gt;
&lt;br /&gt;
At last a legitimate port, FTP. Here I am being scanned to see if I am running an FTP server that can be hacked by someone wanting somewhere to store some files or a place from which to run a warez site. I don&#39;t run an FTP server. &lt;br /&gt;
&lt;br /&gt;
25 &lt;br /&gt;
&lt;br /&gt;
Another legitimate port, this time SMTP. This is someone looking for an open mail server to send spam through. &lt;br /&gt;
&lt;br /&gt;
2745 &lt;br /&gt;
&lt;br /&gt;
Officially the port used by the urbisnet service but more commonly a backdoor installed by the W32.Beagle.E@mm worm. &lt;br /&gt;
&lt;br /&gt;
You get the picture. It just goes on and on. Despite being immune to all these WinTel worms and viruses, we should note that there are people out there who will notice very quickly if we turn on our own mail or FTP servers. The same scripts that probe your computer for these services are designed to exploit them the moment they get a positive result. This is why we run a firewall and why we don&#39;t run unnecessary services.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Writing the ipfw Log Lines to a Different File &lt;br /&gt;
&lt;br /&gt;
The system.log file is a general dumping ground for all log messages, but it has the facility to write specific messages to separate files. In this case, we&#39;re going to write the log lines from ipfw into /var/log/ipfw.log. This file already exists on my system, but at the moment, the /etc/syslogd.conf is not set up to send the messages to it. First, I must edit the /etc/syslogd.conf and add the following to the beginning of the file:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Exclude ipfw from the main log&lt;br /&gt;
&lt;br /&gt;
!-ipfw&lt;br /&gt;
&lt;br /&gt;
This stops the ipfw log lines from being written to the system.log. Now add the following to the end of the file to get the ipfw log lines written to the correct file:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Log ipfw to its own log&lt;br /&gt;
&lt;br /&gt;
!ipfw&lt;br /&gt;
&lt;br /&gt;
*.* /var/log/ipfw.log&lt;br /&gt;
&lt;br /&gt;
Now it&#39;s time to restart syslogd so that the new configuration is loaded. There are two ways of doing this: the Windows way or the Unix way. Rebooting your computer is the Windows way, so we&#39;ll do it the Unix way.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo kill -s HUP `cat /var/run/syslog.pid`&lt;br /&gt;
&lt;br /&gt;
The preceding line reads the pid of the existing syslogd process and gets it to reload its configuration file. All that remains is to turn logging on, sudo sysctl -w net.inet.ip.fw.verbose=1, generate some traffic, and look at the contents of the /var/log/ipfw.log file. No lines are being written to the system.log file any more. The main reason for this is that the ipfw logging generates so many lines in the system.log file that it makes finding other, non ipfw, messages much harder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Writing Your Own Rules&lt;br /&gt;
&lt;br /&gt;
Each packet that wants to pass through the firewall, in or out, is checked against the rules in the order in which they are numbered. Once a packet matches a rule, the assigned action is taken, and the next packet is processed. This is why rule 65535 is hard-coded into the firewall; it will match anything that does not match any other rule. Let&#39;s walk through the rules we created earlier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
02000 allow ip from any to any via lo*&lt;br /&gt;
&lt;br /&gt;
The first rule allows any ip packet to any address via the loopback interface. The computer makes use of the loopback interface to talk to itself. Trust me when I say that this is useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
02010 deny ip from 127.0.0.0/8 to any in&lt;br /&gt;
&lt;br /&gt;
02020 deny ip from any to 127.0.0.0/8 in&lt;br /&gt;
&lt;br /&gt;
02030 deny ip from 224.0.0.0/3 to any in&lt;br /&gt;
&lt;br /&gt;
02040 deny tcp from any to 224.0.0.0/3 in&lt;br /&gt;
&lt;br /&gt;
These rules, and others like them, are there to stop packets with spoofed IP addresses from entering. A more comprehensive set of rules would ban all private IP ranges. The anti-spoofing rules are placed here to stop any packets before they get to the rules that might let them in. If we wanted to bar known bad addresses, this would be the place to do it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
02050 allow tcp from any to any out&lt;br /&gt;
&lt;br /&gt;
02060 allow tcp from any to any established&lt;br /&gt;
&lt;br /&gt;
Here we allow any outbound packets through and follow this up by allowing any previously established connections back in. The firewall is &quot;state-full&quot;—that is to say it doesn&#39;t just process a packet and forget about it as it moves onto the next one. It remembers that it allowed a connection from my computer to my ISP&#39;s mail server and therefore can identify incoming packets as being part of the same connection and allow then back in without a whole host of new rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
02070 allow tcp from any to any 22 in&lt;br /&gt;
&lt;br /&gt;
02080 allow tcp from any to any 80 in&lt;br /&gt;
&lt;br /&gt;
02090 allow tcp from any to any 427 in&lt;br /&gt;
&lt;br /&gt;
This rule allows any inbound packet to the ports of the services that we are running in. This leaves just one more rule.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12190 deny tcp from any to any&lt;br /&gt;
&lt;br /&gt;
This rule denies any tcp packet that has gotten this far.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#39;s review. We have thrown out the spoofed addresses, we have allowed all outbound packets and all established inbound connections, and we have allowed inbound packets to the ports of the services we are running. All that is left are inbound packets to ports we have not allowed. It&#39;s a good thing we have stopped them here as rule 65535 would have let them in!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A quick overview of the rule set:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allow loopback. &lt;br /&gt;
&lt;br /&gt;
Deny spoofing and people we don&#39;t like. &lt;br /&gt;
&lt;br /&gt;
Allow outbound connections. &lt;br /&gt;
&lt;br /&gt;
Allow established connections. &lt;br /&gt;
&lt;br /&gt;
Allow specific inbound connections. &lt;br /&gt;
&lt;br /&gt;
Deny everything else. &lt;br /&gt;
&lt;br /&gt;
All rules have the same basic structure, and a lot can be achieved with the simplest of rules. The basic shape of a rule, more information on which can be found with man ipfw, is quite simple:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[number] action [log] proto from src to dst [interface-spec]&lt;br /&gt;
&lt;br /&gt;
If a rule is given without a number, the next number in sequence is taken. If a number is given, the rule will be positioned among the existing rules. If a rule with that number already exists, then the new rule will be added after the old one, and you will have two rules with the same number. The action can take many values, but for now we&#39;re only interested in allow and deny. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allow will allow any matching packet to pass through the firewall, and deny will just drop them onto the floor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The optional log parameter will write a line to the logfile for each packet that matched the rule. Lines are only written to the logfile if the system variable net.inet.ip.fw.verbose is set to 1. So we don&#39;t have to change the rules when we want to turn logging on and off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The protocol is the type of packet. The only ones we are concerned with are tcp or ip (which is another way of saying all of them). As a rule of thumb all the protocols are layered over ip, and the most common one we encounter is tcp, with icmp and udp after that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you look in /etc/protocols you will see that there are a large number of protocols, most of which we will never encounter outside of this file. Most traffic is tcp, and our rules concentrate on this unless we are blocking something wholesale, in which case we use ip to mean any protocol. But a point of caution: In our &quot;Deny everything else&quot; rule, 12190, we only deny the tcp packets; changing this to deny ip packets may stop your computer from working as many behind-the-scene services still need to get through, such as DNS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The src and dst are the source and destination addresses that can be defined as either:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
any - any ip address &lt;br /&gt;
&lt;br /&gt;
a specific ip address, 207.68.172.246, or hostname, msn.com &lt;br /&gt;
&lt;br /&gt;
a netmask, 207.68.128.0/18 or 1.2.3.4:255.255.240.0 &lt;br /&gt;
&lt;br /&gt;
The address can be prefixed by not. Additionally, the address can be followed by a list of port numbers or service names (22 or ssh). For example, the following rules allow FTP connections:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
allow tcp from any to any 20-21 in&lt;br /&gt;
&lt;br /&gt;
allow tcp from any 20,21 to any 1024-65535 in&lt;br /&gt;
&lt;br /&gt;
The two rules read:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allow in any inbound tcp packets to ports 20 and 21 (ftp-data and ftp). &lt;br /&gt;
&lt;br /&gt;
Allow in any inbound tcp packets coming from ports 20 or 21 that are trying to connect to ports 1024 to 65536. &lt;br /&gt;
&lt;br /&gt;
The final element of the rule is the interface-spec. For simple rules, in and out are sufficient and, if omitted, the default is to allow both in and out. When added to a rule they limit the action of the rule to check only the inbound or outbound packets. The interface-spec allows much more control than we are showing here, for example, a rule about being bound to particular interfaces such as an Airport card rather then the normal RJ45 socket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If we run ifconfig -l, we will get a list of interfaces that are available on our computer. Mine lists six, even though only three are active. The rules we are using will apply to any packet passing through any valid interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our Own Startup Script&lt;br /&gt;
&lt;br /&gt;
The statement &quot;It&#39;s not possible to override the firewall built into Mac OS X&quot; isn&#39;t entirely true. We could go in and hack around with the kext files, but this is more work than we really need to undertake. What we can do is create our own startup script that runs after the existing firewall to implement our rules. We need to create a directory called /Library/StartupItems/Firewall and include in it two files. The first is a generic startup script called Firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
# Firewall&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
. /etc/rc.common&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
StartService ()&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
if [ &quot;${FIREWALL:=-NO-}&quot; = &quot;-YES-&quot; ]&lt;br /&gt;
&lt;br /&gt;
then&lt;br /&gt;
&lt;br /&gt;
ConsoleMessage &quot;Starting Firewall&quot;&lt;br /&gt;
&lt;br /&gt;
sh /etc/rc.firewall &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
StopService ()&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
ConsoleMessage &quot;Stopping Firewall&quot;&lt;br /&gt;
&lt;br /&gt;
/sbin/ipfw -f -q flush&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RestartService ()&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
StopService&lt;br /&gt;
&lt;br /&gt;
StartService&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RunService &quot;$1&quot;&lt;br /&gt;
&lt;br /&gt;
Additionally, we require a StartupParameters.plist file to tell the system when to start our script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
Description = &quot;Firewall&quot;;&lt;br /&gt;
&lt;br /&gt;
Provides = (&quot;Firewall&quot;);&lt;br /&gt;
&lt;br /&gt;
Requires = (&quot;NetworkExtensions&quot;,&quot;Resolver&quot;);&lt;br /&gt;
&lt;br /&gt;
OrderPreference = &quot;Late&quot;;&lt;br /&gt;
&lt;br /&gt;
Messages =&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
start = &quot;Starting firewall&quot;;&lt;br /&gt;
&lt;br /&gt;
stop = &quot;Stopping firewall&quot;;&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
The real work is undertaken by the /etc/rc.firewall script where the actual calls to ipfw are made. For a moment, let&#39;s just look at the Firewall script. The service will only start if the environment variable FIREWALL is set to YES. The advantage is that if FIREWALL is undefined, it will default to NO. This allows us to try out new firewall rules by running the /etc/rc.firewall script by hand. But if we have to reboot our computer, our rules will not be automatically loaded until we add the line FIREWALL=-YES- to the /etc/hostconfig file. This is a useful safety net when we are developing our own rules. Once we run our own rules, the firewall tab under services will not be usable until we run sudo ipfw flush to remove our rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, we need to fill in /etc/rc.firewall. A copy of rules from earlier will do the job. With the changes made to the /etc/hostconfig file, our custom-made firewall rules will be loaded as part of the normal boot sequence. We now know nearly all we need know to play with our own rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How to Test Your Firewall&lt;br /&gt;
&lt;br /&gt;
To test your rules, you need a few resources on hand. First, and most important, you should be working at your Macintosh. If you manage to create a set of rules that stops you from accessing the Internet, you will still be able to open up a terminal, take down the rules, and reestablish your connections. Failing that, you can at least get to the reboot switch. If you are tempted, as I have been, to ssh into your computer from work and make a couple safe changes, you&#39;ll discover that you&#39;ve locked yourself out and will have to wait until you get home before you can fix anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Second, you will need access to a second computer that is outside your network. My Macintosh is plugged into a router and exposed as a DMZ host. I can plug my laptop into the same router and access the services on my Macintosh as any other computer would. This allows me to check that the services that I think I am exposing are in fact available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This second computer also allows us to run nmap, our third resource. nmap is a port-scanning tool with a considerable pedigree. We are using it here to establish which ports are visible and accessible to the outside world. We know what services we intended to be available, but it can&#39;t do any harm to check.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ sudo nmap -T3 -vv -sS -p 1-65535 -P0 example.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Starting nmap 3.55 ( http://www.insecure.org/nmap/ ) at &lt;br /&gt;
&lt;br /&gt;
2004-12-11 16:12 GMT&lt;br /&gt;
&lt;br /&gt;
Host example.com (x.x.x.x) appears to be up ... good.&lt;br /&gt;
&lt;br /&gt;
Initiating SYN Stealth Scan against example.com (x.x.x.x) at&lt;br /&gt;
&lt;br /&gt;
16:12&lt;br /&gt;
&lt;br /&gt;
Adding open port 80/tcp&lt;br /&gt;
&lt;br /&gt;
Adding open port 22/tcp&lt;br /&gt;
&lt;br /&gt;
The SYN Stealth Scan took 3127 seconds to scan 65535 ports.&lt;br /&gt;
&lt;br /&gt;
Interesting ports on example.com (x.x.x.x):&lt;br /&gt;
&lt;br /&gt;
(The 65532 ports scanned but not shown below are in state:&lt;br /&gt;
&lt;br /&gt;
filtered)&lt;br /&gt;
&lt;br /&gt;
PORT STATE SERVICE&lt;br /&gt;
&lt;br /&gt;
22/tcp open ssh&lt;br /&gt;
&lt;br /&gt;
80/tcp open http&lt;br /&gt;
&lt;br /&gt;
427/tcp closed svrloc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nmap run completed -- 1 IP address (1 host up) scanned in&lt;br /&gt;
&lt;br /&gt;
3128.366 seconds&lt;br /&gt;
&lt;br /&gt;
The only port numbers that turned up were the ones we set up, and port 427 is closed to the outside world. Everything is looking good. Nmap is a powerful tool with many, varied options and is a useful program to master.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Why Would You Write Your Own Rules?&lt;br /&gt;
&lt;br /&gt;
Given that the firewall that comes with the Macintosh does such a good job and is well integrated with the services that you can run, why would you want to write your own rules? If you have a lone Macintosh that connects to the Internet via an Ethernet cable, then you really don&#39;t need to write your own rules. However, if your Macintosh is part of a small network, you may well have services that you only want local machines to connect to. This is the situation I have where I allow remote control of my Macintosh via VNC from local machines but do not want anyone else to know that I even run the service, let alone have access to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Playing with a firewall can be quite scary, especially when you see what is attacking you for every moment that you are connected to the Internet. Your most prudent course of action at this point is to remove any custom rules that you have written and let the Sharing Control Panel take care of things. It was doing a perfectly good job before you knew what it was dealing with and will continue to do so going forward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Peter Hickman is currently working as a programmer for Semantico, which specializes in online reference works and Access Control Systems. When not programming or reading about programming he can be found sleeping. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Return to MacDevCenter.com.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments on this article&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Showing messages 1 through 38 of 38. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
running the pearl script&lt;br /&gt;
&lt;br /&gt;
2007-08-30 20:22:53 thxueb [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
when I tried to run the pearl script nothing happened. I was brought immediately to the terminal prompt with no output or result. I tried:&lt;br /&gt;
&lt;br /&gt;
/...usr/local/bin/myScripts/checkfw.pl /var/log/system.log then I tried perl checkfw.pl /var/log/ipfw.logthen I changed #!/usr/bin/perl -w to #!/usr/bin/env perl -w and did perl /...usr/local/bin/myScripts/checkfw.pl /var/log/system.log all (and a few other variations) failed. I gave the checkfw.pl script execute privileges and i am certain it is in my path cause I see the path when I type env in the terminal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How about opening a single nonstandard port&lt;br /&gt;
&lt;br /&gt;
2006-10-11 17:42:47 TomEM [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I suspect my problem is pretty common. My ISP blocks Port 80 so I&#39;m using another port for http traffic, specifying that in the URL. To run the firewall, I need to open up that extra port. Isn&#39;t there some easy to simply add another line to the rules in the part where the services are opened up? Or do I have to completely override the system preferences. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks for any help. It makes a difference between running and not running the firewall... &lt;br /&gt;
&lt;br /&gt;
StartupItems troubleshooting&lt;br /&gt;
&lt;br /&gt;
2006-04-20 13:40:37 iamstein [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hi, I followed the above directions for creating my custom firewall. I did the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Created a /System/Libraries/Firewall directory&lt;br /&gt;
&lt;br /&gt;
2) Copyied and pasted the text from this website into a Firewall file and a StartupParameters.plist file in that subdirectory&lt;br /&gt;
&lt;br /&gt;
3) Added a line to /etc/hostconfig that says:&lt;br /&gt;
&lt;br /&gt;
FIREWALL=&#39;-YES-&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And yet, when I restart my computer, it&#39;s still using the same old firewall. Got any ideas?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks, Andy &lt;br /&gt;
&lt;br /&gt;
StartupItems troubleshooting&lt;br /&gt;
&lt;br /&gt;
2006-04-21 10:55:45 peterhickman [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You have created the wrong directory, you need to create /Library/StartupItems/Firewall/ It is this directory, /Library/StartupItems/, that OSX looks for when looking for items to run at startup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise the rest looks fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As I understand it from other people the /Library/StartupItems/ directory may not exist by default. It was so long ago that I can no longer remember if I created it or it was there all along. Here are the permissions from my machine:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x root wheel /Library/StartupItems/&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x root wheel /Library/StartupItems/Firewall/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As a note, never do anything in the /System directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
StartupItems troubleshooting&lt;br /&gt;
&lt;br /&gt;
2006-04-21 08:24:14 iamstein [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here&#39;s a little more info. I changed the name from Firewall to Firewall2, just to see what happened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bacchus:~ root# /sbin/SystemStarter start Firewall2&lt;br /&gt;
&lt;br /&gt;
Welcome to Macintosh.&lt;br /&gt;
&lt;br /&gt;
Initializing network&lt;br /&gt;
&lt;br /&gt;
Loading Shared IP extension&lt;br /&gt;
&lt;br /&gt;
kextload: extension /System/Library/Extensions/SharedIP.kext appears to be valid&lt;br /&gt;
&lt;br /&gt;
kextload: loading extension /System/Library/Extensions/SharedIP.kext&lt;br /&gt;
&lt;br /&gt;
kextload: sending 1 personality to the kernel&lt;br /&gt;
&lt;br /&gt;
kextload: extension /System/Library/Extensions/SharedIP.kext is already loaded&lt;br /&gt;
&lt;br /&gt;
Loading IP Firewall extension&lt;br /&gt;
&lt;br /&gt;
kextload: extension /System/Library/Extensions/IPFirewall.kext appears to be valid&lt;br /&gt;
&lt;br /&gt;
kextload: loading extension /System/Library/Extensions/IPFirewall.kext&lt;br /&gt;
&lt;br /&gt;
kextload: sending 1 personality to the kernel&lt;br /&gt;
&lt;br /&gt;
kextload: extension /System/Library/Extensions/IPFirewall.kext is already loaded&lt;br /&gt;
&lt;br /&gt;
Exec failed for item /System/Library/StartupItems/Firewall2: Permission denied&lt;br /&gt;
&lt;br /&gt;
Firewall2 (396) did not complete successfully.&lt;br /&gt;
&lt;br /&gt;
The following StartupItems failed to properly start:&lt;br /&gt;
&lt;br /&gt;
/System/Library/StartupItems/Firewall2 - execution of Startup script failed&lt;br /&gt;
&lt;br /&gt;
Startup complete.&lt;br /&gt;
&lt;br /&gt;
Hangup&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
StartupItems troubleshooting&lt;br /&gt;
&lt;br /&gt;
2006-04-20 13:58:33 iamstein [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Oh, yes, I also, of course created a /etc/rc.firewall file and at the terminal window, if &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Furthermore, if I type:&lt;br /&gt;
&lt;br /&gt;
sudo /etc/rc.firewall&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It runs just fine &lt;br /&gt;
&lt;br /&gt;
Usable on Mac OS X Server?&lt;br /&gt;
&lt;br /&gt;
2005-04-10 00:25:10 lowrezz [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I work in a large Windows organization with a growning population of 8 Xserve systems. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lately I&#39;ve been experimenting with the firewall in the server manager and it&#39;s frustrating. Your article has provided great insight to refining my issues, but I don&#39;t know if the syntax&lt;br /&gt;
&lt;br /&gt;
is applicable to the OS X Server 10.3.8 SW. &lt;br /&gt;
&lt;br /&gt;
Adding firewall rules for NAT + question...&lt;br /&gt;
&lt;br /&gt;
2005-04-06 11:13:06 efixler [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks for this great article! I use my 10.3 (client) box as a DHCP/NAT gateway, and was looking for a way to add rules that would let clients on the internal networks comminucate with the outside world freely, without me having to open ports in the internal firewall. I modified your startup script like so:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
StartService () {&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/sbin/ipfw add 3000 allow ip from 192.168.0.0/24 to any in&lt;br /&gt;
&lt;br /&gt;
/sbin/ipfw add 3010 allow ip from 10.0.2.0/24 to any in&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
StopService ()&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
ConsoleMessage &quot;Stopping Additional Firewall Rules&quot;&lt;br /&gt;
&lt;br /&gt;
/sbin/ipfw delete 3000&lt;br /&gt;
&lt;br /&gt;
/sbin/ipfw delete 3010&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When I run these rules, everything seems to work as intended. However, when the rules are in effect, System Preferences will no longer let me edit the built-in Firewall settings panel, as it can detect that &#39;other firewall software&#39; is in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anyone have any idea how it detects this; I&#39;d like to circumvent this detection (so that I can edit the general rules while the internal network rules remain in effect)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
thanks!&lt;br /&gt;
&lt;br /&gt;
eric&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adding firewall rules for NAT + question...&lt;br /&gt;
&lt;br /&gt;
2007-07-16 07:42:09 variac [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hi eric, were u able to find a solution to your problem. coz m facing the same problem &lt;br /&gt;
&lt;br /&gt;
Adding firewall rules for NAT + question...&lt;br /&gt;
&lt;br /&gt;
2007-07-16 07:41:54 variac [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hi eric, &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
were u able to find a solution to your problem. coz m facing the same problem &lt;br /&gt;
&lt;br /&gt;
Mac firewall&lt;br /&gt;
&lt;br /&gt;
2005-03-26 17:01:35 rspage [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What if I am using a router to network 2 Macs and 1 PC? The router has its own firewall. I have the Mac firewall turned off. Is this correct? Also, since I am using the routers firewall can I still turn on SSH and the other items in the Sharing pane of system preferences or would I need to turn them on using the router firewall? &lt;br /&gt;
&lt;br /&gt;
logging&lt;br /&gt;
&lt;br /&gt;
2005-03-25 06:26:35 Porcustal [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I can&#39;t get this logging to work at all. Nothing happens in my System.log when i start the logging with sudo sysctl -w net.inet.ip.fw.verbose=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I just get the messege logging the use of sudo...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I did get somethings to log to my ipfw.log, but none was ipfw :/ this is prob because you have it as *.* in syslog.conf, might be better to do ipfw.* or ipfw.notice but of course it wouldn&#39;t work for me in the first place. I&#39;m using 10.2.8 Jaguar still, could this be why?? &lt;br /&gt;
&lt;br /&gt;
another correction&lt;br /&gt;
&lt;br /&gt;
2005-03-25 05:47:20 2002switcher [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The section Our Own Startup Script has the wrong path for creating the Firewall directory. It should be:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/System/Library/StartupItems/Firewall&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
another correction&lt;br /&gt;
&lt;br /&gt;
2005-03-29 13:55:01 efixler [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actually, the path in the article is correct. /Library/StartupItems is where you you put your own StartupItems. /System is only for stuff shipped by Apple. &lt;br /&gt;
&lt;br /&gt;
perl-scripts with an input?&lt;br /&gt;
&lt;br /&gt;
2005-03-24 12:14:43 Wikinator [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How can I do the perl-scripts with an input? &lt;br /&gt;
&lt;br /&gt;
Am I right to copy the source of these scripts into a new file? &lt;br /&gt;
&lt;br /&gt;
What about SMB?&lt;br /&gt;
&lt;br /&gt;
2005-03-19 18:51:01 jace [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#39;ve found that the firewall&#39;s default rule for SMB, opening just port 139, isn&#39;t adequate. With the firewall on, Windows or Linux users can&#39;t access my machine, which is unfortunate because SMB is the only filesharing protocol that works across platforms and usually comes pre-installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you know what other ports I need to open? &lt;br /&gt;
&lt;br /&gt;
What about SMB?&lt;br /&gt;
&lt;br /&gt;
2005-03-21 05:35:07 peterhickman [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you know for sure that Windows and Linux users can access the SMB shares when the firewall is not running then it is a problem with the firewall. I don&#39;t run SMB shares but here is how I would approach the problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Find a Windows or Linux machine that wants to access the share and get it&#39;s ip address, say x.x.x.x. Then create a rule to allow full access for this address&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ipfw add ????? allow log ip from x.x.x.x to any in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember to place this rule nice and early in the list (the rule number is at ?????). Now turn logging on and try to access the share (which should succeed). Having done that turn off logging and examine the log file for all references to x.x.x.x This will show you the ports and protocols (tcp, udp, icmp) that were used with the connection. You should be able to work from that. Remember the legitimate ports are usually less than five digits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then remove rule ?????.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Firewalls and Internet Sharing&lt;br /&gt;
&lt;br /&gt;
2005-03-17 12:03:14 makalumatt [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems that if you enable &quot;Internet Sharing&quot; on a Mac, then that particula Mac can&#39;t have its firewall enabled, otherwise the other Macs on the network (those sharing the internet access) won&#39;t properly be able to access network services. Has anyone else experienced that? &lt;br /&gt;
&lt;br /&gt;
Firewalls and Internet Sharing&lt;br /&gt;
&lt;br /&gt;
2005-03-18 05:23:46 peterhickman [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem is that when you do internet sharing OS X does not create any special rules for the computers who are accessing the internet through the master computer. The rules for inbound packets are the same for access to your computer from the outside as they are for the sharees. I have found that as I only expose http and ssh then computers that are accessing the internet via my computer can only access http and ssh. What I do is add an extra rule to allow https access to my computer from the airport card so that my wife can access the shopping sites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
allow tcp from any to any https in via en1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depending on how you feel about the people connecting to your computer you would need to set up a rule for each protocol that they are allowed to use or add a generic rule like&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
allow tcp from any to any in via en1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
but this way you are putting a lot of trust in the users of your system that they will not use your machine as a gateway to spam from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
syslog.conf&lt;br /&gt;
&lt;br /&gt;
2005-03-17 09:56:30 adrianmayo [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I was interested to see the use of&lt;br /&gt;
&lt;br /&gt;
!-ipfw&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
!ipfw&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I cannot find information on the &#39;!&#39; command in &#39;man 5 syslog.conf&#39;. I can guess what is happening, but can you point me in the direction of this &#39;missing&#39; syslog infomation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
syslog.conf&lt;br /&gt;
&lt;br /&gt;
2005-03-30 22:54:45 johnwilkins [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here&#39;s the man page for syslog.conf from FreeBSD 4.11 (the one OS X is based on). It gives a full description of the &quot;program specififcation&quot; ( !program_name and !-program_name).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.freebsd.org/cgi/man.cgi?query=syslog.conf&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD+4.11-stable&amp;amp;format=html &lt;br /&gt;
&lt;br /&gt;
syslog.conf&lt;br /&gt;
&lt;br /&gt;
2005-03-18 01:08:22 peterhickman [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Strange I&#39;ve never noticed that before. It isn&#39;t in the man page. It is mentioned in my redhat man page as an extension to the origonal BSD source. Seems to be working as expected, perhaps the OS X man pages need revising.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This syslogd(8) has a syntax extension to the original BSD source, that makes its use more intuitively. You may precede every prior-&lt;br /&gt;
&lt;br /&gt;
ity with an equation sign (``=&#39;&#39;) to specify only this single priority and not any of the above. You may also (both is valid, too)&lt;br /&gt;
&lt;br /&gt;
precede the priority with an exclamation mark (``!&#39;&#39;) to ignore all that priorities, either exact this one or this and any higher pri-&lt;br /&gt;
&lt;br /&gt;
ority. If you use both extensions than the exclamation mark must occur before the equation sign, just use it intuitively.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ftp rules?&lt;br /&gt;
&lt;br /&gt;
2005-03-16 13:49:39 oefe [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For ftp FTP connections, the first rule seems to be clear:&lt;br /&gt;
&lt;br /&gt;
allow tcp from any to any 20-21 in&lt;br /&gt;
&lt;br /&gt;
This lets clients connect to the ftp port (21) and to ftp-data(20).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
But what is the second rule supposed to be?&lt;br /&gt;
&lt;br /&gt;
allow tcp from any 20,21 to any 1024-65535 in&lt;br /&gt;
&lt;br /&gt;
This would allow clients to access any (unprivileged) port as long as they are connecting from port 20 or 21.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is this somehow supposed to support passive ftp? But clients normally can&#39;t (and won&#39;t) use the privileged ports.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Indeed, with the firewall active, I can connect to the ftp server, but I can&#39;t up/download files or even get a directory listing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How do I configure ipfw correctly for passive ftp? Or can I tell ftpd to use port 20 for the data connection? &lt;br /&gt;
&lt;br /&gt;
ftp rules?&lt;br /&gt;
&lt;br /&gt;
2005-03-22 20:23:03 coolmacguy [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That second line is indeed erroneous. The client is definitely not restricted to connecting from only port 20 or 21 when it initiates the second connection. According to my logs both Dreamweaver and Transmit use a port in the high 60000 range. &lt;br /&gt;
&lt;br /&gt;
ftp rules?&lt;br /&gt;
&lt;br /&gt;
2005-03-16 15:05:43 peterhickman [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The two rules that I gave for the firewall are just a copy of the rules that OS X creates when you turn on FTP and have a firewall running.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you drop your firewall can you connect and use the FTP server and access it as you would expect? If not then the problem lies with the configuration of the FTP server and not the firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Must confess I do not use the FTP server if I can help it, prefering SFTP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ftp rules?&lt;br /&gt;
&lt;br /&gt;
2005-05-06 01:16:43 gsyoungblood [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#39;ve just run into this problem today.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I can confirm the problem as reported above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Mac OS X (10.3.9) firewall on, remote clients are not able to use passive. With the firewall stopped, FTP is fully functional, including passive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This has been giving me grief, to say the least. Fortunately, my machine is behind a firewall already, so turning the Mac firewall off is not opening me up to problems externally. I&#39;d still rather have it enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If I figure out the solution tonight, I&#39;ll post a reply. &lt;br /&gt;
&lt;br /&gt;
ftp rules?&lt;br /&gt;
&lt;br /&gt;
2005-05-06 02:54:25 gsyoungblood [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem is quite simple. The FTP Access firewall rules only support Active FTP, not Passive. At least that is what it appears to be. For a pretty reasonable description and comparison of Active and Passive FTP, see Active FTP vs. Passive FTP, a Definitive Explanation [slacksite.com].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The short version is this: Passive FTP has a second connection from the client to a specified port on the server, a port that is not port 20 or 21. For this reason, the standard firewall rules for FTP Access do not permit Passive FTP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I did not look at the configuration options in detail for the FTP server provided by Apple, but I do not recall seeing anyplace to restrict the passive FTP ports to a set range. This is important, otherwise you are going to be opening your firewall for every port over 1024, and that&#39;s not a good idea.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the goal is to open the least number of ports necessary to support what you want to run.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is how I solved the problem and made Passive FTP work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, I decided to use a different FTP server. I decided to try PureFTPd Manager. After downloading and installing it, I ran it and went into Preferences. There, it lets you specify a range of ports to use for Passive FTP. Choose something you are comfortable with, for example 9900 to 9999 (for a small FTP server).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, go to System Preferences, and make sure FTP Access is checked in both Services and Firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, under Firewall, click New, to add a new firewall rule. Select Other from the drop down list, and enter the range of ports you decided to use, 9900-9999 using the previous example. Then, enter a description, such as FTP Access (Passive). When you click OK, the rule should be added and activated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If everything is running and setup properly, Passive FTP should now be working.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hostname in rules?&lt;br /&gt;
&lt;br /&gt;
2005-03-16 10:52:06 Brad_Fleming [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have an OSX machine that serves in a dynamic IP environment. I would like to add a rule requiring all ssh connections to originate from a *.house.domain.edu IP. The problem is that users can easily get an IP from several different subnets because they move from one building to another fairly often (what with meetings and wireless). Is this possible? If so, can somebody please help me with the syntax used? Thanks in advance. &lt;br /&gt;
&lt;br /&gt;
Hostname in rules?&lt;br /&gt;
&lt;br /&gt;
2005-03-17 01:22:33 peterhickman [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While you can have rules like&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
allow tcp from fred.house.domain.edu to any 22 in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#39;m not sure that you could use a * instead of the fred. You would probably have to iterate all possible values for *. The only way to find out is to try it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you have the netmask for *.house.domain.edu, you could use that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
allow tcp from xxx.xxx.0.0/24 to any 22 in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is there another way of approaching this, could you just only allow the various private address ranges in and exclude the rest. Assuming that the *.house.domain.edu are all private.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slight error&lt;br /&gt;
&lt;br /&gt;
2005-03-16 09:18:48 finkga [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The article states: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
02050 allow tcp from any to any out&lt;br /&gt;
&lt;br /&gt;
02060 allow tcp from any to any established&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Here we allow any outbound packets through and&lt;br /&gt;
&lt;br /&gt;
&amp;gt; follow this up by allowing any previously &lt;br /&gt;
&lt;br /&gt;
&amp;gt; established connections back in. The firewall &lt;br /&gt;
&lt;br /&gt;
&amp;gt; is &quot;state-full&quot;—that is to say it doesn&#39;t just &lt;br /&gt;
&lt;br /&gt;
&amp;gt; process a packet and forget about it as it &lt;br /&gt;
&lt;br /&gt;
&amp;gt; moves onto the next one. It remembers that it&lt;br /&gt;
&lt;br /&gt;
&amp;gt; allowed a connection from my computer to my &lt;br /&gt;
&lt;br /&gt;
&amp;gt; ISP&#39;s mail server and therefore can identify &lt;br /&gt;
&lt;br /&gt;
&amp;gt; incoming packets as being part of the same&lt;br /&gt;
&lt;br /&gt;
&amp;gt; connection and allow then back in without a &lt;br /&gt;
&lt;br /&gt;
&amp;gt; whole host of new rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is not an example of stateful processing. The first rule allows any outgoing tcp connection it doesn&#39;t care whether it is a new connection or an established one. To restrict the outbound rule to new connections only, you must append the word &quot;setup&quot; to this rule. This matches only tcp packets with the SYN bit set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second rule allows only tcp packets without the SYN bit set to pass. With the two rules entered as listed, someone with nmap can still use ACK packets (pretending to be part of an existing connection) to scan your machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you really want stateful monitoring of connections you need to use the check-state rule and the keep-state actions. For instance, adding the rules:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add 2050 check-state&lt;br /&gt;
&lt;br /&gt;
add 2060 allow tcp from me to any out setup keep-state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
will make the firewall stateful. The first rule says, &quot;match the packets against any of the dynamic rules I&#39;ve made so far.&quot; If none of these matches, the next rule comes into play. Rule 2060 says, &quot;if this is a new outgoing connection initiated by me, make a dynamic rule that will allow any traffic from this connection through.&quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With these modified rules, incoming ACK packets and other beasts trying to pretend they are part of an existing connection will not match and will be turned away at the door. Check out the ipfw man page for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hope this isn&#39;t as confusing as it sounds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Glenn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slight error&lt;br /&gt;
&lt;br /&gt;
2005-03-17 01:01:12 peterhickman [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You are correct, I am using the term &#39;state-full&#39; incorrectly here. What I wanted to get across was that ipfw did have a memory of previous connections and could recognise a packet as belonging to an already established / permitted connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having said that &#39;state-full&#39; does have a technical meaning in regards to firewalls an missusing it isn&#39;t going to help anybody.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks again for the correction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slight error&lt;br /&gt;
&lt;br /&gt;
2006-02-04 15:51:27 sumbach [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This still isn&#39;t quite right. Using your rules, ipfw doesn&#39;t have any memory at all--it&#39;s using the TCP flags to determine whether the connection is established or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A stateful ipfw ruleset will always contain at least one rule with the &#39;check-state&#39; action and at least one rule with the &#39;keep-state&#39; option. ipfw&#39;s &quot;memory&quot; is in the form of dynamic rules. &lt;br /&gt;
&lt;br /&gt;
edit or create?&lt;br /&gt;
&lt;br /&gt;
2005-03-16 04:31:07 Oneida [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nice article. I use the default set of rules, but restricted to certain IPs for ssh, and a high numebered port in the router pointing to the ssh port in my mac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OK. In &quot;Writing the ipfw Log Lines to a Different File&quot; you edit /etc/syslogd.conf.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My mac with 10.3.8 does not have that file, but it does have /etc/syslog.conf which has lines that define where to log things, such as &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mail.* /var/log/mail.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And others. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Should we create /etc/syslogd.conf or use /etc/syslog.conf instead? And if we have to create it, which permissions should we use?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
edit or create?&lt;br /&gt;
&lt;br /&gt;
2005-03-16 12:19:19 peterhickman [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sorry that is a typo of mine. As Glen has pointed out in his reply to your question /etc/syslog.conf is the file to use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you for catching that for me Glen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
edit or create?&lt;br /&gt;
&lt;br /&gt;
2005-03-16 10:17:11 finkga [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just use the existing /etc/syslog.conf. But first, I recommend making a backup copy of the file. &lt;br /&gt;
&lt;br /&gt;
-- Glenn &lt;br /&gt;
&lt;br /&gt;
name resolution&lt;br /&gt;
&lt;br /&gt;
2005-07-15 14:58:57 ruy_lopez [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anyone any ideas for adding name resolution to the checkfw.pl script. I think it would be a good enhancement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All worked flawlessly by the way.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nice article. &lt;br /&gt;
&lt;br /&gt;
name resolution&lt;br /&gt;
&lt;br /&gt;
2005-07-23 07:05:17 peterhickman [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code to do this, taken from perldoc -f gethostbyaddr, would be something along the lines of this, put&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use Socket;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
at the top with the other use statements, and then when you are about to print out the address do sothing like the following.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my $iaddr = inet_aton(&quot;211.22.171.213&quot;);&lt;br /&gt;
&lt;br /&gt;
my $name = gethostbyaddr($iaddr, AF_INET);&lt;br /&gt;
&lt;br /&gt;
print &quot;$name\n&quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However I find the raw IP addresses best as I can just drop them into my firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
name resolution&lt;br /&gt;
&lt;br /&gt;
2005-07-25 08:35:21 ruy_lopez [View]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks Peter for the push in the right direction. I now post (for any who are interested) the resulting ammendments to achieve name resolution AND ip data for each ipfw.log event. The result (after a bit of hammering) is the inclusion of these lines:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# obviously include: use Socket; at the top, then:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#look for this part of original script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
printf( &quot;%21s %s %21s : %8d : %8d\n&quot;,&lt;br /&gt;
&lt;br /&gt;
$inside,&lt;br /&gt;
&lt;br /&gt;
$direction,&lt;br /&gt;
&lt;br /&gt;
$outside,&lt;br /&gt;
&lt;br /&gt;
$data{$k}-&amp;gt;{in} &lt;br /&gt;
&lt;br /&gt;
0,&lt;br /&gt;
&lt;br /&gt;
$data{$k}-&amp;gt;{out} &lt;br /&gt;
&lt;br /&gt;
0 );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# and in line with the indents apend ( or rather insert after the above ) the following :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my ( $inaddress, $inport ) = split( &#39;:&#39; , &lt;br /&gt;
&lt;br /&gt;
$inside );&lt;br /&gt;
&lt;br /&gt;
my $iaddr = inet_aton(&quot;$inaddress&quot;);&lt;br /&gt;
&lt;br /&gt;
my $namein = gethostbyaddr($iaddr,AF_INET);&lt;br /&gt;
&lt;br /&gt;
my ( $outaddress, $outport ) = split( &#39;:&#39; , $outside );&lt;br /&gt;
&lt;br /&gt;
my $oaddr = inet_aton(&quot;$outaddress&quot;);&lt;br /&gt;
&lt;br /&gt;
my $nameout = gethostbyaddr($oaddr,AF_INET);&lt;br /&gt;
&lt;br /&gt;
if ( defined($namein) ) {&lt;br /&gt;
&lt;br /&gt;
$namein = $namein;&lt;br /&gt;
&lt;br /&gt;
} else {&lt;br /&gt;
&lt;br /&gt;
$namein = &quot;unresolved&quot;;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ( defined($nameout) ) {&lt;br /&gt;
&lt;br /&gt;
$nameout = $nameout;&lt;br /&gt;
&lt;br /&gt;
} else {&lt;br /&gt;
&lt;br /&gt;
$nameout = &quot;unresolved&quot;;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
printf( &quot;%21s %s %21s\n&quot;,&lt;br /&gt;
&lt;br /&gt;
$namein,&lt;br /&gt;
&lt;br /&gt;
$direction,&lt;br /&gt;
&lt;br /&gt;
$nameout );&lt;br /&gt;
&lt;br /&gt;
print &quot;\n&quot;; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# now the original script continues with these lines:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print &quot;\n&quot;;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I warn you that this runs in a rather dirty spluttering manner but should work without errors. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#39;m not sure that I&#39;ll use it too much but I&#39;m considering using it for daily crontab emailing (I&#39;ve already changed ipfw from weekly to daily in /etc/periodical), so I get an email of all the addresses and names that ipfw has encountered during the day.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, I&#39;m sure the above could be simplified but my perl skills are not yet up to the task. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tagged Articles&lt;br /&gt;
&lt;br /&gt;
Post to del.icio.us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article has been tagged:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
osxsecuritymacfirewallnetworkosx&lt;br /&gt;
&lt;br /&gt;
Articles that share the tag osx:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Top Ten Mac OS X Tips for Unix Geeks (302 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Automated Backups on Tiger Using rsync (109 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start Me Up: Writing and Understanding OS X StartupItems (75 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How Does Open Source Software Stack Up on the Mac? (71 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Write Your Own Automator Actions (64 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
View All&lt;br /&gt;
&lt;br /&gt;
security&lt;br /&gt;
&lt;br /&gt;
Articles that share the tag security:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Secure RSS Syndication (169 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Your Site For Security Vulnerabilities (74 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Building a Desktop Firewall (64 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Next 50 Years of Computer Security: An Interview with Alan Cox (42 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Protect Yourself from WiFi Snoops (40 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
View All&lt;br /&gt;
&lt;br /&gt;
mac&lt;br /&gt;
&lt;br /&gt;
Articles that share the tag mac:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Top Ten Mac OS X Tips for Unix Geeks (300 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Automated Backups on Tiger Using rsync (98 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getting Things Done with Your Mac (89 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How Does Open Source Software Stack Up on the Mac? (81 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Write Your Own Automator Actions (55 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
View All&lt;br /&gt;
&lt;br /&gt;
firewall&lt;br /&gt;
&lt;br /&gt;
Articles that share the tag firewall:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Building a Desktop Firewall (73 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exploring the Mac OS X Firewall (33 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using IPFW Rulesets with BSD Firewalls (8 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Feather Linux for Firewalls (4 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Monitoring IPFW Logs (4 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
View All&lt;br /&gt;
&lt;br /&gt;
network&lt;br /&gt;
&lt;br /&gt;
Articles that share the tag network:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Untwisting Python Network Programming (67 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wireless Mesh Networking (52 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Building a Desktop Firewall (24 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VPN on Mac OS X (19 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Demystifying LDAP (19 tags)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
View All&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sponsored Resources&lt;br /&gt;
&lt;br /&gt;
Inside Lightroom &lt;br /&gt;
&lt;br /&gt;
Related to this Article&lt;br /&gt;
&lt;br /&gt;
Take Control of Passwords in Mac OS X &lt;br /&gt;
&lt;br /&gt;
October 2010&lt;br /&gt;
&lt;br /&gt;
$10.00 USD &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Take Control of PDFpen 5 &lt;br /&gt;
&lt;br /&gt;
October 2010&lt;br /&gt;
&lt;br /&gt;
$10.00 USD &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
©2010, O&#39;Reilly Media, Inc.&lt;br /&gt;
&lt;br /&gt;
(707) 827-7000 / (800) 998-9938&lt;br /&gt;
&lt;br /&gt;
All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. About O&#39;Reilly &lt;br /&gt;
&lt;br /&gt;
Academic Solutions &lt;br /&gt;
&lt;br /&gt;
Contacts &lt;br /&gt;
&lt;br /&gt;
Customer Service &lt;br /&gt;
&lt;br /&gt;
Careers &lt;br /&gt;
&lt;br /&gt;
Press Room &lt;br /&gt;
&lt;br /&gt;
Privacy Policy &lt;br /&gt;
&lt;br /&gt;
Terms of Service &lt;br /&gt;
&lt;br /&gt;
Writing for O&#39;Reilly &lt;br /&gt;
&lt;br /&gt;
Community &lt;br /&gt;
&lt;br /&gt;
Authors &lt;br /&gt;
&lt;br /&gt;
Forums &lt;br /&gt;
&lt;br /&gt;
Membership &lt;br /&gt;
&lt;br /&gt;
Newsletters &lt;br /&gt;
&lt;br /&gt;
RSS Feeds &lt;br /&gt;
&lt;br /&gt;
User Groups &lt;br /&gt;
&lt;br /&gt;
More O&#39;Reilly Sites &lt;br /&gt;
&lt;br /&gt;
igniteshow.com &lt;br /&gt;
&lt;br /&gt;
makerfaire.com &lt;br /&gt;
&lt;br /&gt;
makezine.com &lt;br /&gt;
&lt;br /&gt;
craftzine.com &lt;br /&gt;
&lt;br /&gt;
labs.oreilly.com &lt;br /&gt;
&lt;br /&gt;
Partner Sites &lt;br /&gt;
&lt;br /&gt;
InsideRIA &lt;br /&gt;
&lt;br /&gt;
O&#39;Reilly Insights on Forbes.com</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/9085412051465391148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/11/exploring-mac-os-x-firewall.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/9085412051465391148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/9085412051465391148'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/11/exploring-mac-os-x-firewall.html' title='Exploring the Mac OS X Firewall'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-7565529844994734276</id><published>2010-08-28T02:06:00.000+02:00</published><updated>2010-08-28T02:06:50.405+02:00</updated><title type='text'>simplest way to make an application bundle using nothing but notepad.</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;div&gt;Create a Application Bundle in 3 easy steps ;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;No Xcode needed, just a filebrowser and a texteditor. While poking around with .app dirs I noticed that as soon as I provided a MacOS folder containing something executable named the same as the app, my tiger box happily starts to run it without needing or checking a .plist or anything....&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;Sweet :)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;here goes ;)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;* in the terminal:&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;bash$ mkdir -p MyShinyShellScriptWrapper.app/MacOS&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times;&quot;&gt;&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times;&quot;&gt;&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;bash$ echo -e &quot;#!/bin/bash\necho \$(date) &amp;gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;~/Desktop/proofofexecution.txt&lt;/span&gt;&lt;/span&gt;&quot; \ &amp;nbsp;&amp;gt;MyShinyShellScriptWrapper.app/MacOS/MyShinyShellScriptWrapper&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times, Courier, monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;bash$ chmod 755&amp;nbsp;MyShinyShellScriptWrapper.app/MacOS/MyShinyShellScriptWrapper&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;* or in the finder:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;Open a finder window and create a new folder. &amp;nbsp;Open it and in it create a MacOS folder, now decide on a name. Create a new (plain) text document in the newly created folder and name it YourProgramName&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&amp;nbsp;Now type these two lines in the textdocument:&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;echo $(date) &amp;gt; ~/Desktop/proofofexecution.txt&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;Right! Close the file and save it as YourProgramName without an extension. (eg no .txt or .html or .whatever)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;Right click on the file and &amp;nbsp;select Get Info. &amp;nbsp;Here you.... pfff, here you DONT find a set permissions to executable.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;Anyway, open up a Terminal and type chmod 755 YourProgramName and close it off/ (is this even neccessary?)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;Now go 2 levels up in the folder and rename the folder that you created in the beginning to &amp;nbsp;YourProgramName.app&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;Now it should&#39;ve turned into an application with a broken icon. This is good :) Double click the icon to start it up!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;Nothing much happened? The script runs in the background and takes a nanosecond to finish so nothing much should happen, but on your Desktop&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;You should now see a new file called proofofexecution containing a timestamp.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;Shweeet&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;How to make a shell script into a apple macintosh app application bundle using nothing but common household tools ;-)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
dd&lt;br /&gt;
&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;, Courier, monospace;&quot;&gt;Sweet :)&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/7565529844994734276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/simplest-way-to-make-application-bundle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/7565529844994734276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/7565529844994734276'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/simplest-way-to-make-application-bundle.html' title='simplest way to make an application bundle using nothing but notepad.'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-1998854818784023447</id><published>2010-08-28T00:32:00.002+02:00</published><updated>2010-08-28T00:32:42.057+02:00</updated><title type='text'>10.4: Remapping keys in Mac OS X 10.4</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #000033; font-family: tahoma, helvetica, arial, sans-serif; font-size: 16px; font-weight: bold;&quot;&gt;10.4: Remapping keys in Mac OS X 10.4&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #000033; font-family: tahoma, helvetica, arial, sans-serif;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black; font-family: verdana, tahoma, helvetica, arial, sans-serif; font-size: 12px; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #000033; font-family: tahoma, helvetica, arial, sans-serif;&quot;&gt;&lt;b&gt;&lt;div class=&quot;story-title&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; border-bottom-color: rgb(186, 192, 205); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(186, 192, 205); border-top-style: solid; border-top-width: 1px; color: #000033; font: normal normal bold 135%/normal tahoma, helvetica, arial, sans-serif; padding-left: 5px; vertical-align: middle;&quot;&gt;10.4: Remapping keys in Mac OS X 10.4&amp;nbsp;&lt;span style=&quot;float: right; padding-top: 5px;&quot;&gt;&lt;a href=&quot;http://hints.macworld.com/index.php?topic=system104&quot; rel=&quot;category&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: transparent; background-image: initial; background-position: initial initial; background-repeat: initial; color: blue;&quot;&gt;&lt;img alt=&quot;System 10.4&quot; class=&quot;floatright&quot; src=&quot;http://hints.macworld.com/layout/hints1/images/topics/t_system104.png&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: right;&quot; title=&quot;System 10.4&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;story-information&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0% 50%; background-repeat: repeat; color: #777777; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; line-height: 20px;&quot;&gt;Aug 29, &#39;06 07:30:04AM • Contributed by:&amp;nbsp;&lt;a class=&quot;storybyline&quot; href=&quot;http://hints.macworld.com/users.php?mode=profile&amp;amp;uid=1045021&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: transparent; background-image: initial; background-position: initial initial; background-repeat: initial; color: blue;&quot;&gt;mietek&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;story-body&quot; style=&quot;line-height: 1.4 !important; padding-bottom: 10px; padding-left: 5px; padding-right: 5px; padding-top: 5px; text-align: justify;&quot;&gt;&lt;img align=&quot;left&quot; src=&quot;http://www.macosxhints.com/images/tigerx2a.jpg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-right: 10px;&quot; /&gt;The Mac OS X 10.4 Keyboard &amp;amp; Mouse preference pane provides a way to remap certain keys. However, the interface doesn&#39;t expose the full functionality -- a common problem with Apple software. Note that this guide assumes you&#39;using the&amp;nbsp;&lt;tt style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;bash&lt;/tt&gt;&amp;nbsp;shell.&lt;br /&gt;
&lt;br /&gt;
Read on to learn...&lt;ul&gt;&lt;li&gt;What keys can be remapped without the use of any thirdâ€“party software?&lt;/li&gt;
&lt;li&gt;How do I remap those keys?&lt;/li&gt;
&lt;li&gt;How do I remap the Caps Lock key to the Escape key?&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;What keys can be remapped without the use of any thirdâ€“party software?&lt;/strong&gt;&amp;nbsp;(The following list shows the key name on the left, and that key&#39;s value on the right.)&lt;ul&gt;&lt;li&gt;None â€” â€“1&lt;/li&gt;
&lt;li&gt;Caps Lock â€” 0&lt;/li&gt;
&lt;li&gt;Shift (Left) â€” 1&lt;/li&gt;
&lt;li&gt;Control (Left) â€” 2&lt;/li&gt;
&lt;li&gt;Option (Left) â€” 3&lt;/li&gt;
&lt;li&gt;Command (Left) â€” 4&lt;/li&gt;
&lt;li&gt;Keypad 0 â€” 5&lt;/li&gt;
&lt;li&gt;Help â€” 6&lt;/li&gt;
&lt;li&gt;Shift (Right) â€” 9&lt;/li&gt;
&lt;li&gt;Control (Right) â€” 10&lt;/li&gt;
&lt;li&gt;Option (Right) â€” 11&lt;/li&gt;
&lt;li&gt;Command (Right) â€” 12&lt;/li&gt;
&lt;li&gt;Kernel Panic â€” 16&lt;/li&gt;
&lt;/ul&gt;Be warned that the code&amp;nbsp;&lt;tt style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;16&lt;/tt&gt;, when used as the destination of a mapping, actually causes a kernel panic on keypress -- as I&#39;ve found out the hard way.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;How do I remap those keys?&lt;/strong&gt;&lt;ol&gt;&lt;li&gt;Remap one of the keys available in the Keyboard &amp;amp; Mouse preference pane in order to make the following steps easier.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Locate the hidden property list file used to store the settings. It&#39;s in your user&#39;s Library/Preferences/ByHost folder, and is named&lt;tt style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;.GlobalPreferences.000d*&lt;/tt&gt;. I assume there&#39;ll be only one such file; you&#39;ll need to verify that. From here on, that file and path are referred to as&lt;tt style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;$FILE&lt;/tt&gt;.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Duplicate the file and convert it to the XML property list format:&lt;pre style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;&lt;code style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;$ cp $FILE ~/keys-binary.plist
$ plutil -convert xml1 -o ~/keys-xml.plist ~/keys-binary.plist&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Open the resulting XML file and locate the&lt;tt style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;com.apple.keyboard.modifiermapping&lt;/tt&gt;&amp;nbsp;key. Its value is an array containing several entries, each in turn containing&lt;tt style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;HIDKeyboardModifierMappingSrc&lt;/tt&gt;&amp;nbsp;and&amp;nbsp;&lt;tt style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;HIDKeyboardModifierMappingDst&lt;/tt&gt;keys. The values of those keys are described in the table above. Make the changes you wish to make, and save your work.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Convert the file back to the binary property list format, and put it back in the correct location:&lt;pre style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;&lt;code style=&quot;color: #9f2d00; font-family: Monaco, Courier, monospace; font-size: 12px;&quot;&gt;$ plutil -convert binary1 -o ~/keys-binary.plist ~/keys-xml.plist
$ cp ~/keys-binary.plist $FILE&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Log out and back in to apply changes.&lt;/li&gt;
&lt;/ol&gt;&lt;strong&gt;How do I remap the Caps Lock key to the Escape key?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, this will require the use of a thirdâ€“party program. I used a free trial version of&amp;nbsp;&lt;a href=&quot;http://www.keyboardmaestro.com/main/&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: transparent; background-image: initial; background-position: initial initial; background-repeat: initial; color: #000099;&quot; title=&quot;Keyboard Maestro&quot;&gt;Keyboard Maestro&lt;/a&gt;&amp;nbsp;by&amp;nbsp;&lt;a href=&quot;http://www.stairways.com/&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: transparent; background-image: initial; background-position: initial initial; background-repeat: initial; color: #000099;&quot; title=&quot;Stairways Software&quot;&gt;Stairways Software&lt;/a&gt;. First, remap the Caps Lock key to the Help key, following the instructions above. Then, in Keyboard Maestro:&lt;ul&gt;&lt;li&gt;Create a new macro.&lt;/li&gt;
&lt;li&gt;Add a Simulate Keypress action, with an User Keystroke â€” the Escape key.&lt;/li&gt;
&lt;li&gt;Add a Hot Key trigger, set to the Help key.&lt;/li&gt;
&lt;li&gt;In the Preferences section, enable the Launch Engine at Login option. While you&#39;re at it, you might also want to disable all other unnecessary features.&lt;/li&gt;
&lt;/ul&gt;An always&amp;nbsp;&lt;a href=&quot;http://desp.night.pl/keys.html&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: transparent; background-image: initial; background-position: initial initial; background-repeat: initial; color: #000099;&quot; title=&quot;Remapping keys in Mac OS X 10.4&quot;&gt;upâ€“toâ€“date version of this guide&lt;/a&gt;&amp;nbsp;can be found on my blog...&lt;/div&gt;&lt;/b&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/1998854818784023447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/104-remapping-keys-in-mac-os-x-104.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1998854818784023447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/1998854818784023447'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/104-remapping-keys-in-mac-os-x-104.html' title='10.4: Remapping keys in Mac OS X 10.4'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-4325008344394882964</id><published>2010-08-27T13:43:00.002+02:00</published><updated>2010-08-27T13:43:57.422+02:00</updated><title type='text'>multitail bus error on osx</title><content type='html'>&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;I tried to install and use multitail this morning.

sudo port install multitail

everything seems to build/install

multitail /opt/local/apache2/logs/access_log /opt/local/apache2/logs/ 
error_log

gives me a &quot;Bus error&quot; - along with 2 processes running tail...

Installs and runs just fine on Panther (just checking)

I can download and build the source in my home directory. That works  
just fine, and runs.

For entertainment value I created /opt/local/etc/multitail.conf (from  
the /opt/local/etc/multitail.conf.new file)

Bus error stopped happening...
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/4325008344394882964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/multitail-bus-error-on-osx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/4325008344394882964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/4325008344394882964'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/multitail-bus-error-on-osx.html' title='multitail bus error on osx'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-4733352905712936544</id><published>2010-08-27T02:38:00.002+02:00</published><updated>2010-08-27T02:38:23.436+02:00</updated><title type='text'>Executed in subshell, trap on exit</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: sans-serif; font-size: 13px; line-height: 19px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: lavender; border-bottom-color: rgb(47, 111, 171); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(47, 111, 171); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(47, 111, 171); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(47, 111, 171); border-top-style: dashed; border-top-width: 1px; color: black; line-height: 1.1em; overflow-x: auto; overflow-y: auto; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;&quot;&gt;#!/bin/bash
# --- subshell_trap.sh -------------------------------------------------
# Example script for handling bash errors.  Exit on error.  Trap exit.
# This script is supposed to run in a subshell.
# See also: http://fvue.nl/wiki/Bash:_Error_handling

    # Let shell functions inherit ERR trap.  Same as `set -E&#39;.
set -o errtrace 
    # Trigger error when expanding unset variables.  Same as `set -u&#39;.
set -o nounset
    #  Trap non-normal exit signals: 1/HUP, 2/INT, 3/QUIT, 15/TERM, ERR
    #  NOTE1: - 9/KILL cannot be trapped.
    #+        - 0/EXIT isn&#39;t trapped because:
    #+          - with ERR trap defined, trap would be called twice on error
    #+          - with ERR trap defined, syntax errors exit with status 0, not 2
    #  NOTE2: Setting ERR trap does implicit `set -o errexit&#39; or `set -e&#39;.
trap onexit 1 2 3 15 ERR


#--- onexit() -----------------------------------------------------
#  @param $1 integer  (optional) Exit status.  If not set, use `$?&#39;

function onexit() {
    local exit_status=${1:-$?}
    echo Exiting $0 with $exit_status
    exit $exit_status
}



# myscript



    # Allways call `onexit&#39; at end of script
onexit&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/4733352905712936544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/executed-in-subshell-trap-on-exit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/4733352905712936544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/4733352905712936544'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/executed-in-subshell-trap-on-exit.html' title='Executed in subshell, trap on exit'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-5839133667472674131</id><published>2010-08-27T01:26:00.000+02:00</published><updated>2010-08-27T01:26:21.333+02:00</updated><title type='text'>http://www.gfxcoder.us/wiki/programming/bash</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666; font-family: verdana, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px;&quot;&gt;&lt;div id=&quot;sites-chrome-main-wrapper&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: initial; background-image: url(http://www.gstatic.com/sites/p/ed2824/system/app/themes/terraice/canv-line.gif); background-position: 50% 0%; background-repeat: repeat-x;&quot;&gt;&lt;div id=&quot;sites-chrome-main-wrapper-inside&quot;&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;sites-layout-hbox&quot; id=&quot;sites-chrome-main&quot; style=&quot;margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: auto; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 15px; table-layout: fixed; text-align: left; width: 776px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td id=&quot;sites-canvas-wrapper&quot; style=&quot;padding-bottom: 1px; padding-left: 4px; padding-right: 4px; padding-top: 1px; vertical-align: top;&quot;&gt;&lt;div id=&quot;sites-canvas&quot; style=&quot;background-image: none !important; color: rgb(68, 68, 68) !important;&quot;&gt;&lt;div class=&quot;sites-canvas-main&quot; id=&quot;sites-canvas-main&quot; style=&quot;background-color: transparent; background-image: none !important; min-height: 150px; padding-bottom: 5px; padding-top: 5px;&quot;&gt;&lt;div id=&quot;sites-canvas-main-content&quot;&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;sites-layout-name-one-column sites-layout-hbox&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; table-layout: fixed; width: 618px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td class=&quot;sites-layout-tile sites-tile-name-content-1&quot; style=&quot;padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;div&gt;Handy BASH reference (&lt;a href=&quot;http://www.pixelbeat.org/cmdline.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;robust script writing (&lt;a href=&quot;http://www.davidpashley.com/articles/writing-robust-shell-scripts.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;lockfile&lt;/div&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: #efefef; border-bottom-color: rgb(211, 211, 211); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(211, 211, 211); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(211, 211, 211); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(211, 211, 211); border-top-style: solid; border-top-width: 1px; display: block; line-height: 13px; padding-bottom: 0.5em; padding-left: 1em; padding-right: 0px; padding-top: 0.5em;&quot;&gt;&lt;code style=&quot;color: #006000;&quot;&gt;lockfile a.lock&lt;/code&gt;&lt;br /&gt;
&lt;span style=&quot;color: #006000; font-family: monospace;&quot;&gt;#do stuff here&lt;/span&gt;&lt;code style=&quot;color: #006000;&quot;&gt;rm -f a.lock&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;date (&lt;a href=&quot;http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;Spicing up your shell script (&lt;a href=&quot;http://www.cyberciti.biz/tips/spice-up-your-unix-linux-shell-scripts.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;parameters (&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-bash-parameters.html?ca=drs-&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;br /&gt;
&lt;h2 style=&quot;color: #99cccc; font-family: verdana !important; font-size: 1.5em;&quot;&gt;&lt;a href=&quot;&quot; name=&quot;TOC-Tutorials&quot; style=&quot;color: #339999; text-decoration: underline;&quot;&gt;&lt;/a&gt;Tutorials&lt;/h2&gt;&lt;div&gt;misc (&lt;a href=&quot;http://www.linuxconfig.org/Bash_scripting_Tutorial&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://www.arachnoid.com/linux/shell_programming.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;functions (&lt;a href=&quot;http://www.faqs.org/docs/abs/HTML/functions.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;timing commands&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: #efefef; border-bottom-color: rgb(211, 211, 211); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(211, 211, 211); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(211, 211, 211); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(211, 211, 211); border-top-style: solid; border-top-width: 1px; display: block; line-height: 13px; padding-bottom: 0.5em; padding-left: 1em; padding-right: 0px; padding-top: 0.5em;&quot;&gt;&lt;span style=&quot;color: #006000; font-family: monospace;&quot;&gt;/usr/bin/time -o outfile -v command # prints verbose stats into outfile from running command&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;BASH internal variables (&lt;a href=&quot;http://tldp.org/LDP/abs/html/internalvariables.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;for loops (&lt;a href=&quot;http://www.cyberciti.biz/faq/bash-for-loop/&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: #efefef; border-bottom-color: rgb(211, 211, 211); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(211, 211, 211); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(211, 211, 211); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(211, 211, 211); border-top-style: solid; border-top-width: 1px; display: block; line-height: 13px; padding-bottom: 0.5em; padding-left: 1em; padding-right: 0px; padding-top: 0.5em;&quot;&gt;&lt;code style=&quot;color: #006000;&quot;&gt;for i in 1 2 3 4 5&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo &quot;Welcome $i times&quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for i in {1..5}&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo &quot;Welcome $i times&quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for i in {0..10..2} # skip by 2s, only BASH 4.0+&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo &quot;Welcome $i times&quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for (( c=1; c&amp;lt;=5; c++ ))&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo &quot;Welcome $c times&quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for i in 1 2 3 4 5&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo &quot;Welcome $i times&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if ( condition )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;break&lt;br /&gt;
&amp;nbsp;&amp;nbsp;fi&lt;br /&gt;
done&lt;br /&gt;
# continue - jumps to beginning of loop with next iteration&lt;br /&gt;
&lt;br /&gt;
for file in /etc/*&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if [ &quot;${file}&quot; == &quot;/etc/resolv.conf&quot; ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo &quot;file ${file} found!&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
files=&quot;$@&quot;&lt;br /&gt;
for f in $files&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if [ -f ${f} ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo &quot;{f} is a file&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo &quot;${f} is not a file&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;fi&lt;br /&gt;
done&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;pausing with&amp;nbsp;&lt;code style=&quot;color: #006000;&quot;&gt;read&lt;/code&gt;&amp;nbsp;(&lt;a href=&quot;http://ss64.com/bash/read.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: #efefef; border-bottom-color: rgb(211, 211, 211); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(211, 211, 211); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(211, 211, 211); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(211, 211, 211); border-top-style: solid; border-top-width: 1px; display: block; line-height: 13px; padding-bottom: 0.5em; padding-left: 1em; padding-right: 0px; padding-top: 0.5em;&quot;&gt;&lt;code style=&quot;color: #006000;&quot;&gt;$ read -p &quot;Press enter to quit...&quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # reads one line&lt;br /&gt;
$ read -n 1 -p &quot;Press any key to start backup...&quot; &amp;nbsp; &amp;nbsp;# reads only one char&lt;br /&gt;
$ read -n 1 -s -t 5 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# reads one char, no echo, 5sec timeout&lt;br /&gt;
$ read -n 1 -s key &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # reads one char, no echo, stores in ${key}&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;terminate commands after timeout (&lt;a href=&quot;http://redflo.de/tiki-index.php?page=Bash+script+with+timeout+function&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;div&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: #efefef; border-bottom-color: rgb(211, 211, 211); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(211, 211, 211); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(211, 211, 211); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(211, 211, 211); border-top-style: solid; border-top-width: 1px; display: block; line-height: 13px; padding-bottom: 0.5em; padding-left: 1em; padding-right: 0px; padding-top: 0.5em;&quot;&gt;&lt;span style=&quot;color: #006000; font-family: monospace;&quot;&gt;#!/bin/bash&lt;br /&gt;
# License: BSD License&lt;br /&gt;
# As Example we start 3 production processes in the background&lt;br /&gt;
# always record PID in PRODPID&lt;br /&gt;
&lt;br /&gt;
sleep 50 &amp;amp;&lt;br /&gt;
PRODPID[1]=$!&lt;br /&gt;
&lt;br /&gt;
sleep 20 &amp;amp;&lt;br /&gt;
PRODPID[2]=$!&lt;br /&gt;
&lt;br /&gt;
# multiple processes in a subshell as example&lt;br /&gt;
(sleep 20 ; sleep 10 ; sleep 5)&amp;amp;&lt;br /&gt;
PRODPID[3]=$!&lt;br /&gt;
&lt;br /&gt;
export PRODPID&lt;br /&gt;
&lt;br /&gt;
# record own PID&lt;br /&gt;
export PID=$$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# define exit function&lt;br /&gt;
exit_timeout() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo &quot;Timeout. These processes are not finished:&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for i in ${PRODPID[@]} ; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;ps -p $i |grep -v &quot;PID TTY &amp;nbsp; &amp;nbsp; &amp;nbsp;TIME CMD&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $? == 0 ] ; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;# process still alive&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;echo &quot;Sending SIGTERM to process $i&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;kill $i&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp;# timeout exit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;exit&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Handler for signal USR1 for the timer&lt;br /&gt;
trap exit_timeout SIGUSR1&lt;br /&gt;
&lt;br /&gt;
# starting timer in subshell. It sends a SIGUSR1 to the father if it timeouts.&lt;br /&gt;
export TIMEOUT=30&lt;br /&gt;
(sleep $TIMEOUT ; kill -SIGUSR1 $PID) &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# record PID of timer&lt;br /&gt;
TPID=$!&lt;br /&gt;
&lt;br /&gt;
# wait for all production processes to finish&lt;br /&gt;
wait ${PRODPID[*]}&lt;br /&gt;
&lt;br /&gt;
# Normal exit&lt;br /&gt;
echo &quot;All processes ended normal&quot;&lt;br /&gt;
&lt;br /&gt;
# kill timer&lt;br /&gt;
kill $TPID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;or (&lt;a href=&quot;http://www.linuxforums.org/forum/redhat-fedora-linux-help/115955-how-kill-process-after-specific-time.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;/div&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: #efefef; border-bottom-color: rgb(211, 211, 211); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(211, 211, 211); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(211, 211, 211); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(211, 211, 211); border-top-style: solid; border-top-width: 1px; display: block; line-height: 13px; padding-bottom: 0.5em; padding-left: 1em; padding-right: 0px; padding-top: 0.5em;&quot;&gt;&lt;code style=&quot;color: #006000;&quot;&gt;runtime=${1:-1m}&lt;/code&gt;&lt;br /&gt;
&lt;code style=&quot;color: #006000;&quot;&gt;mypid=$&lt;/code&gt;&lt;br /&gt;
&lt;code style=&quot;color: #006000;&quot;&gt;cp /Database/Client_db_200802110231.BAK .&amp;amp;&lt;/code&gt;&lt;br /&gt;
&lt;code style=&quot;color: #006000;&quot;&gt;cpid=$!&lt;/code&gt;&lt;br /&gt;
&lt;code style=&quot;color: #006000;&quot;&gt;sleep $runtime&lt;/code&gt;&lt;br /&gt;
&lt;code style=&quot;color: #006000;&quot;&gt;kill -s SIGTERM $cpid&lt;/code&gt;&lt;br /&gt;
&lt;code style=&quot;color: #006000;&quot;&gt;echo &quot;Both processes are terminated&quot;.&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;catching traps (&lt;a href=&quot;http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(102, 102, 102) !important; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;)&lt;/div&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: #efefef; border-bottom-color: rgb(211, 211, 211); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(211, 211, 211); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(211, 211, 211); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(211, 211, 211); border-top-style: solid; border-top-width: 1px; display: block; line-height: 13px; padding-bottom: 0.5em; padding-left: 1em; padding-right: 0px; padding-top: 0.5em;&quot;&gt;&lt;code style=&quot;color: #006000;&quot;&gt;# trap [commands] [traps]&lt;br /&gt;
trap &quot;echo Booh!&quot; SIGINT SIGTERM&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;aoeu&lt;/div&gt;&lt;div&gt;aoeu&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;sites-canvas-bottom-panel&quot;&gt;&lt;div id=&quot;COMP_page-subpages&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;/div&gt;&lt;a href=&quot;&quot; name=&quot;page-comments&quot; style=&quot;color: #339999; text-decoration: underline;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;sites-chrome-footer-wrapper&quot;&gt;&lt;div id=&quot;sites-chrome-footer-wrapper-inside&quot;&gt;&lt;div id=&quot;sites-chrome-footer&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: initial; background-image: url(http://www.gstatic.com/sites/p/ed2824/system/app/themes/terraice/footer-bg.gif); background-position: 50% 0%; background-repeat: repeat-x; margin-bottom: auto; margin-left: auto; margin-right: auto; margin-top: auto; padding-top: 5px; width: 776px;&quot;&gt;&lt;div class=&quot;sites-subfooter&quot; style=&quot;color: #666666; font-size: 11px; font-style: normal; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 0px; padding-right: 0px; padding-top: 5px; text-align: left;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/5839133667472674131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/httpwwwgfxcoderuswikiprogrammingbash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/5839133667472674131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/5839133667472674131'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/httpwwwgfxcoderuswikiprogrammingbash.html' title='http://www.gfxcoder.us/wiki/programming/bash'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-3412003998018091043</id><published>2010-08-24T15:37:00.001+02:00</published><updated>2010-08-24T15:37:01.385+02:00</updated><title type='text'>aomk</title><content type='html'>maybe a raving loony, and even mentally retarded, BUT i really do Avoid at all costs to upload magic to ungrateful fucks like you, just as i did many times in the past to fuck users who are now on AOM, NEO, MT, EXO, and the rest of the copy magic sites&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- map{ map{tr|10|# |;print} split//,sprintf&quot;%.8b\n&quot;,$_} unpack&#39;C*&#39;,unpack&#39;u*&#39;,&quot;5`#8&amp;lt;3&#39;X`&#39;#8^-@`&amp;lt;-CPP`#8V/C8`&quot;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/3412003998018091043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/aomk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/3412003998018091043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/3412003998018091043'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/aomk.html' title='aomk'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-7041298205159974649</id><published>2010-08-13T10:24:00.002+02:00</published><updated>2010-08-13T10:24:52.035+02:00</updated><title type='text'>Dieter Steffman Fonts</title><content type='html'>Designers &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Due to increasing bandwidth charges Dieter decided to remove his fonts from his website. That&#39;s why they are hosted here. Special thanks to those font-enthusiasts who located the missing fonts - it seems the collection has been completed :) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- map{ map{tr|10|# |;print} split//,sprintf&quot;%.8b\n&quot;,$_} unpack&#39;C*&#39;,unpack&#39;u*&#39;,&quot;5`#8&amp;lt;3&#39;X`&#39;#8^-@`&amp;lt;-CPP`#8V/C8`&quot;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/7041298205159974649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/dieter-steffman-fonts.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/7041298205159974649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/7041298205159974649'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/dieter-steffman-fonts.html' title='Dieter Steffman Fonts'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-799654476563714274</id><published>2010-08-12T16:59:00.001+02:00</published><updated>2010-08-12T16:59:21.898+02:00</updated><title type='text'>http://code.google.com/webfonts/preview#font-family=Cantarell</title><content type='html'>&lt;a href=&quot;http://code.google.com/webfonts/preview#font-family=Cantarell&quot;&gt;http://code.google.com/webfonts/preview#font-family=Cantarell&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
webfont previewer</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/799654476563714274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/httpcodegooglecomwebfontspreviewfont.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/799654476563714274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/799654476563714274'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/httpcodegooglecomwebfontspreviewfont.html' title='http://code.google.com/webfonts/preview#font-family=Cantarell'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-5980680899500466163</id><published>2010-08-12T16:22:00.000+02:00</published><updated>2010-08-12T16:22:02.628+02:00</updated><title type='text'>lol, found you :)</title><content type='html'>&amp;nbsp;http://l.i2p/?i2paddresshelper=Wpu7frtxXSub11MOI~lbH260SUh~xiodPfQiDXdgJ5fdawCHi2dRZVizSvCtEGa6MfMMlxtUFUYNu9-f9YC5l0BCPe0Fqy31ArJZOegkvIXInRRyc0vLpfNHToDjyVdfSYa-ZqT6w2oZzRzqdXd5cw3jYvYURhuBzfksJpKM91tpSK0jOUFxZAp3NAJCEEANoiaqzUuZi1QNJs5yBn1gAIWDrFoVQv21oFdhYBToY18yupRw-pRQDCJZcDY5N8UhgUsdA611LwhTB6uMcdpjuxwoJeVddKFrQLnkPXuKqD83uMYm~XFS04F0B34L2umUEFGipULpWQbOUrngeyhMpm4FE1gme85wdHr7zz8m5~r-tu5mK3a9mn70pkbjQ0sc4~uBvkItfbxs7~aLOpO6tHuDSr4mUNp0PGvVy3KgTVm71HHVZ5RsnVTRCrlpC~kvFBrdHCPv0GkQhexouKwrD0gQ4dxenIWRBMaXqEBJoC-heI5IAShEzSHIGrFmgJ8BAAAA&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;http://uhfunkqudthohkjeqdmgmuisoy3we27eo75h37yksojf6ki3zfua.b32.i2p/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://stats.i2p/cgi-bin/jump.cgi?a=l.i2p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://stats.i2p/cgi-bin/hostquery.cgi?a=l.i2p&lt;br /&gt;
&lt;br /&gt;
http://stats.i2p/cgi-bin/newhosts.txt&lt;br /&gt;
&lt;br /&gt;
http://l.i2p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- map{ map{tr|10|# |;print} split//,sprintf&quot;%.8b\n&quot;,$_} unpack&#39;C*&#39;,unpack&#39;u*&#39;,&quot;5`#8&amp;lt;3&#39;X`&#39;#8^-@`&amp;lt;-CPP`#8V/C8`&quot;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/5980680899500466163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/lol-found-you.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/5980680899500466163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/5980680899500466163'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/lol-found-you.html' title='lol, found you :)'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8194035553301014782.post-3304999471772723749</id><published>2010-08-12T14:27:00.000+02:00</published><updated>2010-08-12T14:27:17.033+02:00</updated><title type='text'>from freenet some ano nets</title><content type='html'>&lt;table&gt;&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;lliance                                                    &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.alliancep2p.com/&quot;&gt;http://www.alliancep2p.com/&lt;/a&gt;                           &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;anoNet                                                      &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://anonet.org/&quot;&gt;http://anonet.org/&lt;/a&gt;                                    &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;ANts P2P                                                    &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://antsp2p.sourceforge.net/&quot;&gt;http://antsp2p.sourceforge.net/&lt;/a&gt;                       &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;Java                              &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                        &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✗                                      &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Entropy                                                     &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Freenet 0.7                                                 &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://freenetproject.org/&quot;&gt;http://freenetproject.org/&lt;/a&gt;                            &lt;/td&gt;&lt;td&gt;GPL2                         &lt;/td&gt;&lt;td&gt;Java                              &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓              &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓              &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                                &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;via plugin               &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✗                                      &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✗                                    &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                         &lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Galet                                                       &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://galet.sourceforge.net/&quot;&gt;http://galet.sourceforge.net/&lt;/a&gt;                         &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;C++                               &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                        &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Gazzera                                                     &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.lugato.net/gazzera/&quot;&gt;http://www.lugato.net/gazzera/&lt;/a&gt;                        &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;Pascal                            &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✗              &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓              &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                        &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;giFT                                                        &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://gift.sf.net/&quot;&gt;http://gift.sf.net/&lt;/a&gt;                                   &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;C                                 &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                         &lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;GNUnet                                                      &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://gnunet.org/&quot;&gt;http://gnunet.org/&lt;/a&gt;                                    &lt;/td&gt;&lt;td&gt;GPL2                         &lt;/td&gt;&lt;td&gt;C                                 &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✗                                      &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;I2P                                                         &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.i2p2.de/&quot;&gt;http://www.i2p2.de/&lt;/a&gt;                                   &lt;/td&gt;&lt;td&gt;Multiple                     &lt;/td&gt;&lt;td&gt;Java                              &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                         &lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;kerjodando                                                  &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.kerjodando.com/&quot;&gt;http://www.kerjodando.com/&lt;/a&gt;                            &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;Java                              &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Marabunta                                                   &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://marabunta.laotracara.com/&quot;&gt;http://marabunta.laotracara.com/&lt;/a&gt;                      &lt;/td&gt;&lt;td&gt;GPL2                         &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;MUTE                                                        &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://mute-net.sourceforge.net/&quot;&gt;http://mute-net.sourceforge.net/&lt;/a&gt;                      &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;C++                               &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                        &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Netsukuku                                                   &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://netsukuku.freaknet.org/&quot;&gt;http://netsukuku.freaknet.org/&lt;/a&gt;                        &lt;/td&gt;&lt;td&gt;GPL2                         &lt;/td&gt;&lt;td&gt;C and Python                      &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                                    &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Nodezilla                                                   &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.nodezilla.net/&quot;&gt;http://www.nodezilla.net/&lt;/a&gt;                             &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;Java                              &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                                &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                        &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;OFF System                                                  &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://offsystem.sourceforge.net/&quot;&gt;http://offsystem.sourceforge.net/&lt;/a&gt;                     &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;C++                               &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Omemo                                                       &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.omemo.com/&quot;&gt;http://www.omemo.com/&lt;/a&gt;                                 &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Oneswarm                                                    &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://oneswarm.cs.washington.edu/&quot;&gt;http://oneswarm.cs.washington.edu/&lt;/a&gt;                    &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Pastry                                                      &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.freepastry.org/&quot;&gt;http://www.freepastry.org/&lt;/a&gt;                            &lt;/td&gt;&lt;td&gt;BSD-like                     &lt;/td&gt;&lt;td&gt;Java                              &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Perfect Dark                                                &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Pfyshnet                                                    &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://sourceforge.net/projects/pfyshnet/&quot;&gt;http://sourceforge.net/projects/pfyshnet/&lt;/a&gt;             &lt;/td&gt;&lt;td&gt;GPL3                         &lt;/td&gt;&lt;td&gt;Java                              &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Phantom                                                     &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://code.google.com/p/phantom/&quot;&gt;http://code.google.com/p/phantom/&lt;/a&gt;                     &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                                    &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Rodi                                                        &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://rodi.sourceforge.net/&quot;&gt;http://rodi.sourceforge.net/&lt;/a&gt;                          &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;Java                              &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Stealthnet                                                  &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.stealthnet.de/&quot;&gt;http://www.stealthnet.de/&lt;/a&gt;                             &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;C#                                &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;SUMI                                                        &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://sumi.berlios.de/&quot;&gt;http://sumi.berlios.de/&lt;/a&gt;                               &lt;/td&gt;&lt;td&gt;GPL2                         &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Tor                                                         &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.torproject.org/&quot;&gt;http://www.torproject.org/&lt;/a&gt;                            &lt;/td&gt;&lt;td&gt;BSD                          &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓                                      &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Turtle F2F                                                  &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.turtle4privacy.org/&quot;&gt;http://www.turtle4privacy.org/&lt;/a&gt;                        &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✗              &lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;✓              &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;WASTE                                                       &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://waste.sourceforge.net/&quot;&gt;http://waste.sourceforge.net/&lt;/a&gt;                         &lt;/td&gt;&lt;td&gt;GPL                          &lt;/td&gt;&lt;td&gt;C++                               &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Winny                                                       &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Wuala                                                       &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://127.0.0.1:8888/?_CHECKED_HTTP_=http://www.wuala.com/&quot;&gt;http://www.wuala.com/&lt;/a&gt;                                 &lt;/td&gt;&lt;td&gt;Proprietary                  &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content><link rel='replies' type='application/atom+xml' href='http://thijstoday.blogspot.com/feeds/3304999471772723749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thijstoday.blogspot.com/2010/08/from-freenet-some-ano-nets.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/3304999471772723749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8194035553301014782/posts/default/3304999471772723749'/><link rel='alternate' type='text/html' href='http://thijstoday.blogspot.com/2010/08/from-freenet-some-ano-nets.html' title='from freenet some ano nets'/><author><name>RJ</name><uri>http://www.blogger.com/profile/17606607483823573214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>