tag:blogger.com,1999:blog-170414942024-03-09T08:21:45.520-08:00IHOM*shrug*Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.comBlogger80125tag:blogger.com,1999:blog-17041494.post-42732163823583712752011-05-23T15:17:00.000-07:002011-05-23T15:53:14.766-07:00Migrating Playcount info in ClementineRecently discovered Clementine, a fork of Amarok which used to be my music player of choice when I had a functioning linux box. It's been great. As it happens, I had to dump my database and re-scan my music collection - which causes all playcounts and scores to be lost (and other stats which I care less about). Here are the steps I took to restore them. Probably is a way to do this with less steps.<br />
<br />
<br />
<ol><li>I used a free trial of RazorSQL for this - it's ok. Nothing to scream about, IMO, compared to PgAdmin III which I'm used to for this sort of thing.</li>
<li>Extract the data from your db backup with a query like: SELECT title,artist,album,playcount,score FROM songs WHERE score > 0;</li>
<li>Export the data to a tab-separated file</li>
<li>Convert it to a bunch of update statements with a regex</li>
<ol><li>First replace all ' with ''</li>
<li>Then s/{.*}\t{.*}\t{.*}\t{.*}\t{.*}/UPDATE songs SET playcount = \4, score = \5 WHERE title='\1' AND artist='\2' AND album='\3';/</li>
</ol><li>Run the resulting statements on your live database. I believe Clementine needs to not be running when you do this.</li>
<ul></ul></ol>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-19734800657090680792011-04-25T13:28:00.000-07:002011-04-25T13:32:08.595-07:00Spokane Hospitals vs Medicare statisticsVia this post from the Sunlight Foundation - http://reporting.sunlightfoundation.com/2011/medical-errors-2/ - I thought I'd see how the Spokane hospitals stack up in screwing up. I filtered each of the datasets to Spokane and sorted by name, not rate. Read the article for any disclaimers on the content of the data.<br />
<br />
<b>Falls and Trauma</b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl4lf5Ks1qzFQv2cM54xImgHfC1Y7QcUNeJxriYmlVixZb_mF3V3EqkDoY9e0v2WX-4_Jgs30DUnNSHE0E2WBLTKBFwmpZiihihb5REDmhNhQxarDkAE46LCNXIwp9JSBOsHNHAQ/s1600/MedRate+-+Falls+And+Traumas.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl4lf5Ks1qzFQv2cM54xImgHfC1Y7QcUNeJxriYmlVixZb_mF3V3EqkDoY9e0v2WX-4_Jgs30DUnNSHE0E2WBLTKBFwmpZiihihb5REDmhNhQxarDkAE46LCNXIwp9JSBOsHNHAQ/s640/MedRate+-+Falls+And+Traumas.PNG" width="640" /></a></div><br />
<b>Blood Infections</b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM07jd9cWka7ZF57lm6L0L_J1-M4yWUbpik8n8KlnJC981JQ9NbIeGmOZwZQg40T9C2atJTgNksRHZMozkPVxQvdQUXNyRtFIcKV8-GUNApaHyxEjV2DPARVh2SHQZUQizKysyzw/s1600/MedRate+-+Blood+infections+from+catheters.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM07jd9cWka7ZF57lm6L0L_J1-M4yWUbpik8n8KlnJC981JQ9NbIeGmOZwZQg40T9C2atJTgNksRHZMozkPVxQvdQUXNyRtFIcKV8-GUNApaHyxEjV2DPARVh2SHQZUQizKysyzw/s640/MedRate+-+Blood+infections+from+catheters.PNG" width="640" /></a></div><br />
<b>Urinary tract infections</b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZQvCPZ1dwXx1uwE866EKqsEnOItzhMVSbqoHXHfawdhvCu-Qfr66_AYOK0DF3oSnpwJJPBfFbChMDETqT_ow6Kzq1rHPWvJc6DhogERfOhHoerXlx7ToNPPTwVnPdY9JBmsR0ug/s1600/MedRate+-+Urinary+Tract+infections+from+catheters.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="117" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZQvCPZ1dwXx1uwE866EKqsEnOItzhMVSbqoHXHfawdhvCu-Qfr66_AYOK0DF3oSnpwJJPBfFbChMDETqT_ow6Kzq1rHPWvJc6DhogERfOhHoerXlx7ToNPPTwVnPdY9JBmsR0ug/s640/MedRate+-+Urinary+Tract+infections+from+catheters.PNG" width="640" /></a></div><br />
<b>Bed Sores</b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinkC5CV7jUKWaSUZf7ErKtATxJK4yRZzPV1Ful4EC2c_D9_JTzHgH7J4D4xBoPdO5EYKLrfIYjrNIWvMF9XqYByanFUtlMhVas-LbOvsSARcHqlZ2qr-5VDDbB6iPUZhnM3cE4IA/s1600/MedRate+-+Bed+Sores.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinkC5CV7jUKWaSUZf7ErKtATxJK4yRZzPV1Ful4EC2c_D9_JTzHgH7J4D4xBoPdO5EYKLrfIYjrNIWvMF9XqYByanFUtlMhVas-LbOvsSARcHqlZ2qr-5VDDbB6iPUZhnM3cE4IA/s640/MedRate+-+Bed+Sores.PNG" width="640" /></a></div><br />
<b>Poor Glycemic Control</b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx0gU6eohhlH0PjKLNT44VAOK3iJ3Swdg80Pe84ON9fXrCOMKneN3_pWvrUA8gdOe_zsmHZZjLXc3nODqv11651t5EHPO6klfiwemCQxiFIlhRqzX6ucXyDtzjaOfwFYfCXhfNOA/s1600/MedRate+-+Diabetic+blood+sugar+management.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx0gU6eohhlH0PjKLNT44VAOK3iJ3Swdg80Pe84ON9fXrCOMKneN3_pWvrUA8gdOe_zsmHZZjLXc3nODqv11651t5EHPO6klfiwemCQxiFIlhRqzX6ucXyDtzjaOfwFYfCXhfNOA/s640/MedRate+-+Diabetic+blood+sugar+management.PNG" width="640" /></a></div><br />
<b>Foreign objects left in body</b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFr6n0ejAyfbLszr-Gh-Iv7WN-iBKDBjfgalbQUtCICG1TiV7dwgI-YCgnsOAgdZrZMf0yShtCXJQp7bDdXPTi3JIPlm3bApcB636JJ6zNJYdLPQrdomCXpzhUesPSU1iZ8JzrnQ/s1600/MedRate+-+Foreign+Objects+Left+In+Body.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="115" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFr6n0ejAyfbLszr-Gh-Iv7WN-iBKDBjfgalbQUtCICG1TiV7dwgI-YCgnsOAgdZrZMf0yShtCXJQp7bDdXPTi3JIPlm3bApcB636JJ6zNJYdLPQrdomCXpzhUesPSU1iZ8JzrnQ/s640/MedRate+-+Foreign+Objects+Left+In+Body.PNG" width="640" /></a></div><br />
Our hospitals each reported zero <b>Air Embolisms</b> and <b>Wrong blood type</b>.Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-51891013909857994822011-04-20T15:26:00.000-07:002011-04-20T15:33:49.243-07:00C# 4 Dynamics and XMLI've seen a couple of cool libraries for using dynamics to magically access your JSON. I knew similar things must be available for XML, and went looking. At this point, my usage is focused on read-only access to xml, of varying styles. Values may arbitrarily be in attributes or child nodes.<br />
<br />
The two that I found that and decided to evaluate were Anoop Madhusudanan's <a href="http://www.amazedsaint.com/2010/02/introducing-elasticobject-for-net-40.html">ElasticObject</a> and Aaron Powell's <a href="http://www.aaron-powell.com/dynamics-library">Dynamics library</a>.<br />
<br />
I set up a test application looking to evaluate performance and syntax. I accessed a handful of nodes, including one array of nodes and it's children. For the hand-built version, I set up a simple set of objects with simple properties and wrote code to extract values from XElements. <br />
<br />
I had a bit of trouble with the API for the Dynamics library, but I saw some performance promise, so I went ahead to make modifications and support my needs. I went ahead and forked the project on bitbucket to share my changes <a href="https://bitbucket.org/matelich/aaronpowell.dynamics">here.</a><br />
<br />
For the performance check, my Hand-Built code ended up at 6 milliseconds, Dynamics at 75 ms, and Elastic at 237 milliseconds (I pre-loaded the xml into an XElement and timed the parsing). So, the tradeoff here is time spent coding vs runtime. I don't expect my real usage to have a significant impact on the user's experience, so I'm ok with Dynamic's 12x slowdown for now. If it becomes a problem, I'll have a nice bottleneck to remove for version 2 :).<br />
<br />
Here are some syntax comparisons:<br />
<table border="1"><tr><td colspan="2">Attribute Access</td></tr>
<tr> <td>Hand-Built</td> <td><pre>if (t.MizConfig.InstrumentPlatform != "TC")</pre></td> </tr>
<tr> <td>ElasticObject</td> <td><pre>if (t.MizConfig.InstrumentPlatform != "TC")</pre></td> </tr>
<tr> <td>Dynamics plus mod</td> <td>Multi-level nesting was not possible as written, MizConfig was returning a string. Changed code to allow<br />
<pre>if (t.MizConfig.InstrumentPlatform != "TC")</pre></td> </tr>
<tr><td colspan="2">Iterating multiple same-named elements</td></tr>
<tr> <td>Hand-Built</td> <td><pre>foreach (var ch in t.MizConfig.HWChannels)</pre></td> </tr>
<tr> <td>ElasticObject</td> <td><pre>foreach (var ch in t.MizConfig["HWChannel"])</pre></td> </tr>
<tr> <td>Dynamics</td> <td><pre>foreach (var ch in t.MizConfig.HWChannels)</pre></td> </tr>
<tr><td colspan="2">Accessing Value (non-iterator) as a double. Note: hand-built is able to hide extraneous nodes from me</td></tr>
<tr> <td>Hand-Built</td> <td><pre>d = t.PusherConfiguration.MaxForwardSpeed;</pre></td> </tr>
<tr> <td>ElasticObject</td> <td><pre>d = double.Parse(~t.PusherConfiguration.Speeds.Record_Speed.Max);</pre></td> </tr>
<tr> <td>Dynamics</td> <td><pre>d = double.Parse(t.PusherConfiguration.Speeds.Record_Speed.Max.Value);</pre></td> </tr>
<tr> <td>Dynamics plus mod</td> <td><pre>d = t.PusherConfiguration.Speeds.Record_Speed.Max.To<double>();</pre></td> </tr>
<tr><td colspan="2">Conditionally dealing with optional children</td></tr>
<tr>
<td>Hand-Built</td>
<td><pre>if(xelement.Element("YoMama") != null)</pre><br />
during parsing</td>
</tr>
<tr>
<td>ElasticObject</td>
<td><pre>if (~dyn.MizConfig.YoMama != null)</pre></td>
</tr>
<tr>
<td>Dynamics plus mod</td>
<td>Didn't find an easy was as implemented, probably would have had to do dyn.MizConfig.Element.Element("YoMama") mixing in XElement access. Instead, I modified the code to allow<br />
<pre>if (dyn.MizConfig.YoMama != null)</pre></td>
</tr>
</table>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-11961322030295440522011-01-04T11:59:00.001-08:002011-01-04T12:08:52.236-08:00Updates to Kent Boogaart's Resizer controlI've used and abandoned the <a href="http://kentb.blogspot.com/2007/04/resizer-wpf-control.html">Resizer control</a> a few times over the last couple years for various reasons. This time it seems it will be finding a permanent home in one of my apps. I had to make a modification to it and Blogger says I have too much text for a comment, so I'll make a new post.<br /><br />I'm using Resizer inside a docking panel, so I wanted the width to stay tied to its parent panel. With that use case, I've added North, South, East, and West to the ResizeDirection enum. It's a pretty simple change, so I'll just post a few parts that people might miss if they wanted to reproduce it.<br /><br /><pre class="source-code"><code><br /> private static void OnUpdateSizeCommand(object sender, ExecutedRoutedEventArgs e)<br /> {<br /> Resizer resizer = sender as Resizer;<br /> Debug.Assert(resizer != null);<br /><br /> if (resizer._frameworkElement != null)<br /> {<br /> Point point = resizer._frameworkElement.PointToScreen(Mouse.GetPosition(resizer._frameworkElement));<br /> //If we're not adjusting the width or height, we want to leave it alone so it has its default sizing characteristics<br /> double? widthDelta = null;<br /> double? heightDelta = null;<br /><br /> switch (resizer.ResizeDirection)<br /> {<br /> case ResizeDirection.North:<br /> heightDelta = resizer._resizeOrigin.Y - point.Y;<br /> break;<br /> case ResizeDirection.East:<br /> widthDelta = point.X - resizer._resizeOrigin.X;<br /> break;<br /> case ResizeDirection.South:<br /> heightDelta = point.Y - resizer._resizeOrigin.Y;<br /> break;<br /> case ResizeDirection.West:<br /> widthDelta = resizer._resizeOrigin.X - point.X;<br /> break;<br /> case ResizeDirection.NorthEast:<br /> widthDelta = point.X - resizer._resizeOrigin.X;<br /> heightDelta = resizer._resizeOrigin.Y - point.Y;<br /> break;<br /> case ResizeDirection.NorthWest:<br /> widthDelta = resizer._resizeOrigin.X - point.X;<br /> heightDelta = resizer._resizeOrigin.Y - point.Y;<br /> break;<br /> case ResizeDirection.SouthEast:<br /> widthDelta = point.X - resizer._resizeOrigin.X;<br /> heightDelta = point.Y - resizer._resizeOrigin.Y;<br /> break;<br /> case ResizeDirection.SouthWest:<br /> widthDelta = resizer._resizeOrigin.X - point.X;<br /> heightDelta = point.Y - resizer._resizeOrigin.Y;<br /> break;<br /> default:<br /> Debug.Fail("Unexpected ResizeDirection: " + resizer.ResizeDirection);<br /> break;<br /> }<br /><br /> //update the width and height, making sure we don't set to below zero<br /> if (widthDelta != null)<br /> resizer.Width = Math.Max(0, resizer._originalWidth + widthDelta.Value);<br /> if (heightDelta != null)<br /> resizer.Height = Math.Max(0, resizer._originalHeight + heightDelta.Value);<br /> }<br /><br /> e.Handled = true;<br /> }<br /><br /></code></pre><br /><br />in GripAlignmentConverter.Convert:<br /><br /><pre class="source-code"><code><br /> switch (orientation)<br /> {<br /> case Orientation.Horizontal:<br /> if (resizeDirection == ResizeDirection.NorthEast ||<br /> resizeDirection == ResizeDirection.SouthEast ||<br /> resizeDirection == ResizeDirection.South ||<br /> resizeDirection == ResizeDirection.North)<br /> {<br /> return HorizontalAlignment.Right;<br /> }<br /> else<br /> {<br /> return HorizontalAlignment.Left;<br /> }<br /> case Orientation.Vertical:<br /> if (resizeDirection == ResizeDirection.NorthEast ||<br /> resizeDirection == ResizeDirection.NorthWest ||<br /> resizeDirection == ResizeDirection.North)<br /> {<br /> return VerticalAlignment.Top;<br /> }<br /> else<br /> {<br /> return VerticalAlignment.Bottom;<br /> }<br /> }<br /><br /></code></pre><br /><br />new cases in GripCursorConverter.Convert<br /><br /><pre class="source-code"><code><br /> case ResizeDirection.North:<br /> case ResizeDirection.South:<br /> return Cursors.SizeNS;<br /> case ResizeDirection.West:<br /> case ResizeDirection.East:<br /> return Cursors.SizeWE;<br /><br /></code></pre><br /><br />in GripRotationConverter:<br /><br /><pre class="source-code"><code><br /> switch (resizeDirection)<br /> {<br /> case ResizeDirection.SouthWest:<br /> return 90;<br /> case ResizeDirection.NorthWest:<br /> case ResizeDirection.West:<br /> return 180;<br /> case ResizeDirection.NorthEast:<br /> case ResizeDirection.North:<br /> return 270;<br /> }<br /><br /></code></pre><br /><br />If I've left something out or you're having problems, let me know.Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-25503291837911230052010-09-29T08:14:00.000-07:002010-10-01T13:38:31.119-07:00I really want to develop for WP7, wish I had an idea...<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.msdnevents.com/wp7devlaunch"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 39px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG5JetLW4yOj815IGCA_B_sbWmSQuM3aESJjVkGsyNzxt0QMDPTVcMKCkdB3Wk-AD5UmTup_uTAdsY4xTolrpuKvlO6mKm96D6oAM2bojp6C_Pd7whUHTw4z2R6jNGS_bpqfBOCw/s320/728x90_Banner_WP7DevLaunch.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5522354410658222754" /></a><br /><div>Dying to get some info about WP7 phones on Sprint. Timelines! I need timelines.</div>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-67158672328348092122010-09-09T10:23:00.000-07:002010-09-09T10:32:41.156-07:00Gmail's Spam filter supports Democrats?Every once in a while, I poke around in my spam filter in my gmail accounts. I virtually never find anything, but today I did. 3 emails from gopsenator.com in one account. Three from nrccmail.org, and some other gopsenator.com in the other. All fund-raising emails. If potential donors (sorry senators, I'm not a donor) don't get the emails, then funds are decreased.<div><br /></div><div>So, built in bias? Lots of clever dems subscribing then marking as spam? Who knows. I'll do my part by un-marking them as spam and deleting them manually.</div>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-83818307029620374702010-07-23T09:20:00.000-07:002010-07-23T09:39:36.143-07:00Cooking<span style="font-family:verdana;font-size:130%;"><strong>I am here to blog about cooking; I have cooked muffins, cupcakes, cassoroles and cakes. The first things I cooked were oatmeal muffins at 5 in the morning for breakfast w/o any help from anyone. When my parents woke up they were very suprised. I had fallen asleep on the couch exasusted from waking up so early. </strong></span><br /><span style="font-family:verdana;font-size:130%;"><strong></strong></span><br /><span style="font-family:verdana;font-size:130%;"><strong>The latest thing that i've made was a spice cake. It made 2 8" round cakes. I topped it w/cream cheese frosting (store-bought not home-made).The cake was delicious.TTFN, Emma</strong></span>Emma Matelichhttp://www.blogger.com/profile/09746264585747525016noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-36855532583865142542009-07-15T13:34:00.000-07:002009-07-15T13:44:36.142-07:00your.flowingdataI've been reading <a href="http://flowingdata.com/">http://flowingdata.com/</a> for a while now. I was interested when the <a href="http://your.flowingdata.com/">your.flowingdata</a> tool was announced a while back but didn't bother to sign up. Decided to give it a try with the newest release. Seems like fun stuff, though I wish I had a phone w/ a real keyboard.<br /><br />Anyhoo, I decided I wanted to track how many times I build my software and this is how I set it up.<br /><br />First, I downloaded <a href="http://phalacee.com/index.php?page=development&section=app&development=19">Twitter CLI</a>, a command line twitter update post tool. I looked into the powershell options out there, but decided to keep it simple. I set it up in my path.<br /><br />Next I opened up my trusty Visual Studio macro editor and set up a handler for OnBuildBegin like so:<br /><br /><br /><pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"><code> Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin<br /> DTE.ExecuteCommand("Tools.Shell", "twitter.bat ""d yfd compiled " & DTE.Solution.FullName & """")<br /> End Sub<br /><br /></code></pre><br /><br />And viola, VS now direct messages <a href="http://twitter.com/yfd">@yfd</a> every time I build. <br /><br />Now I just need to hack bzflag...Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-24595374799668625932009-04-09T08:16:00.000-07:002009-04-09T08:19:18.198-07:00Meet Bobbie Frank<a href="http://www.facebook.com/photo.php?pid=16702&o=all&op=1&view=all&subj=50484379344&aid=-1&id=1672778091&oid=50484379344">Here's a great picture of a nice Lady, Bobbie Frank</a><br /><br />Hopefully that's not an expiring link, if it is, I'll download it and put it here permanently. If you have any special Bobbie Frank memories, please deen us worthy to share them here.Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-50444152638447978982008-11-30T10:14:00.000-08:002008-11-30T10:14:22.872-08:00My little artist<div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMtfhFPeHDtL3H-Zjqnrd-hiMDMlymPEQJG_YyietM0JyWLNsNfObebNA9HffGYEKhlzVTMSsH_AlekEB3PmUVsJsAWbkVeZFOlC8xrWUjyqnho3c_hbRbezpBWxR2FEmMKMpFuw/s1600-h/scan.jpg"><img alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMtfhFPeHDtL3H-Zjqnrd-hiMDMlymPEQJG_YyietM0JyWLNsNfObebNA9HffGYEKhlzVTMSsH_AlekEB3PmUVsJsAWbkVeZFOlC8xrWUjyqnho3c_hbRbezpBWxR2FEmMKMpFuw/s400/scan.jpg" border="0" /></a> </div><br />A sweet little pencil drawing by Eliza.<div style='clear:both; text-align:CENTER'><a href='http://picasa.google.com/blogger/' target='ext'><img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /></a></div>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-40790332622344056632008-10-06T09:38:00.000-07:002008-10-06T09:43:35.759-07:00SNL horridly funny sketchI skipped over an excellent Lawrence Welk intro, but I think this will be one of the popular Halloween costumes of this year. Sorry for the ads on the video, especially if you get one of the PG-13 ones I saw (boo to that, Hulu).<br /><br /><object width="512" height="296"><param name="movie" value="http://www.hulu.com/embed/Ehx5rv4H2X8P37EooR3hWQ"></param><embed src="http://www.hulu.com/embed/Ehx5rv4H2X8P37EooR3hWQ" type="application/x-shockwave-flash" width="512" height="296"></embed></object>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-83989908777642534502008-09-24T16:42:00.000-07:002008-09-24T16:59:38.279-07:00Software Support RantSo, I had this issue with my coding tools (Visual Studio 2008) where I installed the software/drivers for a webcam, and a major chunk of development functionality stopped working. Unfortunately, the installation timing closely coincided with my installing a service pack. <br /><br />Long story short, I submitted an issue with Microsoft, got some mixed quality of responses from their support staff, and finally they pointed me towards 3rd party apps interfering and I spent a long time tracking down the source. During the course of that, they asked about a few other third party apps that they've seen cause interference. Today, they closed my bug report as Will Not Fix.<br /><br />To me, having a system where random third party apps might interfere with your internal communication is defective, and should be resolved. I guess its the benefit of being the big guy. You get to say that certain cases are not important enough to fix. Perhaps its just sour grapes because its my case they didn't fix. I highly doubt Logitech would care that their drivers are causing me to not be able to write software. So, I guess no webcam for me on my main computer.<br /><br />If anyone's googling for Visual Studio 2008 debug hang and ends up here, try killing LVPrcSvr.exe. <br /><br />For people reading my blog (hah!) who don't care about my whining, here's a picture of Ruby <table style="width:auto;"><tr><td><a href="http://picasaweb.google.com/lh/photo/mU6SVd1WfqLjvMyEc2ZY6Q"><img src="http://lh6.ggpht.com/matelich/SMML9Hpq9MI/AAAAAAAAAnM/Vl0Hn0O4j5s/s144/IMG_1913.jpg" /></a></td></tr><tr><td style="font-family:arial,sans-serif; font-size:11px; text-align:right">From <a href="http://picasaweb.google.com/matelich/RubyJuneHannah">Ruby June Hannah</a></td></tr></table>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-49123348143956878672008-09-18T11:53:00.000-07:002008-09-18T11:55:10.643-07:00Ser-tah-fyedRuby is all ours, forever. Went to court today, the commissioner (judge) was so nice and it went excellently. New birth certificate will arrive in the mail after a while. A great day for us.Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-73883155747576912732008-08-17T14:54:00.000-07:002008-08-17T14:58:05.407-07:00And then there were 66 Matelich's in my family. Ruby is home and, as expected, the kids are gaga for her. Things have been going nicely. Sleeping, eating, diapers. Its almost like we've done this before :)<br /><br /><br /><br /><a href="http://picasaweb.google.com/matelich/RubyJuneHannah/photo#5235607836320246370"><img src="http://lh5.ggpht.com/matelich/SKidlnMeqmI/AAAAAAAAAiU/-ppWPlVqLvY/s144/IMG_1849.jpg" /></a>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-2105832282351123252008-08-12T20:45:00.000-07:002008-08-13T14:47:41.762-07:00RubyHard to keep track of where I've talked about Ruby. If you have no idea what I'm talking about, email me. Court hearing is tomorrow (pray pray pray!!!!) and they're saying she'll be released Friday if all goes well. A couple more pictures in <a href="http://picasaweb.google.com/matelich/RubyJuneHannah">http://picasaweb.google.com/matelich/RubyJuneHannah</a> like this one:<br /><br /><a href="http://picasaweb.google.com/matelich/RubyJuneHannah/photo#5233842887268953074"><img src="http://lh5.ggpht.com/matelich/SKJYYDne6_I/AAAAAAAAAhY/xEmHFasP0oE/s288/P8100506.JPG" /></a><br /><br /><br /><span style="font-weight: bold;"><span style="font-size:130%;">UPDATE: </span></span>She's ours!!!!!! She will be coming home sometime in the next week. Final report will be filed in about a month, when she'll get a new birth certificate.<br /><br />I went in this morning and changed/fed/took her temp. Such a sweet girl. Thank you Lord.Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-46538104842548771032008-08-12T06:58:00.000-07:002008-08-12T07:02:14.666-07:00Barockin outI might have to set this as the ringtone for my sister in law: <a href="http://www.barackobama.com/mobilev2/">go go go go obama, obama</a><br /><br />Oh, and people on both sides of the isle can enjoy this music video<br /><br /><a style="left: 0px ! important; top: 0px ! important;" title="Click here to block this object with Adblock Plus" class="abp-objtab-034720094130189627 visible ontop" href="http://www.youtube.com/v/OBghD0XBN5M&color1=11645361&color2=13619151&hl=en&fs=1"></a><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/OBghD0XBN5M&color1=11645361&color2=13619151&hl=en&fs=1"><param name="wmode" value="transparent"><param name="allowFullScreen" value="true"><embed src="http://www.youtube.com/v/OBghD0XBN5M&color1=11645361&color2=13619151&hl=en&fs=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="344"></embed></object>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-9967559699113365762008-08-05T06:20:00.000-07:002008-08-05T06:35:47.429-07:00Implementing Interfaces in C++/cliThis must be such a simple topic that its hard to google for, because I couldn't find it. So, I figured I'd blog it quickly for other .NET newcomers who've been mainly doing C#.<br /><br />Given IFace.cs in dll SomeInterface.dll:<br /><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>namespace Some<br />{<br /> public interface IFace<br /> {<br /> void Express(string mood);<br /> }<br />}<br /><br /></code></pre><br />This would be implemented like so in DogFace.h:<br /><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>#using <SomeInterface.dll><br />#using <mscorlib.dll><br /><br />using namespace System;<br />using namespace Some;<br /><br />public ref class DogFace: IFace<br />{<br />public:<br /> virtual void Express(String^ mood); //virtual is required<br />};<br /></code></pre><br /><br />Pretty simple, but it took me longer than I would have liked.Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-11669163310655363342008-07-22T20:46:00.000-07:002008-07-22T20:48:08.910-07:00Moves, epilogueEnded up not getting the property due to bad information from our mortgage chick. Oh well. So, we bought a cheapo RV!!!!!!! Yeeehaaawwwwwww. Gonna be rockin the campgrounds this summer. Pictures to come!Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-25093120087252856192008-07-15T14:38:00.000-07:002008-07-15T15:13:10.461-07:00Me<span style="color: rgb(51, 51, 255);"><span style="font-style: italic;"><span style="font-weight: bold;"></span></span></span>Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br />Mememmememememememememememememememememememememememememe<br /><br /><span style="font-family: arial;"><span style="font-size:180%;"></span></span>Emma Matelichhttp://www.blogger.com/profile/09746264585747525016noreply@blogger.com2tag:blogger.com,1999:blog-17041494.post-82224436283887657552008-07-13T18:20:00.000-07:002008-07-13T18:23:55.595-07:00The Read It PaperToday,I hope that every one's having A good day.If today is your birthday,Happy Birthday!<br /><br /> Today if it's your shopping day then you want to go to Albertson's,If you want to know why,it's because They have great savings if you have an Albertsons card.<br /><br /> Today will be most likely warm.<br /><br />The Read It Paper is having a Story Contest.Due August first for First-Third graders. Please mail it to emma at mateli dot ch or leave it in the comments section. The prize is $5.<br /><br /> We think YOUR complements count.Emma Matelichhttp://www.blogger.com/profile/09746264585747525016noreply@blogger.com1tag:blogger.com,1999:blog-17041494.post-55090067386669404832008-07-13T07:04:00.000-07:002008-07-13T07:06:15.706-07:00New BloggerEmma's been dying to start writing her own stuff on the internet, she's starting with making her own daily newspaper. So, watch this space for new things from her.Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-34226505378132004162008-07-08T08:38:00.000-07:002008-07-08T08:38:36.850-07:00more on movingWell, the last property we made an offer on was a bust, we found another cool one out by Eloika Lake, but it was only 5 acres and up on a <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBYAlVTTpRHf2x5ZsL1xlGQhRMVOv-mGtRHNwyQgSK4qeVHYZbHqGkxNSHcjM0MoyN-Q8v_DpndPDguLbqTqTbWmliMGQzYiao5jk99WJfcNb9-SFI7-K_8Y0tF3imOo8PNydVkw/s1600-h/homestead.jpg"><img style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBYAlVTTpRHf2x5ZsL1xlGQhRMVOv-mGtRHNwyQgSK4qeVHYZbHqGkxNSHcjM0MoyN-Q8v_DpndPDguLbqTqTbWmliMGQzYiao5jk99WJfcNb9-SFI7-K_8Y0tF3imOo8PNydVkw/s400/homestead.jpg" border="0" /></a>plateau with a narrow driveway cut into the hill. The pictured plot is 20 acres of mixed grass and light woods. 13ish on one side of the road, 6ish on the other. Put in an offer yesterday, we'll see......<div style='clear:both; text-align:LEFT'><a href='http://picasa.google.com/blogger/' target='ext'><img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /></a></div>Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-53969197555763807092008-06-24T15:03:00.001-07:002008-06-24T15:21:01.524-07:00movesWell, you may have noticed you got redirected to blog.mateli.ch when you visited. I've been thinking about getting a domain name for a good while now. I was going to do matelich.com, but then came up with mateli.ch. The dorkiness of it makes me happy, though matelly-dot-c-h doesn't quite roll off the tongue. I probably should get matelich.com too and have it redirect to mateli.ch or vice versa, but I'm too much of a spendthrift.<br /><br />Then google has a free Google Apps for Domains setup where you get gmail to handle your email, and localized calendar, docs, etc. for your domain name. Fun stuff. The kids like getting to pick whatever email aliases they feel like in addition to their own names. Sara's holding out on using her account, but she'll break one of these days :)<br /><br />If you're a matelich and want an account, let me know. I get up to a hundred. I won't be able to read your email, nor would I. I guess as administrator, I could reset your password, and get in, but you'd at least know I'd broken your trust when you went to login. Oh, and if you have any bright ideas for something to put at http://mateli.ch that would be peachy. <br /><br />The other move is a bit down the line, but we're in the market for some land to build a house on in the future. Looking for 10ish acres north of Spokane. Put a long-shot offer on a site we really love today, but its contingent on them installing a well. We'll see.Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0tag:blogger.com,1999:blog-17041494.post-60879729681619263142008-06-06T22:28:00.000-07:002008-06-06T22:28:40.719-07:00ugly and distracting<a href="http://googleblog.blogspot.com/2008/06/one-fish-two-fish-red-fish-blue-fish.html">Official Google Blog: One Fish, Two Fish, Red Fish, Blue Fish</a><br /><br />I, for one of many, hate the new google favicon. I do not associate a lowercase blue g with google in the least. Every time I see it, I wonder what site I'm on. Bring back the big G, put it in a circle, cube, whatever. I'm find with colored backgrounds. <br /><br />I even don't get all that riled up at the lack of American patriotic google images on important dates like Memorial Day and D-Day. But an ugly favicon? inconceivable!Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com1tag:blogger.com,1999:blog-17041494.post-88561821143393260492008-06-06T21:48:00.000-07:002008-06-06T21:56:02.395-07:00pretty graphsI guess I'm a sucker for interactive pie charts and line graphs. I can't get enough of my <a href="http://mint.com/">mint.com</a> account. It makes me want to open more accounts in more places just so I can track them!<br /><br />Now I got in on their Inventment account beta, and they have support for my ira, and my 401k's sites, so I can watch expectantly for the day I stop losing money in the stock market :) So, if you like wasting time finding out how much you spent on gas this month versus last month (huh, spent $50 less in may than april, wierd), try out mint.com. Too bad financial information is so personal, it'd be great fun to get some social networking going on there.<br /><br />I kinda feel bad though. They look at things like how much you've got on your cards and try and hook you up with better deals, which I assume they would get a commission on. I always check them out, but ugh, too much work for too little gain. Well, I'm sure I'll find a way to financially support them at some point. Heck, I might even pay a couple bucks a month for the service.Thomas Matelichhttp://www.blogger.com/profile/07191053096569175696noreply@blogger.com0