<?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-5074978658071058831</id><updated>2024-10-24T07:36:33.815-07:00</updated><category term="event report"/><category term="SLC Tech Breakfast"/><category term="UNIX shell"/><category term="Java"/><category term="computers"/><category term="personal data"/><category term="AWS"/><category term="FrontBase"/><category term="Google"/><category term="Oracle"/><category term="Subversion"/><category term="Wicket"/><category term="Kynetx"/><category term="Locker Project"/><category term="Mac"/><category term="Maven"/><category term="Ruby"/><category term="Singly"/><category term="Spring"/><category term="Titanium"/><category term="XML"/><category term="blogger.com"/><category term="i18n/l10n"/><category term="math"/><category term="spam"/><category term="task lists"/><category term="Apache"/><category term="Axis"/><category term="Bitcoin/altcoin"/><category term="CTO Breakfast"/><category term="Christmas"/><category term="Dropbox"/><category term="Eclipse"/><category term="Etherpad"/><category term="HTML"/><category term="HTTP"/><category term="JMX"/><category term="Japanese"/><category term="OpenOffice"/><category term="Rubik&#39;s cube"/><category term="S3"/><category term="Tomcat"/><category term="Vagrant"/><category term="WebObjects"/><category term="Xfire"/><category term="calendar"/><category term="congress"/><category term="finances"/><category term="food"/><category term="format:video"/><category term="fun"/><category term="genealogy"/><category term="government"/><category term="history"/><category term="iPod music"/><category term="nginx"/><category term="patterns"/><category term="plants"/><category term="recipe"/><category term="spreadsheet"/><category term="tutorial"/><category term="web bookmarks"/><title type='text'>Tips, Tricks, Tutorials, and Trivia</title><subtitle type='html'>Tech and other mechanisms I use to cope.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5074978658071058831.post-5394235707692654084</id><published>2021-03-21T07:57:00.003-07:00</published><updated>2021-03-21T08:56:32.304-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UNIX shell"/><title type='text'>Find all lines without &quot;]&quot; at the end</title><content type='html'>&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;cat bookmarks.txt | awk &#39;/[^\]]$/&#39;  | less
&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/5394235707692654084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/5394235707692654084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/5394235707692654084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/5394235707692654084'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2021/03/find-all-lines-without-at-end.html' title='Find all lines without &quot;]&quot; at the end'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-8045290934196636665</id><published>2015-12-13T14:49:00.002-08:00</published><updated>2015-12-13T14:51:30.698-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computers"/><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><title type='text'>nginx local proxy</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I wanted just a simple nginx setup to forward to a local app.&amp;nbsp; Here&#39;s the result:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;http {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; server {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name&amp;nbsp; 52.62.72.255;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #access_log&amp;nbsp;&amp;nbsp; /var/log/nginx/histories.log;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location / {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_pass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://127.0.0.1:3000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For some reason it was hard to find this info!&amp;nbsp; I had to pull it from one of my other servers.&amp;nbsp; But one good example is this reference: &lt;a href=&quot;http://wiki.nginx.org/FullExample&quot;&gt;http://wiki.nginx.org/FullExample&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/8045290934196636665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/8045290934196636665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/8045290934196636665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/8045290934196636665'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2015/12/nginx-local-proxy.html' title='nginx local proxy'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-369190635853212</id><published>2015-07-15T23:13:00.002-07:00</published><updated>2015-07-15T23:13:21.154-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><title type='text'>Unable to SSH to new AWS servers, until: route table</title><content type='html'>Symptoms: I&#39;ve had an AWS account for years, and I went back and created some instances this past week but then I couldn&#39;t access them (via SSH: &quot;Operation timed out&quot;).  One oddity was that my old instances had no VPC ID, but every new instance had one (and the VPC was created if none existed).&lt;br /&gt;
&lt;br /&gt;
Solution: I found &lt;a href=&quot;http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html&quot;&gt;this troubleshooting guide for connecting&lt;/a&gt;, and I followed the step on route tables and added a route with a destination of 0.0.0.0/0 and target of igw... (which is auto-filled with my internet gateway ID).&lt;br /&gt;
&lt;br /&gt;
I&#39;ve never had to do this before.&amp;nbsp; Hopefully I&#39;ll remember!&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/369190635853212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/369190635853212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/369190635853212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/369190635853212'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2015/07/unable-to-ssh-to-new-aws-servers-until.html' title='Unable to SSH to new AWS servers, until: route table'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-1326665803214782218</id><published>2015-05-05T17:11:00.002-07:00</published><updated>2015-05-05T17:11:18.497-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="S3"/><title type='text'>PermanentRedirect when accessing AWS S3 bucket</title><content type='html'>
When running this on the command-line:

&lt;blockquote&gt;aws s3 ls s3://my-bucket/&lt;/blockquote&gt;

I kept getting this error:

&lt;blockquote&gt;A client error (PermanentRedirect) occurred when calling the ListObjects operation: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
&lt;/blockquote&gt;

The problem was that my region wasn&#39;t set.  I did this to fix it:

&lt;blockquote&gt;export AWS_DEFAULT_REGION=us-west-2&lt;/blockquote&gt;

This is a pretty stupid situation: when using the web console, the S3 service says that there&#39;s no need to choose a region, and it won&#39;t even let you select one.  But obviously it&#39;s very important for configurations.  Dumb.
</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/1326665803214782218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/1326665803214782218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/1326665803214782218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/1326665803214782218'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2015/05/permanentredirect-when-accessing-aws-s3.html' title='PermanentRedirect when accessing AWS S3 bucket'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-3933568544060669941</id><published>2014-09-04T00:00:00.000-07:00</published><updated>2015-05-05T17:12:47.974-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Vagrant"/><title type='text'>Solutions for Vagrant deployment to AWS</title><content type='html'>&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Here are a bunch of notes from troubleshooting Vagrant out to AWS:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;-webkit-text-stroke-width: 0px; color: black; display: inline !important; float: none; font-family: Times; font-size: xx-small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;xmp style=&quot;orphans: auto; text-align: start; text-indent: 0px; widows: auto;&quot;&gt;An active machine was found with a different provider. Vagrant currently allows each machine to be brought up with only a single provider at a time. A future version will remove this limitation. Until then, please destroy the existing machine to up with a new provider. Machine name: default Active provider: virtualbox Requested provider: aws&lt;/xmp&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;... yep, destroy it

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;xmp&gt;&lt;br /&gt;&lt;/xmp&gt;&lt;xmp&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Here are a bunch of old notes on errors I got while trying to use Vagrant with AWS.&lt;/span&gt;&lt;/xmp&gt;&lt;xmp&gt;&lt;br /&gt;&lt;/xmp&gt;&lt;xmp&gt;
The box you&#39;re attempting to add doesn&#39;t support the provider
you requested. Please find an alternate box or use an alternate
provider. Double-check your requested provider to verify you didn&#39;t
simply misspell it.

Name: hashicorp/precise64
Address: https://vagrantcloud.com/hashicorp/precise64
Requested provider: [:aws]
&lt;/xmp&gt;


... change to the dummy box



&lt;xmp&gt;
There was an error talking to AWS. The error message is shown
below:

UnauthorizedOperation =&amp;gt; You are not authorized to perform this operation.
&lt;/xmp&gt;


... IAM... had to make user with that key ID have power access




&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;xmp&gt;
==&amp;gt; default: Warning! Vagrant might not be able to SSH into the instance.
==&amp;gt; default: Please check your security groups settings.
/Users/tlarson/.vagrant.d/gems/gems/excon-0.39.5/lib/excon/middlewares/expects.rb:6:in `response_call&#39;: The image id &#39;[ami-21e6e964]&#39; does not exist (Fog::Compute::AWS::NotFound)
 from /Users/tlarson/.vagrant.d/gems/gems/excon-0.39.5/lib/excon/middlewares/response_parser.rb:8:in `response_call&#39;
 from /Users/tlarson/.vagrant.d/gems/gems/excon-0.39.5/lib/excon/connection.rb:363:in `response&#39;
 from /Users/tlarson/.vagrant.d/gems/gems/excon-0.39.5/lib/excon/connection.rb:233:in `request&#39;
 from /Users/tlarson/.vagrant.d/gems/gems/fog-1.23.0/lib/fog/xml/sax_parser_connection.rb:35:in `request&#39;
&lt;/xmp&gt;

... had to find an AMI, in the right zone



&lt;xmp&gt;
==&amp;gt; default: Warning! Vagrant might not be able to SSH into the instance.
==&amp;gt; default: Please check your security groups settings.
/Users/tlarson/.vagrant.d/gems/gems/excon-0.39.5/lib/excon/middlewares/expects.rb:6:in `response_call&#39;: The key pair &#39;halfpricedgranite-workbook&#39; does not exist (Fog::Compute::AWS::NotFound)
 from /Users/tlarson/.vagrant.d/gems/gems/excon-0.39.5/lib/excon/middlewares/response_parser.rb:8:in `response_call&#39;
 from /Users/tlarson/.vagrant.d/gems/gems/excon-0.39.5/lib/excon/connection.rb:363:in `response&#39;
 from /Users/tlarson/.vagrant.d/gems/gems/excon-0.39.5/lib/excon/connection.rb:233:in `request&#39;
 from /Users/tlarson/.vagrant.d/gems/gems/fog-1.23.0/lib/fog/xml/sax_parser_connection.rb:35:in `request&#39;
&lt;/xmp&gt;


... again, in the right zone




&lt;xmp&gt;
==&amp;gt; default: Waiting for instance to become &quot;ready&quot;...
==&amp;gt; default: Waiting for SSH to become available...
^C
&lt;/xmp&gt;


... because networking is restricted: security_groups



... and may want to name it&lt;br /&gt;
&lt;div&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://tutorialsandtrivia.blogspot.com/feeds/3933568544060669941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/3933568544060669941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/3933568544060669941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/3933568544060669941'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2015/05/solutions-for-vagrant-deployment-to-aws.html' title='Solutions for Vagrant deployment to AWS'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-6116576667534226506</id><published>2014-08-16T12:30:00.000-07:00</published><updated>2014-08-31T11:56:14.381-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Etherpad"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><title type='text'>Adding tables to Etherpad Lite</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
So I love the real-time sharing of Google Docs, so I installed our own &lt;a href=&quot;http://etherpad.org/&quot;&gt;Etherpad Lite&lt;/a&gt;... and then I wanted tables so I installed ep_tables, but it was a bear to try and copy existing tables into there, so I finally exported some tables and found the format and here&#39;s what I recommend, in this example of 2 lines:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;{&quot;payload&quot;:[[&quot;This is a sample row on table 1&quot;,&quot; &quot;,&quot; &quot;]],&quot;tblId&quot;:&quot;1&quot;,&quot;tblClass&quot;:&quot;data-tables&quot;}&lt;br /&gt;&lt;br /&gt;{&quot;payload&quot;:[[&quot; &quot;,&quot; &quot;,&quot; row 2 column 3&quot;]],&quot;tblId&quot;:&quot;1&quot;,&quot;tblClass&quot;:&quot;data-tables&quot;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
... where each row of data is a line of text. &amp;nbsp;Just paste them in the document and it reformats into a table.
&lt;br /&gt;

It turns out the plugin doesn&#39;t like line breaks (or tabs) in a row, so don&#39;t even try... and that&#39;s one reason I wouldn&#39;t try and put multiple rows inside one payload line like this:
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;{&quot;payload&quot;:[[&quot;This is a sample row on table 1&quot;,&quot;&quot;,&quot;&quot;],[&quot;&quot;,&quot;&quot;,&quot; row 2 column 3&quot;]],&quot;tblId&quot;:&quot;1&quot;,&quot;tblClass&quot;:&quot;data-tables&quot;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Since you can&#39;t split each row onto a new line it is pretty unreadable.
&lt;br /&gt;
Other hints:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Only use the &#39;Table&#39; button at the top to manipulate the table and not the little mouse-overs... they just never did anything reliable for me.&lt;/li&gt;
&lt;li&gt;I also installed styles and formatting, but I couldn&#39;t get them to apply inside the table.&lt;/li&gt;
&lt;li&gt;I don&#39;t see the purpose of the tblId; I put rows with the same tblId in different places and they showed at their location in the document, with line breaks or whatever in between.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/6116576667534226506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/6116576667534226506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/6116576667534226506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/6116576667534226506'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2014/08/adding-tables-to-etherpad-lite.html' title='Adding tables to Etherpad Lite'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-2141354939054715002</id><published>2014-07-07T09:04:00.000-07:00</published><updated>2015-04-26T07:22:16.126-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="calendar"/><category scheme="http://www.blogger.com/atom/ns#" term="math"/><title type='text'>The day-of-week for any day this year (and this century)</title><content type='html'>&lt;br /&gt;
I came up with this approach to figure out the day-of-week for any day during the current year:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Each year, remember the weekday of first day of the year, eg. Wed in 2014 &amp;nbsp;(See below for a formula for this in the 21st century.)&lt;/li&gt;
&lt;li&gt;Memorize this set of numbers, one for each month: 155274263153 ... which is the date of the first time that day occurs each month&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
You can probably get it from there... so here&#39;s an example: what day is Dec 25 this year?&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;December is month #12, so take the last digit in that set of numbers: 3&lt;/li&gt;
&lt;li&gt;That means the 3rd is the first time that Wed occurs this December.&lt;/li&gt;
&lt;li&gt;Add multiples of 7 to get to other Wed that are close:&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+7=10&lt;/li&gt;
&lt;li&gt;+14=17&lt;/li&gt;
&lt;li&gt;+21 = 24&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;Since Dec 24 is on Wed,&amp;nbsp;Dec 25 must be on Thurs&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;The exception is leap years, and I typically subtract one from the first day in January and February.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
This makes it pretty easy, because that first weekday only changes each year and I can remember that day for the whole year.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now, for the majority of my lifetime (if things don&#39;t go as I hope), it&#39;s actually pretty easy to find the first day of the year for any year:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Take the year without the 2000 part, eg. 14 for 2014&lt;/li&gt;
&lt;li&gt;Calculate (y + y div 4) mod 7&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;or (y mod 7 + y div 4) mod 7&lt;/li&gt;
&lt;li&gt;or (y mod 7&amp;nbsp;+ (y div 4) mod 7) mod 7&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;0=Sun, 1=Mon, etc.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;except for on leap years (divisible by 4) subtract 1 day for Jan-Feb&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Pretty easy to remember for us mathematicians... it starts with Sunday, and then moves one day each year with an extra adjustment on leap years.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The rules get really complicated for previous or future centuries because we don&#39;t have leap-years every 100 years but then we do have them every 400 years. &amp;nbsp;But, like I say, this works for my foreseeable future, in 99.9% of the times I ever need to find a day.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I haven&#39;t written this up before because I checked years ago and found people had already written about this algorithm, but I think it&#39;s worth mentioning now because it&#39;s so easy for the vast majority of cases people use for a while to come. &amp;nbsp;BTW, if I want a comprehensive algorithm, I&#39;ll probably try &lt;a href=&quot;http://rudy.ca/doomsday.html&quot;&gt;Conway&#39;s Doomsday Algorithm&lt;/a&gt;.&lt;/div&gt;
&lt;div&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://tutorialsandtrivia.blogspot.com/feeds/2141354939054715002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/2141354939054715002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/2141354939054715002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/2141354939054715002'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2014/07/the-day-of-week-for-any-day-this-year.html' title='The day-of-week for any day this year (and this century)'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-1751173909262132680</id><published>2014-06-28T07:55:00.000-07:00</published><updated>2014-07-07T08:33:36.134-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="personal data"/><title type='text'>Get on RespectNetwork and get your XRI name.</title><content type='html'>Just a little motivation for getting involved with &lt;a href=&quot;https://www.respectnetwork.com/&quot;&gt;RespectNetwork&lt;/a&gt; and grabbing one of their &quot;cloud names&quot; (ie. an &lt;a href=&quot;http://en.wikipedia.org/wiki/Extensible_resource_identifier&quot;&gt;XRI&lt;/a&gt;) at their great one-time price of $25:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;For a while there, I was playing with the APIs for &quot;&lt;a href=&quot;https://unhosted.org/&quot;&gt;unhosted&lt;/a&gt;&quot; and P2P apps quite a bit, just doing things that seemed fun personally. &amp;nbsp;I played with&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://kynetx.com/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;Kynetx&lt;/a&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;&amp;nbsp;(founded by my BYU professor Phil Windley)&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://singly.com/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;Singly&lt;/a&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;&amp;nbsp;(founded by Jeremie Miller of XMPP fame), both of which are still very worthwhile projects with huge potential (and you can see from my labels that I&#39;ve posted about them before). &amp;nbsp;Other related projects are&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://redecentralize.org/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;redecentralize.org&lt;/a&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://projectdanube.com/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;projectdanube.com&lt;/a&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://cozy.io/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;cozy.io&lt;/a&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;. &amp;nbsp;Anyway, the Respect Network in particular is a brainchild of&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://info.respectnetwork.com/blog/drummond-reed/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;Drummond Reed&lt;/a&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;&amp;nbsp;and it&#39;s had a few changes of directions, starting with&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://connect.me/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;connect.me&lt;/a&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;, though I look on that activity feed and I don&#39;t see much happening there; Drummond Reed and Doc Searls and Kaliya Hamlin and Phil Windley (remember?) are big people in the identity space, eg. the&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://internetidentityworkshop.com/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;internetidentityworkshop.com&lt;/a&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;wbr style=&quot;font-family: arial, sans-serif;&quot;&gt;&lt;/wbr&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;conferences, and so I still expect to see big things out of this set of initiatives for owning our own data. &amp;nbsp;Anyway, my hope is to push for these kinds of tools and protocols to help fight the silos and lock-in of Facebook and even Google... on top of the basic infrastructure tools (eg.&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://pack.resetthenet.org/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;pack.resetthenet.org&lt;/a&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;).&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: arial, sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif;&quot;&gt;
Saying all that, I realize that it&#39;s not very widespread at this point. &amp;nbsp;I think they&#39;re laying out the protocols and doing cool stuff, but it&#39;s still at the experimentation point, I&#39;d say. &amp;nbsp;But some of the concepts are sticking, eg. these XRI names... I got my first one a few years ago... so I think they&#39;re worth getting now.&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/1751173909262132680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/1751173909262132680' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/1751173909262132680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/1751173909262132680'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2014/06/get-on-respectnetwork-and-get-your-xri.html' title='Get on RespectNetwork and get your XRI name.'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5074978658071058831.post-7566020989446732127</id><published>2014-06-08T15:30:00.001-07:00</published><updated>2014-06-08T15:33:21.364-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bitcoin/altcoin"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>Building Bitcoin &amp; Litecoin, Mac &amp; Linux</title><content type='html'>&lt;br /&gt;
I&#39;m trying to build my own altcoins (because &lt;a href=&quot;http://effectivesociety.blogspot.com/2014/06/deseretcoin-and-altcoin.html&quot;&gt;I want to understand altcoin creation&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
First of all, Litecoin is the best place to begin because most altcoin tutorials (eg. &lt;a href=&quot;http://dogecoin.ga/how_to_create_scrypt_based_altcoins.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://bitcointalk.org/index.php?topic=225690.msg2374550&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://github.com/bfroemel/smallchange/commit/947a0fafd8d033f6f0960c4ff0748f76a3d58326&quot;&gt;here&lt;/a&gt;) use it as the basis. &amp;nbsp;So I started just by downloading &lt;a href=&quot;https://github.com/litecoin-project/litecoin&quot;&gt;Litecoin source&lt;/a&gt; and building it.&lt;br /&gt;
&lt;br /&gt;
On Mac:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I started with Homebrew but couldn&#39;t ever get past problems with boost:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;xmp&gt;Undefined symbols for architecture x86_64:
  &quot;boost::program_options::to_internal(std::string const&amp;amp;)&quot;, referenced from:
      boost::program_options::detail::basic_config_file_iterator&lt;char&gt;::getline(std::string&amp;amp;) in util.o
  &quot;boost::program_options::detail::common_config_file_iterator::common_config_file_iterator(std::set&lt;std::string std::less=&quot;&quot; std::string=&quot;&quot;&gt;, std::allocator&lt;std::string&gt; &amp;gt; const&amp;amp;, bool)&quot;, referenced from:
      boost::program_options::detail::basic_config_file_iterator&lt;char&gt;::basic_config_file_iterator(std::istream&amp;amp;, std::set&lt;std::string std::less=&quot;&quot; std::string=&quot;&quot;&gt;, std::allocator&lt;std::string&gt; &amp;gt; const&amp;amp;, bool) in util.o
  &quot;Db::verify(char const*, char const*, std::ostream*, unsigned int)&quot;, referenced from:
      CDBEnv::Verify(std::string, bool (*)(CDBEnv&amp;amp;, std::string)) in db.o
      CDBEnv::Salvage(std::string, bool, std::vector&lt;std::pair char=&quot;&quot; std::allocator=&quot;&quot; std::vector=&quot;&quot; unsigned=&quot;&quot;&gt; &amp;gt;, std::vector&lt;unsigned char=&quot;&quot; std::allocator=&quot;&quot; unsigned=&quot;&quot;&gt; &amp;gt; &amp;gt;, std::allocator&lt;std::pair char=&quot;&quot; std::allocator=&quot;&quot; std::vector=&quot;&quot; unsigned=&quot;&quot;&gt; &amp;gt;, std::vector&lt;unsigned char=&quot;&quot; std::allocator=&quot;&quot; unsigned=&quot;&quot;&gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;amp;) in db.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [litecoind] Error 1&lt;/unsigned&gt;&lt;/std::pair&gt;&lt;/unsigned&gt;&lt;/std::pair&gt;&lt;/std::string&gt;&lt;/std::string&gt;&lt;/char&gt;&lt;/std::string&gt;&lt;/std::string&gt;&lt;/char&gt;&lt;/xmp&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I tried with Bitcoin with Homebrew and finally got it to build, though &quot;make check&quot; failed.&lt;/li&gt;
&lt;li&gt;I totally switched to MacPorts and got Bitcoin to build again (including &quot;make check&quot;).&lt;/li&gt;
&lt;li&gt;OK, but I want Litecoin... and again I get problems with boost:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;xmp&gt;llvm-g++ -c -stdlib=libstdc++ -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DMAC_OSX -DMSG_NOSIGNAL=0 -DBOOST_SPIRIT_THREADSAFE -DUSE_UPNP=1 -DUSE_IPV6=1 -I/Users/tlarson/dev/from-elsewhere/litecoin/src/leveldb/include -I/Users/tlarson/dev/from-elsewhere/litecoin/src/leveldb/helpers -DHAVE_BUILD_INFO -I&quot;/Users/tlarson/dev/from-elsewhere/litecoin/src&quot; -I&quot;/Users/tlarson/dev/from-elsewhere/litecoin/src/obj&quot; -I&quot;/usr/local/include&quot; -I&quot;/usr/local/opt/berkeley-db4/include&quot; -I&quot;/usr/local/opt/openssl/include&quot; -MMD -MF obj/alert.d -o obj/alert.o alert.cpp
alert.cpp:6:10: fatal error: &#39;boost/algorithm/string/classification.hpp&#39; file not found
#include &lt;boost algorithm=&quot;&quot; classification.hpp=&quot;&quot; string=&quot;&quot;&gt;
         ^
1 error generated.
make: *** [obj/alert.o] Error 1
&lt;/boost&gt;&lt;/xmp&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Linux (Ubuntu):&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Worked, though I had to include all optional items, and also build Berkely DB as instructed in the Bitcoin source and use it here (by setting BDB_INCLUDE_PATH and BDB_LIB_PATH).&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
I haven&#39;t tried Windows yet, since that seems even scarier!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/7566020989446732127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/7566020989446732127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/7566020989446732127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/7566020989446732127'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2014/06/building-bitcoin-litecoin-mac-linux.html' title='Building Bitcoin &amp; Litecoin, Mac &amp; Linux'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-660418503060638074</id><published>2014-03-14T07:08:00.000-07:00</published><updated>2014-03-22T18:18:52.894-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="event report"/><category scheme="http://www.blogger.com/atom/ns#" term="SLC Tech Breakfast"/><title type='text'>SLC Tech Breakfast on Mar 21</title><content type='html'>&lt;br /&gt;
&lt;a href=&quot;http://effectivesociety.blogspot.com/2010/04/clever-constructive-conversation-about.html&quot;&gt;SLC Tech Breakfast&lt;/a&gt;&amp;nbsp;on Fri Mar 21&amp;nbsp;8:00-9:30 AM downtown at&amp;nbsp;&lt;a href=&quot;http://www.neumont.edu/visit/index.html&quot;&gt;Newmont U&lt;/a&gt;. Bagels provided.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-color: white; color: #222222; font-family: Calibri, sans-serif; font-size: 11pt; margin: 0in 0in 0.0001pt;&quot;&gt;
coursera at princeton (Josh recommends)&lt;u&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-color: white; color: #222222; font-family: Calibri, sans-serif; font-size: 11pt; margin: 0in 0in 0.0001pt;&quot;&gt;
dynamic programming (same as memoization, sounds like)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-color: white; color: #222222; font-family: Calibri, sans-serif; font-size: 11pt; margin: 0in 0in 0.0001pt;&quot;&gt;
spring roo (rails-like quick start for Java, if I remember right)&lt;u&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-color: white; color: #222222; font-family: Calibri, sans-serif; font-size: 11pt; margin: 0in 0in 0.0001pt;&quot;&gt;
linq (for allowing SQL-like data queries in language)&lt;u&gt;,&amp;nbsp;&lt;/u&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;jlinq, jpropel&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-color: white; color: #222222; font-family: Calibri, sans-serif; font-size: 11pt; margin: 0in 0in 0.0001pt;&quot;&gt;
&lt;u&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-color: white; color: #222222; font-family: Calibri, sans-serif; font-size: 11pt; margin: 0in 0in 0.0001pt;&quot;&gt;
&quot;clock of complexity&quot;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-color: white; color: #222222; font-family: Calibri, sans-serif; font-size: 11pt; margin: 0in 0in 0.0001pt;&quot;&gt;
malbolge: unreadable programming language&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background-color: white; color: #222222; font-family: Calibri, sans-serif; font-size: 11pt; margin: 0in 0in 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/660418503060638074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/660418503060638074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/660418503060638074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/660418503060638074'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2014/03/slc-tech-breakfast-on-mar-21.html' title='SLC Tech Breakfast on Mar 21'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-6501416622055047466</id><published>2014-02-07T09:37:00.001-08:00</published><updated>2014-02-07T09:38:07.139-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CTO Breakfast"/><category scheme="http://www.blogger.com/atom/ns#" term="event report"/><title type='text'>Today&#39;s CTO Breakfast</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Trent Larson mentioned tool for P2P sharing family histories (&lt;a href=&quot;http://familyhistories.info/&quot;&gt;familyhistories.info&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Sano Inteiligence for a subdermal patch for monitoring the blood stream&lt;/li&gt;
&lt;li&gt;True Crypt (vs Best Crypt), with hidden volumes&lt;/li&gt;
&lt;li&gt;BTSync for P2P file distribution&lt;/li&gt;
&lt;li&gt;&quot;Scrypt&quot; coin using GPUs vs Bitcoin (w/ SHA256)&lt;/li&gt;
&lt;li&gt;Vivian at Gild &amp;amp; Provo Dojo last night about underappreciated Utah developers&lt;/li&gt;
&lt;li&gt;SaltStack, which Wade prefers over Puppet&lt;/li&gt;
&lt;li&gt;Intel Galileo, running Arduino but also Linux, $60 with power on Amazon, including Wifi connector&lt;/li&gt;
&lt;li&gt;playing music on a dodecahedron, drawn on a ping-pong ball with an egg-bot,&amp;nbsp;then icosahedron,&amp;nbsp;and then she talked about a theramin&lt;/li&gt;
&lt;li&gt;Espruino, an Arduino-like board using Javascript&lt;/li&gt;
&lt;li&gt;NodeRed from Google for graphical design of a node program&lt;/li&gt;
&lt;li&gt;Google&#39;s purchase of Nest&lt;/li&gt;
&lt;li&gt;Scott mentioned using NFC to configure devices, and Kelly Flanagan is doing it&lt;/li&gt;
&lt;li&gt;power requirements &amp;amp; parasitic power&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/6501416622055047466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/6501416622055047466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/6501416622055047466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/6501416622055047466'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2014/02/todays-cto-breakfast.html' title='Today&#39;s CTO Breakfast'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-7395441958512423396</id><published>2014-01-16T10:04:00.001-08:00</published><updated>2014-01-16T10:05:18.214-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SLC Tech Breakfast"/><title type='text'>Tomorrow&#39;s tech breakfast</title><content type='html'>&lt;br /&gt;
&lt;br class=&quot;Apple-interchange-newline&quot; /&gt;
Tomorrow morning, 8 AM, downtown: &lt;a href=&quot;https://www.google.com/maps/preview#!q=Jason&#39;s+deli&amp;amp;data=!1m4!1m3!1d3750!2d-111.9049415!3d40.7645895!4m57!2m16!1m14!1s0x0%3A0xb322df9d3eb2a867!3m8!1m3!1d3750!2d-111.9049415!3d40.7645895!3m2!1i1629!2i953!4f13.1!4m2!3d40.7654081!4d-111.9047997!5e4!6sjason&#39;s+deli!5m39!1m38!1sjason&#39;s+deli!4m8!1m3!1d3750!2d-111.9049415!3d40.7647927!3m2!1i1629!2i953!4f13.1!5b1!10b1!19m6!1e1!1e2!1e9!1e10!1e12!4smaps_sv.tactile!20m13!1e1!1e2!1e3!1e4!1e5!1e9!1e10!1e11!1e12!2m2!1i203!2i100!5smaps_sv.tactile!26m4!1e12!1e13!1e3!4smaps_sv.tactile&quot;&gt;above Jason&#39;s Deli at the Gateway&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
From Garth: There is a parking lot in front of Jason&#39;s Deli (you just have to make sure that the parking space says for gateway office) and the doors to the office are to the right of the entrance to Jason&#39;s Deli. My office is in suite 230.&lt;br /&gt;
&lt;br /&gt;
Bagels&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://effectivesociety.blogspot.com/2010/04/clever-constructive-conversation-about.html&quot;&gt;Here&#39;s other background info.&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/7395441958512423396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/7395441958512423396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/7395441958512423396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/7395441958512423396'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2014/01/tomorrows-tech-breakfast.html' title='Tomorrow&#39;s tech breakfast'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-8311193990155889107</id><published>2013-12-13T08:00:00.000-08:00</published><updated>2014-01-16T10:05:32.243-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="event report"/><category scheme="http://www.blogger.com/atom/ns#" term="SLC Tech Breakfast"/><title type='text'>Yet Another SLC Tech Breakfast</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
Anyone using functional programming? &amp;nbsp;(Josh has done Scala)&lt;br /&gt;
&lt;br /&gt;
Josh Bloch (Effective Java) &amp;amp; anonymous types vs Neil Gafter &amp;amp; closures&lt;br /&gt;
&lt;br /&gt;
Tom Clancy&#39;s game The Division has &lt;a href=&quot;http://www.youtube.com/watch?v=R2NJSAvuiQ0&quot;&gt;an impressive new game engine&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
TED talk: consequences of game on real life&lt;br /&gt;
&lt;br /&gt;
languages: Dart, Go, Underscore.js&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=8UjcqCx1Bvg&quot;&gt;Speed dating with google glass&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/8311193990155889107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/8311193990155889107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/8311193990155889107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/8311193990155889107'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2013/12/yet-another-slc-tech-breakfast.html' title='Yet Another SLC Tech Breakfast'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-6968920916944900562</id><published>2013-05-04T16:11:00.001-07:00</published><updated>2013-05-04T16:23:02.990-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTTP"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX shell"/><title type='text'>A command-line testing harness for multiple RESTful HTTP requests</title><content type='html'>&lt;br /&gt;
Tasked with the creation of a quick-and-dirty REST service, I wanted an easy way to throw in a bunch of test data and verify it with the correct response data and HTTP response codes. &amp;nbsp;Most testing tools require some infrastructure and editing through their UI; I wanted to throw data (both input and output) into an easy-to-edit text file. &amp;nbsp;Here&#39;s the result.&lt;br /&gt;
&lt;br /&gt;
First, here&#39;s the input test data:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
POST /entry/ffff/3456&lt;br /&gt;
POST /entry/&lt;br /&gt;
POST /entry/12&lt;br /&gt;
POST /entry/12/qqqq&lt;br /&gt;
GET /entry/ffff&lt;br /&gt;
GET /entry/fffe&lt;br /&gt;
GET /entry/&lt;br /&gt;
POST /entry/zz/zyx&lt;br /&gt;
POST /entry/az/zyx&lt;br /&gt;
POST /entry/34/zyx&lt;br /&gt;
POST /entry/AF/zyx&lt;br /&gt;
POST /entry/zez/zyx&lt;br /&gt;
GET /list/0&lt;br /&gt;
GET /list/1&lt;/blockquote&gt;
(I put this in the file named &quot;test-input&quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Sidebar 1: eyeballing the results&lt;/h4&gt;
This was actually given to me as the full telnet command, so every entry had &quot;HTTP/1.1&quot; on the end, for example:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
POST /entry/ffff/3456 HTTP/1.1&lt;/blockquote&gt;
So first iteration was to start my server separately, then run a script that would echo that line and pipe it through &quot;telnet 127.0.0.1 8080&quot;. &amp;nbsp;For example, here are the first 2 tests, located inside my &quot;entries.in&quot; file:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sleep 2&lt;br /&gt;
echo POST /entry/ffff/3456 HTTP/1.1 &amp;nbsp; &amp;nbsp; &amp;nbsp;# should return a 200 OK response&lt;br /&gt;
echo&lt;br /&gt;
sleep 2&lt;br /&gt;
echo POST /entry/ HTTP/1.1 &amp;nbsp; &amp;nbsp; &amp;nbsp; # should return 400 BAD REQUEST&lt;br /&gt;
echo&amp;nbsp;&lt;/blockquote&gt;
&lt;div&gt;
(Interestingly, those comments at the end of each line are acceptable.)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Then I ran the following command:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
. &amp;nbsp;./entries.in | telnet 127.0.0.1 8080&lt;/blockquote&gt;
&lt;br /&gt;
(Note the &quot;.&quot; at the first of the line, meaning to source that file to run the commands inside.)&lt;br /&gt;
&lt;br /&gt;
That works great for me to run all the tests quickly, but I have to visually check the output.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
End Sidebar 1&lt;/h4&gt;
Here is the output expected; of course, only the GET commands result in output.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
3456 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #&amp;nbsp;GET /entry/ffff&lt;br /&gt;
ffff -&amp;gt; 3456 &amp;nbsp; &amp;nbsp;#&amp;nbsp;GET /entry/&lt;br /&gt;
ffff -&amp;gt; 3456 &amp;nbsp; &amp;nbsp;# following 4 are generated by GET /entry/&lt;br /&gt;
12 -&amp;gt; qqqq&lt;br /&gt;
zz -&amp;gt; zyx&lt;br /&gt;
az -&amp;gt; zyx&lt;br /&gt;
34 -&amp;gt; zyx &amp;nbsp; &amp;nbsp; &amp;nbsp; # following 3 are generated by GET /list/1&lt;br /&gt;
AF -&amp;gt; zyx&lt;br /&gt;
zez -&amp;gt; zyx&lt;/blockquote&gt;
&lt;div&gt;
(That is in the file I named &quot;test-output.body.good&quot;, without the # commentary.)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
And here are the HTTP response codes expected:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 400 BAD REQUEST&lt;br /&gt;
HTTP/1.1 400 BAD REQUEST&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 404 NOT FOUND&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
HTTP/1.1 200 OK&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;
(That is in the file I named &quot;test-output.HTTP-response.good&quot;)&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Now for the scripting. &amp;nbsp;Note that this requires &lt;a href=&quot;https://github.com/micha/resty&quot;&gt;Resty&lt;/a&gt;, a very convenient wrapper to access RESTful services via curl.&lt;br /&gt;
&lt;br /&gt;
Here are the commands to run those HTTP inputs into my server and check the body of the output.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# run the HTTP server in the background, throwing away any output&lt;br /&gt;
python entries.py &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# save the process ID for that server&lt;br /&gt;
PID=$!&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# wait for the server to fully start&lt;br /&gt;
sleep 1&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# prepare resty, without verbose output from curl&lt;br /&gt;
resty http://127.0.0.1:8080 -s&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# use the contents of the test-input file as one command per line&lt;br /&gt;
# (via Resty, which has made GET and POST into valid commands)&lt;br /&gt;
. ./test-input &amp;gt; test-output.body.out&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# check that output against the expected output&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
diff test-output.body.good test-output.body.out&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# stop the HTTP server&lt;br /&gt;
kill $PID&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# wait for the server to fully stop&lt;br /&gt;
sleep 1&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
And here is how to do the same to check the HTTP response codes of the output. &amp;nbsp;Note that only the 3 commands after &quot;sleep&quot; are different.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# run the HTTP server in the background, throwing away any output&lt;br /&gt;
python entries.py &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# save the process ID for that server&lt;br /&gt;
PID=$!&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# wait for the server to fully start&lt;br /&gt;
sleep 1&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# prepare resty, without verbose output and with only the HTTP headers from curl&lt;br /&gt;
resty http://127.0.0.1:8080 -s -I&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# use the contents of the test-input file as one command per line&lt;br /&gt;
# (via Resty, which has made GET and POST into valid commands)&lt;br /&gt;
# (Why does it end up in DOS format? Is that curl?! &amp;nbsp;... and printing &quot;not found&quot; is dumb.)&lt;br /&gt;
. ./test2-input 2&amp;gt;&amp;amp;1 | grep HTTP &amp;gt; test2-output.HTTP-response.out&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# check that output against the expected output&lt;br /&gt;
# (See the previous command for the reason behind --strip-trailing-cr)&lt;br /&gt;
diff --strip-trailing-cr test2-output.HTTP-response.good test2-output.HTTP-response.out&amp;nbsp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# stop the HTTP server&lt;br /&gt;
kill $PID&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# wait for the server to fully stop&lt;br /&gt;
sleep 1&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#39;s it! &amp;nbsp;Now I&#39;ve got those 3 files (input HTTP commands, output body content, and output HTTP codes) and a script that will run all those inputs and verify the outputs exactly.&lt;br /&gt;
&lt;br /&gt;
Note: as this grows, I&#39;ve found that I&#39;d prefer to have the input, the output HTTP code, and the output body all next to each other, or maybe on subsequent lines of the same file. &amp;nbsp;But this fit today&#39;s use cases!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/6968920916944900562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/6968920916944900562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/6968920916944900562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/6968920916944900562'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2013/05/a-quick-edit-command-line-testing.html' title='A command-line testing harness for multiple RESTful HTTP requests'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-7674807007968824829</id><published>2012-04-01T19:05:00.001-07:00</published><updated>2014-06-28T07:55:47.824-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Locker Project"/><category scheme="http://www.blogger.com/atom/ns#" term="personal data"/><category scheme="http://www.blogger.com/atom/ns#" term="Singly"/><title type='text'>Setting and retrieving LockerProject data in a local install</title><content type='html'>&lt;br /&gt;
I&#39;ve been trying to play with &lt;a href=&quot;https://github.com/LockerProject&quot;&gt;LockerProject&lt;/a&gt; from &lt;a href=&quot;http://singly.com/&quot;&gt;Singly&lt;/a&gt;, and I&#39;d like to use data other than the built-in types of contacts, links, photos, and places.&amp;nbsp; (You can see one project that motivates me at &lt;a href=&quot;http://familyhistories.info/&quot;&gt;familyhistories.info&lt;/a&gt;.)&amp;nbsp; There are ways to build new connectors and collections that support rich functionality like syncing, but there is also a simple &lt;a href=&quot;https://github.com/LockerProject/Locker/wiki/Push-API&quot;&gt;Push API&lt;/a&gt; that allows for arbitrary data, so I&#39;ve started by playing with that.&amp;nbsp; Following are some changes I had to make to get things working.&lt;br /&gt;
&lt;br /&gt;
We can send and retrieve arbitrary data via curl, and those examples work great.&lt;br /&gt;
&lt;br /&gt;
Set:&lt;br /&gt;
&lt;div class=&quot;highlight&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;H&lt;/span&gt; &quot;&lt;span class=&quot;n&quot;&gt;Content&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Type&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;application&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;json&lt;/span&gt;&quot; \ &amp;nbsp;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;binary&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;{&quot;data&quot;:[{&quot;id&quot;:42,&quot;question&quot;:&quot;my test&quot;}]}&#39;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;\&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;localhost&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;8042&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;foo&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;ok&lt;/span&gt;
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class=&quot;highlight&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
Get:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;http&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;localhost&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;8042&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;42
&lt;span class=&quot;p&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&quot;&lt;span class=&quot;n&quot;&gt;_id&lt;/span&gt;&quot;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&quot;4&lt;span class=&quot;n&quot;&gt;f2752c03f670f3343f7fed0&lt;/span&gt;&quot;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&quot;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&quot;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;42&lt;span class=&quot;p&quot;&gt;,&quot;question&quot;:&quot;my test&quot;}&lt;/span&gt;
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
Unfortunately, things don&#39;t work as smoothly when trying to do it in an app.&amp;nbsp; Let&#39;s start with retrieval.&amp;nbsp; First of all, we need get data from the local locker instead of the one at singly.com.&amp;nbsp; The best approach I can think is to &lt;a href=&quot;https://github.com/trentlarson/singly-relaxing/commit/8f77215a1a9722d5e2f5b5fd7fb6ce91b1ab4fda&quot;&gt;tweak the APIClient so that we can specify which host&lt;/a&gt;, so instead of &quot;new APIClient()&quot; we can do the following:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;new APIClient({baseUrl:&#39;http://localhost:8042&#39;})&lt;/pre&gt;
&lt;/blockquote&gt;
Great.&lt;br /&gt;
&lt;br /&gt;
Except now my browser won&#39;t retrieve the value via AJAX; Chrome is the most helpful, and it tells me:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Origin null is not allowed by Access-Control-Allow-Origin.&lt;/blockquote&gt;
The only way I can figure to get past this is to modify LockerProject.&amp;nbsp; So I&#39;ve added the following to the Ops/webservice.js file as the first line in the first function argument to express.createServer:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;// &quot;*&quot; works for all domains; null and &quot;X-Requested-With&quot; work for file:// URLs in Firefox but not Chrome&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;res.header(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;);&lt;/pre&gt;
&lt;/blockquote&gt;
Cool.&amp;nbsp; Now I can retrieve values that I&#39;ve inserted.&amp;nbsp; This might not be a great solution, and I haven&#39;t thought through the security complications so that I can submit it to LockerProject, but I&#39;m just going to live with it on my machine.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, this is where we&#39;re stuck.&amp;nbsp; It&#39;s easy enough to &lt;a href=&quot;https://github.com/trentlarson/singly-relaxing/commit/2e417839d399faa50e5495e2c303bbebb6a446be&quot;&gt;add a post to insert data&lt;/a&gt;, but there is a problem within the parsing of JSON in the locker server: it takes any values as strings, so even though we send an update/insert like the data above with a numeric ID of 42, it ends up inserting some data with a string ID of &quot;42&quot;... and we can&#39;t retrieve that value with the typical GET request (above)... in fact, I cannot find any way to retrieve that data through the API.&amp;nbsp; You can see it as it gets processed in the web server and you can see it inside your mongo DB.&amp;nbsp; Most unfortunate.&lt;br /&gt;
&lt;br /&gt;
In summary, to get arbitrary data from your local locker in a browser app:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;patch the locker server (see Access-Control-Allow-Origin above)&lt;/li&gt;
&lt;li&gt;use the client customizations (demonstrated &lt;a href=&quot;https://github.com/trentlarson/singly-relaxing&quot;&gt;here&lt;/a&gt; in the singly-api-local.js and the test-new-datatype.html files) &lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
To set arbitrary data in your local locker in a browser app... you&#39;re out of luck due to the string problem.&lt;br /&gt;
&lt;br /&gt;
Maybe there&#39;s a better way...?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/7674807007968824829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/7674807007968824829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/7674807007968824829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/7674807007968824829'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2012/04/setting-and-retrieving-lockerproject.html' title='Setting and retrieving LockerProject data in a local install'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-8779779432139320085</id><published>2012-04-01T10:48:00.001-07:00</published><updated>2014-06-28T07:55:47.826-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Locker Project"/><category scheme="http://www.blogger.com/atom/ns#" term="personal data"/><category scheme="http://www.blogger.com/atom/ns#" term="Singly"/><title type='text'>Getting results with Singly&#39;s &quot;Build An App!&quot;</title><content type='html'>&lt;br /&gt;
The &lt;a href=&quot;http://singly.com/&quot;&gt;Singly&lt;/a&gt; (AKA &lt;a href=&quot;https://github.com/LockerProject&quot;&gt;LockerProject&lt;/a&gt;) approach to building an app is pretty simple, but the current instructions didn&#39;t work for me locally.&amp;nbsp; (You can see the instructions after logging in to singly.com and then going to &lt;a href=&quot;http://singly.com/dashboard/develop#Develop-BuildAnApp&quot;&gt;the &quot;Build An App!&quot; page&lt;/a&gt;.)&amp;nbsp; The difficulty may be that I used my index.html incorrectly, but it was the best I could guess: I simply accessed it directly with a &quot;file:///...&quot; URL.&amp;nbsp; (If anyone knows a better place, I&#39;d love to know; I tried putting it in a separate webserver I&#39;ve got locally, to no avail.)&amp;nbsp; I can get this to work, but it requires some tweaking.&lt;br /&gt;
&lt;br /&gt;
The symptom in Firefox was a blank page, and in the Javascript console there was an error: &quot;Operation is not supported&quot; on a line with sessionStorage.&amp;nbsp; I found that sessionStorage won&#39;t work for local (&quot;file&quot;) URLs (thanks to &lt;a href=&quot;http://stackoverflow.com/questions/4383494/error-using-sessionstorage&quot;&gt;this StackOverflow post&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
So I changed the references
 in the api.js to localStorage and things worked for me.&amp;nbsp; Here is my version: &lt;a href=&quot;https://github.com/trentlarson/singly-relaxing/blob/5e9cf2c1801b78c130cdc79e84a4cdbf2b3b2deb/singly-api-local.js&quot;&gt;https://github.com/trentlarson/singly-relaxing/blob/5e9cf2c1801b78c130cdc79e84a4cdbf2b3b2deb/singly-api-local.js&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
It uses a conditional, so I&#39;m hoping it can be used at singly.com as a patch to &lt;a href=&quot;https://singly.com/js/api.js&quot;&gt;the default version&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/8779779432139320085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/8779779432139320085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/8779779432139320085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/8779779432139320085'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2012/04/getting-results-with-singlys-build-app.html' title='Getting results with Singly&#39;s &quot;Build An App!&quot;'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-1896601153714011627</id><published>2012-03-28T19:00:00.000-07:00</published><updated>2012-05-26T11:25:40.233-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computers"/><category scheme="http://www.blogger.com/atom/ns#" term="event report"/><title type='text'>Make:SLC</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
In the East half of Make:SLC is the home of the &lt;a href=&quot;http://computergraphicsmuseum.org/&quot;&gt;Computer Graphics Museum.&lt;/a&gt; (I believe it was Richard Thomson I met.)&amp;nbsp; He highly recommended seeing the &lt;a href=&quot;http://www.exploratorium.edu/&quot;&gt;Exploratorium&lt;/a&gt; in San Francisco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Scott Lemon came to show off his enclosing for Arduino and other electronics.&amp;nbsp; Other things he mentioned: Patchbase, Thingspeak, X10 for home automation&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/1896601153714011627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/1896601153714011627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/1896601153714011627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/1896601153714011627'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2012/03/makeslc.html' title='Make:SLC'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-947920915229215324</id><published>2012-01-06T11:48:00.000-08:00</published><updated>2012-03-31T18:33:34.555-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="event report"/><title type='text'>Details from Cory Doctorow&#39;s CCC talk</title><content type='html'>&lt;br /&gt;
I watched Cory Doctorow&#39;s talk &quot;The Coming War on General Computation,&quot; and I recommend it if you want any specific details, arguing points, and even a good reminder of very bad recent policies when it comes to protecting ourselves from corporate (and government) invasion into our privacy and security.&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=HUEvRyemKSg#&quot;&gt;Video&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://github.com/jwise/28c3-doctorow/blob/master/transcript.md&quot;&gt;Transcript&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The low-level software he mentions for possible abuse by Big Brother is UEFI (Unified Extensible Firmware Interface).&lt;br /&gt;
&lt;br /&gt;
Here are the organizations he mentions near the end (at 29:15) (except the &quot;org&quot; which I cannot find):&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.eff.org/&quot; style=&quot;background-color: #f8f8f8; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;EFF&lt;/a&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: helvetica,arial,freesans,clean,sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&amp;nbsp;eff.org&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.bof.nl/&quot;&gt;Bits of Freedom&lt;/a&gt;&amp;nbsp;bof.nl&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.edri.org/&quot;&gt;EDRI&lt;/a&gt;&amp;nbsp;edri.org&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ccc.de/&quot;&gt;CCC&lt;/a&gt;&amp;nbsp;ccc.de&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://netzpolitik.org/&quot;&gt;Netzpolitik&lt;/a&gt;&amp;nbsp;netzpolitik.org&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: helvetica,arial,freesans,clean,sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&lt;a href=&quot;http://www.laquadrature.net/&quot;&gt;La Quadrature du Net&lt;/a&gt; &lt;/span&gt;www.laquadrature.net&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BTW, I highly recommend his book &quot;Little Brother&quot;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/947920915229215324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/947920915229215324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/947920915229215324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/947920915229215324'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2012/01/details-from-cory-doctorows-ccc-talk.html' title='Details from Cory Doctorow&#39;s CCC talk'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-3106752543618727857</id><published>2011-12-07T14:12:00.001-08:00</published><updated>2011-12-10T13:59:03.912-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium"/><title type='text'>Tips to Avoid Titanium Desktop Errors and Crashes</title><content type='html'>My &lt;a href=&quot;https://github.com/trentlarson/P2P-Docs&quot;&gt;P2P-Docs project&lt;/a&gt; is a desktop app currently written in &lt;a href=&quot;http://www.appcelerator.com/products/titanium-desktop-application-development/&quot;&gt;Titanium&lt;/a&gt; where I can code the UI in HTML and JavaScript and the business logic in Ruby.&amp;nbsp; Unfortunately, it&#39;s very prone to errors and crashes when things get complicated; fortunately, the problems I&#39;ve seen have been in the interface between JavaScript and Ruby, and I feel like I can keep progressing with this platform if I follow these conventions.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Only pass strings between JavaScript and Ruby, encoding in JSON strings if necessary.
  &lt;ul&gt;
&lt;li&gt;In JavaScript, call Ruby methods with String arguments.&amp;nbsp; JavaScript ints become Ruby Floats, so just use Strings to avoid potential confusion; JSON arguments will probably work and become hashes, but then you&#39;ll have to beware of the types of all the nested objects... if I need multiple values then I either supply them as more arguments or I call the Ruby method multiple times.&lt;/li&gt;
&lt;li&gt;In Ruby, check arguments for RubyKObject type.&amp;nbsp; Sometimes arguments don&#39;t have the expected String type, so you&#39;ll want to convert them:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;code&gt;&amp;nbsp; if (term.class.name == &quot;RubyKObject&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; term = term.toString()&lt;br /&gt;&amp;nbsp; end&lt;/code&gt; &lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;code&gt; &lt;/code&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;In Ruby, return String objects; if necessary, encode in JSON.&amp;nbsp; Here&#39;s a simplistic method that works for me:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;code&gt;
&amp;nbsp; # takes an argument which is any nesting of String, Array, Hash (and nil)&lt;br /&gt;&amp;nbsp; # return a String holding JSON representation of the argument&lt;br /&gt;&amp;nbsp; def self.strings_arrays_hashes_json(arg)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (arg == nil)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;null&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif (arg.class.name == &quot;String&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = arg&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = result.gsub(&quot;\&quot;&quot;,&quot;\\\&quot;&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = result.gsub(&quot;\\&quot;,&quot;\\\\&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = result.gsub(&quot;\/&quot;,&quot;\\/&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = result.gsub(&quot;\b&quot;,&quot;\\b&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = result.gsub(&quot;\f&quot;,&quot;\\f&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = result.gsub(&quot;\n&quot;,&quot;\\n&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = result.gsub(&quot;\r&quot;,&quot;\\r&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = result.gsub(&quot;\t&quot;,&quot;\\t&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;\&quot;&quot; + result + &quot;\&quot;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif (arg.class.name == &quot;Array&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; recurse = arg.map { |elem| strings_arrays_hashes_json elem }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;[&quot; + recurse.join(&quot;, &quot;) + &quot;]&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif (arg.class.name == &quot;Hash&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hashes = arg.to_a.map { |key, val| &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;\&quot;#{key}\&quot;:#{strings_arrays_hashes_json(val)}&quot; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;{&quot; + hashes.join(&quot;, &quot;) + &quot;}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;#{arg}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/code&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;In JavaScript, cast the results to a string (ie. toString()) and parse out the JSON if necessary (ie. &lt;a href=&quot;https://github.com/douglascrockford/JSON-js&quot;&gt;JSON-js&lt;/a&gt;).&amp;nbsp; It&#39;s crazy, but even &lt;a href=&quot;http://developer.appcelerator.com/question/121290/why-does-app-crash-on-certain-variable-references&quot;&gt;an unused toString call can make a difference&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Thankfully, you can trust nulls and nils; they convert to one another well. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In JavaScript, call any Ruby methods before playing with the DOM.&amp;nbsp; I&#39;ve found that, if I have a lot of DOM manipulation, Ruby calls will work up to some point and then WHAM! after that point you get errors or crashes.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
BTW, the direct-to-console debugging is your friend; the Ruby puts calls may not get flushed immediately, but this will:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;code&gt;Titanium.API.print(&quot;stuff\n&quot;); &lt;/code&gt;&lt;/blockquote&gt;
&lt;br /&gt;
When you start working this way, you&#39;ll notice that you&#39;re really pushed into a paradigm where you do simple visual manipulations in the browser as much as possible, but for any substantive changes to data you do a page-submit to pass the values to the same page, then you run your logic during the page initialization and then you rerender the whole page.&amp;nbsp; It&#39;s unfortunate, but now I never have troubles.&amp;nbsp; (&lt;a href=&quot;http://en.wikipedia.org/wiki/I_Had_Trouble_in_Getting_to_Solla_Sollew&quot;&gt;... at least very few!&lt;/a&gt;&amp;nbsp; Just kidding.&amp;nbsp; I haven&#39;t had any mysterious Ruby errors or app crashes wherever I take these approaches.)&lt;br /&gt;
&lt;br /&gt;
BTW, every time I hit a glitch, I look more closely at other approaches... but since I figure every tool will have its issues, I&#39;m still sticking with the devil I know.&amp;nbsp; Feel free to ask me later if I&#39;m still sticking to it.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/3106752543618727857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/3106752543618727857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/3106752543618727857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/3106752543618727857'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2011/12/tips-to-avoid-titanium-desktop-errors.html' title='Tips to Avoid Titanium Desktop Errors and Crashes'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-3112877820305970876</id><published>2011-11-19T19:12:00.001-08:00</published><updated>2011-12-10T13:49:08.895-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Titanium"/><title type='text'>debugging a Titanium problem</title><content type='html'>&lt;br /&gt;
This is my response to &lt;a href=&quot;http://developer.appcelerator.com/question/121290/why-does-app-crash-on-certain-variable-references#comment-104340&quot;&gt;Alan&#39;s comment here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
What I&#39;m seeing is that my app will completely stop.&amp;nbsp; &lt;a href=&quot;http://screencast-o-matic.com/watch/cXXYeeuCP&quot;&gt;Here is a video&lt;/a&gt; that shows how it stops.&lt;br /&gt;
&lt;br /&gt;
I&#39;ll bet it&#39;s tough to get error info from the third-party languages; I&#39;m sure that&#39;s where the problem lies, because I put console debug output around lines like &lt;a href=&quot;https://github.com/trentlarson/P2P-Docs/blob/master/Resources/repositories.html#L62&quot;&gt;this one&lt;/a&gt; and I see that it gets up to the Ruby method but no further.&amp;nbsp; (I realize this example is a method... if it would help, I&#39;ll try to retrieve a problem involving a variable reference.)&amp;nbsp; Even if I wrap it in a try-catch, the app stops, so it never gets to the catch, and I don&#39;t get any other info.&lt;br /&gt;
&lt;br /&gt;
You can duplicate this problem in &lt;a href=&quot;https://github.com/trentlarson/P2P-Docs/tree/80aae73ec58074b675872773e5953906e8af730e&quot;&gt;my app&lt;/a&gt;; look on that page for the &quot;Test many repos in app&quot; to see duplication steps.&amp;nbsp; (Note that that is a specific point in time in November; I&#39;ve worked around the problem, but it&#39;s definitely not ideal and the problem still stands.)&lt;br /&gt;
&lt;br /&gt;
Below is a stack from OSX.&lt;br /&gt;
&lt;br /&gt;
It could be interesting to help enhance the interface and error reporting in the &lt;a href=&quot;https://github.com/appcelerator/kroll&quot;&gt;Kroll&lt;/a&gt; system (I assume that&#39;s the third-party language interface); if you have any suggestions for getting started, or for other ways that I can help you, I&#39;m all ears.&lt;br /&gt;
&lt;br /&gt;
Thanks.&lt;br /&gt;
&lt;br /&gt;
____________________________________________&lt;br /&gt;
Family History P2P Docs appears to have encountered a fatal error and cannot continue.&lt;br /&gt;
&lt;br /&gt;
The application has collected information about the error in the form&lt;br /&gt;
of a detailed error report. If you send the crash report, we will&lt;br /&gt;
attempt to resolve this problem.&lt;br /&gt;
&lt;br /&gt;
&lt;cancel&gt; &lt;send report=&quot;&quot;&gt;&lt;br /&gt;&lt;/send&gt;&lt;/cancel&gt;&lt;br /&gt;
&lt;cancel&gt; &lt;send report=&quot;&quot;&gt;&amp;nbsp;&lt;/send&gt;&lt;/cancel&gt;&lt;br /&gt;
&lt;cancel&gt;&lt;send report=&quot;&quot;&gt;... then I click on the &quot;Send Report&quot; button to see the following:&lt;/send&gt;&lt;/cancel&gt;&lt;br /&gt;
&lt;br /&gt;
____________________________________________&lt;br /&gt;
Problem Report for Family History P2P Docs&lt;br /&gt;
&lt;br /&gt;
This report will be sent to Apple automatically.&lt;br /&gt;
&lt;br /&gt;
Problem Details and System Configuration&lt;br /&gt;
&lt;br /&gt;
Process:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Family History P2P Docs [71611]&lt;br /&gt;
Path:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /Users/tlarson/Documents/dev/p2pdocs/p2pdocs/Family History P2P Docs/dist/osx/Family History P2P Docs.app/Contents/MacOS/Family History P2P Docs&lt;br /&gt;
Identifier:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.familyhistories.p2pdocs&lt;br /&gt;
Version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ??? (7.0)&lt;br /&gt;
Code Type:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X86 (Native)&lt;br /&gt;
Parent Process:&amp;nbsp; ??? [1]&lt;br /&gt;
&lt;br /&gt;
Date/Time:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2011-11-18 20:50:29.623 -0700&lt;br /&gt;
OS Version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mac OS X 10.6.8 (10K549)&lt;br /&gt;
Report Version:&amp;nbsp; 6&lt;br /&gt;
&lt;br /&gt;
Interval Since Last Report:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 451670 sec&lt;br /&gt;
Crashes Since Last Report:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32&lt;br /&gt;
Per-App Interval Since Last Report:&amp;nbsp; 31828 sec&lt;br /&gt;
Per-App Crashes Since Last Report:&amp;nbsp;&amp;nbsp; 2&lt;br /&gt;
Anonymous UUID:&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8EC49F5A-C2D0-4019-9318-8634B3D2552C&lt;br /&gt;
&lt;br /&gt;
Exception Type:&amp;nbsp; EXC_BAD_ACCESS (SIGSEGV)&lt;br /&gt;
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000081be0f79&lt;br /&gt;
Crashed Thread:&amp;nbsp; 0&amp;nbsp; Dispatch queue: com.apple.main-thread&lt;br /&gt;
&lt;br /&gt;
Application Specific Information:&lt;br /&gt;
objc_msgSend() selector name: localizedDescription&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thread 0 Crashed:&amp;nbsp; Dispatch queue: com.apple.main-thread&lt;br /&gt;
0&amp;nbsp;&amp;nbsp; libobjc.A.dylib&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; 0x97806f87 objc_msgSend + 23&lt;br /&gt;
1&amp;nbsp;&amp;nbsp; info.familyhistories.p2pdocs&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000221b5 main + 549&lt;br /&gt;
2&amp;nbsp;&amp;nbsp; info.familyhistories.p2pdocs&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000032ea start + 54&lt;br /&gt;
&lt;br /&gt;
Thread 1:&amp;nbsp; Dispatch queue: com.apple.libdispatch-manager&lt;br /&gt;
0&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x96675382 kevent + 10&lt;br /&gt;
1&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x96675a9c _dispatch_mgr_invoke + 215&lt;br /&gt;
2&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x96674f59 _dispatch_queue_invoke + 163&lt;br /&gt;
3&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x96674cfe _dispatch_worker_thread2 + 240&lt;br /&gt;
4&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x96674781 _pthread_wqthread + 390&lt;br /&gt;
5&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x966745c6 start_wqthread + 30&lt;br /&gt;
&lt;br /&gt;
Thread 2:&lt;br /&gt;
0&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x96674412 __workq_kernreturn + 10&lt;br /&gt;
1&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x966749a8 _pthread_wqthread + 941&lt;br /&gt;
2&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x966745c6 start_wqthread + 30&lt;br /&gt;
&lt;br /&gt;
Thread 3:&lt;br /&gt;
0&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x96674412 __workq_kernreturn + 10&lt;br /&gt;
1&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x966749a8 _pthread_wqthread + 941&lt;br /&gt;
2&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x966745c6 start_wqthread + 30&lt;br /&gt;
&lt;br /&gt;
Thread 4:&lt;br /&gt;
0&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x96674412 __workq_kernreturn + 10&lt;br /&gt;
1&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x966749a8 _pthread_wqthread + 941&lt;br /&gt;
2&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x966745c6 start_wqthread + 30&lt;br /&gt;
&lt;br /&gt;
Thread 5:&lt;br /&gt;
0&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9667caa2 __semwait_signal + 10&lt;br /&gt;
1&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x966a89c5 nanosleep$UNIX2003 + 188&lt;br /&gt;
2&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x966a8903 usleep$UNIX2003 + 61&lt;br /&gt;
3&amp;nbsp;&amp;nbsp; com.apple.AppKit&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; 0x9910ae2d -[NSUIHeartBeat _heartBeatThread:] + 2039&lt;br /&gt;
4&amp;nbsp;&amp;nbsp; com.apple.Foundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x9404a4c4 -[NSThread main] + 45&lt;br /&gt;
5&amp;nbsp;&amp;nbsp; com.apple.Foundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x9404a474 __NSThread__main__ + 1499&lt;br /&gt;
6&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9667c259 _pthread_start + 345&lt;br /&gt;
7&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9667c0de thread_start + 34&lt;br /&gt;
&lt;br /&gt;
Thread 6:&lt;br /&gt;
0&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9664eafa mach_msg_trap + 10&lt;br /&gt;
1&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9664f267 mach_msg + 68&lt;br /&gt;
2&amp;nbsp;&amp;nbsp; com.apple.CoreFoundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x952612df __CFRunLoopRun + 2079&lt;br /&gt;
3&amp;nbsp;&amp;nbsp; com.apple.CoreFoundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x952603c4 CFRunLoopRunSpecific + 452&lt;br /&gt;
4&amp;nbsp;&amp;nbsp; com.apple.CoreFoundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x952601f1 CFRunLoopRunInMode + 97&lt;br /&gt;
5&amp;nbsp;&amp;nbsp; com.apple.Foundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x94083224 +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] + 329&lt;br /&gt;
6&amp;nbsp;&amp;nbsp; com.apple.Foundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x9404a4c4 -[NSThread main] + 45&lt;br /&gt;
7&amp;nbsp;&amp;nbsp; com.apple.Foundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x9404a474 __NSThread__main__ + 1499&lt;br /&gt;
8&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9667c259 _pthread_start + 345&lt;br /&gt;
9&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9667c0de thread_start + 34&lt;br /&gt;
&lt;br /&gt;
Thread 7:&amp;nbsp; com.apple.CFSocket.private&lt;br /&gt;
0&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9666dac6 select$DARWIN_EXTSN + 10&lt;br /&gt;
1&amp;nbsp;&amp;nbsp; com.apple.CoreFoundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x952a0c53 __CFSocketManager + 1091&lt;br /&gt;
2&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9667c259 _pthread_start + 345&lt;br /&gt;
3&amp;nbsp;&amp;nbsp; libSystem.B.dylib&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; 0x9667c0de thread_start + 34&lt;br /&gt;
&lt;br /&gt;
Thread 0 crashed with X86 Thread State (32-bit):&lt;br /&gt;
&amp;nbsp; eax: 0x9780c7e2&amp;nbsp; ebx: 0x0001f0de&amp;nbsp; ecx: 0x9977f99e&amp;nbsp; edx: 0x81be0f59&lt;br /&gt;
&amp;nbsp; edi: 0xbfffec80&amp;nbsp; esi: 0x00223690&amp;nbsp; ebp: 0xbfffecb8&amp;nbsp; esp: 0xbfffec28&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ss: 0x0000001f&amp;nbsp; efl: 0x00010286&amp;nbsp; eip: 0x97806f87&amp;nbsp;&amp;nbsp; cs: 0x00000017&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ds: 0x0000001f&amp;nbsp;&amp;nbsp; es: 0x0000001f&amp;nbsp;&amp;nbsp; fs: 0x00000000&amp;nbsp;&amp;nbsp; gs: 0x00000037&lt;br /&gt;
&amp;nbsp; cr2: 0x81be0f79&lt;br /&gt;
&lt;br /&gt;
Binary Images:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1000 -&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x96ff7 +info.familyhistories.p2pdocs ??? (7.0) &amp;lt;4672C033-55EC-71AC-C49D-7CE6190630DC&amp;gt; /Users/tlarson/Documents/dev/p2pdocs/p2pdocs/Family History P2P Docs/dist/osx/Family History P2P Docs.app/Contents/MacOS/Family History P2P Docs&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0xb6000 -&amp;nbsp;&amp;nbsp; 0x16bfe7&amp;nbsp; libcrypto.0.9.7.dylib 0.9.7 (compatibility 0.9.7) &lt;aacc86c0-86b4-b1a7-003f-2a0af68973a2&gt; /usr/lib/libcrypto.0.9.7.dylib&lt;br /&gt;&amp;nbsp; 0x7fb000 -&amp;nbsp;&amp;nbsp; 0x7fcff5 +com.vmware.FusionVMDKPlugIn ??? (416484) &lt;fb38d6fa-1ec8-88c6-dbc0-d2051763c8cd&gt; /Library/Contextual Menu Items/FusionVMDKPlugIn.plugin/Contents/MacOS/FusionVMDKPlugIn&lt;br /&gt;0x8fe00000 - 0x8fe4162b&amp;nbsp; dyld 132.1 (???) &amp;lt;1C06ECD9-A2D7-BB10-AF50-0F2B598A7DEC&amp;gt; /usr/lib/dyld&lt;br /&gt;0x90003000 - 0x90045ff7&amp;nbsp; libvDSP.dylib 268.0.1 (compatibility 1.0.0) &amp;lt;8A4721DE-25C4-C8AA-EA90-9DA7812E3EBA&amp;gt; /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib&lt;br /&gt;0x900a5000 - 0x900a8fe7&amp;nbsp; libmathCommon.A.dylib 315.0.0 (compatibility 1.0.0) &amp;lt;1622A54F-1A98-2CBE-B6A4-2122981A500E&amp;gt; /usr/lib/system/libmathCommon.A.dylib&lt;br /&gt;0x900a9000 - 0x901e6fe7&amp;nbsp; com.apple.audio.toolbox.AudioToolbox 1.6.7 (1.6.7) &amp;lt;2D31CC6F-32CC-72FF-34EC-AB40CEE496A7&amp;gt; /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox&lt;br /&gt;0x901e7000 - 0x902a0fe7&amp;nbsp; libsqlite3.dylib 9.6.0 (compatibility 9.0.0) &amp;lt;52438E77-55D1-C231-1936-76F1369518E4&amp;gt; /usr/lib/libsqlite3.dylib&lt;br /&gt;0x903cf000 - 0x9040cff7&amp;nbsp; com.apple.SystemConfiguration 1.10.8 (1.10.2) &amp;lt;50E4D49B-4F61-446F-1C21-1B2BA814713D&amp;gt; /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration&lt;br /&gt;0x905af000 - 0x905d5ffb&amp;nbsp; com.apple.DictionaryServices 1.1.2 (1.1.2) &amp;lt;43E1D565-6E01-3681-F2E5-72AE4C3A097A&amp;gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices&lt;br /&gt;0x905e4000 - 0x90648ffb&amp;nbsp; com.apple.htmlrendering 72 (1.1.4) &amp;lt;4D451A35-FAB6-1288-71F6-F24A4B6E2371&amp;gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HTMLRendering.framework/Versions/A/HTMLRendering&lt;br /&gt;0x90649000 - 0x9064eff7&amp;nbsp; com.apple.OpenDirectory 10.6 (10.6) &amp;lt;0603680A-A002-D294-DE83-0D028C6BE884&amp;gt; /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory&lt;br /&gt;0x9082e000 - 0x90838ffb&amp;nbsp; com.apple.speech.recognition.framework 3.11.1 (3.11.1) &amp;lt;7486003F-8FDB-BD6C-CB34-DE45315BD82C&amp;gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition&lt;br /&gt;0x90839000 - 0x90843fe7&amp;nbsp; com.apple.audio.SoundManager 3.9.3 (3.9.3) &amp;lt;5F494955-7290-2D91-DA94-44B590191771&amp;gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CarbonSound.framework/Versions/A/CarbonSound&lt;br /&gt;0x90844000 - 0x90851ff7&amp;nbsp; com.apple.NetFS 3.2.2 (3.2.2) &lt;ddc9c397-c35f-8d7a-bb24-3d1b42fa5fab&gt; /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS&lt;br /&gt;0x90982000 - 0x90a4dfef&amp;nbsp; com.apple.CoreServices.OSServices 359.2 (359.2) &amp;lt;7C16D9C8-6F41-5754-17F7-2659D9DD9579&amp;gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices&lt;br /&gt;0x90be4000 - 0x90e49feb&amp;nbsp; com.apple.security 6.1.2 (55002) &amp;lt;7F00A51B-F22A-0EBC-A321-923472D686BD&amp;gt; /System/Library/Frameworks/Security.framework/Versions/A/Security&lt;br /&gt;0x90ed1000 - 0x90f6efe3&amp;nbsp; com.apple.LaunchServices 362.3 (362.3) &amp;lt;15B47388-16C8-97DA-EEBB-1709E136169E&amp;gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices&lt;br /&gt;0x911b0000 - 0x911c8ff7&amp;nbsp; com.apple.CFOpenDirectory 10.6 (10.6) &lt;d1cf5881-0af7-d164-4156-9e9067b7fa37&gt; /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory&lt;br /&gt;0x911c9000 - 0x911eafe7&amp;nbsp; com.apple.opencl 12.3.6 (12.3.6) &lt;b4104b80-1cb3-191c-afd3-697843c6bcff&gt; /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL&lt;br /&gt;0x9122c000 - 0x9167dfef&amp;nbsp; com.apple.RawCamera.bundle 3.7.1 (570) &lt;af94d180-5e0f-10df-0cb2-fd8edb110fa2&gt; /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera&lt;br /&gt;0x91686000 - 0x916d9ff7&amp;nbsp; com.apple.HIServices 1.8.3 (???) &amp;lt;1D3C4587-6318-C339-BD0F-1988F246BE2E&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices&lt;br /&gt;0x9179a000 - 0x917dbff7&amp;nbsp; libRIP.A.dylib 545.0.0 (compatibility 64.0.0) &amp;lt;80998F66-0AD7-AD12-B9AF-3E8D2CE6DE05&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib&lt;br /&gt;0x917dc000 - 0x91839ff7&amp;nbsp; com.apple.framework.IOKit 2.0 (???) &amp;lt;3DABAB9C-4949-F441-B077-0498F8E47A35&amp;gt; /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit&lt;br /&gt;0x9183a000 - 0x918e2ffb&amp;nbsp; com.apple.QD 3.36 (???) &lt;fa2785a4-bb69-dcb4-3ba3-7c89a82cab41&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD&lt;br /&gt;0x91c35000 - 0x91c40ff7&amp;nbsp; libCSync.A.dylib 545.0.0 (compatibility 64.0.0) &amp;lt;287DECA3-7821-32B6-724D-AE03A9A350F9&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCSync.A.dylib&lt;br /&gt;0x91c48000 - 0x91c4bff7&amp;nbsp; libCGXType.A.dylib 545.0.0 (compatibility 64.0.0) &amp;lt;4D766435-EB76-C384-0127-1D20ACD74076&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGXType.A.dylib&lt;br /&gt;0x91c4c000 - 0x91c68fe3&amp;nbsp; com.apple.openscripting 1.3.1 (???) &amp;lt;2A748037-D1C0-6D47-2C4A-0562AF799AC9&amp;gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting&lt;br /&gt;0x91c69000 - 0x91ce3fff&amp;nbsp; com.apple.audio.CoreAudio 3.2.6 (3.2.6) &amp;lt;156A532C-0B60-55B0-EE27-D02B82AA6217&amp;gt; /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio&lt;br /&gt;0x91f4d000 - 0x91f5dff7&amp;nbsp; libsasl2.2.dylib 3.15.0 (compatibility 3.0.0) &lt;c8744ea3-0ab7-cd03-e639-c4f2b910be5d&gt; /usr/lib/libsasl2.2.dylib&lt;br /&gt;0x91fac000 - 0x920dafe7&amp;nbsp; com.apple.CoreData 102.1 (251) &amp;lt;87FE6861-F2D6-773D-ED45-345272E56463&amp;gt; /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData&lt;br /&gt;0x920db000 - 0x920dbff7&amp;nbsp; com.apple.ApplicationServices 38 (38) &amp;lt;8012B504-3D83-BFBB-DA65-065E061CFE03&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices&lt;br /&gt;0x920dc000 - 0x921defe7&amp;nbsp; libcrypto.0.9.8.dylib 0.9.8 (compatibility 0.9.8) &amp;lt;015563C4-81E2-8C8A-82AC-31B38D904A42&amp;gt; /usr/lib/libcrypto.0.9.8.dylib&lt;br /&gt;0x921df000 - 0x921e2ff7&amp;nbsp; libCoreVMClient.dylib ??? (???) &lt;f58bdfc1-7408-53c8-0b08-48ba2f25ca43&gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib&lt;br /&gt;0x921e3000 - 0x9227bfe7&amp;nbsp; edu.mit.Kerberos 6.5.11 (6.5.11) &lt;f36db665-a88b-7f5b-6244-6a2e7ffff668&gt; /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos&lt;br /&gt;0x9227c000 - 0x922a6ff7&amp;nbsp; com.apple.shortcut 1.1 (1.1) &lt;b0514fa9-7cae-ad94-93ca-7b2a2c5f7b8a&gt; /System/Library/PrivateFrameworks/Shortcut.framework/Versions/A/Shortcut&lt;br /&gt;0x922f7000 - 0x92379ffb&amp;nbsp; SecurityFoundation ??? (???) &lt;bfe377a4-c830-3eca-e69f-8a8094cda0a6&gt; /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation&lt;br /&gt;0x9286e000 - 0x92890fef&amp;nbsp; com.apple.DirectoryService.Framework 3.6 (621.11) &lt;ca979eac-9537-43b6-cd69-c144acb75e09&gt; /System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService&lt;br /&gt;0x92891000 - 0x92893ff7&amp;nbsp; com.apple.securityhi 4.0 (36638) &lt;fc01bfc4-04db-96f3-2412-a86cc4f94cb2&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI&lt;br /&gt;0x92894000 - 0x92896ff7&amp;nbsp; libRadiance.dylib ??? (???) &amp;lt;5920EB69-8D7F-5EFD-70AD-590FCB5C9E6C&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib&lt;br /&gt;0x92897000 - 0x92901fe7&amp;nbsp; libstdc++.6.dylib 7.9.0 (compatibility 7.0.0) &amp;lt;411D87F4-B7E1-44EB-F201-F8B4F9227213&amp;gt; /usr/lib/libstdc++.6.dylib&lt;br /&gt;0x92902000 - 0x92935ff7&amp;nbsp; com.apple.AE 496.5 (496.5) &lt;bf9673d5-2419-7120-26a3-83d264c75222&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE&lt;br /&gt;0x9293c000 - 0x9297fff7&amp;nbsp; com.apple.NavigationServices 3.5.4 (182) &amp;lt;8DC6FD4A-6C74-9C23-A4C3-715B44A8D28C&amp;gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/NavigationServices.framework/Versions/A/NavigationServices&lt;br /&gt;0x92ac7000 - 0x92b0dff7&amp;nbsp; libauto.dylib ??? (???) &amp;lt;29422A70-87CF-10E2-CE59-FEE1234CFAAE&amp;gt; /usr/lib/libauto.dylib&lt;br /&gt;0x92b47000 - 0x92b6fff7&amp;nbsp; libxslt.1.dylib 3.24.0 (compatibility 3.0.0) &amp;lt;315D97C2-4E1F-A95F-A759-4A3FA5639E75&amp;gt; /usr/lib/libxslt.1.dylib&lt;br /&gt;0x92b70000 - 0x92bc8fe7&amp;nbsp; com.apple.datadetectorscore 2.0 (80.7) &lt;f7416a84-e91c-5bdc-10e3-4940eb7ae5c9&gt; /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore&lt;br /&gt;0x92bc9000 - 0x92c12fe7&amp;nbsp; libTIFF.dylib ??? (???) &amp;lt;579DC328-567D-A74C-4BCE-1D1C729E3F6D&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib&lt;br /&gt;0x92c13000 - 0x93402557&amp;nbsp; com.apple.CoreGraphics 1.545.0 (???) &amp;lt;1D9DC7A5-228B-42CB-7018-66F42C3A9BB3&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics&lt;br /&gt;0x93485000 - 0x938baff7&amp;nbsp; libLAPACK.dylib 219.0.0 (compatibility 1.0.0) &amp;lt;5E2D2283-57DE-9A49-1DB0-CD027FEFA6C2&amp;gt; /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib&lt;br /&gt;0x938bb000 - 0x938cfffb&amp;nbsp; com.apple.speech.synthesis.framework 3.10.35 (3.10.35) &amp;lt;0DBE17D5-17A2-8A0E-8572-5A78408B41C9&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis&lt;br /&gt;0x93d20000 - 0x93d5bfeb&amp;nbsp; libFontRegistry.dylib ??? (???) &lt;ad45365e-a3ea-62b8-a288-1e13dba22b1b&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib&lt;br /&gt;0x93eb9000 - 0x93ecaff7&amp;nbsp; com.apple.LangAnalysis 1.6.6 (1.6.6) &amp;lt;3036AD83-4F1D-1028-54EE-54165E562650&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis&lt;br /&gt;0x93ecb000 - 0x93f83feb&amp;nbsp; libFontParser.dylib ??? (???) &lt;d57d3834-9395-fd58-092a-49b3708e8c89&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib&lt;br /&gt;0x93f84000 - 0x93fe5fe7&amp;nbsp; com.apple.CoreText 151.10 (???) &amp;lt;5C2DEFBE-D54B-4DC7-D456-9ED02880BE98&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreText.framework/Versions/A/CoreText&lt;br /&gt;0x93fe6000 - 0x94033feb&amp;nbsp; com.apple.DirectoryService.PasswordServerFramework 6.1 (6.1) &amp;lt;136BFA48-D456-B677-3B5D-40A6946C3A09&amp;gt; /System/Library/PrivateFrameworks/PasswordServer.framework/Versions/A/PasswordServer&lt;br /&gt;0x94034000 - 0x942a5fef&amp;nbsp; com.apple.Foundation 6.6.8 (751.63) &amp;lt;69B3441C-B196-F2AD-07F8-D8DD24E4CD8C&amp;gt; /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation&lt;br /&gt;0x943b7000 - 0x94463fe7&amp;nbsp; com.apple.CFNetwork 454.12.4 (454.12.4) &lt;dedcd006-389f-967f-3405-edf541f406d7&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork&lt;br /&gt;0x94560000 - 0x94569ff7&amp;nbsp; com.apple.DiskArbitration 2.3 (2.3) &lt;e9c40767-da6a-6ccb-8b00-2d5706753000&gt; /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration&lt;br /&gt;0x945d8000 - 0x948f8ff3&amp;nbsp; com.apple.CoreServices.CarbonCore 861.39 (861.39) &amp;lt;5C59805C-AF39-9010-B8B5-D673C9C38538&amp;gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore&lt;br /&gt;0x94975000 - 0x94976ff7&amp;nbsp; com.apple.TrustEvaluationAgent 1.1 (1) &amp;lt;2D970A9B-77E8-EDC0-BEC6-7580D78B2843&amp;gt; /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent&lt;br /&gt;0x94977000 - 0x94977ff7&amp;nbsp; com.apple.vecLib 3.6 (vecLib 3.6) &lt;ff4dc8b6-0ab0-dee8-ada8-7b57645a1f36&gt; /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib&lt;br /&gt;0x94978000 - 0x94a34fff&amp;nbsp; com.apple.ColorSync 4.6.6 (4.6.6) &amp;lt;7CD8B191-039A-02C3-EA5E-4194EC59995B&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync&lt;br /&gt;0x94a35000 - 0x94e4bff7&amp;nbsp; libBLAS.dylib 219.0.0 (compatibility 1.0.0) &lt;c4fb303a-db4d-f9e8-181c-129585e59603&gt; /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib&lt;br /&gt;0x94e58000 - 0x94e9cfe7&amp;nbsp; com.apple.Metadata 10.6.3 (507.15) &amp;lt;460BEF23-B89F-6F4C-4940-45556C0671B5&amp;gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata&lt;br /&gt;0x94e9d000 - 0x94eafff7&amp;nbsp; com.apple.MultitouchSupport.framework 207.11 (207.11) &amp;lt;6FF4F2D6-B8CD-AE13-56CB-17437EE5B741&amp;gt; /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport&lt;br /&gt;0x95224000 - 0x9539ffe7&amp;nbsp; com.apple.CoreFoundation 6.6.6 (550.44) &lt;f88c95cd-1264-782d-a1f5-204739847e93&gt; /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation&lt;br /&gt;0x953a0000 - 0x953f0ff7&amp;nbsp; com.apple.framework.familycontrols 2.0.2 (2020) &lt;c96c8a99-a40c-8b9c-1fba-a0f46ac92f17&gt; /System/Library/PrivateFrameworks/FamilyControls.framework/Versions/A/FamilyControls&lt;br /&gt;0x953f1000 - 0x953f4ffb&amp;nbsp; com.apple.help 1.3.2 (41.1) &amp;lt;8AC20B01-4A3B-94BA-D8AF-E39034B97D8C&amp;gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help&lt;br /&gt;0x953f5000 - 0x953f5ff7&amp;nbsp; com.apple.CoreServices 44 (44) &amp;lt;51CFA89A-33DB-90ED-26A8-67D461718A4A&amp;gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices&lt;br /&gt;0x954a0000 - 0x954a0ff7&amp;nbsp; liblangid.dylib ??? (???) &lt;b99607fc-5646-32c8-2c16-afb5ea9097c2&gt; /usr/lib/liblangid.dylib&lt;br /&gt;0x954d2000 - 0x955d3fe7&amp;nbsp; libxml2.2.dylib 10.3.0 (compatibility 10.0.0) &lt;c75f921c-f027-6372-a0a1-edb8a6234331&gt; /usr/lib/libxml2.2.dylib&lt;br /&gt;0x955d4000 - 0x955d8ff7&amp;nbsp; libGIF.dylib ??? (???) &amp;lt;2123645B-AC89-C4E2-8757-85834CAE3DD2&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib&lt;br /&gt;0x955d9000 - 0x9561dff3&amp;nbsp; com.apple.coreui 2 (114) &amp;lt;2234855E-3BED-717F-0BFA-D1A289ECDBDA&amp;gt; /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI&lt;br /&gt;0x9561e000 - 0x956b0fe7&amp;nbsp; com.apple.print.framework.PrintCore 6.3 (312.7) &amp;lt;7410D1B2-655D-68DA-D4B9-2C65747B6817&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore&lt;br /&gt;0x956d3000 - 0x956e1fe7&amp;nbsp; libz.1.dylib 1.2.3 (compatibility 1.0.0) &amp;lt;33C1B260-ED05-945D-FC33-EF56EC791E2E&amp;gt; /usr/lib/libz.1.dylib&lt;br /&gt;0x956e2000 - 0x95715fff&amp;nbsp; libTrueTypeScaler.dylib ??? (???) &amp;lt;0F04DAC3-829A-FA1B-E9D0-1E9505713C5C&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libTrueTypeScaler.dylib&lt;br /&gt;0x95716000 - 0x957c4ff3&amp;nbsp; com.apple.ink.framework 1.3.3 (107) &amp;lt;233A981E-A2F9-56FB-8BDE-C2DEC3F20784&amp;gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink&lt;br /&gt;0x96560000 - 0x96596fff&amp;nbsp; libtidy.A.dylib ??? (???) &amp;lt;0FD72C68-4803-4C5B-3A63-05D7394BFD71&amp;gt; /usr/lib/libtidy.A.dylib&lt;br /&gt;0x965de000 - 0x9664dff7&amp;nbsp; libvMisc.dylib 268.0.1 (compatibility 1.0.0) &amp;lt;595A5539-9F54-63E6-7AAC-C04E1574B050&amp;gt; /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib&lt;br /&gt;0x9664e000 - 0x967f5ff7&amp;nbsp; libSystem.B.dylib 125.2.11 (compatibility 1.0.0) &amp;lt;2DCD13E3-1BD1-6F25-119A-3863A3848B90&amp;gt; /usr/lib/libSystem.B.dylib&lt;br /&gt;0x967f6000 - 0x96902ff7&amp;nbsp; libGLProgrammability.dylib ??? (???) &amp;lt;04D7E5C3-B0C3-054B-DF49-3B333DCDEE22&amp;gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib&lt;br /&gt;0x96f98000 - 0x96fc9ff7&amp;nbsp; libGLImage.dylib ??? (???) &amp;lt;0EE86397-A867-0BBA-E5B1-B800E43FC5CF&amp;gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib&lt;br /&gt;0x96fca000 - 0x96fcaff7&amp;nbsp; com.apple.Carbon 150 (152) &lt;bfdda394-0f01-a3a3-a226-ed3a45975a56&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon&lt;br /&gt;0x96fcb000 - 0x96febfe7&amp;nbsp; libresolv.9.dylib 41.0.0 (compatibility 1.0.0) &lt;bf7ff2f6-5fd3-d78f-77bc-9e2cb2a5e309&gt; /usr/lib/libresolv.9.dylib&lt;br /&gt;0x96fec000 - 0x96fedff7&amp;nbsp; com.apple.audio.units.AudioUnit 1.6.7 (1.6.7) &amp;lt;838E1760-F7D9-3239-B3A8-20E25EFD1379&amp;gt; /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit&lt;br /&gt;0x96fff000 - 0x9736aff7&amp;nbsp; com.apple.QuartzCore 1.6.3 (227.37) &lt;e323a5cc-499e-ca9e-9bc3-537231449caa&gt; /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore&lt;br /&gt;0x9736d000 - 0x97382fff&amp;nbsp; com.apple.ImageCapture 6.1 (6.1) &lt;b909459a-eac9-a7c8-f2a9-cd757cdb59e8&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture&lt;br /&gt;0x97383000 - 0x9745dfff&amp;nbsp; com.apple.DesktopServices 1.5.11 (1.5.11) &amp;lt;800F2040-9211-81A7-B438-7712BF51DEE3&amp;gt; /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv&lt;br /&gt;0x97477000 - 0x9747bff7&amp;nbsp; libGFXShared.dylib ??? (???) &amp;lt;801B2C2C-1692-475A-BAD6-99F85B6E7C25&amp;gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib&lt;br /&gt;0x9747c000 - 0x9748aff7&amp;nbsp; com.apple.opengl 1.6.13 (1.6.13) &amp;lt;025A905D-C1A3-B24A-1585-37C328D77148&amp;gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL&lt;br /&gt;0x974ec000 - 0x974f2fe7&amp;nbsp; com.apple.CommerceCore 1.0 (9.1) &amp;lt;521D067B-3BDA-D04E-E1FA-CFA526C87EB5&amp;gt; /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Frameworks/CommerceCore.framework/Versions/A/CommerceCore&lt;br /&gt;0x97801000 - 0x978aefe7&amp;nbsp; libobjc.A.dylib 227.0.0 (compatibility 1.0.0) &amp;lt;9F8413A6-736D-37D9-8EB3-7986D4699957&amp;gt; /usr/lib/libobjc.A.dylib&lt;br /&gt;0x978af000 - 0x978c3fe7&amp;nbsp; libbsm.0.dylib ??? (???) &amp;lt;821E415B-6C42-D359-78FF-E892792F8C52&amp;gt; /usr/lib/libbsm.0.dylib&lt;br /&gt;0x978c4000 - 0x978ceff7&amp;nbsp; com.apple.HelpData 2.0.5 (34.1.1) &lt;a9cf754f-b254-5d40-b8b5-f35414dfd875&gt; /System/Library/PrivateFrameworks/HelpData.framework/Versions/A/HelpData&lt;br /&gt;0x978cf000 - 0x978cfff7&amp;nbsp; com.apple.Accelerate 1.6 (Accelerate 1.6) &amp;lt;3891A689-4F38-FACD-38B2-4BF937DE30CF&amp;gt; /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate&lt;br /&gt;0x97b05000 - 0x97be5fe7&amp;nbsp; com.apple.vImage 4.1 (4.1) &lt;d029c515-08e1-93a6-3705-dd062a3a672c&gt; /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage&lt;br /&gt;0x97cb8000 - 0x97cbfff3&amp;nbsp; com.apple.print.framework.Print 6.1 (237.1) &lt;f5aae53d-5530-9004-a9e3-2c1690c5328e&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print&lt;br /&gt;0x98dcf000 - 0x98e12ff7&amp;nbsp; libGLU.dylib ??? (???) &lt;fb26dd53-03f4-a7d7-8804-ebc5b3b37fa3&gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib&lt;br /&gt;0x98e64000 - 0x98f58ff7&amp;nbsp; libiconv.2.dylib 7.0.0 (compatibility 7.0.0) &amp;lt;061ABF36-8BA9-79C1-6CE7-EC69A4998F51&amp;gt; /usr/lib/libiconv.2.dylib&lt;br /&gt;0x98f59000 - 0x9983cff7&amp;nbsp; com.apple.AppKit 6.6.8 (1038.36) &lt;a353465e-cfc9-cb75-949d-786f6f7732f6&gt; /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit&lt;br /&gt;0x99876000 - 0x998f6feb&amp;nbsp; com.apple.SearchKit 1.3.0 (1.3.0) &amp;lt;2F5DE102-A203-7905-7D12-FCBCF17BAEF8&amp;gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit&lt;br /&gt;0x998f7000 - 0x99916ff7&amp;nbsp; com.apple.CoreVideo 1.6.2 (45.6) &lt;eb53caa4-5ee2-c356-a954-5775f7ddd493&gt; /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo&lt;br /&gt;0x99917000 - 0x999b2fe7&amp;nbsp; com.apple.ApplicationServices.ATS 275.19 (???) &amp;lt;9FA31967-CF14-B033-EB8D-570561D12A13&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS&lt;br /&gt;0x99b36000 - 0x99b3aff7&amp;nbsp; IOSurface ??? (???) &lt;f9e6dfc1-8dd9-7c7e-ca85-b80735586e05&gt; /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface&lt;br /&gt;0x99c62000 - 0x99c62ff7&amp;nbsp; com.apple.Cocoa 6.6 (???) &lt;ea27b428-5904-b00b-397a-185588698bcc&gt; /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa&lt;br /&gt;0x99ceb000 - 0x99e6dfe7&amp;nbsp; libicucore.A.dylib 40.0.0 (compatibility 1.0.0) &lt;d5980817-6d19-9636-51c3-e82bae26776b&gt; /usr/lib/libicucore.A.dylib&lt;br /&gt;0x99e6e000 - 0x9a030feb&amp;nbsp; com.apple.ImageIO.framework 3.0.4 (3.0.4) &amp;lt;027F55DF-7E4E-2310-1536-3F470CB8847B&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO&lt;br /&gt;0x9a0e8000 - 0x9a0e8ff7&amp;nbsp; com.apple.Accelerate.vecLib 3.6 (vecLib 3.6) &lt;abf97da4-3bdf-6ffd-6239-b023ca1f7974&gt; /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib&lt;br /&gt;0x9a0e9000 - 0x9a40dfef&amp;nbsp; com.apple.HIToolbox 1.6.5 (???) &amp;lt;21164164-41CE-61DE-C567-32E89755CB34&amp;gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox&lt;br /&gt;0x9a40e000 - 0x9a448ff7&amp;nbsp; libcups.2.dylib 2.8.0 (compatibility 2.0.0) &amp;lt;6875335E-0993-0D77-4E80-41763A8477CF&amp;gt; /usr/lib/libcups.2.dylib&lt;br /&gt;0x9a449000 - 0x9a46dff7&amp;nbsp; libJPEG.dylib ??? (???) &lt;ea97dec5-6e16-b51c-bf55-f6e8d23526ad&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib&lt;br /&gt;0x9a4a8000 - 0x9a4aefff&amp;nbsp; com.apple.CommonPanels 1.2.4 (91) &amp;lt;2438AF5D-067B-B9FD-1248-2C9987F360BA&amp;gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels&lt;br /&gt;0x9a4af000 - 0x9a4baff7&amp;nbsp; libGL.dylib ??? (???) &amp;lt;3E34468F-E9A7-8EFB-FF66-5204BD5B4E21&amp;gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib&lt;br /&gt;0x9ab3c000 - 0x9ab57ff7&amp;nbsp; libPng.dylib ??? (???) &amp;lt;25DF2360-BFD3-0165-51AC-0BDAF7899DEC&amp;gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib&lt;br /&gt;0x9ab58000 - 0x9ab64ff7&amp;nbsp; libkxld.dylib ??? (???) &amp;lt;9A441C48-2D18-E716-5F38-CBEAE6A0BB3E&amp;gt; /usr/lib/system/libkxld.dylib&lt;br /&gt;0xffff0000 - 0xffff1fff&amp;nbsp; libSystem.B.dylib ??? (???) &amp;lt;2DCD13E3-1BD1-6F25-119A-3863A3848B90&amp;gt; /usr/lib/libSystem.B.dylib&lt;br /&gt;&lt;br /&gt;Model: MacBookPro6,1, BootROM MBP61.0057.B0C, 2 processors, Intel Core i7, 2.66 GHz, 8 GB, SMC 1.57f17&lt;br /&gt;Graphics: NVIDIA GeForce GT 330M, NVIDIA GeForce GT 330M, PCIe, 512 MB&lt;br /&gt;Graphics: Intel HD Graphics, Intel HD Graphics, Built-In, 288 MB&lt;br /&gt;Memory Module: global_name&lt;br /&gt;AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x93), Broadcom BCM43xx 1.0 (5.10.131.42.4)&lt;br /&gt;Bluetooth: Version 2.4.5f3, 2 service, 19 devices, 1 incoming serial ports&lt;br /&gt;Network Service: AirPort, AirPort, en1&lt;br /&gt;Serial ATA Device: APPLE SSD TS256B, 233.76 GB&lt;br /&gt;Serial ATA Device: MATSHITADVD-R&amp;nbsp;&amp;nbsp; UJ-898&lt;br /&gt;USB Device: Hub, 0x0424&amp;nbsp; (SMSC), 0x2514, 0xfa100000 / 2&lt;br /&gt;USB Device: Apple Internal Keyboard / Trackpad, 0x05ac&amp;nbsp; (Apple Inc.), 0x0236, 0xfa120000 / 4&lt;br /&gt;USB Device: BRCM2070 Hub, 0x0a5c&amp;nbsp; (Broadcom Corp.), 0x4500, 0xfa110000 / 3&lt;br /&gt;USB Device: Bluetooth USB Host Controller, 0x05ac&amp;nbsp; (Apple Inc.), 0x8218, 0xfa113000 / 5&lt;br /&gt;USB Device: Hub, 0x0424&amp;nbsp; (SMSC), 0x2514, 0xfd100000 / 2&lt;br /&gt;USB Device: IR Receiver, 0x05ac&amp;nbsp; (Apple Inc.), 0x8242, 0xfd120000 / 4&lt;br /&gt;USB Device: Built-in iSight, 0x05ac&amp;nbsp; (Apple Inc.), 0x8507, 0xfd110000 / 3&lt;br /&gt;&lt;/ea97dec5-6e16-b51c-bf55-f6e8d23526ad&gt;&lt;/abf97da4-3bdf-6ffd-6239-b023ca1f7974&gt;&lt;/d5980817-6d19-9636-51c3-e82bae26776b&gt;&lt;/ea27b428-5904-b00b-397a-185588698bcc&gt;&lt;/f9e6dfc1-8dd9-7c7e-ca85-b80735586e05&gt;&lt;/eb53caa4-5ee2-c356-a954-5775f7ddd493&gt;&lt;/a353465e-cfc9-cb75-949d-786f6f7732f6&gt;&lt;/fb26dd53-03f4-a7d7-8804-ebc5b3b37fa3&gt;&lt;/f5aae53d-5530-9004-a9e3-2c1690c5328e&gt;&lt;/d029c515-08e1-93a6-3705-dd062a3a672c&gt;&lt;/a9cf754f-b254-5d40-b8b5-f35414dfd875&gt;&lt;/b909459a-eac9-a7c8-f2a9-cd757cdb59e8&gt;&lt;/e323a5cc-499e-ca9e-9bc3-537231449caa&gt;&lt;/bf7ff2f6-5fd3-d78f-77bc-9e2cb2a5e309&gt;&lt;/bfdda394-0f01-a3a3-a226-ed3a45975a56&gt;&lt;/c75f921c-f027-6372-a0a1-edb8a6234331&gt;&lt;/b99607fc-5646-32c8-2c16-afb5ea9097c2&gt;&lt;/c96c8a99-a40c-8b9c-1fba-a0f46ac92f17&gt;&lt;/f88c95cd-1264-782d-a1f5-204739847e93&gt;&lt;/c4fb303a-db4d-f9e8-181c-129585e59603&gt;&lt;/ff4dc8b6-0ab0-dee8-ada8-7b57645a1f36&gt;&lt;/e9c40767-da6a-6ccb-8b00-2d5706753000&gt;&lt;/dedcd006-389f-967f-3405-edf541f406d7&gt;&lt;/d57d3834-9395-fd58-092a-49b3708e8c89&gt;&lt;/ad45365e-a3ea-62b8-a288-1e13dba22b1b&gt;&lt;/f7416a84-e91c-5bdc-10e3-4940eb7ae5c9&gt;&lt;/bf9673d5-2419-7120-26a3-83d264c75222&gt;&lt;/fc01bfc4-04db-96f3-2412-a86cc4f94cb2&gt;&lt;/ca979eac-9537-43b6-cd69-c144acb75e09&gt;&lt;/bfe377a4-c830-3eca-e69f-8a8094cda0a6&gt;&lt;/b0514fa9-7cae-ad94-93ca-7b2a2c5f7b8a&gt;&lt;/f36db665-a88b-7f5b-6244-6a2e7ffff668&gt;&lt;/f58bdfc1-7408-53c8-0b08-48ba2f25ca43&gt;&lt;/c8744ea3-0ab7-cd03-e639-c4f2b910be5d&gt;&lt;/fa2785a4-bb69-dcb4-3ba3-7c89a82cab41&gt;&lt;/af94d180-5e0f-10df-0cb2-fd8edb110fa2&gt;&lt;/b4104b80-1cb3-191c-afd3-697843c6bcff&gt;&lt;/d1cf5881-0af7-d164-4156-9e9067b7fa37&gt;&lt;/ddc9c397-c35f-8d7a-bb24-3d1b42fa5fab&gt;&lt;/fb38d6fa-1ec8-88c6-dbc0-d2051763c8cd&gt;&lt;/aacc86c0-86b4-b1a7-003f-2a0af68973a2&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/3112877820305970876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/3112877820305970876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/3112877820305970876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/3112877820305970876'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2011/11/debugging-titanium-problem.html' title='debugging a Titanium problem'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-7565759051527739499</id><published>2011-11-18T08:47:00.001-08:00</published><updated>2012-05-26T13:01:01.056-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="event report"/><category scheme="http://www.blogger.com/atom/ns#" term="SLC Tech Breakfast"/><title type='text'>Last 2 SLC Tech Breakfasts</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.amazon.com/Selfish-Reasons-Have-More-Kids/dp/046501867X&quot;&gt;&quot;Selfish Reasons to Have More Kids&quot;&lt;/a&gt; (Trent) surveys twin-adoption studies and asserts that nature surpasses nurture in most long-term qualities of life&lt;br /&gt;
&lt;a href=&quot;http://www.econtalk.org/&quot;&gt;EconTalk podcast&lt;/a&gt; interviewed that author, and other researchers to get the economists view&lt;br /&gt;
&lt;br /&gt;
Henry Shrapnel invented bombs (Josh)&lt;br /&gt;
&lt;br /&gt;
Recent Ping Identity Summit (Josh, from Rearden Commerce)&lt;br /&gt;
- OpenSSL, Josso&lt;br /&gt;
- potential for OpenID providers to manage the user&#39;s identity&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://accountchooser.com/&quot;&gt;AccountChooser.com&lt;/a&gt; is Google&#39;s widget for easy site authentication&lt;br /&gt;
&lt;br /&gt;
&quot;Hitchhiker&#39;s Guide to The Galaxy&quot;, where engineered livestock has desire to be eaten&lt;br /&gt;
&lt;br /&gt;
SOPA is yet another piece of legislation to empower the RIAA to shut down websites&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://cyber.law.harvard.edu/projectvrm/Main_Page&quot;&gt;Project VRM&lt;/a&gt; by Doc Searles aims to build consumer-oriented identity management&lt;br /&gt;
Other consumer-centered projects (which aggregate demand): &lt;a href=&quot;http://google.com/offers&quot;&gt;Google Offers&lt;/a&gt;, &lt;a href=&quot;http://groupon.com/&quot;&gt;Groupon.com&lt;/a&gt;, &lt;a href=&quot;http://homerun.com/&quot;&gt;HomeRun.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Interesting projects from Rearden Commerce: enterprises typically use SAML, and there are problems trying to pass customers between sites who shouldn&#39;t have info from each other&lt;br /&gt;
&lt;br /&gt;
Wouldn&#39;t it be nice to have things centralized!&amp;nbsp; (But that&#39;s what we&#39;re avoiding.)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.internetidentityworkshop.com/&quot;&gt;Internet Identity Workshop&lt;/a&gt; is an influential conference in the identity field&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
_____________________________________________________________&lt;br /&gt;
These notes are from last month:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ryan: using git submodules (like svn externals) vs subtree merges&lt;br /&gt;
Linux started with BitKeeper, then wrote his own git&lt;br /&gt;
&lt;a href=&quot;http://xkcd.com/963/&quot;&gt;http://xkcd.com/963/&lt;/a&gt;&lt;br /&gt;
The daily WTF&lt;br /&gt;
&lt;br /&gt;
The best way to run a company is to not only encourage loyalty and&lt;br /&gt;
staying with the company but also encourage people to grow and&lt;br /&gt;
possibly leave.&lt;br /&gt;
&lt;br /&gt;
Ryan: open-source RockBox project, with great audio features for old&lt;br /&gt;
iPods and trying to migrate it to modern players (iPhone, Android)&lt;br /&gt;
&lt;br /&gt;
Seniors: won&#39;t use a computer, but will use email on their phone&lt;br /&gt;
&#39;cause it&#39;s easier; there&#39;s a service that gives you a printer connected&lt;br /&gt;
to the network and downloads and prints emails from some account</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/7565759051527739499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/7565759051527739499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/7565759051527739499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/7565759051527739499'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2011/11/last-2-slc-tech-breakfasts.html' title='Last 2 SLC Tech Breakfasts'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-723369470206761737</id><published>2011-09-21T17:43:00.000-07:00</published><updated>2011-09-21T17:44:22.135-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UNIX shell"/><title type='text'>Using rsync when scp keeps failing</title><content type='html'>&lt;br /&gt;
Sometimes I&#39;m trying to scp a file from a less-than-reliable server that drops my connection so that I can never get the whole thing.&amp;nbsp; Here is Kem&#39;s answer to that problem:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;xmp&gt;
#!/usr/bin/env ruby

while true do
  puts `rsync -av --progress --inplace --rsh=&#39;ssh&#39; --bwlimit=100 #{ARGV[0]} #{ARGV[1]}`
  result = $?
  if (result.exitstatus == 0)
    puts &quot;file copy done, exiting&quot;
    break;
  end
  puts &quot;retrying again -- result: #{result}&quot;
end
&lt;/xmp&gt;


</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/723369470206761737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/723369470206761737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/723369470206761737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/723369470206761737'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2011/09/using-rsync-when-scp-keeps-failing.html' title='Using rsync when scp keeps failing'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-5379749707733534270</id><published>2011-09-13T10:09:00.000-07:00</published><updated>2011-09-13T10:09:35.613-07:00</updated><title type='text'>SSL installation checkers</title><content type='html'>Here are the two SSL checkers recommended by Kem &amp;amp; Makani:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;http://www.digicert.com/help/&lt;/li&gt;
&lt;li&gt;http://www.sslshopper.com/ssl-checker.html (because Makani says this one found a problem the other one missed)&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/5379749707733534270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/5379749707733534270' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/5379749707733534270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/5379749707733534270'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2011/09/ssl-installation-checkers.html' title='SSL installation checkers'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-1052363950640394431</id><published>2011-08-19T09:56:00.001-07:00</published><updated>2012-05-26T13:02:06.421-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="event report"/><category scheme="http://www.blogger.com/atom/ns#" term="SLC Tech Breakfast"/><title type='text'>Today&#39;s SLC Tech Breakfast</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
Dan: Where is virtual reality?&lt;br /&gt;
&lt;br /&gt;
Video search&lt;br /&gt;
One big part is speech recognition Sphinx (CMU) http://cmusphinx.sourceforge.net/&lt;br /&gt;
Why store text? &amp;nbsp;There are good reasons (Josh and Matt are doing a project on all this)&lt;br /&gt;
&lt;br /&gt;
Augmented reality&lt;br /&gt;
- SixthSense from MIT http://www.pranavmistry.com/projects/sixthsense/&lt;br /&gt;
- Dan recommends Robert Heinlein - Double Star&lt;br /&gt;
&lt;br /&gt;
Phones seem to be changing how we do things, eg. calling rather than working independently&lt;br /&gt;
&lt;br /&gt;
The G2X phone is fabulous - Matt&lt;br /&gt;
&lt;br /&gt;
There are headphones that stick near the ear so you can feel vibrations (without bugging someone).&lt;br /&gt;
&lt;br /&gt;
There&#39;s a higher ratio of female engineers in India vs America&lt;br /&gt;
&lt;br /&gt;
Other events&lt;br /&gt;
- Utah Code Camp http://pcamputah.org/ (though it may just be more ads; not a good impression of Newmont by people)&lt;br /&gt;
- Product Camp Utah http://pcamputah.org/&lt;br /&gt;
- Roots Tech http://rootstech.familysearch.org/&lt;br /&gt;
- UTOS Project Day http://project-day.utos.org/&lt;br /&gt;
&lt;br /&gt;
Chromebook is out, about $500&lt;br /&gt;
Google is offering it for about $28/chromebook/year for organizations ($20 for schools)&lt;br /&gt;
&lt;br /&gt;
Google says Javascript is not the bottleneck any more&lt;br /&gt;
- Trent is using knockout.js (also looked at backbone.js)&lt;br /&gt;
- Matt uses GXT (GWT version of ext.js), though the rendered code can be confusing (with synchronous events)&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/1052363950640394431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/1052363950640394431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/1052363950640394431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/1052363950640394431'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2011/08/todays-slc-tech-breakfast.html' title='Today&#39;s SLC Tech Breakfast'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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-5074978658071058831.post-6947952393578550759</id><published>2011-08-17T19:36:00.000-07:00</published><updated>2011-08-17T19:36:31.017-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UNIX shell"/><title type='text'>concatenating lines in a pipe</title><content type='html'>&lt;br /&gt;
I often have to munge multiple lines together, and I finally found a good way:&lt;br /&gt;
&lt;br /&gt;
echo -e &quot;1\n2&quot; | awk &#39;{ ORS=&quot;+&quot;; print; }&#39;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Note that this adds the separator on the end, so I have to &amp;nbsp;handle that:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;echo -e &quot;1\n2&quot; | awk &#39;{ ORS=&quot;+&quot;; print; }&#39; | awk &#39;{ print $1 &quot;0&quot; }&#39; | bc&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tutorialsandtrivia.blogspot.com/feeds/6947952393578550759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5074978658071058831/6947952393578550759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/6947952393578550759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5074978658071058831/posts/default/6947952393578550759'/><link rel='alternate' type='text/html' href='http://tutorialsandtrivia.blogspot.com/2011/08/concatenating-lines-in-pipe.html' title='concatenating lines in a pipe'/><author><name>Trent</name><uri>http://www.blogger.com/profile/14351761884225439912</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></feed>