tag:blogger.com,1999:blog-116055992024-03-13T16:52:20.421-07:00Lee & Cathy JonesKeeping up with the Joneses! Lee & Cathy Jones, the world's cutest service dog, and three cuddly cats.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.comBlogger683125tag:blogger.com,1999:blog-11605599.post-21736354191658364732021-02-05T09:33:00.001-08:002021-02-05T09:33:31.348-08:00Recipe: Salmon Pattie (Gluten Free)<h2 style="text-align: left;">Salmon Patties (Gluten Free)</h2><p>Because Cathy has Celiac disease (an an immune disease in which people can't eat gluten, a protein found in wheat, barley, and rye), we make our own recipes for our favorites. And because scraps of paper get stained, damaged, or lost, I sometimes write up a blog post for our recipes.</p><p><i>Preparation time:</i> 15 minutes<br /><i>Cook time: </i>20 minutes<br /><i>Makes: </i>approximately 12 patties</p><h3 style="text-align: left;">Ingredients:</h3><p></p><ul style="text-align: left;"><li>15 oz canned salmon with liquid</li><li>¼ cup gluten free flour</li><li>½ cup stoneground cornmeal</li><li>⅛ cup ground flax seed</li><li>½ tablespoon lemon & pepper seasoning</li><li>½ cup chopped onions</li><li>¼ cup chopped bell pepper</li><li>2 eggs</li><li>1 tablespoon lemon juice</li><li>1 tablespoon Tabasco sauce (original)</li><li>1 bottle of grapeseed oil (quantity depends on your pan)</li></ul><p></p><h3 style="text-align: left;">Cooking Directions:</h3><ol style="text-align: left;"><li>In a large bowl, flake salmon, mashing bones well, keeping the liquid for moisture.</li><li>In a small bowl, combine flour, cornmeal, flax seeds, and lemon pepper. Mix in onions and bell pepper.</li><li>Stir in contents of the small bowl into the flaked salmon. Stir in the eggs, lemon juice, and Tabasco sauce.</li><li>Form salmon mixture into patties approximately ¼ cup each. The thicker the patties, the longer you will need to cook them.</li><li>Brown patties in oil over medium heat in a shallow pool of oil. Use enough oil to reach almost half-way up the patties. Cook for about 15 minutes, flipping over once.</li></ol><div><h4 style="text-align: left;">Nutritional Information for One Serving: who knows?</h4><h4 style="text-align: left;">Comments on Ingredients:</h4><p>For flour, we use <a href="https://shop.kingarthurbaking.com/items/gluten-free-measure-for-measure-flour-1-lb" target="_blank">King Arthur Gluten-Free Measure for Measure Flour</a><br />For cornmeal, we use <a href="https://www.bobsredmill.com/shop/gluten-free/gluten-free-medium-cornmeal.html" target="_blank">Bob's Red Mill Gluten Free Medium Cornmeal</a></p><p><br /></p></div><div id="hc_extension_bkgnd" style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); display: none; inset: 0px; position: fixed; z-index: -1999999999;"></div><span hidden="" id="hc_extension_svg_filters"><svg version="1.1" xmlns="http://www.w3.org/2000/svg"><defs><filter height="99999" id="hc_extension_off" width="99999" x="0" y="0"><fecomponenttransfer><fefuncr tablevalues="0 1" type="table"></fefuncr><fefuncg tablevalues="0 1" type="table"></fefuncg><fefuncb tablevalues="0 1" type="table"></fefuncb></fecomponenttransfer></filter><filter height="99999" id="hc_extension_highcontrast" width="99999" x="0" y="0"><fecomponenttransfer><fefuncr exponent="3.0" type="gamma"></fefuncr><fefuncg exponent="3.0" type="gamma"></fefuncg><fefuncb exponent="3.0" type="gamma"></fefuncb></fecomponenttransfer></filter><filter height="99999" id="hc_extension_highcontrast_back" width="99999" x="0" y="0"><fecomponenttransfer><fefuncr exponent="0.33" type="gamma"></fefuncr><fefuncg exponent="0.33" type="gamma"></fefuncg><fefuncb exponent="0.33" type="gamma"></fefuncb></fecomponenttransfer></filter><filter height="99999" id="hc_extension_grayscale" width="99999" x="0" y="0"><fecolormatrix type="matrix" values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"></fecolormatrix><fecomponenttransfer><fefuncr exponent="3" type="gamma"></fefuncr><fefuncg exponent="3" type="gamma"></fefuncg><fefuncb exponent="3" type="gamma"></fefuncb></fecomponenttransfer></filter><filter height="99999" id="hc_extension_grayscale_back" width="99999" x="0" y="0"><fecomponenttransfer><fefuncr exponent="0.33" type="gamma"></fefuncr><fefuncg exponent="0.33" type="gamma"></fefuncg><fefuncb exponent="0.33" type="gamma"></fefuncb></fecomponenttransfer></filter><filter height="99999" id="hc_extension_invert" width="99999" x="0" y="0"><fecomponenttransfer><fefuncr amplitude="-1" exponent="3" offset="1" type="gamma"></fefuncr><fefuncg amplitude="-1" exponent="3" offset="1" type="gamma"></fefuncg><fefuncb amplitude="-1" exponent="3" offset="1" type="gamma"></fefuncb></fecomponenttransfer></filter><filter height="99999" id="hc_extension_invert_back" width="99999" x="0" y="0"><fecomponenttransfer><fefuncr tablevalues="1 0" type="table"></fefuncr><fefuncg tablevalues="1 0" type="table"></fefuncg><fefuncb tablevalues="1 0" type="table"></fefuncb></fecomponenttransfer><fecomponenttransfer><fefuncr exponent="1.7" type="gamma"></fefuncr><fefuncg exponent="1.7" type="gamma"></fefuncg><fefuncb exponent="1.7" type="gamma"></fefuncb></fecomponenttransfer></filter><filter height="99999" id="hc_extension_invert_grayscale" width="99999" x="0" y="0"><fecolormatrix type="matrix" values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"></fecolormatrix><fecomponenttransfer><fefuncr amplitude="-1" exponent="3" offset="1" type="gamma"></fefuncr><fefuncg amplitude="-1" exponent="3" offset="1" type="gamma"></fefuncg><fefuncb amplitude="-1" exponent="3" offset="1" type="gamma"></fefuncb></fecomponenttransfer></filter><filter height="99999" id="hc_extension_yellow_on_black" width="99999" x="0" y="0"><fecomponenttransfer><fefuncr amplitude="-1" exponent="3" offset="1" type="gamma"></fefuncr><fefuncg amplitude="-1" exponent="3" offset="1" type="gamma"></fefuncg><fefuncb amplitude="-1" exponent="3" offset="1" type="gamma"></fefuncb></fecomponenttransfer><fecolormatrix type="matrix" values="0.3 0.5 0.2 0 0 0.3 0.5 0.2 0 0 0 0 0 0 0 0 0 0 1 0"></fecolormatrix></filter><filter height="99999" id="hc_extension_yellow_on_black_back" width="99999" x="0" y="0"><fecomponenttransfer><fefuncr tablevalues="1 0" type="table"></fefuncr><fefuncg tablevalues="1 0" type="table"></fefuncg><fefuncb tablevalues="1 0" type="table"></fefuncb></fecomponenttransfer><fecomponenttransfer><fefuncr exponent="0.33" type="gamma"></fefuncr><fefuncg exponent="0.33" type="gamma"></fefuncg><fefuncb exponent="0.33" type="gamma"></fefuncb></fecomponenttransfer></filter></defs></svg></span>Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0tag:blogger.com,1999:blog-11605599.post-34986480247101669842019-10-28T16:03:00.004-07:002019-10-28T16:08:15.002-07:00Fixing Adobe Creative Cloud Desktop missing Apps tab in Windows (ServiceConfig.xml)I am faced with odd problems due to managing an enterprise higher education environment with third-party software that may or may not behave. One recurring culprit is Adobe Creative Cloud.<br />
<br />
On the macOS side we use Jamf, and on the Windows side we use <abbr title="Microsoft System Center Configuration Manager">SCCM</abbr>. If you deploy Adobe Creative Cloud Desktop App, then you're familiar with the "Apps Panel" that allows users to self-service install applications like Photoshop.<br />
<br />
As noted by <a href="https://macmule.com/2018/12/13/customising-the-adobe-creative-cloud-desktop-app/" target="_blank">many</a> <a href="https://help.utk.edu/kb/index.php?func=show&e=2671" target="_blank">other</a> <a href="https://casit.uoregon.edu/faq/adobe/apps-tab-missing-from-the-creative-cloud-desktop-app" target="_blank">institutions</a>, the configuration of the Adobe CC is contained in ServiceConfig.xml located either <span style="font-family: "courier new" , "courier" , monospace;">/Library/Application Support/Adobe/OOBE/Configs/ServiceConfig.xml</span> on macOS or <span style="font-family: "courier new" , "courier" , monospace;">C:\Program Files (x86)\Common Files\Adobe\OOBE\Configs\ServiceConfig.xml</span> on Windows. If you look in the XML file, you'll see an AppsPanel tag set to "true".<br />
<br />
Adobe CC has the annoying habit of replacing that "true" tag with "false" and causing the installation function to fail with the heart-warming message that suggests your IT Administrator is preventing you from installing the software you need to do your job. When we called Adobe, they implied it wasn't that big of a deal because a) they only get one call a day from someone on this, and b) we could "just redeploy a dummy package" to turn it back on. <b>*argh*</b><br />
<br />
While we haven't figured out (yet) how to redeploy easily on the macOS side via Jamf, I do have a solution for the Windows side. A combination of a GPO, WMI Filter, and PowerShell script, made the problem go away, and we tell users to do the familiar "turn it off and turn it back on" routine.<br />
<br />
Here's the logic:<br />
<br />
<ul>
<li>The WMI Filter looks for the existence of the file.</li>
<li>The PowerShell script looks for "false" in the file's XML tag and replaces it with "true".</li>
<li>The GPO runs the PowerShell script at startup if the WMI Filter applies.</li>
</ul>
<br />
<br />
<u>Here's the WMI Filter:</u><br />
Namespace: <span style="font-family: "courier new" , "courier" , monospace;">root\CIMv2</span><br />
Query: <span style="font-family: "courier new" , "courier" , monospace;">Select * From CIM_Datafile Where Name = 'C:\\Program Files (x86)\\Common Files\\Adobe\\OOBE\\Configs\\ServiceConfig.xml'</span><br />
<u><br /></u>
<u>Here's the PowerShell script:</u><br />
<span style="font-family: "courier new" , "courier" , monospace;">#Adobe Creative Cloud OOBE config file update, in case self-service install fails (again)</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">#10/23/2019 Lee Jones</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">#XML file to check, assume file exist</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">$ChkXML = "C:\Program Files (x86)\Common Files\Adobe\OOBE\Configs\ServiceConfig.xml"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">#variable for file save</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">$update = "false"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">$comply = "false"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">#typecast variable for XML content</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">[xml]$ccxml = Get-Content $ChkXML</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">#check for "false" and set to "true"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">if ($ccxml.config.panel.visible -like "false")</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">{</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="white-space: pre;"> </span>$ccxml.config.panel.visible = "true"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="white-space: pre;"> </span>$update = "true"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="white-space: pre;"> </span>}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">if ($ccxml.config.feature.enabled -like "false")</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">{</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="white-space: pre;"> </span>$ccxml.config.feature.enabled = "true"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="white-space: pre;"> </span>$update = "true"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="white-space: pre;"> </span>}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">#if something changed, save the file</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">if ($update -like "true") {$ccxml.Save($ChkXML)}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">#typecast variable for XML content</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">[xml]$ccxml = Get-Content $ChkXML</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">if (($ccxml.config.panel.visible -like "true") -and ($ccxml.config.feature.enabled -like "true"))</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">{</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="white-space: pre;"> </span>$comply = "true"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">$comply</span><br />
<div>
<br /></div>
<div>
<u>The GPO</u> should just launch this as a <span style="font-family: "courier new" , "courier" , monospace;">Computer Config > Policies > Windows Settings > Scripts > Startup Script</span> to update the file before the user even tries to launch Adobe CC Desktop.<br />
<br />
If you are interested in all the possible tags in the XML file, check out <a href="https://soundmacguy.wordpress.com/2019/05/31/customising-the-creative-cloud-desktop-app-what-adobe-doesnt-tell-you/" target="_blank">this helpful post</a>.</div>
Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0tag:blogger.com,1999:blog-11605599.post-17981870062287871522016-10-10T15:16:00.002-07:002016-10-10T15:16:19.468-07:00Managing Java runtime installs with MSI product ID's in SCCMMy blog is a bit bipolar - happy posts about family or cats, then technical stuff. Oh well.<br />
<br />
Anyway, perhaps you, like me, have to manage a large population of computers with Java installed. My campus was version locked to Java 7 update 67 for a long time, and now we're able to move on to current versions. By and large, I would determine what Java version is installed on a given computer through WMIC or SCCM queries.<br />
<br />
For a SCCM collection, the most accurate way to filter for a particular Java version appears to be the MSI Product Code GUID string. There's a pattern, and I figured I would share it here.<br />
<br />
So, here's a typical MSI Product Code, in this case for Java 8 Update 77 x86<br />
{26A24AE4-039D-4CA4-87B4-2F83218077F0}<br />
<br />
And, here's a typical MSI Product Code, in this case for Java 8 Update 60 x64<br />
{26A24AE4-039D-4CA4-87B4-2F86418060F0}<br />
<br />
Here's the pattern, with the platform, major version number and update number:<br />
<span style="font-family: "courier new" , "courier" , monospace;">{26A24AE4-039D-4CA4-87B4-2F8<span style="background-color: red;">xx</span>1<span style="background-color: cyan;">y</span><span style="background-color: magenta;">zzz</span>F0}</span><br />
<br />
I assume you see it, the XX being either 32 or 64 (bit), y being 7 or 8 (major version), and zzz being the update number (077 for update 77).<br />
<br />
One tip, if you are making a collection in SCCM for Java 8u77, you'll need two query rules for your membership, one for 32bit and one for 64bit.<br />
<br />
Hope that helps.... I know I'll probably look this post back up if I can't find the Java MSI Product Code in a few months.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0tag:blogger.com,1999:blog-11605599.post-88662016222698661482016-09-21T08:05:00.004-07:002016-09-21T08:06:28.248-07:00Saying goodbye to Malachi, our beautiful tabbyI've always dreaded the day when Malachi would be leaving us. I will be taking her to the vet to euthanize her today. It breaks my heart.<br />
<br />
This is how I remember Malachi best, she loves laying on my shoulder:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://photos1.blogger.com/img/257/4428/640/2004-04-14%20%4022-16-141.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://photos1.blogger.com/img/257/4428/640/2004-04-14%20%4022-16-141.jpg" height="239" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-U4FZpOmH2Q4/V-KgWvOo7WI/AAAAAAAAS0k/sJmFEguMiGoC5Xu_W7NmOBBoVvgCth_DgCLcB/s1600/Malachi%2B02-19-2007%2B21-02-03.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://4.bp.blogspot.com/-U4FZpOmH2Q4/V-KgWvOo7WI/AAAAAAAAS0k/sJmFEguMiGoC5Xu_W7NmOBBoVvgCth_DgCLcB/s320/Malachi%2B02-19-2007%2B21-02-03.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://photos1.blogger.com/blogger/1503/811/1600/IMGP2322.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://photos1.blogger.com/blogger/1503/811/1600/IMGP2322.jpg" height="240" width="320" /></a></div>
<br />
<span id="goog_1746422056"></span>
Malachi was born on March 20, 2003. She's been with Cathy and I since she was an itty-bitty kitten. We named her Malachi Obediah Plume-Jones, then we realized that she's a girl. The name stuck anyway.<br />
<br />
We kept Malachi from the litter of bottle baby kittens because she was more fragile than the others. Cathy had a sense that Malachi would not get a full life with another family.<br />
<br />
Malachi has always been "my pretty girl". A year later, when we got Fanny Mae, they became almost inseparable, and Malachi was "pretty girl" and Fanny was "pretty paw".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://photos1.blogger.com/blogger/1503/811/1600/IMGP2350.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://photos1.blogger.com/blogger/1503/811/1600/IMGP2350.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Malachi grooming Fanny</div>
<br />
Fanny was returned to her Creator in 2008. Then, in 2010, Malachi was diagnosed with Feline Stomatitis, a gum disease that causes pain and inflammation. After trying a few things, the vet found that periodic Depo-Medrol injections worked to keep things in check. After that, we knew we were buying time.<br />
<br />
That time has finally come. Malachi is still my beautiful girl, but the pain is nearly constant now, and I feel selfish asking her to keep fighting. It is time to say goodbye.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0tag:blogger.com,1999:blog-11605599.post-89281505774372575082015-08-12T18:45:00.001-07:002015-08-12T22:19:20.294-07:00Updating Adobe Flash Player with batch files and SCCM 2012<div class="tr_bq">
I've been faced with updating a lot of (to me) computers with the <a href="http://www.adobe.com/software/flash/about/" target="_blank">current version of Adobe Flash Player</a> due to the <a href="https://helpx.adobe.com/security/products/flash-player/apsb15-16.html" target="_blank">recent vulnerabilities in Flash</a>. I haven't found a good way to be notified of a new release, so my browser is now set to open a tab with the version of Flash available.</div>
<br>
Of the over 4000 Windows computers I am attempting to keep updated, over 90% have Adobe Flash Player installed, with either the ActiveX or NPAPI version installed (or both). I'm using SCCM, so I deploy Flash Player as a MSI package. And it seemed like I would deploy an update, then a new vulnerability and update would crop up, so a new deployment/upgrade cycle began again. I'm not fond of this Flash Update Ouroboros so I wrote a script to simplify things.<br>
<br>
First, the script for ActiveX:<br>
<br>
<pre>@echo off
REM Run via SCCM against collection of devices with old Flash Player ActiveX
:VERSION
REM set current Flash version
SET CurrentVersion=18.0.0.232
SET CurrentMajorVer=18
:GRACEFUL_UNINSTALL
REM attempt to gracefully uninstall Flash
wmic product where "name like 'Adobe Flash Player%%ActiveX' AND NOT version like '%CurrentVersion%'" call uninstall
:INSTALL_CURRENT_FLASH
REM install current Flash from distribution point
%Comspec% /c msiexec /i "\\server\software\FlashPlayer\%CurrentVersion%\install_flash_player_%CurrentMajorVer%_active_x.msi" /qn
:END
</pre>
<br>
Next, the script for NPAPI Plugin:<br>
<br>
<pre>@echo off
REM Run via SCCM against collection of devices with old Flash Player Plugin
:VERSION
REM set current Flash version
SET CurrentVersion=18.0.0.232
SET CurrentMajorVer=18
:GRACEFUL_UNINSTALL
REM attempt to gracefully uninstall Flash (old versions "Plugin" new ones "NPAPI")
wmic product where "name like 'Adobe Flash Player%%Plugin' AND NOT version like '%CurrentVersion%'" call uninstall
wmic product where "name like 'Adobe Flash Player%%NPAPI' AND NOT version like '%CurrentVersion%'" call uninstall
:INSTALL_CURRENT_FLASH
REM install current Flash from distribution point
%Comspec% /c msiexec /i "\\server\software\FlashPlayer\%CurrentVersion%\install_flash_player_%CurrentMajorVer%_plugin.msi" /qn
:END
</pre>
<br>
The only real difference is the Uninstall and Install section to reflect ActiveX vs Plugin. The script uses WMIC to look for any Flash Player that is installed but not current, uninstalls it, then installs the current version based on the variables set in the script. Assuming you create the folder with the version number and the current packages, the script can be edited and used to update computers quickly.<br>
<br>
On a higher level, I'm using System Center Configuration Manager to limit my collection of devices so I am only running the updates on the computers that need it (that would be an entire other post). While I think that you could just use a GPO to push this, be aware that <b><i>all </i></b>systems would end up with Flash Player installed even if it didn't have it installed before. By targeting only the systems that already have Flash Player, I am updating computers but not increasing my vulnerability surface area.<br>
<br>
Naturally, I considered installing an update server, but I haven't figured out Adobe's documentation on this. For now, this batch file does the job for me.<br>
<br>
To update your packages and script when Adobe releases a new Flash Player,<br>
<br>
<ol>
<li>create a new folder named after the current version on a distribution server (i.e. <span style="font-family: Courier New, Courier, monospace;">\\server\software\FlashPlayer\<b>18.0.0.999</b></span>)</li>
<li>download the Adobe Flash Player distribution packages (<a href="http://www.adobe.com/products/players/flash-player-distribution.html" target="_blank">sign up here</a>) via your custom URL obtained from your Adobe Distribution Agreement email and put them in the folder you just created, and</li>
<li>update the "CurrentVersion" and "CurrentMajorVer" variables in the batch files, then</li>
<li>deploy.</li>
</ol>
<div>
Enjoy. The lack of additional explanation is mainly due to my intention to remind Future Me what I was doing when I forget my methodology and to give other IT guys a starting point for ideas on updating Flash Player <i>en masse</i>.</div>
Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com1tag:blogger.com,1999:blog-11605599.post-55253441953241191282014-04-08T16:13:00.002-07:002014-04-28T12:50:51.168-07:00XP End-Of-Life, What It Means and How It Affects You<b>UPDATE</b>: 04/28/2014 - if you haven't yet, stop using Internet Explorer (IE) immediately. There's a serious security flaw in IE and XP computers <b>will not be patched</b>. If you want the Microsoft mumbo jumbo, <a href="http://blogs.technet.com/b/msrc/archive/2014/04/26/microsoft-releases-security-advisory.aspx">read this</a> and <a href="https://technet.microsoft.com/en-US/library/security/2963983">this</a>.<br />
<br />
People still running Windows XP and have Automatic Updates turned on will receive the warning that XP is no longer supported. I've gotten several messages from people expressing varying degrees of concern.<br />
<br />
<h2>
What It Mean that XP has reach End of Life (EOL)</h2>
<ul>
<li>If you are still running Windows XP, it basically means it is really time to upgrade if you have the funds. XP has been around for 12 years, so you're not getting the best of the Internet any more.</li>
<li>It means Microsoft will no longer provide security updates or technical support for Windows XP. So, if there is a security concern (like the recent <a href="http://heartbleed.com/">OpenSSL Heartbleed Bug</a>), there's no updates to protect you from hackers (Oh Noes!).</li>
<li>It means no more updates to Internet Explorer, Microsoft Security Essentials and likely other applications like web browsers. That may very well mean that web sites like Facebook just won't look right down the road on your computer.</li>
</ul>
<h2>
What It DOESN'T Mean</h2>
<div>
<ul>
<li>Your XP computer is not going to stop working. It'll keep doing the same things it was doing last week.</li>
<li>Your XP computer is not going to suddenly get hacked. You're no more vulnerable than last week.</li>
</ul>
<h2>
An Analogy</h2>
</div>
<div>
Let's say you have an old car named Windows XP. I don't mean a 1965 Ford Mustang, more like a 1972 Ford Pinto. XP's End-Of-Life is like Ford declaring that they will no longer manufacture parts, honor any safety recalls, or for that matter service them at dealerships. You can still put gas in it, drive it around, do oil changes, etc. Your Pinto will still keep running, but when it breaks, that's the end. Windows XP is like that Pinto, it'll keep driving, but you can't find parts.</div>
<h2>
So, What's the Bottom Line?</h2>
<div>
Seriously, time for a new computer. Or, get a nice tablet and you may find that it's an adequate replacement for your old XP computer. But don't freak out.<br />
<br />
If you must keep using your XP computer, get a different browser and keep your antivirus software up-to-date. I would recommend you stop using Internet Explorer and use <a href="https://www.google.com/intl/en/chrome/browser/">Google Chrome</a> instead. Google has promised to <a href="http://chrome.blogspot.com/2013/10/extending-chrome-support-for-xp-users.html">keep Chrome running on XP</a> until April 2015.</div>
Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0tag:blogger.com,1999:blog-11605599.post-64037386543905255022014-03-25T17:41:00.000-07:002014-03-25T17:41:05.592-07:00After my SECOND runI went running for the first time on Saturday, and when I got home Monday I had a strange desire to go running again. I had planned on running Tuesday, Thursday, and Saturday, so I would have had one more day, in theory, before my next scheduled run.<br />
<br />
Honestly, I didn't feel all that great on Sunday. My muscles ached, things hurt that have never hurt before, and I discovered butt muscles I didn't know I had. I wasn't exactly looking forward to Tuesday on Sunday. But, somehow, I <b><i>wanted</i></b> to go running.<br />
<br />
My <a href="http://www.leplumejewelry.com/">wife</a> has been very supportive. I asked her to go to Target and get some Champion C9 shorts, and she came home with two pairs, two shirts and a tank top. Maybe it is her supportive attitude, but for some reason I just wanted to run on Monday.<br />
<br />
Fear may have been a motivation. I didn't feel that great on Sunday, and I didn't want to stop running. So, I donned the running tee and shorts my wife bought me, put on the shoes she had brought home for me, and went out the door.<br />
<br />
Two applications were monitoring me on my phone as I planned. Runtastic stopped at one point and I had to start it back up, and on the return leg Runkeeper announced that my task was complete and I couldn't continue it. The thinner material seems to allow the phone to interact with my leg and I probably shut off the apps while running. Oh well, time to get an arm band.<br />
<br />
Fatigue set in differently this time. I ran a bit further, which probably meant I ran too fast for my own good. "Train, not strain" is what I read, but I am still learning. On the way back, I felt that the going was harder, and I leaned heavily on the motivation of Runkeeper's interval announcements. When Runkeeper stopped, well, <i>keeping</i> for me, it was a hard blow.<br />
<br />
Nevertheless, I ran for what I thought might be 60 seconds (which goes VERY quickly) and walked for a brief span, then repeated. It was hard, struggling up the slope on the way home, and I thought to myself, "Why oh why did I pick a route that has me running uphill on the way home?!?"<br />
<br />
Annoyingly, Runtastic recorded exactly NOTHING for my run. Runkeeper kept my partial workout, so I have no idea how well I did. I suppose it doesn't matter - I'm just going to go running again on Wednesday.<br />
<br />
Oddly, I do not feel the pain today (after two runs) the way I did the day after my first run. Hm.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0tag:blogger.com,1999:blog-11605599.post-2920197453986360242014-03-22T13:44:00.001-07:002014-03-22T13:44:18.192-07:00After my first runSo I went for my first run. I'm not getting younger, and running seems accessible to me. Some friend pointed me to <a href="http://www.coolrunning.com/engine/2/2_3/181.shtml">Couch to 5K</a>, so I'm following that plan. Here are some reactions after my first run.<br />
<br />
<b>Pants: </b>I need better pants. Running in the shorts I wear casually will do for now, but it seems there would be a better solution. I will look into that.<br />
<br />
<b>Shoes: </b>Boy am I glad Cathy bought me a pair of running shoes! My regular tennis shoes (are they actually for playing tennis?) would have felt very heavy.<br />
<br />
<b>Apps: </b>So far I like <a href="http://runkeeper.com/">RunKeeper</a>. I found it fairly easy to replicate my Week 1 routine for Couch To 5K. The prompts for the intervals during the run were very, very helpful. I also used <a href="http://www.runtastic.com/">Runtastic</a> Pro, but I have no reactions on that yet. Next time I run, I'll still use both, but I'll keep Runtastic Pro up front to see how it works. Based on today, however, I'm still going to use RunKeeper's intervals, and likely get the subscription. For some reason, Runtastic posted to Facebook but I missed that in RunKeeper. Hm...<br />
<br />
<b>Pockets: </b>What do other people do with their phones and water? My phone was bouncing around in my pants the entire run. I left the water bottle behind and just drank as much as I could before doing the warmup walk. That might explain those armband phone holders I see for sale, but what about water?<br />
<br />
<b>The Run:</b> At the beginning of the run, I was preoccupied with keeping track of my running intervals. RunKeeper took care of that, and I found it possible to just focus on running. I say focused because I concerned myself with my posture, with trying not to run too fast, and my footfalls. Many times I found myself thinking I would fail the "Talk Test" and tried to slow down a tiny bit. My run became 60 second and 90 second experiences, and it started without incident.<br />
<br />
I had set an alarm for 10 minutes so I would know when to turn around. When that turn-around alarm went off, I finished the running interval and started walking back. Suddenly, the distractions of the app, the intervals, and dodging power poles gave way to a sense of joy. A smile took over and I thought to myself, "I can actually do this!" It was briefly euphoric, and the possibility of running as a lifestyle choice seemed real.<br />
<br />
RunKeeper brought me back down to earth by announcing that my next running interval was upon me, and a mild <a href="http://theoatmeal.com/comics/running">fatigue creeped up behind me</a> and chased me the rest of the way home. My joy was now tempered by the reality that running is going to take effort and time. On the way back, every time I heard that next interval of a one-minute run, I sighed and picked up the pace.<br />
<br />
I got close to home when the apps announced that I had finished my workout. I walked briskly from the street to the our rig and paced around a bit to let my breathing return close to normal, and called it my first step in the journey.<br />
<br />
<b>How I feel now: </b>I feel a little accomplishment, but I also feel like nothing changed. I sense a bit of reaction from some of my muscles, which surprisingly is not limited to my legs. I read somewhere it is better to warm up instead of cold stretches before a run, but I'll need to look into that some more.<br />
<br />
I've decided on running Tuesday, Thursday, and Saturday. That seems reasonable, even though I have no reason to select those days. I saw the other runners, so I may look into a better time of day to run, or a better location. Perhaps there are no runners living around here but that seems unlikely.<br />
<br />
So that's it. My first run!Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0tag:blogger.com,1999:blog-11605599.post-67216525179094617632014-03-04T14:53:00.000-08:002014-03-04T14:53:23.565-08:00Some Thoughts On Other People's ChildrenCathy and I do not have children. I do affectionately refer to my cats and dog as our "furkids", but there is no denying that I will never understand the joys or heartaches of having offspring of our own.<br />
<br />
To say that I have made my peace with it would be to imply a loss I do not experience. Some feel that childlessness is a state to be pitied; however, as I have no existential reference point, I simply do not feel any sense of deprivation or loss.<br />
<br />
As is normal, we have plenty of friends with children. I can think of several such friends that would, should I envy the prospect of parenthood, cause me to be both immeasurably happy for them and deeply disturbed by my own lack of parity. Some friends make parenthood look (almost) easy, but I believe that is simply a lack of perspective on my part.<br />
<br />
The cries of neither the tribulations nor the triumphs of our offspring will be heard in our home. Instead, Cathy and I experience slivers of parental joy by offering to watch the kids while our friends actually have a date night, or perhaps attend a function or work late or some other important reason.<br />
<br />
Some joy can be derived vicariously from being a parental stand-in. We even have friends who are trusting enough, or perhaps possessing the required senses of humor, to allow me participation in the changing of diapers, getting kids bathed and teeth brushed before bed, and other less-than-glamorous activities. Bedtime stories were a joyful discovery; I actually enjoy reading bedtime stories to children. As I have the luxury of being the non-parent, I suspect I receive a little bit of leniency and good behavior from the children, and I reciprocate by being slightly less stern as their parents would in the course of an average day.<br />
<br />
From time to time, the apparent lack of children in our lives comes up in conversation. This is a natural phenomena, and all of our acquaintances go through this process. Once biological children are ruled out, the option of adoption is usually suggested, along with observations about our obvious fitness to be extraordinary parents.<br />
<br />
Generous, optimistic projections of how our potentially adopted children would change the world aside, I do not believe I would make a great father. Sure, no father is perfect, but make many sacrifices to have children and to guide them to adulthood. I do not think I could be half the dad my own father was, and at 40, I simply have never faced the need to deprive myself in the ways I think a child would deserve.<br />
<br />
Rushing to my defense, our friend point out how we provided for Cathy's mom for over a decade, or how we have sent (a not-insignificant amount of) money to my mother to support her since my father's death. Duty, love and obligation are entwined in my mind regarding patently. Children require sacrifice. Sacrifice is not something I am accustomed to making, and though I would learn, parenthood is not a state of affairs I find myself in nor desiring to enter into.<br />
<br />
Biological imperatives, often couched in the creation mandate, do not sway me to have children. If the command to be fruitful and multiply has not yet been met, then I am a monkey's uncle. That said, I do think that it is normal and desirable for a society to have a steady state of population. Nonetheless, I so not think every couple needs to have children, nor do I think that it is a requirement of a marriage. Children need parents, but married people do not have to be parents.<br />
<br />
Children are a gift, and when would-be parents spurn that gift, adoption is a beautiful solution to an intractable state of affairs. Parenthood should, from my limited and experience-free perspective, reflect the way God treats all His children. That is a task too high for me, and as we cannot have biological children of our own as a couple, I assume that God has something else in mind for us. Adoption may not be it, either.<br />
<br />
We have friends who have adopted, and acquaintances who have done so as well. Some adopt to fill a need of the world, for they have more room in their hearts to welcome children without a home of their own. Others have adopted to fill a need of their own, and just as eating and sleeping are needs, some rightfully need to be parents, and there may be some beauty when children need parents who need them as well.<br />
<br />
Adoption, as a notion, gives me the tingles. To understand why I get that tingly feeling, you'd have to hear my thoughts on human depravity and redemption, and perhaps be a little surprised of how little I think of myself. But I'll try briefly...<br />
<br />
The very thought of God <b>adopting</b> us, to make the untouchable cherished, to truly <i>redeem</i> something not merely useless but repulsive, is (in a word) just <b><i>AWESOME</i></b>. God's love fills me with wonder and it terrifies me. That is what adoption means to me.<br />
<br />
Adoption is (should be?) deliberated parenthood. I doubt most natural parents have any idea what they are really getting into with their first child, but good parents are deliberate in undertaking the task. I like to think we know some good parents, who perhaps upon reading this would not think of themselves but should, for they demonstrate God to their children regularly. God's example should inform everything from discipline to recreation, but I remain the opinionated man without children.<br />
<br />
Cathy and I neither need children nor feel "called" to parenthood. What I had believed I felt was a calling to be pastor, a cash-poor one at that, and being childless made sense back then. Now I do not know why, but I am comfortable with it. Should we ever have children, it would be a task requiring much grace from a loving God who is willing to give it, so while I would find the prospect awesome, it would be a great privilege and adventure.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com2tag:blogger.com,1999:blog-11605599.post-24625796990083512022014-02-18T12:30:00.000-08:002014-02-18T12:30:38.067-08:00Thoughts on the prospect of living with my momCathy has long known that I hope to one day move my mother stateside to live next to me. I have some dreams and some concerns on how this may work out.<br />
<br />
We have lived in a triplex before and that worked well for us. I can envision purchasing a triplex or a quad, with Cathy and I in one unit, my mother in another, and Rhona and Dave (Cathy's mom and her husband) in the other. One big happy family, but each with their own space. I would convert a space for Cathy's studio, and life would be perfect.<br />
<br />
I don't think we could pull this off financially, except that my mom has two sources of retirement income and would be willing to help, like praying rent. Rhonda and Dave would do the same, so our payments on the property should be quite manageable.<br />
<br />
California is just too expensive. I would love to enjoy all that the Golden State has to offer, except the taxes and the deficit. Perhaps the Joneses would have to move to somewhere like Georgia. My employer has an office and they were quite positive about the prospect of a transfer. Dave already wants to move there and Cathy has family out there. I would simply acclimate.<br />
<br />
Culturally, Cathy and I would learn to fit in, and we would have help from family. I am mostly concerned with climate and finances. I think we are spoiled by California's temperate seasons, and real weather and seasons would take some getting used to. However, I think we are up to the task.<br />
<br />
Very little of concern has crossed my mind in regards to living with Rhonda and Dave. After all, we lived with Cathy's mom in our house for 10 of the first 12 years of our marriage. We got along. Dave takes good care of her, and he is a good man.<br />
<br />
Most of my concerns stem from my mother's expectations of living with me, as I do not believe she realizes that I, her son, am American. That may sound strange, but though I grew up in Taiwan in a Chinese culture and environment, my mother had far less influence on me than my late (and great) father. My father took great care in preparing me to go home to America; I do not think he intended for me to stay in Taiwan, as he always spoke of my presence there as visits. I wish he had moved back here with my mother, but dad loved her too much to take her away from a familiar and stable life.<br />
<br />
Common practice among American families is for the patents to prepare for their own retirement. My dad did so to some extent, and my mother has always relied upon my father's plans. He did not intent to die so soon, as his plans assumed my mother's eligibility for social security. We did get that all sorted out, but it was not an easy couple of years, particularly for my mother.<br />
<br />
Common practice among the Chinese people of Taiwan is for the parents to move in with the children. Further back, it was multi-generation families, where the son builds an addition to the shared structure of the growing house for his new family. Now, with land at a premium, parents move in with a child. I joke about how the Chinese 401(k) plan is to have four or more children. Unfortunately, my mother's portfolio is not very diverse, so we find ourselves with a single long-term investment.<br />
<br />
Although I consider myself a Chinese American, the "Chinese" part is the modifier, and "American" is the primary aspect of my national, cultural identity. Sure, the Chinese part is important, but it isn't as important as I believe my mother likely thinks.<br />
<br />
If she is to move here and live with us, my mother will need to understand that she'll be living with her American son and his American wife. We will need our own space, and while I would see her almost daily, my life will not revolve around her. And, as an American male, the thought of having two women trying to share a kitchen (again) is simply off the table; it didn't work with Cathy and her mom, so it certainly isn't going to work with her foreign mother-in-law.<br />
<br />
Within the landscape of my mother's imagination, I believe she envisions living in the same house, walking the same halls, and sharing every meal with me. When she speaks of the future, she does not picture Cathy, merely how mom and I will relate to each other, with Cathy in the backdrop of the scene. Those who know me know that Cathy and I are rarely separated. It is of growing concern that my mother has had no way to learn of this or experience this, and she does not seem to grasp it when I tell her in letters and photos.<br />
<br />
A language barrier has grown quietly but steadily over the years between my mother and myself. My Mandarin is not what it used to be as those language and vocabulary muscles have atrophied. My mother's somewhat limited English has begun to deteriorate in my father's absence. Particularly challenging is the fact that I have only lately come to this realization. Without my father to mediate and bridge the gaps of our communication, my mother and I say less and less that the other actually understands.<br />
<br />
We have perhaps two years (three tops) of time to prepare for my mother's intersection with our life. I must find a way to make clear what our new arrangement may entail, the commitments I am willing to make and what I am unwilling to sacrifice. How shall I get an accurate picture of what mom expects, and how do I best honor her in her old age? I do not know, but I believe I shall pray for inspiration. And I suppose I should begin brushing up on Chinese.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0tag:blogger.com,1999:blog-11605599.post-66118296448256489292014-02-17T16:01:00.001-08:002014-02-17T16:01:36.444-08:00Some Thoughts On Registering a Expiring Domain NameI have never tried to grab an expiring domain before, so here are some thoughts on the matter. I do IT stuff for family, friends, and non-profit organizations like churches (especially those I attend). Commonly, those making decisions about an organization's web site do not know how web sites work, so sometimes we go off in a direction and have to backtrack.<br />
<br />
Suffice it to say that a new church plant registered one domain name specific to a region, but then saw indicates it may be too specific. We went from "Church Name At City" to "Church Name at City and City" to "Church Name (at city and city)".<br />
<br />
Unfortunately, I had registered ChurchNameAtCity.TLD as requested, and as ChurchName.TLD was taken I could not register it as well. But as Providence would have it, several day ago I decided to do a WhoIs lookup on ChurchName.TLD, and found that it was already PendingDelete.<br />
<br />
Back when I was told to register our domain, ChurchName.TLD was three months from expiration, and I had no reason to think it would expire. My WhoIs lookup of ChurchName.TLD showed this:<br />
<br />
Updated Date: 2014-02-11T11:07:05Z<br />
Domain Status: pendingDelete<br />
<br />
I did some Google searches and found that there are no hard-and-fast rules on what a domain registrar may do once a domain expires. However, once it enters PendingDelete, then six days after the "Update Date" the domain is released for registration or auction.<br />
<br />
First, the time was in "Z" or Zulu time (that is, GMT). I did the math and realized that six days from the would be a little past midnight my time on 2/17.<br />
<br />
Second, I considered the possibility that the original registrant just messed up. Also, if I contact them, even if they don't have the church they may keep the domain. And how would I feel if someone snatched my own domain from me while I was on a missions trip? So I looked on Google, Facebook, and yellow page entries for a church at the registrant's address. I found that the Facebook page had been closed and merged with a school page, the church was listed as closed on a review and on Foursquare, and that the registrant is now the pastor of a different church (with a functioning web site). I concluded that the domain is fair game.<br />
<br />
At this point, I considered using a domain purchase service, or a domain auction service. The TLDs I was most interested in were .ORG and .NET, but I would bundle .COM and .INFO to be thorough. I looked up registrant information on all the domain names were minor permutations, and found that most of the relevant ones were registered by one person.<br />
<br />
I considered the possibility that too many WhoIs lookups may make some domain parking service grab the domain I am interested in acquiring. So I used my go-to registrar and tried to register it at 00:08 on 2/16 my time, and it wasn't available.<br />
<br />
Yes, that wasn't six days, but since there were no hard-and-fast rules, I figured I would play it safe. Again, I though about using a domain acquisition service, but didn't want to spend the money.<br />
<br />
I tried registering again at 06:08 on 2/16, then 00:08 and 00:15 on 2/17, then 06:08 on 2/17. It was STILL not available, but the registrant hadn't changed.<br />
<br />
Briefly, I flirted with acquiring .Org and .Net with a domain service, but dismissed it again. I tried registering at 15:00 on 2/17 and found a curious result... most of the ChurchName.TLD domains were available except for .Com and .Org. I watched .Org change registrants twice in 15 minutes, then it seemed to settle on NameBright.com. That makes me think that a registrar or a service acquired that domain moments before I was able to do so. And, the .Org domain was registered by someone in Japan. So, I got ChurchName.Net and .Info, but not the .Org I wanted (and not the .Com I would just park).<br />
<br />
I had also kept an eye on TheChurchName.TLD, and I was able to acquire all the TLDs I was interested in for TheChurchName, so I did. It is now likely that I will push the church to use TheChurchName.TLD instead.<br />
<br />
Would I have acquired ChurchName.Org if I had used a service? I cannot know for sure, but had I spent the $60 per domain name, I have spent at least $120, maybe $240, and I got all but one of the desired domain names without paying the fee. I would have like to sit on ChurchName.Org and .Com, but frankly if someone else has a real use for it, I would rather it be in the wild.<br />
<br />
If there is an expiring domain name I really, really want, I'll probably try the auction service next time. Otherwise, I'll just keep trying to register it on day 6 every few minutes or so.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com3tag:blogger.com,1999:blog-11605599.post-89017464903078152432012-12-12T12:12:00.000-08:002012-12-12T13:37:07.746-08:00Even Dozen12/12/12 12:12:12Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0tag:blogger.com,1999:blog-11605599.post-30789896124435509662012-10-24T10:58:00.000-07:002012-10-25T07:10:14.667-07:00Hey fellow Christian, be like this, please?Too often, the world sees Christians as judgmental jerks. Frankly, I know a lot of judgmental jerks that declare they are Christians and I would rather not have anything to do with them. To the rest of the world, this is what these Christians look like:
<div class="separator" style="clear: both; text-align: center;">
<a href="http://sinfest.net/comikaze/comics/2012-09-26.gif" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="250" width="740" src="http://sinfest.net/comikaze/comics/2012-09-26.gif" /></a></div>
I know that God is both love and justice, but maybe it is time we emphasize God's love, and let God point out the sin in our lives and the lives of others. Ideally, it'd be more like this:
<div class="separator" style="clear: both; text-align: center;">
<a href="http://sinfest.net/comikaze/comics/2012-10-17.gif" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="250" width="740" src="http://sinfest.net/comikaze/comics/2012-10-17.gif" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://sinfest.net/comikaze/comics/2012-10-23.gif" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="250" width="740" src="http://sinfest.net/comikaze/comics/2012-10-23.gif" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://sinfest.net/comikaze/comics/2012-10-24.gif" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="250" width="740" src="http://sinfest.net/comikaze/comics/2012-10-24.gif" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://sinfest.net/comikaze/comics/2012-10-25.gif" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="250" width="740" src="http://sinfest.net/comikaze/comics/2012-10-25.gif" /></a></div>
Why do Christians forget that God loves the lost? That Jesus "came to seek and to save the lost"? God loves the sinner, the broken, the prostitutes, the tax collector, the ones "we" despise. And do you know whom God does, in fact, judge harshly? The self-righteous, religious jerks.
I'm a Christian, but sometimes I don't like other Christians, and wonder if they are Christian in name only.
<br><br>
Images from Tatsuya Ishida's <a href="http://www.sinfest.net/">Sinfest</a> webcomic.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com1tag:blogger.com,1999:blog-11605599.post-90681550686759138012011-10-01T23:15:00.000-07:002011-10-01T23:28:08.917-07:00Persistent USB mount locations on Pogoplug (and other Linux devices)In a previous post, I talked about how I <a href="http://www.leeandcathy.com/2011/09/setting-up-pogoplug-with-rsync-and.html">set up rsync on my Pogoplug</a> Biz for church. I had mentioned a Couple of “Gotchas”, such as the way USB drives may be a different device name upon reboot. This makes it hard to find the Optware drive consistently. Here is my solution.<br />
<br />
Basically, you want to get the e2fs libraries and programs, then use <i>blkid</i> and <i>findfs</i> to locate the drive. As of Oct 2011, the links below are correct, but be sure to check <a href="http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/">http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/</a> and replace the file names as necessary.<br />
<br />
The commands below will download and copy the necessary libraries and e2fs utilities for mounting your flash drive in the same location. I am assuming you are going to use the device UUID instead of the drive lable to locate the drive, but both are possible. I also assume that you want to modify the NAND (the Pogoplug internal flash drive) as little as possible. I am ONLY copying the files necessary for this task of finding and mounting specific USB drives to specific locations upon reboot.<br />
<br />
<span class="Apple-style-span" style="font-size: 24px; font-weight: bold;">Getting the e2fs libraries and utilities</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">cd /tmp</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/e2fslibs_1.41.14-1_arm.ipk</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">tar xvzf e2fslibs_1.41.14-1_arm.ipk</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">tar xvzf data.tar.gz</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/e2fsprogs_1.41.14-1_arm.ipk</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">tar xvzf e2fsprogs_1.41.14-1_arm.ipk</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">tar xvzf data.tar.gz</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span class="Apple-style-span" style="font-size: 24px; font-weight: bold;">Copying the e2fs files to the internal flash memory</span><br />
The following command makes it possible to change the Pogoplug flash memory, so be careful from here on out! Also, I am assuming that <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">/usr/sbin</span> is on your PATH.<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mount / -o remount,rw,noatime</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">cd /tmp/opt/lib</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mv libb* /usr/lib</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mv libc* /usr/lib</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mv libe* /usr/lib</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mv libu* /usr/lib</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">cd /tmp/opt/sbin</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mv blkid /usr/sbin</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mv findfs /usr/sbin</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
OK, this puts the files on the NAND and I can use <i>blkid</i> to locate the optware flash drive by UUID, and use <i>findfs</i> use in <i>/etc/init.d/rcS</i> to mount it to <i>/opt</i>. Next I need to locate the actual device UUID for the startup script. Run <i>blkid</i> to get the UUID, and write this down.<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">blkid</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">/dev/sda1: UUID="2CB9-87AD" TYPE="vfat" </span><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">LABEL="LeeJones"</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">/dev/sdb1: UUID="fc640330-9e49" TYPE="ext3" LABEL="OPTWARE"</span><br />
<br />
<b><i>NOTE: the UUID and LABEL are case sensitive.</i></b><br />
<br />
In this case, my Optware drive has a UUID of fc640330-9349. Now we should be able to locate the Optware USB drive (or any particular drive) with the <i>findfs</i> command:<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">findfs UUID="fc640330-9e49"</span><br />
<br />
This returns the result of <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">/dev/sdb1</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span class="Apple-style-span" style="font-size: 24px; font-weight: bold;">Editing the startup <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">/etc/init.d/rcS</span> script</span><br />
<br />
Using your favorite text editor, add the following line to <i>/etc/init.d/rcS</i> before anything calls <i>/opt</i><br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mount `findfs UUID="fc640330-9e49"` /opt</span><br />
<br />
<b>NOTE: The character before findfs is a back quote (`) not an apostrophe ('). Look for the back quote on the tilde key (~) next to your number 1 key.</b><br />
<br />
Once you have saved the changes to <i>rcS</i>, reboot:<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mount / -o remount,ro</span><br />
<div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">sync</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">sync</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">reboot</span></div><br />
<span class="Apple-style-span" style="font-size: 24px; font-weight: bold;">Extra Credit</span><br />
<br />
Personally, I want to minimize the changes to my copy of <i>/etc/init.d/rcS</i>, so mine is the factory default one plus the following two extra lines at the end:<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mount `findfs UUID="fc640330-9e49"` /opt # mounts Optware USB</span><br />
<div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">/opt/etc/init.d/optrun.sh # runs additional software</span><br />
<br />
<div><div style="font-family: 'Times New Roman';">The contents of <i>/opt/etc/init.d/optrun.sh</i> are as follows:</div><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">#!/bin/sh</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"># runs optware startups in sort order</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">cd /opt/etc/init.d</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">for i in `ls S* | sort`</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">do</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"> ./$i start</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">done</span><br />
<div style="font-family: 'Times New Roman';"><br />
</div>This allows me to make minimal changes to <i>/etc/init.d/rcS</i>, just enough to find and properly mount Optware to <i>/opt</i> every single reboot. The <i>optrun.sh</i> command starts any additional things I want, such as rsync. Anything file in /opt/etc/init.d that is both executable and begins with a capital S will be ran at boot time.<br />
<br />
Also, if I screw up on one on of my additions (been there) and disable my device, all I have to do is power off the Pogoplug, pull out the Optware USB drive and reboot. After a normal boot, I plug the drive back in and fix my mistake.<br />
<div style="font-family: 'Times New Roman';"></div></div></div>Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com5tag:blogger.com,1999:blog-11605599.post-90934264194628402742011-09-17T14:17:00.000-07:002011-09-17T14:17:07.431-07:00Locating a new device on your networkI've been working with the Pogoplug recently, and realized that people may have difficulty locating a new device on their own network.<br />
<br />
Most networked devices get an IP address dynamically, using DHCP. That is to say, the IP address of your net device could change on a regular basis. And you have no good way of knowing what it is.<br />
<br />
Most of the time, this won't matter to you, but if you need to log in to a network device, you'll probably need to know the IP address.<br />
<br />
To locate the IP address, first find the MAC hardware address. Just look at the bottom of your device, or on the label with your serial number. Usually, there will be a line for the MAC hardware address, or it may be known as the device hardware address.. This will be in the format of 16 characters, in 8 pairs, separated by a colon (":") or a dash. The characters will be 0-9 and a-f. Write this down.<br />
<br />
Now, you'll need to look at your DHCP server and look at the client leases. One of the leases will have the MAC hardware address of your Pogoplug listed. That entry will probably not have a name, but it will have an IP address. For an IPv4 address, the address will look like 4 numbers separated by dots, like 192.168.1.101 or something similar.<br />
<br />
For most users, the DHCP server will probably be your router. Usually, the DHCP leases are listed in a table in the "status" section of your router's web interface. If you are not sure, just do a Google search on "router-name dhcp table".<br />
<br />
If you don't have easy access to the router's DHCP table, you can use a brute-force approach. Download an IP address scanner (I use the <a href="http://www.angryip.org/w/Download">older version of Angry IP Scanner</a>) and have it scan your local network. This will have the affect of populating your ARP table (which is a list of all known devices). In Angry IP, you can also display the MAC address. Look for an entry that matches your device.<br />
<br />
To make sure it IS really your device, try to ping the IP address. (Yes, Google it if you don't know how.) Once you have managed to ping the IP address successfully, examine your ARP table for the MAC hardware address. The command to type is "arp -a". If you find a MAC address in the ARP table that matches up to your device, you should have the right IP address.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com1tag:blogger.com,1999:blog-11605599.post-31064845381171734142011-09-16T16:19:00.000-07:002011-10-01T23:18:01.494-07:00Setting up a Pogoplug with rsync and Optware<h1>Intended Audience</h1>The post is written for the following audiences: me (in case I forgot how I got this working someday), the next person that manages my network, and other Pogoplug users that want to set up rsync and get a general idea of how to add features to the Pogoplugs.<br />
<br />
This will be, at times, ridiculously detailed, and at other times it will be frustrating vague. Sorry, but remember that Google is your friend, as is the Pogoplug forums and the Optware community.<br />
<h1>Background</h1>I bought a Pogoplug (on sale) for myself and found it easy enough to use that I thought it would be a workable remote file access solution for church. The idea was, instead of using a file server for shared files I would use the Pogo, and back the drive up regularly. So I picked up a Pogoplug Biz for church.<br />
<br />
It was not until after I started using it that I discovered <a href="http://www.pogoplugged.com/forum/thread/15433/VERY-slow-uploads-for-regular-users/">even LAN users had terrible file transfer</a> speeds. I traded some messageswith Cloud Engine’s (who makes the Pogoplug) CTO, and there is no fix and he doesn't expect to have one anytime soon (I read that as ‘never’). Oh well. (To be fair, their CTO did say that, in aggravated cases, they would work out some refund. But I’ve had the device for a year… so I didn’t pursue it.)<br />
<br />
Anyway, if I can't get fast, usable two-way access to the Pogoplug drives, then I wanted to at least give my users access to the existing shared drives. I’d get the files from my server to the Pogoplug and then let users access the web site or the Pogodrive software.<br />
<br />
I tried to use the Pogoplug Software version on the server, but it only worked locally, not from outside via the internet (I don’t know why). AND, likely due to the beta nature of the software, it tended to fill up my hard disk with temp files. I considered using the Pogoplug "Active Copy" feature, by installing the software version on the file server and leaving the desktop logged in. However, Active Copy does not propagate file deletions or renames. I got tired of trying to make a supposedly awesome product actually do what I wanted to do. Pogoplug’s customer service is not interested in helping me with my problem, so I decided to examine the other feature that attracted me to Pogoplugs in the first place, it's "openness".<br />
<br />
My half-baked solution is to use my existing local network file shares (let’s call is drive S for “shared”) but to mirror the share on the Pogoplug so my users could access files remotely (via the Pogoplug P drive or <a href="http://my.pogoplug.com/">http://my.pogoplug.com</a>). This would allow my users, at least, read-only access of the files in the office. Maybe I’ll be able to rig some sort of two-way sync, but that is for another day. Since I want to synchronize file changes and deletions one-way only, <a href="http://www.samba.org/ftp/rsync/rsync.html">rsync</a> came immediately to mind. Thus began this adventure.<br />
<br />
Cloud Engines touts the <a href="http://www.pogoplug.com/developers-open-source.html">open source nature of the Pogoplug</a>. Since the Pogoplug runs a flavor of Linux, has SSH access and <a href="http://busybox.net/about.html">has Busybox installed</a>, it makes it <a href="http://www.nslu2-linux.org/wiki/Optware/HomePage">relatively easy to install Optware</a>. It doesn’t hurt that the an informed user like OddballHero is fond of both Optware and Pogoplug. Optware is a package manager, so it helps you download and install programs like rsync.<br />
<h1>Some Assumptions and a Word of Warning</h1>I'm assuming you are using either a Windows computer or have access to a Linux PC. Sorry, I don't do Macs; they're not in the scope of my budget. But most of the Linux stuff should be accessible to Mac users.<br />
<br />
There is a LOT of assumed knowledge. For example, I am assuming your Pogoplug is activated and you can get to the web interface. A knowledge of editing text files in Linux will be required at some point. As I am not sure who may have to maintain the system I set up at church, I am going to explain far more than you (as the reader) may find necessary. Or maybe less than you’d like. Just skip any "well duh" sections you come across. On the other hand, I will not explain EVERY possible way to do something. To be blunt, if you are unable to follow these instructions with some help from Google you may want to think twice about doing this.<br />
<h1>Enable SSH On Your Pogoplug</h1>SSH (short for Secure SHell) allows you to access to a remote networked computer using a secure (encrypted) connection. <a href="http://en.wikipedia.org/wiki/Secure_Shell">SSH is like a secure version of telnet</a>.<br />
<br />
Originally, the Pogoplug shipped with SSH enabled, and a published root user password. Now, by default, SSH is NOT enabled. To <a href="http://support.pogoplug.com/entries/473640-how-do-i-enable-ssh">enable SSH on your Pogoplug</a>, log on to http://my.pogoplug.com, click the Settings link, select Security Settings, and then select the checkbox "Enable SSH for this Pogoplug enabled device." You will be asked to type in a password for the root user, WRITE THIS DOWN.<br />
<h1>Locate Your Pogoplug</h1>Your Pogoplug gets an IP address dynamically, using DHCP. That is to say, the IP address of your Pogoplug could change on a regular basis.<br />
<br />
To locate the IP address, look at the bottom of your Pogoplug for the MAC hardware address. This will be in the format of 16 characters, in 8 pairs, separated by a colon (":"). The characters will be 0-9 and a-f. Write this down. For your Pogodrive, the MAC address should begin with 00:25:31<br />
<br />
Now, you'll need to look at your DHCP server and look at the client leases. One of the leases will have the MAC hardware address of your Pogoplug listed. That entry will probably not have a name, but it will have an IP address. For an IPv4 address, the address will look like 4 numbers separated by dots, like 192.168.1.101 or something similar.<br />
<br />
To make sure it IS really your Pogoplug, try to ping the IP address. (Google it if you don't know how.) Once you have managed to ping the IP address successfully, examine your ARP table for the MAC hardware address. The command to type is "<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">arp -a</span></em>". If you find a MAC address in the ARP table that matches up to your Pogoplug, you can move on to SSH. For this document, I will assume your Pogoplug’s IP address is 192.168.1.101.<br />
<h1>Establishing SSH Access</h1>Now that we have found the Pogoplug on the network, we want to login with the SSH service we just enabled. For Windows users, <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">try downloading PuTTY</a>. If you are on a Linux box, just run the SSH command. In either case, use try using a SSH client to the IP address of the Pogoplug. You should receive a login prompt. Use the SSH password you wrote down earlier.<br />
<h1>USB Device Names on the Pogoplug</h1>For the purposes of this document, I'm going to suggest (and assume) that you'll ONLY plug in the USB flash drive for the install. Don't use other drives while you set this all up.<br />
<br />
The USB drives on the Pogoplug are labeled <i>sd?1</i> where ? is alphabetical (<i>sda1</i>, <i>sdb1</i>, <i>sdc1</i>…), depending on discovery order. For the purposes of this document, I'm going to suggest (and assume) that you'll ONLY plug in the USB flash drive for the install of Optware, rsync, whatever. Don't use other drives while you set this all up. When we’re all done, I’ll help you locate and mount the dedicated to Optware.<br />
<br />
For the sake of easy identification, we'll use the front port for our software installation (Optware).<br />
<br />
Insert an empty USB drive into the front of the Pogoplug. It can be small, but I would recommend you use a USB 2.0 drive. Everything on this drive will be erased, and you'll be leaving it in the Pogoplug, so make sure it is a drive you can spare.<br />
<br />
<span class="Apple-style-span" style="font-size: 32px; font-weight: bold;">Dedicating a USB Stick for Optware</span><br />
I am going to assume you want to run the Optware and other additions on a USB stick. I recommend this because, in theory, there will be less wear-and-tear on the Pogoplug's internal flash memory.<br />
<br />
For reference, you can read this Pogoplug article about “<a href="http://www.pogoplugged.com/article/12099/How-to-Partition-and-Format-a-USB-Drive-Directly-On-Your-Pogoplug/">How to Partition and Format a USB Drive</a>” for help.<br />
<br />
Once you have the USB flash drive plugged into the front, make sure it is recognized as a functional drive. You can do this by running the "<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount</span></em>" command and looking for an entry for <i>/tmp/.cemnt/sda1</i> or go to the web interface at <a href="http://my.pogoplug.com/">http://my.pogoplug.com</a> and find your Pogoplug’s attached flash drive. Once you have verified it is properly discovered, eject the drive from the <a href="http://my.pogoplug.com/">http://my.pogoplug.com</a> web site. (No, I haven't figured out how to eject it from SSH.)<br />
<h1>Get mke2fs</h1>Check and see if you have the software to format the drive already installed. Try running <em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mke2fs </span></em>and see if it is already installed on your Pogoplug (it exists on the Pogoplug Pro, for example).<br />
<br />
If mke2fs does not exist, you can download it with the steps below. I'm going to borrow liberally from "<a href="http://www.pogoplugged.com/article/12099/How-to-Partition-and-Format-a-USB-Drive-Directly-On-Your-Pogoplug/">ianjb</a>" from that article I referred to earlier.<br />
<div style="margin-left: .5in;">Note: the link to mke2fs is from a Pogoplug article, so it should be safe.<br />
Note: anything in <span style="font-style: normal;">/tmp</span> will disappear on reboot. If you end up rebooting the Pogoplug, <span style="font-style: normal;">/tmp</span> will be empty, so you have to download things that are in <span style="font-style: normal;">/tmp</span> all again. But that also means you can make a mess in <span style="font-style: normal;">/tmp</span> and it will go away.</div><br />
<br />
Download mke2fs to <i>/tmp</i><br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">cd /tmp<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">wget http://download.capablenet.com/pogoplug/mke2fs.zip<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">unzip mke2fs.zip<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">chmod 755 mke2fs<o:p></o:p></span></em></div><br />
Now that we have mke2fs on the Pogoplug, we can proceed with the format.<br />
<br />
<h1>Create the Linux Partition</h1>First, partition the USB drive by typing using fdisk <br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">/sbin/fdisk /dev/sda<o:p></o:p></span></em></div><br />
This puts you in the fdisk menu. Assuming your USB flash drive is ready for Windows, it has a FAT filesystem on it. We’ll delete it and create a new Linux file system.<br />
<div style="margin-left: .5in;">Use the command “<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">d</span></em>” to delete partition 1.<br />
Use the command “<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">n</span></em>” to create a new partition. When asked, create a “<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">p</span></em>” primary partition. Use the defaults for the partition number (1), first cylinder (1), and last cylinder (just press ENTER).<br />
Use the command “<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">w</span></em>” to write the changes to the USB flash drive.</div><br />
Now you will exit the fdisk menu. Creating the Linux filesystem will cause the Pogoplug to automatically remount the drive. Go back to the web interface and eject it again. (Go to <a href="http://my.pogoplug.com/">http://my.pogoplug.com</a>, find your Pogoplug, click the eject symbol next to your drive.)<br />
<h1>Format the USB Flash with Ext3 Filesystem</h1>We are still in the <i>/tmp</i> directory. We’ll use the mke2fs command to format the USB flash drive. I like to label mine, so the <em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">-L OPTWARE </span></em>part is optional<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">/tmp/mke2fs -j -L OPTWARE /dev/sda1<o:p></o:p></span></em></div><h1>Mounting the USB Flash Drive As <i>/opt</i></h1>Now, the USB flash drive can be accessed at “<i>/dev/sda1</i>”. Because we’re installing Optware, we’ll attach it (that is, mount it) at the folder “<i>/opt</i>”. Normally the Pogoplug’s internal flash memory is read-only, so we cannot create files or folders. So we’ll make the Pogoplug internal memory available for both read and write and then create our folder.<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount -o rw,remount /<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">cd /<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mkdir opt<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount /dev/sda1 /opt<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount / -o remount,ro<o:p></o:p></span></em></div><h1>Installing Optware on the USB Flash</h1>For this section, you can get general instructions for <a href="http://www.nslu2-linux.org/wiki/Main/PlugComputers">installing Optware on Pogoplugs at NSLU2-Linux</a>. I am going to change things a little to install Optware directly on the USB flash drive. We’ll install the ipkg manager, then Optware, and finally rsync.<br />
<br />
First, you need to find the current ipkg manager by visiting this web site:<br />
<div style="margin-left: .5in;"><a href="http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/">http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/</a></div>On that web page, look for the line that begins with “ipkg-opt”. The file name will look like “ipkg-opt_0.99.163-10_arm.ipk” (current as of September 2011). Make a note of this file name. We’ll download the file (with <i>wget</i>) to the <em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">/tmp </span></em>folder and get things installed. Modify the “<i>wget</i>” and “<i>tar</i>” commands I give below with the current “ipkg-opt_xxxxxxxxxxxxxxx_arm.ipk” file name.<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">cd /tmp<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/ipkg-opt_0.99.163-10_arm.ipk<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">tar xvzf ipkg-opt_0.99.163-10_arm.ipk<o:p></o:p></span></em></div><br />
The <i>tar</i> command will extract three files, including <i>data.tar.gz</i>. We’ll extract the file we want directly to the USB flash drive we mounted to <i>/opt</i> earlier.<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">cd /<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">tar xvzf /tmp/data.tar.gz<o:p></o:p></span></em></div>Now you have Optware on your USB flash drive, living in the <i>/opt</i> directory, which is the USB flash drive. Next we’ll tell the ipkg manager to get packages from nslu2-linux.org. The following command is all on one line:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">echo 'src cross http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable' >> /opt/etc/ipkg.conf<o:p></o:p></span></em></div>(If you know your way around *NIX, you can just edit <i>/opt/etc/ipkg.conf</i> and add the line as well.)<br />
<h1>Update ipkg Manager</h1>To make it easier to type commands, let’s add the new Optware commands to our environment with the <i>PATH</i> variable and then update ipkg.<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">PATH=$PATH:/opt/bin:opt/sbin<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">ipkg update<o:p></o:p></span></em></div><h1>Installing Nano (Optional)</h1>The rest of these instructions requires editing text files in the Pogoplug. From here, I’ll tell you what lines to insert into text files, or give you examples of the text files, but I cannot tell you which buttons to press. I am going to suggest that you do a Google search for “nano editor” and do some reading, and visit Nano’s site at <a href="http://www.nano-editor.org/">http://www.nano-editor.org/</a>. Otherwise, figure out how to use “<i>vi</i>” which is already available to you.<br />
<br />
You can get some <a href="http://www.nslu2-linux.org/wiki/Optware/Nano">help installing Nano at this link</a> and some <a href="http://optics.csufresno.edu/~kriehn/teaching/ece71/howto/nano.html">basic instructions on using Nano to edit files at this link</a> (hi Greg).<br />
<br />
To install Nano, type<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">ipkg install nano<o:p></o:p></span></em></div>To edit a file named <i>textfile.conf</i> with Nano, type<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">nano textfile.conf<o:p></o:p></span></em></div><h1>Installing Rsync</h1>Finally, we can install rsync. We’ll use the ipkg manager to get it installed. You can read up on configuring rsync at <a href="http://www.samba.org/ftp/rsync/rsyncd.conf.html">http://www.samba.org/ftp/rsync/rsyncd.conf.html</a> but I will give you a very basic, but not secure, set up of rsync.<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">ipkg install rsync<o:p></o:p></span></em></div><h1>Configure Rsync</h1>You can configure rsync by editing the <i>/opt/etc/rsyncd.conf</i> file, and read up on the instruction for <i>rsyncd.conf</i> at <a href="http://www.samba.org/ftp/rsync/rsyncd.conf.html">http://www.samba.org/ftp/rsync/rsyncd.conf.html</a>. Any line that begins a “#” sign is ignored, so you can use those for comments. If you installed Nano, use the following command to edit the <i>/opt/etc/rsyncd.conf</i> file:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">nano /opt/etc/rsyncd.conf<o:p></o:p></span></em></div><br />
Below is an example of <i>/opt/etc/rsyncd.conf</i> for testing:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;"># rsyncd.conf<br />
# configure according to your needs<br />
uid = root<br />
gid = root<br />
use chroot = yes<br />
max connections = 5<br />
syslog facility = local3<br />
pid file = /var/run/rsyncd.pid<br />
lock file = /var/run/rsyncd.lock<br />
secrets file = /opt/etc/rsyncd.secrets<br />
<br />
[tmp]<br />
path = /tmp <br />
comment = Rsync of tmp<br />
read only = no<o:p></o:p></span></em></div><br />
<div style="margin-left: .5in;">Note: In my set up, I am using static IP addresses with no network security concerns. Because of this, my example does not use either encryption or passwords. If you have ANY intention of doing rsync over the internet or any unsecured network, look into using rsync over SSH, and set up passwords.</div><br />
<h1>First Run of Rsync</h1>I run rsync on my Pogoplug in daemon mode (to limit connections). To enable the rsync daemon, you need to edit <i>/opt/etc/default/rsync</i> and change <em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">RSYNC_ENABLE=false</span></em> to <em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">RSYNC_ENABLE=true</span></em>.<br />
<br />
It also happens that the rsync I installed wants to look for temporary files in the directory <i>/var/run</i> (which did not exist on my Pogoplug). Just in case, let’s create the <i>/var/run</i> directory.<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">cd /var<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mkdir run<o:p></o:p></span></em></div><br />
<div style="margin-left: .5in;">Note: <span style="font-style: normal;">/var</span> is a link to <span style="font-style: normal;">/tmp/var</span>, so nothing in here sticks around upon reboot.</div><br />
Now we can start the rsync daemon and see if it works. Type in the following:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">/opt/etc/init.d/S57rsyncd start<o:p></o:p></span></em></div>To check and see if rsync is running, type the following command and see if there is a line for rsync:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">ps | grep rsync | grep -v grep<o:p></o:p></span></em></div>Congratulations, you are running rsync.<br />
<br />
<div style="margin-left: .5in;"><b>Sorry, this is where I start getting more vague. Remember, you can always search on Google!</b></div><h1>Installing an Rsync Client</h1>If you are using Linux or a Mac (OS X or later) you should already have a rsync client. For Windows, the free choices I am aware of are cwRsync, DeltaCopy, and QtdSync. I’d recommend either DeltaCopy or QtdSync, take your pick. DeltaCopy has the advantage of being well-known, but QtdSync has better support for email notification.<br />
<br />
<ul><li>You can find cwRsync at <a href="http://sourceforge.net/projects/sereds/files/cwRsync/">http://sourceforge.net/projects/sereds/files/cwRsync/</a> (via <a href="http://rsync.net/resources/howto/windows_rsync.html">http://rsync.net/resources/howto/windows_rsync.html</a>),</li>
<li>DeltaCopy can be found at <a href="http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp">http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp</a>, and</li>
<li>QtdSync can be found at <a href="http://qtdtools.doering-thomas.de/">http://qtdtools.doering-thomas.de</a>.</li>
</ul><br />
<h1>Testing Rsync</h1>Let’s test the connection. Remember, I am assuming your Pogoplug has an IP address of 192.168.1.101.<br />
<br />
If you are running Linux, test the connection with the following commands, which should list the share named “<i>tmp</i>”, and the contents of <em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">/tmp</span></em>:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">rsync rsync://192.168.1.101<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">rsync rsync://192.168.1.101/tmp<o:p></o:p></span></em></div><br />
To connect with rsync from Windows (either DeltaCopy or QtdSync), set up a new “profile” and specify the server with your Pogoplug IP address. In DeltaCopy, run “<i>DeltaC.exe</i>” and click “<i>add new profile</i>”, type in the server IP, and click the “<i>…</i>” box on the right. For QtdSync, click the round yellow “<i>…</i>” button on the right next to “<i>User</i>” and type in your IP address.<br />
<br />
If the client automatically populates the directory name of “tmp” for you, you’re up and running. Now you have a basic, working rsync server on the Pogoplug.<br />
<h1>Saving the Setup to the Pogoplug</h1>Let’s make the settings we’ve got permanent. We’ll make the internal memory of the Pogoplug writable with the following command:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount -o rw,remount /<o:p></o:p></span></em></div><br />
You’d need to run that command any time you want to edit files that are not in <i>/tmp</i> or <i>/opt</i> (which is the USB flash drive). Once you run the above mount command, you can really and truly mess up the Pogoplug, so be careful. When you are done editing files, protect the Pogoplug memory again with the following command:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount / -o remount,ro<o:p></o:p></span></em></div><br />
Assuming that this is your first foray into adding things to the Pogoplug, the files <i>/etc/profile</i> and <i>/root/.bash_profile</i> do not exist. Using either <i>vi</i> or <i>nano</i>, you can edit or create these files to add some of the settings we’ve used. If you are not sure, try the following commands from the SSH prompt and see if it tells you there is no such file:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">ls /etc/profile<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">ls /root/.bash_profile<o:p></o:p></span></em></div><br />
In either case, you want the contents of <i>/etc/profile</i> to look have the following lines at the top if they do not already exist:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">#!/bin/bash<br />
export PATH=/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin<o:p></o:p></span></em></div><br />
And, you want <i>/root/.bash_profile</i> to have the following line:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">export PATH=/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin<o:p></o:p></span></em></div><br />
If neither file exists, you can create them with the following commands (watch out for line wraps on your screen):<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount -o rw,remount /<br />
echo '#!/bin/bash' > /etc/profile<br />
echo 'export PATH=/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin' >> /etc/profile<br />
echo '#!/bin/bash' > /root/.bash_profile<br />
echo 'export PATH=/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin' >> /root/.bash_profile<br />
mount / -o remount,ro<o:p></o:p></span></em></div><br />
Next, we must modify the startup command, which can be found in the <i>/etc/init.d/rcS</i> file. This file will already exist. Edit this file with <i>vi</i> or <i>nano</i> to include the following lines:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mkdir /tmp/var/run<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount /dev/sda1 /opt<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">/opt/etc/init.d/S57rsyncd start<o:p></o:p></span></em></div><br />
First, make a backup of the <i>rcS</i> file.<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">cd /etc/init.d<br />
mount -o rw,remount /<br />
cp rcS rcS.bak<br />
mount / -o remount,ro<o:p></o:p></span></em></div><br />
Assuming you’ve never edited the <i>/etc/init.d/rcS</i> file before, you can use the following commands to add these lines to the end of that file. Be really, really sure there are TWO great-than signs (>>) in the commands:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount -o rw,remount /<br />
echo 'mkdir /tmp/var/run' >> /etc/init.d/rcS<br />
echo 'mount /dev/sda1 /opt' >> /etc/init.d/rcS<br />
echo '/opt/etc/init.d/S57rsyncd start' >> /etc/init.d/rcS<br />
mount / -o remount,ro<o:p></o:p></span></em></div><br />
Take a look at <i>/etc/init.d/rcS</i> with the command<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">cat /etc/init.d/rcS<o:p></o:p></span></em></div><br />
It should look like this, with the last three lines in bold that you added:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">#! /bin/sh<br />
<br />
mount -t proc none /proc<br />
mount -t sysfs none /sys<br />
mount -t devpts none /dev/pts<br />
mount -t tmpfs none /tmp<br />
mount -t usbfs none /proc/bus/usb<br />
mkdir /tmp/var<br />
<br />
echo "/tmp/core_%e_%t" > /proc/sys/kernel/core_pattern<br />
<br />
hostname Pogoplug<br />
<br />
ifconfig lo 127.0.0.1<br />
ifconfig eth0 169.254.37.133<br />
udhcpc -b `hostname`<br />
<br />
#telnetd<br />
/etc/init.d/db<br />
<br />
/etc/init.d/hbmgr.sh start<br />
<br />
#/bin/mount –a<br />
<b>mkdir /tmp/var/run<br />
mount /dev/sda1 /opt<br />
/opt/etc/init.d/S57rsyncd start<o:p></o:p></b></span></em></div><h1>Rebooting and Checking Setup</h1>Now that everything seems to be working, you can reboot the Pogoplug and make sure everything works upon reboot with just the USB flash drive installed. Type in the following commands to tell the Pogoplug to save its work and reboot:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">sync<br />
sync<br />
reboot<o:p></o:p></span></em></div><br />
At this point you will be disconnected from the Pogoplug. Give it about 30 seconds, then connect again with your SSH client. Once you are able to log in, type the <em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">mount </span></em>command and it will show you a mount table. Your screen should look like this:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">rootfs on / type rootfs (rw)<br />
/dev/root on / type jffs2 (ro)<br />
none on /proc type proc (rw)<br />
none on /sys type sysfs (rw)<br />
none on /dev/pts type devpts (rw)<br />
none on /tmp type tmpfs (rw)<br />
none on /proc/bus/usb type usbfs (rw)<br />
/dev/sda1 on /opt type ext3 (rw,data=ordered)<br />
/tmp/.cemnt/sda1 on /tmp/.cemnt/mnt_sda1 type ext3 (rw,nosuid,nodev,noexec,noatime,data=ordered)<o:p></o:p></span></em></div><br />
If it looks like this, try your rsync client again (follow the directions from the “Testing Rsync” section above. If you can connect with a rsync client, you’re all set.<br />
<br />
<div style="margin-left: .5in;"><b>Sorry, this is where I start getting really vague. Remember, you can always search on Google!</b></div><br />
<h1>Sending Files from A PC to the Pogoplug Rsync Share</h1>I highly recommend that you use a small set of files for testing the rsync client to send file to <i>/tmp</i> on the Pogodrive. Once you have your command all figured out, then you can add a real hard disk.<br />
<br />
<b>Note: NEVER try to send files via rsync to anything other than <i>/tmp </i>or to an attached USB drive.</b><br />
<b><br />
</b><br />
<b>Note: Understand that the rsync option "<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">--delete</span></em>" will delete hidden files on the Pogoplug. If you use "<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">--delete</span></em>" you should also add "<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">--exclude .ceid --exclude .cedata</span></em>" to your list of options.</b><br />
<br />
For example, this command should be safe, even if your target is the automatically mounted Pogoplug drive:<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">rsync --exclude .ceid --exclude .cedata -rtv --delete /cygdrive/D/test/ rsync://192.168.1.101/tmp<o:p></o:p></span></em></div><br />
Finally, when you are trying to send a folder named “test”, there is a difference between <i>/cygdrive/D/test</i> and <i>/cygdrive/D/test/</i> (the “/”). A “/” at the end of a source directory copies the contents only, while no “/” copies the directory as well. For more information, see <a href="http://ss64.com/bash/rsync.html">http://ss64.com/bash/rsync.html</a>.<br />
<h1>Adding a Hard Disk and Changing Rsync</h1>You should probably add another hard disk. As the second disk, it should show up as <i>/dev/sdb1</i> on the Pogoplug in SSH. Because the Pogoplug software links <i>/dev/sdb1</i> automatically to <i>/tmp/.cemnt/sdb1</i> and mounts it as <i>/tmp/.cemnt/mnt_sdb1</i>, you could go back and edit the <i>/opt/etc/rsyncd.conf</i> file and change the share name from <i>[tmp]</i> to something more suitable, and update the path to <i>/tmp/.cemnt/mnt_sdb1</i> instead. You can restart rsync by running <em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">/opt/etc/init.d/S57rsyncd start</span></em> (if it complains, just run it again).<br />
<br />
Also, consider making your rsync session more secure. In my setup, I’m merely sending files to the Pogoplug from the same computer all the time, and the sending computer has a static IP address. It is all within a small, trusted network. Thus I can use the “allow” and “deny” settings in the rsync share to “whitelist” my sending PC. Consider doing so as well.<br />
<div style="margin-left: .5in;"><em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">hosts allow = 192.168.1.10<o:p></o:p></span></em><br />
<em><span style="font-family: monospace; font-size: 9pt; line-height: 115%;">hosts deny = *<o:p></o:p></span></em></div><br />
You may also want to configure users and passwords using the <i>rsyncd.secrets</i> file. Do a Google search and you’ll find plenty of help.<br />
<h1>A Couple of “Gotchas”</h1>There’s a few small “gotchas”… First, sometimes upon a reboot the Pogodrive will find the other USB drives before the flash drive with Optware installed, making it <i>/dev/sdb1</i> instead of <i>sda1</i>, which throws off all the startup scripts. I don’t know why. I have a solution, but that <a href="http://www.leeandcathy.com/2011/10/persistent-usb-mount-locations-on.html">requires a separate post here</a>. Just remember that, when you reboot, you may have to check the <i>mount</i> command to make sure that <i>/dev/sda1</i> is mounted on <i>/opt</i>. If not, power off and reboot a couple of times, it will eventually get it right.<br />
<br />
Second, your Optware drive will show up in the Pogoplug web site at <a href="http://my.pogoplug.com/">http://my.pogoplug.com</a> – if you don’t want to accidentally put files in there, you can eject it from the web and rsync will keep working.<br />
<h1>What’s Next</h1>For homework, here are some things you can find on Google that may be helpful.<br />
<ul><li>You may want to try to configure the Pogoplug with a static IP. You can do this with a DHCP reservation, or you can use the ifconfig command on the Pogoplug to add a VLAN.</li>
<li>Configure rsync to run over SSH for the encryption. Add passwords to rsync shares.</li>
<li>Figure out how to schedule the rsync command so that the Pogoplug stays current.</li>
<li>Figure out how to get email notices if your rsync command does not work right.</li>
<li>Install Samba on your Pogoplug.</li>
</ul>If you come across a good way to do two-sync, let me know! I’m thinking of using Allways Sync, but not so sure yet.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com7tag:blogger.com,1999:blog-11605599.post-26428523853754326872011-09-14T14:18:00.000-07:002011-09-17T14:20:37.076-07:00Boaz is 5 today!Our Russian Blue, Boaz, is 5 today. :-)<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://p.twimg.com/AZTyWRlCMAA5jqb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://p.twimg.com/AZTyWRlCMAA5jqb.jpg" width="320" /></a></div>Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com6tag:blogger.com,1999:blog-11605599.post-24161523261948688542011-08-17T09:23:00.000-07:002011-09-18T11:23:06.795-07:00Disneyland Blackout Dates iCal via Google Calendar (Public)I have been unable to locate a calendar feed for Disneyland's Annual Passport blackout dates. The blackout dates are listed on Disneyland's <a href="https://secure-disneyland.disney.go.com/disneyland/en_US/ap/index?name=AnnualPassholderGatewayPage">Annual Passholder Gateway Page</a> but there are, again, no subscribable, always-up-to-date calendars available on Disney's site. That strikes me as odd each time I have looked.<br />
<br />
I did not look before Google removed <a href="http://www.google.com/support/calendar/bin/answer.py?answer=139970">Public Calendar Search</a>, but I got tired of not having one available on the broader Internet. It's probably out there, but I can't find it. So, I created my own and will probably update them so long as I live in California. The Google Calendar iCal links are below:<br />
<ul><li><a href="https://www.google.com/calendar/ical/9ig68ck1fhaomd1u8u9eg7d3n0%40group.calendar.google.com/public/basic.ics">Disneyland Annual Passport Blackout Dates - Southern California Select</a> (160 days available)</li>
<li><a href="https://www.google.com/calendar/ical/tfsihuj5h0o33rau7o6ljc9s10%40group.calendar.google.com/public/basic.ics">Disneyland Annual Passport Blackout Dates - Southern California</a> (215 days available)</li>
<li><a href="https://www.google.com/calendar/ical/nl43jb4pnjs7akaei0fcm7pib4%40group.calendar.google.com/public/basic.ics">Disneyland Annual Passport Blackout Dates - Deluxe</a> (315 days available)</li>
</ul><div>For those of you who want to cut-and-paste:</div><div><ul><li>SoCal Select -<br />
https://www.google.com/calendar/ical/9ig68ck1fhaomd1u8u9eg7d3n0%40group.calendar.google.com/public/basic.ics</li>
<li>SoCal -<br />
https://www.google.com/calendar/ical/tfsihuj5h0o33rau7o6ljc9s10%40group.calendar.google.com/public/basic.ics</li>
<li>Deluxe -<br />
https://www.google.com/calendar/ical/nl43jb4pnjs7akaei0fcm7pib4%40group.calendar.google.com/public/basic.ics</li>
</ul><div>For users of Google Calendar, you can find <a href="http://www.google.com/support/calendar/bin/answer.py?answer=37100">instructions to add these public calendars</a> here.</div></div>Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.comtag:blogger.com,1999:blog-11605599.post-60290114070071492732011-06-17T08:22:00.000-07:002011-06-17T08:22:08.192-07:00XP unable to use Samba after recent Windows Update KB2536276On June 15th, we started getting calls from clients using Samba that had XP workstations unable to connect to shares. These were established clients running Samba 2.x. It didn't seem to affect our inhouse Samba systems, whether Samba 2 or Samba 3.<br />
<br />
The inability to connect with the Samba shares was correlated to a Windows XP update KB2536276. This update includes changes to the SMB protocol.<br />
<br />
The problem was tracked to Samba systems sharing with unencrypted passwords (I don't think it matters what kind of share security you use, e.g. SHARE or USER). The Samba variable "encrypt passwords" may have defaulted to "No" on older versions of Samba. In any case, the fix is to enable encrypted password shares, and making sure that the secrets.tdb file exists.<br />
<br />
To do this, find your Samba bin folder. You should be able to run "ps -ef | grep samba" to and look at the running processes to find both your smb.conf location and the samba bin folder. Run testparm and look for the "encrypt passwords" line. If it says "No" then edit smb.conf to make "encrypt passwords = Yes" in the GENERAL section.<br />
<br />
Newer versions of Samba should already have a secrets.tdb. If it does not exist, run "smbpasswd -a user password" to create it. Restart Samba and you should be all set.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com2tag:blogger.com,1999:blog-11605599.post-61993391888473118682011-05-27T14:15:00.000-07:002011-05-27T14:15:22.011-07:00A church IT informal acceptable use policy (comments?)I'm thinking about using this as a one-page into to a church IT acceptable use policy. Comments?<br />
<br />
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
h1
{mso-style-link:"Heading 1 Char";
margin-top:10.0pt;
margin-right:0in;
margin-bottom:0in;
margin-left:-.15in;
margin-bottom:.0001pt;
line-height:115%;
page-break-before:always;
page-break-after:avoid;
border:none;
padding:0in;
font-size:14.0pt;
font-family:"Cambria","serif";
color:#365F91;}
h2
{mso-style-link:"Heading 2 Char";
margin-top:10.0pt;
margin-right:0in;
margin-bottom:0in;
margin-left:0in;
margin-bottom:.0001pt;
line-height:115%;
page-break-after:avoid;
font-size:13.0pt;
font-family:"Cambria","serif";
color:#4F81BD;}
h3
{mso-style-link:"Heading 3 Char";
margin-top:10.0pt;
margin-right:0in;
margin-bottom:0in;
margin-left:.15in;
margin-bottom:.0001pt;
line-height:115%;
page-break-after:avoid;
font-size:11.0pt;
font-family:"Cambria","serif";
color:#4F81BD;}
h4
{mso-style-link:"Heading 4 Char";
margin-top:10.0pt;
margin-right:0in;
margin-bottom:0in;
margin-left:0in;
margin-bottom:.0001pt;
line-height:115%;
page-break-after:avoid;
font-size:11.0pt;
font-family:"Cambria","serif";
color:#4F81BD;
font-style:italic;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
{mso-style-link:"Header Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Calibri","sans-serif";
color:#4F81BD;}
p.MsoFooter, li.MsoFooter, div.MsoFooter
{mso-style-link:"Footer Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Calibri","sans-serif";
color:#4F81BD;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
{mso-style-link:"Title Char";
margin-top:0in;
margin-right:0in;
margin-bottom:15.0pt;
margin-left:0in;
border:none;
padding:0in;
font-size:26.0pt;
font-family:"Cambria","serif";
color:#17365D;
letter-spacing:.25pt;}
p.MsoTitleCxSpFirst, li.MsoTitleCxSpFirst, div.MsoTitleCxSpFirst
{mso-style-link:"Title Char";
margin:0in;
margin-bottom:.0001pt;
border:none;
padding:0in;
font-size:26.0pt;
font-family:"Cambria","serif";
color:#17365D;
letter-spacing:.25pt;}
p.MsoTitleCxSpMiddle, li.MsoTitleCxSpMiddle, div.MsoTitleCxSpMiddle
{mso-style-link:"Title Char";
margin:0in;
margin-bottom:.0001pt;
border:none;
padding:0in;
font-size:26.0pt;
font-family:"Cambria","serif";
color:#17365D;
letter-spacing:.25pt;}
p.MsoTitleCxSpLast, li.MsoTitleCxSpLast, div.MsoTitleCxSpLast
{mso-style-link:"Title Char";
margin-top:0in;
margin-right:0in;
margin-bottom:15.0pt;
margin-left:0in;
border:none;
padding:0in;
font-size:26.0pt;
font-family:"Cambria","serif";
color:#17365D;
letter-spacing:.25pt;}
p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle
{mso-style-link:"Subtitle Char";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
font-size:12.0pt;
font-family:"Cambria","serif";
color:#4F81BD;
letter-spacing:.75pt;
font-style:italic;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-link:"Balloon Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";}
span.MsoPlaceholderText
{color:gray;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:.5in;
line-height:115%;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
line-height:115%;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
line-height:115%;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
{margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:.5in;
line-height:115%;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
span.MsoBookTitle
{font-variant:small-caps;
letter-spacing:.25pt;
font-weight:bold;}
span.TitleChar
{mso-style-name:"Title Char";
mso-style-link:Title;
font-family:"Cambria","serif";
color:#17365D;
letter-spacing:.25pt;}
span.SubtitleChar
{mso-style-name:"Subtitle Char";
mso-style-link:Subtitle;
font-family:"Cambria","serif";
color:#4F81BD;
letter-spacing:.75pt;
font-style:italic;}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-link:"Balloon Text";
font-family:"Tahoma","sans-serif";}
span.Heading1Char
{mso-style-name:"Heading 1 Char";
mso-style-link:"Heading 1";
font-family:"Cambria","serif";
color:#365F91;
font-weight:bold;}
span.Heading2Char
{mso-style-name:"Heading 2 Char";
mso-style-link:"Heading 2";
font-family:"Cambria","serif";
color:#4F81BD;
font-weight:bold;}
span.Heading3Char
{mso-style-name:"Heading 3 Char";
mso-style-link:"Heading 3";
font-family:"Cambria","serif";
color:#4F81BD;
font-weight:bold;}
span.Heading4Char
{mso-style-name:"Heading 4 Char";
mso-style-link:"Heading 4";
font-family:"Cambria","serif";
color:#4F81BD;
font-weight:bold;
font-style:italic;}
span.HeaderChar
{mso-style-name:"Header Char";
mso-style-link:Header;
color:#4F81BD;}
span.FooterChar
{mso-style-name:"Footer Char";
mso-style-link:Footer;
color:#4F81BD;}
.MsoPapDefault
{margin-bottom:10.0pt;
line-height:115%;}
/* Page Definitions */
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style><span class="Apple-style-span" style="color: #365f91; font-family: Cambria, serif; font-size: 19px; font-weight: bold; line-height: 21px;">One-Page Summary</span><br />
<div class="WordSection1"><div style="border-top: solid windowtext 1.0pt; border: none; padding: 1.0pt 0in 0in 0in;"></div><span class="Apple-style-span" style="color: #4f81bd; font-family: Cambria, serif; font-size: 17px; font-weight: bold; line-height: 19px;"><br />
</span><br />
<span class="Apple-style-span" style="color: #4f81bd; font-family: Cambria, serif; font-size: 17px; font-weight: bold; line-height: 19px;">Acceptable Use</span><br />
<span class="Apple-style-span" style="font-family: Calibri, sans-serif; font-size: 15px; line-height: 17px;">Any IT resource or materials furnished to you are intended for</span><br />
<div class="MsoNormal">church business. Yes, you can use church resources for personal use, just don’t<br />
overdo it. Don’t do anything illegal or immoral with church property, please.</div><span class="Apple-style-span" style="color: #4f81bd; font-family: Cambria, serif; font-size: 17px; font-weight: bold; line-height: 19px;">Content Filtering</span><br />
<span class="Apple-style-span" style="font-family: Calibri, sans-serif; font-size: 15px; line-height: 17px;">The church will try to make it as safe as possible to use</span><br />
<div class="MsoNormal">church IT resources. Yes, we’ll try to keep you from accidentally getting spam,<br />
being exposed to pornography, and prevent viruses while you are using church<br />
computers on the church network. No, we can’t protect you from everything<br />
that’s out there. Let us know when the protection doesn’t work as expected.<br />
We’ll try to keep the innocent innocent.</div><span class="Apple-style-span" style="font-family: Calibri, sans-serif; font-size: 15px; line-height: 17px;">Please don’t try to get around the protection we put in</span><br />
<div class="MsoNormal">place. There literally there to help you, and we won’t like it if you try to<br />
break it. If you need help with some personal issues, please ask.</div><span class="Apple-style-span" style="color: #4f81bd; font-family: Cambria, serif; font-size: 17px; font-weight: bold; line-height: 19px;">Limitations on Usage </span><br />
<span class="Apple-style-span" style="font-family: Calibri, sans-serif; font-size: 15px; line-height: 17px;">Don’t use church IT resources for anything illegal or</span><br />
<div class="MsoNormal">immoral. Be nice. If you do screw up, hey, we’re Christians and we’ll lovingly<br />
help you overcome any offense and cope with the consequences.</div><span class="Apple-style-span" style="color: #4f81bd; font-family: Cambria, serif; font-size: 17px; font-weight: bold; line-height: 19px;">Resource Limitations</span><br />
<span class="Apple-style-span" style="font-family: Calibri, sans-serif; font-size: 15px; line-height: 17px;">Please don’t abuse the church IT resources. We should be</span><br />
<div class="MsoNormal">good stewards. Please don’t let your activities interfere with other people<br />
trying to get things done. If you should (perhaps unknowingly) cause IT<br />
resources to underperform, you might find something stops working for you<br />
suddenly. Try to play nice.</div><span class="Apple-style-span" style="color: #4f81bd; font-family: Cambria, serif; font-size: 17px; font-weight: bold; line-height: 19px;">Expectation of Ownership and Privacy</span><br />
<span class="Apple-style-span" style="font-family: Calibri, sans-serif; font-size: 15px; line-height: 17px;">As a church, we may have confidential or personal</span><br />
<div class="MsoNormal">information on the campus. You must not violate the trust put in us. If you<br />
have any doubt at all about whether something can be shared or sent to someone<br />
else, ask. When in doubt, don’t share information that isn’t solely yours.</div><span class="Apple-style-span" style="font-family: Calibri, sans-serif; font-size: 15px; line-height: 17px;">Don’t expect your files and emails using church IT resources</span><br />
<div class="MsoNormal">to be private. If you store something on a church computer or use a church IT resource<br />
like email or printing, chances are someone else will see it. Anything you create<br />
at the church belongs to the church, so if you need an exception to that, talk to<br />
someone who can decide otherwise, or don’t do it at church.</div><span class="Apple-style-span" style="color: #4f81bd; font-family: Cambria, serif; font-size: 17px; font-weight: bold; line-height: 19px;">Violations</span><br />
<span class="Apple-style-span" style="font-family: Calibri, sans-serif; font-size: 15px; line-height: 17px;">Again, please don’t do anything illegal or immoral. If you do,</span><br />
<div class="MsoNormal">as a church we’re here to help each other and to forgive. There may be consequences,<br />
up to losing your job, however, and some things may be legally required of us whether<br />
we like it or not. But remember that we’re here to help others and each other, so<br />
ask for help if you need it.</div></div>Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com1tag:blogger.com,1999:blog-11605599.post-81121972759506834062010-12-30T08:48:00.000-08:002010-12-30T08:48:46.169-08:00Since the motorcycle crashAs my friends know, I was in a hit-and-run motorcycle crash in September. It has been more than three months, and it seems appropriate that I update the blog.<br />
<br />
So, I'll start with the crash itself. I was riding the motorcycle to work on surface streets. I have a strong affinity for driving the speed limit, so as I was coming down hill towards a stop light, I was off the throttle and coasting at about 40 MPH. There was traffic behind me about 1/8 mile away, and had a comfortable cushion of space in front and behind. It was about 7:40 AM.<br />
<br />
It was a four-lane road with a turning lane in the middle. I was in the left lane coming upon a red light with traffic stopped. There were two cars in the middle facing me, waiting to turn left into the shopping center. The woman in the car waiting to turn looked right at me (or through me) and turned when I was 30 feet (maybe three car lengths) away.<br />
<br />
The practice and training I received in the motorcycle safety training course paid off: I let off the throttle, applied both breaks, and downshifted. Unfortunately, I locked my front break, so I was committed and could not steer. Another unfortunate thing was the woman stopped directly in front of me (instead of continuing through into the parking lot). So I could not stop in time, or steer around her.<br />
<br />
I remember thinking, "Don't go over the car." I don't know what happened next, as I do not recall consciously deciding to do so, but I found myself laying down the bike (to the right) and sliding toward her car.<br />
<br />
The next thought was, "Don't get caught under the car." I remember watching pieces of the bike tearing off, bits of tinted plastic and glass flying by as I slid along the pavement. My helmet skipped along and I curled up to make myself NOT fit under her car, and then hit it.<br />
<br />
The bike hit the passenger side back tire/door area, and I'm not sure what I hit. Once I came to a stop, I pulled my right arm out from next to the back tire, and the car started moving again and drove into the parking lot.<br />
<br />
It must have been adrenalin, because I rolled onto my hands and feet and look looked around at the stopped cars, down at the bike (still running) next to the broken hubcap (Nissan), and ripped off my helmet. I was satisfied I wasn't in any more immediate danger, and I hit the shutoff on the bike. As I got up, I saw the car pull into a parking spot, and the woman got out and started walking toward the street. I ripped off my gloves and pulled out my phone (7:42 AM, I think) and stuffed it back in my pocket. Why oh why did I not use the camera feature and snap a photo of the car and driver?<br />
<br />
The guy in the truck behind the woman was on the phone calling 911. Two more women ran up to me and one identified herself as a nurse and started asking questions. As I answered her, I looked at the driver of the car: she was grey-haired, about 5'2", a little over weight but not obese, a light-colored stripped shirt, and an olive complexion. She stared at me with her mouth gaping open, and looked back at her.<br />
<br />
One of the women who stopped traffic behind me was a nurse. She told me she saw the whole thing as she was following me, and that I did everything perfectly to save my life. (I don't know how she assessed that, but it was comforting.) She asked me questions and helped me realize that 1) I was shaking and 2) I could not take a full breath. She told me I was going into shock, and helped me sit down.<br />
<br />
Next thing I heard was the sirens. I looked up, and the woman in the Nissan got a worried look on her face, then turned and hurried (she didn't run, it was more of a fast mince step) back to her car. I tried to yell for people to get her license plate, and all we came up with was the first four letters, not the last three numbers. I watched her drive toward the grocery store, turn in front of it, and drive through the parking lot the street and turn right.<br />
<br />
Well, the cop showed up as the woman was driving away and the ambulance shortly after that. I told the cop my license and insurance were under the bike. As soon as the cop got the three witnesses he pulled them aside for information, and an ambulance spewed EMT people, and a fire engine showed up to and more people swarmed around me. The next minute was spent assessing me as they poked and prodded me to check for injuries.<br />
<br />
They asked things like if I hit my head, my name, my age, my date of birth, where I was going, where I was, if I blacked out, where I work, that sort of thing. I think they were trying to figure out if I had bad head trauma. Then it was the questions of what hurt. I said I think I was going to be O.K. and they told me I was no judge of that at that time (fair enough). They strapped on a cervical collar, strapped me to a back board, then into the ambulance.<br />
<br />
Wow the ambulance drive hurt. I'm glad I was not hurt any worse. The helmet, bike jacket and bike pants really did their job as I had no abrasions.<br />
<br />
Interesting thing about emergency rooms: they start a chart for you before you arrive, so they assign you a pseudonym alphabetically. I was named Autumn. They wheeled me into the E.R., asked me all the same questions again, and stripped me bare. A social worker asked if I needed to contact anyone, and I asked her to call my work to update them, but not to call my wife yet as I did not want Cathy to worry.<br />
<br />
There were IV's, and it was a good thing I hadn't had breakfast yet as they wanted to scan me and take x-rays. They took blood and fluid samples, and gave me a pain killer in the IV.<br />
<br />
Wow, painkillers. The medical folks called it a synthetic narcotic, and I don't remember the name. However, a warm feeling spread through me and the pain just went away. It was amazing, and I am still impressed with the pain management technology available to us today.<br />
<br />
I was pretty out of it, but I was also pretty bored. At some point, I got a phone and called Cathy, and told her I was OK but at the hospital. She came down and we spent time together waiting.<br />
<br />
I spent the night at the hospital and my night nurse was from Taiwan and she took a liking to me and checked on me often.<br />
<br />
The upshot was three or four (depending on which doctor I asked) cracked ribs and a broken clavicle. And a LOT of bruises - I was purple and eventually yellow for weeks to come. <br />
<br />
The next day, I was on pills instead of IV. I still hurt but was able to get up with help and walk around. The doctor said my clavicle break was clean, and they used to operate but now they just let it heal. I like the idea of NOT operating. I performed well enough that they agreed to discharge me that afternoon.<br />
<br />
For the next week, I slept sitting on the recliner and generally slept, read, and got better. I dreamt for days of riding a motorcycle through mountain roads or beautiful scenery and ending up at the same intersection and replaying the same motorcycle crash, and every single time I ended up on the pavement again. I think it was my subconscious way of processing the events, my mortality, and whether I could have avoided the whole thing. I eventually concluded that really did do all that I could, except for taking a picture of the license plate. The dreams stopped after that.<br />
<br />
Although I was warned that I would likely not get full mobility back, I feel like I am more than 90% back to normal, and my strength seems to have gotten back to almost normal three month later.<br />
<br />
I did get a ticket from the city of La Habra for not presenting my license to the officer (<b>wow</b>), and had to go to court and pay a fee to have it dismissed. (The judge was very clear that it was not a <b>FINE</b>, they were clear they were not punishing me, just charging me a <b>FEE </b>to clear my name. Sheesh.) The city police says a partial plate (first four) and a make (Nissan) and description (four-door, silver or grey) was not enough to go on, so they'll never find the hit-and-run driver. Sigh. I figured there's only 1000 possible plates when you have the first four letters, so how many are made by Nissan that are four-door?<br />
<br />
The bike was totaled, and frankly between the bike, medical, broken things that were in my saddle bags, I'm out over $5000 (ouch) and we're back to a single mode of transportation. I've learned the bus routes that get me to and from work, I catch a ride with a coworker whenever possible (which has helped me make a new friend, so that's good).<br />
<br />
I'm glad to be alive, to still have my health, and my life is generally going to get back to 'normal' eventually. And for those of you who are curious, I would ride again.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com3tag:blogger.com,1999:blog-11605599.post-65466258806313968072010-07-26T21:31:00.001-07:002010-07-27T09:02:12.573-07:00Happy Birthday Cathy!I've got a few minutes before the show so a quick note seemed appropriate. <br />
<br />
It had been a great weekend; we celebrated Cathy's birthday at her favorite rib place the night before and went to SeaWorld on the actual day.<br />
<br />
The weekend was full of surprises though... First, my mom called to tell me that she fell and broke her arm. I knew this day would come. I think we'll be OK this time.<br />
<br />
By the time I got off the phone with mom we had no chance of making it to church on time, so we went to the only church nearby that had a 11 o'clock service, a nearby Baptist church. Suffice it to say I will not be doing that again anytime soon. It may warrant a post of its own.<br />
<br />
The rest of Sunday went well. We soon dropped off Chica at Rhonda's and had dinner at Newport Ribs, then watched the Twilight movie, Eclipse. We had a great time.<br />
<br />
There was another surprise though... when I tried to order tickets for SeaWorld it didn't give me my tickets, but did charge the bank twice. That meant we couldn't get here at at park opening, but it worked out though. They comped us the tickets for the day and gave us preferred seating for the day, so we still got to see everything on time.<br />
<br />
Well, the show's about to start...Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com1tag:blogger.com,1999:blog-11605599.post-5677175635480018052010-07-20T12:30:00.000-07:002010-07-20T12:30:06.526-07:00Hug your catI just read about <a href="http://www.reallifecomics.com/#rants_7817">Liz Dean's cat, Diablo, passing away</a>, and it brought tears to my eyes. Liz's description of her relationship with Diablo struck a cord with me, and reminded me much of my own cats.<br />
<br />
If you know me you know I love our cats. We refer to them very affectionately as our 'furkids' and I've probably spent more money on them than I have on myself in the past 10 years, both for healthcare and for toys and stuff.<br />
<br />
Liz asked the reader to give their cat a hug. I do that just about every day, but I think I'll hug them a little tighter when I get home tonight.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com2tag:blogger.com,1999:blog-11605599.post-53461897467122991102010-05-17T16:54:00.000-07:002010-05-17T16:57:49.842-07:00Message: God Knows<blockquote>So, here's the text that I tried to preach from, and the audio player is below, or you could play it directly <a href="http://sites.google.com/site/leejjones/GodKnows.mp3">here</a>. I fumbled in the introduction so the message does not even start until the 1:30 mark, but feel free to give me some feedback. I'd appreciate it.</blockquote><div style="text-align: center;"><embed height="27" src="http://www.google.com/reader/ui/3523697345-audio-player.swf?audioUrl=http://sites.google.com/site/leejjones/GodKnows.mp3" type="application/x-shockwave-flash" width="320" wmode="transparent"></embed></div><br />
<h3>Intro</h3><div>Hi, I'm Lee Jones, and thank you for allowing me to participate today in such a significant way to me. I do have a text I'd like to expand on today, but first, please allow me to pray for us briefly.</div><br />
<div>Father, thanks for this day, and for the freedom that we enjoy now, and that we could gather today in Your Name. Please guide our conversation today, and speak to us, and use me to the best of my abilities, and that You may exceed my limitations and speak to us anyway. Thank you, Jesus. Amen.</div><h3>Me</h3><div>I cannot say for you, but if you are like me, these last few years have not been easy. A few years ago, my wife and I became landlords nearby and found a good church to join. I was about to graduate from the seminary, and we were doing well enough to support Cathy's mom, who had to move in with us. I loved my situation, my job, my church, and we were pretty well-off. The future was bright.</div><br />
<div>Then, things changed for us. Cathy became sick with Hepatits C, and we were told she might have 10 years to live. A series of property issues, and a tenant who stopped paying rent got us behind the eight ball on the mortgage. Cathy lost her job, and I started working second and third jobs to try to keep up. Then, my father died suddenly and left no will, and I found myself supporting my mother financially. We lost the apartment and had to move out, and Cathy's mom had to leave, too. It was a very tough time for us.</div><h3>Transition to Text</h3><div>It is not an unusual story. I don't know what your story might be. But we've all heard about rising unemployment, foreclosures, the economic downturn, a global war on terror, and people losing their retirement investments. Just when we think we've made it through one thing, it seems another one happens. Now what? What do we do now?</div><h3>Text</h3><div>I imaging that might be how Naomi felt. Her story is found in the book of Ruth. I hope you are familiar with the story (look for nods). We won't have time to go through the whole book today so I'll be quoting a text here or there as we go along. (Maybe ask if everybody is familiar with RUTH if there are faces I don't recognize).</div><br />
<div>But think about it. The book of Ruth was set during the time of the Judges (1:1), which is a time of many wars. Naomi's husband and family moved to Moab during a famine, and for an agrarian society a family would be like a severe economic downturn, impacting everybody for the worse. Naomi lived through a tough time, and she lost everything.</div><h3>Naomi</h3><div>Naomi lost her husband (1:3). For Naomi, this is devastating, not just emotionally but economically, for she has no good way to support herself. In today's terms, Naomi had no marketable job skills, so now she is dependent upon her children. But then she looses both of her sons (1:5), a double blow to her, as she lost all her family, and her means of support, and Naomi has no male grandchildren to carry on the family name and inherit the property. She returns emptyhanded to Israel, except for Ruth (1:22), and Naomi is so bad off that she mortgages her land and leases it out (4:3), with no hope to redeem it.</div><br />
<div>And in all of this, Naomi know that God is aware of her situation, her plight. Naomi says that God has testified against her 1:20). Naomi has lost everything, and she knows that God knows about her problems, and that has to be a troubling thought.</div><h3>Transition to Us</h3><div>God know about our problems, and yet we still <b><i>have </i></b>problems. Does that ever bother anybody else than me? Doesn't God <i>know </i>that my wife is, quite possibly, terminally ill? Doesn't He know that I can't afford <i>another </i>plumbing problem, <i>another </i>cut in hours, <i>another </i>reduction in my government benefits, <i>another </i>increase in my cost of <i>this </i>and cost of <i>that? </i>Doesn't God <i>know </i>I can't keep this up forever? Doesn't. God. Know?</div><br />
[pause] And, more troubling than that, doesn't He <b><i>care</i></b>?<br />
<br />
<div>[pause] Of course He knows. And of course He cares.</div><br />
<div>[use the hands, gesture] But sometimes it is one thing for us to know something is true, and it is another thing for us to believe in it and live it. Of course we know that God knows. And of course we know that God cares. But things can be so hard that we know He knows, but we forget to believe it. Or, we believe He cares, but we forget to live like it.</div><h3>Transition to Text</h3><div>But we can remember, or we can learn, to live what we believe and know. Now Ruth illustrates how God knows and cares, and we can learn to live what we believe and know to be true. To steal a page from Pastor Mike's playbook, there are four things that God gave to His people in this story that I want us to see.</div><h3>The point: God will provide</h3><div>First, I'd like to point out that <b>God provided Naomi with Ruth. </b>Before all the trouble came around, God brought Ruth into Naomi's life. When things got tough, Ruth stuck with Naomi (1:18). When they got back to Bethlehem and had to eat, Ruth went and cleaned in the fields (2:2). God provided Naomi with Ruth. Before the trouble struck her, God had already provided both people and support.</div><br />
<div>[slowly] Like Ruth for Naomi, God may have already provide people to you, in your life, to encourage you and support you. God <i>does </i>know about your situation, and He may have already provided someone. So think about the people that are already in your life whom God has provided. Give thanks for them and encourage them as they encourage you.</div><br />
<div>So God provide someone ahead of time. Not only did He provide Naomi with Ruth, second, <b>God provided Ruth and Naomi with Boaz. </b>When Ruth and Naomi had to eat and needed to work and glean for their grain (2:2), God brought Ruth into Boaz's field. "It just so <i>happened</i>" that Ruth came across Boaz's field (2:3) and Boaz <i>happened </i>to be there (2:4) and Boaz <i>happened </i>to notice Ruth (2:5) and give her protection (2:8-9). Did it just <i>happen</i>? No, <i>God </i>provided for Naomi and Ruth with Boaz. God had already prepared and provided for someone new to come into their lives.</div><br />
<div>Like Ruth for Naomi, God may provide <i>new </i>people and opportunities and bring them into your life to help you and support you. God <i>does </i>know about your situation, and He may be arranging for someone to help you, right now! It will probably not be charity, and effort will be required on your part, but God <i>has. already. provided.</i> So look out for the people that God might bring into your life who can help you get on your feet or encourage you. Give thanks for them and encourage them as they encourage you. God had prepared someone to be a blessing for Naomi and Ruth when their need arose. God provided.</div><br />
<div>Not only did God provide Ruth to Naomi ahead of time, and Boaz to them both when they returned, and next, <b>God provided Boaz with Ruth.</b> Now, follow me on this. We already know that Boaz is a close relative and a redeemer (2:20). Though God had bless Boaz in many ways (2:1), Boaz was apparently still in need of a virtuous woman (3:11). There's no way to know for sure, but it seems to me that the story assumes that Boaz had no wife (3:10-13). Though Boaz had to wait many years, God not only blessed Ruth and Naomi, He blessed Boaz as well. God had prepared a virtuous woman for Boaz, and prepared Boaz to be a blessing and to be blessed as well.</div><br />
<div>It is very likely that God has already provide people in your life <i>for you to bless them, </i>perhaps just as much as they bless you, or perhaps more so. God will provide not only <i>for </i>you, but <i>through </i>you as well. So look for those chances to be a blessing to others, even as God is blessing you.</div><br />
<div>God provided for Naomi with Ruth ahead of time, God provided Naomi and Ruth with Boaz just in time, and God provided Boaz with Ruth as well. And, finally, through them, <b>God provided the nation with a future king. </b>God didn't juts provide <i>for </i>the people in the story, He provided <i>through </i>the people in the story for all the people of God. Remember, in those days when Israel had no king (Judges 21:25, Ruth 1:1), God brought two families together in unlikely circumstances to bless them, and through them, to bless the nation with a king, a king after God's own heart. The Davidic line also led to Jesus, whom God provided for our forgiveness of sin. So remember that <b>God provides not only for you, but we cannot know what good-and-future blessing God is providing through what we do and what He is doing through us.</b></div><h3>Outtro</h3><div>And now we know the ending of Naomi's story, and how God provided in her life. Naomi no support and no heir, and God provided. Ruth had no husband, and Boaz no wife, and God provided. Israel had no king, and God provided. God knows, God cares, God provides. Even in hard times, <i>especially</i> in hard times, God has already provided for you. He <i>will</i> provide for you and you will want to be ready for God to provide <i>through</i> you. God knows. God cares. God provides.</div><h3>Me</h3><div>And how did my story end? Thankfully, our story is still being told, but I can tell you that, in spite of Cathy's normally fatal disease, her treatment was successful; against the odds 25-to-1, she has survived. I believe God provided healing. Cathy's mom is finally receiving social security and can afford her rent. We still help her on occasion, but things are looking up for her. God provided for Cathy's mom. Although <i>my </i>mother receives less than 1/2 of what she needs from VA survivor benefits to get by, <i>every month </i>God has provided extra work for me to support her. In this economy, I know God provides, and he provides for my mother every month. Although Cathy and I had to sell the property and our credit is shot, we were able to avoid a foreclosure. [insert story of RV purchase here, or if there is not enough time cut the to end] We managed to do a shortsale, and although we had to move out, God had provided pre-approved financing for an RV, and we found that we actually enjoy the lifestyle now.</div><br />
<div>Yes, times are tough, and sometimes we might wonder what God is doing. But you can know that God will provide. He has already been working in your life, He is working in your life, and He will work through your life. He will bless you and bless others through you, especially in these hard times.<br />
<h3>You</h3>What about you? What is your story? I don't know what chapter of Ruth you are in. Perhaps you are the blessing, or perhaps you're still looking for a Boaz. But through it all, remember that even in hard times, <i>especially</i> in hard times, God has already provided for you. He <i>will</i> provide for you and you will want to be ready for God to provide <i>through</i> you. God knows. God cares. God provides.<br />
<br />
Thank you.</div>Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com4tag:blogger.com,1999:blog-11605599.post-28701710316713479412010-03-28T18:53:00.000-07:002010-03-29T08:21:30.293-07:00Finally got myself a laptopSo, after 13 years of marriage and three laptops purchased for Cathy, she finally forced me to buy one.<br />
<br />
I had been eying an Acer Timeline for church for weeks. The specs are such that it hits the sweet spot for me. 14", LED screen, 8hr battery life, 4.4 lbs, with a built-in optical drive. I love it.<br />
<br />
At least I did until Saturday afternoon, when I closed the lid and it never came back on. Not even a POST. Acer said to send it in so I took it back to the Microsoft Store.<br />
<br />
They have them back in stock, so I got my replacement, no hassles. They're also running a promotion, buy a laptop and get a monitor for free. Not only did I walk back out with my replacement laptop, I also got the last free LCD screen this week! They'll have more next week, though.<br />
<br />
If you're in the market for a 14" laptop and a 21" monitor, call the Microsoft Store in Mission Viejo! It was about $540 out-the-door.Lee Joneshttp://www.blogger.com/profile/07180564953973994812noreply@blogger.com0